2017-06-09 6 views
1

PEMでエンコードされた秘密鍵からAsymmetricKeyParameterを構成するメソッドを作成しようとしていますが、失敗しています。この方法をどうすれば完了できますか?PEMでエンコードされたRSA秘密鍵をAsymmetricKeyParameterに変換する

BouncyCastleの古いバージョンは、結果がキャストされる可能性がありますが、もはや存在しないpemReader.ReadObject()メソッドを持っていたようです。

私はPrivateKeyFactory,PrivateKeyInfoAsn1Objectとおそらく10種類のさまざまな組み合わせを試しましたが、すべての点で例外が発生しています。ここで

​​

は、私がテストしていPEMエンコードされたキーです:

-----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----- 
+0

実は、Org.BouncyCastle.OpenSsl.PemReaderはまだ存在しますが、そのReadObject()はまだ私が思うところであなたが必要とするものを行うことができます。おそらく、Org.BouncyCastle.Utilities.IO.Pem.PemReaderを追加すると混乱が生じるでしょうか? –

+1

大きな溜息。ええ、それは混乱でした。本当にありがとう。私は受け入れてupvoteできるように答えとしてあなたのコメントを投稿してもらえますか?私は解決策を使って投稿を編集しました。同じプロジェクトで同じ名前の2つのパブリッククラスを持つことは良いアイデアだと人々が考えていることは私にはわかりません。これらのクラスはOpenSslPemReaderとUtilityPemReaderに名前を変更する必要があります。そのため、名前から何がわかり、資格が与えられているのか、そして使用するディレクティブを読み上げる必要はありません。とにかく、私はこのプロジェクトの成熟度に基づいて変わるのではないかと疑います。 – SFun28

+0

@PeterDettman - これを手伝ってもらえますか?https://stackoverflow.com/questions/44459497/convert-pem-encoded-rsa-public-key-to-asymmetrickeyparameter – SFun28

答えて

0

ここで働いてソリューションです:

using Org.BouncyCastle.OpenSsl; 

private static AsymmetricKeyParameter ReadPrivateKeyFromPemEncodedString(string pemEncodedKey) 
{ 
    AsymmetricKeyParameter result; 
    using (var stringReader = new StringReader(pemEncodedKey)) 
    { 
     var pemReader = new PemReader(stringReader); 
     var pemObject = pemReader.ReadObject(); 
     result = ((AsymmetricCipherKeyPair)pemObject).Private; 
    } 

    return result; 
} 
関連する問題