diff options
Diffstat (limited to 'libjava/java/security/KeyPairGenerator.java')
-rw-r--r-- | libjava/java/security/KeyPairGenerator.java | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/libjava/java/security/KeyPairGenerator.java b/libjava/java/security/KeyPairGenerator.java new file mode 100644 index 00000000000..7954c3270ac --- /dev/null +++ b/libjava/java/security/KeyPairGenerator.java @@ -0,0 +1,86 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 10, 2000. + */ + +/** + * Written using on-line Java Platform 1.2 API Specification. + * Status: Partially implemented to the 1.1 spec. + * It is known not to comply with the 1.2 spec. + */ + +public abstract class KeyPairGenerator extends KeyPairGeneratorSpi +{ + protected KeyPairGenerator(String algorithm) + { + name = algorithm; + } + + public static KeyPairGenerator getInstance(String algorithm) + throws NoSuchAlgorithmException + { + String name = "KeyPairGenerator." + algorithm; + Provider[] provs = Security.getProviders(); + for (int i = 0; i < provs.length; ++i) + { + String val = provs[i].getProperty(name); + if (val != null) + { + try + { + return (KeyPairGenerator) Class.forName(val).newInstance(); + } + catch (Throwable _) + { + // We just ignore failures. + } + } + } + + throw new NoSuchAlgorithmException(algorithm); + } + + public static KeyPairGenerator getInstance(String algorithm, String provider) + throws NoSuchAlgorithmException, NoSuchProviderException + { + String name = "KeyPairGenerator." + algorithm; + Provider p = Security.getProvider(provider); + if (p == null) + throw new NoSuchProviderException(provider); + String val = p.getProperty(name); + if (val != null) + { + try + { + return (KeyPairGenerator) Class.forName(val).newInstance(); + } + catch (Throwable _) + { + // Nothing. + } + } + + throw new NoSuchAlgorithmException(algorithm); + } + + public String getAlgorithm() + { + return name; + } + + public abstract void initialize(int strength, SecureRandom random); + public abstract KeyPair generateKeyPair(); + + // Algorithm name. + private String name; +} |