Операции mbedTLS ECC
Я уже искал свой вопрос в документации mbedtls, но явного ответа не было.
Есть ли способ генерировать открытые и закрытые ключи ECC с помощью mbedTLS? У меня уже есть sha256
правильно работает, с помощью учебника, но кажется, что ECC operations
не очень хорошо задокументированы.
Есть ли пример, как сгенерировать закрытый / открытый ключ на кривой NIST P-256?
Спасибо за помощь.
1 ответ
Решение
Вот пример кода для генерации ключей ECC (но без какой-либо проверки возвращаемого значения):
mbedtls_pk_context key;
mbedtls_entropy_context entropy;
mbedtls_ctr_drbg_context ctr_drbg;
mbedtls_pk_type_t pk_alg = MBEDTLS_PK_ECKEY;
mbedtls_pk_init(&key);
mbedtls_entropy_init( &entropy );
mbedtls_ctr_drbg_init(&ctr_drbg);
ret = mbedtls_pk_setup(&key, mbedtls_pk_info_from_type(pk_alg));
ret = mbedtls_ctr_drbg_seed(&ctr_drbg, mbedtls_entropy_func,
&entropy,
(const unsigned char *) "ecdsa",
strlen(pers)
);
ret = mbedtls_ecp_gen_key(<KEY TYPE>,
mbedtls_pk_ec(key),
mbedtls_ctr_drbg_random,
&ctr_drbg
);
куда <KEY_TYPE>
можно найти по адресу: https://tls.mbed.org/api/ecp_8h.html и в вашем случае должно быть MBEDTLS_ECP_DP_SECP256R1
,