diff options
| author | Christina Fu <cfu@redhat.com> | 2013-09-10 11:51:54 -0700 |
|---|---|---|
| committer | Christina Fu <cfu@redhat.com> | 2013-09-10 11:51:54 -0700 |
| commit | 4db22ab18f4ff17c1dd6dd5b9fa0227016eb7287 (patch) | |
| tree | a6f00367a09bb706cf3b12562392f0c1fc4ac027 /base/common/src | |
| parent | 04b71d19af2c0b49c9601996d30d96c8de32a944 (diff) | |
Bug 1005025 - Unable to view Curve details of ECC Cert request from Agent interface
Diffstat (limited to 'base/common/src')
| -rw-r--r-- | base/common/src/com/netscape/cms/profile/constraint/KeyConstraint.java | 327 | ||||
| -rw-r--r-- | base/common/src/com/netscape/cms/profile/def/UserKeyDefault.java | 8 |
2 files changed, 12 insertions, 323 deletions
diff --git a/base/common/src/com/netscape/cms/profile/constraint/KeyConstraint.java b/base/common/src/com/netscape/cms/profile/constraint/KeyConstraint.java index 20ea9a996..3e07ca307 100644 --- a/base/common/src/com/netscape/cms/profile/constraint/KeyConstraint.java +++ b/base/common/src/com/netscape/cms/profile/constraint/KeyConstraint.java @@ -19,7 +19,6 @@ package com.netscape.cms.profile.constraint; import java.math.BigInteger; import java.security.interfaces.DSAParams; -import java.util.HashMap; import java.util.Locale; import java.util.Vector; @@ -42,6 +41,7 @@ import com.netscape.certsrv.property.IDescriptor; import com.netscape.certsrv.request.IRequest; import com.netscape.cms.profile.def.NoDefault; import com.netscape.cms.profile.def.UserKeyDefault; +import com.netscape.cmsutil.crypto.CryptoUtil; /** * This constraint is to check the key type and @@ -55,308 +55,6 @@ public class KeyConstraint extends EnrollConstraint { public static final String CONFIG_KEY_TYPE = "keyType"; // (EC, RSA) public static final String CONFIG_KEY_PARAMETERS = "keyParameters"; - private static final String[] ecCurves = { - "nistp256", "nistp384", "nistp521", "sect163k1", "nistk163", "sect163r1", "sect163r2", - "nistb163", "sect193r1", "sect193r2", "sect233k1", "nistk233", "sect233r1", "nistb233", "sect239k1", - "sect283k1", "nistk283", - "sect283r1", "nistb283", "sect409k1", "nistk409", "sect409r1", "nistb409", "sect571k1", "nistk571", - "sect571r1", "nistb571", - "secp160k1", "secp160r1", "secp160r2", "secp192k1", "secp192r1", "nistp192", "secp224k1", "secp224r1", - "nistp224", "secp256k1", - "secp256r1", "secp384r1", "secp521r1", "prime192v1", "prime192v2", "prime192v3", "prime239v1", - "prime239v2", "prime239v3", "c2pnb163v1", - "c2pnb163v2", "c2pnb163v3", "c2pnb176v1", "c2tnb191v1", "c2tnb191v2", "c2tnb191v3", "c2pnb208w1", - "c2tnb239v1", "c2tnb239v2", "c2tnb239v3", - "c2pnb272w1", "c2pnb304w1", "c2tnb359w1", "c2pnb368w1", "c2tnb431r1", "secp112r1", "secp112r2", - "secp128r1", "secp128r2", "sect113r1", "sect113r2", - "sect131r1", "sect131r2" - }; - - private final static HashMap<String, Vector<String>> ecOIDs = new HashMap<String, Vector<String>>(); - static { - ecOIDs.put("1.2.840.10045.3.1.7", new Vector<String>() { - { - add("nistp256"); - add("secp256r1"); - } - }); - ecOIDs.put("1.3.132.0.34", new Vector<String>() { - { - add("nistp384"); - add("secp384r1"); - } - }); - ecOIDs.put("1.3.132.0.35", new Vector<String>() { - { - add("nistp521"); - add("secp521r1"); - } - }); - ecOIDs.put("1.3.132.0.1", new Vector<String>() { - { - add("sect163k1"); - add("nistk163"); - } - }); - ecOIDs.put("1.3.132.0.2", new Vector<String>() { - { - add("sect163r1"); - } - }); - ecOIDs.put("1.3.132.0.15", new Vector<String>() { - { - add("sect163r2"); - add("nistb163"); - } - }); - ecOIDs.put("1.3.132.0.24", new Vector<String>() { - { - add("sect193r1"); - } - }); - ecOIDs.put("1.3.132.0.25", new Vector<String>() { - { - add("sect193r2"); - } - }); - ecOIDs.put("1.3.132.0.26", new Vector<String>() { - { - add("sect233k1"); - add("nistk233"); - } - }); - ecOIDs.put("1.3.132.0.27", new Vector<String>() { - { - add("sect233r1"); - add("nistb233"); - } - }); - ecOIDs.put("1.3.132.0.3", new Vector<String>() { - { - add("sect239k1"); - } - }); - ecOIDs.put("1.3.132.0.16", new Vector<String>() { - { - add("sect283k1"); - add("nistk283"); - } - }); - ecOIDs.put("1.3.132.0.17", new Vector<String>() { - { - add("sect283r1"); - add("nistb283"); - } - }); - ecOIDs.put("1.3.132.0.36", new Vector<String>() { - { - add("sect409k1"); - add("nistk409"); - } - }); - ecOIDs.put("1.3.132.0.37", new Vector<String>() { - { - add("sect409r1"); - add("nistb409"); - } - }); - ecOIDs.put("1.3.132.0.38", new Vector<String>() { - { - add("sect571k1"); - add("nistk571"); - } - }); - ecOIDs.put("1.3.132.0.39", new Vector<String>() { - { - add("sect571r1"); - add("nistb571"); - } - }); - ecOIDs.put("1.3.132.0.9", new Vector<String>() { - { - add("secp160k1"); - } - }); - ecOIDs.put("1.3.132.0.8", new Vector<String>() { - { - add("secp160r1"); - } - }); - ecOIDs.put("1.3.132.0.30", new Vector<String>() { - { - add("secp160r2"); - } - }); - ecOIDs.put("1.3.132.0.31", new Vector<String>() { - { - add("secp192k1"); - } - }); - ecOIDs.put("1.2.840.10045.3.1.1", new Vector<String>() { - { - add("secp192r1"); - add("nistp192"); - add("prime192v1"); - } - }); - ecOIDs.put("1.3.132.0.32", new Vector<String>() { - { - add("secp224k1"); - } - }); - ecOIDs.put("1.3.132.0.33", new Vector<String>() { - { - add("secp224r1"); - add("nistp224"); - } - }); - ecOIDs.put("1.3.132.0.10", new Vector<String>() { - { - add("secp256k1"); - } - }); - ecOIDs.put("1.2.840.10045.3.1.2", new Vector<String>() { - { - add("prime192v2"); - } - }); - ecOIDs.put("1.2.840.10045.3.1.3", new Vector<String>() { - { - add("prime192v3"); - } - }); - ecOIDs.put("1.2.840.10045.3.1.4", new Vector<String>() { - { - add("prime239v1"); - } - }); - ecOIDs.put("1.2.840.10045.3.1.5", new Vector<String>() { - { - add("prime239v2"); - } - }); - ecOIDs.put("1.2.840.10045.3.1.6", new Vector<String>() { - { - add("prime239v3"); - } - }); - ecOIDs.put("1.2.840.10045.3.0.1", new Vector<String>() { - { - add("c2pnb163v1"); - } - }); - ecOIDs.put("1.2.840.10045.3.0.2", new Vector<String>() { - { - add("c2pnb163v2"); - } - }); - ecOIDs.put("1.2.840.10045.3.0.3", new Vector<String>() { - { - add("c2pnb163v3"); - } - }); - ecOIDs.put("1.2.840.10045.3.0.4", new Vector<String>() { - { - add("c2pnb176v1"); - } - }); - ecOIDs.put("1.2.840.10045.3.0.5", new Vector<String>() { - { - add("c2tnb191v1"); - } - }); - ecOIDs.put("1.2.840.10045.3.0.6", new Vector<String>() { - { - add("c2tnb191v2"); - } - }); - ecOIDs.put("1.2.840.10045.3.0.7", new Vector<String>() { - { - add("c2tnb191v3"); - } - }); - ecOIDs.put("1.2.840.10045.3.0.10", new Vector<String>() { - { - add("c2pnb208w1"); - } - }); - ecOIDs.put("1.2.840.10045.3.0.11", new Vector<String>() { - { - add("c2tnb239v1"); - } - }); - ecOIDs.put("1.2.840.10045.3.0.12", new Vector<String>() { - { - add("c2tnb239v2"); - } - }); - ecOIDs.put("1.2.840.10045.3.0.13", new Vector<String>() { - { - add("c2tnb239v3"); - } - }); - ecOIDs.put("1.2.840.10045.3.0.16", new Vector<String>() { - { - add("c2pnb272w1"); - } - }); - ecOIDs.put("1.2.840.10045.3.0.17", new Vector<String>() { - { - add("c2pnb304w1"); - } - }); - ecOIDs.put("1.2.840.10045.3.0.19", new Vector<String>() { - { - add("c2pnb368w1"); - } - }); - ecOIDs.put("1.2.840.10045.3.0.20", new Vector<String>() { - { - add("c2tnb431r1"); - } - }); - ecOIDs.put("1.3.132.0.6", new Vector<String>() { - { - add("secp112r1"); - } - }); - ecOIDs.put("1.3.132.0.7", new Vector<String>() { - { - add("secp112r2"); - } - }); - ecOIDs.put("1.3.132.0.28", new Vector<String>() { - { - add("secp128r1"); - } - }); - ecOIDs.put("1.3.132.0.29", new Vector<String>() { - { - add("secp128r2"); - } - }); - ecOIDs.put("1.3.132.0.4", new Vector<String>() { - { - add("sect113r1"); - } - }); - ecOIDs.put("1.3.132.0.5", new Vector<String>() { - { - add("sect113r2"); - } - }); - ecOIDs.put("1.3.132.0.22", new Vector<String>() { - { - add("sect131r1"); - } - }); - ecOIDs.put("1.3.132.0.23", new Vector<String>() { - { - add("sect131r2"); - } - }); - } - private static String[] cfgECCurves = null; private static String keyType = ""; private static String keyParams = ""; @@ -450,24 +148,7 @@ public class KeyConstraint extends EnrollConstraint { value)); } - AlgorithmId algid = key.getAlgorithmId(); - - CMS.debug("algId: " + algid); - - //Get raw string representation of alg parameters, will give - //us the curve OID. - - String params = null; - if (algid != null) { - params = algid.getParametersString(); - } - - if (params.startsWith("OID.")) { - params = params.substring(4); - } - - CMS.debug("EC key OID: " + params); - Vector<String> vect = ecOIDs.get(params); + Vector vect = CryptoUtil.getECKeyCurve(key); boolean curveFound = false; @@ -593,7 +274,7 @@ public class KeyConstraint extends EnrollConstraint { if (keyType.equals("EC")) { if (cfgECCurves == null) { //Use the static array as a backup if the config values are not present. - isECCurve = arrayContainsString(ecCurves, params[i]); + isECCurve = arrayContainsString(CryptoUtil.getECcurves(), params[i]); } else { isECCurve = arrayContainsString(cfgECCurves, params[i]); } @@ -608,7 +289,7 @@ public class KeyConstraint extends EnrollConstraint { keySize = Integer.parseInt(params[i]); } catch (Exception e) { if (isOptional(keyType)) { - isECCurve = arrayContainsString(ecCurves, params[i]); + isECCurve = arrayContainsString(CryptoUtil.getECcurves(), params[i]); } keySize = 0; } diff --git a/base/common/src/com/netscape/cms/profile/def/UserKeyDefault.java b/base/common/src/com/netscape/cms/profile/def/UserKeyDefault.java index f6bc488b2..62b8e6471 100644 --- a/base/common/src/com/netscape/cms/profile/def/UserKeyDefault.java +++ b/base/common/src/com/netscape/cms/profile/def/UserKeyDefault.java @@ -21,6 +21,7 @@ import java.io.ByteArrayInputStream; import java.math.BigInteger; import java.security.interfaces.DSAParams; import java.util.Locale; +import java.util.Vector; import netscape.security.provider.DSAPublicKey; import netscape.security.provider.RSAPublicKey; @@ -38,6 +39,7 @@ import com.netscape.certsrv.property.Descriptor; import com.netscape.certsrv.property.EPropertyException; import com.netscape.certsrv.property.IDescriptor; import com.netscape.certsrv.request.IRequest; +import com.netscape.cmsutil.crypto.CryptoUtil; /** * This class implements an enrollment default policy @@ -144,6 +146,12 @@ public class UserKeyDefault extends EnrollDefault { try { if (k.getAlgorithm().equals("RSA")) { return Integer.toString(getRSAKeyLen(k)); + } else if (k.getAlgorithm().equals("EC")) { + Vector vect = CryptoUtil.getECKeyCurve(k); + if (vect != null) + return vect.toString(); + else + return null; } else { return Integer.toString(getDSAKeyLen(k)); } |
