package org.bouncycastle.asn1.nist;

import org.bouncycastle.asn1.DERObjectIdentifier;
import org.bouncycastle.asn1.sec.SECNamedCurves;
import org.bouncycastle.asn1.sec.SECObjectIdentifiers;
import org.bouncycastle.asn1.x9.X9ECParameters;
import org.bouncycastle.util.Strings;

import java.util.Enumeration;
import java.util.Hashtable;

Utility class for fetching curves using their NIST names as published in FIPS-PUB 186-2
/** * Utility class for fetching curves using their NIST names as published in FIPS-PUB 186-2 */
public class NISTNamedCurves { static final Hashtable objIds = new Hashtable(); static final Hashtable names = new Hashtable(); static void defineCurve(String name, DERObjectIdentifier oid) { objIds.put(name, oid); names.put(oid, name); } static { // TODO Missing the "K-" curves defineCurve("B-571", SECObjectIdentifiers.sect571r1); defineCurve("B-409", SECObjectIdentifiers.sect409r1); defineCurve("B-283", SECObjectIdentifiers.sect283r1); defineCurve("B-233", SECObjectIdentifiers.sect233r1); defineCurve("B-163", SECObjectIdentifiers.sect163r2); defineCurve("P-521", SECObjectIdentifiers.secp521r1); defineCurve("P-384", SECObjectIdentifiers.secp384r1); defineCurve("P-256", SECObjectIdentifiers.secp256r1); defineCurve("P-224", SECObjectIdentifiers.secp224r1); defineCurve("P-192", SECObjectIdentifiers.secp192r1); } public static X9ECParameters getByName( String name) { DERObjectIdentifier oid = (DERObjectIdentifier)objIds.get(Strings.toUpperCase(name)); if (oid != null) { return getByOID(oid); } return null; }
return the X9ECParameters object for the named curve represented by the passed in object identifier. Null if the curve isn't present.
Params:
  • oid – an object identifier representing a named curve, if present.
/** * return the X9ECParameters object for the named curve represented by * the passed in object identifier. Null if the curve isn't present. * * @param oid an object identifier representing a named curve, if present. */
public static X9ECParameters getByOID( DERObjectIdentifier oid) { return SECNamedCurves.getByOID(oid); }
return the object identifier signified by the passed in name. Null if there is no object identifier associated with name.
Returns:the object identifier associated with name, if present.
/** * return the object identifier signified by the passed in name. Null * if there is no object identifier associated with name. * * @return the object identifier associated with name, if present. */
public static DERObjectIdentifier getOID( String name) { return (DERObjectIdentifier)objIds.get(Strings.toUpperCase(name)); }
return the named curve name represented by the given object identifier.
/** * return the named curve name represented by the given object identifier. */
public static String getName( DERObjectIdentifier oid) { return (String)names.get(oid); }
returns an enumeration containing the name strings for curves contained in this structure.
/** * returns an enumeration containing the name strings for curves * contained in this structure. */
public static Enumeration getNames() { return objIds.keys(); } }