none
Vérifier la signature d'un sbyte[] avec un certificat X.509 RRS feed

  • Question

  •  

    Bonjour,

     

    J'ai un module en java qui lit un code barre 2D.

    Le programme le décode et vérifie la signature du contenu à l'aide de la clé publique d'un certificat X.509.

    Le module fonctionne correctement.

     

    Je traduis ce module en .NET pour le mettre sur un PDA.

    J'ai bien tout traduit sauf la partie vérification de la signature du contenu.

     

    Ce que j'utilise :

     

    System.Security.Cryptography.DSASignatureDeformatter avec la clé public du X509Certificate2 que je lis par un fichier .cer

    System.Security.Cryptography.SHA1Managed

     

    deformatter.VerifySignature(this.Data, signature);

    "Data" est l'élément que je veux vérifier et "signature" est la signature. les deux sont récupérés dans la lecture du code 2D.

    "Data" est transformé avec le SHA1Managed

     

    Je récupère les mêmes données au même endroit par rapport au module java et j'obtiens exactement les mêmes valeurs.

    La différence que je note c'est qu'en java un byte est signé mais pas en .NET. La traduction VS2005 utilise donc des sbyte.

    Sauf que le VerifySignature prend en paramètre un byte[] donc la traduction java par VS2005 utilise un convert de chaque élement. (Il faut pareil pour tout le reste du module et ca marche bien).

     

    La bibliothèque java utilisée à l'origine est java.security.Signature.

     

    Le message d'erreur que j'obtiens en .NET est :

     

    System.Security.Cryptography.CryptographicException: La taille de hachage de l'algorithme SHA1 est de 20 octets.

     

     

     

    Est-ce que quelqu'un peut m'expliquer comment faire pour vérifier la signature d'un info. Et si vous avez un bout de code à me fournir en meme temps ca m'interesse.

     

    Merci

    jeudi 18 octobre 2007 09:07

Toutes les réponses