Merge "Improve logging / status"
diff --git a/ojluni/src/main/java/java/security/AlgorithmParameterGenerator.java b/ojluni/src/main/java/java/security/AlgorithmParameterGenerator.java
index 5224158..7355405 100644
--- a/ojluni/src/main/java/java/security/AlgorithmParameterGenerator.java
+++ b/ojluni/src/main/java/java/security/AlgorithmParameterGenerator.java
@@ -68,34 +68,34 @@
  *
  * <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>
+ *   <thead>
+ *     <tr>
+ *       <th>Algorithm</th>
+ *       <th>Supported API Levels</th>
+ *     </tr>
+ *   </thead>
+ *   <tbody>
+ *     <tr class="deprecated">
+ *       <td>AES</td>
+ *       <td>1-8</td>
+ *     </tr>
+ *     <tr class="deprecated">
+ *       <td>DES</td>
+ *       <td>1-8</td>
+ *     </tr>
+ *     <tr class="deprecated">
+ *       <td>DESede</td>
+ *       <td>1-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=
diff --git a/ojluni/src/main/java/java/security/AlgorithmParameters.java b/ojluni/src/main/java/java/security/AlgorithmParameters.java
index af5ed7e..36bb3ee 100644
--- a/ojluni/src/main/java/java/security/AlgorithmParameters.java
+++ b/ojluni/src/main/java/java/security/AlgorithmParameters.java
@@ -48,58 +48,102 @@
  *
  * <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>
+ *   <thead>
+ *     <tr>
+ *       <th>Algorithm</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>EC</td>
+ *       <td>26+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>GCM</td>
+ *       <td>22+</td>
+ *     </tr>
+ *     <tr class="deprecated">
+ *       <td>IES</td>
+ *       <td>1-8</td>
+ *     </tr>
+ *     <tr>
+ *       <td>OAEP</td>
+ *       <td>1+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>PBEwithHmacSHA1AndAES_128</td>
+ *       <td>26+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>PBEwithHmacSHA1AndAES_256</td>
+ *       <td>26+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>PBEwithHmacSHA224AndAES_128</td>
+ *       <td>26+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>PBEwithHmacSHA224AndAES_256</td>
+ *       <td>26+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>PBEwithHmacSHA256AndAES_128</td>
+ *       <td>26+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>PBEwithHmacSHA256AndAES_256</td>
+ *       <td>26+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>PBEwithHmacSHA384AndAES_128</td>
+ *       <td>26+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>PBEwithHmacSHA384AndAES_256</td>
+ *       <td>26+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>PBEwithHmacSHA512AndAES_128</td>
+ *       <td>26+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>PBEwithHmacSHA512AndAES_256</td>
+ *       <td>26+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>PKCS12PBE</td>
+ *       <td>1+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>PSS</td>
+ *       <td>1-8,24+</td>
+ *     </tr>
+ *   </tbody>
  * </table>
  *
  * These algorithms are described in the <a href=
diff --git a/ojluni/src/main/java/java/security/KeyFactory.java b/ojluni/src/main/java/java/security/KeyFactory.java
index 92149ae..a6b912c 100644
--- a/ojluni/src/main/java/java/security/KeyFactory.java
+++ b/ojluni/src/main/java/java/security/KeyFactory.java
@@ -69,34 +69,34 @@
  *
  * <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>
+ *   <thead>
+ *     <tr>
+ *       <th>Algorithm</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 class="deprecated">
+ *       <td>X.509</td>
+ *       <td>1-8</td>
+ *     </tr>
+ *   </tbody>
  * </table>
  *
  * These algorithms are described in the <a href=
diff --git a/ojluni/src/main/java/java/security/KeyPairGenerator.java b/ojluni/src/main/java/java/security/KeyPairGenerator.java
index c9fa996..1e46cee 100644
--- a/ojluni/src/main/java/java/security/KeyPairGenerator.java
+++ b/ojluni/src/main/java/java/security/KeyPairGenerator.java
@@ -111,30 +111,30 @@
  *
  * <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>
