Merge "Fix race condition in accept() on socket that is concurrently closed."
diff --git a/ojluni/src/main/java/java/security/AlgorithmParameterGenerator.java b/ojluni/src/main/java/java/security/AlgorithmParameterGenerator.java
index 5bc43a4..9e0bc55 100755
--- a/ojluni/src/main/java/java/security/AlgorithmParameterGenerator.java
+++ b/ojluni/src/main/java/java/security/AlgorithmParameterGenerator.java
@@ -66,11 +66,38 @@
  * default modulus prime size of 1024 bits for the generation of DSA
  * parameters.
  *
- * <p> Latest Android version provides the following <code>AlgorithmParameterGenerator</code> algorithms:
- * <ul>
- * <li><tt>DH</tt></li>
- * <li><tt>DSA</tt></li>
- * </ul>
+ * <p> Android provides the following <code>AlgorithmParameterGenerator</code> algorithms:
+ * <table>
+ *     <thead>
+ *         <tr>
+ *             <th>Name</th>
+ *             <th>Supported (API Levels)</th>
+ *         </tr>
+ *     </thead>
+ *     <tbody>
+ *         <tr>
+ *             <td>AES</td>
+ *             <td>1&ndash;8</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DES</td>
+ *             <td>1&ndash;8</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DESede</td>
+ *             <td>1&ndash;8</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DH</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DSA</td>
+ *             <td>1+</td>
+ *         </tr>
+ *     </tbody>
+ * </table>
+ *
  * These algorithms are described in the <a href=
  * "{@docRoot}openjdk-redirect.html?v=8&path=/technotes/guides/security/StandardNames.html#AlgorithmParameterGenerator">
  * AlgorithmParameterGenerator section</a> of the
diff --git a/ojluni/src/main/java/java/security/AlgorithmParameters.java b/ojluni/src/main/java/java/security/AlgorithmParameters.java
index 82f30bc..a090ece 100755
--- a/ojluni/src/main/java/java/security/AlgorithmParameters.java
+++ b/ojluni/src/main/java/java/security/AlgorithmParameters.java
@@ -46,19 +46,62 @@
  * <code>getParameterSpec</code>, and a byte encoding of the parameters is
  * obtained via a call to <code>getEncoded</code>.
  *
- * <p> Latest Android version provides the following <code>AlgorithmParameters</code> algorithms:
- * <ul>
- * <li><tt>AES</tt></li>
- * <li><tt>BLOWFISH</tt></li>
- * <li><tt>DES</tt></li>
- * <li><tt>DESEDE</tt></li>
- * <li><tt>DH</tt></li>
- * <li><tt>DSA</tt></li>
- * <li><tt>GCM</tt></li>
- * <li><tt>OAEP</tt></li>
- * <li><tt>PKCS12PBE</tt></li>
- * <li><tt>PSS</tt></li>
- * </ul>
+ * <p> Android provides the following <code>AlgorithmParameters</code> algorithms:
+ * <table>
+ *     <thead>
+ *         <tr>
+ *             <th>Name</th>
+ *             <th>Supported (API Levels)</th>
+ *         </tr>
+ *     </thead>
+ *     <tbody>
+ *         <tr>
+ *             <td>AES</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>Blowfish</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DES</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DESede</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DH</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DSA</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>GCM</td>
+ *             <td>22+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>IES</td>
+ *             <td>1&ndash;8</td>
+ *         </tr>
+ *         <tr>
+ *             <td>OAEP</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PKCS12PBE</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PSS</td>
+ *             <td>1&ndash;8, 24+</td>
+ *         </tr>
+ *     </tbody>
+ * </table>
+ *
  * These algorithms are described in the <a href=
  * "{@docRoot}openjdk-redirect.html?v=8&path=/technotes/guides/security/StandardNames.html#AlgorithmParameters">
  * AlgorithmParameters section</a> of the
diff --git a/ojluni/src/main/java/java/security/KeyFactory.java b/ojluni/src/main/java/java/security/KeyFactory.java
index a964ae8d..865d553 100755
--- a/ojluni/src/main/java/java/security/KeyFactory.java
+++ b/ojluni/src/main/java/java/security/KeyFactory.java
@@ -67,13 +67,38 @@
  * sig.verify(signature);
  * </pre>
  *
- * <p> Latest Android version provides the following <code>KeyFactory</code> algorithms:
- * <ul>
- * <li><tt>DH</tt></li>
- * <li><tt>DSA</tt></li>
- * <li><tt>EC</tt></li>
- * <li><tt>RSA</tt></li>
- * </ul>
+ * <p> Android provides the following <code>KeyFactory</code> algorithms:
+ * <table>
+ *     <thead>
+ *         <tr>
+ *             <th>Name</th>
+ *             <th>Supported (API Levels)</th>
+ *         </tr>
+ *     </thead>
+ *     <tbody>
+ *         <tr>
+ *             <td>DH</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DSA</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>EC</td>
+ *             <td>11+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>RSA</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>X.509</td>
+ *             <td>1&ndash;8</td>
+ *         </tr>
+ *     </tbody>
+ * </table>
+ *
  * These algorithms are described in the <a href=
  * "{@docRoot}openjdk-redirect.html?v=8&path=/technotes/guides/security/StandardNames.html#KeyFactory">
  * KeyFactory section</a> of the
diff --git a/ojluni/src/main/java/java/security/KeyPairGenerator.java b/ojluni/src/main/java/java/security/KeyPairGenerator.java
index e7f17f3..9413d11 100755
--- a/ojluni/src/main/java/java/security/KeyPairGenerator.java
+++ b/ojluni/src/main/java/java/security/KeyPairGenerator.java
@@ -105,13 +105,34 @@
  * the superclass are intended for cryptographic service providers who wish to
  * supply their own implementations of key pair generators.
  *
