public class TlsClientProtocol extends TlsProtocol
Modifier and Type | Field and Description |
---|---|
protected TlsAuthentication |
authentication |
protected CertificateRequest |
certificateRequest |
protected CertificateStatus |
certificateStatus |
protected java.util.Hashtable |
clientAgreements |
protected ClientHello |
clientHello |
protected TlsKeyExchange |
keyExchange |
protected TlsClient |
tlsClient |
ADS_MODE_0_N, ADS_MODE_0_N_FIRSTONLY, ADS_MODE_1_Nsub1, blocking, clientExtensions, connection_state, CS_CLIENT_CERTIFICATE, CS_CLIENT_CERTIFICATE_VERIFY, CS_CLIENT_END_OF_EARLY_DATA, CS_CLIENT_FINISHED, CS_CLIENT_HELLO, CS_CLIENT_HELLO_RETRY, CS_CLIENT_KEY_EXCHANGE, CS_CLIENT_SUPPLEMENTAL_DATA, CS_END, CS_SERVER_CERTIFICATE, CS_SERVER_CERTIFICATE_REQUEST, CS_SERVER_CERTIFICATE_STATUS, CS_SERVER_CERTIFICATE_VERIFY, CS_SERVER_ENCRYPTED_EXTENSIONS, CS_SERVER_FINISHED, CS_SERVER_HELLO, CS_SERVER_HELLO_DONE, CS_SERVER_HELLO_RETRY_REQUEST, CS_SERVER_KEY_EXCHANGE, CS_SERVER_SESSION_TICKET, CS_SERVER_SUPPLEMENTAL_DATA, CS_START, expectSessionTicket, EXT_RenegotiationInfo, EXT_SessionTicket, inputBuffers, outputBuffer, receivedChangeCipherSpec, resumedSession, retryCookie, retryGroup, selectedPSK13, serverExtensions, sessionMasterSecret, sessionParameters, tlsSession
Constructor and Description |
---|
TlsClientProtocol()
Constructor for non-blocking mode.
|
TlsClientProtocol(java.io.InputStream input,
java.io.OutputStream output)
Constructor for blocking mode.
|
Modifier and Type | Method and Description |
---|---|
protected void |
beginHandshake(boolean renegotiation) |
protected void |
cleanupHandshake() |
void |
connect(TlsClient tlsClient)
Initiates a TLS handshake in the role of client.
|
protected TlsContext |
getContext() |
protected TlsPeer |
getPeer() |
protected void |
handle13HandshakeMessage(short type,
HandshakeMessageInput buf) |
protected void |
handleHandshakeMessage(short type,
HandshakeMessageInput buf) |
protected void |
handleServerCertificate() |
protected void |
handleSupplementalData(java.util.Vector serverSupplementalData) |
protected void |
process13HelloRetryRequest(ServerHello helloRetryRequest) |
protected void |
process13ServerHello(ServerHello serverHello,
boolean afterHelloRetryRequest) |
protected void |
process13ServerHelloCoda(ServerHello serverHello,
boolean afterHelloRetryRequest) |
protected void |
processServerHello(ServerHello serverHello) |
protected void |
receive13CertificateRequest(java.io.ByteArrayInputStream buf,
boolean postHandshakeAuth) |
protected void |
receive13EncryptedExtensions(java.io.ByteArrayInputStream buf) |
protected void |
receive13NewSessionTicket(java.io.ByteArrayInputStream buf) |
protected void |
receive13ServerCertificate(java.io.ByteArrayInputStream buf) |
protected void |
receive13ServerCertificateVerify(java.io.ByteArrayInputStream buf) |
protected void |
receive13ServerFinished(java.io.ByteArrayInputStream buf) |
protected void |
receiveCertificateRequest(java.io.ByteArrayInputStream buf) |
protected void |
receiveNewSessionTicket(java.io.ByteArrayInputStream buf) |
protected ServerHello |
receiveServerHelloMessage(java.io.ByteArrayInputStream buf) |
protected void |
send13ClientHelloRetry() |
protected void |
sendCertificateVerifyMessage(DigitallySigned certificateVerify) |
protected void |
sendClientHello() |
protected void |
sendClientHelloMessage() |
protected void |
sendClientKeyExchange() |
protected void |
skip13CertificateRequest() |
protected void |
skip13ServerCertificate() |
applicationDataAvailable, applyMaxFragmentLengthExtension, assertEmpty, blockForHandshake, checkReceivedChangeCipherSpec, close, closeConnection, closeInput, completeHandshake, createRandomBlock, createRenegotiationInfo, establishMasterSecret, establishSession, flush, getAppDataSplitMode, getApplicationDataLimit, getAvailableInputBytes, getAvailableOutputBytes, getInputStream, getOutputStream, getRenegotiationPolicy, handleAlertMessage, handleAlertWarningMessage, handleChangeCipherSpecMessage, handleClose, handleException, handleFailure, handleRenegotiation, invalidateSession, isClosed, isConnected, isHandshaking, isLegacyConnectionState, isResumableHandshake, isTLSv13ConnectionState, offerInput, offerInput, previewInputRecord, previewOutputRecord, process13FinishedMessage, processFinishedMessage, processMaxFragmentLengthExtension, processRecord, raiseAlertFatal, raiseAlertWarning, readApplicationData, readExtensions, readExtensionsData, readExtensionsData13, readExtensionsDataClientHello, readInput, readOutput, readSupplementalDataMessage, receive13KeyUpdate, refuseRenegotiation, resumeHandshake, safePreviewRecordHeader, safeReadFullRecord, safeReadRecord, safeWriteRecord, send13CertificateMessage, send13CertificateVerifyMessage, send13FinishedMessage, send13KeyUpdate, sendCertificateMessage, sendChangeCipherSpec, sendChangeCipherSpecMessage, sendFinishedMessage, sendSupplementalDataMessage, setAppDataSplitMode, setResumableHandshake, writeApplicationData, writeExtensions, writeExtensions, writeExtensionsData, writeExtensionsData, writeExtensionsData, writePreSharedKeyExtension, writeSelectedExtensions, writeSupplementalData
protected TlsClient tlsClient
protected java.util.Hashtable clientAgreements
protected ClientHello clientHello
protected TlsKeyExchange keyExchange
protected TlsAuthentication authentication
protected CertificateStatus certificateStatus
protected CertificateRequest certificateRequest
public TlsClientProtocol()
TlsProtocol.offerInput(byte[])
to provide the received ciphertext,
then use TlsProtocol.readInput(byte[], int, int)
to read the corresponding cleartext.TlsProtocol.writeApplicationData(byte[], int, int)
to
provide the cleartext, then use TlsProtocol.readOutput(byte[], int, int)
to get the
corresponding ciphertext.public TlsClientProtocol(java.io.InputStream input, java.io.OutputStream output)
input
- The stream of data from the serveroutput
- The stream of data to the serverpublic void connect(TlsClient tlsClient) throws java.io.IOException
TlsPeer.notifyHandshakeComplete()
to
receive a callback when the handshake is complete.tlsClient
- The TlsClient
to use for the handshake.java.io.IOException
- If in blocking mode and handshake was not successful.protected void beginHandshake(boolean renegotiation) throws java.io.IOException
beginHandshake
in class TlsProtocol
java.io.IOException
protected void cleanupHandshake()
cleanupHandshake
in class TlsProtocol
protected TlsContext getContext()
getContext
in class TlsProtocol
protected TlsPeer getPeer()
getPeer
in class TlsProtocol
protected void handle13HandshakeMessage(short type, HandshakeMessageInput buf) throws java.io.IOException
java.io.IOException
protected void handleHandshakeMessage(short type, HandshakeMessageInput buf) throws java.io.IOException
handleHandshakeMessage
in class TlsProtocol
java.io.IOException
protected void handleServerCertificate() throws java.io.IOException
java.io.IOException
protected void handleSupplementalData(java.util.Vector serverSupplementalData) throws java.io.IOException
java.io.IOException
protected void process13HelloRetryRequest(ServerHello helloRetryRequest) throws java.io.IOException
java.io.IOException
protected void process13ServerHello(ServerHello serverHello, boolean afterHelloRetryRequest) throws java.io.IOException
java.io.IOException
protected void process13ServerHelloCoda(ServerHello serverHello, boolean afterHelloRetryRequest) throws java.io.IOException
java.io.IOException
protected void processServerHello(ServerHello serverHello) throws java.io.IOException
java.io.IOException
protected void receive13CertificateRequest(java.io.ByteArrayInputStream buf, boolean postHandshakeAuth) throws java.io.IOException
java.io.IOException
protected void receive13EncryptedExtensions(java.io.ByteArrayInputStream buf) throws java.io.IOException
java.io.IOException
protected void receive13NewSessionTicket(java.io.ByteArrayInputStream buf) throws java.io.IOException
java.io.IOException
protected void receive13ServerCertificate(java.io.ByteArrayInputStream buf) throws java.io.IOException
java.io.IOException
protected void receive13ServerCertificateVerify(java.io.ByteArrayInputStream buf) throws java.io.IOException
java.io.IOException
protected void receive13ServerFinished(java.io.ByteArrayInputStream buf) throws java.io.IOException
java.io.IOException
protected void receiveCertificateRequest(java.io.ByteArrayInputStream buf) throws java.io.IOException
java.io.IOException
protected void receiveNewSessionTicket(java.io.ByteArrayInputStream buf) throws java.io.IOException
java.io.IOException
protected ServerHello receiveServerHelloMessage(java.io.ByteArrayInputStream buf) throws java.io.IOException
java.io.IOException
protected void send13ClientHelloRetry() throws java.io.IOException
java.io.IOException
protected void sendCertificateVerifyMessage(DigitallySigned certificateVerify) throws java.io.IOException
java.io.IOException
protected void sendClientHello() throws java.io.IOException
java.io.IOException
protected void sendClientHelloMessage() throws java.io.IOException
java.io.IOException
protected void sendClientKeyExchange() throws java.io.IOException
java.io.IOException
protected void skip13CertificateRequest() throws java.io.IOException
java.io.IOException
protected void skip13ServerCertificate() throws java.io.IOException
java.io.IOException