Package org.conscrypt

Class ActiveSession

  • All Implemented Interfaces:
    javax.net.ssl.SSLSession, ConscryptSession

    final class ActiveSession
    extends java.lang.Object
    implements ConscryptSession
    A session that is dedicated a single connection and operates directly on the underlying SSL.
    • Field Detail

      • id

        private byte[] id
      • creationTime

        private long creationTime
      • protocol

        private java.lang.String protocol
      • applicationProtocol

        private java.lang.String applicationProtocol
      • peerHost

        private java.lang.String peerHost
      • peerPort

        private int peerPort
      • lastAccessedTime

        private long lastAccessedTime
      • peerCertificateChain

        private volatile javax.security.cert.X509Certificate[] peerCertificateChain
      • localCertificates

        private java.security.cert.X509Certificate[] localCertificates
      • peerCertificates

        private java.security.cert.X509Certificate[] peerCertificates
      • peerCertificateOcspData

        private byte[] peerCertificateOcspData
      • peerTlsSctData

        private byte[] peerTlsSctData
    • Method Detail

      • getId

        public byte[] getId()
        Specified by:
        getId in interface javax.net.ssl.SSLSession
      • getSessionContext

        public javax.net.ssl.SSLSessionContext getSessionContext()
        Specified by:
        getSessionContext in interface javax.net.ssl.SSLSession
      • getCreationTime

        public long getCreationTime()
        Specified by:
        getCreationTime in interface javax.net.ssl.SSLSession
      • getLastAccessedTime

        public long getLastAccessedTime()
        Returns the last time this SSL session was accessed. Accessing here is to mean that a new connection with the same SSL context data was established.
        Specified by:
        getLastAccessedTime in interface javax.net.ssl.SSLSession
        Returns:
        the session's last access time in milliseconds since the epoch
      • setLastAccessedTime

        void setLastAccessedTime​(long accessTimeMillis)
      • getPeerSignedCertificateTimestamp

        public byte[] getPeerSignedCertificateTimestamp()
        Returns the signed certificate timestamp (SCT) received from the peer. Returns a copy of the internal array.
        Specified by:
        getPeerSignedCertificateTimestamp in interface ConscryptSession
        See Also:
        RFC 6962
      • invalidate

        public void invalidate()
        Specified by:
        invalidate in interface javax.net.ssl.SSLSession
      • isValid

        public boolean isValid()
        Specified by:
        isValid in interface javax.net.ssl.SSLSession
      • putValue

        public void putValue​(java.lang.String name,
                             java.lang.Object value)
        Specified by:
        putValue in interface javax.net.ssl.SSLSession
      • getValue

        public java.lang.Object getValue​(java.lang.String name)
        Specified by:
        getValue in interface javax.net.ssl.SSLSession
      • removeValue

        public void removeValue​(java.lang.String name)
        Specified by:
        removeValue in interface javax.net.ssl.SSLSession
      • getValueNames

        public java.lang.String[] getValueNames()
        Specified by:
        getValueNames in interface javax.net.ssl.SSLSession
      • getPeerCertificates

        public java.security.cert.X509Certificate[] getPeerCertificates()
                                                                 throws javax.net.ssl.SSLPeerUnverifiedException
        Specified by:
        getPeerCertificates in interface ConscryptSession
        Specified by:
        getPeerCertificates in interface javax.net.ssl.SSLSession
        Throws:
        javax.net.ssl.SSLPeerUnverifiedException
      • getLocalCertificates

        public java.security.cert.Certificate[] getLocalCertificates()
        Specified by:
        getLocalCertificates in interface javax.net.ssl.SSLSession
      • getPeerCertificateChain

        public javax.security.cert.X509Certificate[] getPeerCertificateChain()
                                                                      throws javax.net.ssl.SSLPeerUnverifiedException
        Returns the certificate(s) of the peer in this SSL session used in the handshaking phase of the connection. Please notice hat this method is superseded by getPeerCertificates().
        Specified by:
        getPeerCertificateChain in interface javax.net.ssl.SSLSession
        Returns:
        an array of X509 certificates (the peer's one first and then eventually that of the certification authority) or null if no certificate were used during the SSL connection.
        Throws:
        javax.net.ssl.SSLPeerUnverifiedException - if either a non-X.509 certificate was used (i.e. Kerberos certificates) or the peer could not be verified.
      • getPeerPrincipal

        public java.security.Principal getPeerPrincipal()
                                                 throws javax.net.ssl.SSLPeerUnverifiedException
        Specified by:
        getPeerPrincipal in interface javax.net.ssl.SSLSession
        Throws:
        javax.net.ssl.SSLPeerUnverifiedException
      • getLocalPrincipal

        public java.security.Principal getLocalPrincipal()
        Specified by:
        getLocalPrincipal in interface javax.net.ssl.SSLSession
      • getCipherSuite

        public java.lang.String getCipherSuite()
        Specified by:
        getCipherSuite in interface javax.net.ssl.SSLSession
      • getProtocol

        public java.lang.String getProtocol()
        Specified by:
        getProtocol in interface javax.net.ssl.SSLSession
      • getPeerHost

        public java.lang.String getPeerHost()
        Specified by:
        getPeerHost in interface javax.net.ssl.SSLSession
      • getPeerPort

        public int getPeerPort()
        Specified by:
        getPeerPort in interface javax.net.ssl.SSLSession
      • getPacketBufferSize

        public int getPacketBufferSize()
        Specified by:
        getPacketBufferSize in interface javax.net.ssl.SSLSession
      • getApplicationBufferSize

        public int getApplicationBufferSize()
        Specified by:
        getApplicationBufferSize in interface javax.net.ssl.SSLSession
      • onPeerCertificatesReceived

        void onPeerCertificatesReceived​(java.lang.String peerHost,
                                        int peerPort,
                                        java.security.cert.X509Certificate[] peerCertificates)
        Configures the peer information once it has been received by the handshake.
      • configurePeer

        private void configurePeer​(java.lang.String peerHost,
                                   int peerPort,
                                   java.security.cert.X509Certificate[] peerCertificates)
      • onPeerCertificateAvailable

        void onPeerCertificateAvailable​(java.lang.String peerHost,
                                        int peerPort)
                                 throws java.security.cert.CertificateException
        Updates the cached peer certificate after the handshake has completed (or entered False Start).
        Throws:
        java.security.cert.CertificateException
      • checkPeerCertificatesPresent

        private void checkPeerCertificatesPresent()
                                           throws javax.net.ssl.SSLPeerUnverifiedException
        Throw SSLPeerUnverifiedException on null or empty peerCertificates array
        Throws:
        javax.net.ssl.SSLPeerUnverifiedException