Package org.bouncycastle.crypto.tls
Class AbstractTlsServer
- java.lang.Object
-
- org.bouncycastle.crypto.tls.AbstractTlsPeer
-
- org.bouncycastle.crypto.tls.AbstractTlsServer
-
- Direct Known Subclasses:
DefaultTlsServer
,PSKTlsServer
,SRPTlsServer
public abstract class AbstractTlsServer extends AbstractTlsPeer implements TlsServer
-
-
Field Summary
Fields Modifier and Type Field Description protected TlsCipherFactory
cipherFactory
protected short[]
clientECPointFormats
protected java.util.Hashtable
clientExtensions
protected ProtocolVersion
clientVersion
protected TlsServerContext
context
protected boolean
eccCipherSuitesOffered
protected boolean
encryptThenMACOffered
protected short
maxFragmentLengthOffered
protected int[]
namedCurves
protected int[]
offeredCipherSuites
protected short[]
offeredCompressionMethods
protected int
selectedCipherSuite
protected short
selectedCompressionMethod
protected short[]
serverECPointFormats
protected java.util.Hashtable
serverExtensions
protected ProtocolVersion
serverVersion
protected java.util.Vector
supportedSignatureAlgorithms
protected boolean
truncatedHMacOffered
-
Constructor Summary
Constructors Constructor Description AbstractTlsServer()
AbstractTlsServer(TlsCipherFactory cipherFactory)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected boolean
allowEncryptThenMAC()
protected boolean
allowTruncatedHMac()
protected java.util.Hashtable
checkServerExtensions()
CertificateRequest
getCertificateRequest()
CertificateStatus
getCertificateStatus()
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.TlsCipher
getCipher()
protected abstract int[]
getCipherSuites()
TlsCompression
getCompression()
protected short[]
getCompressionMethods()
protected ProtocolVersion
getMaximumVersion()
protected ProtocolVersion
getMinimumVersion()
NewSessionTicket
getNewSessionTicket()
RFC 5077 3.3.int
getSelectedCipherSuite()
short
getSelectedCompressionMethod()
java.util.Hashtable
getServerExtensions()
java.util.Vector
getServerSupplementalData()
ProtocolVersion
getServerVersion()
void
init(TlsServerContext context)
void
notifyClientCertificate(Certificate clientCertificate)
Called by the protocol handler to report the client certificate, only ifTlsServer.getCertificateRequest()
returned non-null.void
notifyClientVersion(ProtocolVersion clientVersion)
void
notifyFallback(boolean isFallback)
void
notifyOfferedCipherSuites(int[] offeredCipherSuites)
void
notifyOfferedCompressionMethods(short[] offeredCompressionMethods)
void
processClientExtensions(java.util.Hashtable clientExtensions)
void
processClientSupplementalData(java.util.Vector clientSupplementalData)
protected boolean
supportsClientECCCapabilities(int[] namedCurves, short[] ecPointFormats)
-
Methods inherited from class org.bouncycastle.crypto.tls.AbstractTlsPeer
notifyAlertRaised, notifyAlertReceived, notifyHandshakeComplete, notifySecureRenegotiation, 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.crypto.tls.TlsPeer
notifyAlertRaised, notifyAlertReceived, notifyHandshakeComplete, notifySecureRenegotiation, shouldUseGMTUnixTime
-
Methods inherited from interface org.bouncycastle.crypto.tls.TlsServer
getCredentials, getKeyExchange
-
-
-
-
Field Detail
-
cipherFactory
protected TlsCipherFactory cipherFactory
-
context
protected TlsServerContext context
-
clientVersion
protected ProtocolVersion clientVersion
-
offeredCipherSuites
protected int[] offeredCipherSuites
-
offeredCompressionMethods
protected short[] offeredCompressionMethods
-
clientExtensions
protected java.util.Hashtable clientExtensions
-
encryptThenMACOffered
protected boolean encryptThenMACOffered
-
maxFragmentLengthOffered
protected short maxFragmentLengthOffered
-
truncatedHMacOffered
protected boolean truncatedHMacOffered
-
supportedSignatureAlgorithms
protected java.util.Vector supportedSignatureAlgorithms
-
eccCipherSuitesOffered
protected boolean eccCipherSuitesOffered
-
namedCurves
protected int[] namedCurves
-
clientECPointFormats
protected short[] clientECPointFormats
-
serverECPointFormats
protected short[] serverECPointFormats
-
serverVersion
protected ProtocolVersion serverVersion
-
selectedCipherSuite
protected int selectedCipherSuite
-
selectedCompressionMethod
protected short selectedCompressionMethod
-
serverExtensions
protected java.util.Hashtable serverExtensions
-
-
Constructor Detail
-
AbstractTlsServer
public AbstractTlsServer()
-
AbstractTlsServer
public AbstractTlsServer(TlsCipherFactory cipherFactory)
-
-
Method Detail
-
allowEncryptThenMAC
protected boolean allowEncryptThenMAC()
-
allowTruncatedHMac
protected boolean allowTruncatedHMac()
-
checkServerExtensions
protected java.util.Hashtable checkServerExtensions()
-
getCipherSuites
protected abstract int[] getCipherSuites()
-
getCompressionMethods
protected short[] getCompressionMethods()
-
getMaximumVersion
protected ProtocolVersion getMaximumVersion()
-
getMinimumVersion
protected ProtocolVersion getMinimumVersion()
-
supportsClientECCCapabilities
protected boolean supportsClientECCCapabilities(int[] namedCurves, short[] ecPointFormats)
-
init
public void init(TlsServerContext context)
-
notifyClientVersion
public void notifyClientVersion(ProtocolVersion clientVersion) throws java.io.IOException
- Specified by:
notifyClientVersion
in interfaceTlsServer
- Throws:
java.io.IOException
-
notifyFallback
public void notifyFallback(boolean isFallback) throws java.io.IOException
- Specified by:
notifyFallback
in interfaceTlsServer
- Throws:
java.io.IOException
-
notifyOfferedCipherSuites
public void notifyOfferedCipherSuites(int[] offeredCipherSuites) throws java.io.IOException
- Specified by:
notifyOfferedCipherSuites
in interfaceTlsServer
- Throws:
java.io.IOException
-
notifyOfferedCompressionMethods
public void notifyOfferedCompressionMethods(short[] offeredCompressionMethods) throws java.io.IOException
- Specified by:
notifyOfferedCompressionMethods
in interfaceTlsServer
- Throws:
java.io.IOException
-
processClientExtensions
public void processClientExtensions(java.util.Hashtable clientExtensions) throws java.io.IOException
- Specified by:
processClientExtensions
in interfaceTlsServer
- Throws:
java.io.IOException
-
getServerVersion
public ProtocolVersion getServerVersion() throws java.io.IOException
- Specified by:
getServerVersion
in interfaceTlsServer
- Throws:
java.io.IOException
-
getSelectedCipherSuite
public int getSelectedCipherSuite() throws java.io.IOException
- Specified by:
getSelectedCipherSuite
in interfaceTlsServer
- Throws:
java.io.IOException
-
getSelectedCompressionMethod
public short getSelectedCompressionMethod() throws java.io.IOException
- Specified by:
getSelectedCompressionMethod
in interfaceTlsServer
- Throws:
java.io.IOException
-
getServerExtensions
public java.util.Hashtable getServerExtensions() throws java.io.IOException
- Specified by:
getServerExtensions
in interfaceTlsServer
- Throws:
java.io.IOException
-
getServerSupplementalData
public java.util.Vector getServerSupplementalData() throws java.io.IOException
- Specified by:
getServerSupplementalData
in interfaceTlsServer
- Throws:
java.io.IOException
-
getCertificateStatus
public CertificateStatus getCertificateStatus() throws java.io.IOException
Description copied from interface:TlsServer
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. See RFC 3546 3.6. Certificate Status Request. If a non-nullCertificateStatus
is returned, it is sent to the client as a handshake message of type "certificate_status".- Specified by:
getCertificateStatus
in interfaceTlsServer
- Returns:
- A
CertificateStatus
to be sent to the client (or null for none). - Throws:
java.io.IOException
-
getCertificateRequest
public CertificateRequest getCertificateRequest() throws java.io.IOException
- Specified by:
getCertificateRequest
in interfaceTlsServer
- Throws:
java.io.IOException
-
processClientSupplementalData
public void processClientSupplementalData(java.util.Vector clientSupplementalData) throws java.io.IOException
- Specified by:
processClientSupplementalData
in interfaceTlsServer
- Throws:
java.io.IOException
-
notifyClientCertificate
public void notifyClientCertificate(Certificate clientCertificate) throws java.io.IOException
Description copied from interface:TlsServer
Called 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:
notifyClientCertificate
in interfaceTlsServer
- Parameters:
clientCertificate
- the effective client certificate (may be an empty chain).- Throws:
java.io.IOException
-
getCompression
public TlsCompression getCompression() throws java.io.IOException
- Specified by:
getCompression
in interfaceTlsPeer
- Throws:
java.io.IOException
-
getCipher
public TlsCipher getCipher() throws java.io.IOException
-
getNewSessionTicket
public NewSessionTicket getNewSessionTicket() throws java.io.IOException
Description copied from interface:TlsServer
RFC 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:
getNewSessionTicket
in interfaceTlsServer
- Returns:
- The ticket.
- Throws:
java.io.IOException
-
-