1 /* 2 * Copyright (c) 2006, 2019, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package sun.security.util; 27 28 import java.math.BigInteger; 29 30 import java.security.spec.*; 31 32 import java.util.*; 33 import java.util.regex.Pattern; 34 35 /** 36 * Repository for well-known Elliptic Curve parameters. It is used by both 37 * the SunPKCS11 and SunJSSE code. 38 * 39 * @since 1.6 40 * @author Andreas Sterbenz 41 */ 42 public class CurveDB { 43 private static final int P = 1; // prime curve 44 private static final int B = 2; // binary curve 45 private static final int PD = 5; // prime curve, mark as default 46 private static final int BD = 6; // binary curve, mark as default 47 48 private static final Map<String,NamedCurve> oidMap = 49 new LinkedHashMap<String,NamedCurve>(); 50 private static final Map<String,NamedCurve> nameMap = 51 new HashMap<String,NamedCurve>(); 52 private static final Map<Integer,NamedCurve> lengthMap = 53 new HashMap<Integer,NamedCurve>(); 54 55 private static Collection<? extends NamedCurve> specCollection; 56 57 public static final String SPLIT_PATTERN = ",|\\[|\\]"; 58 59 // Used by SunECEntries getSupportedCurves()60 public static Collection<? extends NamedCurve>getSupportedCurves() { 61 return specCollection; 62 } 63 64 // Return a NamedCurve for the specified OID/name or null if unknown. lookup(String name)65 public static NamedCurve lookup(String name) { 66 NamedCurve spec = oidMap.get(name); 67 if (spec != null) { 68 return spec; 69 } 70 71 return nameMap.get(name); 72 } 73 74 // Return EC parameters for the specified field size. If there are known 75 // NIST recommended parameters for the given length, they are returned. 76 // Otherwise, if there are multiple matches for the given size, an 77 // arbitrary one is returns. 78 // If no parameters are known, the method returns null. 79 // NOTE that this method returns both prime and binary curves. lookup(int length)80 static NamedCurve lookup(int length) { 81 return lengthMap.get(length); 82 } 83 84 // Convert the given ECParameterSpec object to a NamedCurve object. 85 // If params does not represent a known named curve, return null. lookup(ECParameterSpec params)86 public static NamedCurve lookup(ECParameterSpec params) { 87 if ((params instanceof NamedCurve) || (params == null)) { 88 return (NamedCurve)params; 89 } 90 91 // This is a hack to allow SunJSSE to work with 3rd party crypto 92 // providers for ECC and not just SunPKCS11. 93 // This can go away once we decide how to expose curve names in the 94 // public API. 95 // Note that it assumes that the 3rd party provider encodes named 96 // curves using the short form, not explicitly. If it did that, then 97 // the SunJSSE TLS ECC extensions are wrong, which could lead to 98 // interoperability problems. 99 int fieldSize = params.getCurve().getField().getFieldSize(); 100 for (NamedCurve namedCurve : specCollection) { 101 // ECParameterSpec does not define equals, so check all the 102 // components ourselves. 103 // Quick field size check first 104 if (namedCurve.getCurve().getField().getFieldSize() != fieldSize) { 105 continue; 106 } 107 if (ECUtil.equals(namedCurve, params)) { 108 // everything matches our named curve, return it 109 return namedCurve; 110 } 111 } 112 // no match found 113 return null; 114 } 115 bi(String s)116 private static BigInteger bi(String s) { 117 return new BigInteger(s, 16); 118 } 119 add(String name, String soid, int type, String sfield, String a, String b, String x, String y, String n, int h, Pattern nameSplitPattern)120 private static void add(String name, String soid, int type, String sfield, 121 String a, String b, String x, String y, String n, int h, 122 Pattern nameSplitPattern) { 123 BigInteger p = bi(sfield); 124 ECField field; 125 if ((type == P) || (type == PD)) { 126 field = new ECFieldFp(p); 127 } else if ((type == B) || (type == BD)) { 128 field = new ECFieldF2m(p.bitLength() - 1, p); 129 } else { 130 throw new RuntimeException("Invalid type: " + type); 131 } 132 133 EllipticCurve curve = new EllipticCurve(field, bi(a), bi(b)); 134 ECPoint g = new ECPoint(bi(x), bi(y)); 135 136 NamedCurve params = new NamedCurve(name, soid, curve, g, bi(n), h); 137 if (oidMap.put(soid, params) != null) { 138 throw new RuntimeException("Duplication oid: " + soid); 139 } 140 141 String[] commonNames = nameSplitPattern.split(name); 142 for (String commonName : commonNames) { 143 if (nameMap.put(commonName.trim(), params) != null) { 144 throw new RuntimeException("Duplication name: " + commonName); 145 } 146 } 147 148 int len = field.getFieldSize(); 149 if ((type == PD) || (type == BD) || (lengthMap.get(len) == null)) { 150 // add entry if none present for this field size or if 151 // the curve is marked as a default curve. 152 lengthMap.put(len, params); 153 } 154 } 155 156 private static class Holder { 157 private static final Pattern nameSplitPattern = Pattern.compile( 158 SPLIT_PATTERN); 159 } 160 161 // Return all the names the EC curve could be using. getNamesByOID(String oid)162 static String[] getNamesByOID(String oid) { 163 NamedCurve nc = oidMap.get(oid); 164 if (nc == null) { 165 return new String[0]; 166 } 167 String[] list = Holder.nameSplitPattern.split(nc.getName()); 168 int i = 0; 169 do { 170 list[i] = list[i].trim(); 171 } while (++i < list.length); 172 return list; 173 } 174 175 static { 176 Pattern nameSplitPattern = Holder.nameSplitPattern; 177 178 /* SEC2 prime curves */ 179 add("secp112r1", "1.3.132.0.6", P, 180 "DB7C2ABF62E35E668076BEAD208B", 181 "DB7C2ABF62E35E668076BEAD2088", 182 "659EF8BA043916EEDE8911702B22", 183 "09487239995A5EE76B55F9C2F098", 184 "A89CE5AF8724C0A23E0E0FF77500", 185 "DB7C2ABF62E35E7628DFAC6561C5", 186 1, nameSplitPattern); 187 188 add("secp112r2", "1.3.132.0.7", P, 189 "DB7C2ABF62E35E668076BEAD208B", 190 "6127C24C05F38A0AAAF65C0EF02C", 191 "51DEF1815DB5ED74FCC34C85D709", 192 "4BA30AB5E892B4E1649DD0928643", 193 "adcd46f5882e3747def36e956e97", 194 "36DF0AAFD8B8D7597CA10520D04B", 195 4, nameSplitPattern); 196 197 add("secp128r1", "1.3.132.0.28", P, 198 "FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF", 199 "FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFC", 200 "E87579C11079F43DD824993C2CEE5ED3", 201 "161FF7528B899B2D0C28607CA52C5B86", 202 "CF5AC8395BAFEB13C02DA292DDED7A83", 203 "FFFFFFFE0000000075A30D1B9038A115", 204 1, nameSplitPattern); 205 206 add("secp128r2", "1.3.132.0.29", P, 207 "FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF", 208 "D6031998D1B3BBFEBF59CC9BBFF9AEE1", 209 "5EEEFCA380D02919DC2C6558BB6D8A5D", 210 "7B6AA5D85E572983E6FB32A7CDEBC140", 211 "27B6916A894D3AEE7106FE805FC34B44", 212 "3FFFFFFF7FFFFFFFBE0024720613B5A3", 213 4, nameSplitPattern); 214 215 add("secp160k1", "1.3.132.0.9", P, 216 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73", 217 "0000000000000000000000000000000000000000", 218 "0000000000000000000000000000000000000007", 219 "3B4C382CE37AA192A4019E763036F4F5DD4D7EBB", 220 "938CF935318FDCED6BC28286531733C3F03C4FEE", 221 "0100000000000000000001B8FA16DFAB9ACA16B6B3", 222 1, nameSplitPattern); 223 224 add("secp160r1", "1.3.132.0.8", P, 225 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF", 226 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFC", 227 "1C97BEFC54BD7A8B65ACF89F81D4D4ADC565FA45", 228 "4A96B5688EF573284664698968C38BB913CBFC82", 229 "23A628553168947D59DCC912042351377AC5FB32", 230 "0100000000000000000001F4C8F927AED3CA752257", 231 1, nameSplitPattern); 232 233 add("secp160r2", "1.3.132.0.30", P, 234 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73", 235 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC70", 236 "B4E134D3FB59EB8BAB57274904664D5AF50388BA", 237 "52DCB034293A117E1F4FF11B30F7199D3144CE6D", 238 "FEAFFEF2E331F296E071FA0DF9982CFEA7D43F2E", 239 "0100000000000000000000351EE786A818F3A1A16B", 240 1, nameSplitPattern); 241 242 add("secp192k1", "1.3.132.0.31", P, 243 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFEE37", 244 "000000000000000000000000000000000000000000000000", 245 "000000000000000000000000000000000000000000000003", 246 "DB4FF10EC057E9AE26B07D0280B7F4341DA5D1B1EAE06C7D", 247 "9B2F2F6D9C5628A7844163D015BE86344082AA88D95E2F9D", 248 "FFFFFFFFFFFFFFFFFFFFFFFE26F2FC170F69466A74DEFD8D", 249 1, nameSplitPattern); 250 251 add("secp192r1 [NIST P-192, X9.62 prime192v1]", "1.2.840.10045.3.1.1", PD, 252 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF", 253 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC", 254 "64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1", 255 "188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012", 256 "07192B95FFC8DA78631011ED6B24CDD573F977A11E794811", 257 "FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831", 258 1, nameSplitPattern); 259 260 add("secp224k1", "1.3.132.0.32", P, 261 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFE56D", 262 "00000000000000000000000000000000000000000000000000000000", 263 "00000000000000000000000000000000000000000000000000000005", 264 "A1455B334DF099DF30FC28A169A467E9E47075A90F7E650EB6B7A45C", 265 "7E089FED7FBA344282CAFBD6F7E319F7C0B0BD59E2CA4BDB556D61A5", 266 "010000000000000000000000000001DCE8D2EC6184CAF0A971769FB1F7", 267 1, nameSplitPattern); 268 269 add("secp224r1 [NIST P-224]", "1.3.132.0.33", PD, 270 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001", 271 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE", 272 "B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4", 273 "B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21", 274 "BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34", 275 "FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D", 276 1, nameSplitPattern); 277 278 add("secp256k1", "1.3.132.0.10", P, 279 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F", 280 "0000000000000000000000000000000000000000000000000000000000000000", 281 "0000000000000000000000000000000000000000000000000000000000000007", 282 "79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798", 283 "483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8", 284 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141", 285 1, nameSplitPattern); 286 287 add("secp256r1 [NIST P-256, X9.62 prime256v1]", "1.2.840.10045.3.1.7", PD, 288 "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF", 289 "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC", 290 "5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B", 291 "6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296", 292 "4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5", 293 "FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551", 294 1, nameSplitPattern); 295 296 add("secp384r1 [NIST P-384]", "1.3.132.0.34", PD, 297 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFF", 298 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFC", 299 "B3312FA7E23EE7E4988E056BE3F82D19181D9C6EFE8141120314088F5013875AC656398D8A2ED19D2A85C8EDD3EC2AEF", 300 "AA87CA22BE8B05378EB1C71EF320AD746E1D3B628BA79B9859F741E082542A385502F25DBF55296C3A545E3872760AB7", 301 "3617DE4A96262C6F5D9E98BF9292DC29F8F41DBD289A147CE9DA3113B5F0B8C00A60B1CE1D7E819D7A431D7C90EA0E5F", 302 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973", 303 1, nameSplitPattern); 304 305 add("secp521r1 [NIST P-521]", "1.3.132.0.35", PD, 306 "01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 307 "01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC", 308 "0051953EB9618E1C9A1F929A21A0B68540EEA2DA725B99B315F3B8B489918EF109E156193951EC7E937B1652C0BD3BB1BF073573DF883D2C34F1EF451FD46B503F00", 309 "00C6858E06B70404E9CD9E3ECB662395B4429C648139053FB521F828AF606B4D3DBAA14B5E77EFE75928FE1DC127A2FFA8DE3348B3C1856A429BF97E7E31C2E5BD66", 310 "011839296A789A3BC0045C8A5FB42C7D1BD998F54449579B446817AFBD17273E662C97EE72995EF42640C550B9013FAD0761353C7086A272C24088BE94769FD16650", 311 "01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409", 312 1, nameSplitPattern); 313 314 /* ANSI X9.62 prime curves */ 315 add("X9.62 prime192v2", "1.2.840.10045.3.1.2", P, 316 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF", 317 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC", 318 "CC22D6DFB95C6B25E49C0D6364A4E5980C393AA21668D953", 319 "EEA2BAE7E1497842F2DE7769CFE9C989C072AD696F48034A", 320 "6574D11D69B6EC7A672BB82A083DF2F2B0847DE970B2DE15", 321 "FFFFFFFFFFFFFFFFFFFFFFFE5FB1A724DC80418648D8DD31", 322 1, nameSplitPattern); 323 324 add("X9.62 prime192v3", "1.2.840.10045.3.1.3", P, 325 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF", 326 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC", 327 "22123DC2395A05CAA7423DAECCC94760A7D462256BD56916", 328 "7D29778100C65A1DA1783716588DCE2B8B4AEE8E228F1896", 329 "38A90F22637337334B49DCB66A6DC8F9978ACA7648A943B0", 330 "FFFFFFFFFFFFFFFFFFFFFFFF7A62D031C83F4294F640EC13", 331 1, nameSplitPattern); 332 333 add("X9.62 prime239v1", "1.2.840.10045.3.1.4", P, 334 "7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFF", 335 "7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFC", 336 "6B016C3BDCF18941D0D654921475CA71A9DB2FB27D1D37796185C2942C0A", 337 "0FFA963CDCA8816CCC33B8642BEDF905C3D358573D3F27FBBD3B3CB9AAAF", 338 "7DEBE8E4E90A5DAE6E4054CA530BA04654B36818CE226B39FCCB7B02F1AE", 339 "7FFFFFFFFFFFFFFFFFFFFFFF7FFFFF9E5E9A9F5D9071FBD1522688909D0B", 340 1, nameSplitPattern); 341 342 add("X9.62 prime239v2", "1.2.840.10045.3.1.5", P, 343 "7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFF", 344 "7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFC", 345 "617FAB6832576CBBFED50D99F0249C3FEE58B94BA0038C7AE84C8C832F2C", 346 "38AF09D98727705120C921BB5E9E26296A3CDCF2F35757A0EAFD87B830E7", 347 "5B0125E4DBEA0EC7206DA0FC01D9B081329FB555DE6EF460237DFF8BE4BA", 348 "7FFFFFFFFFFFFFFFFFFFFFFF800000CFA7E8594377D414C03821BC582063", 349 1, nameSplitPattern); 350 351 add("X9.62 prime239v3", "1.2.840.10045.3.1.6", P, 352 "7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFF", 353 "7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFC", 354 "255705FA2A306654B1F4CB03D6A750A30C250102D4988717D9BA15AB6D3E", 355 "6768AE8E18BB92CFCF005C949AA2C6D94853D0E660BBF854B1C9505FE95A", 356 "1607E6898F390C06BC1D552BAD226F3B6FCFE48B6E818499AF18E3ED6CF3", 357 "7FFFFFFFFFFFFFFFFFFFFFFF7FFFFF975DEB41B3A6057C3C432146526551", 358 1, nameSplitPattern); 359 360 /* SEC2 binary curves */ 361 add("sect113r1", "1.3.132.0.4", B, 362 "020000000000000000000000000201", 363 "003088250CA6E7C7FE649CE85820F7", 364 "00E8BEE4D3E2260744188BE0E9C723", 365 "009D73616F35F4AB1407D73562C10F", 366 "00A52830277958EE84D1315ED31886", 367 "0100000000000000D9CCEC8A39E56F", 368 2, nameSplitPattern); 369 370 add("sect113r2", "1.3.132.0.5", B, 371 "020000000000000000000000000201", 372 "00689918DBEC7E5A0DD6DFC0AA55C7", 373 "0095E9A9EC9B297BD4BF36E059184F", 374 "01A57A6A7B26CA5EF52FCDB8164797", 375 "00B3ADC94ED1FE674C06E695BABA1D", 376 "010000000000000108789B2496AF93", 377 2, nameSplitPattern); 378 379 add("sect131r1", "1.3.132.0.22", B, 380 "080000000000000000000000000000010D", 381 "07A11B09A76B562144418FF3FF8C2570B8", 382 "0217C05610884B63B9C6C7291678F9D341", 383 "0081BAF91FDF9833C40F9C181343638399", 384 "078C6E7EA38C001F73C8134B1B4EF9E150", 385 "0400000000000000023123953A9464B54D", 386 2, nameSplitPattern); 387 388 add("sect131r2", "1.3.132.0.23", B, 389 "080000000000000000000000000000010D", 390 "03E5A88919D7CAFCBF415F07C2176573B2", 391 "04B8266A46C55657AC734CE38F018F2192", 392 "0356DCD8F2F95031AD652D23951BB366A8", 393 "0648F06D867940A5366D9E265DE9EB240F", 394 "0400000000000000016954A233049BA98F", 395 2, nameSplitPattern); 396 397 add("sect163k1 [NIST K-163]", "1.3.132.0.1", BD, 398 "0800000000000000000000000000000000000000C9", 399 "000000000000000000000000000000000000000001", 400 "000000000000000000000000000000000000000001", 401 "02FE13C0537BBC11ACAA07D793DE4E6D5E5C94EEE8", 402 "0289070FB05D38FF58321F2E800536D538CCDAA3D9", 403 "04000000000000000000020108A2E0CC0D99F8A5EF", 404 2, nameSplitPattern); 405 406 add("sect163r1", "1.3.132.0.2", B, 407 "0800000000000000000000000000000000000000C9", 408 "07B6882CAAEFA84F9554FF8428BD88E246D2782AE2", 409 "0713612DCDDCB40AAB946BDA29CA91F73AF958AFD9", 410 "0369979697AB43897789566789567F787A7876A654", 411 "00435EDB42EFAFB2989D51FEFCE3C80988F41FF883", 412 "03FFFFFFFFFFFFFFFFFFFF48AAB689C29CA710279B", 413 2, nameSplitPattern); 414 415 add("sect163r2 [NIST B-163]", "1.3.132.0.15", BD, 416 "0800000000000000000000000000000000000000C9", 417 "000000000000000000000000000000000000000001", 418 "020A601907B8C953CA1481EB10512F78744A3205FD", 419 "03F0EBA16286A2D57EA0991168D4994637E8343E36", 420 "00D51FBC6C71A0094FA2CDD545B11C5C0C797324F1", 421 "040000000000000000000292FE77E70C12A4234C33", 422 2, nameSplitPattern); 423 424 add("sect193r1", "1.3.132.0.24", B, 425 "02000000000000000000000000000000000000000000008001", 426 "0017858FEB7A98975169E171F77B4087DE098AC8A911DF7B01", 427 "00FDFB49BFE6C3A89FACADAA7A1E5BBC7CC1C2E5D831478814", 428 "01F481BC5F0FF84A74AD6CDF6FDEF4BF6179625372D8C0C5E1", 429 "0025E399F2903712CCF3EA9E3A1AD17FB0B3201B6AF7CE1B05", 430 "01000000000000000000000000C7F34A778F443ACC920EBA49", 431 2, nameSplitPattern); 432 433 add("sect193r2", "1.3.132.0.25", B, 434 "02000000000000000000000000000000000000000000008001", 435 "0163F35A5137C2CE3EA6ED8667190B0BC43ECD69977702709B", 436 "00C9BB9E8927D4D64C377E2AB2856A5B16E3EFB7F61D4316AE", 437 "00D9B67D192E0367C803F39E1A7E82CA14A651350AAE617E8F", 438 "01CE94335607C304AC29E7DEFBD9CA01F596F927224CDECF6C", 439 "010000000000000000000000015AAB561B005413CCD4EE99D5", 440 2, nameSplitPattern); 441 442 add("sect233k1 [NIST K-233]", "1.3.132.0.26", BD, 443 "020000000000000000000000000000000000000004000000000000000001", 444 "000000000000000000000000000000000000000000000000000000000000", 445 "000000000000000000000000000000000000000000000000000000000001", 446 "017232BA853A7E731AF129F22FF4149563A419C26BF50A4C9D6EEFAD6126", 447 "01DB537DECE819B7F70F555A67C427A8CD9BF18AEB9B56E0C11056FAE6A3", 448 "008000000000000000000000000000069D5BB915BCD46EFB1AD5F173ABDF", 449 4, nameSplitPattern); 450 451 add("sect233r1 [NIST B-233]", "1.3.132.0.27", B, 452 "020000000000000000000000000000000000000004000000000000000001", 453 "000000000000000000000000000000000000000000000000000000000001", 454 "0066647EDE6C332C7F8C0923BB58213B333B20E9CE4281FE115F7D8F90AD", 455 "00FAC9DFCBAC8313BB2139F1BB755FEF65BC391F8B36F8F8EB7371FD558B", 456 "01006A08A41903350678E58528BEBF8A0BEFF867A7CA36716F7E01F81052", 457 "01000000000000000000000000000013E974E72F8A6922031D2603CFE0D7", 458 2, nameSplitPattern); 459 460 add("sect239k1", "1.3.132.0.3", B, 461 "800000000000000000004000000000000000000000000000000000000001", 462 "000000000000000000000000000000000000000000000000000000000000", 463 "000000000000000000000000000000000000000000000000000000000001", 464 "29A0B6A887A983E9730988A68727A8B2D126C44CC2CC7B2A6555193035DC", 465 "76310804F12E549BDB011C103089E73510ACB275FC312A5DC6B76553F0CA", 466 "2000000000000000000000000000005A79FEC67CB6E91F1C1DA800E478A5", 467 4, nameSplitPattern); 468 469 add("sect283k1 [NIST K-283]", "1.3.132.0.16", BD, 470 "0800000000000000000000000000000000000000000000000000000000000000000010A1", 471 "000000000000000000000000000000000000000000000000000000000000000000000000", 472 "000000000000000000000000000000000000000000000000000000000000000000000001", 473 "0503213F78CA44883F1A3B8162F188E553CD265F23C1567A16876913B0C2AC2458492836", 474 "01CCDA380F1C9E318D90F95D07E5426FE87E45C0E8184698E45962364E34116177DD2259", 475 "01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9AE2ED07577265DFF7F94451E061E163C61", 476 4, nameSplitPattern); 477 478 add("sect283r1 [NIST B-283]", "1.3.132.0.17", B, 479 "0800000000000000000000000000000000000000000000000000000000000000000010A1", 480 "000000000000000000000000000000000000000000000000000000000000000000000001", 481 "027B680AC8B8596DA5A4AF8A19A0303FCA97FD7645309FA2A581485AF6263E313B79A2F5", 482 "05F939258DB7DD90E1934F8C70B0DFEC2EED25B8557EAC9C80E2E198F8CDBECD86B12053", 483 "03676854FE24141CB98FE6D4B20D02B4516FF702350EDDB0826779C813F0DF45BE8112F4", 484 "03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF90399660FC938A90165B042A7CEFADB307", 485 2, nameSplitPattern); 486 487 add("sect409k1 [NIST K-409]", "1.3.132.0.36", BD, 488 "02000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000001", 489 "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", 490 "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001", 491 "0060F05F658F49C1AD3AB1890F7184210EFD0987E307C84C27ACCFB8F9F67CC2C460189EB5AAAA62EE222EB1B35540CFE9023746", 492 "01E369050B7C4E42ACBA1DACBF04299C3460782F918EA427E6325165E9EA10E3DA5F6C42E9C55215AA9CA27A5863EC48D8E0286B", 493 "007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5F83B2D4EA20400EC4557D5ED3E3E7CA5B4B5C83B8E01E5FCF", 494 4, nameSplitPattern); 495 496 add("sect409r1 [NIST B-409]", "1.3.132.0.37", B, 497 "02000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000001", 498 "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001", 499 "0021A5C2C8EE9FEB5C4B9A753B7B476B7FD6422EF1F3DD674761FA99D6AC27C8A9A197B272822F6CD57A55AA4F50AE317B13545F", 500 "015D4860D088DDB3496B0C6064756260441CDE4AF1771D4DB01FFE5B34E59703DC255A868A1180515603AEAB60794E54BB7996A7", 501 "0061B1CFAB6BE5F32BBFA78324ED106A7636B9C5A7BD198D0158AA4F5488D08F38514F1FDF4B4F40D2181B3681C364BA0273C706", 502 "010000000000000000000000000000000000000000000000000001E2AAD6A612F33307BE5FA47C3C9E052F838164CD37D9A21173", 503 2, nameSplitPattern); 504 505 add("sect571k1 [NIST K-571]", "1.3.132.0.38", BD, 506 "080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000425", 507 "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", 508 "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001", 509 "026EB7A859923FBC82189631F8103FE4AC9CA2970012D5D46024804801841CA44370958493B205E647DA304DB4CEB08CBBD1BA39494776FB988B47174DCA88C7E2945283A01C8972", 510 "0349DC807F4FBF374F4AEADE3BCA95314DD58CEC9F307A54FFC61EFC006D8A2C9D4979C0AC44AEA74FBEBBB9F772AEDCB620B01A7BA7AF1B320430C8591984F601CD4C143EF1C7A3", 511 "020000000000000000000000000000000000000000000000000000000000000000000000131850E1F19A63E4B391A8DB917F4138B630D84BE5D639381E91DEB45CFE778F637C1001", 512 4, nameSplitPattern); 513 514 add("sect571r1 [NIST B-571]", "1.3.132.0.39", B, 515 "080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000425", 516 "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001", 517 "02F40E7E2221F295DE297117B7F3D62F5C6A97FFCB8CEFF1CD6BA8CE4A9A18AD84FFABBD8EFA59332BE7AD6756A66E294AFD185A78FF12AA520E4DE739BACA0C7FFEFF7F2955727A", 518 "0303001D34B856296C16C0D40D3CD7750A93D1D2955FA80AA5F40FC8DB7B2ABDBDE53950F4C0D293CDD711A35B67FB1499AE60038614F1394ABFA3B4C850D927E1E7769C8EEC2D19", 519 "037BF27342DA639B6DCCFFFEB73D69D78C6C27A6009CBBCA1980F8533921E8A684423E43BAB08A576291AF8F461BB2A8B3531D2F0485C19B16E2F1516E23DD3C1A4827AF1B8AC15B", 520 "03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE661CE18FF55987308059B186823851EC7DD9CA1161DE93D5174D66E8382E9BB2FE84E47", 521 2, nameSplitPattern); 522 523 /* ANSI X9.62 binary curves */ 524 add("X9.62 c2tnb191v1", "1.2.840.10045.3.0.5", B, 525 "800000000000000000000000000000000000000000000201", 526 "2866537B676752636A68F56554E12640276B649EF7526267", 527 "2E45EF571F00786F67B0081B9495A3D95462F5DE0AA185EC", 528 "36B3DAF8A23206F9C4F299D7B21A9C369137F2C84AE1AA0D", 529 "765BE73433B3F95E332932E70EA245CA2418EA0EF98018FB", 530 "40000000000000000000000004A20E90C39067C893BBB9A5", 531 2, nameSplitPattern); 532 533 add("X9.62 c2tnb191v2", "1.2.840.10045.3.0.6", B, 534 "800000000000000000000000000000000000000000000201", 535 "401028774D7777C7B7666D1366EA432071274F89FF01E718", 536 "0620048D28BCBD03B6249C99182B7C8CD19700C362C46A01", 537 "3809B2B7CC1B28CC5A87926AAD83FD28789E81E2C9E3BF10", 538 "17434386626D14F3DBF01760D9213A3E1CF37AEC437D668A", 539 "20000000000000000000000050508CB89F652824E06B8173", 540 4, nameSplitPattern); 541 542 add("X9.62 c2tnb191v3", "1.2.840.10045.3.0.7", B, 543 "800000000000000000000000000000000000000000000201", 544 "6C01074756099122221056911C77D77E77A777E7E7E77FCB", 545 "71FE1AF926CF847989EFEF8DB459F66394D90F32AD3F15E8", 546 "375D4CE24FDE434489DE8746E71786015009E66E38A926DD", 547 "545A39176196575D985999366E6AD34CE0A77CD7127B06BE", 548 "155555555555555555555555610C0B196812BFB6288A3EA3", 549 6, nameSplitPattern); 550 551 add("X9.62 c2tnb239v1", "1.2.840.10045.3.0.11", B, 552 "800000000000000000000000000000000000000000000000001000000001", 553 "32010857077C5431123A46B808906756F543423E8D27877578125778AC76", 554 "790408F2EEDAF392B012EDEFB3392F30F4327C0CA3F31FC383C422AA8C16", 555 "57927098FA932E7C0A96D3FD5B706EF7E5F5C156E16B7E7C86038552E91D", 556 "61D8EE5077C33FECF6F1A16B268DE469C3C7744EA9A971649FC7A9616305", 557 "2000000000000000000000000000000F4D42FFE1492A4993F1CAD666E447", 558 4, nameSplitPattern); 559 560 add("X9.62 c2tnb239v2", "1.2.840.10045.3.0.12", B, 561 "800000000000000000000000000000000000000000000000001000000001", 562 "4230017757A767FAE42398569B746325D45313AF0766266479B75654E65F", 563 "5037EA654196CFF0CD82B2C14A2FCF2E3FF8775285B545722F03EACDB74B", 564 "28F9D04E900069C8DC47A08534FE76D2B900B7D7EF31F5709F200C4CA205", 565 "5667334C45AFF3B5A03BAD9DD75E2C71A99362567D5453F7FA6E227EC833", 566 "1555555555555555555555555555553C6F2885259C31E3FCDF154624522D", 567 6, nameSplitPattern); 568 569 add("X9.62 c2tnb239v3", "1.2.840.10045.3.0.13", B, 570 "800000000000000000000000000000000000000000000000001000000001", 571 "01238774666A67766D6676F778E676B66999176666E687666D8766C66A9F", 572 "6A941977BA9F6A435199ACFC51067ED587F519C5ECB541B8E44111DE1D40", 573 "70F6E9D04D289C4E89913CE3530BFDE903977D42B146D539BF1BDE4E9C92", 574 "2E5A0EAF6E5E1305B9004DCE5C0ED7FE59A35608F33837C816D80B79F461", 575 "0CCCCCCCCCCCCCCCCCCCCCCCCCCCCCAC4912D2D9DF903EF9888B8A0E4CFF", 576 0xA, nameSplitPattern); 577 578 add("X9.62 c2tnb359v1", "1.2.840.10045.3.0.18", B, 579 "800000000000000000000000000000000000000000000000000000000000000000000000100000000000000001", 580 "5667676A654B20754F356EA92017D946567C46675556F19556A04616B567D223A5E05656FB549016A96656A557", 581 "2472E2D0197C49363F1FE7F5B6DB075D52B6947D135D8CA445805D39BC345626089687742B6329E70680231988", 582 "3C258EF3047767E7EDE0F1FDAA79DAEE3841366A132E163ACED4ED2401DF9C6BDCDE98E8E707C07A2239B1B097", 583 "53D7E08529547048121E9C95F3791DD804963948F34FAE7BF44EA82365DC7868FE57E4AE2DE211305A407104BD", 584 "01AF286BCA1AF286BCA1AF286BCA1AF286BCA1AF286BC9FB8F6B85C556892C20A7EB964FE7719E74F490758D3B", 585 0x4C, nameSplitPattern); 586 587 add("X9.62 c2tnb431r1", "1.2.840.10045.3.0.20", B, 588 "800000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000001", 589 "1A827EF00DD6FC0E234CAF046C6A5D8A85395B236CC4AD2CF32A0CADBDC9DDF620B0EB9906D0957F6C6FEACD615468DF104DE296CD8F", 590 "10D9B4A3D9047D8B154359ABFB1B7F5485B04CEB868237DDC9DEDA982A679A5A919B626D4E50A8DD731B107A9962381FB5D807BF2618", 591 "120FC05D3C67A99DE161D2F4092622FECA701BE4F50F4758714E8A87BBF2A658EF8C21E7C5EFE965361F6C2999C0C247B0DBD70CE6B7", 592 "20D0AF8903A96F8D5FA2C255745D3C451B302C9346D9B7E485E7BCE41F6B591F3E8F6ADDCBB0BC4C2F947A7DE1A89B625D6A598B3760", 593 "0340340340340340340340340340340340340340340340340340340323C313FAB50589703B5EC68D3587FEC60D161CC149C1AD4A91", 594 0x2760, nameSplitPattern); 595 596 /* ANSI X9.62 binary curves from the 1998 standard but forbidden 597 * in the 2005 version of the standard. 598 * We don't register them but leave them here for the time being in 599 * case we need to support them after all. 600 */ 601 /* 602 add("X9.62 c2pnb163v1", "1.2.840.10045.3.0.1", B, 603 "080000000000000000000000000000000000000107", 604 "072546B5435234A422E0789675F432C89435DE5242", 605 "00C9517D06D5240D3CFF38C74B20B6CD4D6F9DD4D9", 606 "07AF69989546103D79329FCC3D74880F33BBE803CB", 607 "01EC23211B5966ADEA1D3F87F7EA5848AEF0B7CA9F", 608 "0400000000000000000001E60FC8821CC74DAEAFC1", 609 2, nameSplitPattern); 610 611 add("X9.62 c2pnb163v2", "1.2.840.10045.3.0.2", B, 612 "080000000000000000000000000000000000000107", 613 "0108B39E77C4B108BED981ED0E890E117C511CF072", 614 "0667ACEB38AF4E488C407433FFAE4F1C811638DF20", 615 "0024266E4EB5106D0A964D92C4860E2671DB9B6CC5", 616 "079F684DDF6684C5CD258B3890021B2386DFD19FC5", 617 "03FFFFFFFFFFFFFFFFFFFDF64DE1151ADBB78F10A7", 618 2, nameSplitPattern); 619 620 add("X9.62 c2pnb163v3", "1.2.840.10045.3.0.3", B, 621 "080000000000000000000000000000000000000107", 622 "07A526C63D3E25A256A007699F5447E32AE456B50E", 623 "03F7061798EB99E238FD6F1BF95B48FEEB4854252B", 624 "02F9F87B7C574D0BDECF8A22E6524775F98CDEBDCB", 625 "05B935590C155E17EA48EB3FF3718B893DF59A05D0", 626 "03FFFFFFFFFFFFFFFFFFFE1AEE140F110AFF961309", 627 2, nameSplitPattern); 628 629 add("X9.62 c2pnb176w1", "1.2.840.10045.3.0.4", B, 630 "0100000000000000000000000000000000080000000007", 631 "E4E6DB2995065C407D9D39B8D0967B96704BA8E9C90B", 632 "5DDA470ABE6414DE8EC133AE28E9BBD7FCEC0AE0FFF2", 633 "8D16C2866798B600F9F08BB4A8E860F3298CE04A5798", 634 "6FA4539C2DADDDD6BAB5167D61B436E1D92BB16A562C", 635 "00010092537397ECA4F6145799D62B0A19CE06FE26AD", 636 0xFF6E, nameSplitPattern); 637 638 add("X9.62 c2pnb208w1", "1.2.840.10045.3.0.10", B, 639 "010000000000000000000000000000000800000000000000000007", 640 "0000000000000000000000000000000000000000000000000000", 641 "C8619ED45A62E6212E1160349E2BFA844439FAFC2A3FD1638F9E", 642 "89FDFBE4ABE193DF9559ECF07AC0CE78554E2784EB8C1ED1A57A", 643 "0F55B51A06E78E9AC38A035FF520D8B01781BEB1A6BB08617DE3", 644 "000101BAF95C9723C57B6C21DA2EFF2D5ED588BDD5717E212F9D", 645 0xFE48, nameSplitPattern); 646 647 add("X9.62 c2pnb272w1", "1.2.840.10045.3.0.16", B, 648 "010000000000000000000000000000000000000000000000000000010000000000000B", 649 "91A091F03B5FBA4AB2CCF49C4EDD220FB028712D42BE752B2C40094DBACDB586FB20", 650 "7167EFC92BB2E3CE7C8AAAFF34E12A9C557003D7C73A6FAF003F99F6CC8482E540F7", 651 "6108BABB2CEEBCF787058A056CBE0CFE622D7723A289E08A07AE13EF0D10D171DD8D", 652 "10C7695716851EEF6BA7F6872E6142FBD241B830FF5EFCACECCAB05E02005DDE9D23", 653 "000100FAF51354E0E39E4892DF6E319C72C8161603FA45AA7B998A167B8F1E629521", 654 0xFF06, nameSplitPattern); 655 656 add("X9.62 c2pnb304w1", "1.2.840.10045.3.0.17", B, 657 "010000000000000000000000000000000000000000000000000000000000000000000000000807", 658 "FD0D693149A118F651E6DCE6802085377E5F882D1B510B44160074C1288078365A0396C8E681", 659 "BDDB97E555A50A908E43B01C798EA5DAA6788F1EA2794EFCF57166B8C14039601E55827340BE", 660 "197B07845E9BE2D96ADB0F5F3C7F2CFFBD7A3EB8B6FEC35C7FD67F26DDF6285A644F740A2614", 661 "E19FBEB76E0DA171517ECF401B50289BF014103288527A9B416A105E80260B549FDC1B92C03B", 662 "000101D556572AABAC800101D556572AABAC8001022D5C91DD173F8FB561DA6899164443051D", 663 0xFE2E, nameSplitPattern); 664 665 add("X9.62 c2pnb368w1", "1.2.840.10045.3.0.19", B, 666 "0100000000000000000000000000000000000000000000000000000000000000000000002000000000000000000007", 667 "E0D2EE25095206F5E2A4F9ED229F1F256E79A0E2B455970D8D0D865BD94778C576D62F0AB7519CCD2A1A906AE30D", 668 "FC1217D4320A90452C760A58EDCD30C8DD069B3C34453837A34ED50CB54917E1C2112D84D164F444F8F74786046A", 669 "1085E2755381DCCCE3C1557AFA10C2F0C0C2825646C5B34A394CBCFA8BC16B22E7E789E927BE216F02E1FB136A5F", 670 "7B3EB1BDDCBA62D5D8B2059B525797FC73822C59059C623A45FF3843CEE8F87CD1855ADAA81E2A0750B80FDA2310", 671 "00010090512DA9AF72B08349D98A5DD4C7B0532ECA51CE03E2D10F3B7AC579BD87E909AE40A6F131E9CFCE5BD967", 672 0xFF70, nameSplitPattern); 673 */ 674 675 /* 676 * Brainpool curves (RFC 5639) 677 * (Twisted curves are not included) 678 */ 679 680 add("brainpoolP160r1", "1.3.36.3.3.2.8.1.1.1", P, 681 "E95E4A5F737059DC60DFC7AD95B3D8139515620F", 682 "340E7BE2A280EB74E2BE61BADA745D97E8F7C300", 683 "1E589A8595423412134FAA2DBDEC95C8D8675E58", 684 "BED5AF16EA3F6A4F62938C4631EB5AF7BDBCDBC3", 685 "1667CB477A1A8EC338F94741669C976316DA6321", 686 "E95E4A5F737059DC60DF5991D45029409E60FC09", 687 1, nameSplitPattern); 688 689 add("brainpoolP192r1", "1.3.36.3.3.2.8.1.1.3", P, 690 "C302F41D932A36CDA7A3463093D18DB78FCE476DE1A86297", 691 "6A91174076B1E0E19C39C031FE8685C1CAE040E5C69A28EF", 692 "469A28EF7C28CCA3DC721D044F4496BCCA7EF4146FBF25C9", 693 "C0A0647EAAB6A48753B033C56CB0F0900A2F5C4853375FD6", 694 "14B690866ABD5BB88B5F4828C1490002E6773FA2FA299B8F", 695 "C302F41D932A36CDA7A3462F9E9E916B5BE8F1029AC4ACC1", 696 1, nameSplitPattern); 697 698 add("brainpoolP224r1", "1.3.36.3.3.2.8.1.1.5", P, 699 "D7C134AA264366862A18302575D1D787B09F075797DA89F57EC8C0FF", 700 "68A5E62CA9CE6C1C299803A6C1530B514E182AD8B0042A59CAD29F43", 701 "2580F63CCFE44138870713B1A92369E33E2135D266DBB372386C400B", 702 "0D9029AD2C7E5CF4340823B2A87DC68C9E4CE3174C1E6EFDEE12C07D", 703 "58AA56F772C0726F24C6B89E4ECDAC24354B9E99CAA3F6D3761402CD", 704 "D7C134AA264366862A18302575D0FB98D116BC4B6DDEBCA3A5A7939F", 705 1, nameSplitPattern); 706 707 add("brainpoolP256r1", "1.3.36.3.3.2.8.1.1.7", P, 708 "A9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E5377", 709 "7D5A0975FC2C3057EEF67530417AFFE7FB8055C126DC5C6CE94A4B44F330B5D9", 710 "26DC5C6CE94A4B44F330B5D9BBD77CBF958416295CF7E1CE6BCCDC18FF8C07B6", 711 "8BD2AEB9CB7E57CB2C4B482FFC81B7AFB9DE27E1E3BD23C23A4453BD9ACE3262", 712 "547EF835C3DAC4FD97F8461A14611DC9C27745132DED8E545C1D54C72F046997", 713 "A9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A7", 714 1, nameSplitPattern); 715 716 add("brainpoolP320r1", "1.3.36.3.3.2.8.1.1.9", P, 717 "D35E472036BC4FB7E13C785ED201E065F98FCFA6F6F40DEF4F92B9EC7893EC28FCD412B1F1B32E27", 718 "3EE30B568FBAB0F883CCEBD46D3F3BB8A2A73513F5EB79DA66190EB085FFA9F492F375A97D860EB4", 719 "520883949DFDBC42D3AD198640688A6FE13F41349554B49ACC31DCCD884539816F5EB4AC8FB1F1A6", 720 "43BD7E9AFB53D8B85289BCC48EE5BFE6F20137D10A087EB6E7871E2A10A599C710AF8D0D39E20611", 721 "14FDD05545EC1CC8AB4093247F77275E0743FFED117182EAA9C77877AAAC6AC7D35245D1692E8EE1", 722 "D35E472036BC4FB7E13C785ED201E065F98FCFA5B68F12A32D482EC7EE8658E98691555B44C59311", 723 1, nameSplitPattern); 724 725 add("brainpoolP384r1", "1.3.36.3.3.2.8.1.1.11", P, 726 "8CB91E82A3386D280F5D6F7E50E641DF152F7109ED5456B412B1DA197FB71123ACD3A729901D1A71874700133107EC53", 727 "7BC382C63D8C150C3C72080ACE05AFA0C2BEA28E4FB22787139165EFBA91F90F8AA5814A503AD4EB04A8C7DD22CE2826", 728 "04A8C7DD22CE28268B39B55416F0447C2FB77DE107DCD2A62E880EA53EEB62D57CB4390295DBC9943AB78696FA504C11", 729 "1D1C64F068CF45FFA2A63A81B7C13F6B8847A3E77EF14FE3DB7FCAFE0CBD10E8E826E03436D646AAEF87B2E247D4AF1E", 730 "8ABE1D7520F9C2A45CB1EB8E95CFD55262B70B29FEEC5864E19C054FF99129280E4646217791811142820341263C5315", 731 "8CB91E82A3386D280F5D6F7E50E641DF152F7109ED5456B31F166E6CAC0425A7CF3AB6AF6B7FC3103B883202E9046565", 732 1, nameSplitPattern); 733 734 add("brainpoolP512r1", "1.3.36.3.3.2.8.1.1.13", P, 735 "AADD9DB8DBE9C48B3FD4E6AE33C9FC07CB308DB3B3C9D20ED6639CCA703308717D4D9B009BC66842AECDA12AE6A380E62881FF2F2D82C68528AA6056583A48F3", 736 "7830A3318B603B89E2327145AC234CC594CBDD8D3DF91610A83441CAEA9863BC2DED5D5AA8253AA10A2EF1C98B9AC8B57F1117A72BF2C7B9E7C1AC4D77FC94CA", 737 "3DF91610A83441CAEA9863BC2DED5D5AA8253AA10A2EF1C98B9AC8B57F1117A72BF2C7B9E7C1AC4D77FC94CADC083E67984050B75EBAE5DD2809BD638016F723", 738 "81AEE4BDD82ED9645A21322E9C4C6A9385ED9F70B5D916C1B43B62EEF4D0098EFF3B1F78E2D0D48D50D1687B93B97D5F7C6D5047406A5E688B352209BCB9F822", 739 "7DDE385D566332ECC0EABFA9CF7822FDF209F70024A57B1AA000C55B881F8111B2DCDE494A5F485E5BCA4BD88A2763AED1CA2B2FA8F0540678CD1E0F3AD80892", 740 "AADD9DB8DBE9C48B3FD4E6AE33C9FC07CB308DB3B3C9D20ED6639CCA70330870553E5C414CA92619418661197FAC10471DB1D381085DDADDB58796829CA90069", 741 1, nameSplitPattern); 742 743 specCollection = Collections.unmodifiableCollection(oidMap.values()); 744 } 745 } 746