diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2021-06-19 12:01:15 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2021-06-19 12:01:15 +0000 |
commit | 42313980c6dd3d1903172f72e3d01852ceff4922 (patch) | |
tree | daf45d522673930ba2a90970d64295962b9ce13e /bcprov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/ec/BCECPublicKey.java | |
parent | 83b9892b84200128c2347ee35283a8c970085b75 (diff) | |
parent | 8687a85bc0e6ef46bac3bce290cca2cddc7d6720 (diff) | |
download | bouncycastle-42313980c6dd3d1903172f72e3d01852ceff4922.tar.gz |
Snap for 7474514 from 8687a85bc0e6ef46bac3bce290cca2cddc7d6720 to mainline-media-swcodec-releaseandroid-mainline-12.0.0_r91android-mainline-12.0.0_r75android-mainline-12.0.0_r47android-mainline-12.0.0_r30android-mainline-12.0.0_r13android-mainline-12.0.0_r120android-mainline-12.0.0_r105android12-mainline-media-swcodec-release
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.java | 24 |
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(); |