diff --git a/app/src/main/java/eu/faircode/email/ApplicationEx.java b/app/src/main/java/eu/faircode/email/ApplicationEx.java
index 3f7b57b4d6..5ab86b0b9f 100644
--- a/app/src/main/java/eu/faircode/email/ApplicationEx.java
+++ b/app/src/main/java/eu/faircode/email/ApplicationEx.java
@@ -516,6 +516,9 @@ public class ApplicationEx extends Application
if (!prefs.contains("landscape3"))
editor.putBoolean("landscape3", false);
}
+ } else if (version < 17150) {
+ editor.remove("sign_algo_smime");
+ editor.remove("encrypt_algo_smime");
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && !BuildConfig.DEBUG)
diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java
index 7086f6b0c1..5854b7e05f 100644
--- a/app/src/main/java/eu/faircode/email/FragmentCompose.java
+++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java
@@ -3434,12 +3434,7 @@ public class FragmentCompose extends FragmentBase {
CMSSignedDataGenerator cmsGenerator = new CMSSignedDataGenerator();
cmsGenerator.addCertificates(store);
- String signAlgorithm = prefs.getString("sign_algo_smime", "SHA256");
-
- // https://datatracker.ietf.org/doc/html/rfc5751#page-29
- String micalg = signAlgorithm.toLowerCase(Locale.ROOT);
- if (micalg.startsWith("sha"))
- micalg = micalg.substring(0, 3) + "-" + micalg.substring(3);
+ String signAlgorithm = prefs.getString("sign_algo_smime", "SHA-256");
String algorithm = privkey.getAlgorithm();
if (TextUtils.isEmpty(algorithm) || "RSA".equals(algorithm))
@@ -3477,7 +3472,7 @@ public class FragmentCompose extends FragmentBase {
// Build signature
if (EntityMessage.SMIME_SIGNONLY.equals(type)) {
ContentType ct = new ContentType("application/pkcs7-signature");
- ct.setParameter("micalg", micalg);
+ ct.setParameter("micalg", signAlgorithm.toLowerCase(Locale.ROOT));
EntityAttachment sattachment = new EntityAttachment();
sattachment.message = draft.id;
@@ -3550,7 +3545,7 @@ public class FragmentCompose extends FragmentBase {
// Build message
ContentType ct = new ContentType("multipart/signed");
- ct.setParameter("micalg", micalg);
+ ct.setParameter("micalg", signAlgorithm.toLowerCase(Locale.ROOT));
ct.setParameter("protocol", "application/pkcs7-signature");
ct.setParameter("smime-type", "signed-data");
String ctx = ct.toString();
@@ -3587,17 +3582,16 @@ public class FragmentCompose extends FragmentBase {
}
CMSTypedData msg = new CMSProcessableFile(einput);
- // https://datatracker.ietf.org/doc/html/rfc5751#section-2.7
ASN1ObjectIdentifier encryptionOID;
- String encryptAlgorithm = prefs.getString("encrypt_algo_smime", "AES128");
+ String encryptAlgorithm = prefs.getString("encrypt_algo_smime", "AES-128");
switch (encryptAlgorithm) {
- case "AES128":
+ case "AES-128":
encryptionOID = CMSAlgorithm.AES128_CBC;
break;
- case "AES192":
+ case "AES-192":
encryptionOID = CMSAlgorithm.AES192_CBC;
break;
- case "AES256":
+ case "AES-256":
encryptionOID = CMSAlgorithm.AES256_CBC;
break;
default:
diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsEncryption.java b/app/src/main/java/eu/faircode/email/FragmentOptionsEncryption.java
index 43dcd9eeab..965147c7fe 100644
--- a/app/src/main/java/eu/faircode/email/FragmentOptionsEncryption.java
+++ b/app/src/main/java/eu/faircode/email/FragmentOptionsEncryption.java
@@ -471,7 +471,7 @@ public class FragmentOptionsEncryption extends FragmentBase implements SharedPre
swAutocryptMutual.setEnabled(swAutocrypt.isChecked());
swEncryptSubject.setChecked(prefs.getBoolean("encrypt_subject", false));
- String signAlgorithm = prefs.getString("sign_algo_smime", "SHA256");
+ String signAlgorithm = prefs.getString("sign_algo_smime", "SHA-256");
String[] smimeSignAlgo = getResources().getStringArray(R.array.smimeSignAlgo);
for (int pos = 0; pos < smimeSignAlgo.length; pos++)
if (smimeSignAlgo[pos].equals(signAlgorithm)) {
@@ -479,7 +479,7 @@ public class FragmentOptionsEncryption extends FragmentBase implements SharedPre
break;
}
- String encryptAlgorithm = prefs.getString("encrypt_algo_smime", "AES128");
+ String encryptAlgorithm = prefs.getString("encrypt_algo_smime", "AES-128");
String[] smimeEncryptAlgo = getResources().getStringArray(R.array.smimeEncryptAlgo);
for (int pos = 0; pos < smimeEncryptAlgo.length; pos++)
if (smimeEncryptAlgo[pos].equals(encryptAlgorithm)) {
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index b758a4a72a..5bff6ccf41 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -2023,19 +2023,21 @@
+
- MD5
- - SHA1
- - SHA224
- - SHA256
- - SHA384
- - SHA512
+ - SHA-1
+ - SHA-224
+ - SHA-256
+ - SHA-384
+ - SHA-512
+
- - AES128
- - AES192
- - AES256
+ - AES-128
+ - AES-192
+ - AES-256
17BA15C1AF55D925F98B99CEA4375D4CDF4C174B