【发布时间】:2013-08-11 21:49:19
【问题描述】:
我正在使用 OpenSSL 的 c 库生成椭圆曲线 Diffie-Hellman (ECDH) 密钥对,遵循第一个代码示例 here。它用这一行掩盖了公钥的实际交换:
peerkey = get_peerkey(pkey);
pkey 变量和返回值都是EVP * 类型。 pkey 包含前面生成的公钥、私钥和参数,返回值只包含对端的公钥。所以这提出了三个问题:
-
get_peerkey()如何实际上仅从pkey提取公钥以发送给对等方? - 代码如何从
pKey中提取私钥和参数以存储它们以供密钥交换后使用? -
get_peerkey()如何从对等方的原始公钥生成新的EVP_PKEY结构?
我见过 OpenSSL 函数 EVP_PKEY_print_public()、EVP_PKEY_print_private() 和 EVP_PKEY_print_params(),但这些函数用于生成人类可读的输出。而且我还没有找到任何将人类可读的公钥转换回EVP_PKEY 结构的等价物。
【问题讨论】:
标签: c openssl pki elliptic-curve diffie-hellman