0N/A/*
4127N/A * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
0N/A *
0N/A * This code is free software; you can redistribute it and/or modify it
0N/A * under the terms of the GNU General Public License version 2 only, as
2362N/A * published by the Free Software Foundation. Oracle designates this
0N/A * particular file as subject to the "Classpath" exception as provided
2362N/A * by Oracle in the LICENSE file that accompanied this code.
0N/A *
0N/A * This code is distributed in the hope that it will be useful, but WITHOUT
0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0N/A * version 2 for more details (a copy is included in the LICENSE file that
0N/A * accompanied this code).
0N/A *
0N/A * You should have received a copy of the GNU General Public License version
0N/A * 2 along with this work; if not, write to the Free Software Foundation,
0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
0N/A *
2362N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2362N/A * or visit www.oracle.com if you need additional information or have any
2362N/A * questions.
0N/A */
0N/A
0N/Apackage sun.security.mscapi;
0N/A
0N/Aimport java.security.AccessController;
0N/Aimport java.security.PrivilegedAction;
0N/Aimport java.security.Provider;
0N/Aimport java.security.ProviderException;
0N/Aimport java.util.HashMap;
0N/Aimport java.util.Map;
0N/A
0N/Aimport sun.security.action.PutAllAction;
0N/A
0N/A
0N/A/**
0N/A * A Cryptographic Service Provider for the Microsoft Crypto API.
0N/A *
0N/A * @since 1.6
0N/A */
0N/A
0N/Apublic final class SunMSCAPI extends Provider {
0N/A
0N/A private static final long serialVersionUID = 8622598936488630849L; //TODO
0N/A
0N/A private static final String INFO = "Sun's Microsoft Crypto API provider";
0N/A
0N/A static {
28N/A AccessController.doPrivileged(new PrivilegedAction<Void>() {
28N/A public Void run() {
0N/A System.loadLibrary("sunmscapi");
0N/A return null;
0N/A }
0N/A });
0N/A }
0N/A
0N/A public SunMSCAPI() {
0N/A super("SunMSCAPI", 1.7d, INFO);
0N/A
0N/A // if there is no security manager installed, put directly into
0N/A // the provider. Otherwise, create a temporary map and use a
0N/A // doPrivileged() call at the end to transfer the contents
0N/A final Map map = (System.getSecurityManager() == null)
0N/A ? (Map)this : new HashMap();
0N/A
0N/A /*
0N/A * Secure random
0N/A */
0N/A map.put("SecureRandom.Windows-PRNG", "sun.security.mscapi.PRNG");
0N/A
0N/A /*
0N/A * Key store
0N/A */
0N/A map.put("KeyStore.Windows-MY", "sun.security.mscapi.KeyStore$MY");
0N/A map.put("KeyStore.Windows-ROOT", "sun.security.mscapi.KeyStore$ROOT");
0N/A
0N/A /*
0N/A * Signature engines
0N/A */
4136N/A // NONEwithRSA must be supplied with a pre-computed message digest.
4136N/A // Only the following digest algorithms are supported: MD5, SHA-1,
4136N/A // SHA-256, SHA-384, SHA-512 and a special-purpose digest algorithm
4136N/A // which is a concatenation of SHA-1 and MD5 digests.
4136N/A map.put("Signature.NONEwithRSA",
4136N/A "sun.security.mscapi.RSASignature$Raw");
0N/A map.put("Signature.SHA1withRSA",
0N/A "sun.security.mscapi.RSASignature$SHA1");
4127N/A map.put("Signature.SHA256withRSA",
4127N/A "sun.security.mscapi.RSASignature$SHA256");
4127N/A map.put("Signature.SHA384withRSA",
4127N/A "sun.security.mscapi.RSASignature$SHA384");
4127N/A map.put("Signature.SHA512withRSA",
4127N/A "sun.security.mscapi.RSASignature$SHA512");
0N/A map.put("Signature.MD5withRSA",
0N/A "sun.security.mscapi.RSASignature$MD5");
0N/A map.put("Signature.MD2withRSA",
0N/A "sun.security.mscapi.RSASignature$MD2");
0N/A
0N/A // supported key classes
4136N/A map.put("Signature.NONEwithRSA SupportedKeyClasses",
4136N/A "sun.security.mscapi.Key");
0N/A map.put("Signature.SHA1withRSA SupportedKeyClasses",
0N/A "sun.security.mscapi.Key");
4127N/A map.put("Signature.SHA256withRSA SupportedKeyClasses",
4127N/A "sun.security.mscapi.Key");
4127N/A map.put("Signature.SHA384withRSA SupportedKeyClasses",
4127N/A "sun.security.mscapi.Key");
4127N/A map.put("Signature.SHA512withRSA SupportedKeyClasses",
4127N/A "sun.security.mscapi.Key");
0N/A map.put("Signature.MD5withRSA SupportedKeyClasses",
0N/A "sun.security.mscapi.Key");
0N/A map.put("Signature.MD2withRSA SupportedKeyClasses",
0N/A "sun.security.mscapi.Key");
0N/A
0N/A /*
0N/A * Key Pair Generator engines
0N/A */
0N/A map.put("KeyPairGenerator.RSA",
0N/A "sun.security.mscapi.RSAKeyPairGenerator");
0N/A map.put("KeyPairGenerator.RSA KeySize", "1024");
0N/A
0N/A /*
0N/A * Cipher engines
0N/A */
0N/A map.put("Cipher.RSA", "sun.security.mscapi.RSACipher");
0N/A map.put("Cipher.RSA/ECB/PKCS1Padding",
0N/A "sun.security.mscapi.RSACipher");
0N/A map.put("Cipher.RSA SupportedModes", "ECB");
0N/A map.put("Cipher.RSA SupportedPaddings", "PKCS1PADDING");
0N/A map.put("Cipher.RSA SupportedKeyClasses", "sun.security.mscapi.Key");
0N/A
0N/A if (map != this) {
0N/A AccessController.doPrivileged(new PutAllAction(this, map));
0N/A }
0N/A }
0N/A}