Bouncy Castle Cryptography Library 1.49

org.bouncycastle.crypto.tls
Class TlsDHKeyExchange

java.lang.Object
  extended by org.bouncycastle.crypto.tls.AbstractTlsKeyExchange
      extended by org.bouncycastle.crypto.tls.TlsDHKeyExchange
All Implemented Interfaces:
TlsKeyExchange
Direct Known Subclasses:
TlsDHEKeyExchange

public class TlsDHKeyExchange
extends AbstractTlsKeyExchange

TLS 1.0/1.1 DH key exchange.


Field Summary
protected  TlsAgreementCredentials agreementCredentials
           
protected  DHPrivateKeyParameters dhAgreeClientPrivateKey
           
protected  DHPublicKeyParameters dhAgreeClientPublicKey
           
protected  DHPublicKeyParameters dhAgreeServerPublicKey
           
protected  DHParameters dhParameters
           
protected static java.math.BigInteger ONE
           
protected  AsymmetricKeyParameter serverPublicKey
           
protected  TlsSigner tlsSigner
           
protected static java.math.BigInteger TWO
           
 
Fields inherited from class org.bouncycastle.crypto.tls.AbstractTlsKeyExchange
context, keyExchange, supportedSignatureAlgorithms
 
Constructor Summary
TlsDHKeyExchange(int keyExchange, java.util.Vector supportedSignatureAlgorithms, DHParameters dhParameters)
           
 
Method Summary
protected  boolean areCompatibleParameters(DHParameters a, DHParameters b)
           
protected  byte[] calculateDHBasicAgreement(DHPublicKeyParameters publicKey, DHPrivateKeyParameters privateKey)
           
 void generateClientKeyExchange(java.io.OutputStream output)
           
protected  AsymmetricCipherKeyPair generateDHKeyPair(DHParameters dhParams)
           
 byte[] generatePremasterSecret()
           
 void init(TlsContext context)
           
 void processClientCredentials(TlsCredentials clientCredentials)
           
 void processServerCertificate(Certificate serverCertificate)
           
 boolean requiresServerKeyExchange()
           
 void skipServerCredentials()
           
 void validateCertificateRequest(CertificateRequest certificateRequest)
           
protected  DHPublicKeyParameters validateDHPublicKey(DHPublicKeyParameters key)
           
 
Methods inherited from class org.bouncycastle.crypto.tls.AbstractTlsKeyExchange
generateServerKeyExchange, processClientCertificate, processClientKeyExchange, processServerCredentials, processServerKeyExchange, skipClientCredentials, skipServerKeyExchange
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ONE

protected static final java.math.BigInteger ONE

TWO

protected static final java.math.BigInteger TWO

tlsSigner

protected TlsSigner tlsSigner

dhParameters

protected DHParameters dhParameters

serverPublicKey

protected AsymmetricKeyParameter serverPublicKey

dhAgreeServerPublicKey

protected DHPublicKeyParameters dhAgreeServerPublicKey

agreementCredentials

protected TlsAgreementCredentials agreementCredentials

dhAgreeClientPrivateKey

protected DHPrivateKeyParameters dhAgreeClientPrivateKey

dhAgreeClientPublicKey

protected DHPublicKeyParameters dhAgreeClientPublicKey
Constructor Detail

TlsDHKeyExchange

public TlsDHKeyExchange(int keyExchange,
                        java.util.Vector supportedSignatureAlgorithms,
                        DHParameters dhParameters)
Method Detail

init

public void init(TlsContext context)
Specified by:
init in interface TlsKeyExchange
Overrides:
init in class AbstractTlsKeyExchange

skipServerCredentials

public void skipServerCredentials()
                           throws java.io.IOException
Throws:
java.io.IOException

processServerCertificate

public void processServerCertificate(Certificate serverCertificate)
                              throws java.io.IOException
Specified by:
processServerCertificate in interface TlsKeyExchange
Overrides:
processServerCertificate in class AbstractTlsKeyExchange
Throws:
java.io.IOException

requiresServerKeyExchange

public boolean requiresServerKeyExchange()
Specified by:
requiresServerKeyExchange in interface TlsKeyExchange
Overrides:
requiresServerKeyExchange in class AbstractTlsKeyExchange

validateCertificateRequest

public void validateCertificateRequest(CertificateRequest certificateRequest)
                                throws java.io.IOException
Throws:
java.io.IOException

processClientCredentials

public void processClientCredentials(TlsCredentials clientCredentials)
                              throws java.io.IOException
Throws:
java.io.IOException

generateClientKeyExchange

public void generateClientKeyExchange(java.io.OutputStream output)
                               throws java.io.IOException
Throws:
java.io.IOException

generatePremasterSecret

public byte[] generatePremasterSecret()
                               throws java.io.IOException
Throws:
java.io.IOException

areCompatibleParameters

protected boolean areCompatibleParameters(DHParameters a,
                                          DHParameters b)

calculateDHBasicAgreement

protected byte[] calculateDHBasicAgreement(DHPublicKeyParameters publicKey,
                                           DHPrivateKeyParameters privateKey)

generateDHKeyPair

protected AsymmetricCipherKeyPair generateDHKeyPair(DHParameters dhParams)

validateDHPublicKey

protected DHPublicKeyParameters validateDHPublicKey(DHPublicKeyParameters key)
                                             throws java.io.IOException
Throws:
java.io.IOException

Bouncy Castle Cryptography Library 1.49