как открыть SSL 1.1.1 ECDH с 25519 - PullRequest
0 голосов
/ 15 мая 2018

Мне нужно реализовать ECDH с 25519, используя openssl.

используя:

key = EC_KEY_new_by_curve_name(NID_X25519)

не удается.

используя это:

EVP_PKEY *pkey = NULL;
EVP_PKEY_CTX *pctx = EVP_PKEY_CTX_new_id(NID_X25519, NULL);
EVP_PKEY_keygen_init(pctx);
EVP_PKEY_keygen(pctx, &pkey);

Кажется, работает, но я понятия не имею, как экспортировать открытый ключ в несжатый формат bin.или как импортировать открытый ключ других сторон.

любая помощь?

1 Ответ

0 голосов
/ 15 мая 2018

Импорт открытого ключа другой стороны из необработанного двоичного формата можно выполнить с помощью функции EVP_PKEY_new_raw_public_key (). Справочная страница здесь:

https://www.openssl.org/docs/man1.1.1/man3/EVP_PKEY_new_raw_public_key.html

Экспорт открытого ключа в необработанном двоичном формате немного сложнее, поскольку для этого нет функции. Вы можете сделать это в формате SubjectPublicKeyInfo, используя описанную здесь i2d_PUBKEY ():

https://www.openssl.org/docs/man1.1.1/man3/i2d_PUBKEY.html

К счастью, формат SubjectPublicKeyInfo имеет необработанный открытый ключ как последние 32 байта его вывода. Таким образом, вы можете использовать i2d_PUBKEY () и просто использовать последние 32 байта.

...