- * <p> Latest Android version provides the following <code>KeyPairGenerator</code> algorithms:
- * <ul>
- * <li><tt>DH</tt></li>
- * <li><tt>DSA</tt></li>
- * <li><tt>EC</tt></li>
- * <li><tt>RSA</tt></li>
- * </ul>
+ * <p> Android provides the following <code>KeyPairGenerator</code> algorithms:
+ * <table>
+ *     <thead>
+ *         <tr>
+ *             <th>Name</th>
+ *             <th>Supported (API Levels)</th>
+ *         </tr>
+ *     </thead>
+ *     <tbody>
+ *         <tr>
+ *             <td>DH</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DSA</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>EC</td>
+ *             <td>11+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>RSA</td>
+ *             <td>1+</td>
+ *         </tr>
+ *     </tbody>
+ * </table>
+ *
  * These algorithms are described in the <a href=
  * "{@docRoot}openjdk-redirect.html?v=8&path=/technotes/guides/security/StandardNames.html#KeyPairGenerator">
  * KeyPairGenerator section</a> of the
diff --git a/ojluni/src/main/java/java/security/KeyStore.java b/ojluni/src/main/java/java/security/KeyStore.java
index 581572f..39eac65 100755
--- a/ojluni/src/main/java/java/security/KeyStore.java
+++ b/ojluni/src/main/java/java/security/KeyStore.java
@@ -164,14 +164,47 @@
  * different passwords or other protection parameters
  * may also be used.
  *
- * <p> Latest Android version provides the following <code>KeyStore</code> type:
- * <ul>
- * <li><tt>ANDROIDCASTORE</tt></li>
- * <li><tt>BKS</tt></li>
- * <li><tt>BOUNCYCASTLE</tt></li>
- * <li><tt>PKCS12</tt></li>
- * </ul>
- * This type is described in the <a href=
+ * <p> Android provides the following <code>KeyStore</code> types:
+ * <table>
+ *     <thead>
+ *         <tr>
+ *             <th>Name</th>
+ *             <th>Supported (API Levels)</th>
+ *         </tr>
+ *     </thead>
+ *     <tbody>
+ *         <tr>
+ *             <td>AndroidCAStore</td>
+ *             <td>14+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>AndroidKeyStore</td>
+ *             <td>18+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>BCPKCS12</td>
+ *             <td>1&ndash;8</td>
+ *         </tr>
+ *         <tr>
+ *             <td>BKS</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>BouncyCastle</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PKCS12</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PKCS12-DEF</td>
+ *             <td>1&ndash;8</td>
+ *         </tr>
+ *     </tbody>
+ * </table>
+ *
+ * These types are described in the <a href=
  * "{@docRoot}openjdk-redirect.html?v=8&path=/technotes/guides/security/StandardNames.html#KeyStore">
  * KeyStore section</a> of the
  * Java Cryptography Architecture Standard Algorithm Name Documentation.
diff --git a/ojluni/src/main/java/java/security/MessageDigest.java b/ojluni/src/main/java/java/security/MessageDigest.java
index 6d0f8bf..ff7f544 100755
--- a/ojluni/src/main/java/java/security/MessageDigest.java
+++ b/ojluni/src/main/java/java/security/MessageDigest.java
@@ -81,15 +81,42 @@
  * the superclass are intended for cryptographic service providers who wish to
  * supply their own implementations of message digest algorithms.
  *
- * <p> Latest Android version provides the following <code>MessageDigest</code> algorithms:
- * <ul>
- *   <li><tt>MD5</tt></li>
- *   <li><tt>SHA-1</tt></li>
- *   <li><tt>SHA-224</tt></li>
- *   <li><tt>SHA-256</tt></li>
- *   <li><tt>SHA-384</tt></li>
- *   <li><tt>SHA-512</tt></li>
- * </ul>
+ * <p> Android provides the following <code>MessageDigest</code> algorithms:
+ * <table>
+ *     <thead>
+ *         <tr>
+ *             <th>Name</th>
+ *             <th>Supported (API Levels)</th>
+ *         </tr>
+ *     </thead>
+ *     <tbody>
+ *         <tr>
+ *             <td>MD5</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>SHA-1</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>SHA-224</td>
+ *             <td>1&ndash;8,22+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>SHA-256</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>SHA-384</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>SHA-512</td>
+ *             <td>1+</td>
+ *         </tr>
+ *     </tbody>
+ * </table>
+ *
  * These algorithms are described in the <a href=
  * "{@docRoot}openjdk-redirect.html?v=8&path=/technotes/guides/security/StandardNames.html#MessageDigest">
  * MessageDigest section</a> of the
diff --git a/ojluni/src/main/java/java/security/Signature.java b/ojluni/src/main/java/java/security/Signature.java
index e805991..8923ecd 100755
--- a/ojluni/src/main/java/java/security/Signature.java
+++ b/ojluni/src/main/java/java/security/Signature.java
@@ -99,31 +99,110 @@
  * the superclass are intended for cryptographic service providers who wish to
  * supply their own implementations of digital signature algorithms.
  *
