View Javadoc
1   package civitas.common.mix.capabilityelementrevelation;
2   
3   import org.springframework.beans.factory.annotation.Autowired;
4   import org.springframework.stereotype.Controller;
5   
6   import civitas.common.mix.capabilitymix.CapabilityMix;
7   import civitas.crypto.ciphertext.ElGamalCiphertextish;
8   import civitas.crypto.ciphertext.ElGamalReencrypt;
9   import civitas.crypto.publickey.ElGamalPublicKey;
10  import jakarta.annotation.Nonnull;
11  
12  @Controller
13  public class VerifyMixCapabilityElementRevelation {
14  
15  	@Autowired
16  	ElGamalReencrypt elGamalReencrypt;
17  
18  	public boolean apply(
19  			@Nonnull final MixCapabilityElementRevelation that,
20  			@Nonnull final ElGamalPublicKey key,
21  			final int fromIndex,
22  			final int toIndex,
23  			@Nonnull final CapabilityMix fromMix,
24  			@Nonnull final CapabilityMix toMix) {
25  		ElGamalCiphertextish toCipher = toMix.capabilities[toIndex];
26  
27  		ElGamalCiphertextish recipher =
28  				elGamalReencrypt.apply(key, fromMix.capabilities[fromIndex], that.reencryptFactor);
29  		return recipher.equals(toCipher);
30  	}
31  }