public class TlsClientProtocol extends TlsProtocol
Modifier and Type | Field and Description |
---|---|
protected TlsAuthentication |
authentication |
protected CertificateRequest |
certificateRequest |
protected TlsKeyExchange |
keyExchange |
protected byte[] |
selectedSessionID |
protected TlsClient |
tlsClient |
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 and Description |
---|
TlsClientProtocol(InputStream input,
OutputStream output,
com.joshvm.java.security.SecureRandom secureRandom)
Constructor for blocking mode.
|
TlsClientProtocol(com.joshvm.java.security.SecureRandom secureRandom)
Constructor for non-blocking mode.
When data is received, use TlsProtocol.offerInput(byte[]) to provide the received ciphertext,
then use TlsProtocol.readInput(byte[], int, int) to read the corresponding cleartext.Similarly, when data needs to be sent, use TlsProtocol.offerOutput(byte[], int, int) to provide
the cleartext, then use TlsProtocol.readOutput(byte[], int, int) to get the corresponding
ciphertext. |
Modifier and Type | Method and 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,
ByteArrayInputStream buf) |
protected void |
handleSupplementalData(Vector serverSupplementalData) |
protected void |
receiveNewSessionTicketMessage(ByteArrayInputStream buf) |
protected void |
receiveServerHelloMessage(ByteArrayInputStream buf) |
protected void |
sendCertificateVerifyMessage(DigitallySigned certificateVerify) |
protected void |
sendClientHelloMessage() |
protected void |
sendClientKeyExchangeMessage() |
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
protected TlsClient tlsClient
protected byte[] selectedSessionID
protected TlsKeyExchange keyExchange
protected TlsAuthentication authentication
protected CertificateRequest certificateRequest
public TlsClientProtocol(InputStream input, OutputStream output, com.joshvm.java.security.SecureRandom secureRandom)
input
- The stream of data from the serveroutput
- The stream of data to the serversecureRandom
- Random number generator for various cryptographic functionspublic TlsClientProtocol(com.joshvm.java.security.SecureRandom secureRandom)
TlsProtocol.offerInput(byte[])
to provide the received ciphertext,
then use TlsProtocol.readInput(byte[], int, int)
to read the corresponding cleartext.TlsProtocol.offerOutput(byte[], int, int)
to provide
the cleartext, then use TlsProtocol.readOutput(byte[], int, int)
to get the corresponding
ciphertext.secureRandom
- Random number generator for various cryptographic functionspublic void connect(TlsClient tlsClient) throws IOException
TlsPeer.notifyHandshakeComplete()
to
receive a callback when the handshake is complete.tlsClient
- The TlsClient
to use for the handshake.IOException
- If in blocking mode and handshake was not successful.protected void cleanupHandshake()
cleanupHandshake
in class TlsProtocol
protected TlsContext getContext()
getContext
in class TlsProtocol
protected TlsPeer getPeer()
getPeer
in class TlsProtocol
protected void handleHandshakeMessage(short type, ByteArrayInputStream buf) throws IOException
handleHandshakeMessage
in class TlsProtocol
IOException
protected void handleSupplementalData(Vector serverSupplementalData) throws IOException
IOException
protected void receiveNewSessionTicketMessage(ByteArrayInputStream buf) throws IOException
IOException
protected void receiveServerHelloMessage(ByteArrayInputStream buf) throws IOException
IOException
protected void sendCertificateVerifyMessage(DigitallySigned certificateVerify) throws IOException
IOException
protected void sendClientHelloMessage() throws IOException
IOException
protected void sendClientKeyExchangeMessage() throws IOException
IOException