Question

J'écris une application pour une meilleure compréhension de DKIM. La spécification dit que je récupère un « ASN.1 DER codé » clé publique du domaine enregistrement TXT. Je peux voir sur la touche "s1024._domainkey.yahoo.com" = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDrEee0Ri4Juz + QfiWYui / E9UGSXau / 2P8LjnTD8V4Unn + 2FAZVGE3kL23bzeoULYv4PeleB3gfm".

Comment puis-je utiliser cette clé de .net? Les exemples que j'ai vu obtenir la clé d'un X509Certificate2, ou un fichier XML contenant les RSAParameters.

CORRECTION : copier / coller la clé ci-dessus de l'outil DNS network-tools.com, qui a dû couper court. nslookup me donne la clé complète:

  

s1024._domainkey.yahoo.com text =   "K = rsa; t = y; p = MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDrEee0Ri4Juz + QfiWYui / E9UGSXau2P8LjnTD8V4Unn + 2FAZVGE3kL23bzeoULYv4PeleB3gfm"   "JiDJOKU3Ns5L4KJAUUHjFwDebt0NP + sBK0VKeTATL2Yr / S3bTxhy + 1xtj4RkdV7fVxTn56Lb4udUnwuxK4V5b5PdOKj + XcwIDAQAB; n = A 1024 bits de clé;"

abelenky était sur la bonne voie avec BASE64 ..

Était-ce utile?

La solution

Ceci est le base64 codage de la DER-encodage d'un ASN.1 PublicKeyInfo contenant une clé publique RSA.

Voici une traduction:

   0 30  159: SEQUENCE {
   3 30   13:   SEQUENCE {
   5 06    9:     OBJECT IDENTIFIER '1 2 840 113549 1 1 1'
  16 05    0:     NULL
            :     }
  18 03  141:   BIT STRING 0 unused bits, encapsulates {
  22 30  137:       SEQUENCE {
  25 02  129:         INTEGER
            :           00 EB 11 E7 B4 46 2E 09 BB 3F 90 7E 25 98 BA 2F
            :           C4 F5 41 92 5D AB BF D8 FF 0B 8E 74 C3 F1 5E 14
            :           9E 7F B6 14 06 55 18 4D E4 2F 6D DB CD EA 14 2D
            :           8B F8 3D E9 5E 07 78 1F 98 98 83 24 E2 94 DC DB
            :           39 2F 82 89 01 45 07 8C 5C 03 79 BB 74 34 FF AC
            :           04 AD 15 29 E4 C0 4C BD 98 AF F4 B7 6D 3F F1 87
            :           2F B5 C6 D8 F8 46 47 55 ED F5 71 4E 7E 7A 2D BE
            :           2E 75 49 F0 BB 12 B8 57 96 F9 3D D3 8A 8F FF 97
            :           73
 157 02    3:         INTEGER 65537
            :         }
            :       }
            :   }

l'identificateur d'objet indique que la chaîne de bits suivante contient le codage d'un RSAPublicKey. Les INTEGERs sont le module et l'exposant public.

Vous pouvez décoder les base64 avec Convert.FromBase64String , mais je ne pense pas que .NET a une fonctionnalité intégrée pour l'analyse syntaxique PublicKeyInfos, vous devez donc utiliser un outil 3ème partie comme BouncyCastle.

Autres conseils

Pour toute personne intéressée par cette question, je suggère la href="http://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.publickey.aspx"> System.Security.Cryptography.X509Certificates.PublicKey qui peut être utilisé pour lire un DER codé clé publique.

Cette chaîne ressemble à une sorte de son encodage de base 64. Si vous convertissez cette chaîne de base 64 à un blob, il devrait alors être au format ASN.1 valide.

Essayez bouncycastle bibliothèque, il offre une grande fonctionnalité pour de tels cas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top