+ *   <thead>
+ *     <tr>
+ *       <th>Algorithm</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=
diff --git a/ojluni/src/main/java/java/security/KeyStore.java b/ojluni/src/main/java/java/security/KeyStore.java
index 43ecd6d..d091781 100644
--- a/ojluni/src/main/java/java/security/KeyStore.java
+++ b/ojluni/src/main/java/java/security/KeyStore.java
@@ -156,42 +156,42 @@
  *
  * <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>
+ *   <thead>
+ *     <tr>
+ *       <th>Algorithm</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 class="deprecated">
+ *       <td>BCPKCS12</td>
+ *       <td>1-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 class="deprecated">
+ *       <td>PKCS12-DEF</td>
+ *       <td>1-8</td>
+ *     </tr>
+ *   </tbody>
  * </table>
  *
  * These types are described in the <a href=
diff --git a/ojluni/src/main/java/java/security/MessageDigest.java b/ojluni/src/main/java/java/security/MessageDigest.java
index d173048..df6c456 100644
--- a/ojluni/src/main/java/java/security/MessageDigest.java
+++ b/ojluni/src/main/java/java/security/MessageDigest.java
@@ -87,38 +87,38 @@
  *
  * <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>
+ *   <thead>
+ *     <tr>
+ *       <th>Algorithm</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-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=
diff --git a/ojluni/src/main/java/java/security/Signature.java b/ojluni/src/main/java/java/security/Signature.java
index 730803f..7e9f5a8 100644
--- a/ojluni/src/main/java/java/security/Signature.java
+++ b/ojluni/src/main/java/java/security/Signature.java
@@ -99,106 +99,142 @@
  *
  * <p> Android provides the following {@code Signature} 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>
+ *   <thead>
+ *     <tr>
+ *       <th>Algorithm</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 class="deprecated">
+ *       <td>DSS</td>
+ *       <td>1-19</td>
+ *     </tr>
+ *     <tr>
+ *       <td>ECDSA</td>
+ *       <td>11+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>ECDSAwithSHA1</td>
+ *       <td>11+</td>
+ *     </tr>
+ *     <tr class="deprecated">
+ *       <td>MD2withRSA</td>
+ *       <td>1-3</td>
+ *     </tr>
+ *     <tr class="deprecated">
+ *       <td>MD4withRSA</td>
+ *       <td>1-8</td>
+ *     </tr>
+ *     <tr>
+ *       <td>MD5withRSA</td>
+ *       <td>1+</td>
+ *     </tr>
+ *     <tr class="deprecated">
+ *       <td>MD5withRSA/ISO9796-2</td>
+ *       <td>1-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 class="deprecated">
+ *       <td>RSASSA-PSS</td>
+ *       <td>1-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 class="deprecated">
+ *       <td>SHA1withRSA/ISO9796-2</td>
+ *       <td>1-8</td>
+ *     </tr>
+ *     <tr>
+ *       <td>SHA1withRSA/PSS</td>
+ *       <td>23+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>SHA224withDSA</td>
+ *       <td>20+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>SHA224withECDSA</td>
+ *       <td>20+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>SHA224withRSA</td>
+ *       <td>20+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>SHA224withRSA/PSS</td>
+ *       <td>23+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>SHA256withDSA</td>
+ *       <td>1+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>SHA256withECDSA</td>
+ *       <td>11+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>SHA256withRSA</td>
+ *       <td>1+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>SHA256withRSA/PSS</td>
+ *       <td>23+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>SHA384withECDSA</td>
+ *       <td>11+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>SHA384withRSA</td>
+ *       <td>1+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>SHA384withRSA/PSS</td>
+ *       <td>23+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>SHA512withECDSA</td>
+ *       <td>11+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>SHA512withRSA</td>
+ *       <td>1+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>SHA512withRSA/PSS</td>
+ *       <td>23+</td>
+ *     </tr>
+ *   </tbody>
  * </table>
  *
  * These algorithms are described in the <a href=
diff --git a/ojluni/src/main/java/java/security/cert/CertPathBuilder.java b/ojluni/src/main/java/java/security/cert/CertPathBuilder.java
index da5e322..fd6cdc8 100644
--- a/ojluni/src/main/java/java/security/cert/CertPathBuilder.java
+++ b/ojluni/src/main/java/java/security/cert/CertPathBuilder.java
@@ -68,18 +68,18 @@
  *
  * <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>
