Loading keystore/java/android/security/keystore2/AndroidKeyStoreKeyPairGeneratorSpi.java +27 −0 Original line number Diff line number Diff line Loading @@ -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 */ Loading Loading @@ -242,6 +252,23 @@ public abstract class AndroidKeyStoreKeyPairGeneratorSpi extends KeyPairGenerato } catch (NullPointerException | IllegalArgumentException 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 { throw new InvalidAlgorithmParameterException( "Unsupported params class: " + params.getClass().getName() Loading keystore/java/android/security/keystore2/AndroidKeyStoreProvider.java +2 −0 Original line number Diff line number Diff line Loading @@ -83,10 +83,12 @@ public class AndroidKeyStoreProvider extends Provider { // java.security.KeyPairGenerator put("KeyPairGenerator.EC", PACKAGE_NAME + ".AndroidKeyStoreKeyPairGeneratorSpi$EC"); put("KeyPairGenerator.RSA", PACKAGE_NAME + ".AndroidKeyStoreKeyPairGeneratorSpi$RSA"); put("KeyPairGenerator.XDH", PACKAGE_NAME + ".AndroidKeyStoreKeyPairGeneratorSpi$XDH"); // java.security.KeyFactory putKeyFactoryImpl("EC"); putKeyFactoryImpl("RSA"); putKeyFactoryImpl("XDH"); // javax.crypto.KeyGenerator put("KeyGenerator.AES", PACKAGE_NAME + ".AndroidKeyStoreKeyGeneratorSpi$AES"); Loading Loading
keystore/java/android/security/keystore2/AndroidKeyStoreKeyPairGeneratorSpi.java +27 −0 Original line number Diff line number Diff line Loading @@ -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 */ Loading Loading @@ -242,6 +252,23 @@ public abstract class AndroidKeyStoreKeyPairGeneratorSpi extends KeyPairGenerato } catch (NullPointerException | IllegalArgumentException 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 { throw new InvalidAlgorithmParameterException( "Unsupported params class: " + params.getClass().getName() Loading
keystore/java/android/security/keystore2/AndroidKeyStoreProvider.java +2 −0 Original line number Diff line number Diff line Loading @@ -83,10 +83,12 @@ public class AndroidKeyStoreProvider extends Provider { // java.security.KeyPairGenerator put("KeyPairGenerator.EC", PACKAGE_NAME + ".AndroidKeyStoreKeyPairGeneratorSpi$EC"); put("KeyPairGenerator.RSA", PACKAGE_NAME + ".AndroidKeyStoreKeyPairGeneratorSpi$RSA"); put("KeyPairGenerator.XDH", PACKAGE_NAME + ".AndroidKeyStoreKeyPairGeneratorSpi$XDH"); // java.security.KeyFactory putKeyFactoryImpl("EC"); putKeyFactoryImpl("RSA"); putKeyFactoryImpl("XDH"); // javax.crypto.KeyGenerator put("KeyGenerator.AES", PACKAGE_NAME + ".AndroidKeyStoreKeyGeneratorSpi$AES"); Loading