Package io.netty.handler.ssl
Class ReferenceCountedOpenSslEngine.DefaultOpenSslSession
- java.lang.Object
-
- io.netty.handler.ssl.ReferenceCountedOpenSslEngine.DefaultOpenSslSession
-
- All Implemented Interfaces:
OpenSslInternalSession
,OpenSslSession
,javax.net.ssl.SSLSession
- Enclosing class:
- ReferenceCountedOpenSslEngine
private final class ReferenceCountedOpenSslEngine.DefaultOpenSslSession extends java.lang.Object implements OpenSslInternalSession
-
-
Field Summary
Fields Modifier and Type Field Description private int
applicationBufferSize
private java.lang.String
cipher
private long
creationTime
private OpenSslSessionId
id
private java.util.Map<java.lang.String,java.lang.Object>
keyValueStorage
private long
lastAccessed
private java.security.cert.Certificate[]
localCertificateChain
private java.security.cert.Certificate[]
peerCerts
private java.lang.String
protocol
private OpenSslSessionContext
sessionContext
private boolean
valid
private javax.security.cert.X509Certificate[]
x509PeerCerts
-
Constructor Summary
Constructors Constructor Description DefaultOpenSslSession(OpenSslSessionContext sessionContext)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(java.lang.Object o)
int
getApplicationBufferSize()
java.lang.String
getCipherSuite()
long
getCreationTime()
byte[]
getId()
long
getLastAccessedTime()
java.security.cert.Certificate[]
getLocalCertificates()
java.security.Principal
getLocalPrincipal()
int
getPacketBufferSize()
javax.security.cert.X509Certificate[]
getPeerCertificateChain()
java.security.cert.Certificate[]
getPeerCertificates()
java.lang.String
getPeerHost()
int
getPeerPort()
java.security.Principal
getPeerPrincipal()
java.lang.String
getProtocol()
OpenSslSessionContext
getSessionContext()
java.lang.Object
getValue(java.lang.String name)
java.lang.String[]
getValueNames()
void
handshakeFinished(byte[] id, java.lang.String cipher, java.lang.String protocol, byte[] peerCertificate, byte[][] peerCertificateChain, long creationTime, long timeout)
Finish the handshake and so init everything in theOpenSslInternalSession
that should be accessible by the user.int
hashCode()
boolean
hasPeerCertificates()
Returns true if the peer has provided certificates during the handshake.private void
initCerts(byte[][] chain, int startPos)
void
invalidate()
boolean
isValid()
java.util.Map<java.lang.String,java.lang.Object>
keyValueStorage()
Return the underlyingMap
that is used by the following methods:SSLSession.putValue(String, Object)
SSLSession.removeValue(String)
SSLSession.getValue(String)
SSLSession.getValueNames()
TheMap
must be thread-safe!private javax.net.ssl.SSLSessionBindingEvent
newSSLSessionBindingEvent(java.lang.String name)
private void
notifyUnbound(java.lang.Object value, java.lang.String name)
void
prepareHandshake()
Called on a handshake session before being exposed to aTrustManager
.void
putValue(java.lang.String name, java.lang.Object value)
void
removeValue(java.lang.String name)
OpenSslSessionId
sessionId()
Return theOpenSslSessionId
that can be used to identify this session.void
setLastAccessedTime(long time)
Set the last access time which will be returned bySSLSession.getLastAccessedTime()
.void
setLocalCertificate(java.security.cert.Certificate[] localCertificate)
Set the local certificate chain that is used.void
setSessionDetails(long creationTime, long lastAccessedTime, OpenSslSessionId sessionId, java.util.Map<java.lang.String,java.lang.Object> keyValueStorage)
Set the details for the session which might come from a cache.java.lang.String
toString()
void
tryExpandApplicationBufferSize(int packetLengthDataOnly)
Expand (or increase) the value returned bySSLSession.getApplicationBufferSize()
if necessary.
-
-
-
Field Detail
-
sessionContext
private final OpenSslSessionContext sessionContext
-
x509PeerCerts
private javax.security.cert.X509Certificate[] x509PeerCerts
-
peerCerts
private java.security.cert.Certificate[] peerCerts
-
valid
private boolean valid
-
protocol
private java.lang.String protocol
-
cipher
private java.lang.String cipher
-
id
private OpenSslSessionId id
-
creationTime
private long creationTime
-
lastAccessed
private long lastAccessed
-
applicationBufferSize
private volatile int applicationBufferSize
-
localCertificateChain
private volatile java.security.cert.Certificate[] localCertificateChain
-
keyValueStorage
private volatile java.util.Map<java.lang.String,java.lang.Object> keyValueStorage
-
-
Constructor Detail
-
DefaultOpenSslSession
DefaultOpenSslSession(OpenSslSessionContext sessionContext)
-
-
Method Detail
-
newSSLSessionBindingEvent
private javax.net.ssl.SSLSessionBindingEvent newSSLSessionBindingEvent(java.lang.String name)
-
prepareHandshake
public void prepareHandshake()
Description copied from interface:OpenSslInternalSession
Called on a handshake session before being exposed to aTrustManager
. Session data must be cleared by this call.- Specified by:
prepareHandshake
in interfaceOpenSslInternalSession
-
setSessionDetails
public void setSessionDetails(long creationTime, long lastAccessedTime, OpenSslSessionId sessionId, java.util.Map<java.lang.String,java.lang.Object> keyValueStorage)
Description copied from interface:OpenSslInternalSession
Set the details for the session which might come from a cache.- Specified by:
setSessionDetails
in 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
- theOpenSslSessionId
keyValueStorage
- the key value store. SeeOpenSslInternalSession.keyValueStorage()
.
-
keyValueStorage
public java.util.Map<java.lang.String,java.lang.Object> keyValueStorage()
Description copied from interface:OpenSslInternalSession
Return the underlyingMap
that is used by the following methods:SSLSession.putValue(String, Object)
SSLSession.removeValue(String)
SSLSession.getValue(String)
-
SSLSession.getValueNames()
Map
must be thread-safe!- Specified by:
keyValueStorage
in interfaceOpenSslInternalSession
- Returns:
- storage
-
sessionId
public OpenSslSessionId sessionId()
Description copied from interface:OpenSslInternalSession
Return theOpenSslSessionId
that can be used to identify this session.- Specified by:
sessionId
in interfaceOpenSslInternalSession
-
setLocalCertificate
public void setLocalCertificate(java.security.cert.Certificate[] localCertificate)
Description copied from interface:OpenSslInternalSession
Set 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:
setLocalCertificate
in interfaceOpenSslInternalSession
-
getId
public byte[] getId()
- Specified by:
getId
in interfacejavax.net.ssl.SSLSession
-
getSessionContext
public OpenSslSessionContext getSessionContext()
- Specified by:
getSessionContext
in interfaceOpenSslSession
- Specified by:
getSessionContext
in interfacejavax.net.ssl.SSLSession
-
getCreationTime
public long getCreationTime()
- Specified by:
getCreationTime
in interfacejavax.net.ssl.SSLSession
-
setLastAccessedTime
public void setLastAccessedTime(long time)
Description copied from interface:OpenSslInternalSession
Set the last access time which will be returned bySSLSession.getLastAccessedTime()
.- Specified by:
setLastAccessedTime
in interfaceOpenSslInternalSession
- Parameters:
time
- the time
-
getLastAccessedTime
public long getLastAccessedTime()
- Specified by:
getLastAccessedTime
in interfacejavax.net.ssl.SSLSession
-
invalidate
public void invalidate()
- Specified by:
invalidate
in interfacejavax.net.ssl.SSLSession
-
isValid
public boolean isValid()
- Specified by:
isValid
in interfacejavax.net.ssl.SSLSession
-
putValue
public void putValue(java.lang.String name, java.lang.Object value)
- Specified by:
putValue
in interfacejavax.net.ssl.SSLSession
-
getValue
public java.lang.Object getValue(java.lang.String name)
- Specified by:
getValue
in interfacejavax.net.ssl.SSLSession
-
removeValue
public void removeValue(java.lang.String name)
- Specified by:
removeValue
in interfacejavax.net.ssl.SSLSession
-
getValueNames
public java.lang.String[] getValueNames()
- Specified by:
getValueNames
in interfacejavax.net.ssl.SSLSession
-
notifyUnbound
private void notifyUnbound(java.lang.Object value, java.lang.String name)
-
handshakeFinished
public void handshakeFinished(byte[] id, java.lang.String cipher, java.lang.String protocol, byte[] peerCertificate, byte[][] peerCertificateChain, long creationTime, long timeout) throws javax.net.ssl.SSLException
Finish the handshake and so init everything in theOpenSslInternalSession
that should be accessible by the user.- Specified by:
handshakeFinished
in interfaceOpenSslInternalSession
- Throws:
javax.net.ssl.SSLException
-
initCerts
private void initCerts(byte[][] chain, int startPos)
-
getPeerCertificates
public java.security.cert.Certificate[] getPeerCertificates() throws javax.net.ssl.SSLPeerUnverifiedException
- Specified by:
getPeerCertificates
in interfacejavax.net.ssl.SSLSession
- Throws:
javax.net.ssl.SSLPeerUnverifiedException
-
hasPeerCertificates
public boolean hasPeerCertificates()
Description copied from interface:OpenSslSession
Returns true if the peer has provided certificates during the handshake.This method is similar to
SSLSession.getPeerCertificates()
but it does not throw aSSLPeerUnverifiedException
if no certs are provided, making it more efficient to check if a mTLS connection is used.- Specified by:
hasPeerCertificates
in interfaceOpenSslSession
- Returns:
- true if peer certificates are available.
-
getLocalCertificates
public java.security.cert.Certificate[] getLocalCertificates()
- Specified by:
getLocalCertificates
in interfacejavax.net.ssl.SSLSession
-
getPeerCertificateChain
public javax.security.cert.X509Certificate[] getPeerCertificateChain() throws javax.net.ssl.SSLPeerUnverifiedException
- Specified by:
getPeerCertificateChain
in interfacejavax.net.ssl.SSLSession
- Throws:
javax.net.ssl.SSLPeerUnverifiedException
-
getPeerPrincipal
public java.security.Principal getPeerPrincipal() throws javax.net.ssl.SSLPeerUnverifiedException
- Specified by:
getPeerPrincipal
in interfacejavax.net.ssl.SSLSession
- Throws:
javax.net.ssl.SSLPeerUnverifiedException
-
getLocalPrincipal
public java.security.Principal getLocalPrincipal()
- Specified by:
getLocalPrincipal
in interfacejavax.net.ssl.SSLSession
-
getCipherSuite
public java.lang.String getCipherSuite()
- Specified by:
getCipherSuite
in interfacejavax.net.ssl.SSLSession
-
getProtocol
public java.lang.String getProtocol()
- Specified by:
getProtocol
in interfacejavax.net.ssl.SSLSession
-
getPeerHost
public java.lang.String getPeerHost()
- Specified by:
getPeerHost
in interfacejavax.net.ssl.SSLSession
-
getPeerPort
public int getPeerPort()
- Specified by:
getPeerPort
in interfacejavax.net.ssl.SSLSession
-
getPacketBufferSize
public int getPacketBufferSize()
- Specified by:
getPacketBufferSize
in interfacejavax.net.ssl.SSLSession
-
getApplicationBufferSize
public int getApplicationBufferSize()
- Specified by:
getApplicationBufferSize
in interfacejavax.net.ssl.SSLSession
-
tryExpandApplicationBufferSize
public void tryExpandApplicationBufferSize(int packetLengthDataOnly)
Description copied from interface:OpenSslInternalSession
Expand (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:
tryExpandApplicationBufferSize
in interfaceOpenSslInternalSession
- Parameters:
packetLengthDataOnly
- The packet size which exceeds the currentSSLSession.getApplicationBufferSize()
.
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
equals
public boolean equals(java.lang.Object o)
- Overrides:
equals
in classjava.lang.Object
-
-