このコードは、スパム対策の取り組みで使用されるDKIM署名の検証に関連しています。
私はASN.1でエンコードされたbyte[]
からを持ってs1024._domainkey.yahoo.com
いますが、それだけで公開鍵を具体化するのに十分な情報が含まれているかどうかはわかりません。
このクラスに基づいて、ASN.1キーをX509Certificate公開キーに変換できるようですが、OIDといくつかのASN.1でエンコードされたパラメーターを指定する必要があります。
この例では、ASN1キーが次のメタデータを持っています。
- RSAエンコードキー(ASN.1DERエンコード[ITU-X660-1997]RFC3447に準拠したRSAPublicKey)
- いずれかのsha1sha256ハッシュアルゴリズムで使用
- RFC3447のセクションA.2の次の表に関連するOIDを使用します(ただし、この情報を完全なOIDに変換する方法はわかりません)
/*
* 1.2.840.113549.1
*
MD2 md2WithRSAEncryption ::= {pkcs-1 2}
MD5 md5WithRSAEncryption ::= {pkcs-1 4}
SHA-1 sha1WithRSAEncryption ::= {pkcs-1 5}
SHA-256 sha256WithRSAEncryption ::= {pkcs-1 11}
SHA-384 sha384WithRSAEncryption ::= {pkcs-1 12}
SHA-512 sha512WithRSAEncryption ::= {pkcs-1 13}
*/
コードサンプル
string pubkey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDrEee0Ri4Juz+QfiWYui/E9UGSXau/2P8LjnTD8V4Unn+2FAZVGE3kL23bzeoULYv4PeleB3gfmJiDJOKU3Ns5L4KJAUUHjFwDebt0NP+sBK0VKeTATL2Yr/S3bT/xhy+1xtj4RkdV7fVxTn56Lb4udUnwuxK4V5b5PdOKj/+XcwIDAQAB";
byte[] pubkeyByteArray = Convert.FromBase64String(pubkey);
AsnEncodedData aData = new AsnEncodedData(pubkeyByteArray);
// OID must not be null, but it is here. What is it?
System.Security.Cryptography.X509Certificates.PublicKey pubKeyRdr = new System.Security.Cryptography.X509Certificates.PublicKey(aData.Oid, null, aData);
質問
- どのOIDを使用する必要がありますか?
- ASN.1パラメーターの例は何ですか?