Package org.bouncycastle.crypto.tls
Class TlsClientProtocol
- java.lang.Object
-
- org.bouncycastle.crypto.tls.TlsProtocol
-
- org.bouncycastle.crypto.tls.TlsClientProtocol
-
public class TlsClientProtocol extends TlsProtocol
-
-
Field Summary
Fields Modifier and Type Field Description protected TlsAuthentication
authentication
protected CertificateRequest
certificateRequest
protected CertificateStatus
certificateStatus
protected TlsKeyExchange
keyExchange
protected byte[]
selectedSessionID
protected TlsClient
tlsClient
-
Fields inherited from class org.bouncycastle.crypto.tls.TlsProtocol
ADS_MODE_0_N, ADS_MODE_0_N_FIRSTONLY, ADS_MODE_1_Nsub1, allowCertificateStatus, blocking, clientExtensions, connection_state, CS_CERTIFICATE_REQUEST, CS_CERTIFICATE_STATUS, CS_CERTIFICATE_VERIFY, CS_CLIENT_CERTIFICATE, CS_CLIENT_FINISHED, CS_CLIENT_HELLO, CS_CLIENT_KEY_EXCHANGE, CS_CLIENT_SUPPLEMENTAL_DATA, CS_END, CS_SERVER_CERTIFICATE, CS_SERVER_FINISHED, CS_SERVER_HELLO, CS_SERVER_HELLO_DONE, CS_SERVER_KEY_EXCHANGE, CS_SERVER_SESSION_TICKET, CS_SERVER_SUPPLEMENTAL_DATA, CS_START, expectSessionTicket, EXT_RenegotiationInfo, EXT_SessionTicket, inputBuffers, offeredCipherSuites, offeredCompressionMethods, outputBuffer, peerCertificate, receivedChangeCipherSpec, resumedSession, secure_renegotiation, secureRandom, securityParameters, serverExtensions, sessionParameters, tlsSession
-
-
Constructor Summary
Constructors Constructor Description TlsClientProtocol(java.io.InputStream input, java.io.OutputStream output, java.security.SecureRandom secureRandom)
Constructor for blocking mode.TlsClientProtocol(java.security.SecureRandom secureRandom)
Constructor for non-blocking mode.
When data is received, useTlsProtocol.offerInput(byte[])
to provide the received ciphertext, then useTlsProtocol.readInput(byte[], int, int)
to read the corresponding cleartext.
Similarly, when data needs to be sent, useTlsProtocol.offerOutput(byte[], int, int)
to provide the cleartext, then useTlsProtocol.readOutput(byte[], int, int)
to get the corresponding ciphertext.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
cleanupHandshake()
void
connect(TlsClient tlsClient)
Initiates a TLS handshake in the role of client.
In blocking mode, this will not return until the handshake is complete.protected TlsContext
getContext()
protected TlsPeer
getPeer()
protected void
handleHandshakeMessage(short type, java.io.ByteArrayInputStream buf)
protected void
handleSupplementalData(java.util.Vector serverSupplementalData)
protected void
receiveNewSessionTicketMessage(java.io.ByteArrayInputStream buf)
protected void
receiveServerHelloMessage(java.io.ByteArrayInputStream buf)
protected void
sendCertificateVerifyMessage(DigitallySigned certificateVerify)
protected void
sendClientHelloMessage()
protected void
sendClientKeyExchangeMessage()
-
Methods inherited from class org.bouncycastle.crypto.tls.TlsProtocol
applicationDataAvailable, applyMaxFragmentLengthExtension, assertEmpty, blockForHandshake, checkReceivedChangeCipherSpec, close, closeInput, completeHandshake, createRandomBlock, createRenegotiationInfo, createVerifyData, establishMasterSecret, flush, getAvailableInputBytes, getAvailableOutputBytes, getCurrentPRFHash, getInputStream, getOutputStream, getPRFAlgorithm, handleAlertMessage, handleAlertWarningMessage, handleChangeCipherSpecMessage, handleClose, handleException, handleFailure, invalidateSession, isClosed, offerInput, offerOutput, processFinishedMessage, processMaxFragmentLengthExtension, processRecord, raiseAlertFatal, raiseAlertWarning, readApplicationData, readExtensions, readInput, readOutput, readSupplementalDataMessage, refuseRenegotiation, safeCheckRecordHeader, safeReadRecord, safeWriteRecord, sendCertificateMessage, sendChangeCipherSpecMessage, sendFinishedMessage, sendSupplementalDataMessage, setAppDataSplitMode, writeData, writeExtensions, writeHandshakeMessage, writeSelectedExtensions, writeSupplementalData
-
-
-
-
Field Detail
-
tlsClient
protected TlsClient tlsClient
-
selectedSessionID
protected byte[] selectedSessionID
-
keyExchange
protected TlsKeyExchange keyExchange
-
authentication
protected TlsAuthentication authentication
-
certificateStatus
protected CertificateStatus certificateStatus
-
certificateRequest
protected CertificateRequest certificateRequest
-
-
Constructor Detail
-
TlsClientProtocol
public TlsClientProtocol(java.io.InputStream input, java.io.OutputStream output, java.security.SecureRandom secureRandom)
Constructor for blocking mode.- Parameters:
input
- The stream of data from the serveroutput
- The stream of data to the serversecureRandom
- Random number generator for various cryptographic functions
-
TlsClientProtocol
public TlsClientProtocol(java.security.SecureRandom secureRandom)
Constructor for non-blocking mode.
When data is received, useTlsProtocol.offerInput(byte[])
to provide the received ciphertext, then useTlsProtocol.readInput(byte[], int, int)
to read the corresponding cleartext.
Similarly, when data needs to be sent, useTlsProtocol.offerOutput(byte[], int, int)
to provide the cleartext, then useTlsProtocol.readOutput(byte[], int, int)
to get the corresponding ciphertext.- Parameters:
secureRandom
- Random number generator for various cryptographic functions
-
-
Method Detail
-
connect
public void connect(TlsClient tlsClient) throws java.io.IOException
Initiates a TLS handshake in the role of client.
In blocking mode, this will not return until the handshake is complete. In non-blocking mode, useTlsPeer.notifyHandshakeComplete()
to receive a callback when the handshake is complete.- Parameters:
tlsClient
- TheTlsClient
to use for the handshake.- Throws:
java.io.IOException
- If in blocking mode and handshake was not successful.
-
cleanupHandshake
protected void cleanupHandshake()
- Overrides:
cleanupHandshake
in classTlsProtocol
-
getContext
protected TlsContext getContext()
- Specified by:
getContext
in classTlsProtocol
-
getPeer
protected TlsPeer getPeer()
- Specified by:
getPeer
in classTlsProtocol
-
handleHandshakeMessage
protected void handleHandshakeMessage(short type, java.io.ByteArrayInputStream buf) throws java.io.IOException
- Specified by:
handleHandshakeMessage
in classTlsProtocol
- Throws:
java.io.IOException
-
handleSupplementalData
protected void handleSupplementalData(java.util.Vector serverSupplementalData) throws java.io.IOException
- Throws:
java.io.IOException
-
receiveNewSessionTicketMessage
protected void receiveNewSessionTicketMessage(java.io.ByteArrayInputStream buf) throws java.io.IOException
- Throws:
java.io.IOException
-
receiveServerHelloMessage
protected void receiveServerHelloMessage(java.io.ByteArrayInputStream buf) throws java.io.IOException
- Throws:
java.io.IOException
-
sendCertificateVerifyMessage
protected void sendCertificateVerifyMessage(DigitallySigned certificateVerify) throws java.io.IOException
- Throws:
java.io.IOException
-
sendClientHelloMessage
protected void sendClientHelloMessage() throws java.io.IOException
- Throws:
java.io.IOException
-
sendClientKeyExchangeMessage
protected void sendClientKeyExchangeMessage() throws java.io.IOException
- Throws:
java.io.IOException
-
-