Что необходимо для преобразования данных ASN.1 в открытый ключ? например как определить OID?
Этот код относится кПроверка подписи DKIM используется в антиспаме.
у меня естьbyte[]
отs1024._domainkey.yahoo.com
он закодирован в ASN.1, но я не знаю, содержит ли он один достаточно информации для реализации открытого ключа.
На основеэтот классПохоже, я могу преобразовать ключ ASN.1 в открытый ключ X509Certificate, но мне нужно указать OID и некоторые параметры, закодированные в ASN.1.
В этом примере у меня есть метаданные, которые ключ ASN1:
An RSA encoded key (ASN.1 DER-encoded [ITU-X660-1997] RSAPublicKey per RFC3447) Used with either sha1 sha256 hash algorithms Uses an OID relating to the following table from section A.2 of RFC3447 (though I don't know how to turn this information into a full 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}
*/
Code sample
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);
Question
What OID should I use? What are examples of ASN.1 parameters?