+ *   <thead>
+ *     <tr>
+ *       <th>Algorithm</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=
diff --git a/ojluni/src/main/java/java/security/cert/CertPathValidator.java b/ojluni/src/main/java/java/security/cert/CertPathValidator.java
index 40adafe..3a4b053 100644
--- a/ojluni/src/main/java/java/security/cert/CertPathValidator.java
+++ b/ojluni/src/main/java/java/security/cert/CertPathValidator.java
@@ -70,18 +70,18 @@
  *
  * <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>
+ *   <thead>
+ *     <tr>
+ *       <th>Algorithm</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=
diff --git a/ojluni/src/main/java/java/security/cert/CertStore.java b/ojluni/src/main/java/java/security/cert/CertStore.java
index add36cd..047af77 100644
--- a/ojluni/src/main/java/java/security/cert/CertStore.java
+++ b/ojluni/src/main/java/java/security/cert/CertStore.java
@@ -62,18 +62,18 @@
  *
  * <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>
+ *   <thead>
+ *     <tr>
+ *       <th>Algorithm</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=
diff --git a/ojluni/src/main/java/java/security/cert/CertificateFactory.java b/ojluni/src/main/java/java/security/cert/CertificateFactory.java
index e82a579..e74ff0a 100644
--- a/ojluni/src/main/java/java/security/cert/CertificateFactory.java
+++ b/ojluni/src/main/java/java/security/cert/CertificateFactory.java
@@ -93,18 +93,18 @@
  *
  * <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>
+ *   <thead>
+ *     <tr>
+ *       <th>Algorithm</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:
  * <table>
diff --git a/ojluni/src/main/java/javax/crypto/Cipher.java b/ojluni/src/main/java/javax/crypto/Cipher.java
index ea88f04..c2a2183 100644
--- a/ojluni/src/main/java/javax/crypto/Cipher.java
+++ b/ojluni/src/main/java/javax/crypto/Cipher.java
@@ -134,494 +134,87 @@
  * </pre>
  * <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>
+ *   <thead>
+ *     <tr>
+ *       <th>Algorithm</th>
+ *       <th>Modes</th>
+ *       <th>Paddings</th>
+ *       <th>Supported API Levels</th>
+ *     </tr>
+ *   </thead>
+ *   <tbody>
+ *     <tr>
+ *       <td rowspan="2">AES</td>
+ *       <td>CBC<br>CFB<br>CTR<br>CTS<br>ECB<br>OFB</td>
+ *       <td>ISO10126Padding<br>NoPadding<br>PKCS5Padding</td>
+ *       <td>1+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>GCM</td>
+ *       <td>NOPADDING</td>
+ *       <td>10+</td>
+ *     </tr>
+ *     <tr>
+ *       <td rowspan="2">AES_128</td>
+ *       <td>CBC<br>ECB</td>
+ *       <td>NoPadding<br>PKCS5Padding</td>
+ *       <td>26+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>GCM</td>
+ *       <td>NoPadding</td>
+ *       <td>26+</td>
+ *     </tr>
+ *     <tr>
+ *       <td rowspan="2">AES_256</td>
+ *       <td>CBC<br>ECB</td>
+ *       <td>NoPadding<br>PKCS5Padding</td>
+ *       <td>26+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>GCM</td>
+ *       <td>NoPadding</td>
+ *       <td>26+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>ARC4</td>
+ *       <td>ECB</td>
+ *       <td>NoPadding</td>
+ *       <td>10+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>BLOWFISH</td>
+ *       <td>CBC<br>CFB<br>CTR<br>CTS<br>ECB<br>OFB</td>
+ *       <td>ISO10126Padding<br>NoPadding<br>PKCS5Padding</td>
+ *       <td>10+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>DES</td>
+ *       <td>CBC<br>CFB<br>CTR<br>CTS<br>ECB<br>OFB</td>
+ *       <td>ISO10126Padding<br>NoPadding<br>PKCS5Padding</td>
+ *       <td>1+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>DESede</td>
+ *       <td>CBC<br>CFB<br>CTR<br>CTS<br>ECB<br>OFB</td>
+ *       <td>ISO10126Padding<br>NoPadding<br>PKCS5Padding</td>
+ *       <td>1+</td>
+ *     </tr>
+ *     <tr>
+ *       <td rowspan="3">RSA</td>
+ *       <td rowspan="3">ECB<br>NONE</td>
+ *       <td>NoPadding<br>OAEPPadding<br>PKCS1Padding</td>
+ *       <td>1+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>OAEPwithSHA-1andMGF1Padding<br>OAEPwithSHA-256andMGF1Padding</td>
+ *       <td>10+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>OAEPwithSHA-224andMGF1Padding<br>OAEPwithSHA-384andMGF1Padding<br>OAEPwithSHA-512andMGF1Padding</td>
+ *       <td>23+</td>
+ *     </tr>
+ *   </tbody>
  * </table>
  *
  * These transformations are described in the
