...
Пример открытого ключа в формате OpenSSL:
Code Block | |||
---|---|---|---|
| |||
// ASN.1 структуры открытого ECDSA ключа |
30 56 -- SEQUENCE. первый байт -- тег типа (30), второй -- длина значения (56).
30 10 -- SEQUENCE
06 07 2A 86 48 CE 3D 02 01 -- OBJECT IDENTIFIER. Идентифицирует типа ключа. В нашем случае это ecPublicKey (открытый ключ эл. кривой).
06 05 2B 81 04 00 0A -- OBJECT IDENTIFIER. Идентифицирует параметры ключа. В нашем случае это secp256k1 (параметр эл. кривой)
03 42 00 04 8B 92 09 CC C0 A1 B4 19 BA 80 2E 44 5D A2 16 E6 92 AA 9C BB B9 CC B0 CE 5C 76 71 C6 DF E4 CA 83 46 BB 92 2B C8 6F FC 15 20 D8 11 5F 32 4F 7F CA BB DE 9F E3 62 5E 8E 2C D2 2D C2 51 EC 3B 8C 67 -- BIT STRING. Значение открытого ключа |
...
30 56 30 10 06 07 2A 86 48 CE 3D 02 01 06 05 2B 81 04 00 0A 03 42 00 04 8B 92 09 CC C0 A1 B4 19 BA 80 2E 44 5D A2 16 E6 92 AA 9C BB B9 CC B0 CE 5C 76 71 C6 DF E4 CA 83 46 BB 92 2B C8 6F FC 15 20 D8 11 5F 32 4F 7F CA BB DE 9F E3 62 5E 8E 2C D2 2D C2 51 EC 3B 8C 67
Info | ||||||||
---|---|---|---|---|---|---|---|---|
title | DERDER и PEM форматы Если записать в файл байты в том виде, в котором мы их получили, мы получим открытый ключ в DER формате. Если мы хотим представить его в виде печатных символов, его нужно перевести в PEM формат. Это можно сделать с помощью команды:
|
...
Чтобы проверить, что ключ сконвертирован верно, выполните команду:
Code Block | ||||
---|---|---|---|---|
| ||||
openssl ec -check -pubin -in pubkey.pem |
...
Пример R|S подписи
Code Block | ||||
---|---|---|---|---|
| ||||
43 1C 62 38 11 04 91 43 76 28 A5 D8 9E 5F EE 90 B0 DC 68 39 D2 B8 11 F3 22 2C D4 DB E2 05 49 BF -- R 8A EF 68 77 8B 0D B8 E6 11 FD 55 56 37 71 62 7E B7 31 22 67 8D 61 7F B6 41 EA 7E 1F 84 C7 36 41 -- S |
...
OpenSSL представляет подпись в виде ASN.1 структуры.
Code Block | |||
---|---|---|---|
| |||
// ASN.1 структуры открытого ECDSA ключа |
30 45 -- SEQUENCE
02 20 43 1C 62 38 11 04 91 43 76 28 A5 D8 9E 5F EE 90 B0 DC 68 39 D2 B8 11 F3 22 2C D4 DB E2 05 49 BF -- R
02 21 00 8A EF 68 77 8B 0D B8 E6 11 FD 55 56 37 71 62 7E B7 31 22 67 8D 61 7F B6 41 EA 7E 1F 84 C7 36 41 -- S |
...
Проверка подписи можно с помощью команды openssl
Code Block | ||||
---|---|---|---|---|
| ||||
openssl dgst -sha256 -verify pubkey.pem -signature sign.der data.bin |
...