View Javadoc
1   package civitas.crypto.petcommitment;
2   
3   import civitas.crypto.Constants;
4   import civitas.crypto.ciphertext.ElGamalCiphertext;
5   import civitas.crypto.parameters.ElGamalParameters;
6   import civitas.crypto.petdecommitment.PETDecommitment;
7   import civitas.util.CivitasBigInteger;
8   
9   public class CombinePETShareDecommitments implements Constants {
10  
11  	public ElGamalCiphertext apply(final PETDecommitment[] decs, final ElGamalParameters params, CivitasBigInteger d) {
12  		CivitasBigInteger e = ONE;
13  		ElGamalParameters ps = params;
14  
15  		for (int i = 0; i < (decs == null ? 0 : decs.length); i++) {
16  			PETDecommitment decom = decs[i];
17  			d = d.modMultiply(decom.di(), ps.p);
18  			e = e.modMultiply(decom.ei(), ps.p);
19  		}
20  		return new ElGamalCiphertext(d, e);
21  	}
22  
23  	public ElGamalCiphertext apply(final PETDecommitment[] decs, final ElGamalParameters params) {
24  		return apply(decs, params, ONE);
25  	}
26  }