Changeset View
Changeset View
Standalone View
Standalone View
usr.bin/factor/factor.c
Show First 20 Lines • Show All 203 Lines • ▼ Show 20 Lines | |||||
#ifdef HAVE_OPENSSL | #ifdef HAVE_OPENSSL | ||||
BIGNUM *bnfact; | BIGNUM *bnfact; | ||||
bnfact = BN_new(); | bnfact = BN_new(); | ||||
BN_set_word(bnfact, *(fact - 1)); | BN_set_word(bnfact, *(fact - 1)); | ||||
if (!BN_sqr(bnfact, bnfact, ctx)) | if (!BN_sqr(bnfact, bnfact, ctx)) | ||||
errx(1, "error in BN_sqr()"); | errx(1, "error in BN_sqr()"); | ||||
if (BN_cmp(bnfact, val) > 0 || | if (BN_cmp(bnfact, val) > 0 || | ||||
#if OPENSSL_VERSION_NUMBER >= 0x30000000L | |||||
BN_check_prime(val, NULL, NULL) == 1) | |||||
#else | |||||
BN_is_prime_ex(val, PRIME_CHECKS, NULL, NULL) == 1) | BN_is_prime_ex(val, PRIME_CHECKS, NULL, NULL) == 1) | ||||
#endif | |||||
pr_print(val); | pr_print(val); | ||||
else | else | ||||
pollard_pminus1(val); | pollard_pminus1(val); | ||||
#else | #else | ||||
pr_print(val); | pr_print(val); | ||||
#endif | #endif | ||||
break; | break; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 56 Lines • ▼ Show 20 Lines | if (BN_is_one(base)) | ||||
goto newbase; | goto newbase; | ||||
BN_copy(x, base); | BN_copy(x, base); | ||||
BN_sub_word(x, 1); | BN_sub_word(x, 1); | ||||
if (!BN_gcd(x, x, val, ctx)) | if (!BN_gcd(x, x, val, ctx)) | ||||
errx(1, "error in BN_gcd()"); | errx(1, "error in BN_gcd()"); | ||||
if (!BN_is_one(x)) { | if (!BN_is_one(x)) { | ||||
#if OPENSSL_VERSION_NUMBER >= 0x30000000L | |||||
if (BN_check_prime(x, NULL, NULL) == 1) | |||||
#else | |||||
if (BN_is_prime_ex(x, PRIME_CHECKS, NULL, NULL) == 1) | if (BN_is_prime_ex(x, PRIME_CHECKS, NULL, NULL) == 1) | ||||
#endif | |||||
pr_print(x); | pr_print(x); | ||||
else | else | ||||
pollard_pminus1(x); | pollard_pminus1(x); | ||||
fflush(stdout); | fflush(stdout); | ||||
BN_div(num, NULL, val, x, ctx); | BN_div(num, NULL, val, x, ctx); | ||||
if (BN_is_one(num)) | if (BN_is_one(num)) | ||||
return; | return; | ||||
if (BN_is_prime_ex(num, PRIME_CHECKS, NULL, | #if OPENSSL_VERSION_NUMBER >= 0x30000000L | ||||
NULL) == 1) { | if (BN_check_prime(num, NULL, NULL) == 1) | ||||
#else | |||||
if (BN_is_prime_ex(num, PRIME_CHECKS, NULL, NULL) | |||||
== 1) | |||||
#endif | |||||
{ | |||||
pr_print(num); | pr_print(num); | ||||
fflush(stdout); | fflush(stdout); | ||||
return; | return; | ||||
} | } | ||||
BN_copy(val, num); | BN_copy(val, num); | ||||
} | } | ||||
if (!BN_add_word(i, 1)) | if (!BN_add_word(i, 1)) | ||||
errx(1, "error in BN_add_word()"); | errx(1, "error in BN_add_word()"); | ||||
▲ Show 20 Lines • Show All 106 Lines • Show Last 20 Lines |