2017-09-08 7 views
0

J'ai un fichier PEM pour les paramètres DSA. En d'autres termes, le contenu est en-tête/pied de page comme ceci:Comment charger les paramètres DSA à partir d'un fichier PEM dans Bouncycastle?

-----BEGIN DSA PARAMETERS----- ....... -----END DSA PARAMETERS-----

Je vois que bouncycastle a des classes pour DSAParameters et DSAKeyGenerationParmaters. Je soupçonne que ce PEM est une représentation de ces paramètres, mais je ne peux pas comprendre comment le charger à partir d'un format PEM. (Contexte: à partir de projets hérités, je m'attendais à ce que la signature d'un DSA soit de 40 octets, mais j'obtiens 46 octets à la place.Je soupçonne que les paramètres DSA sont à blâmer, et j'ai ce vieux DSA1024. pem comme décrit, que j'essaie de charger et d'utiliser pour générer des clés/générer des signatures ...)

+0

Avez-vous essayé PEMReader? – Lothar

Répondre

1

Au moins jusqu'à 1.57 (je n'ai pas encore installé 1.58) BCpkix org.bouncycastle.openssl.PEMParser n'implémente pas les PARAMETRES DSA (bien que ça fait des PARAMÈTRES EC) donc ce ne sera pas facile. simplement regarder vos paramètres, il sera (beaucoup) plus facile à utiliser

openssl dsaparam -in file -noout -text 

Mais je vous garantis que vous ne trouverez rien de mal dans vos paramètres. Les paramètres DSA classiques ont été le groupe de 1024 bits et le sous-groupe de 160 bits sans variation ou changement pendant 20 ans et je n'ai jamais vu de mise en œuvre se tromper.

La raison habituelle pour laquelle une signature DSA-1024/160 occupe plus de 40 octets est que, par convention (bien que non requise par la norme FIPS 186), elle est codée en ASN.1 DER. Si vous aviez posé une question à ce sujet, je pourrais citer vous Qs existants pour ECDSA, qui a exactement la même question:

https://crypto.stackexchange.com/questions/1795/how-can-i-convert-a-der-ecdsa-signature-to-ASN.1 https://crypto.stackexchange.com/questions/33095/shouldnt-a-signature-using-ecdsa-be-exactly-96-bytes-not-102-or-103
https://crypto.stackexchange.com/questions/37528/why-do-openssl-elliptic-curve-digital-signatures-differ-by-one-byte
https://crypto.stackexchange.com/questions/44988/length-of-ecdsa-signature

mais puisque vous avez posé une question Ce n'est pas votre problème actuel, c'est contre la politique de pile pour vous donner une solution à votre problème réel.

FWIW si vous générez un DSA clé (paire) dans OpenSSL en utilisant les paramètres, les 4 formats PEM pour privatekey (pkcs8 clair et chiffré, 'héritage' clair et chiffré) et le format habituel PEM pour publickey (SPKI) sont lisibles par PEMParser et peuvent produire des objets clés à partir desquels les paramètres peuvent être extraits. (Techniquement, la spécification pour SPKI permet d'omettre les paramètres DSA dans certaines situations, mais OpenSSL ne le fait jamais.)

+0

Vous avez raison. J'ai rapidement appris que mon vrai problème est que bouncycastle me donne une signature codée asn.1, et je m'attendais à ce que les octets bruts ... alors j'explorerai les réponses à ces questions à la place. – Ben