Конвертировать ECPrivateKey / ECPublicKey в строку PEM в Dart - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть ECPrivateKey / ECPublicKey, я хочу преобразовать его в строку PEM, как показано ниже

PublicKey:

-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnd21ku0m+VZvM3tJAP3IIM3XXGla PM2zhRura+/qioJoUwDK7qLbuFzcmbHHx6ELnXFXgAjDbZgFyMdfcm1ugw== -----END PUBLIC KEY-----

PrivateKey:

-----BEGIN PRIVATE KEY----- MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg2sfmpsl894GDcNOl vzKW0gzf/b8XvQigr/rZGSjKydqhRANCAASd3bWS7Sb5Vm8ze0kA/cggzddcaVo8 zbOFG6tr7+qKgmhTAMruotu4XNyZscfHoQudcVeACMNtmAXIx19ybW6D -----END PRIVATE KEY-----

1 Ответ

0 голосов
/ 28 сентября 2019

Если вы кормите

MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnd21ku0m + VZvM3tJAP3IIM3XXGla PM2zhRura + / qioJoUwDK7qLbuFzcmbHHx6ELnXFXgAjDbZgFyMdfcm1ugw ==

в ASN.1 парсер как это , вы обнаружите, чтоэто просто кодировка Base64 / ASN.1 нескольких oids (включая кривую) и значений R / S ключа.Это кодирование описано в спецификации PKCS # 8.

SEQUENCE (2 elem)   SEQUENCE (2 elem)
    OBJECT IDENTIFIER 1.2.840.10045.2.1 ecPublicKey (ANSI X9.62 public key type)
    OBJECT IDENTIFIER 1.2.840.10045.3.1.7 prime256v1 (ANSI X9.62 named elliptic curve)
    BIT STRING (520 bit) 0000010010011101110111011011010110010010111011010010011011111001010101…

Используйте пакет кодера / декодера ASN Dart , чтобы сначала декодировать этот пример выше, чтобы изучить порядок и вложение компонентов ASN.,Затем переверните процесс и перекодируйте их, используя кодирующую часть библиотеки, и подтвердите, что вы получите ту же кодировку BER, с которой вы начали.Теперь вы можете закодировать любую понравившуюся клавишу.

...