- * <p> Latest Android version provides the following <code>Signature</code> algorithms:
- * <ul>
- * <li><tt>MD5withRSA</tt></li>
- * <li><tt>NONEwithDSA</tt></li>
- * <li><tt>NONEwithECDSA</tt></li>
- * <li><tt>NONEwithRSA</tt></li>
- * <li><tt>SHA1withDSA</tt></li>
- * <li><tt>SHA1withECDSA</tt></li>
- * <li><tt>SHA1withRSA</tt></li>
- * <li><tt>SHA1withRSA/PSS</tt></li>
- * <li><tt>SHA224withDSA</tt></li>
- * <li><tt>SHA224withECDSA</tt></li>
- * <li><tt>SHA224withRSA</tt></li>
- * <li><tt>SHA224withRSA/PSS</tt></li>
- * <li><tt>SHA256withDSA</tt></li>
- * <li><tt>SHA256withECDSA</tt></li>
- * <li><tt>SHA256withRSA</tt></li>
- * <li><tt>SHA256withRSA/PSS</tt></li>
- * <li><tt>SHA384withECDSA</tt></li>
- * <li><tt>SHA384withRSA</tt></li>
- * <li><tt>SHA384withRSA/PSS</tt></li>
- * <li><tt>SHA512withECDSA</tt></li>
- * <li><tt>SHA512withRSA</tt></li>
- * <li><tt>SHA512withRSA/PSS</tt></li>
- * </ul>
+ * <p> Android provides the following <code>Signature</code> algorithms:
+ * <table>
+ *     <thead>
+ *         <tr>
+ *             <th>Name</th>
+ *             <th>Supported (API Levels)</th>
+ *         </tr>
+ *     </thead>
+ *     <tbody>
+ *         <tr>
+ *             <td>DSA</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DSAwithSHA1</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DSS</td>
+ *             <td>1&ndash;19</td>
+ *         </tr>
+ *         <tr>
+ *             <td>ECDSA</td>
+ *             <td>11+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>ECDSAwithSHA1</td>
+ *             <td>11+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>MD2withRSA</td>
+ *             <td>1&ndash;3</td>
+ *         </tr>
+ *         <tr>
+ *             <td>MD4withRSA</td>
+ *             <td>1&ndash;8</td>
+ *         </tr>
+ *         <tr>
+ *             <td>MD5withRSA</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>MD5withRSA/ISO9796-2</td>
+ *             <td>1&ndash;8</td>
+ *         </tr>
+ *         <tr>
+ *             <td>NONEwithDSA</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>NONEwithECDSA</td>
+ *             <td>11+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>NONEwithRSA</td>
+ *             <td>17+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>RSASSA-PSS</td>
+ *             <td>1&ndash;8</td>
+ *         </tr>
+ *         <tr>
+ *             <td>SHA1withDSA</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>SHA1withECDSA</td>
+ *             <td>11+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>SHA1withRSA</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>SHA1withRSA/ISO9796-2</td>
+ *             <td>1&ndash;8</td>
+ *         </tr>
+ *         <tr>
+ *             <td>SHA256withECDSA</td>
+ *             <td>11+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>SHA256withRSA</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>SHA384withECDSA</td>
+ *             <td>11+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>SHA384withRSA</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>SHA512withECDSA</td>
+ *             <td>11+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>SHA512withRSA</td>
+ *             <td>1+</td>
+ *         </tr>
+ *     </tbody>
+ * </table>
+ *
  * These algorithms are described in the <a href=
  * "{@docRoot}openjdk-redirect.html?v=8&path=/technotes/guides/security/StandardNames.html#Signature">
  * Signature section</a> of the
diff --git a/ojluni/src/main/java/java/security/cert/CertPathBuilder.java b/ojluni/src/main/java/java/security/cert/CertPathBuilder.java
index a84d9ab..cf15ecc6 100755
--- a/ojluni/src/main/java/java/security/cert/CertPathBuilder.java
+++ b/ojluni/src/main/java/java/security/cert/CertPathBuilder.java
@@ -66,10 +66,22 @@
  * CertPathBuilderResult cpbr = cpb.build(params);
  * </pre>
  *
- * <p> Latest Android version provides the following {@code CertPathBuilder} algorithm:
- * <ul>
- * <li>{@code PKIX}</li>
- * </ul>
+ * <p> Android provides the following {@code CertPathBuilder} algorithms:
+ * <table>
+ *     <thead>
+ *         <tr>
+ *             <th>Name</th>
+ *             <th>Supported (API Levels)</th>
+ *         </tr>
+ *     </thead>
+ *     <tbody>
+ *         <tr>
+ *             <td>PKIX</td>
+ *             <td>1+</td>
+ *         </tr>
+ *     </tbody>
+ * </table>
+ *
  * This algorithm is described in the <a href=
  * "{@docRoot}openjdk-redirect.html?v=8&path=/technotes/guides/security/StandardNames.html#CertPathBuilder">
  * CertPathBuilder section</a> of the
diff --git a/ojluni/src/main/java/java/security/cert/CertPathValidator.java b/ojluni/src/main/java/java/security/cert/CertPathValidator.java
index 1214b92..40adafe 100755
--- a/ojluni/src/main/java/java/security/cert/CertPathValidator.java
+++ b/ojluni/src/main/java/java/security/cert/CertPathValidator.java
@@ -68,10 +68,22 @@
  * CertPathValidatorResult cpvr = cpv.validate(path, params);
  * </pre>
  *
- * <p> Latest Android version provides the following {@code CertPathValidator} algorithm:
- * <ul>
- * <li>{@code PKIX}</li>
- * </ul>
+ * <p> Android provides the following {@code CertPathValidator} algorithms:
+ * <table>
+ *     <thead>
+ *         <tr>
+ *             <th>Name</th>
+ *             <th>Supported (API Levels)</th>
+ *         </tr>
+ *     </thead>
+ *     <tbody>
+ *         <tr>
+ *             <td>PKIX</td>
+ *             <td>1+</td>
+ *         </tr>
+ *     </tbody>
+ * </table>
+ *
  * This algorithm is described in the <a href=
  * "{@docRoot}openjdk-redirect.html?v=8&path=/technotes/guides/security/StandardNames.html#CertPathValidator">
  * CertPathValidator section</a> of the
