external/conscrypt: align registered modes with BoringSSL.

Some of the more obscure modes BoringSSL doesn't support anymore, so
just let Bouncycastle implement them.

Bug: 20451412
Change-Id: I966e08493b1df741ffc114d3189b301456011a4e
diff --git a/src/main/java/org/conscrypt/OpenSSLCipher.java b/src/main/java/org/conscrypt/OpenSSLCipher.java
index 4f78db1..d20fec5 100644
--- a/src/main/java/org/conscrypt/OpenSSLCipher.java
+++ b/src/main/java/org/conscrypt/OpenSSLCipher.java
@@ -50,12 +50,8 @@
      */
     protected static enum Mode {
         CBC,
-        CFB, CFB1, CFB8, CFB128,
         CTR,
-        CTS,
         ECB,
-        OFB, OFB64, OFB128,
-        PCBC,
     }
 
     /**
@@ -548,12 +544,6 @@
             }
         }
 
-        public static class CFB extends AES {
-            public CFB() {
-                super(Mode.CFB, Padding.NOPADDING);
-            }
-        }
-
         public static class CTR extends AES {
             public CTR() {
                 super(Mode.CTR, Padding.NOPADDING);
@@ -578,12 +568,6 @@
             }
         }
 
-        public static class OFB extends AES {
-            public OFB() {
-                super(Mode.OFB, Padding.NOPADDING);
-            }
-        }
-
         @Override
         protected void checkSupportedKeySize(int keyLength) throws InvalidKeyException {
             switch (keyLength) {
@@ -600,13 +584,8 @@
         protected void checkSupportedMode(Mode mode) throws NoSuchAlgorithmException {
             switch (mode) {
                 case CBC:
-                case CFB:
-                case CFB1:
-                case CFB8:
-                case CFB128:
                 case CTR:
                 case ECB:
-                case OFB:
                     return;
                 default:
                     throw new NoSuchAlgorithmException("Unsupported mode " + mode.toString());
@@ -665,36 +644,6 @@
             }
         }
 
-        public static class CFB extends DESEDE {
-            public CFB() {
-                super(Mode.CFB, Padding.NOPADDING);
-            }
-        }
-
-        public static class ECB extends DESEDE {
-            public ECB(Padding padding) {
-                super(Mode.ECB, padding);
-            }
-
-            public static class NoPadding extends ECB {
-                public NoPadding() {
-                    super(Padding.NOPADDING);
-                }
-            }
-
-            public static class PKCS5Padding extends ECB {
-                public PKCS5Padding() {
-                    super(Padding.PKCS5PADDING);
-                }
-            }
-        }
-
-        public static class OFB extends DESEDE {
-            public OFB() {
-                super(Mode.OFB, Padding.NOPADDING);
-            }
-        }
-
         @Override
         protected String getBaseCipherName() {
             return "DESede";
@@ -709,11 +658,7 @@
                 baseCipherName = "des-ede3";
             }
 
-            if (mode == Mode.ECB) {
-                return baseCipherName;
-            } else {
-                return baseCipherName + "-" + mode.toString().toLowerCase(Locale.US);
-            }
+            return baseCipherName + "-" + mode.toString().toLowerCase(Locale.US);
         }
 
         @Override
@@ -727,11 +672,6 @@
         protected void checkSupportedMode(Mode mode) throws NoSuchAlgorithmException {
             switch (mode) {
                 case CBC:
-                case CFB:
-                case CFB1:
-                case CFB8:
-                case ECB:
-                case OFB:
                     return;
                 default:
                     throw new NoSuchAlgorithmException("Unsupported mode " + mode.toString());
diff --git a/src/main/java/org/conscrypt/OpenSSLProvider.java b/src/main/java/org/conscrypt/OpenSSLProvider.java
index e4c6aec..906a89a 100644
--- a/src/main/java/org/conscrypt/OpenSSLProvider.java
+++ b/src/main/java/org/conscrypt/OpenSSLProvider.java
@@ -220,18 +220,11 @@
         putSymmetricCipherImplClass("AES/CBC/NoPadding", "OpenSSLCipher$AES$CBC$NoPadding");
         putSymmetricCipherImplClass("AES/CBC/PKCS5Padding", "OpenSSLCipher$AES$CBC$PKCS5Padding");
         put("Alg.Alias.Cipher.AES/CBC/PKCS7Padding", "AES/CBC/PKCS5Padding");
-        putSymmetricCipherImplClass("AES/CFB/NoPadding", "OpenSSLCipher$AES$CFB");
         putSymmetricCipherImplClass("AES/CTR/NoPadding", "OpenSSLCipher$AES$CTR");
-        putSymmetricCipherImplClass("AES/OFB/NoPadding", "OpenSSLCipher$AES$OFB");
 
-        putSymmetricCipherImplClass("DESEDE/ECB/NoPadding", "OpenSSLCipher$DESEDE$ECB$NoPadding");
-        putSymmetricCipherImplClass("DESEDE/ECB/PKCS5Padding", "OpenSSLCipher$DESEDE$ECB$PKCS5Padding");
-        put("Alg.Alias.Cipher.DESEDE/ECB/PKCS7Padding", "DESEDE/ECB/PKCS5Padding");
         putSymmetricCipherImplClass("DESEDE/CBC/NoPadding", "OpenSSLCipher$DESEDE$CBC$NoPadding");
         putSymmetricCipherImplClass("DESEDE/CBC/PKCS5Padding", "OpenSSLCipher$DESEDE$CBC$PKCS5Padding");
         put("Alg.Alias.Cipher.DESEDE/CBC/PKCS7Padding", "DESEDE/CBC/PKCS5Padding");
-        putSymmetricCipherImplClass("DESEDE/CFB/NoPadding", "OpenSSLCipher$DESEDE$CFB");
-        putSymmetricCipherImplClass("DESEDE/OFB/NoPadding", "OpenSSLCipher$DESEDE$OFB");
 
         putSymmetricCipherImplClass("ARC4", "OpenSSLCipher$ARC4");
 
diff --git a/src/main/native/org_conscrypt_NativeCrypto.cpp b/src/main/native/org_conscrypt_NativeCrypto.cpp
index bf62096..29b0dc4 100644
--- a/src/main/native/org_conscrypt_NativeCrypto.cpp
+++ b/src/main/native/org_conscrypt_NativeCrypto.cpp
@@ -4528,6 +4528,14 @@
         cipher = EVP_aes_128_ctr();
     } else if (strcasecmp(alg, "aes-128-gcm") == 0) {
         cipher = EVP_aes_128_gcm();
+    } else if (strcasecmp(alg, "aes-192-ecb") == 0) {
+        cipher = EVP_aes_192_ecb();
+    } else if (strcasecmp(alg, "aes-192-cbc") == 0) {
+        cipher = EVP_aes_192_cbc();
+    } else if (strcasecmp(alg, "aes-192-ctr") == 0) {
+        cipher = EVP_aes_192_ctr();
+    } else if (strcasecmp(alg, "aes-192-gcm") == 0) {
+        cipher = EVP_aes_192_gcm();
     } else if (strcasecmp(alg, "aes-256-ecb") == 0) {
         cipher = EVP_aes_256_ecb();
     } else if (strcasecmp(alg, "aes-256-cbc") == 0) {