IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sécurité Java Discussion :

format signature PKCS#7 : Javascript crypto.signText et bouncy castle


Sujet :

Sécurité Java

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 3
    Points : 4
    Points
    4
    Par défaut format signature PKCS#7 : Javascript crypto.signText et bouncy castle
    Bonjour,

    Est-il possible de générer l'ancien format PKCS#7 ( V1.0 ou V.1.5 je crois ) càd avant l'arrivé du CMS avec l'API actuelle de BouncyCastle ?

    En gros, j'ai utilisé le package cms de BouncyCastle pour générer un PKCS#7 qui est donc du CMS/PKCS#7 et il se trouve que ce n'est pas le format attendu.

    Pour faire simple, je dois générer le même format de PKCS#7 que celui généré par la méthode Javascript "crypto.signText" sous firefox mais avec l'api bouncy castle. Mais Bouncy castle me génère un truc différent ...

    Je charge les certificats du magasin de certificat windows avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    KeyStore myMscapiKeyStore = KeyStore.getInstance("Windows-MY", "SunMSCAPI");
    Ensuite, j'utilise l'API bouncycastle pour générer mon PKCS7.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ....
    //Generation CMS/PKCS#7
    CMSSignedData signedDataGenerated = signGen.generate(content, true, "SunMSCAPI");
    byte[] signedData = signedDataGenerated.getEncoded();
    ....
    Exemple simple :
    Pour le même texte à signer , exemple : "Mon text à signer".

    Firefox me génère la chaine (en base64) : "MIIFHwYJKoZIhvcNAQcCoIIFEDCCBQwCAQExCzAJBgUrD etc ...."

    Mon code avec Bouncy Castle me génère (que j'ai encodé en base64 aussi ) :
    "MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqG etc ..."

    Bref, ce n'est pas la même chose ....

    Est-ce que quelqu'un a déjà rencontré ce genre de problème ?

    Y-a-t-il d'autres implémentations du PKCS7 ( API ou autres ... ) en java, gratuit si possible ?

    Merci à tous.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    765
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 765
    Points : 1 036
    Points
    1 036
    Par défaut
    Tu peux donner ton code javascript et l'équivalent en java ?

    Peut-être qu'il y a un soucis.

  3. #3
    Candidat au Club
    Inscrit en
    Janvier 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    En fait, j'ai exactement le problème que cette personne :
    http://www.mombu.com/programming/jav...t-1556407.html

    Pour tester le javascript, rien de plus simple. Voici le code html :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <html> 
    <head> 
    <script> 
    var foo = crypto.signText("Mon text à signer", "ask"); 
    </script> 
    </head> 
    <body> 
    This is an HTML page<p> 
    <script> 
    document.write(foo); 
    </script> 
    </body> 
    </html>
    Il suffit de l'ouvrir avec Firefox, et le signer. ( Nécessite d'avoir un certificat d'installé dans FF ).

    Le code en java c'est ici : http://nyal.developpez.com/tutoriel/...cycastle/#L4.1 (merci Nyal )

    Sauf que à la place de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CMSSignedData signedData = signGen.generate(content, true, "BC");
    J'ai mis le provider de Sun microsoft, car j'utilise le provider SunMSCAPI et le keystore type de windows pour lire le magasin de certificats windows :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CMSSignedData signedData = signGen.generate(content, true, "SunMSCAPI");
    Si tu laisses BC, tu as une Exception avec le chargement de la clé privée (RSAPrivateKey qui n'implémente pas la bonne interface ... )

    Merci de ta réponse.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    765
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 765
    Points : 1 036
    Points
    1 036
    Par défaut
    Quelle est cette exception ?

    Tu es bien sûr que le certificat qui est utilisé par FireFox est le même que celui que tu utilises en java ?

Discussions similaires

  1. Formater des nombres en javascript
    Par lekunfry dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/11/2008, 20h12
  2. crypto.signText() error:internalError avec FF 2.0.0.9
    Par rado009 dans le forum Firefox
    Réponses: 0
    Dernier message: 12/11/2007, 19h31
  3. formater un nombre en javascript comme number_format en php
    Par calitom dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/01/2007, 16h24
  4. Réponses: 3
    Dernier message: 28/11/2006, 08h44
  5. Réponses: 2
    Dernier message: 18/09/2006, 19h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo