From 928b4bbbe5a313deae65e716ee57227123cf47d0 Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 6 Sep 2013 13:53:15 +0000 Subject: [PATCH] - genSpec: fallback to BC provider --- core/java/src/net/i2p/crypto/ECConstants.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/core/java/src/net/i2p/crypto/ECConstants.java b/core/java/src/net/i2p/crypto/ECConstants.java index 49f8c5d7b8..4b202a8147 100644 --- a/core/java/src/net/i2p/crypto/ECConstants.java +++ b/core/java/src/net/i2p/crypto/ECConstants.java @@ -266,7 +266,7 @@ class ECConstants { /** * Generate a spec from a curve name - * @return null iffail + * @return null if fail */ private static ECParameterSpec genSpec(String name) { // convert the ECGenParameterSpecs to ECParameterSpecs for several reasons: @@ -276,7 +276,18 @@ class ECConstants { // to convert a I2P key to a Java key. Sadly, a ECGenParameterSpec // is not a ECParameterSpec. try { - AlgorithmParameters ap = AlgorithmParameters.getInstance("EC"); + AlgorithmParameters ap; + try { + ap = AlgorithmParameters.getInstance("EC"); + } catch (Exception e) { + if (BC_AVAILABLE) { + log("Named curve " + name + " is not available, trying BC", e); + ap = AlgorithmParameters.getInstance("EC", "BC"); + log("Fallback to BC worked for named curve " + name); + } else { + throw e; + } + } ECGenParameterSpec ecgps = new ECGenParameterSpec(name); ap.init(ecgps); ECParameterSpec rv = ap.getParameterSpec(ECParameterSpec.class);