Как открыть SSL 1.1.1 ECDH с 25519

Мне нужно реализовать 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 ответ

Решение

Импорт открытого ключа другой стороны из необработанного двоичного формата можно выполнить с помощью функции 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 байта.

Другие вопросы по тегам