diff --git a/ojluni/src/main/java/javax/crypto/KeyAgreement.java b/ojluni/src/main/java/javax/crypto/KeyAgreement.java
index dab71f5..8a0b1c1 100644
--- a/ojluni/src/main/java/javax/crypto/KeyAgreement.java
+++ b/ojluni/src/main/java/javax/crypto/KeyAgreement.java
@@ -59,22 +59,22 @@
  *
  * <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>
+ *   <thead>
+ *     <tr>
+ *       <th>Algorithm</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=
diff --git a/ojluni/src/main/java/javax/crypto/KeyGenerator.java b/ojluni/src/main/java/javax/crypto/KeyGenerator.java
index cb3ad69..8a54e5c 100644
--- a/ojluni/src/main/java/javax/crypto/KeyGenerator.java
+++ b/ojluni/src/main/java/javax/crypto/KeyGenerator.java
@@ -88,70 +88,70 @@
  *
  * <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>
+ *   <thead>
+ *     <tr>
+ *       <th>Algorithm</th>
+ *       <th>Supported API Levels</th>
+ *     </tr>
+ *   </thead>
+ *   <tbody>
+ *     <tr>
+ *       <td>AES</td>
+ *       <td>1+</td>
+ *     </tr>
+ *     <tr class="deprecated">
+ *       <td>AESWRAP</td>
+ *       <td>1-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 class="deprecated">
+ *       <td>DESedeWRAP</td>
+ *       <td>1-8</td>
+ *     </tr>
+ *     <tr>
+ *       <td>HmacMD5</td>
+ *       <td>1+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>HmacSHA1</td>
+ *       <td>11+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>HmacSHA224</td>
+ *       <td>1-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 class="deprecated">
+ *       <td>RC4</td>
+ *       <td>10-13</td>
+ *     </tr>
+ *   </tbody>
  * </table>
  *
  * These algorithms are described in the <a href=
diff --git a/ojluni/src/main/java/javax/crypto/Mac.java b/ojluni/src/main/java/javax/crypto/Mac.java
index bee46cd..2315db7 100644
--- a/ojluni/src/main/java/javax/crypto/Mac.java
+++ b/ojluni/src/main/java/javax/crypto/Mac.java
@@ -56,76 +56,92 @@
  * e.g., MD5 or SHA-1, in combination with a secret shared key. HMAC is
  * specified in RFC 2104.
  *
