Merge "Keystore 2 SPI: Fix KeyStorePublicKey getEncoded()."

This commit is contained in:
Treehugger Robot
2021-01-26 23:45:52 +00:00
committed by Gerrit Code Review
3 changed files with 13 additions and 7 deletions

View File

@@ -38,9 +38,10 @@ public class AndroidKeyStoreECPublicKey extends AndroidKeyStorePublicKey impleme
public AndroidKeyStoreECPublicKey(@NonNull KeyDescriptor descriptor, public AndroidKeyStoreECPublicKey(@NonNull KeyDescriptor descriptor,
@NonNull KeyMetadata metadata, @NonNull KeyMetadata metadata,
@NonNull byte[] x509EncodedForm,
@NonNull KeyStoreSecurityLevel securityLevel, @NonNull KeyStoreSecurityLevel securityLevel,
@NonNull ECParameterSpec params, @NonNull ECPoint w) { @NonNull ECParameterSpec params, @NonNull ECPoint w) {
super(descriptor, metadata, KeyProperties.KEY_ALGORITHM_EC, securityLevel); super(descriptor, metadata, x509EncodedForm, KeyProperties.KEY_ALGORITHM_EC, securityLevel);
mParams = params; mParams = params;
mW = w; mW = w;
} }
@@ -48,7 +49,7 @@ public class AndroidKeyStoreECPublicKey extends AndroidKeyStorePublicKey impleme
public AndroidKeyStoreECPublicKey(@NonNull KeyDescriptor descriptor, public AndroidKeyStoreECPublicKey(@NonNull KeyDescriptor descriptor,
@NonNull KeyMetadata metadata, @NonNull KeyMetadata metadata,
@NonNull KeyStoreSecurityLevel securityLevel, @NonNull ECPublicKey info) { @NonNull KeyStoreSecurityLevel securityLevel, @NonNull ECPublicKey info) {
this(descriptor, metadata, securityLevel, info.getParams(), info.getW()); this(descriptor, metadata, info.getEncoded(), securityLevel, info.getParams(), info.getW());
if (!"X.509".equalsIgnoreCase(info.getFormat())) { if (!"X.509".equalsIgnoreCase(info.getFormat())) {
throw new IllegalArgumentException( throw new IllegalArgumentException(
"Unsupported key export format: " + info.getFormat()); "Unsupported key export format: " + info.getFormat());

View File

@@ -32,13 +32,15 @@ import java.security.PublicKey;
public abstract class AndroidKeyStorePublicKey extends AndroidKeyStoreKey implements PublicKey { public abstract class AndroidKeyStorePublicKey extends AndroidKeyStoreKey implements PublicKey {
private final byte[] mCertificate; private final byte[] mCertificate;
private final byte[] mCertificateChain; private final byte[] mCertificateChain;
private final byte[] mEncoded;
public AndroidKeyStorePublicKey(@NonNull KeyDescriptor descriptor, public AndroidKeyStorePublicKey(@NonNull KeyDescriptor descriptor,
@NonNull KeyMetadata metadata, @NonNull String algorithm, @NonNull KeyMetadata metadata, @NonNull byte[] x509EncodedForm,
@NonNull KeyStoreSecurityLevel securityLevel) { @NonNull String algorithm, @NonNull KeyStoreSecurityLevel securityLevel) {
super(descriptor, metadata.key.nspace, metadata.authorizations, algorithm, securityLevel); super(descriptor, metadata.key.nspace, metadata.authorizations, algorithm, securityLevel);
mCertificate = metadata.certificate; mCertificate = metadata.certificate;
mCertificateChain = metadata.certificateChain; mCertificateChain = metadata.certificateChain;
mEncoded = x509EncodedForm;
} }
abstract AndroidKeyStorePrivateKey getPrivateKey(); abstract AndroidKeyStorePrivateKey getPrivateKey();
@@ -50,7 +52,7 @@ public abstract class AndroidKeyStorePublicKey extends AndroidKeyStoreKey implem
@Override @Override
public byte[] getEncoded() { public byte[] getEncoded() {
return ArrayUtils.cloneIfNotEmpty(mCertificate); return ArrayUtils.cloneIfNotEmpty(mEncoded);
} }
@Override @Override

View File

@@ -36,9 +36,11 @@ public class AndroidKeyStoreRSAPublicKey extends AndroidKeyStorePublicKey implem
public AndroidKeyStoreRSAPublicKey(@NonNull KeyDescriptor descriptor, public AndroidKeyStoreRSAPublicKey(@NonNull KeyDescriptor descriptor,
@NonNull KeyMetadata metadata, @NonNull KeyMetadata metadata,
@NonNull byte[] x509EncodedForm,
@NonNull KeyStoreSecurityLevel securityLevel, @NonNull BigInteger modulus, @NonNull KeyStoreSecurityLevel securityLevel, @NonNull BigInteger modulus,
@NonNull BigInteger publicExponent) { @NonNull BigInteger publicExponent) {
super(descriptor, metadata, KeyProperties.KEY_ALGORITHM_RSA, securityLevel); super(descriptor, metadata, x509EncodedForm, KeyProperties.KEY_ALGORITHM_RSA,
securityLevel);
mModulus = modulus; mModulus = modulus;
mPublicExponent = publicExponent; mPublicExponent = publicExponent;
} }
@@ -46,7 +48,8 @@ public class AndroidKeyStoreRSAPublicKey extends AndroidKeyStorePublicKey implem
public AndroidKeyStoreRSAPublicKey(@NonNull KeyDescriptor descriptor, public AndroidKeyStoreRSAPublicKey(@NonNull KeyDescriptor descriptor,
@NonNull KeyMetadata metadata, @NonNull KeyMetadata metadata,
@NonNull KeyStoreSecurityLevel securityLevel, @NonNull RSAPublicKey info) { @NonNull KeyStoreSecurityLevel securityLevel, @NonNull RSAPublicKey info) {
this(descriptor, metadata, securityLevel, info.getModulus(), info.getPublicExponent()); this(descriptor, metadata, info.getEncoded(), securityLevel, info.getModulus(),
info.getPublicExponent());
if (!"X.509".equalsIgnoreCase(info.getFormat())) { if (!"X.509".equalsIgnoreCase(info.getFormat())) {
throw new IllegalArgumentException( throw new IllegalArgumentException(
"Unsupported key export format: " + info.getFormat()); "Unsupported key export format: " + info.getFormat());