Was wird benötigt, um ASN.1-Daten in einen öffentlichen Schlüssel zu konvertieren? z.B. Wie bestimme ich die OID?
Dieser Code bezieht sich aufÜberprüfung der DKIM-Signatur Wird zur Spam-Abwehr verwendet.
Ich habe einbyte[]
vons1024._domainkey.yahoo.com
das ist ASN.1-codiert, aber ich weiß nicht, ob das allein genug Informationen enthält, um einen öffentlichen Schlüssel zu verwirklichen.
Beyogen aufdiese KlasseEs scheint, dass ich einen ASN.1-Schlüssel in einen öffentlichen X509Certificate-Schlüssel konvertieren kann, aber ich muss eine OID und einige ASN.1-codierte Parameter angeben.
In diesem Beispiel habe ich Metadaten, die der ASN1-Schlüssel ist:
Ein RSA-codierter Schlüssel (ASN.1 DER-codierter [ITU-X660-1997] RSAPublicKey gemäß RFC3447)Wird mit den Hash-Algorithmen sha1 und sha256 verwendetVerwendet eine OID in Bezug auf die folgende Tabelle aus Abschnitt A.2 von RFC3447 (obwohl ich nicht weiß, wie ich diese Informationen in eine vollständige OID umwandeln kann)/*
* 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}
*/
Codebeispiel
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);
Frage
Welche OID soll ich verwenden?Was sind Beispiele für ASN.1-Parameter?