1 package civitas.crypto.publickey;
2
3 import org.springframework.stereotype.Controller;
4
5 import civitas.crypto.parameters.ElGamalParameters;
6 import civitas.crypto.privatekey.ElGamalPrivateKey;
7
8 @Controller
9 public class ElGamalPublicKeyisAuthorized {
10
11 public boolean apply(final ElGamalPublicKey that, final Object prf) {
12 if (prf instanceof ElGamalPrivateKey k) {
13 ElGamalParameters param = that.params;
14 return that.y.equals(param.g.modPow(k.x(), param.p));
15 }
16 return false;
17 }
18 }