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 TlsAuthenticationauthenticationprotected CertificateRequestcertificateRequestprotected CertificateStatuscertificateStatusprotected TlsKeyExchangekeyExchangeprotected byte[]selectedSessionIDprotected TlsClienttlsClient-
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 voidcleanupHandshake()voidconnect(TlsClient tlsClient)Initiates a TLS handshake in the role of client.
In blocking mode, this will not return until the handshake is complete.protected TlsContextgetContext()protected TlsPeergetPeer()protected voidhandleHandshakeMessage(short type, java.io.ByteArrayInputStream buf)protected voidhandleSupplementalData(java.util.Vector serverSupplementalData)protected voidreceiveNewSessionTicketMessage(java.io.ByteArrayInputStream buf)protected voidreceiveServerHelloMessage(java.io.ByteArrayInputStream buf)protected voidsendCertificateVerifyMessage(DigitallySigned certificateVerify)protected voidsendClientHelloMessage()protected voidsendClientKeyExchangeMessage()-
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- TheTlsClientto use for the handshake.- Throws:
java.io.IOException- If in blocking mode and handshake was not successful.
-
cleanupHandshake
protected void cleanupHandshake()
- Overrides:
cleanupHandshakein classTlsProtocol
-
getContext
protected TlsContext getContext()
- Specified by:
getContextin classTlsProtocol
-
getPeer
protected TlsPeer getPeer()
- Specified by:
getPeerin classTlsProtocol
-
handleHandshakeMessage
protected void handleHandshakeMessage(short type, java.io.ByteArrayInputStream buf) throws java.io.IOException- Specified by:
handleHandshakeMessagein 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
-
-