Class ReferenceCountedOpenSslEngine.DefaultOpenSslSession
java.lang.Object
io.netty.handler.ssl.ReferenceCountedOpenSslEngine.DefaultOpenSslSession
- All Implemented Interfaces:
OpenSslInternalSession, OpenSslSession, SSLSession
- Enclosing class:
ReferenceCountedOpenSslEngine
private final class ReferenceCountedOpenSslEngine.DefaultOpenSslSession
extends Object
implements OpenSslInternalSession
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate intprivate Stringprivate longprivate OpenSslSessionIdprivate longprivate Certificate[]private Certificate[]private Stringprivate final OpenSslSessionContextprivate booleanprivate X509Certificate[] -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanintlongbyte[]getId()longintintString[]voidhandshakeFinished(byte[] id, String cipher, String protocol, byte[] peerCertificate, byte[][] peerCertificateChain, long creationTime, long timeout) Finish the handshake and so init everything in theOpenSslInternalSessionthat should be accessible by the user.inthashCode()booleanReturns true if the peer has provided certificates during the handshake.private voidinitCerts(byte[][] chain, int startPos) voidbooleanisValid()Return the underlyingMapthat is used by the following methods:SSLSession.putValue(String, Object)SSLSession.removeValue(String)SSLSession.getValue(String)SSLSession.getValueNames()TheMapmust be thread-safe!private SSLSessionBindingEventprivate voidnotifyUnbound(Object value, String name) voidCalled on a handshake session before being exposed to aTrustManager.voidvoidremoveValue(String name) Return theOpenSslSessionIdthat can be used to identify this session.voidsetLastAccessedTime(long time) Set the last access time which will be returned bySSLSession.getLastAccessedTime().voidsetLocalCertificate(Certificate[] localCertificate) Set the local certificate chain that is used.voidsetSessionDetails(long creationTime, long lastAccessedTime, OpenSslSessionId sessionId, Map<String, Object> keyValueStorage) Set the details for the session which might come from a cache.toString()voidtryExpandApplicationBufferSize(int packetLengthDataOnly) Expand (or increase) the value returned bySSLSession.getApplicationBufferSize()if necessary.
-
Field Details
-
sessionContext
-
x509PeerCerts
-
peerCerts
-
valid
private boolean valid -
protocol
-
cipher
-
id
-
creationTime
private long creationTime -
lastAccessed
private long lastAccessed -
applicationBufferSize
private volatile int applicationBufferSize -
localCertificateChain
-
keyValueStorage
-
-
Constructor Details
-
DefaultOpenSslSession
DefaultOpenSslSession(OpenSslSessionContext sessionContext)
-
-
Method Details
-
newSSLSessionBindingEvent
-
prepareHandshake
public void prepareHandshake()Description copied from interface:OpenSslInternalSessionCalled on a handshake session before being exposed to aTrustManager. Session data must be cleared by this call.- Specified by:
prepareHandshakein interfaceOpenSslInternalSession
-
setSessionDetails
public void setSessionDetails(long creationTime, long lastAccessedTime, OpenSslSessionId sessionId, Map<String, Object> keyValueStorage) Description copied from interface:OpenSslInternalSessionSet the details for the session which might come from a cache.- Specified by:
setSessionDetailsin interfaceOpenSslInternalSession- Parameters:
creationTime- the time at which the session was created.lastAccessedTime- the time at which the session was last accessed via the session infrastructure (cache).sessionId- theOpenSslSessionIdkeyValueStorage- the key value store. SeeOpenSslInternalSession.keyValueStorage().
-
keyValueStorage
Description copied from interface:OpenSslInternalSessionReturn the underlyingMapthat is used by the following methods:SSLSession.putValue(String, Object)SSLSession.removeValue(String)SSLSession.getValue(String)-
SSLSession.getValueNames()
Mapmust be thread-safe!- Specified by:
keyValueStoragein interfaceOpenSslInternalSession- Returns:
- storage
-
sessionId
Description copied from interface:OpenSslInternalSessionReturn theOpenSslSessionIdthat can be used to identify this session.- Specified by:
sessionIdin interfaceOpenSslInternalSession
-
setLocalCertificate
Description copied from interface:OpenSslInternalSessionSet the local certificate chain that is used. It is not expected that this array will be changed at all and so its ok to not copy the array.- Specified by:
setLocalCertificatein interfaceOpenSslInternalSession
-
getId
public byte[] getId()- Specified by:
getIdin interfaceSSLSession
-
getSessionContext
- Specified by:
getSessionContextin interfaceOpenSslSession- Specified by:
getSessionContextin interfaceSSLSession
-
getCreationTime
public long getCreationTime()- Specified by:
getCreationTimein interfaceSSLSession
-
setLastAccessedTime
public void setLastAccessedTime(long time) Description copied from interface:OpenSslInternalSessionSet the last access time which will be returned bySSLSession.getLastAccessedTime().- Specified by:
setLastAccessedTimein interfaceOpenSslInternalSession- Parameters:
time- the time
-
getLastAccessedTime
public long getLastAccessedTime()- Specified by:
getLastAccessedTimein interfaceSSLSession
-
invalidate
public void invalidate()- Specified by:
invalidatein interfaceSSLSession
-
isValid
public boolean isValid()- Specified by:
isValidin interfaceSSLSession
-
putValue
- Specified by:
putValuein interfaceSSLSession
-
getValue
- Specified by:
getValuein interfaceSSLSession
-
removeValue
- Specified by:
removeValuein interfaceSSLSession
-
getValueNames
- Specified by:
getValueNamesin interfaceSSLSession
-
notifyUnbound
-
handshakeFinished
public void handshakeFinished(byte[] id, String cipher, String protocol, byte[] peerCertificate, byte[][] peerCertificateChain, long creationTime, long timeout) throws SSLException Finish the handshake and so init everything in theOpenSslInternalSessionthat should be accessible by the user.- Specified by:
handshakeFinishedin interfaceOpenSslInternalSession- Throws:
SSLException
-
initCerts
private void initCerts(byte[][] chain, int startPos) -
getPeerCertificates
- Specified by:
getPeerCertificatesin interfaceSSLSession- Throws:
SSLPeerUnverifiedException
-
hasPeerCertificates
public boolean hasPeerCertificates()Description copied from interface:OpenSslSessionReturns true if the peer has provided certificates during the handshake.This method is similar to
SSLSession.getPeerCertificates()but it does not throw aSSLPeerUnverifiedExceptionif no certs are provided, making it more efficient to check if a mTLS connection is used.- Specified by:
hasPeerCertificatesin interfaceOpenSslSession- Returns:
- true if peer certificates are available.
-
getLocalCertificates
- Specified by:
getLocalCertificatesin interfaceSSLSession
-
getPeerCertificateChain
- Specified by:
getPeerCertificateChainin interfaceSSLSession- Throws:
SSLPeerUnverifiedException
-
getPeerPrincipal
- Specified by:
getPeerPrincipalin interfaceSSLSession- Throws:
SSLPeerUnverifiedException
-
getLocalPrincipal
- Specified by:
getLocalPrincipalin interfaceSSLSession
-
getCipherSuite
- Specified by:
getCipherSuitein interfaceSSLSession
-
getProtocol
- Specified by:
getProtocolin interfaceSSLSession
-
getPeerHost
- Specified by:
getPeerHostin interfaceSSLSession
-
getPeerPort
public int getPeerPort()- Specified by:
getPeerPortin interfaceSSLSession
-
getPacketBufferSize
public int getPacketBufferSize()- Specified by:
getPacketBufferSizein interfaceSSLSession
-
getApplicationBufferSize
public int getApplicationBufferSize()- Specified by:
getApplicationBufferSizein interfaceSSLSession
-
tryExpandApplicationBufferSize
public void tryExpandApplicationBufferSize(int packetLengthDataOnly) Description copied from interface:OpenSslInternalSessionExpand (or increase) the value returned bySSLSession.getApplicationBufferSize()if necessary.This is only called in a synchronized block, so no need to use atomic operations.
- Specified by:
tryExpandApplicationBufferSizein interfaceOpenSslInternalSession- Parameters:
packetLengthDataOnly- The packet size which exceeds the currentSSLSession.getApplicationBufferSize().
-
toString
-
hashCode
-
equals
-