diff options
Diffstat (limited to 'core/src/main/java/org/bouncycastle/crypto/ec/ECNewPublicKeyTransform.java')
-rw-r--r-- | core/src/main/java/org/bouncycastle/crypto/ec/ECNewPublicKeyTransform.java | 88 |
1 files changed, 0 insertions, 88 deletions
diff --git a/core/src/main/java/org/bouncycastle/crypto/ec/ECNewPublicKeyTransform.java b/core/src/main/java/org/bouncycastle/crypto/ec/ECNewPublicKeyTransform.java deleted file mode 100644 index 112d20c1..00000000 --- a/core/src/main/java/org/bouncycastle/crypto/ec/ECNewPublicKeyTransform.java +++ /dev/null @@ -1,88 +0,0 @@ -package org.bouncycastle.crypto.ec; - -import java.math.BigInteger; -import java.security.SecureRandom; - -import org.bouncycastle.crypto.CipherParameters; -import org.bouncycastle.crypto.params.ECDomainParameters; -import org.bouncycastle.crypto.params.ECPublicKeyParameters; -import org.bouncycastle.crypto.params.ParametersWithRandom; -import org.bouncycastle.math.ec.ECMultiplier; -import org.bouncycastle.math.ec.ECPoint; -import org.bouncycastle.math.ec.FixedPointCombMultiplier; - -/** - * this does your basic Elgamal encryption algorithm using EC - */ -public class ECNewPublicKeyTransform - implements ECPairTransform -{ - private ECPublicKeyParameters key; - private SecureRandom random; - - /** - * initialise the EC Elgamal engine. - * - * @param param the necessary EC key parameters. - */ - public void init( - CipherParameters param) - { - if (param instanceof ParametersWithRandom) - { - ParametersWithRandom p = (ParametersWithRandom)param; - - if (!(p.getParameters() instanceof ECPublicKeyParameters)) - { - throw new IllegalArgumentException("ECPublicKeyParameters are required for new public key transform."); - } - this.key = (ECPublicKeyParameters)p.getParameters(); - this.random = p.getRandom(); - } - else - { - if (!(param instanceof ECPublicKeyParameters)) - { - throw new IllegalArgumentException("ECPublicKeyParameters are required for new public key transform."); - } - - this.key = (ECPublicKeyParameters)param; - this.random = new SecureRandom(); - } - } - - /** - * Transform an existing cipher text pair using the ElGamal algorithm. Note: the input cipherText will - * need to be preserved in order to complete the transformation to the new public key. - * - * @param cipherText the EC point to process. - * @return returns a new ECPair representing the result of the process. - */ - public ECPair transform(ECPair cipherText) - { - if (key == null) - { - throw new IllegalStateException("ECNewPublicKeyTransform not initialised"); - } - - ECDomainParameters ec = key.getParameters(); - BigInteger n = ec.getN(); - - ECMultiplier basePointMultiplier = createBasePointMultiplier(); - BigInteger k = ECUtil.generateK(n, random); - - ECPoint[] gamma_phi = new ECPoint[]{ - basePointMultiplier.multiply(ec.getG(), k), - key.getQ().multiply(k).add(cipherText.getY()) - }; - - ec.getCurve().normalizeAll(gamma_phi); - - return new ECPair(gamma_phi[0], gamma_phi[1]); - } - - protected ECMultiplier createBasePointMultiplier() - { - return new FixedPointCombMultiplier(); - } -} |