Умножьте BigNum на простое целое число - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть следующая функция:

BIGNUM * multiplyWithInt(BIGNUM *bn, int val){
  //Logic Here
}

Я пытаюсь вычислить умножение bn*val.Для Умножения в соответствии с документацией (заданной командой man bn) следующее:

int BN_mul(BIGNUM *r, BIGNUM *a, BIGNUM *b, BN_CTX *ctx);

Как видите, мне нужно каким-то образом преобразовать целое число val в BIGNUM openssl.Как я могу это сделать?Один из подходов состоит в том, чтобы преобразовать его в массив байтов unsigned char * и использовать функцию BN_bin2bn, но даст ли это мне желаемую функциональность?

1 Ответ

0 голосов
/ 03 февраля 2019

Функция, которую вы ищете: BN_set_word.Это присваивает unsigned long значение BIGNUM.

BIGNUM *bn_val = BN_new();
BN_set_word(bn_val , val);

. Затем можно передать bn_val и bn в BN_mul.

...