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