18212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrompackage org.bouncycastle.jce.provider.asymmetric.ec; 28212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 38212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstromimport org.bouncycastle.asn1.DERObjectIdentifier; 48212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom// BEGIN android-removed 58212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom// import org.bouncycastle.asn1.cryptopro.ECGOST3410NamedCurves; 68212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom// END android-removed 78212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstromimport org.bouncycastle.asn1.nist.NISTNamedCurves; 88212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstromimport org.bouncycastle.asn1.sec.SECNamedCurves; 98212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom// BEGIN android-removed 108212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom// import org.bouncycastle.asn1.teletrust.TeleTrusTNamedCurves; 118212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom// END android-removed 128212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstromimport org.bouncycastle.asn1.x9.X962NamedCurves; 138212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstromimport org.bouncycastle.asn1.x9.X9ECParameters; 148212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstromimport org.bouncycastle.crypto.params.AsymmetricKeyParameter; 158212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstromimport org.bouncycastle.crypto.params.ECDomainParameters; 168212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstromimport org.bouncycastle.crypto.params.ECPrivateKeyParameters; 178212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstromimport org.bouncycastle.crypto.params.ECPublicKeyParameters; 188212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstromimport org.bouncycastle.jce.interfaces.ECPrivateKey; 198212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstromimport org.bouncycastle.jce.interfaces.ECPublicKey; 208212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstromimport org.bouncycastle.jce.spec.ECParameterSpec; 218212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstromimport org.bouncycastle.jce.provider.ProviderUtil; 228212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstromimport org.bouncycastle.jce.provider.JCEECPublicKey; 238212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 248212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstromimport java.security.InvalidKeyException; 258212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstromimport java.security.PrivateKey; 268212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstromimport java.security.PublicKey; 278212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 288212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom/** 298212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom * utility class for converting jce/jca ECDSA, ECDH, and ECDHC 308212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom * objects into their org.bouncycastle.crypto counterparts. 318212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom */ 328212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrompublic class ECUtil 338212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom{ 348212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom /** 358212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom * Returns a sorted array of middle terms of the reduction polynomial. 368212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom * @param k The unsorted array of middle terms of the reduction polynomial 378212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom * of length 1 or 3. 388212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom * @return the sorted array of middle terms of the reduction polynomial. 398212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom * This array always has length 3. 408212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom */ 418212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom static int[] convertMidTerms( 428212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom int[] k) 438212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 448212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom int[] res = new int[3]; 458212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 468212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom if (k.length == 1) 478212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 488212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom res[0] = k[0]; 498212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 508212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom else 518212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 528212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom if (k.length != 3) 538212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 548212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom throw new IllegalArgumentException("Only Trinomials and pentanomials supported"); 558212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 568212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 578212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom if (k[0] < k[1] && k[0] < k[2]) 588212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 598212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom res[0] = k[0]; 608212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom if (k[1] < k[2]) 618212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 628212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom res[1] = k[1]; 638212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom res[2] = k[2]; 648212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 658212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom else 668212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 678212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom res[1] = k[2]; 688212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom res[2] = k[1]; 698212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 708212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 718212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom else if (k[1] < k[2]) 728212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 738212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom res[0] = k[1]; 748212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom if (k[0] < k[2]) 758212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 768212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom res[1] = k[0]; 778212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom res[2] = k[2]; 788212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 798212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom else 808212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 818212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom res[1] = k[2]; 828212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom res[2] = k[0]; 838212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 848212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 858212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom else 868212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 878212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom res[0] = k[2]; 888212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom if (k[0] < k[1]) 898212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 908212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom res[1] = k[0]; 918212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom res[2] = k[1]; 928212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 938212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom else 948212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 958212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom res[1] = k[1]; 968212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom res[2] = k[0]; 978212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 988212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 998212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 1008212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 1018212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom return res; 1028212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 1038212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 1048212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom public static AsymmetricKeyParameter generatePublicKeyParameter( 1058212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom PublicKey key) 1068212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom throws InvalidKeyException 1078212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 1088212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom if (key instanceof ECPublicKey) 1098212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 1108212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom ECPublicKey k = (ECPublicKey)key; 1118212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom ECParameterSpec s = k.getParameters(); 1128212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 1138212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom if (s == null) 1148212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 1158212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom s = ProviderUtil.getEcImplicitlyCa(); 1168212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 1178212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom return new ECPublicKeyParameters( 1188212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom ((JCEECPublicKey)k).engineGetQ(), 1198212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom new ECDomainParameters(s.getCurve(), s.getG(), s.getN(), s.getH(), s.getSeed())); 1208212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 1218212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom else 1228212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 1238212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom return new ECPublicKeyParameters( 1248212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom k.getQ(), 1258212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom new ECDomainParameters(s.getCurve(), s.getG(), s.getN(), s.getH(), s.getSeed())); 1268212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 1278212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 1288212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom else if (key instanceof java.security.interfaces.ECPublicKey) 1298212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 1308212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom java.security.interfaces.ECPublicKey pubKey = (java.security.interfaces.ECPublicKey)key; 1318212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom ECParameterSpec s = EC5Util.convertSpec(pubKey.getParams(), false); 1328212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom return new ECPublicKeyParameters( 1338212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom EC5Util.convertPoint(pubKey.getParams(), pubKey.getW(), false), 1348212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom new ECDomainParameters(s.getCurve(), s.getG(), s.getN(), s.getH(), s.getSeed())); 1358212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 1368212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 1378212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom throw new InvalidKeyException("cannot identify EC public key."); 1388212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 1398212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 1408212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom public static AsymmetricKeyParameter generatePrivateKeyParameter( 1418212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom PrivateKey key) 1428212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom throws InvalidKeyException 1438212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 1448212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom if (key instanceof ECPrivateKey) 1458212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 1468212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom ECPrivateKey k = (ECPrivateKey)key; 1478212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom ECParameterSpec s = k.getParameters(); 1488212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 1498212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom if (s == null) 1508212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 1518212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom s = ProviderUtil.getEcImplicitlyCa(); 1528212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 1538212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 1548212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom return new ECPrivateKeyParameters( 1558212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom k.getD(), 1568212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom new ECDomainParameters(s.getCurve(), s.getG(), s.getN(), s.getH(), s.getSeed())); 1578212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 1588212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 1598212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom throw new InvalidKeyException("can't identify EC private key."); 1608212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 1618212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 1628212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom public static DERObjectIdentifier getNamedCurveOid( 1638212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom String name) 1648212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 1658212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom DERObjectIdentifier oid = X962NamedCurves.getOID(name); 1668212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 1678212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom if (oid == null) 1688212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 1698212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom oid = SECNamedCurves.getOID(name); 1708212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom if (oid == null) 1718212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 1728212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom oid = NISTNamedCurves.getOID(name); 1738212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 1748212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom // BEGIN android-removed 1758212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom // if (oid == null) 1768212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom // { 1778212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom // oid = TeleTrusTNamedCurves.getOID(name); 1788212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom // } 1798212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom // if (oid == null) 1808212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom // { 1818212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom // oid = ECGOST3410NamedCurves.getOID(name); 1828212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom // } 1838212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom // END android-removed 1848212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 1858212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 1868212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom return oid; 1878212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 1888212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 1898212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom public static X9ECParameters getNamedCurveByOid( 1908212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom DERObjectIdentifier oid) 1918212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 1928212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom X9ECParameters params = X962NamedCurves.getByOID(oid); 1938212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 1948212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom if (params == null) 1958212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 1968212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom params = SECNamedCurves.getByOID(oid); 1978212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom if (params == null) 1988212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 1998212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom params = NISTNamedCurves.getByOID(oid); 2008212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 2018212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom // BEGIN android-removed 2028212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom // if (params == null) 2038212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom // { 2048212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom // params = TeleTrusTNamedCurves.getByOID(oid); 2058212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom // } 2068212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom // END android-removed 2078212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 2088212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 2098212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom return params; 2108212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 2118212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 2128212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom public static String getCurveName( 2138212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom DERObjectIdentifier oid) 2148212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 2158212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom String name = X962NamedCurves.getName(oid); 2168212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 2178212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom if (name == null) 2188212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 2198212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom name = SECNamedCurves.getName(oid); 2208212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom if (name == null) 2218212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 2228212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom name = NISTNamedCurves.getName(oid); 2238212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 2248212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom // BEGIN android-removed 2258212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom // if (name == null) 2268212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom // { 2278212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom // name = TeleTrusTNamedCurves.getName(oid); 2288212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom // } 2298212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom // if (name == null) 2308212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom // { 2318212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom // name = ECGOST3410NamedCurves.getName(oid); 2328212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom // } 2338212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom // END android-removed 2348212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 2358212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 2368212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom return name; 2378212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 2388212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom} 239