Package org.bouncycastle.tls
Class AbstractTlsServer
- java.lang.Object
-
- org.bouncycastle.tls.AbstractTlsPeer
-
- org.bouncycastle.tls.AbstractTlsServer
-
- Direct Known Subclasses:
DefaultTlsServer,PSKTlsServer,SRPTlsServer
public abstract class AbstractTlsServer extends AbstractTlsPeer implements TlsServer
Base class for a TLS server.
-
-
Field Summary
Fields Modifier and Type Field Description protected CertificateStatusRequestcertificateStatusRequestprotected int[]cipherSuitesprotected java.util.HashtableclientExtensionsprotected java.util.VectorclientProtocolNamesprotected booleanclientSentECPointFormatsprotected TlsServerContextcontextprotected booleanencryptThenMACOfferedprotected shortmaxFragmentLengthOfferedprotected int[]offeredCipherSuitesprotected ProtocolVersion[]protocolVersionsprotected intselectedCipherSuiteprotected ProtocolNameselectedProtocolNameprotected java.util.HashtableserverExtensionsprotected java.util.VectorstatusRequestV2protected booleantruncatedHMacOfferedprotected java.util.VectortrustedCAKeys
-
Constructor Summary
Constructors Constructor Description AbstractTlsServer(TlsCrypto crypto)
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected booleanallowCertificateStatus()protected booleanallowEncryptThenMAC()protected booleanallowMultiCertStatus()protected booleanallowTruncatedHMac()protected booleanallowTrustedCAIndication()protected java.util.HashtablecheckServerExtensions()Deprecated.Use 'serverExtensions' directly, it is now never nullCertificateRequestgetCertificateRequest()CertificateStatusgetCertificateStatus()This method will be called (only) if the server included an extension of type "status_request" with empty "extension_data" in the extended server hello.int[]getCipherSuites()TlsDHConfiggetDHConfig()TlsECConfiggetECDHConfig()protected intgetMaximumNegotiableCurveBits()protected intgetMaximumNegotiableFiniteFieldBits()byte[]getNewSessionID()NewSessionTicketgetNewSessionTicket()RFC 5077 3.3.protected java.util.VectorgetProtocolNames()ProtocolVersion[]getProtocolVersions()TlsPSKIdentityManagergetPSKIdentityManager()intgetSelectedCipherSuite()java.util.HashtablegetServerExtensions()voidgetServerExtensionsForConnection(java.util.Hashtable serverExtensions)java.util.VectorgetServerSupplementalData()ProtocolVersiongetServerVersion()TlsSessiongetSessionToResume(byte[] sessionID)Return the specified session, if available.TlsSRPLoginParametersgetSRPLoginParameters()int[]getSupportedGroups()voidinit(TlsServerContext context)protected booleanisSelectableCipherSuite(int cipherSuite, int availCurveBits, int availFiniteFieldBits, java.util.Vector sigAlgs)voidnotifyClientCertificate(Certificate clientCertificate)Called by the protocol handler to report the client certificate, only ifTlsServer.getCertificateRequest()returned non-null.voidnotifyClientVersion(ProtocolVersion clientVersion)voidnotifyFallback(boolean isFallback)voidnotifyHandshakeBeginning()Notifies the peer that a new handshake is about to begin.voidnotifyOfferedCipherSuites(int[] offeredCipherSuites)voidnotifySession(TlsSession session)protected booleanpreferLocalCipherSuites()voidprocessClientExtensions(java.util.Hashtable clientExtensions)voidprocessClientSupplementalData(java.util.Vector clientSupplementalData)protected booleanselectCipherSuite(int cipherSuite)protected intselectDH(int minimumFiniteFieldBits)protected intselectDHDefault(int minimumFiniteFieldBits)protected intselectECDH(int minimumCurveBits)protected intselectECDHDefault(int minimumCurveBits)protected ProtocolNameselectProtocolName()protected ProtocolNameselectProtocolName(java.util.Vector clientProtocolNames, java.util.Vector serverProtocolNames)protected booleanshouldSelectProtocolNameEarly()-
Methods inherited from class org.bouncycastle.tls.AbstractTlsPeer
allowLegacyResumption, cancel, getCrypto, getHandshakeTimeoutMillis, getHeartbeat, getHeartbeatPolicy, getKeyExchangeFactory, getRenegotiationPolicy, getSupportedCipherSuites, getSupportedVersions, notifyAlertRaised, notifyAlertReceived, notifyCloseHandle, notifyHandshakeComplete, notifySecureRenegotiation, requiresCloseNotify, requiresExtendedMasterSecret, shouldCheckSigAlgOfPeerCerts, shouldUseExtendedMasterSecret, shouldUseExtendedPadding, shouldUseGMTUnixTime
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.bouncycastle.tls.TlsPeer
allowLegacyResumption, cancel, getCrypto, getHandshakeTimeoutMillis, getHeartbeat, getHeartbeatPolicy, getKeyExchangeFactory, getRenegotiationPolicy, notifyAlertRaised, notifyAlertReceived, notifyCloseHandle, notifyHandshakeComplete, notifySecureRenegotiation, requiresCloseNotify, requiresExtendedMasterSecret, shouldCheckSigAlgOfPeerCerts, shouldUseExtendedMasterSecret, shouldUseExtendedPadding, shouldUseGMTUnixTime
-
Methods inherited from interface org.bouncycastle.tls.TlsServer
getCredentials
-
-
-
-
Field Detail
-
context
protected TlsServerContext context
-
protocolVersions
protected ProtocolVersion[] protocolVersions
-
cipherSuites
protected int[] cipherSuites
-
offeredCipherSuites
protected int[] offeredCipherSuites
-
clientExtensions
protected java.util.Hashtable clientExtensions
-
encryptThenMACOffered
protected boolean encryptThenMACOffered
-
maxFragmentLengthOffered
protected short maxFragmentLengthOffered
-
truncatedHMacOffered
protected boolean truncatedHMacOffered
-
clientSentECPointFormats
protected boolean clientSentECPointFormats
-
certificateStatusRequest
protected CertificateStatusRequest certificateStatusRequest
-
statusRequestV2
protected java.util.Vector statusRequestV2
-
trustedCAKeys
protected java.util.Vector trustedCAKeys
-
selectedCipherSuite
protected int selectedCipherSuite
-
clientProtocolNames
protected java.util.Vector clientProtocolNames
-
selectedProtocolName
protected ProtocolName selectedProtocolName
-
serverExtensions
protected final java.util.Hashtable serverExtensions
-
-
Constructor Detail
-
AbstractTlsServer
public AbstractTlsServer(TlsCrypto crypto)
-
-
Method Detail
-
allowCertificateStatus
protected boolean allowCertificateStatus()
-
allowEncryptThenMAC
protected boolean allowEncryptThenMAC()
-
allowMultiCertStatus
protected boolean allowMultiCertStatus()
-
allowTruncatedHMac
protected boolean allowTruncatedHMac()
-
allowTrustedCAIndication
protected boolean allowTrustedCAIndication()
-
checkServerExtensions
protected java.util.Hashtable checkServerExtensions()
Deprecated.Use 'serverExtensions' directly, it is now never null
-
getMaximumNegotiableCurveBits
protected int getMaximumNegotiableCurveBits()
-
getMaximumNegotiableFiniteFieldBits
protected int getMaximumNegotiableFiniteFieldBits()
-
getProtocolNames
protected java.util.Vector getProtocolNames()
-
isSelectableCipherSuite
protected boolean isSelectableCipherSuite(int cipherSuite, int availCurveBits, int availFiniteFieldBits, java.util.Vector sigAlgs)
-
preferLocalCipherSuites
protected boolean preferLocalCipherSuites()
-
selectCipherSuite
protected boolean selectCipherSuite(int cipherSuite) throws java.io.IOException- Throws:
java.io.IOException
-
selectDH
protected int selectDH(int minimumFiniteFieldBits)
-
selectDHDefault
protected int selectDHDefault(int minimumFiniteFieldBits)
-
selectECDH
protected int selectECDH(int minimumCurveBits)
-
selectECDHDefault
protected int selectECDHDefault(int minimumCurveBits)
-
selectProtocolName
protected ProtocolName selectProtocolName() throws java.io.IOException
- Throws:
java.io.IOException
-
selectProtocolName
protected ProtocolName selectProtocolName(java.util.Vector clientProtocolNames, java.util.Vector serverProtocolNames)
-
shouldSelectProtocolNameEarly
protected boolean shouldSelectProtocolNameEarly()
-
init
public void init(TlsServerContext context)
-
getProtocolVersions
public ProtocolVersion[] getProtocolVersions()
- Specified by:
getProtocolVersionsin interfaceTlsPeer
-
getCipherSuites
public int[] getCipherSuites()
- Specified by:
getCipherSuitesin interfaceTlsPeer
-
notifyHandshakeBeginning
public void notifyHandshakeBeginning() throws java.io.IOExceptionDescription copied from interface:TlsPeerNotifies the peer that a new handshake is about to begin.- Specified by:
notifyHandshakeBeginningin interfaceTlsPeer- Overrides:
notifyHandshakeBeginningin classAbstractTlsPeer- Throws:
java.io.IOException
-
getSessionToResume
public TlsSession getSessionToResume(byte[] sessionID)
Description copied from interface:TlsServerReturn the specified session, if available. Note that the peer's certificate chain for the session (if any) may need to be periodically revalidated.- Specified by:
getSessionToResumein interfaceTlsServer- Parameters:
sessionID- the ID of the session to resume.- Returns:
- A
TlsSessionwith the specified session ID, or null. - See Also:
SessionParameters.getPeerCertificate()
-
getNewSessionID
public byte[] getNewSessionID()
- Specified by:
getNewSessionIDin interfaceTlsServer
-
notifySession
public void notifySession(TlsSession session)
- Specified by:
notifySessionin interfaceTlsServer
-
notifyClientVersion
public void notifyClientVersion(ProtocolVersion clientVersion) throws java.io.IOException
- Specified by:
notifyClientVersionin interfaceTlsServer- Throws:
java.io.IOException
-
notifyFallback
public void notifyFallback(boolean isFallback) throws java.io.IOException- Specified by:
notifyFallbackin interfaceTlsServer- Throws:
java.io.IOException
-
notifyOfferedCipherSuites
public void notifyOfferedCipherSuites(int[] offeredCipherSuites) throws java.io.IOException- Specified by:
notifyOfferedCipherSuitesin interfaceTlsServer- Throws:
java.io.IOException
-
processClientExtensions
public void processClientExtensions(java.util.Hashtable clientExtensions) throws java.io.IOException- Specified by:
processClientExtensionsin interfaceTlsServer- Throws:
java.io.IOException
-
getServerVersion
public ProtocolVersion getServerVersion() throws java.io.IOException
- Specified by:
getServerVersionin interfaceTlsServer- Throws:
java.io.IOException
-
getSupportedGroups
public int[] getSupportedGroups() throws java.io.IOException- Specified by:
getSupportedGroupsin interfaceTlsServer- Throws:
java.io.IOException
-
getSelectedCipherSuite
public int getSelectedCipherSuite() throws java.io.IOException- Specified by:
getSelectedCipherSuitein interfaceTlsServer- Throws:
java.io.IOException
-
getServerExtensions
public java.util.Hashtable getServerExtensions() throws java.io.IOException- Specified by:
getServerExtensionsin interfaceTlsServer- Throws:
java.io.IOException
-
getServerExtensionsForConnection
public void getServerExtensionsForConnection(java.util.Hashtable serverExtensions) throws java.io.IOException- Specified by:
getServerExtensionsForConnectionin interfaceTlsServer- Throws:
java.io.IOException
-
getServerSupplementalData
public java.util.Vector getServerSupplementalData() throws java.io.IOException- Specified by:
getServerSupplementalDatain interfaceTlsServer- Throws:
java.io.IOException
-
getCertificateStatus
public CertificateStatus getCertificateStatus() throws java.io.IOException
Description copied from interface:TlsServerThis method will be called (only) if the server included an extension of type "status_request" with empty "extension_data" in the extended server hello. See RFC 3546 3.6. Certificate Status Request. If a non-nullCertificateStatusis returned, it is sent to the client as a handshake message of type "certificate_status".- Specified by:
getCertificateStatusin interfaceTlsServer- Returns:
- A
CertificateStatusto be sent to the client (or null for none). - Throws:
java.io.IOException
-
getCertificateRequest
public CertificateRequest getCertificateRequest() throws java.io.IOException
- Specified by:
getCertificateRequestin interfaceTlsServer- Throws:
java.io.IOException
-
getPSKIdentityManager
public TlsPSKIdentityManager getPSKIdentityManager() throws java.io.IOException
- Specified by:
getPSKIdentityManagerin interfaceTlsServer- Throws:
java.io.IOException
-
getSRPLoginParameters
public TlsSRPLoginParameters getSRPLoginParameters() throws java.io.IOException
- Specified by:
getSRPLoginParametersin interfaceTlsServer- Throws:
java.io.IOException
-
getDHConfig
public TlsDHConfig getDHConfig() throws java.io.IOException
- Specified by:
getDHConfigin interfaceTlsServer- Throws:
java.io.IOException
-
getECDHConfig
public TlsECConfig getECDHConfig() throws java.io.IOException
- Specified by:
getECDHConfigin interfaceTlsServer- Throws:
java.io.IOException
-
processClientSupplementalData
public void processClientSupplementalData(java.util.Vector clientSupplementalData) throws java.io.IOException- Specified by:
processClientSupplementalDatain interfaceTlsServer- Throws:
java.io.IOException
-
notifyClientCertificate
public void notifyClientCertificate(Certificate clientCertificate) throws java.io.IOException
Description copied from interface:TlsServerCalled by the protocol handler to report the client certificate, only ifTlsServer.getCertificateRequest()returned non-null. Note: this method is responsible for certificate verification and validation.- Specified by:
notifyClientCertificatein interfaceTlsServer- Parameters:
clientCertificate- the effective client certificate (may be an empty chain).- Throws:
java.io.IOException
-
getNewSessionTicket
public NewSessionTicket getNewSessionTicket() throws java.io.IOException
Description copied from interface:TlsServerRFC 5077 3.3. NewSessionTicket Handshake Message.This method will be called (only) if a NewSessionTicket extension was sent by the server. See RFC 5077 4. Recommended Ticket Construction for recommended format and protection.
- Specified by:
getNewSessionTicketin interfaceTlsServer- Returns:
- The ticket.
- Throws:
java.io.IOException
-
-