|
|
da1227e |
# HG changeset patch
|
|
|
da1227e |
# User andrew
|
|
|
da1227e |
# Date 1467652889 -3600
|
|
|
da1227e |
# Mon Jul 04 18:21:29 2016 +0100
|
|
|
da1227e |
# Node ID a4541d1d8609cadb08d3e31b40b9184ff32dd6c3
|
|
|
da1227e |
# Parent bc6eab2038c603afb2eb2b4644f3b900c8fd0c46
|
|
|
da1227e |
PR3083, RH1346460: Regression in SSL debug output without an ECC provider
|
|
|
da1227e |
Summary: Return null rather than throwing an exception when there's no ECC provider.
|
|
|
da1227e |
|
|
|
2ee1d54 |
diff --git openjdk.orig/jdk/src/share/classes/sun/security/ec/ECKeyPairGenerator.java openjdk/jdk/src/share/classes/sun/security/ec/ECKeyPairGenerator.java
|
|
|
2ee1d54 |
--- openjdk.orig/jdk/src/share/classes/sun/security/ec/ECKeyPairGenerator.java
|
|
|
2ee1d54 |
+++ openjdk/jdk/src/share/classes/sun/security/ec/ECKeyPairGenerator.java
|
|
|
2ee1d54 |
@@ -121,7 +121,7 @@
|
|
|
2ee1d54 |
private static void ensureCurveIsSupported(ECParameterSpec ecSpec)
|
|
|
2ee1d54 |
throws InvalidAlgorithmParameterException {
|
|
|
2ee1d54 |
|
|
|
2ee1d54 |
- AlgorithmParameters ecParams = ECUtil.getECParameters(null);
|
|
|
2ee1d54 |
+ AlgorithmParameters ecParams = ECUtil.getECParameters(null, true);
|
|
|
2ee1d54 |
byte[] encodedParams;
|
|
|
2ee1d54 |
try {
|
|
|
2ee1d54 |
ecParams.init(ecSpec);
|
|
|
2ee1d54 |
diff --git openjdk.orig/jdk/src/share/classes/sun/security/util/Debug.java openjdk/jdk/src/share/classes/sun/security/util/Debug.java
|
|
|
2ee1d54 |
--- openjdk.orig/jdk/src/share/classes/sun/security/util/Debug.java
|
|
|
2ee1d54 |
+++ openjdk/jdk/src/share/classes/sun/security/util/Debug.java
|
|
|
da1227e |
@@ -73,6 +73,7 @@
|
|
|
da1227e |
System.err.println("certpath PKIX CertPathBuilder and");
|
|
|
da1227e |
System.err.println(" CertPathValidator debugging");
|
|
|
da1227e |
System.err.println("combiner SubjectDomainCombiner debugging");
|
|
|
da1227e |
+ System.err.println("ecc Elliptic Curve Cryptography debugging");
|
|
|
da1227e |
System.err.println("gssloginconfig");
|
|
|
da1227e |
System.err.println(" GSS LoginConfigImpl debugging");
|
|
|
da1227e |
System.err.println("configfile JAAS ConfigFile loading");
|
|
|
2ee1d54 |
diff --git openjdk.orig/jdk/src/share/classes/sun/security/util/ECUtil.java openjdk/jdk/src/share/classes/sun/security/util/ECUtil.java
|
|
|
2ee1d54 |
--- openjdk.orig/jdk/src/share/classes/sun/security/util/ECUtil.java
|
|
|
2ee1d54 |
+++ openjdk/jdk/src/share/classes/sun/security/util/ECUtil.java
|
|
|
da1227e |
@@ -41,6 +41,9 @@
|
|
|
da1227e |
|
|
|
eed066a |
public final class ECUtil {
|
|
|
da1227e |
|
|
|
da1227e |
+ /* Are we debugging ? */
|
|
|
da1227e |
+ private static final Debug debug = Debug.getInstance("ecc");
|
|
|
da1227e |
+
|
|
|
da1227e |
// Used by SunPKCS11 and SunJSSE.
|
|
|
da1227e |
public static ECPoint decodePoint(byte[] data, EllipticCurve curve)
|
|
|
da1227e |
throws IOException {
|
|
|
da1227e |
@@ -90,6 +93,10 @@
|
|
|
da1227e |
}
|
|
|
da1227e |
|
|
|
2ee1d54 |
public static AlgorithmParameters getECParameters(Provider p) {
|
|
|
da1227e |
+ return getECParameters(p, false);
|
|
|
da1227e |
+ }
|
|
|
da1227e |
+
|
|
|
2ee1d54 |
+ public static AlgorithmParameters getECParameters(Provider p, boolean throwException) {
|
|
|
da1227e |
try {
|
|
|
da1227e |
if (p != null) {
|
|
|
da1227e |
return AlgorithmParameters.getInstance("EC", p);
|
|
|
da1227e |
@@ -97,13 +104,21 @@
|
|
|
da1227e |
|
|
|
da1227e |
return AlgorithmParameters.getInstance("EC");
|
|
|
da1227e |
} catch (NoSuchAlgorithmException nsae) {
|
|
|
da1227e |
- throw new RuntimeException(nsae);
|
|
|
da1227e |
+ if (throwException) {
|
|
|
da1227e |
+ throw new RuntimeException(nsae);
|
|
|
da1227e |
+ } else {
|
|
|
da1227e |
+ // ECC provider is optional so just return null
|
|
|
da1227e |
+ if (debug != null) {
|
|
|
da1227e |
+ debug.println("Provider unavailable: " + nsae);
|
|
|
da1227e |
+ }
|
|
|
da1227e |
+ return null;
|
|
|
da1227e |
+ }
|
|
|
da1227e |
}
|
|
|
da1227e |
}
|
|
|
da1227e |
|
|
|
da1227e |
public static byte[] encodeECParameterSpec(Provider p,
|
|
|
da1227e |
ECParameterSpec spec) {
|
|
|
da1227e |
- AlgorithmParameters parameters = getECParameters(p);
|
|
|
da1227e |
+ AlgorithmParameters parameters = getECParameters(p, true);
|
|
|
da1227e |
|
|
|
da1227e |
try {
|
|
|
da1227e |
parameters.init(spec);
|
|
|
da1227e |
@@ -122,11 +137,16 @@
|
|
|
da1227e |
public static ECParameterSpec getECParameterSpec(Provider p,
|
|
|
da1227e |
ECParameterSpec spec) {
|
|
|
da1227e |
AlgorithmParameters parameters = getECParameters(p);
|
|
|
da1227e |
+ if (parameters == null)
|
|
|
da1227e |
+ return null;
|
|
|
da1227e |
|
|
|
da1227e |
try {
|
|
|
da1227e |
parameters.init(spec);
|
|
|
da1227e |
return parameters.getParameterSpec(ECParameterSpec.class);
|
|
|
da1227e |
} catch (InvalidParameterSpecException ipse) {
|
|
|
da1227e |
+ if (debug != null) {
|
|
|
da1227e |
+ debug.println("Invalid parameter specification: " + ipse);
|
|
|
da1227e |
+ }
|
|
|
da1227e |
return null;
|
|
|
da1227e |
}
|
|
|
da1227e |
}
|
|
|
da1227e |
@@ -135,34 +155,49 @@
|
|
|
da1227e |
byte[] params)
|
|
|
da1227e |
throws IOException {
|
|
|
da1227e |
AlgorithmParameters parameters = getECParameters(p);
|
|
|
da1227e |
+ if (parameters == null)
|
|
|
da1227e |
+ return null;
|
|
|
da1227e |
|
|
|
da1227e |
parameters.init(params);
|
|
|
da1227e |
|
|
|
da1227e |
try {
|
|
|
da1227e |
return parameters.getParameterSpec(ECParameterSpec.class);
|
|
|
da1227e |
} catch (InvalidParameterSpecException ipse) {
|
|
|
da1227e |
+ if (debug != null) {
|
|
|
da1227e |
+ debug.println("Invalid parameter specification: " + ipse);
|
|
|
da1227e |
+ }
|
|
|
da1227e |
return null;
|
|
|
da1227e |
}
|
|
|
da1227e |
}
|
|
|
da1227e |
|
|
|
da1227e |
public static ECParameterSpec getECParameterSpec(Provider p, String name) {
|
|
|
da1227e |
AlgorithmParameters parameters = getECParameters(p);
|
|
|
da1227e |
+ if (parameters == null)
|
|
|
da1227e |
+ return null;
|
|
|
da1227e |
|
|
|
da1227e |
try {
|
|
|
da1227e |
parameters.init(new ECGenParameterSpec(name));
|
|
|
da1227e |
return parameters.getParameterSpec(ECParameterSpec.class);
|
|
|
da1227e |
} catch (InvalidParameterSpecException ipse) {
|
|
|
da1227e |
+ if (debug != null) {
|
|
|
da1227e |
+ debug.println("Invalid parameter specification: " + ipse);
|
|
|
da1227e |
+ }
|
|
|
da1227e |
return null;
|
|
|
da1227e |
}
|
|
|
da1227e |
}
|
|
|
da1227e |
|
|
|
da1227e |
public static ECParameterSpec getECParameterSpec(Provider p, int keySize) {
|
|
|
da1227e |
AlgorithmParameters parameters = getECParameters(p);
|
|
|
da1227e |
+ if (parameters == null)
|
|
|
da1227e |
+ return null;
|
|
|
da1227e |
|
|
|
da1227e |
try {
|
|
|
da1227e |
parameters.init(new ECKeySizeParameterSpec(keySize));
|
|
|
da1227e |
return parameters.getParameterSpec(ECParameterSpec.class);
|
|
|
da1227e |
} catch (InvalidParameterSpecException ipse) {
|
|
|
da1227e |
+ if (debug != null) {
|
|
|
da1227e |
+ debug.println("Invalid parameter specification: " + ipse);
|
|
|
da1227e |
+ }
|
|
|
da1227e |
return null;
|
|
|
da1227e |
}
|
|
|
da1227e |
|
|
|
da1227e |
@@ -171,11 +206,16 @@
|
|
|
da1227e |
public static String getCurveName(Provider p, ECParameterSpec spec) {
|
|
|
da1227e |
ECGenParameterSpec nameSpec;
|
|
|
da1227e |
AlgorithmParameters parameters = getECParameters(p);
|
|
|
da1227e |
+ if (parameters == null)
|
|
|
da1227e |
+ return null;
|
|
|
da1227e |
|
|
|
da1227e |
try {
|
|
|
da1227e |
parameters.init(spec);
|
|
|
da1227e |
nameSpec = parameters.getParameterSpec(ECGenParameterSpec.class);
|
|
|
da1227e |
} catch (InvalidParameterSpecException ipse) {
|
|
|
da1227e |
+ if (debug != null) {
|
|
|
da1227e |
+ debug.println("Invalid parameter specification: " + ipse);
|
|
|
da1227e |
+ }
|
|
|
da1227e |
return null;
|
|
|
da1227e |
}
|
|
|
da1227e |
|