Операция Elgamal BN_exp () зависает - PullRequest
0 голосов
/ 10 июля 2020

Пытаюсь реализовать операции Эльгамал . Обычный первый - это умножение двух BIGNUM. Второй - это возведение в степень двух BIGNUM (например, h:=g^x, c_1:=g^y). Когда я делаю BN_exp(), программа C зависает. Зачем? Далее какие-нибудь предложения по решению проблемы?

#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include <openssl/obj_mac.h>
#include <openssl/ec.h>
#include <openssl/rand.h>
#include <openssl/bn.h>

int main(int argc, char *argv[])
{
BN_CTX *ctx;

    BIGNUM *bn1 = BN_new();
    BIGNUM *bn2 = BN_new();
    BIGNUM *result = BN_new();
    BIGNUM *r = BN_new();
    BN_CTX *bn_ctx = BN_CTX_new();

    static const char rnd_seed[] = "string to make the random number generator think it has entropy";
    RAND_seed(rnd_seed, sizeof rnd_seed); /* or BN_generate_prime_ex may fail */
    BN_generate_prime_ex(r, 1024, 0, NULL, NULL, NULL);

    BN_rand_range(bn1, r);
    BN_rand_range(bn2, r);

    BN_mul(result, bn2, bn1, bn_ctx);
    
    BN_exp(result, bn2, bn1, bn_ctx); // here get stuck!
    
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...