1 package civitas.crypto.proofdisclog;
2
3 import org.springframework.stereotype.Controller;
4
5 import civitas.crypto.parameters.ElGamalParameters;
6
7 @Controller
8 public class VerifyElGamalProofDiscLogEquality {
9
10 public boolean apply(final ElGamalProofDiscLogEquality that, final ElGamalParameters prms) {
11 ElGamalParameters params = prms;
12 try {
13 return that.g1()
14 .modPow(that.r(), params.p)
15 .equals(that.a().modMultiply(that.v().modPow(that.c(), params.p), params.p))
16 && that.g2()
17 .modPow(that.r(), params.p)
18 .equals(that.b().modMultiply(that.w().modPow(that.c(), params.p), params.p));
19 } catch (NullPointerException | ArithmeticException e) {
20 return false;
21 }
22 }
23 }