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-18 13:23:42 +0400
committerPeter Dettman <peter.dettman@bouncycastle.org>2013-06-18 13:23:42 +0400
commit1190848be88884358ae50d46c6266ce680492688 (patch)
tree1cda862732dd59218c367a02232360efc949099f /core/src/main/java/org/bouncycastle/crypto/tls/TlsDHKeyExchange.java
parent0c04e0d702ed4afc3f3428f44fb833eeef3cf7d7 (diff)
More work on server-side DHE key exchange
Diffstat (limited to 'core/src/main/java/org/bouncycastle/crypto/tls/TlsDHKeyExchange.java')
-rw-r--r--core/src/main/java/org/bouncycastle/crypto/tls/TlsDHKeyExchange.java16
1 files changed, 12 insertions, 4 deletions
diff --git a/core/src/main/java/org/bouncycastle/crypto/tls/TlsDHKeyExchange.java b/core/src/main/java/org/bouncycastle/crypto/tls/TlsDHKeyExchange.java
index 60e5105c..0e2742a1 100644
--- a/core/src/main/java/org/bouncycastle/crypto/tls/TlsDHKeyExchange.java
+++ b/core/src/main/java/org/bouncycastle/crypto/tls/TlsDHKeyExchange.java
@@ -20,7 +20,6 @@ import org.bouncycastle.crypto.util.PublicKeyFactory;
public class TlsDHKeyExchange
extends AbstractTlsKeyExchange
{
-
protected static final BigInteger ONE = BigInteger.valueOf(1);
protected static final BigInteger TWO = BigInteger.valueOf(2);
@@ -32,11 +31,11 @@ public class TlsDHKeyExchange
protected TlsAgreementCredentials agreementCredentials;
protected DHPrivateKeyParameters dhAgreeClientPrivateKey;
+ protected DHPrivateKeyParameters dhAgreeServerPrivateKey;
protected DHPublicKeyParameters dhAgreeClientPublicKey;
public TlsDHKeyExchange(int keyExchange, Vector supportedSignatureAlgorithms, DHParameters dhParameters)
{
-
super(keyExchange, supportedSignatureAlgorithms);
switch (keyExchange)
@@ -77,7 +76,6 @@ public class TlsDHKeyExchange
public void processServerCertificate(Certificate serverCertificate)
throws IOException
{
-
if (serverCertificate.isEmpty())
{
throw new TlsFatalAlert(AlertDescription.bad_certificate);
@@ -196,7 +194,17 @@ public class TlsDHKeyExchange
return agreementCredentials.generateAgreement(dhAgreeServerPublicKey);
}
- return calculateDHBasicAgreement(dhAgreeServerPublicKey, dhAgreeClientPrivateKey);
+ if (dhAgreeServerPrivateKey != null)
+ {
+ return calculateDHBasicAgreement(dhAgreeClientPublicKey, dhAgreeServerPrivateKey);
+ }
+
+ if (dhAgreeClientPrivateKey != null)
+ {
+ return calculateDHBasicAgreement(dhAgreeServerPublicKey, dhAgreeClientPrivateKey);
+ }
+
+ throw new TlsFatalAlert(AlertDescription.internal_error);
}
protected boolean areCompatibleParameters(DHParameters a, DHParameters b)