From c313f4521926f389fa2f9ae7589d14b9583a9130 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Mon, 24 Apr 2017 17:08:16 +0200 Subject: [PATCH] whitelist sec and brainpool curves --- .../keychain/pgp/PgpSecurityConstants.java | 8 +++++++- .../keychain/ui/util/KeyFormattingUtils.java | 5 +++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpSecurityConstants.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpSecurityConstants.java index 1b15f6fde..f413f5607 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpSecurityConstants.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpSecurityConstants.java @@ -18,10 +18,12 @@ package org.sufficientlysecure.keychain.pgp; import org.bouncycastle.asn1.nist.NISTNamedCurves; +import org.bouncycastle.asn1.teletrust.TeleTrusTNamedCurves; import org.bouncycastle.bcpg.CompressionAlgorithmTags; import org.bouncycastle.bcpg.HashAlgorithmTags; import org.bouncycastle.bcpg.PublicKeyAlgorithmTags; import org.bouncycastle.bcpg.SymmetricKeyAlgorithmTags; +import org.bouncycastle.crypto.ec.CustomNamedCurves; import java.util.Arrays; import java.util.HashSet; @@ -108,7 +110,11 @@ public class PgpSecurityConstants { private static HashSet sCurveWhitelist = new HashSet<>(Arrays.asList( NISTNamedCurves.getOID("P-256").getId(), NISTNamedCurves.getOID("P-384").getId(), - NISTNamedCurves.getOID("P-521").getId() + NISTNamedCurves.getOID("P-521").getId(), + CustomNamedCurves.getOID("secp256k1").getId(), + TeleTrusTNamedCurves.getOID("brainpoolP256r1").getId(), + TeleTrusTNamedCurves.getOID("brainpoolP384r1").getId(), + TeleTrusTNamedCurves.getOID("brainpoolP512r1").getId() )); public static boolean isSecureKey(CanonicalizedPublicKey key) { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/KeyFormattingUtils.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/KeyFormattingUtils.java index b5f41796c..279fe1832 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/KeyFormattingUtils.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/KeyFormattingUtils.java @@ -35,6 +35,7 @@ import org.bouncycastle.asn1.ASN1ObjectIdentifier; import org.bouncycastle.asn1.nist.NISTNamedCurves; import org.bouncycastle.asn1.teletrust.TeleTrusTNamedCurves; import org.bouncycastle.bcpg.PublicKeyAlgorithmTags; +import org.bouncycastle.crypto.ec.CustomNamedCurves; import org.bouncycastle.util.encoders.Hex; import org.openintents.openpgp.OpenPgpDecryptionResult; import org.openintents.openpgp.OpenPgpSignatureResult; @@ -210,6 +211,10 @@ public class KeyFormattingUtils { if (name != null) { return name; } + name = CustomNamedCurves.getName(oid); + if (name != null) { + return name; + } if (context != null) { return context.getResources().getString(R.string.unknown); } else {