diff --git a/ojluni/src/main/java/java/security/cert/CertStore.java b/ojluni/src/main/java/java/security/cert/CertStore.java
index 5f8a8af..bc02510 100755
--- a/ojluni/src/main/java/java/security/cert/CertStore.java
+++ b/ojluni/src/main/java/java/security/cert/CertStore.java
@@ -60,10 +60,22 @@
  * and CRLs stored in one or more directories using the LDAP protocol and the
  * schema as defined in the RFC service attribute.
  *
- * <p> Latest Android version provides the following <code>CertStore</code> type:
- * <ul>
- * <li><tt>Collection</tt></li>
- * </ul>
+ * <p> Android provides the following <code>CertStore</code> types:
+ * <table>
+ *     <thead>
+ *         <tr>
+ *             <th>Name</th>
+ *             <th>Supported (API Levels)</th>
+ *         </tr>
+ *     </thead>
+ *     <tbody>
+ *         <tr>
+ *             <td>Collection</td>
+ *             <td>1+</td>
+ *         </tr>
+ *     </tbody>
+ * </table>
+ *
  * This type is described in the <a href=
  * "{@docRoot}openjdk-redirect.html?v=8&path=/technotes/guides/security/StandardNames.html#CertStore">
  * CertStore section</a> of the
diff --git a/ojluni/src/main/java/java/security/cert/CertificateFactory.java b/ojluni/src/main/java/java/security/cert/CertificateFactory.java
index 061744d..bd0ae8c 100755
--- a/ojluni/src/main/java/java/security/cert/CertificateFactory.java
+++ b/ojluni/src/main/java/java/security/cert/CertificateFactory.java
@@ -91,16 +91,41 @@
  * }
  * </pre>
  *
- * <p> Latest Android version provides the following <code>CertificateFactory</code> type:
- * <ul>
- * <li><tt>X.509</tt></li>
- * <li><tt>X509</tt></li>
- * </ul>
+ * <p> Android provides the following <code>CertificateFactory</code> types:
+ * <table>
+ *     <thead>
+ *         <tr>
+ *             <th>Name</th>
+ *             <th>Supported (API Levels)</th>
+ *         </tr>
+ *     </thead>
+ *     <tbody>
+ *         <tr>
+ *             <td>X.509</td>
+ *             <td>1+</td>
+ *         </tr>
+ *     </tbody>
+ * </table>
  * and the following <code>CertPath</code> encodings:
- * <ul>
- * <li><tt>PKCS7</tt></li>
- * <li><tt>PkiPath</tt></li>
- * </ul>
+ * <table>
+ *     <thead>
+ *         <tr>
+ *             <th>Name</th>
+ *             <th>Supported (API Levels)</th>
+ *         </tr>
+ *     </thead>
+ *     <tbody>
+ *         <tr>
+ *             <td>PKCS7</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PkiPath</td>
+ *             <td>1+</td>
+ *         </tr>
+ *     </tbody>
+ * </table>
+ *
  * The type and encodings are described in the <a href=
  * "{@docRoot}openjdk-redirect.html?v=8&path=/technotes/guides/security/StandardNames.html#CertificateFactory">
  * CertificateFactory section</a> and the <a href=
diff --git a/ojluni/src/main/java/javax/crypto/Cipher.java b/ojluni/src/main/java/javax/crypto/Cipher.java
index 1d4f072..39dd524 100755
--- a/ojluni/src/main/java/javax/crypto/Cipher.java
+++ b/ojluni/src/main/java/javax/crypto/Cipher.java
@@ -119,74 +119,498 @@
  *     cipher.update(...);     // Multi-part update
  *     cipher.doFinal(...);    // conclusion of operation
  * </pre>
