29 lines
718 B
JavaScript
29 lines
718 B
JavaScript
import { random2048 } from "./random_primes.js";
|
|
import { mod_exp } from "./math";
|
|
|
|
class PlaintextVerifier {
|
|
constructor(cyphertext, value, pub_key) {
|
|
this.proving =
|
|
(cyphertext * mod_exp(pub_key.g, value, pub_key.n ** 2)) % pub_key.n ** 2;
|
|
this.challenge = random2048();
|
|
}
|
|
|
|
verify(response) {}
|
|
}
|
|
|
|
class PlaintextProver {
|
|
constructor(cyphertext, pub_key, priv_key) {
|
|
this.value = priv_key.decrypt(cyphertext.text);
|
|
this.mixin = random2048();
|
|
|
|
this.pubKey = pub_key;
|
|
}
|
|
|
|
handleChallenge(challenge) {
|
|
return (
|
|
(this.mixin * mod_exp(cyphertext.mixin, challenge, this.pubKey.n)) %
|
|
this.pubKey.n
|
|
);
|
|
}
|
|
}
|