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):