com.kodemuse.security.ssl
Class CipherSpecImpl

java.lang.Object
  |
  +--com.kodemuse.security.ssl.LogCapability
        |
        +--com.kodemuse.security.ssl.CipherSpecImpl
All Implemented Interfaces:
SSLConstants
Direct Known Subclasses:
StreamCipherSpecImpl

abstract class CipherSpecImpl
extends LogCapability
implements SSLConstants

 uint8 CipherSuite[2];
 let uint8[0] == major
     unint8[1] == minor

 enum { stream, block } CipherType;
 enum { true, false } IsExportable;
 enum { null, rc4, rc2, des, 3des, des40, fortezza }
   BulkCipherAlgorithm;
 enum { null, md5, sha } MACAlgorithm;

 struct {
     BulkCipherAlgorithm bulk_cipher_algorithm;
     MACAlgorithm mac_algorithm;
     CipherType cipher_type;
     IsExportable is_exportable;
     uint8 hash_size;
     uint8 key_material;
     uint8 IV_size;
 } CipherSpec;
 

Author:
Harmeet Bedi

Field Summary
protected  org.bouncycastle.crypto.Digest digest
           
protected  int hashSize
           
protected  byte[] macPad1
           
protected  byte[] macPad2
           
 
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
(package private) CipherSpecImpl(CipherSpec spec)
           
 
Method Summary
 byte[] decrypt(byte[] ba)
           
abstract  byte[] decrypt(byte[] ba, int offset, int len)
           
 byte[] encrypt(byte[] ba)
           
abstract  byte[] encrypt(byte[] ba, int offset, int len)
           
 Finished getClientFinished(MasterSecret secret, HandshakeDigest digest)
           
 byte[] getClientMAC(ContentType type, long seqNum, byte[] data)
           
 byte[] getClientMAC(ContentType type, long seqNum, byte[] data, int off, int len)
           
 org.bouncycastle.crypto.Digest getDigest()
           
 Finished getFinished(boolean server, MasterSecret secret, HandshakeDigest digest)
           
 int getHashSize()
           
abstract  int getIVSize()
           
abstract  int getKeySize()
           
 byte[] getMAC(boolean server, ContentType type, long seqNum, byte[] data)
           
 byte[] getMAC(boolean server, ContentType type, long seqNum, byte[] data, int offset, int len)
           
protected abstract  byte[] getMAC(ContentType type, byte[] secret, long seqNum, byte[] data, int offset, int len)
           
 Finished getServerFinished(MasterSecret secret, HandshakeDigest digest)
           
 byte[] getServerMAC(ContentType type, long seqNum, byte[] data)
           
 byte[] getServerMAC(ContentType type, long seqNum, byte[] data, int off, int len)
           
 boolean isBlockCipher()
           
 boolean isExportable()
           
 boolean isStreamCipher()
           
 void setClientMACSecret(byte[] clientMACSecret)
           
abstract  void setDecryptKey(byte[] key)
           
abstract  void setEncryptKey(byte[] key)
           
 void setServerMACSecret(byte[] serverMACSecret)
           
 
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, toString, wait, wait, wait
 

Field Detail

digest

protected final org.bouncycastle.crypto.Digest digest

hashSize

protected final int hashSize

macPad1

protected final byte[] macPad1

macPad2

protected final byte[] macPad2
Constructor Detail

CipherSpecImpl

CipherSpecImpl(CipherSpec spec)
         throws java.lang.Exception
Method Detail

isBlockCipher

public final boolean isBlockCipher()

isStreamCipher

public final boolean isStreamCipher()

isExportable

public final boolean isExportable()

getHashSize

public final int getHashSize()

setClientMACSecret

public void setClientMACSecret(byte[] clientMACSecret)

setServerMACSecret

public void setServerMACSecret(byte[] serverMACSecret)

getKeySize

public abstract int getKeySize()

getIVSize

public abstract int getIVSize()

decrypt

public final byte[] decrypt(byte[] ba)

encrypt

public final byte[] encrypt(byte[] ba)

decrypt

public abstract byte[] decrypt(byte[] ba,
                               int offset,
                               int len)

encrypt

public abstract byte[] encrypt(byte[] ba,
                               int offset,
                               int len)

setDecryptKey

public abstract void setDecryptKey(byte[] key)

setEncryptKey

public abstract void setEncryptKey(byte[] key)

getMAC

public final byte[] getMAC(boolean server,
                           ContentType type,
                           long seqNum,
                           byte[] data)

getMAC

public final byte[] getMAC(boolean server,
                           ContentType type,
                           long seqNum,
                           byte[] data,
                           int offset,
                           int len)

getClientMAC

public final byte[] getClientMAC(ContentType type,
                                 long seqNum,
                                 byte[] data)

getServerMAC

public final byte[] getServerMAC(ContentType type,
                                 long seqNum,
                                 byte[] data)

getClientMAC

public final byte[] getClientMAC(ContentType type,
                                 long seqNum,
                                 byte[] data,
                                 int off,
                                 int len)

getServerMAC

public final byte[] getServerMAC(ContentType type,
                                 long seqNum,
                                 byte[] data,
                                 int off,
                                 int len)

getMAC

protected abstract byte[] getMAC(ContentType type,
                                 byte[] secret,
                                 long seqNum,
                                 byte[] data,
                                 int offset,
                                 int len)

getDigest

public final org.bouncycastle.crypto.Digest getDigest()

getFinished

public final Finished getFinished(boolean server,
                                  MasterSecret secret,
                                  HandshakeDigest digest)

getServerFinished

public final Finished getServerFinished(MasterSecret secret,
                                        HandshakeDigest digest)

getClientFinished

public final Finished getClientFinished(MasterSecret secret,
                                        HandshakeDigest digest)