Bouncy Castle Cryptography Library 1.37

org.bouncycastle.crypto.tls
Class TlsProtocolHandler

java.lang.Object
  extended by org.bouncycastle.crypto.tls.TlsProtocolHandler

public class TlsProtocolHandler
extends java.lang.Object

An implementation of all high level protocols in TLS 1.0.


Field Summary
protected static short AL_fatal
           
protected static short AL_warning
           
protected static short AP_access_denied
           
protected static short AP_bad_certificate
           
protected static short AP_bad_record_mac
           
protected static short AP_certificate_expired
           
protected static short AP_certificate_revoked
           
protected static short AP_certificate_unknown
           
protected static short AP_close_notify
           
protected static short AP_decode_error
           
protected static short AP_decompression_failure
           
protected static short AP_decrypt_error
           
protected static short AP_decryption_failed
           
protected static short AP_export_restriction
           
protected static short AP_handshake_failure
           
protected static short AP_illegal_parameter
           
protected static short AP_insufficient_security
           
protected static short AP_internal_error
           
protected static short AP_no_renegotiation
           
protected static short AP_protocol_version
           
protected static short AP_record_overflow
           
protected static short AP_unexpected_message
           
protected static short AP_unknown_ca
           
protected static short AP_unsupported_certificate
           
protected static short AP_user_canceled
           
 
Constructor Summary
TlsProtocolHandler(java.io.InputStream is, java.io.OutputStream os)
           
TlsProtocolHandler(java.io.InputStream is, java.io.OutputStream os, java.security.SecureRandom sr)
           
 
Method Summary
protected  void assertEmpty(java.io.ByteArrayInputStream is)
          Make sure the InputStream is now empty.
 void close()
          Closes this connection.
 void connect(CertificateVerifyer verifyer)
          Connects to the remote system.
protected  void failWithError(short alertLevel, short alertDescription)
          Terminate this connection whith an alert.
protected  void flush()
           
 TlsInputStream getTlsInputStream()
           
 TlsOuputStream getTlsOuputStream()
           
protected  void processData(short protocol, byte[] buf, int offset, int len)
           
protected  int readApplicationData(byte[] buf, int offset, int len)
          Read data from the network.
protected  void writeData(byte[] buf, int offset, int len)
          Send some application data to the remote system.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

AP_close_notify

protected static final short AP_close_notify
See Also:
Constant Field Values

AP_unexpected_message

protected static final short AP_unexpected_message
See Also:
Constant Field Values

AP_bad_record_mac

protected static final short AP_bad_record_mac
See Also:
Constant Field Values

AP_decryption_failed

protected static final short AP_decryption_failed
See Also:
Constant Field Values

AP_record_overflow

protected static final short AP_record_overflow
See Also:
Constant Field Values

AP_decompression_failure

protected static final short AP_decompression_failure
See Also:
Constant Field Values

AP_handshake_failure

protected static final short AP_handshake_failure
See Also:
Constant Field Values

AP_bad_certificate

protected static final short AP_bad_certificate
See Also:
Constant Field Values

AP_unsupported_certificate

protected static final short AP_unsupported_certificate
See Also:
Constant Field Values

AP_certificate_revoked

protected static final short AP_certificate_revoked
See Also:
Constant Field Values

AP_certificate_expired

protected static final short AP_certificate_expired
See Also:
Constant Field Values

AP_certificate_unknown

protected static final short AP_certificate_unknown
See Also:
Constant Field Values

AP_illegal_parameter

protected static final short AP_illegal_parameter
See Also:
Constant Field Values

AP_unknown_ca

protected static final short AP_unknown_ca
See Also:
Constant Field Values

AP_access_denied

protected static final short AP_access_denied
See Also:
Constant Field Values

AP_decode_error

protected static final short AP_decode_error
See Also:
Constant Field Values

AP_decrypt_error

protected static final short AP_decrypt_error
See Also:
Constant Field Values

AP_export_restriction

protected static final short AP_export_restriction
See Also:
Constant Field Values

AP_protocol_version

protected static final short AP_protocol_version
See Also:
Constant Field Values

AP_insufficient_security

protected static final short AP_insufficient_security
See Also:
Constant Field Values

AP_internal_error

protected static final short AP_internal_error
See Also:
Constant Field Values

AP_user_canceled

protected static final short AP_user_canceled
See Also:
Constant Field Values

AP_no_renegotiation

protected static final short AP_no_renegotiation
See Also:
Constant Field Values

AL_warning

protected static final short AL_warning
See Also:
Constant Field Values

AL_fatal

protected static final short AL_fatal
See Also:
Constant Field Values
Constructor Detail

TlsProtocolHandler

public TlsProtocolHandler(java.io.InputStream is,
                          java.io.OutputStream os)

TlsProtocolHandler

public TlsProtocolHandler(java.io.InputStream is,
                          java.io.OutputStream os,
                          java.security.SecureRandom sr)
Method Detail

processData

protected void processData(short protocol,
                           byte[] buf,
                           int offset,
                           int len)
                    throws java.io.IOException
Throws:
java.io.IOException

connect

public void connect(CertificateVerifyer verifyer)
             throws java.io.IOException
Connects to the remote system.

Parameters:
verifyer - Will be used when a certificate is received to verify that this certificate is accepted by the client.
Throws:
java.io.IOException - If handshake was not successfull.

readApplicationData

protected int readApplicationData(byte[] buf,
                                  int offset,
                                  int len)
                           throws java.io.IOException
Read data from the network. The method will return immed, if there is still some data left in the buffer, or block untill some application data has been read from the network.

Parameters:
buf - The buffer where the data will be copied to.
offset - The position where the data will be placed in the buffer.
len - The maximum number of bytes to read.
Returns:
The number of bytes read.
Throws:
java.io.IOException - If something goes wrong during reading data.

writeData

protected void writeData(byte[] buf,
                         int offset,
                         int len)
                  throws java.io.IOException
Send some application data to the remote system.

The method will handle fragmentation internally.

Parameters:
buf - The buffer with the data.
offset - The position in the buffer where the data is placed.
len - The length of the data.
Throws:
java.io.IOException - If something goes wrong during sending.

getTlsOuputStream

public TlsOuputStream getTlsOuputStream()
Returns:
An OutputStream which can be used to send data.

getTlsInputStream

public TlsInputStream getTlsInputStream()
Returns:
An InputStream which can be used to read data.

failWithError

protected void failWithError(short alertLevel,
                             short alertDescription)
                      throws java.io.IOException
Terminate this connection whith an alert.

Can be used for normal closure too.

Parameters:
alertLevel - The level of the alert, an be AL_fatal or AL_warning.
alertDescription - The exact alert message.
Throws:
java.io.IOException - If alert was fatal.

close

public void close()
           throws java.io.IOException
Closes this connection.

Throws:
java.io.IOException - If something goes wrong during closing.

assertEmpty

protected void assertEmpty(java.io.ByteArrayInputStream is)
                    throws java.io.IOException
Make sure the InputStream is now empty. Fail otherwise.

Parameters:
is - The InputStream to check.
Throws:
java.io.IOException - If is is not empty.

flush

protected void flush()
              throws java.io.IOException
Throws:
java.io.IOException

Bouncy Castle Cryptography Library 1.37