- * <p> Android provides the following <code>Mac</code> algorithms
+ * <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>
+ *   <thead>
+ *     <tr>
+ *       <th>Algorithm</th>
+ *       <th>Supported API Levels</th>
+ *     </tr>
+ *   </thead>
+ *   <tbody>
+ *     <tr class="deprecated">
+ *       <td>DESMAC</td>
+ *       <td>1-8</td>
+ *     </tr>
+ *     <tr class="deprecated">
+ *       <td>DESMAC/CFB8</td>
+ *       <td>1-8</td>
+ *     </tr>
+ *     <tr class="deprecated">
+ *       <td>DESedeMAC</td>
+ *       <td>1-8</td>
+ *     </tr>
+ *     <tr class="deprecated">
+ *       <td>DESedeMAC/CFB8</td>
+ *       <td>1-8</td>
+ *     </tr>
+ *     <tr class="deprecated">
+ *       <td>DESedeMAC64</td>
+ *       <td>1-8</td>
+ *     </tr>
+ *     <tr class="deprecated">
+ *       <td>DESwithISO9797</td>
+ *       <td>1-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-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 class="deprecated">
+ *       <td>ISO9797ALG3MAC</td>
+ *       <td>1-8</td>
+ *     </tr>
+ *     <tr>
+ *       <td>PBEwithHmacSHA</td>
+ *       <td>1+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>PBEwithHmacSHA1</td>
+ *       <td>1+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>PBEwithHmacSHA224</td>
+ *       <td>26+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>PBEwithHmacSHA256</td>
+ *       <td>26+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>PBEwithHmacSHA384</td>
+ *       <td>26+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>PBEwithHmacSHA512</td>
+ *       <td>26+</td>
+ *     </tr>
+ *   </tbody>
  * </table>
  *
  * These algorithms are described in the
diff --git a/ojluni/src/main/java/javax/crypto/SecretKeyFactory.java b/ojluni/src/main/java/javax/crypto/SecretKeyFactory.java
index 0c323dd..c1358c2 100644
--- a/ojluni/src/main/java/javax/crypto/SecretKeyFactory.java
+++ b/ojluni/src/main/java/javax/crypto/SecretKeyFactory.java
@@ -60,138 +60,194 @@
  *
  * <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>
+ *   <thead>
+ *     <tr>
+ *       <th>Algorithm</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>PBEwithHmacSHA1AndAES_128</td>
+ *       <td>26+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>PBEwithHmacSHA1AndAES_256</td>
+ *       <td>26+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>PBEwithHmacSHA224AndAES_128</td>
+ *       <td>26+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>PBEwithHmacSHA224AndAES_256</td>
+ *       <td>26+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>PBEwithHmacSHA256AndAES_128</td>
+ *       <td>26+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>PBEwithHmacSHA256AndAES_256</td>
+ *       <td>26+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>PBEwithHmacSHA384AndAES_128</td>
+ *       <td>26+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>PBEwithHmacSHA384AndAES_256</td>
+ *       <td>26+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>PBEwithHmacSHA512AndAES_128</td>
+ *       <td>26+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>PBEwithHmacSHA512AndAES_256</td>
+ *       <td>26+</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>
+ *     <tr>
+ *       <td>PBKDF2withHmacSHA224</td>
+ *       <td>26+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>PBKDF2withHmacSHA256</td>
+ *       <td>26+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>PBKDF2withHmacSHA384</td>
+ *       <td>26+</td>
+ *     </tr>
+ *     <tr>
+ *       <td>PBKDF2withHmacSHA512</td>
+ *       <td>26+</td>
+ *     </tr>
+ *   </tbody>
  * </table>
  *
  * These algorithms are described in the <a href=
diff --git a/ojluni/src/main/java/javax/net/ssl/KeyManagerFactory.java b/ojluni/src/main/java/javax/net/ssl/KeyManagerFactory.java
index 70ea99f..e08853a 100644
--- a/ojluni/src/main/java/javax/net/ssl/KeyManagerFactory.java
+++ b/ojluni/src/main/java/javax/net/ssl/KeyManagerFactory.java
@@ -36,6 +36,22 @@
  * type of key material for use by secure sockets. The key
  * material is based on a KeyStore and/or provider specific sources.
  *
+ * <p> Android provides the following <code>KeyManagerFactory</code> algorithms:
+ * <table>
+ *   <thead>
+ *     <tr>
+ *       <th>Algorithm</th>
+ *       <th>Supported API Levels</th>
+ *     </tr>
+ *   </thead>
+ *   <tbody>
+ *     <tr>
+ *       <td>PKIX</td>
+ *       <td>1+</td>
+ *     </tr>
+ *   </tbody>
+ * </table>
+ *
  * @since 1.4
  * @see KeyManager
  */
diff --git a/ojluni/src/main/java/javax/net/ssl/SSLContext.java b/ojluni/src/main/java/javax/net/ssl/SSLContext.java
index fa8a3af..f49147e 100644
--- a/ojluni/src/main/java/javax/net/ssl/SSLContext.java
+++ b/ojluni/src/main/java/javax/net/ssl/SSLContext.java
@@ -39,42 +39,42 @@
  *
  * <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 class="deprecated">
