¿Qué se necesita para convertir datos ASN.1 a una clave pública? p.ej. ¿Cómo puedo determinar el OID?

Este código se refiere aVerificación de la firma DKIM utilizado en esfuerzos anti-spam.

tengo unbyte[] desdes1024._domainkey.yahoo.com eso es ASN.1 codificado, pero no sé si solo contiene información suficiente para materializar una clave pública.

Residencia enesta claseParece que puedo convertir una clave ASN.1 en una clave pública de certificado X509, pero necesito proporcionar un OID y algunos parámetros codificados en ASN.1.

En este ejemplo tengo metadatos de que la clave ASN1 es:

Una clave codificada RSA (ASN.1 DER codificada [UIT-X660-1997] RSAPublicKey por RFC3447)Se utiliza con cualquiera de los algoritmos hash sha1 sha256Utiliza un OID relacionado con la siguiente tabla de la sección A.2 de RFC3447 (aunque no sé cómo convertir esta información en un OID completo)
/*
 * 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}
 */

Muestra de código

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);

Pregunta

¿Qué OID debo usar?¿Cuáles son ejemplos de parámetros ASN.1?

Respuestas a la pregunta(2)

Su respuesta a la pregunta