- * <p> Latest Android version provides the following <code>Cipher</code> transformations:
- * <ul>
-
- * <li><tt>AES</tt></li>
- * <li><tt>AES/CBC/NoPadding</tt></li>
- * <li><tt>AES/CBC/PKCS5Padding</tt></li>
- * <li><tt>AES/CBC/PKCS7Padding</tt></li>
- * <li><tt>AES/CFB/NoPadding</tt></li>
- * <li><tt>AES/CFB/PKCS5Padding</tt></li>
- * <li><tt>AES/CFB/PKCS7Padding</tt></li>
- * <li><tt>AES/CTR/NoPadding</tt></li>
- * <li><tt>AES/CTR/PKCS5Padding</tt></li>
- * <li><tt>AES/CTR/PKCS7Padding</tt></li>
- * <li><tt>AES/ECB/NoPadding</tt></li>
- * <li><tt>AES/ECB/PKCS5Padding</tt></li>
- * <li><tt>AES/ECB/PKCS7Padding</tt></li>
- * <li><tt>AES/GCM/NoPadding</tt></li>
- * <li><tt>AES/OFB/NoPadding</tt></li>
- * <li><tt>AES/OFB/PKCS5Padding</tt></li>
- * <li><tt>AES/OFB/PKCS7Padding</tt></li>
- * <li><tt>AESWRAP</tt></li>
- * <li><tt>ARC4</tt></li>
- * <li><tt>BLOWFISH</tt></li>
- * <li><tt>DES</tt></li>
- * <li><tt>DESede</tt></li>
- * <li><tt>DESede/CBC/NoPadding</tt></li>
- * <li><tt>DESede/CBC/PKCS5Padding</tt></li>
- * <li><tt>DESede/CBC/PKCS7Padding</tt></li>
- * <li><tt>DESede/CFB/NoPadding</tt></li>
- * <li><tt>DESede/CFB/PKCS5Padding</tt></li>
- * <li><tt>DESede/CFB/PKCS7Padding</tt></li>
- * <li><tt>DESede/ECB/NoPadding</tt></li>
- * <li><tt>DESede/ECB/PKCS5Padding</tt></li>
- * <li><tt>DESede/ECB/PKCS7Padding</tt></li>
- * <li><tt>DESede/OFB/NoPadding</tt></li>
- * <li><tt>DESede/OFB/PKCS5Padding</tt></li>
- * <li><tt>DESede/OFB/PKCS7Padding</tt></li>
- * <li><tt>DESedeWRAP</tt></li>
- * <li><tt>PBEwithMD5and128BITAES-CBC-OPENSSL</tt></li>
- * <li><tt>PBEwithMD5and192BITAES-CBC-OPENSSL</tt></li>
- * <li><tt>PBEwithMD5and256BITAES-CBC-OPENSSL</tt></li>
- * <li><tt>PBEwithMD5andDES</tt></li>
- * <li><tt>PBEwithMD5andRC2</tt></li>
- * <li><tt>PBEwithSHA1andDES</tt></li>
- * <li><tt>PBEwithSHA1andRC2</tt></li>
- * <li><tt>PBEwithSHA256and128BITAES-CBC-BC</tt></li>
- * <li><tt>PBEwithSHA256and192BITAES-CBC-BC</tt></li>
- * <li><tt>PBEwithSHA256and256BITAES-CBC-BC</tt></li>
- * <li><tt>PBEwithSHAand128BITAES-CBC-BC</tt></li>
- * <li><tt>PBEwithSHAand128BITRC2-CBC</tt></li>
- * <li><tt>PBEwithSHAand128BITRC4</tt></li>
- * <li><tt>PBEwithSHAand192BITAES-CBC-BC</tt></li>
- * <li><tt>PBEwithSHAand2-KEYTRIPLEDES-CBC</tt></li>
- * <li><tt>PBEwithSHAand256BITAES-CBC-BC</tt></li>
- * <li><tt>PBEwithSHAand3-KEYTRIPLEDES-CBC</tt></li>
- * <li><tt>PBEwithSHAand40BITRC2-CBC</tt></li>
- * <li><tt>PBEwithSHAand40BITRC4</tt></li>
- * <li><tt>PBEwithSHAandTWOFISH-CBC</tt></li>
- * <li><tt>RSA</tt></li>
- * <li><tt>RSA/ECB/NoPadding</tt></li>
- * <li><tt>RSA/ECB/OAEPPadding</tt></li>
- * <li><tt>RSA/ECB/OAEPwithSHA-1andMGF1Padding</tt></li>
- * <li><tt>RSA/ECB/OAEPwithSHA-224andMGF1Padding</tt></li>
- * <li><tt>RSA/ECB/OAEPwithSHA-256andMGF1Padding</tt></li>
- * <li><tt>RSA/ECB/OAEPwithSHA-384andMGF1Padding</tt></li>
- * <li><tt>RSA/ECB/OAEPwithSHA-512andMGF1Padding</tt></li>
- * <li><tt>RSA/ECB/PKCS1Padding</tt></li>
- * </ul>
+ * <p> Android provides the following <code>Cipher</code> transformations:
+ * <table>
+ *     <thead>
+ *         <tr>
+ *             <th>Name</th>
+ *             <th>Supported (API Levels)</th>
+ *         </tr>
+ *     </thead>
+ *         <tr>
+ *             <td>AES/CBC/ISO10126Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>AES/CBC/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>AES/CBC/PKCS5Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>AES/CFB/ISO10126Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>AES/CFB/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>AES/CFB/PKCS5Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>AES/CTR/ISO10126Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>AES/CTR/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>AES/CTR/PKCS5Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>AES/CTS/ISO10126Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>AES/CTS/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>AES/CTS/PKCS5Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>AES/ECB/ISO10126Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>AES/ECB/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>AES/ECB/PKCS5Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>AES/OFB/ISO10126Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>AES/OFB/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>AES/OFB/PKCS5Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>ARCFOUR/ECB/NoPadding</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>BLOWFISH/CBC/ISO10126Padding</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>BLOWFISH/CBC/NoPadding</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>BLOWFISH/CBC/PKCS5Padding</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>BLOWFISH/CFB/ISO10126Padding</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>BLOWFISH/CFB/NoPadding</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>BLOWFISH/CFB/PKCS5Padding</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>BLOWFISH/CTR/ISO10126Padding</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>BLOWFISH/CTR/NoPadding</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>BLOWFISH/CTR/PKCS5Padding</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>BLOWFISH/CTS/ISO10126Padding</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>BLOWFISH/CTS/NoPadding</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>BLOWFISH/CTS/PKCS5Padding</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>BLOWFISH/ECB/ISO10126Padding</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>BLOWFISH/ECB/NoPadding</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>BLOWFISH/ECB/PKCS5Padding</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>BLOWFISH/OFB/ISO10126Padding</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>BLOWFISH/OFB/NoPadding</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>BLOWFISH/OFB/PKCS5Padding</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DES/CBC/ISO10126Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DES/CBC/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DES/CBC/PKCS5Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DES/CFB/ISO10126Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DES/CFB/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DES/CFB/PKCS5Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DES/CTR/ISO10126Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DES/CTR/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DES/CTR/PKCS5Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DES/CTS/ISO10126Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DES/CTS/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DES/CTS/PKCS5Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DES/ECB/ISO10126Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DES/ECB/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DES/ECB/PKCS5Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DES/OFB/ISO10126Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DES/OFB/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DES/OFB/PKCS5Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DESede/CBC/ISO10126Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DESede/CBC/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DESede/CBC/PKCS5Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DESede/CFB/ISO10126Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DESede/CFB/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DESede/CFB/PKCS5Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DESede/CTR/ISO10126Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DESede/CTR/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DESede/CTR/PKCS5Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DESede/CTS/ISO10126Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DESede/CTS/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DESede/CTS/PKCS5Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DESede/ECB/ISO10126Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DESede/ECB/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DESede/ECB/PKCS5Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DESede/OFB/ISO10126Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DESede/OFB/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DESede/OFB/PKCS5Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithMD5andDES/CBC/ISO10126Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithMD5andDES/CBC/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithMD5andDES/CBC/PKCS5Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithMD5andDES/CFB/ISO10126Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithMD5andDES/CFB/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithMD5andDES/CFB/PKCS5Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithMD5andDES/CTR/ISO10126Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithMD5andDES/CTR/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithMD5andDES/CTR/PKCS5Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithMD5andDES/CTS/ISO10126Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithMD5andDES/CTS/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithMD5andDES/CTS/PKCS5Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithMD5andDES/ECB/ISO10126Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithMD5andDES/ECB/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithMD5andDES/ECB/PKCS5Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithMD5andDES/OFB/ISO10126Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithMD5andDES/OFB/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithMD5andDES/OFB/PKCS5Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHA1andDESede/CBC/ISO10126Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHA1andDESede/CBC/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHA1andDESede/CBC/PKCS5Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHA1andDESede/CFB/ISO10126Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHA1andDESede/CFB/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHA1andDESede/CFB/PKCS5Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHA1andDESede/CTR/ISO10126Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHA1andDESede/CTR/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHA1andDESede/CTR/PKCS5Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHA1andDESede/CTS/ISO10126Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHA1andDESede/CTS/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHA1andDESede/CTS/PKCS5Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHA1andDESede/ECB/ISO10126Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHA1andDESede/ECB/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHA1andDESede/ECB/PKCS5Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHA1andDESede/OFB/ISO10126Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHA1andDESede/OFB/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHA1andDESede/OFB/PKCS5Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>RC4/ECB/NoPadding</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>RSA/ECB/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>RSA/ECB/OAEPPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>RSA/ECB/OAEPwithSHA-1andMGF1Padding</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>RSA/ECB/OAEPwithSHA-256andMGF1Padding</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>RSA/ECB/PKCS1Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>RSA/NONE/NoPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>RSA/NONE/OAEPPadding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>RSA/NONE/OAEPwithSHA-1andMGF1Padding</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>RSA/NONE/OAEPwithSHA-256andMGF1Padding</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>RSA/NONE/PKCS1Padding</td>
+ *             <td>1+</td>
+ *         </tr>
+ *     </tbody>
+ *     </tbody>
+ * </table>
+ *
  * These transformations are described in the
  * <a href="{@docRoot}openjdk-redirect.html?v=8&path=/technotes/guides/security/StandardNames.html#Cipher">
  * Cipher section</a> of the
