Merge "Keystore 2 SPI: Fix KeyStorePublicKey getEncoded()."
This commit is contained in:
@@ -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());
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
Reference in New Issue
Block a user