Show S/MIME signature algorithm

pull/205/head
M66B 4 years ago
parent 3a6f28deef
commit a999ae2e3b

@ -149,6 +149,7 @@ import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar; import com.google.android.material.snackbar.Snackbar;
import org.bouncycastle.asn1.ASN1Encoding; import org.bouncycastle.asn1.ASN1Encoding;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
import org.bouncycastle.asn1.cms.Attribute; import org.bouncycastle.asn1.cms.Attribute;
import org.bouncycastle.asn1.cms.AttributeTable; import org.bouncycastle.asn1.cms.AttributeTable;
import org.bouncycastle.asn1.cms.CMSAttributes; import org.bouncycastle.asn1.cms.CMSAttributes;
@ -170,6 +171,7 @@ import org.bouncycastle.cms.SignerInformationVerifier;
import org.bouncycastle.cms.jcajce.JcaSimpleSignerInfoVerifierBuilder; import org.bouncycastle.cms.jcajce.JcaSimpleSignerInfoVerifierBuilder;
import org.bouncycastle.cms.jcajce.JceKeyTransEnvelopedRecipient; import org.bouncycastle.cms.jcajce.JceKeyTransEnvelopedRecipient;
import org.bouncycastle.cms.jcajce.JceKeyTransRecipient; import org.bouncycastle.cms.jcajce.JceKeyTransRecipient;
import org.bouncycastle.operator.DefaultAlgorithmNameFinder;
import org.bouncycastle.util.Store; import org.bouncycastle.util.Store;
import org.json.JSONException; import org.json.JSONException;
import org.jsoup.nodes.Document; import org.jsoup.nodes.Document;
@ -7095,6 +7097,17 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
args.putString("sender", sender); args.putString("sender", sender);
args.putBoolean("known", known); args.putBoolean("known", known);
String algo;
try {
DefaultAlgorithmNameFinder af = new DefaultAlgorithmNameFinder();
algo = af.getAlgorithmName(s.getDigestAlgorithmID()) +
"/" + af.getAlgorithmName(new ASN1ObjectIdentifier(s.getEncryptionAlgOID()));
} catch (Throwable ex) {
Log.e(ex);
algo = s.getDigestAlgOID() + "/" + s.getEncryptionAlgOID();
}
args.putString("algo", algo);
List<X509Certificate> certs = new ArrayList<>(); List<X509Certificate> certs = new ArrayList<>();
try { try {
for (Object m : store.getMatches(null)) { for (Object m : store.getMatches(null)) {
@ -7319,6 +7332,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
boolean known = args.getBoolean("known"); boolean known = args.getBoolean("known");
boolean valid = args.getBoolean("valid"); boolean valid = args.getBoolean("valid");
String reason = args.getString("reason"); String reason = args.getString("reason");
String algo = args.getString("algo");
final ArrayList<String> trace = args.getStringArrayList("trace"); final ArrayList<String> trace = args.getStringArrayList("trace");
EntityCertificate record = EntityCertificate.from(cert, null); EntityCertificate record = EntityCertificate.from(cert, null);
@ -7349,6 +7363,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
TextView tvAfter = dview.findViewById(R.id.tvAfter); TextView tvAfter = dview.findViewById(R.id.tvAfter);
TextView tvBefore = dview.findViewById(R.id.tvBefore); TextView tvBefore = dview.findViewById(R.id.tvBefore);
TextView tvExpired = dview.findViewById(R.id.tvExpired); TextView tvExpired = dview.findViewById(R.id.tvExpired);
TextView tvAlgorithm = dview.findViewById(R.id.tvAlgorithm);
tvCertificateInvalid.setVisibility(valid ? View.GONE : View.VISIBLE); tvCertificateInvalid.setVisibility(valid ? View.GONE : View.VISIBLE);
tvCertificateReason.setText(reason); tvCertificateReason.setText(reason);
@ -7363,6 +7378,8 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
tvBefore.setText(record.before == null ? null : TF.format(record.before)); tvBefore.setText(record.before == null ? null : TF.format(record.before));
tvExpired.setVisibility(record.isExpired(time) ? View.VISIBLE : View.GONE); tvExpired.setVisibility(record.isExpired(time) ? View.VISIBLE : View.GONE);
tvAlgorithm.setText(algo);
ibInfo.setOnClickListener(new View.OnClickListener() { ibInfo.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {

@ -164,5 +164,24 @@
android:textColor="?attr/colorWarning" android:textColor="?attr/colorWarning"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvAfter" /> app:layout_constraintTop_toBottomOf="@id/tvAfter" />
<eu.faircode.email.FixedTextView
android:id="@+id/tvAlgorithmTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text="@string/title_signature_algorithm"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvExpired" />
<eu.faircode.email.FixedTextView
android:id="@+id/tvAlgorithm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SHA256withRSA"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvAlgorithmTitle" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</eu.faircode.email.ScrollViewEx> </eu.faircode.email.ScrollViewEx>
Loading…
Cancel
Save