/* Gnu.java --- Gnu provider main class
   Copyright (C) 1999, 2002, 2003, 2005 Free Software Foundation, Inc.

This file is part of GNU Classpath.

GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.

GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING.  If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.

Linking this library statically or dynamically with other modules is
making a combined work based on this library.  Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.

As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module.  An independent module is a module which is not derived from
or based on this library.  If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so.  If you do not wish to do so, delete this
exception statement from your version. */


package gnu.java.security.provider;

import java.security.AccessController;
import java.security.PrivilegedAction;
import java.security.Provider;

public final class Gnu extends Provider
{
  public Gnu()
  {
    super("GNU", 1.0, "GNU provider v1.0 implementing SHA-1, MD5, DSA, RSA, X.509 Certificates and CRLs, PKIX certificate path validators, Collection cert stores, Diffie-Hellman key agreement and key pair generator");

    AccessController.doPrivileged (new PrivilegedAction()
    {
      public Object run()
      {
        // Note that all implementation class names are referenced by using
        // Class.getName(). That way when we staticly link the Gnu provider
        // we automatically get all the implementation classes.

        // Signature
        put("Signature.SHA1withDSA",
            gnu.java.security.provider.DSASignature.class.getName());

        put("Alg.Alias.Signature.DSS", "SHA1withDSA");
        put("Alg.Alias.Signature.DSA", "SHA1withDSA");
        put("Alg.Alias.Signature.SHAwithDSA", "SHA1withDSA");
        put("Alg.Alias.Signature.DSAwithSHA", "SHA1withDSA");
        put("Alg.Alias.Signature.DSAwithSHA1", "SHA1withDSA");
        put("Alg.Alias.Signature.SHA/DSA", "SHA1withDSA");
        put("Alg.Alias.Signature.SHA-1/DSA", "SHA1withDSA");
        put("Alg.Alias.Signature.SHA1/DSA", "SHA1withDSA");
        put("Alg.Alias.Signature.OID.1.2.840.10040.4.3", "SHA1withDSA");
        put("Alg.Alias.Signature.1.2.840.10040.4.3", "SHA1withDSA");
        put("Alg.Alias.Signature.1.3.14.3.2.13", "SHA1withDSA");
        put("Alg.Alias.Signature.1.3.14.3.2.27", "SHA1withDSA");

        put("Signature.MD2withRSA", MD2withRSA.class.getName());
        put("Signature.MD2withRSA ImplementedIn", "Software");
        put("Alg.Alias.Signature.md2WithRSAEncryption", "MD2withRSA");
        put("Alg.Alias.Signature.OID.1.2.840.113549.1.1.2", "MD2withRSA");
        put("Alg.Alias.Signature.1.2.840.113549.1.1.2", "MD2withRSA");

        put("Signature.MD4withRSA", MD4withRSA.class.getName());
        put("Signature.MD4withRSA ImplementedIn", "Software");
        put("Alg.Alias.Signature.md4WithRSAEncryption", "MD4withRSA");
        put("Alg.Alias.Signature.OID.1.2.840.113549.1.1.3", "MD4withRSA");
        put("Alg.Alias.Signature.1.2.840.113549.1.1.3", "MD4withRSA");

        put("Signature.MD5withRSA", MD5withRSA.class.getName());
        put("Signature.MD5withRSA ImplementedIn", "Software");
        put("Alg.Alias.Signature.md5WithRSAEncryption", "MD5withRSA");
        put("Alg.Alias.Signature.OID.1.2.840.113549.1.1.4", "MD5withRSA");
        put("Alg.Alias.Signature.1.2.840.113549.1.1.4", "MD5withRSA");

        put("Signature.SHA1withRSA", SHA1withRSA.class.getName());
        put("Signature.SHA1withRSA ImplementedIn", "Software");
        put("Alg.Alias.Signature.sha-1WithRSAEncryption", "SHA1withRSA");
        put("Alg.Alias.Signature.OID.1.2.840.113549.1.1.5", "SHA1withRSA");
        put("Alg.Alias.Signature.1.2.840.113549.1.1.5", "SHA1withRSA");

        // Key Pair Generator
        put("KeyPairGenerator.DSA",
            gnu.java.security.provider.DSAKeyPairGenerator.class.getName());
        put("KeyPairGenerator.DiffieHellman", DiffieHellmanKeyPairGeneratorImpl.class.getName ());

        put("Alg.Alias.KeyPairGenerator.OID.1.2.840.10040.4.1", "DSA");
        put("Alg.Alias.KeyPairGenerator.1.2.840.10040.4.1", "DSA");
        put("Alg.Alias.KeyPairGenerator.1.3.14.3.2.12", "DSA");
        put("Alg.Alias.KeyPairGenerator.DH", "DiffieHellman");

        // Key Factory
        put("KeyFactory.DSA",
            gnu.java.security.provider.DSAKeyFactory.class.getName());

        put("KeyFactory.Encoded", EncodedKeyFactory.class.getName());
        put("KeyFactory.Encoded ImplementedIn", "Software");
        put("Alg.Alias.KeyFactory.X.509", "Encoded");
        put("Alg.Alias.KeyFactory.X509", "Encoded");
        put("Alg.Alias.KeyFactory.PKCS#8", "Encoded");
        put("Alg.Alias.KeyFactory.PKCS8", "Encoded");

        put("KeyFactory.RSA", RSAKeyFactory.class.getName());

        put("Alg.Alias.KeyFactory.OID.1.2.840.10040.4.1", "DSA");
        put("Alg.Alias.KeyFactory.1.2.840.10040.4.1", "DSA");
        put("Alg.Alias.KeyFactory.1.3.14.3.2.12", "DSA");

        put("KeyFactory.DiffieHellman", DiffieHellmanKeyFactoryImpl.class.getName());
        put("Alg.Alias.KeyFactory.DH", "DiffieHellman");

        // Message Digests
        put("MessageDigest.SHA", gnu.java.security.provider.SHA.class.getName());
        put("MessageDigest.MD5", gnu.java.security.provider.MD5.class.getName());

        // Format "Alias", "Actual Name"
        put("Alg.Alias.MessageDigest.SHA1", "SHA");
        put("Alg.Alias.MessageDigest.SHA-1", "SHA");
        put("Alg.Alias.MessageDigest.SHA-160", "SHA");

        // Algorithm Parameters
        put("AlgorithmParameters.DSA",
            gnu.java.security.provider.DSAParameters.class.getName());

        put("Alg.Alias.AlgorithmParameters.DSS", "DSA");
        put("Alg.Alias.AlgorithmParameters.SHAwithDSA", "DSA");
        put("Alg.Alias.AlgorithmParameters.OID.1.2.840.10040.4.3", "DSA");
        put("Alg.Alias.AlgorithmParameters.1.2.840.10040.4.3", "DSA");

        // Algorithm Parameter Generator
        put("AlgorithmParameterGenerator.DSA",
            gnu.java.security.provider.DSAParameterGenerator.class.getName());

        // SecureRandom
        put("SecureRandom.SHA1PRNG",
            gnu.java.security.provider.SHA1PRNG.class.getName());

        // CertificateFactory
        put("CertificateFactory.X509", X509CertificateFactory.class.getName());

        put("CertificateFactory.X509 ImplementedIn", "Software");
        put("Alg.Alias.CertificateFactory.X.509", "X509");

        // CertPathValidator
        put("CertPathValidator.PKIX", PKIXCertPathValidatorImpl.class.getName());
        put("CertPathValidator.PKIX ImplementedIn", "Software");

        // CertStore
        put("CertStore.Collection", CollectionCertStoreImpl.class.getName());

        // KeyAgreement
        put("KeyAgreement.DiffieHellman", gnu.javax.crypto.DiffieHellmanImpl.class.getName());
        put("Alg.Alias.KeyAgreement.DH", "DiffieHellman");

        // Cipher
        put("Cipher.RSAES-PKCS1-v1_5", gnu.javax.crypto.RSACipherImpl.class.getName());
        put("Alg.Alias.Cipher.RSA", "RSAES-PKCS1-v1_5");

        return null;
      }
    });
  }
}
