public abstract class TlsProtocol
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
protected boolean |
allowCertificateStatus |
protected java.util.Hashtable |
clientExtensions |
protected short |
connection_state |
protected static short |
CS_CERTIFICATE_REQUEST |
protected static short |
CS_CERTIFICATE_STATUS |
protected static short |
CS_CERTIFICATE_VERIFY |
protected static short |
CS_CLIENT_CERTIFICATE |
protected static short |
CS_CLIENT_FINISHED |
protected static short |
CS_CLIENT_HELLO |
protected static short |
CS_CLIENT_KEY_EXCHANGE |
protected static short |
CS_CLIENT_SUPPLEMENTAL_DATA |
protected static short |
CS_END |
protected static short |
CS_SERVER_CERTIFICATE |
protected static short |
CS_SERVER_FINISHED |
protected static short |
CS_SERVER_HELLO |
protected static short |
CS_SERVER_HELLO_DONE |
protected static short |
CS_SERVER_KEY_EXCHANGE |
protected static short |
CS_SERVER_SESSION_TICKET |
protected static short |
CS_SERVER_SUPPLEMENTAL_DATA |
protected static short |
CS_START |
protected boolean |
expectSessionTicket |
protected static java.lang.Integer |
EXT_RenegotiationInfo |
protected static java.lang.Integer |
EXT_SessionTicket |
protected int[] |
offeredCipherSuites |
protected short[] |
offeredCompressionMethods |
protected Certificate |
peerCertificate |
protected boolean |
receivedChangeCipherSpec |
protected org.bouncycastle.crypto.tls.RecordStream |
recordStream |
protected boolean |
resumedSession |
protected boolean |
secure_renegotiation |
protected java.security.SecureRandom |
secureRandom |
protected SecurityParameters |
securityParameters |
protected java.util.Hashtable |
serverExtensions |
protected SessionParameters |
sessionParameters |
protected TlsSession |
tlsSession |
Constructor and Description |
---|
TlsProtocol(java.io.InputStream input,
java.io.OutputStream output,
java.security.SecureRandom secureRandom) |
Modifier and Type | Method and Description |
---|---|
protected static void |
assertEmpty(java.io.ByteArrayInputStream buf)
Make sure the InputStream 'buf' now empty.
|
protected void |
cleanupHandshake() |
void |
close()
Closes this connection.
|
protected void |
completeHandshake() |
protected static byte[] |
createRandomBlock(java.security.SecureRandom random) |
protected static byte[] |
createRenegotiationInfo(byte[] renegotiated_connection) |
protected byte[] |
createVerifyData(boolean isServer) |
protected static void |
establishMasterSecret(TlsContext context,
TlsKeyExchange keyExchange) |
protected void |
failWithError(short alertLevel,
short alertDescription,
java.lang.String message,
java.lang.Exception cause)
Terminate this connection with an alert.
|
protected void |
flush() |
protected abstract org.bouncycastle.crypto.tls.AbstractTlsContext |
getContext() |
protected static byte[] |
getCurrentPRFHash(TlsContext context,
org.bouncycastle.crypto.tls.TlsHandshakeHash handshakeHash,
byte[] sslSender)
'sender' only relevant to SSLv3
|
java.io.InputStream |
getInputStream() |
java.io.OutputStream |
getOutputStream() |
protected abstract TlsPeer |
getPeer() |
protected static int |
getPRFAlgorithm(TlsContext context,
int ciphersuite) |
protected void |
handleChangeCipherSpecMessage() |
protected void |
handleClose(boolean user_canceled) |
protected abstract void |
handleHandshakeMessage(short type,
byte[] buf) |
protected void |
handleWarningMessage(short description) |
protected void |
invalidateSession() |
protected void |
processFinishedMessage(java.io.ByteArrayInputStream buf) |
protected short |
processMaxFragmentLengthExtension(java.util.Hashtable clientExtensions,
java.util.Hashtable serverExtensions,
short alertDescription) |
protected void |
processRecord(short protocol,
byte[] buf,
int offset,
int len) |
protected void |
raiseAlert(short alertLevel,
short alertDescription,
java.lang.String message,
java.lang.Exception cause) |
protected void |
raiseWarning(short alertDescription,
java.lang.String message) |
protected int |
readApplicationData(byte[] buf,
int offset,
int len)
Read data from the network.
|
protected static java.util.Hashtable |
readExtensions(java.io.ByteArrayInputStream input) |
protected static java.util.Vector |
readSupplementalDataMessage(java.io.ByteArrayInputStream input) |
protected void |
safeReadRecord() |
protected void |
safeWriteRecord(short type,
byte[] buf,
int offset,
int len) |
protected void |
sendCertificateMessage(Certificate certificate) |
protected void |
sendChangeCipherSpecMessage() |
protected void |
sendFinishedMessage() |
protected void |
sendSupplementalDataMessage(java.util.Vector supplementalData) |
protected void |
writeData(byte[] buf,
int offset,
int len)
Send some application data to the remote system.
|
protected static void |
writeExtensions(java.io.OutputStream output,
java.util.Hashtable extensions) |
protected void |
writeHandshakeMessage(byte[] buf,
int off,
int len) |
protected static void |
writeSupplementalData(java.io.OutputStream output,
java.util.Vector supplementalData) |
protected static final java.lang.Integer EXT_RenegotiationInfo
protected static final java.lang.Integer EXT_SessionTicket
protected static final short CS_START
protected static final short CS_CLIENT_HELLO
protected static final short CS_SERVER_HELLO
protected static final short CS_SERVER_SUPPLEMENTAL_DATA
protected static final short CS_SERVER_CERTIFICATE
protected static final short CS_CERTIFICATE_STATUS
protected static final short CS_SERVER_KEY_EXCHANGE
protected static final short CS_CERTIFICATE_REQUEST
protected static final short CS_SERVER_HELLO_DONE
protected static final short CS_CLIENT_SUPPLEMENTAL_DATA
protected static final short CS_CLIENT_CERTIFICATE
protected static final short CS_CLIENT_KEY_EXCHANGE
protected static final short CS_CERTIFICATE_VERIFY
protected static final short CS_CLIENT_FINISHED
protected static final short CS_SERVER_SESSION_TICKET
protected static final short CS_SERVER_FINISHED
protected static final short CS_END
protected org.bouncycastle.crypto.tls.RecordStream recordStream
protected java.security.SecureRandom secureRandom
protected TlsSession tlsSession
protected SessionParameters sessionParameters
protected SecurityParameters securityParameters
protected Certificate peerCertificate
protected int[] offeredCipherSuites
protected short[] offeredCompressionMethods
protected java.util.Hashtable clientExtensions
protected java.util.Hashtable serverExtensions
protected short connection_state
protected boolean resumedSession
protected boolean receivedChangeCipherSpec
protected boolean secure_renegotiation
protected boolean allowCertificateStatus
protected boolean expectSessionTicket
public TlsProtocol(java.io.InputStream input, java.io.OutputStream output, java.security.SecureRandom secureRandom)
protected abstract org.bouncycastle.crypto.tls.AbstractTlsContext getContext()
protected abstract TlsPeer getPeer()
protected void handleChangeCipherSpecMessage() throws java.io.IOException
java.io.IOException
protected abstract void handleHandshakeMessage(short type, byte[] buf) throws java.io.IOException
java.io.IOException
protected void handleWarningMessage(short description) throws java.io.IOException
java.io.IOException
protected void cleanupHandshake()
protected void completeHandshake() throws java.io.IOException
java.io.IOException
protected void processRecord(short protocol, byte[] buf, int offset, int len) throws java.io.IOException
java.io.IOException
protected int readApplicationData(byte[] buf, int offset, int len) throws java.io.IOException
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.java.io.IOException
- If something goes wrong during reading data.protected void safeReadRecord() throws java.io.IOException
java.io.IOException
protected void safeWriteRecord(short type, byte[] buf, int offset, int len) throws java.io.IOException
java.io.IOException
protected void writeData(byte[] buf, int offset, int len) throws java.io.IOException
buf
- The buffer with the data.offset
- The position in the buffer where the data is placed.len
- The length of the data.java.io.IOException
- If something goes wrong during sending.protected void writeHandshakeMessage(byte[] buf, int off, int len) throws java.io.IOException
java.io.IOException
public java.io.OutputStream getOutputStream()
public java.io.InputStream getInputStream()
protected void failWithError(short alertLevel, short alertDescription, java.lang.String message, java.lang.Exception cause) throws java.io.IOException
alertLevel
- See AlertLevel
for values.alertDescription
- See AlertDescription
for values.java.io.IOException
- If alert was fatal.protected void invalidateSession()
protected void processFinishedMessage(java.io.ByteArrayInputStream buf) throws java.io.IOException
java.io.IOException
protected void raiseAlert(short alertLevel, short alertDescription, java.lang.String message, java.lang.Exception cause) throws java.io.IOException
java.io.IOException
protected void raiseWarning(short alertDescription, java.lang.String message) throws java.io.IOException
java.io.IOException
protected void sendCertificateMessage(Certificate certificate) throws java.io.IOException
java.io.IOException
protected void sendChangeCipherSpecMessage() throws java.io.IOException
java.io.IOException
protected void sendFinishedMessage() throws java.io.IOException
java.io.IOException
protected void sendSupplementalDataMessage(java.util.Vector supplementalData) throws java.io.IOException
java.io.IOException
protected byte[] createVerifyData(boolean isServer)
public void close() throws java.io.IOException
java.io.IOException
- If something goes wrong during closing.protected void handleClose(boolean user_canceled) throws java.io.IOException
java.io.IOException
protected void flush() throws java.io.IOException
java.io.IOException
protected short processMaxFragmentLengthExtension(java.util.Hashtable clientExtensions, java.util.Hashtable serverExtensions, short alertDescription) throws java.io.IOException
java.io.IOException
protected static void assertEmpty(java.io.ByteArrayInputStream buf) throws java.io.IOException
buf
- The InputStream to check.java.io.IOException
- If 'buf' is not empty.protected static byte[] createRandomBlock(java.security.SecureRandom random)
protected static byte[] createRenegotiationInfo(byte[] renegotiated_connection) throws java.io.IOException
java.io.IOException
protected static void establishMasterSecret(TlsContext context, TlsKeyExchange keyExchange) throws java.io.IOException
java.io.IOException
protected static byte[] getCurrentPRFHash(TlsContext context, org.bouncycastle.crypto.tls.TlsHandshakeHash handshakeHash, byte[] sslSender)
protected static java.util.Hashtable readExtensions(java.io.ByteArrayInputStream input) throws java.io.IOException
java.io.IOException
protected static java.util.Vector readSupplementalDataMessage(java.io.ByteArrayInputStream input) throws java.io.IOException
java.io.IOException
protected static void writeExtensions(java.io.OutputStream output, java.util.Hashtable extensions) throws java.io.IOException
java.io.IOException
protected static void writeSupplementalData(java.io.OutputStream output, java.util.Vector supplementalData) throws java.io.IOException
java.io.IOException
protected static int getPRFAlgorithm(TlsContext context, int ciphersuite) throws java.io.IOException
java.io.IOException