View Javadoc
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  }