我在 openssl 中找到了生成 AES-256 和 ecc 密钥的调用。我知道要共享一个秘密 ECDH_compute_key 必须使用。以下示例显示了创建共享密钥,但我不明白如何合并 AES-256 密钥。
unsigned char *get_secret(EC_KEY *key, const EC_POINT *peer_pub_key,
size_t *secret_len) {
int field_size;
unsigned char *secret;
field_size = EC_GROUP_get_degree(EC_KEY_get0_group(key));
*secret_len = (field_size + 7) / 8;
if (NULL == (secret = OPENSSL_malloc(*secret_len))) {
printf("Failed to allocate memory for secret");
return NULL;
}
*secret_len = ECDH_compute_key(secret, *secret_len,
peer_pub_key, key, NULL);
if (*secret_len <= 0) {
OPENSSL_free(secret);
return NULL;
}
return secret;
}
假设我添加了一个 EVP_CIPHER_CTX *ctx,我将如何将密钥传递给对方?