View Javadoc
1   package civitas.crypto.keypairshare;
2   
3   import org.springframework.beans.factory.annotation.Autowired;
4   import org.springframework.stereotype.Controller;
5   
6   import civitas.crypto.CryptoBase;
7   import civitas.crypto.parameters.ElGamalParameters;
8   import civitas.crypto.privatekey.ElGamalPrivateKey;
9   import civitas.crypto.publickey.ElGamalPublicKey;
10  import civitas.util.CivitasBigInteger;
11  
12  @Controller
13  public class GenerateKeyPairShare {
14  
15  	@Autowired
16  	CryptoBase cryptoBase;
17  
18  	public ElGamalKeyPairShare apply(final ElGamalParameters params) {
19  		ElGamalParameters ps = params;
20  
21  		CivitasBigInteger x = cryptoBase.generateRandomElement(ps.q);
22  		CivitasBigInteger y = ps.g.modPow(x, ps.p);
23  
24  		ElGamalPublicKey pub = new ElGamalPublicKey(y, params);
25  		ElGamalPrivateKey priv = new ElGamalPrivateKey(x, params);
26  		return new ElGamalKeyPairShare(params, pub, priv);
27  	}
28  }