View Javadoc
1   package civitas.crypto.oneoflreencryption;
2   
3   import org.springframework.beans.factory.annotation.Autowired;
4   import org.springframework.stereotype.Controller;
5   
6   import civitas.crypto.ciphertext.ElGamalCiphertextish;
7   import civitas.crypto.ciphertext.ElGamalReencrypt;
8   import civitas.crypto.ciphertextlist.CiphertextList;
9   import civitas.crypto.proof1ofl.ConstructElGamalProof1OfL;
10  import civitas.crypto.proof1ofl.ElGamalProof1OfL;
11  import civitas.crypto.publickey.ElGamalPublicKey;
12  import civitas.crypto.reencryptfactor.ElGamalReencryptFactor;
13  
14  @Controller
15  public class ConstructElGamal1OfLReencryption {
16  
17  	@Autowired
18  	ConstructElGamalProof1OfL constructElGamalProof1OfL;
19  
20  	@Autowired
21  	ElGamalReencrypt elGamalReencrypt;
22  
23  	public ElGamal1OfLReencryption apply(
24  			final ElGamalPublicKey key,
25  			final CiphertextList ciphertexts,
26  			final int choice,
27  			final ElGamalReencryptFactor factor) {
28  		if (ciphertexts == null || choice >= ciphertexts.size()) {
29  			return null;
30  		}
31  		ElGamalCiphertextish m = elGamalReencrypt.apply(key, ciphertexts.get(choice), factor);
32  		ElGamalProof1OfL proof = constructElGamalProof1OfL.apply(key, ciphertexts, choice, m, factor);
33  		return new ElGamal1OfLReencryption(m, proof);
34  	}
35  }