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