/**@class javax.net.ssl.HttpsURLConnection @extends java.net.HttpURLConnection <code>HttpsURLConnection</code> extends <code>HttpURLConnection</code> with support for https-specific features. <P> See <A HREF="http://www.w3.org/pub/WWW/Protocols/"> http://www.w3.org/pub/WWW/Protocols/</A> and <A HREF="http://www.ietf.org/"> RFC 2818 </A> for more details on the https specification. <P> This class uses <code>HostnameVerifier</code> and <code>SSLSocketFactory</code>. There are default implementations defined for both classes. However, the implementations can be replaced on a per-class (static) or per-instance basis. All new <code>HttpsURLConnection</code>s instances will be assigned the "default" static values at instance creation, but they can be overriden by calling the appropriate per-instance set method(s) before <code>connect</code>ing. @since 1.4 */ var HttpsURLConnection = { /**Returns the cipher suite in use on this connection. @return {String} the cipher suite @throws IllegalStateException if this method is called before the connection has been established. */ getCipherSuite : function( ) {}, /**Returns the certificate(s) that were sent to the server during handshaking. <P> Note: This method is useful only when using certificate-based cipher suites. <P> When multiple certificates are available for use in a handshake, the implementation chooses what it considers the "best" certificate chain available, and transmits that to the other side. This method allows the caller to know which certificate chain was actually sent. @return {Object {java.security.cert.Certificate}} an ordered array of certificates, with the client's own certificate first followed by any certificate authorities. If no certificates were sent, then null is returned. @throws IllegalStateException if this method is called before the connection has been established. @see #getLocalPrincipal() */ getLocalCertificates : function( ) {}, /**Returns the server's certificate chain which was established as part of defining the session. <P> Note: This method can be used only when using certificate-based cipher suites; using it with non-certificate-based cipher suites, such as Kerberos, will throw an SSLPeerUnverifiedException. @return {Object {java.security.cert.Certificate}} an ordered array of server certificates, with the peer's own certificate first followed by any certificate authorities. @throws SSLPeerUnverifiedException if the peer is not verified. @throws IllegalStateException if this method is called before the connection has been established. @see #getPeerPrincipal() */ getServerCertificates : function( ) {}, /**Returns the server's principal which was established as part of defining the session. <P> Note: Subclasses should override this method. If not overridden, it will default to returning the X500Principal of the server's end-entity certificate for certificate-based ciphersuites, or throw an SSLPeerUnverifiedException for non-certificate based ciphersuites, such as Kerberos. @return {Object {java.security.Principal}} the server's principal. Returns an X500Principal of the end-entity certiticate for X509-based cipher suites, and KerberosPrincipal for Kerberos cipher suites. @throws SSLPeerUnverifiedException if the peer was not verified @throws IllegalStateException if this method is called before the connection has been established. @see #getServerCertificates() @see #getLocalPrincipal() @since 1.5 */ getPeerPrincipal : function( ) {}, /**Returns the principal that was sent to the server during handshaking. <P> Note: Subclasses should override this method. If not overridden, it will default to returning the X500Principal of the end-entity certificate that was sent to the server for certificate-based ciphersuites or, return null for non-certificate based ciphersuites, such as Kerberos. @return {Object {java.security.Principal}} the principal sent to the server. Returns an X500Principal of the end-entity certificate for X509-based cipher suites, and KerberosPrincipal for Kerberos cipher suites. If no principal was sent, then null is returned. @throws IllegalStateException if this method is called before the connection has been established. @see #getLocalCertificates() @see #getPeerPrincipal() @since 1.5 */ getLocalPrincipal : function( ) {}, /**Sets the default <code>HostnameVerifier</code> inherited by a new instance of this class. <p> Developers are <em>strongly</em> discouraged from changing the default {@code HostnameVerifier} as {@link #getDefaultHostnameVerifier}() is used by several classes for hostname verification on Android. <table> <tr> <th>User</th> <th>Effect</th> </tr> <tr> <td>Android's default {@link javax.net.ssl.TrustManager}, as used with Android's default {@link javax.net.ssl.SSLContext}, {@link javax.net.ssl.SSLSocketFactory} and {@link javax.net.ssl.SSLSocket} implementations. </td> <td>The {@code HostnameVerifier} is used to verify the peer's certificate hostname after connecting if {@code SSLParameters.setEndpointIdentificationAlgorithm("HTTPS")} has been called. Instances use the <em>current</em> default {@code HostnameVerifier} at verification time.</td> </tr> <tr> <td>{@link android.net.SSLCertificateSocketFactory}</td> <td>The current default {@code HostnameVerifier} is used from various {@code createSocket} methods. See {@link android.net.SSLCertificateSocketFactory} for details; for example {@link android.net.SSLCertificateSocketFactory#createSocket(String, int)}. </td> </tr> <tr> <td>Android's default {@link javax.net.ssl.HttpsURLConnection} implementation.</td> <td>The {@code HostnameVerifier} is used after a successful TLS handshake to verify the URI host against the TLS session server. Instances use the default {@code HostnameVerifier} set <em>when they were created</em> unless overridden with {@link #setHostnameVerifier}(HostnameVerifier). Android's <code>HttpsURLConnection</code> relies on the {@code HostnameVerifier} for the <em>entire</em> hostname verification step.</td> </tr> </table> <p> If this method is not called, the default <code>HostnameVerifier</code> will check the hostname according to RFC 2818. @param {Object {HostnameVerifier}} v the default host name verifier @throws IllegalArgumentException if the <code>HostnameVerifier</code> parameter is null. @throws SecurityException if a security manager exists and its <code>checkPermission</code> method does not allow <code>SSLPermission("setHostnameVerifier")</code> @see #getDefaultHostnameVerifier() */ setDefaultHostnameVerifier : function( ) {}, /**Gets the default <code>HostnameVerifier</code> that is inherited by new instances of this class. @return {Object {javax.net.ssl.HostnameVerifier}} the default host name verifier @see #setDefaultHostnameVerifier(HostnameVerifier) */ getDefaultHostnameVerifier : function( ) {}, /**Sets the <code>HostnameVerifier</code> for this instance. <P> New instances of this class inherit the default static hostname verifier set by {@link #setDefaultHostnameVerifier(HostnameVerifier) setDefaultHostnameVerifier}. Calls to this method replace this object's <code>HostnameVerifier</code>. <p> Android's <code>HttpsURLConnection</code> relies on the {@code HostnameVerifier} for the <em>entire</em> hostname verification step. @param {Object {HostnameVerifier}} v the host name verifier @throws IllegalArgumentException if the <code>HostnameVerifier</code> parameter is null. @see #getHostnameVerifier() @see #setDefaultHostnameVerifier(HostnameVerifier) */ setHostnameVerifier : function( ) {}, /**Gets the <code>HostnameVerifier</code> in place on this instance. @return {Object {javax.net.ssl.HostnameVerifier}} the host name verifier @see #setHostnameVerifier(HostnameVerifier) @see #setDefaultHostnameVerifier(HostnameVerifier) */ getHostnameVerifier : function( ) {}, /**Sets the default <code>SSLSocketFactory</code> inherited by new instances of this class. <P> The socket factories are used when creating sockets for secure https URL connections. @param {Object {SSLSocketFactory}} sf the default SSL socket factory @throws IllegalArgumentException if the SSLSocketFactory parameter is null. @throws SecurityException if a security manager exists and its <code>checkSetFactory</code> method does not allow a socket factory to be specified. @see #getDefaultSSLSocketFactory() */ setDefaultSSLSocketFactory : function( ) {}, /**Gets the default static <code>SSLSocketFactory</code> that is inherited by new instances of this class. <P> The socket factories are used when creating sockets for secure https URL connections. @return {Object {javax.net.ssl.SSLSocketFactory}} the default <code>SSLSocketFactory</code> @see #setDefaultSSLSocketFactory(SSLSocketFactory) */ getDefaultSSLSocketFactory : function( ) {}, /**Sets the <code>SSLSocketFactory</code> to be used when this instance creates sockets for secure https URL connections. <P> New instances of this class inherit the default static <code>SSLSocketFactory</code> set by {@link #setDefaultSSLSocketFactory(SSLSocketFactory) setDefaultSSLSocketFactory}. Calls to this method replace this object's <code>SSLSocketFactory</code>. @param {Object {SSLSocketFactory}} sf the SSL socket factory @throws IllegalArgumentException if the <code>SSLSocketFactory</code> parameter is null. @throws SecurityException if a security manager exists and its <code>checkSetFactory</code> method does not allow a socket factory to be specified. @see #getSSLSocketFactory() */ setSSLSocketFactory : function( ) {}, /**Gets the SSL socket factory to be used when creating sockets for secure https URL connections. @return {Object {javax.net.ssl.SSLSocketFactory}} the <code>SSLSocketFactory</code> @see #setSSLSocketFactory(SSLSocketFactory) */ getSSLSocketFactory : function( ) {}, };