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