Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/quite/humla-spongycastle.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Dettman <peter.dettman@bouncycastle.org>2013-06-19 10:56:26 +0400
committerPeter Dettman <peter.dettman@bouncycastle.org>2013-06-19 10:56:26 +0400
commita1255722486d074260f8eaefbd0ea383f64c31f8 (patch)
treec7aba18ee7ea21a4be2e058bdc134e75a94ef972 /core/src/main/java/org/bouncycastle/crypto/tls/TlsDHEKeyExchange.java
parenta30169f9ef80a631056934c29d6d21473cbde018 (diff)
Add ServerDHParams and refactor DHE key exchange code
Diffstat (limited to 'core/src/main/java/org/bouncycastle/crypto/tls/TlsDHEKeyExchange.java')
-rw-r--r--core/src/main/java/org/bouncycastle/crypto/tls/TlsDHEKeyExchange.java21
1 files changed, 4 insertions, 17 deletions
diff --git a/core/src/main/java/org/bouncycastle/crypto/tls/TlsDHEKeyExchange.java b/core/src/main/java/org/bouncycastle/crypto/tls/TlsDHEKeyExchange.java
index ed654730..66f3e170 100644
--- a/core/src/main/java/org/bouncycastle/crypto/tls/TlsDHEKeyExchange.java
+++ b/core/src/main/java/org/bouncycastle/crypto/tls/TlsDHEKeyExchange.java
@@ -3,15 +3,12 @@ package org.bouncycastle.crypto.tls;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
-import java.math.BigInteger;
import java.util.Vector;
import org.bouncycastle.crypto.AsymmetricCipherKeyPair;
import org.bouncycastle.crypto.Digest;
import org.bouncycastle.crypto.Signer;
-import org.bouncycastle.crypto.generators.DHKeyPairGenerator;
import org.bouncycastle.crypto.io.SignerInputStream;
-import org.bouncycastle.crypto.params.DHKeyGenerationParameters;
import org.bouncycastle.crypto.params.DHParameters;
import org.bouncycastle.crypto.params.DHPrivateKeyParameters;
import org.bouncycastle.crypto.params.DHPublicKeyParameters;
@@ -49,16 +46,8 @@ public class TlsDHEKeyExchange
ByteArrayOutputStream buf = new ByteArrayOutputStream();
- DHKeyPairGenerator kpg = new DHKeyPairGenerator();
- kpg.init(new DHKeyGenerationParameters(context.getSecureRandom(), this.dhParameters));
- AsymmetricCipherKeyPair kp = kpg.generateKeyPair();
- this.dhAgreeServerPrivateKey = (DHPrivateKeyParameters)kp.getPrivate();
-
- BigInteger Ys = ((DHPublicKeyParameters)kp.getPublic()).getY();
-
- TlsDHUtils.writeDHParameter(dhParameters.getP(), buf);
- TlsDHUtils.writeDHParameter(dhParameters.getG(), buf);
- TlsDHUtils.writeDHParameter(Ys, buf);
+ this.dhAgreeServerPrivateKey = TlsDHUtils.generateEphemeralServerKeyExchange(context.getSecureRandom(),
+ this.dhParameters, buf);
byte[] digestInput = buf.toByteArray();
@@ -88,9 +77,7 @@ public class TlsDHEKeyExchange
Signer signer = initVerifyer(tlsSigner, securityParameters);
InputStream sigIn = new SignerInputStream(input, signer);
- BigInteger p = TlsDHUtils.readDHParameter(sigIn);
- BigInteger g = TlsDHUtils.readDHParameter(sigIn);
- BigInteger Ys = TlsDHUtils.readDHParameter(sigIn);
+ ServerDHParams serverDHParams = ServerDHParams.parse(sigIn);
byte[] sigBytes = TlsUtils.readOpaque16(input);
if (!signer.verifySignature(sigBytes))
@@ -98,7 +85,7 @@ public class TlsDHEKeyExchange
throw new TlsFatalAlert(AlertDescription.decrypt_error);
}
- this.dhAgreeServerPublicKey = validateDHPublicKey(new DHPublicKeyParameters(Ys, new DHParameters(p, g)));
+ this.dhAgreeServerPublicKey = TlsDHUtils.validateDHPublicKey(serverDHParams.getPublicKey());
}
protected Signer initVerifyer(TlsSigner tlsSigner, SecurityParameters securityParameters)