diff --git a/ojluni/src/main/java/javax/crypto/KeyAgreement.java b/ojluni/src/main/java/javax/crypto/KeyAgreement.java
index a74786d..0d3a93e 100755
--- a/ojluni/src/main/java/javax/crypto/KeyAgreement.java
+++ b/ojluni/src/main/java/javax/crypto/KeyAgreement.java
@@ -55,11 +55,26 @@
  * <code>false</code>, and the second time setting it to <code>true</code>.
  * There may be any number of parties involved in a key exchange.
  *
- * <p> Latest Android version provides the following <code>KeyAgreement</code> algorithm:
- * <ul>
- * <li><tt>DH</tt></li>
- * <li><tt>ECDH</tt></li>
- * </ul>
+ * <p> Android provides the following <code>KeyAgreement</code> algorithms:
+ * <table>
+ *     <thead>
+ *         <tr>
+ *             <th>Name</th>
+ *             <th>Supported (API Levels)</th>
+ *         </tr>
+ *     </thead>
+ *     <tbody>
+ *         <tr>
+ *             <td>DH</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>ECDH</td>
+ *             <td>11+</td>
+ *         </tr>
+ *     </tbody>
+ * </table>
+ *
  * This algorithm is described in the <a href=
  * "{@docRoot}openjdk-redirect.html?v=8&path=/technotes/guides/security/StandardNames.html#KeyAgreement">
  * KeyAgreement section</a> of the
diff --git a/ojluni/src/main/java/javax/crypto/KeyGenerator.java b/ojluni/src/main/java/javax/crypto/KeyGenerator.java
index ff878ed..722f48a 100755
--- a/ojluni/src/main/java/javax/crypto/KeyGenerator.java
+++ b/ojluni/src/main/java/javax/crypto/KeyGenerator.java
@@ -84,26 +84,78 @@
  * (via a call to an <code>init</code> method), each provider must
  * supply (and document) a default initialization.
  *
