# ExtendedSSLSession

public abstract class **ExtendedSSLSession** extends [Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html)  
implements [SSLSession](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SSLSession.html) Extends the `SSLSession` interface to support additional
session attributes.

### Public Constructor Summary

|---|---|
|   | [ExtendedSSLSession](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/ExtendedSSLSession.html#ExtendedSSLSession())() |

### Public Method Summary

|---|---|
| abstract [String\[\]](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) | [getLocalSupportedSignatureAlgorithms](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/ExtendedSSLSession.html#getLocalSupportedSignatureAlgorithms())() Obtains an array of supported signature algorithms that the local side is willing to use. |
| abstract [String\[\]](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) | [getPeerSupportedSignatureAlgorithms](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/ExtendedSSLSession.html#getPeerSupportedSignatureAlgorithms())() Obtains an array of supported signature algorithms that the peer is able to use. |
| [List](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/List.html)\<[SNIServerName](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SNIServerName.html)\> | [getRequestedServerNames](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/ExtendedSSLSession.html#getRequestedServerNames())() Obtains a `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/List.html` containing all `https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SNIServerName.html`s of the requested Server Name Indication (SNI) extension. |

### Inherited Method Summary

From class [java.lang.Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html)

|---|---|
| [Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html) | [clone](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#clone())() Creates and returns a copy of this `Object`. |
| boolean | [equals](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#equals(java.lang.Object))([Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html) obj) Compares this instance with the specified object and indicates if they are equal. |
| void | [finalize](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#finalize())() Invoked when the garbage collector has detected that this instance is no longer reachable. |
| final [Class](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Class.html)\<?\> | [getClass](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#getClass())() Returns the unique instance of `https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Class.html` that represents this object's class. |
| int | [hashCode](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#hashCode())() Returns an integer hash code for this object. |
| final void | [notify](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#notify())() Causes a thread which is waiting on this object's monitor (by means of calling one of the `wait()` methods) to be woken up. |
| final void | [notifyAll](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#notifyAll())() Causes all threads which are waiting on this object's monitor (by means of calling one of the `wait()` methods) to be woken up. |
| [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) | [toString](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#toString())() Returns a string containing a concise, human-readable description of this object. |
| final void | [wait](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#wait(long,%20int))(long timeout, int nanos) Causes the calling thread to wait until another thread calls the `notify()` or `notifyAll()` method of this object or until the specified timeout expires. |
| final void | [wait](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#wait(long))(long timeout) Causes the calling thread to wait until another thread calls the `notify()` or `notifyAll()` method of this object or until the specified timeout expires. |
| final void | [wait](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#wait())() Causes the calling thread to wait until another thread calls the `notify()` or `notifyAll()` method of this object. |

From interface [javax.net.ssl.SSLSession](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SSLSession.html)

|---|---|
| abstract int | [getApplicationBufferSize](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SSLSession.html#getApplicationBufferSize())() Gets the current size of the largest application data that is expected when using this session. |
| abstract [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) | [getCipherSuite](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SSLSession.html#getCipherSuite())() Returns the name of the SSL cipher suite which is used for all connections in the session. |
| abstract long | [getCreationTime](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SSLSession.html#getCreationTime())() Returns the time at which this Session representation was created, in milliseconds since midnight, January 1, 1970 UTC. |
| abstract byte\[\] | [getId](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SSLSession.html#getId())() Returns the identifier assigned to this Session. |
| abstract long | [getLastAccessedTime](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SSLSession.html#getLastAccessedTime())() Returns the last time this Session representation was accessed by the session level infrastructure, in milliseconds since midnight, January 1, 1970 UTC. |
| abstract [Certificate\[\]](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/cert/Certificate.html) | [getLocalCertificates](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SSLSession.html#getLocalCertificates())() Returns the certificate(s) that were sent to the peer during handshaking. |
| abstract [Principal](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/Principal.html) | [getLocalPrincipal](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SSLSession.html#getLocalPrincipal())() Returns the principal that was sent to the peer during handshaking. |
| abstract int | [getPacketBufferSize](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SSLSession.html#getPacketBufferSize())() Gets the current size of the largest SSL/TLS packet that is expected when using this session. |
| abstract [X509Certificate\[\]](https://developers.google.com/j2objc/javadoc/jre/reference/javax/security/cert/X509Certificate.html) | [getPeerCertificateChain](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SSLSession.html#getPeerCertificateChain())() Returns the identity of the peer which was identified as part of defining the session. |
| abstract [Certificate\[\]](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/cert/Certificate.html) | [getPeerCertificates](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SSLSession.html#getPeerCertificates())() Returns the identity of the peer which was established as part of defining the session. |
| abstract [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) | [getPeerHost](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SSLSession.html#getPeerHost())() Returns the host name of the peer in this session. |
| abstract int | [getPeerPort](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SSLSession.html#getPeerPort())() Returns the port number of the peer in this session. |
| abstract [Principal](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/Principal.html) | [getPeerPrincipal](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SSLSession.html#getPeerPrincipal())() Returns the identity of the peer which was established as part of defining the session. |
| abstract [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) | [getProtocol](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SSLSession.html#getProtocol())() Returns the standard name of the protocol used for all connections in the session. |
| abstract [SSLSessionContext](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SSLSessionContext.html) | [getSessionContext](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SSLSession.html#getSessionContext())() Returns the context in which this session is bound. |
| abstract [Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html) | [getValue](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SSLSession.html#getValue(java.lang.String))([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) name) Returns the object bound to the given name in the session's application layer data. |
| abstract [String\[\]](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) | [getValueNames](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SSLSession.html#getValueNames())() Returns an array of the names of all the application layer data objects bound into the Session. |
| abstract void | [invalidate](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SSLSession.html#invalidate())() Invalidates the session. |
| abstract boolean | [isValid](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SSLSession.html#isValid())() Returns whether this session is valid and available for resuming or joining. |
| abstract void | [putValue](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SSLSession.html#putValue(java.lang.String,%20java.lang.Object))([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) name, [Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html) value) Binds the specified `value` object into the session's application layer data with the given `name`. |
| abstract void | [removeValue](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SSLSession.html#removeValue(java.lang.String))([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) name) Removes the object bound to the given name in the session's application layer data. |

## Public Constructors

#### public
**ExtendedSSLSession**
()

<br />

## Public Methods

#### public abstract [String\[\]](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html)
**getLocalSupportedSignatureAlgorithms**
()

Obtains an array of supported signature algorithms that the local side
is willing to use.


Note: this method is used to indicate to the peer which signature
algorithms may be used for digital signatures in TLS 1.2. It is
not meaningful for TLS versions prior to 1.2.


The signature algorithm name must be a standard Java Security
name (such as "SHA1withRSA", "SHA256withECDSA", and so on).
See Appendix A in the [Java Cryptography Architecture API Specification \& Reference](https://developers.google.com/j2objc/javadoc/jre/openjdk-redirect.html?v=8&path=/technotes/guides/security/crypto/CryptoSpec.html#AppA)
for information about standard algorithm names.


Note: the local supported signature algorithms should conform to
the algorithm constraints specified by
`https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SSLParameters.html#getAlgorithmConstraints()`
method in `SSLParameters`.

##### Returns

- An array of supported signature algorithms, in descending order of preference. The return value is an empty array if no signature algorithm is supported.

##### See Also

- `https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SSLParameters.html#getAlgorithmConstraints()`

#### public abstract [String\[\]](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html)
**getPeerSupportedSignatureAlgorithms**
()

Obtains an array of supported signature algorithms that the peer is
able to use.


Note: this method is used to indicate to the local side which signature
algorithms may be used for digital signatures in TLS 1.2. It is
not meaningful for TLS versions prior to 1.2.


The signature algorithm name must be a standard Java Security
name (such as "SHA1withRSA", "SHA256withECDSA", and so on).
See Appendix A in the [Java Cryptography Architecture API Specification \& Reference](https://developers.google.com/j2objc/javadoc/jre/openjdk-redirect.html?v=8&path=/technotes/guides/security/crypto/CryptoSpec.html#AppA)
for information about standard algorithm names.

##### Returns

- An array of supported signature algorithms, in descending order of preference. The return value is an empty array if the peer has not sent the supported signature algorithms.

##### See Also

- `https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/X509KeyManager.html`
- `https://developers.google.com/j2objc/javadoc/jre/`

#### public [List](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/List.html)\<[SNIServerName](https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SNIServerName.html)\>
**getRequestedServerNames**
()

Obtains a `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/List.html` containing all `https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SNIServerName.html`s
of the requested Server Name Indication (SNI) extension.


In server mode, unless the return `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/List.html` is empty,
the server should use the requested server names to guide its
selection of an appropriate authentication certificate, and/or
other aspects of security policy.


In client mode, unless the return `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/List.html` is empty,
the client should use the requested server names to guide its
endpoint identification of the peer's identity, and/or
other aspects of security policy.

##### Returns

- a non-null immutable list of `https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SNIServerName.html`s of the requested server name indications. The returned list may be empty if no server name indications were requested.

##### Throws

| [UnsupportedOperationException](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/UnsupportedOperationException.html) | if the underlying provider does not implement the operation |
|---|---|

##### See Also

- `https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/SNIServerName.html`
- `https://developers.google.com/j2objc/javadoc/jre/reference/javax/net/ssl/X509ExtendedTrustManager.html`
- `https://developers.google.com/j2objc/javadoc/jre/`