View Javadoc
1   package civitas.crypto.keyshare;
2   
3   import org.springframework.beans.factory.annotation.Autowired;
4   import org.springframework.stereotype.Controller;
5   
6   import civitas.crypto.CryptoError;
7   import civitas.crypto.keypairshare.ElGamalKeyPairShare;
8   import civitas.crypto.proofknowndisclog.ConstructProofKnowDiscLog;
9   import civitas.crypto.proofknowndisclog.ElGamalProofKnowDiscLog;
10  import civitas.crypto.publickey.ElGamalPublicKey;
11  
12  @Controller
13  public class ConstructElGamalKeyShare {
14  	@Autowired
15  	ConstructProofKnowDiscLog constructProofKnowDiscLog;
16  
17  	@Autowired
18  	VerifyElGamalKeyShare verifyElGamalKeyShare;
19  
20  	public ElGamalKeyShare apply(final ElGamalKeyPairShare kps) {
21  		ElGamalKeyShare egks = apply(kps.pubKey(), constructProofKnowDiscLog.apply(kps.pubKey().params, kps.privKey()));
22  		if (!verifyElGamalKeyShare.apply(egks)) {
23  			throw new CryptoError("Cannot verify a newly created key share!");
24  		}
25  		return egks;
26  	}
27  
28  	public ElGamalKeyShare apply(final ElGamalPublicKey k, final ElGamalProofKnowDiscLog proof) {
29  		return new ElGamalKeyShare(k, proof);
30  	}
31  }