- * <p> Latest Android version provides the following <code>KeyGenerator</code> algorithms:
- * <ul>
- * <li><tt>AES</tt></li>
- * <li><tt>ARC4</tt></li>
- * <li><tt>Blowfish</tt></li>
- * <li><tt>DES</tt></li>
- * <li><tt>DESede</tt></li>
- * <li><tt>HmacMD5</tt></li>
- * <li><tt>HmacSHA1</tt></li>
- * <li><tt>HmacSHA224</tt></li>
- * <li><tt>HmacSHA256</tt></li>
- * <li><tt>HmacSHA384</tt></li>
- * <li><tt>HmacSHA512</tt></li>
- * </ul>
+ * <p> Android provides the following <code>KeyGenerator</code> algorithms:
+ * <table>
+ *     <thead>
+ *         <tr>
+ *             <th>Name</th>
+ *             <th>Supported (API Levels)</th>
+ *         </tr>
+ *     </thead>
+ *     <tbody>
+ *         <tr>
+ *             <td>AES</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>AESWRAP</td>
+ *             <td>1&ndash;8</td>
+ *         </tr>
+ *         <tr>
+ *             <td>ARC4</td>
+ *             <td>14+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>Blowfish</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DES</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DESede</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DESedeWRAP</td>
+ *             <td>1&ndash;8</td>
+ *         </tr>
+ *         <tr>
+ *             <td>HmacMD5</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>HmacSHA1</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>HmacSHA224</td>
+ *             <td>1&ndash;8,22+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>HmacSHA256</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>HmacSHA384</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>HmacSHA512</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>RC4</td>
+ *             <td>10&ndash;13</td>
+ *         </tr>
+ *     </tbody>
+ * </table>
+ *
  * These algorithms are described in the <a href=
  * "{@docRoot}openjdk-redirect.html?v=8&path=/technotes/guides/security/StandardNames.html#KeyGenerator">
  * KeyGenerator section</a> of the
  * Java Cryptography Architecture Standard Algorithm Name Documentation.
- * Consult the release documentation for your implementation to see if any
- * other algorithms are supported.
  *
  * @author Jan Luehe
  *
diff --git a/ojluni/src/main/java/javax/crypto/Mac.java b/ojluni/src/main/java/javax/crypto/Mac.java
index 39ae20c..a9aa3d8 100755
--- a/ojluni/src/main/java/javax/crypto/Mac.java
+++ b/ojluni/src/main/java/javax/crypto/Mac.java
@@ -54,17 +54,78 @@
  * e.g., MD5 or SHA-1, in combination with a secret shared key. HMAC is
  * specified in RFC 2104.
  *
- * <p> Latest Android version provides the following <code>Mac</code> algorithms:
- * <ul>
- * <li><tt>HmacMD5</tt></li>
- * <li><tt>HmacSHA1</tt></li>
- * <li><tt>HmacSHA224</tt></li>
- * <li><tt>HmacSHA256</tt></li>
- * <li><tt>HmacSHA384</tt></li>
- * <li><tt>HmacSHA512</tt></li>
- * <li><tt>PBEWITHHmacSHA</tt></li>
- * <li><tt>PBEWITHHmacSHA1</tt></li>
- * </ul>
+ * <p> Android provides the following <code>Mac</code> algorithms
+ * <table>
+ *     <thead>
+ *         <tr>
+ *             <th>Name</th>
+ *             <th>Supported (API Levels)</th>
+ *         </tr>
+ *     </thead>
+ *     <tbody>
+ *         <tr>
+ *             <td>DESedeMAC</td>
+ *             <td>1&ndash;8</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DESedeMAC/CFB8</td>
+ *             <td>1&ndash;8</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DESedeMAC64</td>
+ *             <td>1&ndash;8</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DESMAC</td>
+ *             <td>1&ndash;8</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DESMAC/CFB8</td>
+ *             <td>1&ndash;8</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DESwithISO9797</td>
+ *             <td>1&ndash;8</td>
+ *         </tr>
+ *         <tr>
+ *             <td>HmacMD5</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>HmacSHA1</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>HmacSHA224</td>
+ *             <td>1&ndash;8, 22+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>HmacSHA256</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>HmacSHA384</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>HmacSHA512</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>ISO9797ALG3MAC</td>
+ *             <td>1&ndash;8</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithHmacSHA</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithHmacSHA1</td>
+ *             <td>1+</td>
+ *         </tr>
+ *     </tbody>
+ * </table>
+ *
  * These algorithms are described in the
  * <a href="{@docRoot}openjdk-redirect.html?v=8&path=/technotes/guides/security/StandardNames.html#Mac">
  * Mac section</a> of the
diff --git a/ojluni/src/main/java/javax/crypto/SecretKeyFactory.java b/ojluni/src/main/java/javax/crypto/SecretKeyFactory.java
index 0026b0e..f7f7330 100755
--- a/ojluni/src/main/java/javax/crypto/SecretKeyFactory.java
+++ b/ojluni/src/main/java/javax/crypto/SecretKeyFactory.java
@@ -58,40 +58,142 @@
  * <code>DESedeKeySpec</code> as a transparent representation of Triple DES
  * keys.
  *
