Как получить открытый ключ из закрытого ключа ECDSA в OpenSSL?

Я предоставляю этот пример приложения, чтобы показать мою проблему

#include <stdio.h>
#include <stdlib.h>
#include <openssl/ec.h>
#include <openssl/bn.h>

int main()
{
     EC_KEY *pkey = NULL;
     EC_POINT *pub_key = NULL;
     const EC_GROUP *group = NULL;
     BIGNUM start;
     BIGNUM *res;
     BN_CTX *ctx;

     BN_init(&start);
     ctx = BN_CTX_new();

     res = &start;
     BN_hex2bn(&res,"3D79F601620A6D05DB7FED883AB8BCD08A9101B166BC60166869DA5FC08D936E");
     pkey = EC_KEY_new_by_curve_name(NID_secp256k1);
     group = EC_KEY_get0_group(pkey);
     pub_key = EC_POINT_new(group);

     EC_KEY_set_private_key(pkey, res);

     assert(EC_POINT_bn2point(group,res, pub_key, ctx)); // Null here

     EC_KEY_set_public_key(pkey, pub_key);


    return 0;
}

То, что я пытаюсь сделать, это отобразить Открытый ключ из закрытого ключа (если это эллиптический закрытый ключ). Я не знал, как это сделать, пока не столкнулся с подобной проблемой

Как передать случайные данные OpenSSL для использования при подписании ECDSA?

Именно отсюда я указал себе, как получить открытый ключ и использовать EC_POINT_bn2point вместо hex2point, которая внутренне выполняет BN_hex2bn в соответствии с источником OpenSSL.

Итак, почему EC_POINT_bn2point возвращает NULL? Я серьезно рассматриваю возможность перекомпиляции OpenSSL и установки некоторых процедур отладки, чтобы выяснить, почему он не работает.

Ответы на вопрос(2)

Ваш ответ на вопрос