com.kodemuse.security.ssl
Class ClientKeyExchange

java.lang.Object
  |
  +--com.kodemuse.security.ssl.LogCapability
        |
        +--com.kodemuse.security.ssl.ClientKeyExchange
All Implemented Interfaces:
DataSource, SSLConstants

class ClientKeyExchange
extends LogCapability
implements DataSource, SSLConstants

 struct {
     select (KeyExchangeAlgorithm) {
     case rsa: EncryptedPreMasterSecret;
     case diffie_hellman: ClientDiffieHellmanPublic;
     case fortezza_kea: FortezzaKeys;
     } exchange_keys;
 } ClientKeyExchange;
 enum { rsa, diffie_hellman, fortezza_kea }
             KeyExchangeAlgorithm;

 struct {
     ProtocolVersion client_version;
     opaque random[46];
 } PreMasterSecret;
 struct {
     public-key-encrypted PreMasterSecret pre_master_secret;
 } EncryptedPreMasterSecret;
 
Note: SSLV3 defacto standard(Netscape implementaion) does not have block size. Block size can be uniquely determined.

Author:
Harmeet Bedi

Fields inherited from interface com.kodemuse.security.ssl.SSLConstants
ALERT_CONTENT, APPLICATION_DATA_CONTENT, BAD_CERTIFICATE_ALERTDESC, BAD_RECORD_MAC_ALERTDESC, CERTIFICATE_EXPIRED_ALERTDESC, CERTIFICATE_HANDSHAKE, CERTIFICATE_REQUEST_HANDSHAKE, CERTIFICATE_REVOKED_ALERTDESC, CERTIFICATE_UNKNOWN_ALERTDESC, CERTIFICATE_VERIFY_HANDSHAKE, CHANGE_CIPHER_SPEC_CONTENT, CLIENT, CLIENT_HELLO_HANDSHAKE, CLIENT_KEY_EXCHANGE_HANDSHAKE, CLOSE_ALERT, CLOSE_NOTIFY_ALERTDESC, DECOMPRESSION_FAILURE_ALERTDESC, FATAL_ALERTLEVEL, FINISHED_CLIENT_SENDER, FINISHED_HANDSHAKE, FINISHED_SERVER_SENDER, HANDSHAKE_CONTENT, HANDSHAKE_FAILURE_ALERTDESC, HELLO_REQUEST_HANDSHAKE, ILLEGAL_PARAMETER_ALERTDESC, MAX_RECORD_SIZE, MD5_PAD_1, MD5_PAD_2, MD5LEN, NO_CERTIFICATE_ALERTDESC, NULL_COMPRESSION, RNG, SERVER, SERVER_HELLO_DONE_HANDSHAKE, SERVER_HELLO_HANDSHAKE, SERVER_KEY_EXCHANGE_HANDSHAKE, SHA_PAD_1, SHA_PAD_2, SHA1LEN, SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA, SSL_DH_anon_EXPORT_WITH_RC4_40_MD5, SSL_DH_anon_WITH_3DES_EDE_CBC_SHA, SSL_DH_anon_WITH_DES_CBC_SHA, SSL_DH_anon_WITH_RC4_128_MD5, SSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA, SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA, SSL_DH_DSS_WITH_DES_CBC_SHA, SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DH_RSA_WITH_DES_CBC_SHA, SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_DES_CBC_SHA, SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_DES_CBC_SHA, SSL_FORTEZZA_KEA_WITH_FORTEZZA_CBC_SHA, SSL_FORTEZZA_KEA_WITH_NULL_SHA, SSL_FORTEZZA_KEA_WITH_RC4_128_SHA, SSL_NULL_WITH_NULL_NULL, SSL_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5, SSL_RSA_EXPORT_WITH_RC4_40_MD5, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_DES_CBC_SHA, SSL_RSA_WITH_IDEA_CBC_SHA, SSL_RSA_WITH_NULL_MD5, SSL_RSA_WITH_NULL_SHA, SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, SSLV3_VERSION, TLSV1_VERSION, UNEXPECTED_MESSAGE_ALERTDESC, UNEXPECTEDMSG_ALERT, UNSUPPORTED_CERTIFICATE_ALERTDESC, WARNING_ALERTLEVEL
 
Constructor Summary
ClientKeyExchange(ProtocolVersion ver, java.security.interfaces.RSAPublicKey pubKey)
           
ClientKeyExchange(java.security.interfaces.RSAPrivateKey privKey, java.io.DataInputStream inp)
           
 
Method Summary
 byte[] getPreMasterSecret()
           
 java.lang.String toString()
           
 void write(OutputBuffer out)
           
 
Methods inherited from class com.kodemuse.security.ssl.LogCapability
log, protocolLog
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ClientKeyExchange

public ClientKeyExchange(ProtocolVersion ver,
                         java.security.interfaces.RSAPublicKey pubKey)
                  throws org.bouncycastle.crypto.InvalidCipherTextException

ClientKeyExchange

public ClientKeyExchange(java.security.interfaces.RSAPrivateKey privKey,
                         java.io.DataInputStream inp)
                  throws java.io.IOException,
                         org.bouncycastle.crypto.InvalidCipherTextException
Method Detail

write

public void write(OutputBuffer out)
Specified by:
write in interface DataSource

getPreMasterSecret

public byte[] getPreMasterSecret()

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object