blob: 7c65234dd1b06e7d866e2262f95058c2a28bcdf3 [file] [log] [blame]
/* GENERATED SOURCE. DO NOT MODIFY. */
package com.android.org.bouncycastle.crypto.util;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import com.android.org.bouncycastle.asn1.ASN1ObjectIdentifier;
import com.android.org.bouncycastle.asn1.nist.NISTNamedCurves;
import com.android.org.bouncycastle.asn1.sec.SECObjectIdentifiers;
import com.android.org.bouncycastle.asn1.x9.X9ECParameters;
import com.android.org.bouncycastle.crypto.ec.CustomNamedCurves;
import com.android.org.bouncycastle.crypto.params.ECDomainParameters;
import com.android.org.bouncycastle.crypto.params.ECNamedDomainParameters;
import com.android.org.bouncycastle.math.ec.ECCurve;
import com.android.org.bouncycastle.util.Strings;
/**
* @hide This class is not part of the Android public SDK API
*/
public class SSHNamedCurves
{
private static final Map<ASN1ObjectIdentifier, String> oidToName;
private static final Map<String, ASN1ObjectIdentifier> oidMap =
Collections.unmodifiableMap(new HashMap<String, ASN1ObjectIdentifier>()
{
{
put("nistp256", SECObjectIdentifiers.secp256r1);
put("nistp384", SECObjectIdentifiers.secp384r1);
put("nistp521", SECObjectIdentifiers.secp521r1);
put("nistk163", SECObjectIdentifiers.sect163k1);
put("nistp192", SECObjectIdentifiers.secp192r1);
put("nistp224", SECObjectIdentifiers.secp224r1);
put("nistk233", SECObjectIdentifiers.sect233k1);
put("nistb233", SECObjectIdentifiers.sect233r1);
put("nistk283", SECObjectIdentifiers.sect283k1);
put("nistk409", SECObjectIdentifiers.sect409k1);
put("nistb409", SECObjectIdentifiers.sect409r1);
put("nistt571", SECObjectIdentifiers.sect571k1);
}
});
private static final Map<String, String> curveNameToSSHName = Collections.unmodifiableMap(new HashMap<String, String>()
{
{
String[][] curves = {
{"secp256r1", "nistp256"},
{"secp384r1", "nistp384"},
{"secp521r1", "nistp521"},
{"sect163k1", "nistk163"},
{"secp192r1", "nistp192"},
{"secp224r1", "nistp224"},
{"sect233k1", "nistk233"},
{"sect233r1", "nistb233"},
{"sect283k1", "nistk283"},
{"sect409k1", "nistk409"},
{"sect409r1", "nistb409"},
{"sect571k1", "nistt571"}
};
for (int i = 0; i != curves.length; i++)
{
String[] item = curves[i];
put(item[0], item[1]);
}
}
});
private static HashMap<ECCurve, String> curveMap = new HashMap<ECCurve, String>()
{
{
Enumeration<Object> e = CustomNamedCurves.getNames();
while (e.hasMoreElements())
{
String name = (String)e.nextElement();
X9ECParameters parameters = CustomNamedCurves.getByName(name);
put(parameters.getCurve(), name);
}
}
};
static
{
oidToName = Collections.unmodifiableMap(new HashMap<ASN1ObjectIdentifier, String>()
{
{
for (Iterator it = oidMap.keySet().iterator(); it.hasNext();)
{
String key = (String)it.next();
put(oidMap.get(key), key);
}
}
});
}
public static ASN1ObjectIdentifier getByName(String sshName)
{
return (ASN1ObjectIdentifier)oidMap.get(sshName);
}
public static X9ECParameters getParameters(String sshName)
{
return NISTNamedCurves.getByOID((ASN1ObjectIdentifier)oidMap.get(Strings.toLowerCase(sshName)));
}
public static X9ECParameters getParameters(ASN1ObjectIdentifier oid)
{
return NISTNamedCurves.getByOID(oid);
}
public static String getName(ASN1ObjectIdentifier oid)
{
return (String)oidToName.get(oid);
}
public static String getNameForParameters(ECDomainParameters parameters)
{
if (parameters instanceof ECNamedDomainParameters)
{
return getName(((ECNamedDomainParameters)parameters).getName());
}
return getNameForParameters(parameters.getCurve());
}
public static String getNameForParameters(ECCurve curve)
{
return (String)curveNameToSSHName.get(curveMap.get(curve));
}
}