This commit is contained in:
jude
2023-04-20 10:13:03 +01:00
parent f8b0608ab3
commit f9805c4806
5 changed files with 160 additions and 66 deletions

View File

@ -1,4 +1,9 @@
import { cryptoRandom, generate_prime, KEY_SIZE } from "./random_primes.js";
import {
cryptoRandom,
generate_prime,
generate_safe_prime,
KEY_SIZE,
} from "./random_primes.js";
import { gcd, mod_exp } from "./math.js";
const PAILLIER = 0;
@ -371,25 +376,8 @@ export function generate_keypair() {
p = BigInt(window.sessionStorage.getItem("p"));
q = BigInt(window.sessionStorage.getItem("q"));
} else {
let p1 = generate_prime();
while (p1 % 4n !== 3n) {
p1 = generate_prime();
}
let primes = [p1];
while (
check_gcd(primes.slice(0, primes.length - 1), primes[primes.length - 1]) ===
null
) {
q = generate_prime();
while (q % 4n !== 3n) {
q = generate_prime();
}
primes.push(q);
}
p = check_gcd(primes.slice(0, primes.length - 1), primes[primes.length - 1]);
p = generate_safe_prime();
q = generate_safe_prime();
}
window.sessionStorage.setItem("p", p);

View File

@ -97,6 +97,15 @@ export function generate_prime() {
}
}
export function generate_safe_prime() {
while (true) {
let n = generate_prime();
if (small_prime_test((n - 1n) / 2n) && miller_rabin((n - 1n) / 2n, 40)) {
return n;
}
}
}
const SMALL_PRIMES = [
2n,
3n,