unsigned char *p_str = "82019154470699086128524248488673846867876336512717"; BIGNUM *p = BN_bin2bn(p_str, sizeof(p_str), NULL);
Use int BN_dec2bn(BIGNUM **a, const char *str) instead.
You would use BN_bin2bn when you have a bytes array (and not an AULL string with a terminating NULL character).
The manual pages are located in BN_bin2bn(3) .
The correct code would look like this:
#include <stdio.h> #include <openssl/bn.h> int main () { static const char p_str[] = "82019154470699086128524248488673846867876336512717"; BIGNUM *p = BN_new(); BN_dec2bn(&p, p_str); char * number_str = BN_bn2hex(p); printf("%s\n", number_str); OPENSSL_free(number_str); BN_free(p); return 0; }
source share