summaryrefslogtreecommitdiff
path: root/bcprov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/ec/BCECPublicKey.java
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2021-06-19 12:01:15 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2021-06-19 12:01:15 +0000
commit42313980c6dd3d1903172f72e3d01852ceff4922 (patch)
treedaf45d522673930ba2a90970d64295962b9ce13e /bcprov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/ec/BCECPublicKey.java
parent83b9892b84200128c2347ee35283a8c970085b75 (diff)
parent8687a85bc0e6ef46bac3bce290cca2cddc7d6720 (diff)
downloadbouncycastle-42313980c6dd3d1903172f72e3d01852ceff4922.tar.gz
Change-Id: Ib3a8f3f2512b55882cc72ba19833aad06fc14250
Diffstat (limited to 'bcprov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/ec/BCECPublicKey.java')
-rw-r--r--bcprov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/ec/BCECPublicKey.java24
1 files changed, 14 insertions, 10 deletions
diff --git a/bcprov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/ec/BCECPublicKey.java b/bcprov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/ec/BCECPublicKey.java
index 9236787c..cad65c42 100644
--- a/bcprov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/ec/BCECPublicKey.java
+++ b/bcprov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/ec/BCECPublicKey.java
@@ -9,7 +9,6 @@ import java.security.spec.ECPoint;
import java.security.spec.ECPublicKeySpec;
import java.security.spec.EllipticCurve;
-import org.bouncycastle.asn1.ASN1Encodable;
import org.bouncycastle.asn1.ASN1OctetString;
import org.bouncycastle.asn1.ASN1Primitive;
import org.bouncycastle.asn1.DERBitString;
@@ -29,6 +28,7 @@ import org.bouncycastle.jcajce.provider.config.ProviderConfiguration;
import org.bouncycastle.jce.interfaces.ECPointEncoder;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.math.ec.ECCurve;
+import org.bouncycastle.util.Properties;
public class BCECPublicKey
implements ECPublicKey, org.bouncycastle.jce.interfaces.ECPublicKey, ECPointEncoder
@@ -60,7 +60,7 @@ public class BCECPublicKey
{
this.algorithm = algorithm;
this.ecSpec = spec.getParams();
- this.ecPublicKey = new ECPublicKeyParameters(EC5Util.convertPoint(ecSpec, spec.getW(), false), EC5Util.getDomainParameters(configuration, spec.getParams()));
+ this.ecPublicKey = new ECPublicKeyParameters(EC5Util.convertPoint(ecSpec, spec.getW()), EC5Util.getDomainParameters(configuration, spec.getParams()));
this.configuration = configuration;
}
@@ -164,7 +164,8 @@ public class BCECPublicKey
{
this.algorithm = key.getAlgorithm();
this.ecSpec = key.getParams();
- this.ecPublicKey = new ECPublicKeyParameters(EC5Util.convertPoint(this.ecSpec, key.getW(), false), EC5Util.getDomainParameters(configuration, key.getParams()));
+ this.ecPublicKey = new ECPublicKeyParameters(EC5Util.convertPoint(this.ecSpec, key.getW()), EC5Util.getDomainParameters(configuration, key.getParams()));
+ this.configuration = configuration;
}
BCECPublicKey(
@@ -234,13 +235,16 @@ public class BCECPublicKey
public byte[] getEncoded()
{
- ASN1Encodable params = ECUtils.getDomainParametersFromName(ecSpec, withCompression);
- ASN1OctetString p = ASN1OctetString.getInstance(new X9ECPoint(ecPublicKey.getQ(), withCompression).toASN1Primitive());
+ boolean compress = withCompression || Properties.isOverrideSet("org.bouncycastle.ec.enable_pc");
- // stored curve is null if ImplicitlyCa
- SubjectPublicKeyInfo info = new SubjectPublicKeyInfo(new AlgorithmIdentifier(X9ObjectIdentifiers.id_ecPublicKey, params), p.getOctets());
+ AlgorithmIdentifier algId = new AlgorithmIdentifier(
+ X9ObjectIdentifiers.id_ecPublicKey,
+ ECUtils.getDomainParametersFromName(ecSpec, compress));
- return KeyUtil.getEncodedSubjectPublicKeyInfo(info);
+ byte[] pubKeyOctets = ecPublicKey.getQ().getEncoded(compress);
+
+ // stored curve is null if ImplicitlyCa
+ return KeyUtil.getEncodedSubjectPublicKeyInfo(algId, pubKeyOctets);
}
public ECParameterSpec getParams()
@@ -255,7 +259,7 @@ public class BCECPublicKey
return null;
}
- return EC5Util.convertSpec(ecSpec, withCompression);
+ return EC5Util.convertSpec(ecSpec);
}
public ECPoint getW()
@@ -284,7 +288,7 @@ public class BCECPublicKey
{
if (ecSpec != null)
{
- return EC5Util.convertSpec(ecSpec, withCompression);
+ return EC5Util.convertSpec(ecSpec);
}
return configuration.getEcImplicitlyCa();