Add Cipher support to autodocs.

Ciphers are more complicated than other categories because providers can
declare that they provide a base algorithm but users request an
algorithm/mode/padding triple, so we need to investigate the possible
values of that triple and see which ones actually end up available.

We ignore all the PBE ciphers because they're a mess and we don't
want them to show up in the documentation.

The starting API level for AES/GCM/NOPADDING is actually an educated
guess, it's approximately correct but might be off by one or two.
I'll update it if I later get better information.

Bug: 35793879
Test: Ran run_update_crypto_support.sh
Change-Id: Ifb827818626690ff223f691c8297731790074283
diff --git a/tools/docs/crypto/update_crypto_support.py b/tools/docs/crypto/update_crypto_support.py
index c8d19df..7d7861f 100755
--- a/tools/docs/crypto/update_crypto_support.py
+++ b/tools/docs/crypto/update_crypto_support.py
@@ -29,7 +29,6 @@
 import json
 import sys
 
-# TODO(b/35793879): Support more categories
 SUPPORTED_CATEGORIES = [
     'AlgorithmParameterGenerator',
     'AlgorithmParameters',
@@ -37,6 +36,7 @@
     'CertPathBuilder',
     'CertPathValidator',
     'CertStore',
+    'Cipher',
     'KeyAgreement',
     'KeyFactory',
     'KeyGenerator',
@@ -73,6 +73,12 @@
     # reverse.  X.509 is the official name of the standard, so use that.
     if name == "X509":
         name = "X.509"
+    # PKCS5PADDING and PKCS7PADDING are the same thing (more accurately, PKCS#5
+    # is a special case of PKCS#7), but providers are inconsistent in their
+    # naming.  Use PKCS5PADDING because that's what our docs have used
+    # historically.
+    if name.endswith("/PKCS7PADDING"):
+        name = name[:-1 * len("/PKCS7PADDING")] + "/PKCS5PADDING"
     return name
 
 def get_current_data(f):