View Javadoc
1   package civitas.common.capabilityencryption;
2   
3   import java.util.Map;
4   
5   import org.springframework.beans.factory.annotation.Autowired;
6   import org.springframework.stereotype.Controller;
7   
8   import civitas.crypto.ciphertext.ElGamalCiphertextish;
9   import civitas.crypto.ciphertext.ElGamalEncrypt;
10  import civitas.crypto.publickey.ElGamalPublicKey;
11  import civitas.crypto.reencryptfactor.ElGamalReencryptFactor;
12  import civitas.crypto.reencryptfactor.GenerateElGamalReencryptFactor;
13  import civitas.crypto.votecapability.VoteCapability;
14  
15  @Controller
16  public class EncryptCapability {
17  
18  	@Autowired
19  	GenerateElGamalReencryptFactor generateElGamalReencryptFactor;
20  
21  	@Autowired
22  	ElGamalEncrypt elGamalEncrypt;
23  
24  	public CapabilityEncryption apply(
25  			final ElGamalPublicKey key, final Map<String, VoteCapability> capabilities, final String desiredContext) {
26  		VoteCapability c = capabilities.get(desiredContext);
27  		if (c == null) {
28  			throw new IllegalArgumentException("No capability supplied for context " + desiredContext);
29  		}
30  
31  		ElGamalReencryptFactor encCapFactor = generateElGamalReencryptFactor.apply(key.params);
32  		ElGamalCiphertextish encCap = elGamalEncrypt.apply(key, c, encCapFactor);
33  
34  		return new CapabilityEncryption(encCapFactor, encCap);
35  	}
36  }