OpenSSLProvider.java revision fe8b870db2b374e21c69c2ff0050e6a34e0d8d94
112cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom/* 212cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom * Copyright (C) 2010 The Android Open Source Project 312cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom * 412cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom * Licensed under the Apache License, Version 2.0 (the "License"); 512cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom * you may not use this file except in compliance with the License. 612cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom * You may obtain a copy of the License at 712cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom * 812cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom * http://www.apache.org/licenses/LICENSE-2.0 912cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom * 1012cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom * Unless required by applicable law or agreed to in writing, software 1112cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom * distributed under the License is distributed on an "AS IS" BASIS, 1212cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1312cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom * See the License for the specific language governing permissions and 1412cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom * limitations under the License. 1512cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom */ 1612cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom 1712cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrompackage org.apache.harmony.xnet.provider.jsse; 1812cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom 1912cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstromimport java.security.Provider; 2012cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom 2112cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrompublic final class OpenSSLProvider extends Provider { 225b57eb538f8da8e97cf88a310d75d14dfc91624cKenny Root public static final String PROVIDER_NAME = "AndroidOpenSSL"; 2312cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom 2412cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom public OpenSSLProvider() { 255b57eb538f8da8e97cf88a310d75d14dfc91624cKenny Root super(PROVIDER_NAME, 1.0, "Android's OpenSSL-backed security provider"); 2612cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom 275b57eb538f8da8e97cf88a310d75d14dfc91624cKenny Root // SSL Contexts 28059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom put("SSLContext.SSL", OpenSSLContextImpl.class.getName()); 29059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom put("SSLContext.SSLv3", OpenSSLContextImpl.class.getName()); 30059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom put("SSLContext.TLS", OpenSSLContextImpl.class.getName()); 31059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom put("SSLContext.TLSv1", OpenSSLContextImpl.class.getName()); 323e6dd45baa0d7f9b4fa06f4ade76e088b59cc7bfBrian Carlstrom put("SSLContext.TLSv1.1", OpenSSLContextImpl.class.getName()); 333e6dd45baa0d7f9b4fa06f4ade76e088b59cc7bfBrian Carlstrom put("SSLContext.TLSv1.2", OpenSSLContextImpl.class.getName()); 34059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom put("SSLContext.Default", DefaultSSLContextImpl.class.getName()); 35059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom 365b57eb538f8da8e97cf88a310d75d14dfc91624cKenny Root // Message Digests 3712cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom put("MessageDigest.SHA-1", 3812cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom "org.apache.harmony.xnet.provider.jsse.OpenSSLMessageDigestJDK$SHA1"); 3912cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom put("Alg.Alias.MessageDigest.SHA1", "SHA-1"); 4012cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom put("Alg.Alias.MessageDigest.SHA", "SHA-1"); 4112cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom put("Alg.Alias.MessageDigest.1.3.14.3.2.26", "SHA-1"); 4212cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom 4312cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom put("MessageDigest.SHA-256", 4412cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom "org.apache.harmony.xnet.provider.jsse.OpenSSLMessageDigestJDK$SHA256"); 4512cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom put("Alg.Alias.MessageDigest.SHA256", "SHA-256"); 4612cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom put("Alg.Alias.MessageDigest.2.16.840.1.101.3.4.2.1", "SHA-256"); 4712cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom 4812cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom put("MessageDigest.SHA-384", 4912cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom "org.apache.harmony.xnet.provider.jsse.OpenSSLMessageDigestJDK$SHA384"); 5012cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom put("Alg.Alias.MessageDigest.SHA384", "SHA-384"); 5112cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom put("Alg.Alias.MessageDigest.2.16.840.1.101.3.4.2.2", "SHA-384"); 5212cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom 5312cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom put("MessageDigest.SHA-512", 5412cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom "org.apache.harmony.xnet.provider.jsse.OpenSSLMessageDigestJDK$SHA512"); 5512cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom put("Alg.Alias.MessageDigest.SHA512", "SHA-512"); 5612cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom put("Alg.Alias.MessageDigest.2.16.840.1.101.3.4.2.3", "SHA-512"); 5712cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom 5812cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom put("MessageDigest.MD5", 5912cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom "org.apache.harmony.xnet.provider.jsse.OpenSSLMessageDigestJDK$MD5"); 6012cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom put("Alg.Alias.MessageDigest.1.2.840.113549.2.5", "MD5"); 6112cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom 62746a236e2be5dee62c482e27f4c682496d071d8bKenny Root // KeyPairGenerators 63746a236e2be5dee62c482e27f4c682496d071d8bKenny Root put("KeyPairGenerator.RSA", OpenSSLRSAKeyPairGenerator.class.getName()); 64746a236e2be5dee62c482e27f4c682496d071d8bKenny Root put("Alg.Alias.KeyPairGenerator.1.2.840.113549.1.1.1", "RSA"); 65746a236e2be5dee62c482e27f4c682496d071d8bKenny Root 66746a236e2be5dee62c482e27f4c682496d071d8bKenny Root put("KeyPairGenerator.DSA", OpenSSLDSAKeyPairGenerator.class.getName()); 67746a236e2be5dee62c482e27f4c682496d071d8bKenny Root 68746a236e2be5dee62c482e27f4c682496d071d8bKenny Root // KeyFactory 69746a236e2be5dee62c482e27f4c682496d071d8bKenny Root 70746a236e2be5dee62c482e27f4c682496d071d8bKenny Root put("KeyFactory.RSA", OpenSSLRSAKeyFactory.class.getName()); 71746a236e2be5dee62c482e27f4c682496d071d8bKenny Root put("Alg.Alias.KeyFactory.1.2.840.113549.1.1.1", "RSA"); 72746a236e2be5dee62c482e27f4c682496d071d8bKenny Root 73746a236e2be5dee62c482e27f4c682496d071d8bKenny Root // put("KeyFactory.DSA", OpenSSLDSAKeyFactory.class.getName()); 74746a236e2be5dee62c482e27f4c682496d071d8bKenny Root 755b57eb538f8da8e97cf88a310d75d14dfc91624cKenny Root // Signatures 765b57eb538f8da8e97cf88a310d75d14dfc91624cKenny Root put("Signature.MD5WithRSAEncryption", OpenSSLSignature.MD5RSA.class.getName()); 775b57eb538f8da8e97cf88a310d75d14dfc91624cKenny Root put("Alg.Alias.Signature.MD5WithRSA", "MD5WithRSAEncryption"); 785b57eb538f8da8e97cf88a310d75d14dfc91624cKenny Root put("Alg.Alias.Signature.MD5/RSA", "MD5WithRSAEncryption"); 795b57eb538f8da8e97cf88a310d75d14dfc91624cKenny Root put("Alg.Alias.Signature.1.2.840.113549.1.1.4", "MD5WithRSAEncryption"); 805b57eb538f8da8e97cf88a310d75d14dfc91624cKenny Root put("Alg.Alias.Signature.1.2.840.113549.2.5with1.2.840.113549.1.1.1", 815b57eb538f8da8e97cf88a310d75d14dfc91624cKenny Root "MD5WithRSAEncryption"); 825b57eb538f8da8e97cf88a310d75d14dfc91624cKenny Root 83fe8b870db2b374e21c69c2ff0050e6a34e0d8d94Brian Carlstrom put("Signature.SHA1WithRSA", OpenSSLSignature.SHA1RSA.class.getName()); 84fe8b870db2b374e21c69c2ff0050e6a34e0d8d94Brian Carlstrom put("Alg.Alias.Signature.SHA1WithRSA", "SHA1WithRSA"); 85fe8b870db2b374e21c69c2ff0050e6a34e0d8d94Brian Carlstrom put("Alg.Alias.Signature.SHA1/RSA", "SHA1WithRSA"); 86fe8b870db2b374e21c69c2ff0050e6a34e0d8d94Brian Carlstrom put("Alg.Alias.Signature.SHA-1/RSA", "SHA1WithRSA"); 87fe8b870db2b374e21c69c2ff0050e6a34e0d8d94Brian Carlstrom put("Alg.Alias.Signature.1.2.840.113549.1.1.5", "SHA1WithRSA"); 88fe8b870db2b374e21c69c2ff0050e6a34e0d8d94Brian Carlstrom put("Alg.Alias.Signature.1.3.14.3.2.26with1.2.840.113549.1.1.1", "SHA1WithRSA"); 89fe8b870db2b374e21c69c2ff0050e6a34e0d8d94Brian Carlstrom put("Alg.Alias.Signature.1.3.14.3.2.26with1.2.840.113549.1.1.5", "SHA1WithRSA"); 90fe8b870db2b374e21c69c2ff0050e6a34e0d8d94Brian Carlstrom put("Alg.Alias.Signature.1.3.14.3.2.29", "SHA1WithRSA"); 91fe8b870db2b374e21c69c2ff0050e6a34e0d8d94Brian Carlstrom 92fe8b870db2b374e21c69c2ff0050e6a34e0d8d94Brian Carlstrom put("Signature.SHA256WithRSA", OpenSSLSignature.SHA256RSA.class.getName()); 93fe8b870db2b374e21c69c2ff0050e6a34e0d8d94Brian Carlstrom put("Alg.Alias.Signature.SHA256WithRSAEncryption", "SHA256WithRSA"); 94fe8b870db2b374e21c69c2ff0050e6a34e0d8d94Brian Carlstrom put("Alg.Alias.Signature.1.2.840.113549.1.1.11", "SHA256WithRSA"); 95fe8b870db2b374e21c69c2ff0050e6a34e0d8d94Brian Carlstrom 96fe8b870db2b374e21c69c2ff0050e6a34e0d8d94Brian Carlstrom put("Signature.SHA384WithRSA", OpenSSLSignature.SHA384RSA.class.getName()); 97fe8b870db2b374e21c69c2ff0050e6a34e0d8d94Brian Carlstrom put("Alg.Alias.Signature.SHA384WithRSAEncryption", "SHA384WithRSA"); 98fe8b870db2b374e21c69c2ff0050e6a34e0d8d94Brian Carlstrom put("Alg.Alias.Signature.1.2.840.113549.1.1.12", "SHA384WithRSA"); 99fe8b870db2b374e21c69c2ff0050e6a34e0d8d94Brian Carlstrom 100fe8b870db2b374e21c69c2ff0050e6a34e0d8d94Brian Carlstrom put("Signature.SHA512WithRSA", OpenSSLSignature.SHA512RSA.class.getName()); 101fe8b870db2b374e21c69c2ff0050e6a34e0d8d94Brian Carlstrom put("Alg.Alias.Signature.SHA512WithRSAEncryption", "SHA512WithRSA"); 102fe8b870db2b374e21c69c2ff0050e6a34e0d8d94Brian Carlstrom put("Alg.Alias.Signature.1.2.840.113549.1.1.13", "SHA512WithRSA"); 1035b57eb538f8da8e97cf88a310d75d14dfc91624cKenny Root 1045b57eb538f8da8e97cf88a310d75d14dfc91624cKenny Root put("Signature.SHA1withDSA", OpenSSLSignature.SHA1DSA.class.getName()); 1055b57eb538f8da8e97cf88a310d75d14dfc91624cKenny Root put("Alg.Alias.Signature.SHA/DSA", "SHA1withDSA"); 1065b57eb538f8da8e97cf88a310d75d14dfc91624cKenny Root put("Alg.Alias.Signature.DSA", "SHA1withDSA"); 1075b57eb538f8da8e97cf88a310d75d14dfc91624cKenny Root put("Alg.Alias.Signature.1.3.14.3.2.26with1.2.840.10040.4.1", "SHA1withDSA"); 1085b57eb538f8da8e97cf88a310d75d14dfc91624cKenny Root put("Alg.Alias.Signature.1.3.14.3.2.26with1.2.840.10040.4.3", "SHA1withDSA"); 1095b57eb538f8da8e97cf88a310d75d14dfc91624cKenny Root put("Alg.Alias.Signature.DSAWithSHA1", "SHA1withDSA"); 1105b57eb538f8da8e97cf88a310d75d14dfc91624cKenny Root put("Alg.Alias.Signature.1.2.840.10040.4.3", "SHA1withDSA"); 11146aabcb28b0e3b807f6db8c33173962d6f2cb71fKenny Root 11262fc526d80608925cad24c3d6d91657f63a56fcfKenny Root put("Signature.NONEwithRSA", OpenSSLSignatureRawRSA.class.getName()); 1137501e29e0182accf28cc317870a3bbe1e25f4bfaKenny Root 11446aabcb28b0e3b807f6db8c33173962d6f2cb71fKenny Root // SecureRandom 11546aabcb28b0e3b807f6db8c33173962d6f2cb71fKenny Root /* 11646aabcb28b0e3b807f6db8c33173962d6f2cb71fKenny Root * We have to specify SHA1PRNG because various documentation mentions 11746aabcb28b0e3b807f6db8c33173962d6f2cb71fKenny Root * that algorithm by name instead of just recommending calling 11846aabcb28b0e3b807f6db8c33173962d6f2cb71fKenny Root * "new SecureRandom()" 11946aabcb28b0e3b807f6db8c33173962d6f2cb71fKenny Root */ 12046aabcb28b0e3b807f6db8c33173962d6f2cb71fKenny Root put("SecureRandom.SHA1PRNG", OpenSSLRandom.class.getName()); 12146aabcb28b0e3b807f6db8c33173962d6f2cb71fKenny Root put("SecureRandom.SHA1PRNG ImplementedIn", "Software"); 122c5ddc93173f32383ab456c0a24739e7cb2d19c42Kenny Root 123c5ddc93173f32383ab456c0a24739e7cb2d19c42Kenny Root // Cipher 1240a156e0126e8015f2791e9a7dd48bbdaeae0c335Brian Carlstrom put("Cipher.RSA/ECB/NoPadding", OpenSSLCipherRSA.Raw.class.getName()); 125c5ddc93173f32383ab456c0a24739e7cb2d19c42Kenny Root put("Alg.Alias.Cipher.RSA/None/NoPadding", "RSA/ECB/NoPadding"); 1260a156e0126e8015f2791e9a7dd48bbdaeae0c335Brian Carlstrom put("Cipher.RSA/ECB/PKCS1Padding", OpenSSLCipherRSA.PKCS1.class.getName()); 1270a156e0126e8015f2791e9a7dd48bbdaeae0c335Brian Carlstrom put("Alg.Alias.Cipher.RSA/None/PKCS1Padding", "RSA/ECB/PKCS1Padding"); 12812cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom } 12912cd1f00c2fa1a7f37bf644cecdf7588bdc0b0a9Brian Carlstrom} 130