0

我在 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,我将如何将密钥传递给对方?

4

0 回答 0