Merge "Curve 25519: Support use via Android Keystore provider (part 1)"

This commit is contained in:
Treehugger Robot
2022-03-09 22:01:49 +00:00
committed by Gerrit Code Review
2 changed files with 29 additions and 0 deletions

View File

@@ -108,6 +108,16 @@ public abstract class AndroidKeyStoreKeyPairGeneratorSpi extends KeyPairGenerato
} }
} }
/**
* XDH represents Curve 25519 providers.
*/
public static class XDH extends AndroidKeyStoreKeyPairGeneratorSpi {
// XDH is treated as EC.
public XDH() {
super(KeymasterDefs.KM_ALGORITHM_EC);
}
}
/* /*
* These must be kept in sync with system/security/keystore/defaults.h * These must be kept in sync with system/security/keystore/defaults.h
*/ */
@@ -242,6 +252,23 @@ public abstract class AndroidKeyStoreKeyPairGeneratorSpi extends KeyPairGenerato
} catch (NullPointerException | IllegalArgumentException e) { } catch (NullPointerException | IllegalArgumentException e) {
throw new InvalidAlgorithmParameterException(e); throw new InvalidAlgorithmParameterException(e);
} }
} else if (params instanceof NamedParameterSpec) {
NamedParameterSpec namedSpec = (NamedParameterSpec) params;
// Android Keystore cannot support initialization from a NamedParameterSpec
// because an alias for the key is needed (a KeyGenParameterSpec cannot be
// constructed).
if (namedSpec.getName().equalsIgnoreCase(NamedParameterSpec.X25519.getName())
|| namedSpec.getName().equalsIgnoreCase(
NamedParameterSpec.ED25519.getName())) {
throw new IllegalArgumentException(
"This KeyPairGenerator cannot be initialized using NamedParameterSpec."
+ " use " + KeyGenParameterSpec.class.getName() + " or "
+ KeyPairGeneratorSpec.class.getName());
} else {
throw new InvalidAlgorithmParameterException(
"Unsupported algorithm specified via NamedParameterSpec: "
+ namedSpec.getName());
}
} else { } else {
throw new InvalidAlgorithmParameterException( throw new InvalidAlgorithmParameterException(
"Unsupported params class: " + params.getClass().getName() "Unsupported params class: " + params.getClass().getName()

View File

@@ -83,10 +83,12 @@ public class AndroidKeyStoreProvider extends Provider {
// java.security.KeyPairGenerator // java.security.KeyPairGenerator
put("KeyPairGenerator.EC", PACKAGE_NAME + ".AndroidKeyStoreKeyPairGeneratorSpi$EC"); put("KeyPairGenerator.EC", PACKAGE_NAME + ".AndroidKeyStoreKeyPairGeneratorSpi$EC");
put("KeyPairGenerator.RSA", PACKAGE_NAME + ".AndroidKeyStoreKeyPairGeneratorSpi$RSA"); put("KeyPairGenerator.RSA", PACKAGE_NAME + ".AndroidKeyStoreKeyPairGeneratorSpi$RSA");
put("KeyPairGenerator.XDH", PACKAGE_NAME + ".AndroidKeyStoreKeyPairGeneratorSpi$XDH");
// java.security.KeyFactory // java.security.KeyFactory
putKeyFactoryImpl("EC"); putKeyFactoryImpl("EC");
putKeyFactoryImpl("RSA"); putKeyFactoryImpl("RSA");
putKeyFactoryImpl("XDH");
// javax.crypto.KeyGenerator // javax.crypto.KeyGenerator
put("KeyGenerator.AES", PACKAGE_NAME + ".AndroidKeyStoreKeyGeneratorSpi$AES"); put("KeyGenerator.AES", PACKAGE_NAME + ".AndroidKeyStoreKeyGeneratorSpi$AES");