2 votes

Comment charger une clé publique RSA au format PKCS #1, ASN.1 DER

Nous avons une application Go qui génère une clé RSA et envoie la clé publique au client au format PKCS #1, ASN.1 DER.

https://golang.org/pkg/crypto/x509/#MarshalPKCS1PublicKey

Lorsque j'essaie de charger la même clé publique dans le client c++ en utilisant Botan 1.10.17 :

try
{
    Botan::AutoSeeded_RNG rng;
    Botan::DataSource_Memory pubKeyMem(publicKey); // ici la clé publique est au format PKCS #1, ASN.1 DER
    Botan::RSA_PublicKey *rsaKey = dynamic_cast(Botan::X509::load_key(pubKeyMem));
    ...
}
catch (std::exception& e)
{
    cout << e.what();
}

Je reçois une exception :

Erreur de décodage : Échec du décodage de la clé publique X.509

Voici la clé publique générée par le serveur :

-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEA80s5aG/cuYU/xT3WsC5FkJmMdCg1SFFuc+qJT8aB1IgR3mnKGARf
tKpZ3Uk8Ehp1PSgS+tJE+NhE5fjU8S2K9EtGbep4DAK/TmeJ1TQvJXtCcrMH7MFV
Ck57X972MChnR5wJYrCnBYXt4Q9f76AT4PfFHCgN+eePYD175VIUN7rZlqZaqgX4
LAWQQpZsrj1DersOeH6YfMeuXplTljePGlKcutvWtr3LqGSAkPKAngW3gGTNcxXh
s8EW0CxXctvPLuWArlV2afU6XIpqWGVxB3NlRVuU64XvOE+aXyL2LyX2DXCWzzs8
mKjwp4SQW2xiJiQoRy3gmAR8oV8Jgffs2wIDAQAB
-----END RSA PUBLIC KEY-----

1voto

adnan kamili Points 1113

Il semble que Botan 1.10.17 attend la clé publique sous forme de PKIX, ASN.1 DER. Ainsi, en utilisant x509.MarshalPKIXPublicKey() au lieu de x509.MarshalPKCS1PublicKey() en Golang, le client Botan C++ fonctionnait.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X