Package org.conscrypt
Class ExternalSession
- java.lang.Object
-
- org.conscrypt.ExternalSession
-
- All Implemented Interfaces:
javax.net.ssl.SSLSession
,ConscryptSession
final class ExternalSession extends java.lang.Object implements ConscryptSession
An externalized view of the underlyingSSLSession
used within a socket/engine. This class provides the caller with a consistent session handle which will continue to be usable regardless of internal changes to the connection. It does this by delegating calls to the current internal session, which is provided by the sessionProvider
(i.e. the socket or engine that owns the session). This allows the provider to switch implementations (for instance, using a JNI implementation to access live values while the connection is open and a set of final values when the connection is closed), even if the caller stores a reference to the session object.This class implements the
SSLSession
value API itself, rather than delegating to the provided session, to ensure the caller has a consistent value map, regardless of which internal session is currently being used by the socket/engine. This class will never call the value API methods on the underlying sessions, so they need not be implemented.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static interface
ExternalSession.Provider
The provider of the current delegate session.
-
Field Summary
Fields Modifier and Type Field Description private ExternalSession.Provider
provider
private java.util.HashMap<java.lang.String,java.lang.Object>
values
-
Constructor Summary
Constructors Constructor Description ExternalSession(ExternalSession.Provider provider)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
getApplicationBufferSize()
java.lang.String
getApplicationProtocol()
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.X509Certificate[]
getPeerCertificates()
java.lang.String
getPeerHost()
int
getPeerPort()
java.security.Principal
getPeerPrincipal()
byte[]
getPeerSignedCertificateTimestamp()
Returns the signed certificate timestamp (SCT) received from the peer.java.lang.String
getProtocol()
java.lang.String
getRequestedServerName()
javax.net.ssl.SSLSessionContext
getSessionContext()
java.util.List<byte[]>
getStatusResponses()
Returns the OCSP stapled response.java.lang.Object
getValue(java.lang.String name)
java.lang.String[]
getValueNames()
void
invalidate()
boolean
isValid()
void
putValue(java.lang.String name, java.lang.Object value)
(package private) void
putValue(javax.net.ssl.SSLSession session, java.lang.String name, java.lang.Object value)
void
removeValue(java.lang.String name)
(package private) void
removeValue(javax.net.ssl.SSLSession session, java.lang.String name)
-
-
-
Field Detail
-
values
private final java.util.HashMap<java.lang.String,java.lang.Object> values
-
provider
private final ExternalSession.Provider provider
-
-
Constructor Detail
-
ExternalSession
public ExternalSession(ExternalSession.Provider provider)
-
-
Method Detail
-
getRequestedServerName
public java.lang.String getRequestedServerName()
- Specified by:
getRequestedServerName
in interfaceConscryptSession
-
getStatusResponses
public java.util.List<byte[]> getStatusResponses()
Description copied from interface:ConscryptSession
Returns the OCSP stapled response. Returns a copy of the internal arrays. The method signature matches Java 9.- Specified by:
getStatusResponses
in interfaceConscryptSession
- See Also:
- RFC 6066, RFC 6961
-
getPeerSignedCertificateTimestamp
public byte[] getPeerSignedCertificateTimestamp()
Description copied from interface:ConscryptSession
Returns the signed certificate timestamp (SCT) received from the peer. Returns a copy of the internal array.- Specified by:
getPeerSignedCertificateTimestamp
in interfaceConscryptSession
- See Also:
- RFC 6962
-
getId
public byte[] getId()
- Specified by:
getId
in interfacejavax.net.ssl.SSLSession
-
getSessionContext
public javax.net.ssl.SSLSessionContext getSessionContext()
- Specified by:
getSessionContext
in interfacejavax.net.ssl.SSLSession
-
getCreationTime
public long getCreationTime()
- Specified by:
getCreationTime
in interfacejavax.net.ssl.SSLSession
-
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
-
getPeerCertificates
public java.security.cert.X509Certificate[] getPeerCertificates() throws javax.net.ssl.SSLPeerUnverifiedException
- Specified by:
getPeerCertificates
in interfaceConscryptSession
- Specified by:
getPeerCertificates
in interfacejavax.net.ssl.SSLSession
- Throws:
javax.net.ssl.SSLPeerUnverifiedException
-
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
-
getApplicationProtocol
public java.lang.String getApplicationProtocol()
- Specified by:
getApplicationProtocol
in interfaceConscryptSession
-
getValue
public java.lang.Object getValue(java.lang.String name)
- Specified by:
getValue
in interfacejavax.net.ssl.SSLSession
-
getValueNames
public java.lang.String[] getValueNames()
- Specified by:
getValueNames
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
-
putValue
void putValue(javax.net.ssl.SSLSession session, java.lang.String name, java.lang.Object value)
-
removeValue
public void removeValue(java.lang.String name)
- Specified by:
removeValue
in interfacejavax.net.ssl.SSLSession
-
removeValue
void removeValue(javax.net.ssl.SSLSession session, java.lang.String name)
-
-