1 package civitas.crypto.votecapabilityshare;
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.CryptoException;
8 import civitas.crypto.msg.EncodeMessage;
9 import civitas.crypto.parameters.ElGamalParameters;
10 import civitas.util.CivitasBigInteger;
11
12 @Controller
13 public class GenerateVoteCapabilityShare {
14
15 @Autowired
16 CryptoBase cryptoBase;
17
18 @Autowired
19 EncodeMessage encodeMessage;
20
21 public VoteCapabilityShare apply(final ElGamalParameters p) throws CryptoException {
22 ElGamalParameters ps = p;
23 CivitasBigInteger x = cryptoBase.generateRandomElement(ps.q);
24 return new VoteCapabilityShare(encodeMessage.apply(x, ps));
25 }
26 }