Included valid S/MIME public keys for recipients

pull/178/head
M66B 5 years ago
parent ae27d73f33
commit 6ff1a122e2

@ -2434,23 +2434,30 @@ public class FragmentCompose extends FragmentBase {
certs.add(chain[0]); // Allow sender to decrypt own message certs.add(chain[0]); // Allow sender to decrypt own message
for (Address address : addresses) { for (Address address : addresses) {
boolean found = false;
Throwable cex = null;
String email = ((InternetAddress) address).getAddress(); String email = ((InternetAddress) address).getAddress();
List<EntityCertificate> acertificates = db.certificate().getCertificateByEmail(email); List<EntityCertificate> acertificates = db.certificate().getCertificateByEmail(email);
if (acertificates == null || acertificates.size() == 0) if (acertificates != null)
throw new IllegalArgumentException( for (EntityCertificate acertificate : acertificates) {
context.getString(R.string.title_certificate_missing, email), new CertificateException()); X509Certificate cert = acertificate.getCertificate();
try {
cert.checkValidity();
certs.add(cert);
found = true;
} catch (CertificateException ex) {
Log.w(ex);
cex = ex;
}
}
for (EntityCertificate acertificate : acertificates) { if (!found)
X509Certificate cert = acertificate.getCertificate(); if (cex == null)
try {
cert.checkValidity();
} catch (CertificateException ex) {
throw new IllegalArgumentException( throw new IllegalArgumentException(
context.getString(R.string.title_certificate_invalid, email), ex); context.getString(R.string.title_certificate_missing, email));
} else
certs.add(cert); throw new IllegalArgumentException(
} context.getString(R.string.title_certificate_invalid, email), cex);
} }
// Build signature // Build signature

Loading…
Cancel
Save