/* 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 * @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; }