Как открыть 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 байта.