org.bouncycastle.crypto.tls

Class TlsProtocolHandler

public class TlsProtocolHandler extends Object

An implementation of all high level protocols in TLS 1.0.
Field Summary
protected static shortAL_fatal
protected static shortAL_warning
protected static shortAP_access_denied
protected static shortAP_bad_certificate
protected static shortAP_bad_record_mac
protected static shortAP_certificate_expired
protected static shortAP_certificate_revoked
protected static shortAP_certificate_unknown
protected static shortAP_close_notify
protected static shortAP_decode_error
protected static shortAP_decompression_failure
protected static shortAP_decryption_failed
protected static shortAP_decrypt_error
protected static shortAP_export_restriction
protected static shortAP_handshake_failure
protected static shortAP_illegal_parameter
protected static shortAP_insufficient_security
protected static shortAP_internal_error
protected static shortAP_no_renegotiation
protected static shortAP_protocol_version
protected static shortAP_record_overflow
protected static shortAP_unexpected_message
protected static shortAP_unknown_ca
protected static shortAP_unsupported_certificate
protected static shortAP_user_canceled
Constructor Summary
TlsProtocolHandler(InputStream is, OutputStream os)
TlsProtocolHandler(InputStream is, OutputStream os, SecureRandom sr)
Method Summary
protected voidassertEmpty(ByteArrayInputStream is)
Make sure the InputStream is now empty.
voidclose()
Closes this connection.
voidconnect(CertificateVerifyer verifyer)
Connects to the remote system.
protected voidfailWithError(short alertLevel, short alertDescription)
Terminate this connection whith an alert.
protected voidflush()
TlsInputStreamgetTlsInputStream()
TlsOuputStreamgetTlsOuputStream()
protected voidprocessData(short protocol, byte[] buf, int offset, int len)
protected intreadApplicationData(byte[] buf, int offset, int len)
Read data from the network.
protected voidwriteData(byte[] buf, int offset, int len)
Send some application data to the remote system.

Field Detail

AL_fatal

protected static final short AL_fatal

AL_warning

protected static final short AL_warning

AP_access_denied

protected static final short AP_access_denied

AP_bad_certificate

protected static final short AP_bad_certificate

AP_bad_record_mac

protected static final short AP_bad_record_mac

AP_certificate_expired

protected static final short AP_certificate_expired

AP_certificate_revoked

protected static final short AP_certificate_revoked

AP_certificate_unknown

protected static final short AP_certificate_unknown

AP_close_notify

protected static final short AP_close_notify

AP_decode_error

protected static final short AP_decode_error

AP_decompression_failure

protected static final short AP_decompression_failure

AP_decryption_failed

protected static final short AP_decryption_failed

AP_decrypt_error

protected static final short AP_decrypt_error

AP_export_restriction

protected static final short AP_export_restriction

AP_handshake_failure

protected static final short AP_handshake_failure

AP_illegal_parameter

protected static final short AP_illegal_parameter

AP_insufficient_security

protected static final short AP_insufficient_security

AP_internal_error

protected static final short AP_internal_error

AP_no_renegotiation

protected static final short AP_no_renegotiation

AP_protocol_version

protected static final short AP_protocol_version

AP_record_overflow

protected static final short AP_record_overflow

AP_unexpected_message

protected static final short AP_unexpected_message

AP_unknown_ca

protected static final short AP_unknown_ca

AP_unsupported_certificate

protected static final short AP_unsupported_certificate

AP_user_canceled

protected static final short AP_user_canceled

Constructor Detail

TlsProtocolHandler

public TlsProtocolHandler(InputStream is, OutputStream os)

TlsProtocolHandler

public TlsProtocolHandler(InputStream is, OutputStream os, SecureRandom sr)

Method Detail

assertEmpty

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

Parameters: is The InputStream to check.

Throws: IOException If is is not empty.

close

public void close()
Closes this connection.

Throws: IOException If something goes wrong during closing.

connect

public void connect(CertificateVerifyer verifyer)
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: IOException If handshake was not successfull.

failWithError

protected void failWithError(short alertLevel, short alertDescription)
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: IOException If alert was fatal.

flush

protected void flush()

getTlsInputStream

public TlsInputStream getTlsInputStream()

Returns: An InputStream which can be used to read data.

getTlsOuputStream

public TlsOuputStream getTlsOuputStream()

Returns: An OutputStream which can be used to send data.

processData

protected void processData(short protocol, byte[] buf, int offset, int len)

readApplicationData

protected int readApplicationData(byte[] buf, int offset, int len)
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: IOException If something goes wrong during reading data.

writeData

protected void writeData(byte[] buf, int offset, int len)
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: IOException If something goes wrong during sending.