- *             <td>SSL</td>
- *             <td>10&ndash;TBD</td>
- *         </tr>
- *         <tr class="deprecated">
- *             <td>SSLv3</td>
- *             <td>10&ndash;TBD</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>
+ *   <thead>
+ *     <tr>
+ *       <th>Algorithm</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 class="deprecated">
+ *       <td>SSLv3</td>
+ *       <td>10-25</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=
diff --git a/ojluni/src/main/java/javax/net/ssl/TrustManagerFactory.java b/ojluni/src/main/java/javax/net/ssl/TrustManagerFactory.java
index aa5baa7..43cb221 100644
--- a/ojluni/src/main/java/javax/net/ssl/TrustManagerFactory.java
+++ b/ojluni/src/main/java/javax/net/ssl/TrustManagerFactory.java
@@ -36,6 +36,22 @@
  * type of trust material for use by secure sockets. The trust
  * material is based on a KeyStore and/or provider specific sources.
  *
+ * <p> Android provides the following <code>TrustManagerFactory</code> algorithms:
+ * <table>
+ *   <thead>
+ *     <tr>
+ *       <th>Algorithm</th>
+ *       <th>Supported API Levels</th>
+ *     </tr>
+ *   </thead>
+ *   <tbody>
+ *     <tr>
+ *       <td>PKIX</td>
+ *       <td>1+</td>
+ *     </tr>
+ *   </tbody>
+ * </table>
+ *
  * @since 1.4
  * @see TrustManager
  */
