--- a/jdk/src/share/classes/sun/security/provider/SunEntries.java Thu Apr 11 19:36:52 2013 -0700
+++ b/jdk/src/share/classes/sun/security/provider/SunEntries.java Thu Apr 11 21:03:24 2013 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,6 +25,8 @@
package sun.security.provider;
+import java.io.*;
+import java.net.*;
import java.util.Map;
import java.security.*;
@@ -92,26 +94,41 @@
// if user selected /dev/urandom, we put it before SHA1PRNG,
// otherwise after it
boolean nativeAvailable = NativePRNG.isAvailable();
- boolean useUrandom = seedSource.equals(URL_DEV_URANDOM);
- if (nativeAvailable && useUrandom) {
+ boolean useNativePRNG = seedSource.equals(URL_DEV_URANDOM) ||
+ seedSource.equals(URL_DEV_RANDOM);
+
+ if (nativeAvailable && useNativePRNG) {
map.put("SecureRandom.NativePRNG",
"sun.security.provider.NativePRNG");
}
map.put("SecureRandom.SHA1PRNG",
"sun.security.provider.SecureRandom");
- if (nativeAvailable && !useUrandom) {
+ if (nativeAvailable && !useNativePRNG) {
map.put("SecureRandom.NativePRNG",
"sun.security.provider.NativePRNG");
}
+ if (NativePRNG.Blocking.isAvailable()) {
+ map.put("SecureRandom.NativePRNGBlocking",
+ "sun.security.provider.NativePRNG$Blocking");
+ }
+
+ if (NativePRNG.NonBlocking.isAvailable()) {
+ map.put("SecureRandom.NativePRNGNonBlocking",
+ "sun.security.provider.NativePRNG$NonBlocking");
+ }
+
/*
* Signature engines
*/
- map.put("Signature.SHA1withDSA", "sun.security.provider.DSA$SHA1withDSA");
+ map.put("Signature.SHA1withDSA",
+ "sun.security.provider.DSA$SHA1withDSA");
map.put("Signature.NONEwithDSA", "sun.security.provider.DSA$RawDSA");
map.put("Alg.Alias.Signature.RawDSA", "NONEwithDSA");
- map.put("Signature.SHA224withDSA", "sun.security.provider.DSA$SHA224withDSA");
- map.put("Signature.SHA256withDSA", "sun.security.provider.DSA$SHA256withDSA");
+ map.put("Signature.SHA224withDSA",
+ "sun.security.provider.DSA$SHA224withDSA");
+ map.put("Signature.SHA256withDSA",
+ "sun.security.provider.DSA$SHA256withDSA");
String dsaKeyClasses = "java.security.interfaces.DSAPublicKey" +
"|java.security.interfaces.DSAPrivateKey";
@@ -128,13 +145,15 @@
map.put("Alg.Alias.Signature.SHAwithDSA", "SHA1withDSA");
map.put("Alg.Alias.Signature.DSAWithSHA1", "SHA1withDSA");
map.put("Alg.Alias.Signature.OID.1.2.840.10040.4.3",
- "SHA1withDSA");
+ "SHA1withDSA");
map.put("Alg.Alias.Signature.1.2.840.10040.4.3", "SHA1withDSA");
map.put("Alg.Alias.Signature.1.3.14.3.2.13", "SHA1withDSA");
map.put("Alg.Alias.Signature.1.3.14.3.2.27", "SHA1withDSA");
- map.put("Alg.Alias.Signature.OID.2.16.840.1.101.3.4.3.1", "SHA224withDSA");
+ map.put("Alg.Alias.Signature.OID.2.16.840.1.101.3.4.3.1",
+ "SHA224withDSA");
map.put("Alg.Alias.Signature.2.16.840.1.101.3.4.3.1", "SHA224withDSA");
- map.put("Alg.Alias.Signature.OID.2.16.840.1.101.3.4.3.2", "SHA256withDSA");
+ map.put("Alg.Alias.Signature.OID.2.16.840.1.101.3.4.3.2",
+ "SHA256withDSA");
map.put("Alg.Alias.Signature.2.16.840.1.101.3.4.3.2", "SHA256withDSA");
/*
@@ -160,17 +179,21 @@
map.put("MessageDigest.SHA-224", "sun.security.provider.SHA2$SHA224");
map.put("Alg.Alias.MessageDigest.2.16.840.1.101.3.4.2.4", "SHA-224");
- map.put("Alg.Alias.MessageDigest.OID.2.16.840.1.101.3.4.2.4", "SHA-224");
+ map.put("Alg.Alias.MessageDigest.OID.2.16.840.1.101.3.4.2.4",
+ "SHA-224");
map.put("MessageDigest.SHA-256", "sun.security.provider.SHA2$SHA256");
map.put("Alg.Alias.MessageDigest.2.16.840.1.101.3.4.2.1", "SHA-256");
- map.put("Alg.Alias.MessageDigest.OID.2.16.840.1.101.3.4.2.1", "SHA-256");
+ map.put("Alg.Alias.MessageDigest.OID.2.16.840.1.101.3.4.2.1",
+ "SHA-256");
map.put("MessageDigest.SHA-384", "sun.security.provider.SHA5$SHA384");
map.put("Alg.Alias.MessageDigest.2.16.840.1.101.3.4.2.2", "SHA-384");
- map.put("Alg.Alias.MessageDigest.OID.2.16.840.1.101.3.4.2.2", "SHA-384");
+ map.put("Alg.Alias.MessageDigest.OID.2.16.840.1.101.3.4.2.2",
+ "SHA-384");
map.put("MessageDigest.SHA-512", "sun.security.provider.SHA5$SHA512");
map.put("Alg.Alias.MessageDigest.2.16.840.1.101.3.4.2.3", "SHA-512");
- map.put("Alg.Alias.MessageDigest.OID.2.16.840.1.101.3.4.2.3", "SHA-512");
+ map.put("Alg.Alias.MessageDigest.OID.2.16.840.1.101.3.4.2.3",
+ "SHA-512");
/*
* Algorithm Parameter Generator engines
@@ -296,6 +319,7 @@
seedSource = AccessController.doPrivileged(
new PrivilegedAction<String>() {
+ @Override
public String run() {
String egdSource = System.getProperty(PROP_EGD, "");
if (egdSource.length() != 0) {
@@ -314,4 +338,36 @@
return seedSource;
}
+ /*
+ * Use a URI to access this File. Previous code used a URL
+ * which is less strict on syntax. If we encounter a
+ * URISyntaxException we make best efforts for backwards
+ * compatibility. e.g. space character in deviceName string.
+ *
+ * Method called within PrivilegedExceptionAction block.
+ *
+ * Moved from SeedGenerator to avoid initialization problems with
+ * signed providers.
+ */
+ static File getDeviceFile(URL device) throws IOException {
+ try {
+ URI deviceURI = device.toURI();
+ if(deviceURI.isOpaque()) {
+ // File constructor does not accept opaque URI
+ URI localDir = new File(
+ System.getProperty("user.dir")).toURI();
+ String uriPath = localDir.toString() +
+ deviceURI.toString().substring(5);
+ return new File(URI.create(uriPath));
+ } else {
+ return new File(deviceURI);
+ }
+ } catch (URISyntaxException use) {
+ /*
+ * Make best effort to access this File.
+ * We can try using the URL path.
+ */
+ return new File(device.getPath());
+ }
+ }
}