# AbstractVerifier

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Deprecated in[API level 22](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Summary:[Ctors](https://developer.android.com/reference/org/apache/http/conn/ssl/AbstractVerifier#pubctors)\|[Methods](https://developer.android.com/reference/org/apache/http/conn/ssl/AbstractVerifier#pubmethods)\|[Inherited Methods](https://developer.android.com/reference/org/apache/http/conn/ssl/AbstractVerifier#inhmethods)  

# AbstractVerifier

`
public


abstract
class
AbstractVerifier
`  
`

extends `[Object](https://developer.android.com/reference/java/lang/Object)`


``


implements

`[X509HostnameVerifier](https://developer.android.com/reference/org/apache/http/conn/ssl/X509HostnameVerifier)`


`

|---|-------------------------------------------|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | org.apache.http.conn.ssl.AbstractVerifier |

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Known direct subclasses [AllowAllHostnameVerifier](https://developer.android.com/reference/org/apache/http/conn/ssl/AllowAllHostnameVerifier),[BrowserCompatHostnameVerifier](https://developer.android.com/reference/org/apache/http/conn/ssl/BrowserCompatHostnameVerifier),[StrictHostnameVerifier](https://developer.android.com/reference/org/apache/http/conn/ssl/StrictHostnameVerifier) |---------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | [AllowAllHostnameVerifier](https://developer.android.com/reference/org/apache/http/conn/ssl/AllowAllHostnameVerifier)           | *This class was deprecated in API level 22. Please use[URL.openConnection()](https://developer.android.com/reference/java/net/URL#openConnection())instead. Please visit[this webpage](http://android-developers.blogspot.com/2011/09/androids-http-clients.html)for further details.* | | [BrowserCompatHostnameVerifier](https://developer.android.com/reference/org/apache/http/conn/ssl/BrowserCompatHostnameVerifier) | *This class was deprecated in API level 22. Please use[URL.openConnection()](https://developer.android.com/reference/java/net/URL#openConnection())instead. Please visit[this webpage](http://android-developers.blogspot.com/2011/09/androids-http-clients.html)for further details.* | | [StrictHostnameVerifier](https://developer.android.com/reference/org/apache/http/conn/ssl/StrictHostnameVerifier)               | *This class was deprecated in API level 22. Please use[URL.openConnection()](https://developer.android.com/reference/java/net/URL#openConnection())instead. Please visit[this webpage](http://android-developers.blogspot.com/2011/09/androids-http-clients.html)for further details.* | |

<br />

*** ** * ** ***

<br />

**This class was deprecated in API level 22.**   
Please use[URL.openConnection()](https://developer.android.com/reference/java/net/URL#openConnection())instead. Please visit[this webpage](http://android-developers.blogspot.com/2011/09/androids-http-clients.html)for further details.

Abstract base class for all standard[X509HostnameVerifier](https://developer.android.com/reference/org/apache/http/conn/ssl/X509HostnameVerifier)implementations.

## Summary

|                                                       ### Public constructors                                                       ||
|----------------------------------------------------------------------------------------------------------------------------------|---|
| ` `[AbstractVerifier](https://developer.android.com/reference/org/apache/http/conn/ssl/AbstractVerifier#AbstractVerifier())`() ` |

|                                                                                                                                                                                                                                                             ### Public methods                                                                                                                                                                                                                                                             ||
|--------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` static boolean`                                                              | ` `[acceptableCountryWildcard](https://developer.android.com/reference/org/apache/http/conn/ssl/AbstractVerifier#acceptableCountryWildcard(java.lang.String))`(`[String](https://developer.android.com/reference/java/lang/String)` cn) `                                                                                                                                                                                                                  |
| ` static int`                                                                  | ` `[countDots](https://developer.android.com/reference/org/apache/http/conn/ssl/AbstractVerifier#countDots(java.lang.String))`(`[String](https://developer.android.com/reference/java/lang/String)` s) ` Counts the number of dots "." in a string.                                                                                                                                                                                                        |
| ` static `[String[]](https://developer.android.com/reference/java/lang/String) | ` `[getCNs](https://developer.android.com/reference/org/apache/http/conn/ssl/AbstractVerifier#getCNs(java.security.cert.X509Certificate))`(`[X509Certificate](https://developer.android.com/reference/java/security/cert/X509Certificate)` cert) `                                                                                                                                                                                                         |
| ` static `[String[]](https://developer.android.com/reference/java/lang/String) | ` `[getDNSSubjectAlts](https://developer.android.com/reference/org/apache/http/conn/ssl/AbstractVerifier#getDNSSubjectAlts(java.security.cert.X509Certificate))`(`[X509Certificate](https://developer.android.com/reference/java/security/cert/X509Certificate)` cert) ` Extracts the array of SubjectAlt DNS names from an X509Certificate.                                                                                                               |
| ` final void`                                                                  | ` `[verify](https://developer.android.com/reference/org/apache/http/conn/ssl/AbstractVerifier#verify(java.lang.String,%20java.lang.String[],%20java.lang.String[],%20boolean))`(`[String](https://developer.android.com/reference/java/lang/String)` host, `[String[]](https://developer.android.com/reference/java/lang/String)` cns, `[String[]](https://developer.android.com/reference/java/lang/String)` subjectAlts, boolean strictWithSubDomains) ` |
| ` final void`                                                                  | ` `[verify](https://developer.android.com/reference/org/apache/http/conn/ssl/AbstractVerifier#verify(java.lang.String,%20javax.net.ssl.SSLSocket))`(`[String](https://developer.android.com/reference/java/lang/String)` host, `[SSLSocket](https://developer.android.com/reference/javax/net/ssl/SSLSocket)` ssl) `                                                                                                                                       |
| ` final void`                                                                  | ` `[verify](https://developer.android.com/reference/org/apache/http/conn/ssl/AbstractVerifier#verify(java.lang.String,%20java.security.cert.X509Certificate))`(`[String](https://developer.android.com/reference/java/lang/String)` host, `[X509Certificate](https://developer.android.com/reference/java/security/cert/X509Certificate)` cert) `                                                                                                          |
| ` final boolean`                                                               | ` `[verify](https://developer.android.com/reference/org/apache/http/conn/ssl/AbstractVerifier#verify(java.lang.String,%20javax.net.ssl.SSLSession))`(`[String](https://developer.android.com/reference/java/lang/String)` host, `[SSLSession](https://developer.android.com/reference/javax/net/ssl/SSLSession)` session) ` Verify that the host name is an acceptable match with the server's authentication scheme.                                      |

| ### Inherited methods |
|-----------------------|---|
| From class` `[java.lang.Object](https://developer.android.com/reference/java/lang/Object)` ` |--------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` `[Object](https://developer.android.com/reference/java/lang/Object)          | ` `[clone](https://developer.android.com/reference/java/lang/Object#clone())`() ` Creates and returns a copy of this object.                                                                                                                                                      | | ` boolean`                                                                     | ` `[equals](https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object))`(`[Object](https://developer.android.com/reference/java/lang/Object)` obj) ` Indicates whether some other object is "equal to" this one.                                           | | ` void`                                                                        | ` `[finalize](https://developer.android.com/reference/java/lang/Object#finalize())`() ` Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.                                                          | | ` final `[Class](https://developer.android.com/reference/java/lang/Class)`<?>` | ` `[getClass](https://developer.android.com/reference/java/lang/Object#getClass())`() ` Returns the runtime class of this`Object`.                                                                                                                                                | | ` int`                                                                         | ` `[hashCode](https://developer.android.com/reference/java/lang/Object#hashCode())`() ` Returns a hash code value for the object.                                                                                                                                                 | | ` final void`                                                                  | ` `[notify](https://developer.android.com/reference/java/lang/Object#notify())`() ` Wakes up a single thread that is waiting on this object's monitor.                                                                                                                            | | ` final void`                                                                  | ` `[notifyAll](https://developer.android.com/reference/java/lang/Object#notifyAll())`() ` Wakes up all threads that are waiting on this object's monitor.                                                                                                                         | | ` `[String](https://developer.android.com/reference/java/lang/String)          | ` `[toString](https://developer.android.com/reference/java/lang/Object#toString())`() ` Returns a string representation of the object.                                                                                                                                            | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait(long,%20int))`(long timeoutMillis, int nanos) ` Causes the current thread to wait until it is awakened, typically by being*notified* or*interrupted*, or until a certain amount of real time has elapsed. | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait(long))`(long timeoutMillis) ` Causes the current thread to wait until it is awakened, typically by being*notified* or*interrupted*, or until a certain amount of real time has elapsed.                   | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait())`() ` Causes the current thread to wait until it is awakened, typically by being*notified* or*interrupted*.                                                                                             | ||
| From interface` `[org.apache.http.conn.ssl.X509HostnameVerifier](https://developer.android.com/reference/org/apache/http/conn/ssl/X509HostnameVerifier)` ` |---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` abstract void`    | ` `[verify](https://developer.android.com/reference/org/apache/http/conn/ssl/X509HostnameVerifier#verify(java.lang.String,%20javax.net.ssl.SSLSocket))`(`[String](https://developer.android.com/reference/java/lang/String)` host, `[SSLSocket](https://developer.android.com/reference/javax/net/ssl/SSLSocket)` ssl) `                                                                                                                                                                                            | | ` abstract void`    | ` `[verify](https://developer.android.com/reference/org/apache/http/conn/ssl/X509HostnameVerifier#verify(java.lang.String,%20java.security.cert.X509Certificate))`(`[String](https://developer.android.com/reference/java/lang/String)` host, `[X509Certificate](https://developer.android.com/reference/java/security/cert/X509Certificate)` cert) `                                                                                                                                                               | | ` abstract void`    | ` `[verify](https://developer.android.com/reference/org/apache/http/conn/ssl/X509HostnameVerifier#verify(java.lang.String,%20java.lang.String[],%20java.lang.String[]))`(`[String](https://developer.android.com/reference/java/lang/String)` host, `[String[]](https://developer.android.com/reference/java/lang/String)` cns, `[String[]](https://developer.android.com/reference/java/lang/String)` subjectAlts) ` Checks to see if the supplied hostname matches any of the supplied CNs or "DNS" Subject-Alts. | | ` abstract boolean` | ` `[verify](https://developer.android.com/reference/org/apache/http/conn/ssl/X509HostnameVerifier#verify(java.lang.String,%20javax.net.ssl.SSLSession))`(`[String](https://developer.android.com/reference/java/lang/String)` host, `[SSLSession](https://developer.android.com/reference/javax/net/ssl/SSLSession)` session) ` Verify that the host name is an acceptable match with the server's authentication scheme.                                                                                           | ||
| From interface` `[javax.net.ssl.HostnameVerifier](https://developer.android.com/reference/javax/net/ssl/HostnameVerifier)` ` |---------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` abstract boolean` | ` `[verify](https://developer.android.com/reference/javax/net/ssl/HostnameVerifier#verify(java.lang.String,%20javax.net.ssl.SSLSession))`(`[String](https://developer.android.com/reference/java/lang/String)` hostname, `[SSLSession](https://developer.android.com/reference/javax/net/ssl/SSLSession)` session) ` Verify that the host name is an acceptable match with the server's authentication scheme. | ||

## Public constructors

### AbstractVerifier

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public AbstractVerifier ()
```

<br />

<br />

## Public methods

### acceptableCountryWildcard

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static boolean acceptableCountryWildcard (String cn)
```

<br />

<br />

|      Parameters       ||
|------|-----------------|
| `cn` | `String` <br /> |

|      Returns      ||
|-----------|--------|
| `boolean` | <br /> |

### countDots

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static int countDots (String s)
```

Counts the number of dots "." in a string.

<br />

|                   Parameters                    ||
|-----|--------------------------------------------|
| `s` | `String`: string to count dots from <br /> |

|           Returns            ||
|-------|-----------------------|
| `int` | number of dots <br /> |

### getCNs

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static String[] getCNs (X509Certificate cert)
```

<br />

<br />

|            Parameters            ||
|--------|--------------------------|
| `cert` | `X509Certificate` <br /> |

|                                   Returns                                    ||
|----------------------------------------------------------------------|--------|
| [String[]](https://developer.android.com/reference/java/lang/String) | <br /> |

### getDNSSubjectAlts

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static String[] getDNSSubjectAlts (X509Certificate cert)
```

Extracts the array of SubjectAlt DNS names from an X509Certificate. Returns null if there aren't any.

<br />

Note: Java doesn't appear able to extract international characters from the SubjectAlts. It can only extract international characters from the CN field.

<br />

(Or maybe the version of OpenSSL I'm using to test isn't storing the international characters correctly in the SubjectAlts?).

<br />

<br />

|                    Parameters                     ||
|--------|-------------------------------------------|
| `cert` | `X509Certificate`: X509Certificate <br /> |

|                                                                Returns                                                                ||
|----------------------------------------------------------------------|-----------------------------------------------------------------|
| [String[]](https://developer.android.com/reference/java/lang/String) | Array of SubjectALT DNS names stored in the certificate. <br /> |

### verify

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public final void verify (String host, 
                String[] cns, 
                String[] subjectAlts, 
                boolean strictWithSubDomains)
```

<br />

<br />

|                Parameters                ||
|------------------------|------------------|
| `host`                 | `String` <br />  |
| `cns`                  | `String` <br />  |
| `subjectAlts`          | `String` <br />  |
| `strictWithSubDomains` | `boolean` <br /> |

|                                        Throws                                         ||
|------------------------------------------------------------------------------------|---|
| [SSLException](https://developer.android.com/reference/javax/net/ssl/SSLException) |   |

### verify

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public final void verify (String host, 
                SSLSocket ssl)
```

<br />

<br />

|         Parameters         ||
|--------|--------------------|
| `host` | `String` <br />    |
| `ssl`  | `SSLSocket` <br /> |

|                                    Throws                                     ||
|----------------------------------------------------------------------------|---|
| [IOException](https://developer.android.com/reference/java/io/IOException) |   |

### verify

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public final void verify (String host, 
                X509Certificate cert)
```

<br />

<br />

|            Parameters            ||
|--------|--------------------------|
| `host` | `String` <br />          |
| `cert` | `X509Certificate` <br /> |

|                                        Throws                                         ||
|------------------------------------------------------------------------------------|---|
| [SSLException](https://developer.android.com/reference/javax/net/ssl/SSLException) |   |

### verify

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public final boolean verify (String host, 
                SSLSession session)
```

Verify that the host name is an acceptable match with the server's authentication scheme.

<br />

|                                Parameters                                 ||
|-----------|----------------------------------------------------------------|
| `host`    | `String`: the host name <br />                                 |
| `session` | `SSLSession`: SSLSession used on the connection to host <br /> |

|                        Returns                        ||
|-----------|--------------------------------------------|
| `boolean` | true if the host name is acceptable <br /> |