J'essaie (mais j'échoue) de créer une méthode qui construit un AsymmetricKeyParameter
à partir d'une clé privée codée PEM. Comment puis-je compléter cette méthode?convertir la clé privée RSA codée PEM en paramètre AsymmetricKeyParameter
Il semble qu'une ancienne version de BouncyCastle
avait une méthode pemReader.ReadObject()
dont les résultats pouvaient être castés, mais qui n'existe plus.
J'ai essayé différentes combinaisons d'utilisation de PrivateKeyFactory
, PrivateKeyInfo
, Asn1Object
et peut-être 10 autres types, mais tous lancent une exception à un moment donné.
static AsymmetricKeyParameter ReadPrivateKeyFromPemEncodedString(string pemEncodedKey)
{
AsymmetricKeyParameter result = null;
using (var stringReader = new StringReader(pemEncodedKey))
{
var pemReader = new PemReader(stringReader);
var pemObject = pemReader.ReadPemObject();
// WHAT NEXT???
}
return result;
}
Voici la clé codée PEM-je teste avec:
-----BEGIN RSA PRIVATE KEY-----
MIIEoAIBAAKCAQEAk0AmagKx285Ufbri/olc+f3WagL1Ho+DrYdDSbuU7cJAq+uD
9xGvvP9m2JavSP4wO9i9pB/cmCFMPoIj3oGJt1/cnLb/U2juneOw6Uo0N3F8TXdy
XfZNAIPhq/jw0YfIypTFTTvFkKXfTArIwW/bQBW8/dujFR8i5CxPjRKRDOBEy0PP
OLJDD0iUr9GX/h/EO4jQ7B/GszjhPiPx+gJCilaMY+jrSczjxpsKOXzpZEdT1NqM
rzgvIZPHYhQzAiw9vQzov3vezDwKgKcRrUixZ2B8uiEQNn7Wa2QzWF3vL+6CGflF
NYQcc0leDQBe86baYhCollouP4jfaH9KcMkYYwIBJQKCAQA7sjkWOHGeTLp4KSuX
n3i4X/z6i5POHoF9s2B31mzPF2ZTiP4l5JNadWELsrXDpVHTEq2/E9X4fDOqo3ZT
SUWrNLNiIKyzHLPDd/uc2OS8h/QfZ8aUy6KtLovrxclps5aXURG3hu86pBxBbCff
t7nACNAT42ugx28CjoEdhBFKaCNcw/S3gZOkcotVdDUTCB+epveXNybAoZcuVNtu
Y84hx+st8i0sXY+vpIJ8HOanbpdS/Q9UqDGNvg1zBlvnJ7PGOO4Jnc0EOa1Eoym2
vJNItDAkK59KPKjuBLWTvTz/XLrZirkY57BQgUKnXHU6YGI7bvu8+iDnNAP1C90U
/MllAoGBANstq/L7WOgcOhfbWEmcd59/vBtDbgf0pNwYyhmpIrG2SD6XaljQvOvo
2/2oqNzCG+xZbTnbdkODRIXMDGcCzVkQAEkNvwWYHxb2XHUOhUPr+4zNfGtnJ1gv
o7w6FVI3tD4buSmhcFZUGpNyzSbS+6FdXD37qjOFCPKcJMCY4BSPAoGBAKv9CdXw
Ksyhr62sWqlU2F9FhjDNS9afJ5A7mZjrPraAusVsOkUtwsij9g74SH5agQNIUnFH
NBwNenW+kbYahX6Q5pjNN5s6weG+2kbK8kZyuYo+Fuix0u6bTnL2IH35zP+hYWQS
YM7yNDdBpH1deTWlTVL7vnZeEK/WTldw8PDtAoGAZLQekjwh7hrOlVbxNpP/nE9y
Gl1AZIUpJtr1ErV+pK2yfZ+D454tScvastDzo7MhlhtABdOJXUomZvzjGpKVs0yK
gm4ZfxxhT71NEzAvZGWBajTmI4JsBexf/Iljvf3rB8eMbRLSv+Fz/o6xSTCBc6dv
khmvEMCVaIzuSqca2QMCgYAue714F2WDafghGdNQXB7NpBZuDfjSONpCqFMGvB7J
ipNX87y4wEJ7apWHgV+zcmgOuZm9wDeY4QxXLJYViqCev2DrBwgcHbfcJb5z/3/A
A1S9lD2K/6DK3d3Z4afqsjdnrxNnJ4/JOoqnJn971BLr53yupOdeQu/A0iMC4EEe
hQKBgBCJteVdDk/0gK5c/++q88VIYplEDeDCiO2nIjXK7kHrm0q3DuUsr3D6VOjL
VUViiU2nBKn40R8tNnxagPkL/uec0kZMGnnFsJLLKd48DGr34nQjsrGare0Pr8yo
3uwlkKwtDUg5Zf2vLIIKqcX6tvHSQ2Zc57dAdAPvhpM5TtDJ
-----END RSA PRIVATE KEY-----
En fait, Org.BouncyCastle.OpenSsl.PemReader existe toujours, et son ReadObject() peut toujours faire ce dont vous avez besoin ici je pense. Peut-être que l'ajout de Org.BouncyCastle.Utilities.IO.Pem.PemReader provoque une confusion? –
gros soupir. Oui, c'était la confusion. Merci beaucoup. Cela vous dérangerait-il de poster votre commentaire comme réponse pour que je puisse accepter et changer de sujet? J'ai édité mon post avec la solution. Cela me déconcerte que les gens pensent qu'ayant deux classes publiques du même nom dans le même projet est une bonne idée. Ces classes doivent être renommées en OpenSslPemReader et en UtilityPemReader afin que 100% soit évident à partir du nom de ce qu'il fait et pourquoi il est qualifié et vous n'avez pas besoin de vous appuyer sur la lecture des directives using. Quoi qu'il en soit, je doute que cela change en fonction de la maturité de ce projet. – SFun28
@PeterDettman - pouvez-vous aider avec celui-ci ... https://stackoverflow.com/questions/44459497/convert-pem-encoded-rsa-public-key-to-asymmetrickeyparameter – SFun28