名称
BN_generate_prime_ex,BN_is_prime_fasttest_ex BN_is_prime_ex,BN_GENCB_call,BN_GENCB_set_old,BN_GENCB_set,BN_generate_prime,BN_is_prime,BN_is_prime_fasttest - 生成素数的素数测试
内容简介
#<openssl/bn.h>“
BN_generate_prime_ex(BIGNUM * RET,整数位,INT安全,常量BIGNUM *添加,
常量BIGNUM * REM,BN_GENCB * CB);
:诠释BN_is_prime_ex(常量BIGNUM * P,int nchecks的,CTX BN_CTX,BN_GENCB * CB);
INT BN_is_prime_fasttest_ex。(常量BIGNUM * P,int nchecks的CTX BN_CTX,
,BN_GENCB int do_trial_division的CB);
诠释BN_GENCB_call(BN_GENCB * CB,诠释一个INT B);
#定义BN_GENCB_set_old(gencb回调,cb_arg)的...
#定义BN_GENCB_set(gencb回调,cb_arg)的...
已过时:
BIGNUM * BN_generate_prime(BIGNUM * RET,INT数,INT安全,BIGNUM *
BIGNUM * REM,无效(回调)(诠释,诠释的void *),的void * cb_arg);
诠释BN_is_prime(常量BIGNUM *,诠释检查,无效(回调)(诠释,诠释,
的void *),BN_CTX * CTX,无效* cb_arg);
诠释BN_is_prime_fasttest(常量BIGNUM *,INT检查,
无效(*回调)(诠释,诠释的void *),BN_CTX * CTX无效* cb_arg
do_trial_division);
说明
BN_generate_prime_ex()生成的伪随机素数的位长度的位。如果RET是不是NULL,它将被用来存储数量。
如果CB不为NULL,它是用来如下:
BN_GENCB_call(CB,0,i)的被称为后产生的第i个潜在的自然数。
在号码被测试素性 BN_GENCB_call的(CB 1,j)的被称为如下所述。
当黄金已经找到了,BN_GENCB_call(CB),2,我被调用。
黄金可能有使用Diffie-Hellman密钥交换来满足额外的要求:
如果加不为NULL,总理将满足条件P%添加 == REM(P%加 == 1,如果REM == NULL),以适应给定的发电机。
如果安全是真实的,这将是一个安全的黄金(即素数p,使(P-1)/ 2也是素数)。
PRNG必须接种前调用 BN_generate_prime_ex()的素数生成有错误的概率可以忽略不计。
BN_is_prime_ex()和BN_is_prime_fasttest_ex()的 测试,如果在数p是素的。下面的测试进行,直到其中一个, p是复合,如果p通过了所有这些测试,它被认为是最优惠的。
BN_is_prime_fasttest_ex()调用时do_trial_division == 1,第一次尝试审判庭由一些小素数因子被发现,如果没有通过这个测试,CB是不是NULL, 被称为BN_GENCB_call(CB,1,-1) 。如果== 0 do_trial_division,这个测试被跳过。
两个BN_is_prime_ex()和 BN_is_prime_fasttest_ex()执行一个米勒-拉宾概率的素性测试与nchecks迭代。如果 nchecks == BN_prime_checks,多次反复使用产生的假阳性率顶多2 ^ -80随机输入。
如果CB是不是NULL,BN_GENCB_call(CB,1,J)被称为第j迭代后(J = 0,1,...)。CTX是预先分配的BN_CTX(节省的开销分配和释放在一个循环中的结构),或NULL。
BN_GENCB_call调用回调函数保持在BN_GENCB结构,通过整数作为参数a和b的。有两种类型的 BN_GENCB结构所支持的:“新”的风格和``老''风格。``老''风格,同时为了向后兼容,提供新的方案应该更喜欢``新''风格。
``新的“样式的回调应初始化一个BN_GENCB结构,的调用,,其中gencb是一个BN_GENCB * BN_GENCB_set ,回调的类型是(*回调)(诠释,诠释,BN_GENCB *)和cb_arg的是一个void *。``老“样式的回调是相同的,只是它们被初始化调用BN_GENCB_set_old和回调类型 无效(回调)的(诠释,诠释的void *) 。
调用的回调通过调用BN_GENCB_call。这将检查类型的回调,和将调用回调(A,B,gencb),新样式的回调或回调(A,B,cb_arg)的旧式。
BN_generate_prime(废弃)工作预计,的相同方式BN_generate_prime_ex,但一个老样式的回调函数,直接在回调参数,和一个参数传递给它在cb_arg的。同样BN_is_prime的和BN_is_prime_fasttest的被弃用分别可以比较到BN_is_prime_ex BN_is_prime_fasttest_ex的。
返回值
BN_generate_prime_ex()返回1成功或错误0。
如果数字是复合,1 BN_is_prime_fasttest_ex BN_is_prime_ex(), (),BN_is_prime()和BN_is_prime_fasttest()返回0,如果是素数概率误差小于0.25 ^ nchecks和-1错误。
BN_generate_prime()返回成功的素数,否则NULL。
回调函数应该返回1成功或错误0。
者ERR_get_error(3)可以通过以下方式获得的错误代码。