[英]how to openSSL 1.1.1 ECDH with 25519
我需要使用openssl用25519实现ecdh。
使用:
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格式导出公钥。 或如何导入对方的公共密钥。
有什么帮助吗?
可以使用EVP_PKEY_new_raw_public_key()函数从原始二进制格式导入另一方的公钥。 手册页在这里:
https://www.openssl.org/docs/man1.1.1/man3/EVP_PKEY_new_raw_public_key.html
以原始二进制格式导出公钥会有些棘手,因为没有函数可以执行此操作。 您可以使用此处描述的i2d_PUBKEY()以SubjectPublicKeyInfo格式进行操作:
https://www.openssl.org/docs/man1.1.1/man3/i2d_PUBKEY.html
幸运的是,SubjectPublicKeyInfo格式具有原始公钥作为其输出的最后32个字节。 因此,您可以使用i2d_PUBKEY()并仅使用最后32个字节。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.