diff --git a/tools/upstream/oj_upstream_comparison.py b/tools/upstream/oj_upstream_comparison.py
new file mode 100755
index 0000000..312483c
--- /dev/null
+++ b/tools/upstream/oj_upstream_comparison.py
@@ -0,0 +1,160 @@
+#!/usr/bin/env python
+#
+# Copyright (C) 2017 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Helps compare openjdk_java_files contents against upstream file contents.
+
+Outputs a tab-separated table comparing each openjdk_java_files entry
+against OpenJDK upstreams. This can help verify updates to later upstreams
+or focus attention towards files that may have been missed in a previous
+update (http://b/36461944) or are otherwise surprising (http://b/36429512).
+
+ - Identifies each file as identical to, different from or missing from
+   each upstream; diffs are not produced.
+ - Optionally, copies all openjdk_java_files from the default upstream
+   (eg. OpenJDK8u121-b13) to a new directory, for easy directory comparison
+   using e.g. kdiff3, which allows inspecting detailed diffs.
+ - The ANDROID_BUILD_TOP environment variable must be set to point to the
+   AOSP root directory (parent of libcore).
+ - Run with -h command line argument to get usage instructions.
+
+To check out upstreams OpenJDK 7u40, 8u60 and 8u121-b13, run:
+
+mkdir openjdk
+cd openjdk
+hg clone http://hg.openjdk.java.net/jdk7u/jdk7u40/ 7u40
+(cd !$ ; sh get_source.sh)
+hg clone http://hg.openjdk.java.net/jdk8u/jdk8u 8u121-b13
+(cd !$ ; hg update -r jdk8u121-b13 && sh get_source.sh)
+hg clone http://hg.openjdk.java.net/jdk8u/jdk8u60/ 8u60
+(cd !$ ; sh get_source.sh)
+
+The newly created openjdk directory is then a suitable argument for the
+--upstream_root parameter.
+"""
+
+import argparse
+import filecmp
+import os
+import re
+import shutil
+
+def rel_paths_from_makefile(build_top):
+    """Returns the list of relative paths to .java files parsed from openjdk_java_files.mk"""
+    list_file = os.path.join(build_top, "libcore", "openjdk_java_files.mk")
+
+    result = []
+    with open(list_file, "r") as f:
+        for line in f:
+            match = re.match("\s+ojluni/src/main/java/(.+\.java)\s*\\\s*", line)
+            if match:
+                path = match.group(1)
+                # convert / to the appropriate separator (e.g. \ on Windows), just in case
+                path = os.path.normpath(path)
+                result.append(path)
+    return result
+
+def ojluni_path(build_top, rel_path):
+    """The full path of the file at the given rel_path in ojluni"""
+    return os.path.join(build_top, "libcore", "ojluni", "src", "main", "java", rel_path)
+
+def upstream_path(upstream_root, upstream, rel_path):
+    """The full path of the file at the given rel_path in the given upstream"""
+    source_dirs = [
+        "jdk/src/share/classes",
+        "jdk/src/solaris/classes"
+    ]
+    for source_dir in source_dirs:
+        source_dir = os.path.normpath(source_dir)
+        result = os.path.join(upstream_root, upstream, source_dir, rel_path)
+        if os.path.exists(result):
+            return result
+    return None
+
+def compare_to_upstreams(build_top, upstream_root, upstreams, rel_paths):
+    """
+    Returns a dict from rel_path to lists of length len(upstreams)
+    Each list entry specifies whether the file at a particular
+    rel_path is missing from, identical to, or different from
+    a particular upstream.
+    """
+    result = {}
+    for rel_path in rel_paths:
+        ojluni_file = ojluni_path(build_top, rel_path)
+        status = []
+        for upstream in upstreams:
+            upstream_file = upstream_path(upstream_root, upstream, rel_path)
+            if upstream_file is None:
+                upstream_status = "missing"
+            elif filecmp.cmp(upstream_file, ojluni_file, shallow=False):
+                upstream_status = "identical"
+            else:
+                upstream_status = "different"
+            status.append(upstream_status)
+        result[rel_path] = status
+    return result
+
+def copy_files(rel_paths, upstream_root, upstream, output_dir):
+    """Copies files at the given rel_paths from upstream to output_dir"""
+    for rel_path in rel_paths:
+        upstream_file = upstream_path(upstream_root, upstream, rel_path)
+        if upstream_file is not None:
+            out_file = os.path.join(output_dir, rel_path)
+            out_dir = os.path.dirname(out_file)
+            if not os.path.exists(out_dir):
+                os.makedirs(out_dir)
+            shutil.copyfile(upstream_file, out_file)
+
+def main():
+    parser = argparse.ArgumentParser(
+    description="Check openjdk_java_files contents against upstream file contents.")
+    parser.add_argument("--upstream_root",
+        help="Path below where upstream sources are checked out. This should be a "
+            "directory with one child directory for each upstream (select the "
+            "upstreams to compare against via --upstreams).",
+        required=True,)
+    parser.add_argument("--upstreams", 
+        default="8u121-b13,8u60,7u40",
+        help="Comma separated list of subdirectory names of --upstream_root that "
+            "each hold one upstream.")
+    parser.add_argument("--output_dir",
+        help="(optional) path where default upstream sources should be copied to; "
+            "this path must not yet exist and will be created. "
+            "The default upstream is the one that occurs first in --upstreams.")
+    parser.add_argument("--build_top",
+        default=os.environ.get('ANDROID_BUILD_TOP'),
+        help="Path where Android sources are checked out (defaults to $ANDROID_BUILD_TOP).")
+    args = parser.parse_args()
+    if args.output_dir is not None and os.path.exists(args.output_dir):
+        raise Exception("Output dir already exists: " + args.output_dir)
+
+    upstreams = [upstream.strip() for upstream in args.upstreams.split(',')]
+    default_upstream = upstreams[0]
+    for upstream in upstreams:
+        upstream_path = os.path.join(args.upstream_root, upstream)
+        if not os.path.exists(upstream_path):
+            raise Exception("Upstream not found: " + upstream_path)
+
+    rel_paths = rel_paths_from_makefile(args.build_top)
+    upstream_infos = compare_to_upstreams(args.build_top, args.upstream_root, upstreams, rel_paths)
+
+    if args.output_dir is not None:
+        copy_files(rel_paths, args.upstream_root, default_upstream, args.output_dir)
+
+    for rel_path in rel_paths:
+        print(rel_path + "\t" +  "\t".join(upstream_infos[rel_path]))
+
+if __name__ == '__main__':
+    main()