- * <p> Latest Android version provides the following <code>SecretKeyFactory</code> algorithms:
- * <ul>
- * <li><tt>AES</tt></li>
- * <li><tt>DES</tt></li>
- * <li><tt>DESede</tt></li>
- * <li><tt>HMACSHA1</tt></li>
- * <li><tt>HMACSHA224</tt></li>
- * <li><tt>HMACSHA256</tt></li>
- * <li><tt>HMACSHA384</tt></li>
- * <li><tt>HMACSHA512</tt></li>
- * <li><tt>PBEWITHHMACSHA1</tt></li>
- * <li><tt>PBEWITHMD5AND128BITAES-CBC-OPENSSL</tt></li>
- * <li><tt>PBEWITHMD5AND192BITAES-CBC-OPENSSL</tt></li>
- * <li><tt>PBEWITHMD5AND256BITAES-CBC-OPENSSL</tt></li>
- * <li><tt>PBEWITHMD5ANDDES</tt></li>
- * <li><tt>PBEWITHMD5ANDRC2</tt></li>
- * <li><tt>PBEWITHSHA1ANDDES</tt></li>
- * <li><tt>PBEWITHSHA1ANDRC2</tt></li>
- * <li><tt>PBEWITHSHA256AND128BITAES-CBC-BC</tt></li>
- * <li><tt>PBEWITHSHA256AND192BITAES-CBC-BC</tt></li>
- * <li><tt>PBEWITHSHA256AND256BITAES-CBC-BC</tt></li>
- * <li><tt>PBEWITHSHAAND128BITAES-CBC-BC</tt></li>
- * <li><tt>PBEWITHSHAAND128BITRC2-CBC</tt></li>
- * <li><tt>PBEWITHSHAAND128BITRC4</tt></li>
- * <li><tt>PBEWITHSHAAND192BITAES-CBC-BC</tt></li>
- * <li><tt>PBEWITHSHAAND2-KEYTRIPLEDES-CBC</tt></li>
- * <li><tt>PBEWITHSHAAND256BITAES-CBC-BC</tt></li>
- * <li><tt>PBEWITHSHAAND3-KEYTRIPLEDES-CBC</tt></li>
- * <li><tt>PBEWITHSHAAND40BITRC2-CBC</tt></li>
- * <li><tt>PBEWITHSHAAND40BITRC4</tt></li>
- * <li><tt>PBEWITHSHAANDTWOFISH-CBC</tt></li>
- * <li><tt>PBKDF2WITHHMACSHA1</tt></li>
- * <li><tt>PBKDF2WITHHMACSHA1AND8BIT</tt></li>
- * </ul>
+ * <p> Android provides the following <code>SecretKeyFactory</code> algorithms:
+ * <table>
+ *     <thead>
+ *         <tr>
+ *             <th>Name</th>
+ *             <th>Supported (API Levels)</th>
+ *         </tr>
+ *     </thead>
+ *     <tbody>
+ *         <tr>
+ *             <td>AES</td>
+ *             <td>23+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DES</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>DESede</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>HmacSHA1</td>
+ *             <td>23+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>HmacSHA224</td>
+ *             <td>23+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>HmacSHA256</td>
+ *             <td>23+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>HmacSHA384</td>
+ *             <td>23+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>HmacSHA512</td>
+ *             <td>23+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithHmacSHA1</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithMD5and128BITAES-CBC-OPENSSL</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithMD5and192BITAES-CBC-OPENSSL</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithMD5and256BITAES-CBC-OPENSSL</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithMD5andDES</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithMD5andRC2</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHA1andDES</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHA1andRC2</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHA256and128BITAES-CBC-BC</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHA256and192BITAES-CBC-BC</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHA256and256BITAES-CBC-BC</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHAand128BITAES-CBC-BC</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHAand128BITRC2-CBC</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHAand128BITRC4</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHAand192BITAES-CBC-BC</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHAand2-KEYTRIPLEDES-CBC</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHAand256BITAES-CBC-BC</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHAand3-KEYTRIPLEDES-CBC</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHAand40BITRC2-CBC</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHAand40BITRC4</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBEwithSHAandTWOFISH-CBC</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBKDF2withHmacSHA1</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>PBKDF2withHmacSHA1and8BIT</td>
+ *             <td>19+</td>
+ *         </tr>
+ *     </tbody>
+ * </table>
+ *
  * These algorithms are described in the <a href=
  * "{@docRoot}openjdk-redirect.html?v=8&path=/technotes/guides/security/StandardNames.html#SecretKeyFactory">
  * SecretKeyFactory section</a> of the
diff --git a/ojluni/src/main/java/javax/net/ssl/SSLContext.java b/ojluni/src/main/java/javax/net/ssl/SSLContext.java
index 4f0bfe1..7e615b8 100755
--- a/ojluni/src/main/java/javax/net/ssl/SSLContext.java
+++ b/ojluni/src/main/java/javax/net/ssl/SSLContext.java
@@ -37,16 +37,46 @@
  * with an optional set of key and trust managers and source of
  * secure random bytes.
  *
- * <p> Latest Android version provides the following <code>SSLContext</code> protocol:
- * <ul>
- * <li><tt>DEFAULT</tt></li>
- * <li><tt>SSL</tt></li>
- * <li><tt>SSLV3</tt></li>
- * <li><tt>TLS</tt></li>
- * <li><tt>TLSV1</tt></li>
- * <li><tt>TLSV1.1</tt></li>
- * <li><tt>TLSV1.2</tt></li>
- * </ul>
+ * <p> Android provides the following <code>SSLContext</code> protocols:
+ * <table>
+ *     <thead>
+ *         <tr>
+ *             <th>Name</th>
+ *             <th>Supported (API Levels)</th>
+ *         </tr>
+ *     </thead>
+ *     <tbody>
+ *         <tr>
+ *             <td>Default</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>SSL</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>SSLv3</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>TLS</td>
+ *             <td>1+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>TLSv1</td>
+ *             <td>10+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>TLSv1.1</td>
+ *             <td>16+</td>
+ *         </tr>
+ *         <tr>
+ *             <td>TLSv1.2</td>
+ *             <td>16+</td>
+ *         </tr>
+ *     </tbody>
+ * </table>
+ *
  * This protocol is described in the <a href=
  * "{@docRoot}openjdk-redirect.html?v=8&path=/technotes/guides/security/StandardNames.html#SSLContext">
  * SSLContext section</a> of the