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 }