1 package civitas.crypto.proofknowndisclog;
2
3 import org.springframework.stereotype.Controller;
4
5 import civitas.crypto.parameters.ElGamalParameters;
6 import civitas.util.CivitasBigInteger;
7
8 @Controller
9 public class VerifyElGamalProofKnowDiscLog {
10 public boolean apply(final ElGamalProofKnowDiscLog that, final ElGamalParameters params) {
11 try {
12 CivitasBigInteger u = params.g.modPow(that.r(), params.p);
13 CivitasBigInteger w = that.a().modMultiply(that.v().modPow(that.c(), params.p), params.p);
14
15 return u.equals(w);
16 } catch (NullPointerException | ArithmeticException e) {
17 return false;
18 }
19 }
20 }