Codebase list libcryptx-perl / b6f2902
new ecc tests + ECC.pm cosmetics Karel Miko 9 years ago
5 changed file(s) with 94 addition(s) and 50 deletion(s). Raw diff Collapse all Expand all
1515
1616 our %curve = (
1717 ### http://www.ecc-brainpool.org/download/Domain-parameters.pdf (v1.0 19.10.2005)
18 brainpoolP160r1 => {
18 brainpoolp160r1 => {
19 oid => '1.3.36.3.3.2.8.1.1.1',
1920 prime => "E95E4A5F737059DC60DFC7AD95B3D8139515620F",
2021 A => "340E7BE2A280EB74E2BE61BADA745D97E8F7C300",
2122 B => "1E589A8595423412134FAA2DBDEC95C8D8675E58",
2425 order => "E95E4A5F737059DC60DF5991D45029409E60FC09",
2526 cofactor => 1,
2627 },
27 brainpoolP192r1 => {
28 brainpoolp192r1 => {
29 oid => '1.3.36.3.3.2.8.1.1.3',
2830 prime => "C302F41D932A36CDA7A3463093D18DB78FCE476DE1A86297",
2931 A => "6A91174076B1E0E19C39C031FE8685C1CAE040E5C69A28EF",
3032 B => "469A28EF7C28CCA3DC721D044F4496BCCA7EF4146FBF25C9",
3335 order => "C302F41D932A36CDA7A3462F9E9E916B5BE8F1029AC4ACC1",
3436 cofactor => 1,
3537 },
36 brainpoolP224r1 => {
38 brainpoolp224r1 => {
39 oid => '1.3.36.3.3.2.8.1.1.5',
3740 prime => "D7C134AA264366862A18302575D1D787B09F075797DA89F57EC8C0FF",
3841 A => "68A5E62CA9CE6C1C299803A6C1530B514E182AD8B0042A59CAD29F43",
3942 B => "2580F63CCFE44138870713B1A92369E33E2135D266DBB372386C400B",
4245 order => "D7C134AA264366862A18302575D0FB98D116BC4B6DDEBCA3A5A7939F",
4346 cofactor => 1,
4447 },
45 brainpoolP256r1 => {
48 brainpoolp256r1 => {
49 oid => '1.3.36.3.3.2.8.1.1.7',
4650 prime => "A9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E5377",
4751 A => "7D5A0975FC2C3057EEF67530417AFFE7FB8055C126DC5C6CE94A4B44F330B5D9",
4852 B => "26DC5C6CE94A4B44F330B5D9BBD77CBF958416295CF7E1CE6BCCDC18FF8C07B6",
5155 order => "A9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A7",
5256 cofactor => 1,
5357 },
54 brainpoolP320r1 => {
58 brainpoolp320r1 => {
59 oid => '1.3.36.3.3.2.8.1.1.9',
5560 prime => "D35E472036BC4FB7E13C785ED201E065F98FCFA6F6F40DEF4F92B9EC7893EC28FCD412B1F1B32E27",
5661 A => "3EE30B568FBAB0F883CCEBD46D3F3BB8A2A73513F5EB79DA66190EB085FFA9F492F375A97D860EB4",
5762 B => "520883949DFDBC42D3AD198640688A6FE13F41349554B49ACC31DCCD884539816F5EB4AC8FB1F1A6",
6065 order => "D35E472036BC4FB7E13C785ED201E065F98FCFA5B68F12A32D482EC7EE8658E98691555B44C59311",
6166 cofactor => 1,
6267 },
63 brainpoolP384r1 => {
68 brainpoolp384r1 => {
69 oid => '1.3.36.3.3.2.8.1.1.11',
6470 prime => "8CB91E82A3386D280F5D6F7E50E641DF152F7109ED5456B412B1DA197FB71123ACD3A729901D1A71874700133107EC53",
6571 A => "7BC382C63D8C150C3C72080ACE05AFA0C2BEA28E4FB22787139165EFBA91F90F8AA5814A503AD4EB04A8C7DD22CE2826",
6672 B => "04A8C7DD22CE28268B39B55416F0447C2FB77DE107DCD2A62E880EA53EEB62D57CB4390295DBC9943AB78696FA504C11",
6975 order => "8CB91E82A3386D280F5D6F7E50E641DF152F7109ED5456B31F166E6CAC0425A7CF3AB6AF6B7FC3103B883202E9046565",
7076 cofactor => 1,
7177 },
72 brainpoolP512r1 => {
78 brainpoolp512r1 => {
79 oid => '1.3.36.3.3.2.8.1.1.13',
7380 prime => "AADD9DB8DBE9C48B3FD4E6AE33C9FC07CB308DB3B3C9D20ED6639CCA703308717D4D9B009BC66842AECDA12AE6A380E62881FF2F2D82C68528AA6056583A48F3",
7481 A => "7830A3318B603B89E2327145AC234CC594CBDD8D3DF91610A83441CAEA9863BC2DED5D5AA8253AA10A2EF1C98B9AC8B57F1117A72BF2C7B9E7C1AC4D77FC94CA",
7582 B => "3DF91610A83441CAEA9863BC2DED5D5AA8253AA10A2EF1C98B9AC8B57F1117A72BF2C7B9E7C1AC4D77FC94CADC083E67984050B75EBAE5DD2809BD638016F723",
8087 },
8188 ### http://www.secg.org/collateral/sec2_final.pdf (September 20, 2000 - Version 1.0)
8289 secp112r1 => {
90 oid => '1.3.132.0.6',
8391 prime => "DB7C2ABF62E35E668076BEAD208B",
8492 A => "DB7C2ABF62E35E668076BEAD2088",
8593 B => "659EF8BA043916EEDE8911702B22",
8997 cofactor => 1,
9098 },
9199 secp112r2 => {
100 oid => '1.3.132.0.7',
92101 prime => "DB7C2ABF62E35E668076BEAD208B",
93102 A => "6127C24C05F38A0AAAF65C0EF02C",
94103 B => "51DEF1815DB5ED74FCC34C85D709",
98107 cofactor => 4,
99108 },
100109 secp128r1 => {
110 oid => '1.3.132.0.28',
101111 prime => "FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF",
102112 A => "FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFC",
103113 B => "E87579C11079F43DD824993C2CEE5ED3",
107117 cofactor => 1,
108118 },
109119 secp128r2 => {
120 oid => '1.3.132.0.29',
110121 prime => "FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF",
111122 A => "D6031998D1B3BBFEBF59CC9BBFF9AEE1",
112123 B => "5EEEFCA380D02919DC2C6558BB6D8A5D",
116127 cofactor => 4,
117128 },
118129 secp160k1 => {
130 oid => '1.3.132.0.9',
119131 prime => "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73",
120132 A => "0000000000000000000000000000000000000000",
121133 B => "0000000000000000000000000000000000000007",
125137 cofactor => 1,
126138 },
127139 secp160r1 => {
140 oid => '1.3.132.0.8',
128141 prime => "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF",
129142 A => "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFC",
130143 B => "1C97BEFC54BD7A8B65ACF89F81D4D4ADC565FA45",
134147 cofactor => 1,
135148 },
136149 secp160r2 => {
150 oid => '1.3.132.0.30',
137151 prime => "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73",
138152 A => "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC70",
139153 B => "B4E134D3FB59EB8BAB57274904664D5AF50388BA",
143157 cofactor => 1,
144158 },
145159 secp192k1 => {
160 oid => '1.3.132.0.31',
146161 prime => "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFEE37",
147162 A => "000000000000000000000000000000000000000000000000",
148163 B => "000000000000000000000000000000000000000000000003",
151166 order => "FFFFFFFFFFFFFFFFFFFFFFFE26F2FC170F69466A74DEFD8D",
152167 cofactor => 1,
153168 },
154 secp192r1 => {
169 secp192r1 => { # == NIST P-192, X9.62 prime192v1
170 oid => '1.2.840.10045.3.1.1',
155171 prime => "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF",
156172 A => "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC",
157173 B => "64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1",
161177 cofactor => 1,
162178 },
163179 secp224k1 => {
180 oid => '1.3.132.0.32',
164181 prime => "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFE56D",
165182 A => "00000000000000000000000000000000000000000000000000000000",
166183 B => "00000000000000000000000000000000000000000000000000000005",
169186 order => "010000000000000000000000000001DCE8D2EC6184CAF0A971769FB1F7",
170187 cofactor => 1,
171188 },
172 secp224r1 => {
189 secp224r1 => { # == NIST P-224
190 oid => '1.3.132.0.33',
173191 prime => "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001",
174192 A => "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE",
175193 B => "B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4",
179197 cofactor => 1,
180198 },
181199 secp256k1 => {
200 oid => '1.3.132.0.10',
182201 prime => "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F",
183202 A => "0000000000000000000000000000000000000000000000000000000000000000",
184203 B => "0000000000000000000000000000000000000000000000000000000000000007",
187206 order => "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141",
188207 cofactor => 1,
189208 },
190 secp256r1 => {
209 secp256r1 => { # == NIST P-256, X9.62 prime256v1
210 oid => '1.2.840.10045.3.1.7',
191211 prime => "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF",
192212 A => "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC",
193213 B => "5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B",
196216 order => "FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551",
197217 cofactor => 1,
198218 },
199 secp384r1 => {
219 secp384r1 => { # == NIST P-384
220 oid => '1.3.132.0.34',
200221 prime => "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFF",
201222 A => "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFC",
202223 B => "B3312FA7E23EE7E4988E056BE3F82D19181D9C6EFE8141120314088F5013875AC656398D8A2ED19D2A85C8EDD3EC2AEF",
205226 order => "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973",
206227 cofactor => 1,
207228 },
208 secp521r1 => {
229 secp521r1 => { # == NIST P-521
230 oid => '1.3.132.0.35',
209231 prime => "01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF",
210232 A => "01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC",
211233 B => "0051953EB9618E1C9A1F929A21A0B68540EEA2DA725B99B315F3B8B489918EF109E156193951EC7E937B1652C0BD3BB1BF073573DF883D2C34F1EF451FD46B503F00",
213235 Gy => "011839296A789A3BC0045C8A5FB42C7D1BD998F54449579B446817AFBD17273E662C97EE72995EF42640C550B9013FAD0761353C7086A272C24088BE94769FD16650",
214236 order => "01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409",
215237 cofactor => 1
216 },
217 ### http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf (July 2013)
218 nistp192 => {
238 },
239 ### http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf (July 2013)
240 nistp192 => { # == secp192r1, X9.62 prime192v1
241 oid => '1.2.840.10045.3.1.1',
219242 prime => 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF',
220243 A => 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC',
221244 B => '64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1',
224247 order => 'FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831',
225248 cofactor => 1,
226249 },
227 nistp224 => {
250 nistp224 => { # == secp224r1
251 oid => '1.3.132.0.33',
228252 prime => 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001',
229253 A => 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE',
230254 B => 'B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4',
233257 order => 'FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D',
234258 cofactor => 1,
235259 },
236 nistp256 => {
260 nistp256 => { # == secp256r1, X9.62 prime256v1
261 oid => '1.2.840.10045.3.1.7',
237262 prime => 'FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF',
238263 A => 'FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC',
239264 B => '5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B',
242267 order => 'FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551',
243268 cofactor => 1,
244269 },
245 nistp384 => {
270 nistp384 => { # == secp384r1
271 oid => '1.3.132.0.34',
246272 prime => 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFF',
247273 A => 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFC',
248274 B => 'B3312FA7E23EE7E4988E056BE3F82D19181D9C6EFE8141120314088F5013875AC656398D8A2ED19D2A85C8EDD3EC2AEF',
251277 order => 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973',
252278 cofactor => 1,
253279 },
254 nistp521 => {
280 nistp521 => { # == secp521r1
281 oid => '1.3.132.0.35',
255282 prime => '1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF',
256283 A => '1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC',
257284 B => '051953EB9618E1C9A1F929A21A0B68540EEA2DA725B99B315F3B8B489918EF109E156193951EC7E937B1652C0BD3BB1BF073573DF883D2C34F1EF451FD46B503F00',
261288 cofactor => 1,
262289 },
263290 ### ANS X9.62 elliptic curves - http://www.flexiprovider.de/CurvesGfpX962.html
264 prime192v1 => {
291 prime192v1 => { # == secp192r1, NIST P-192
292 oid => '1.2.840.10045.3.1.1',
265293 prime => 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF',
266294 A => 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC',
267295 B => '64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1',
271299 cofactor => 1,
272300 },
273301 prime192v2 => {
302 oid => '1.2.840.10045.3.1.2',
274303 prime => 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF',
275304 A => 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC',
276305 B => 'CC22D6DFB95C6B25E49C0D6364A4E5980C393AA21668D953',
280309 cofactor => 1
281310 },
282311 prime192v3 => {
312 oid => '1.2.840.10045.3.1.3',
283313 prime => 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF',
284314 A => 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC',
285315 B => '22123DC2395A05CAA7423DAECCC94760A7D462256BD56916',
289319 cofactor => 1,
290320 },
291321 prime239v1 => {
322 oid => '1.2.840.10045.3.1.4',
292323 prime => '7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFF',
293324 A => '7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFC',
294325 B => '6B016C3BDCF18941D0D654921475CA71A9DB2FB27D1D37796185C2942C0A',
298329 cofactor => 1,
299330 },
300331 prime239v2 => {
332 oid => '1.2.840.10045.3.1.5',
301333 prime => '7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFF',
302334 A => '7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFC',
303335 B => '617FAB6832576CBBFED50D99F0249C3FEE58B94BA0038C7AE84C8C832F2C',
307339 cofactor => 1,
308340 },
309341 prime239v3 => {
342 oid => '1.2.840.10045.3.1.6',
310343 prime => '7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFF',
311344 A => '7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFC',
312345 B => '255705FA2A306654B1F4CB03D6A750A30C250102D4988717D9BA15AB6D3E',
315348 order => '7FFFFFFFFFFFFFFFFFFFFFFF7FFFFF975DEB41B3A6057C3C432146526551',
316349 cofactor => 1,
317350 },
318 prime256v1 => {
351 prime256v1 => { # == secp256r1, NIST P-256
352 oid => '1.2.840.10045.3.1.7',
319353 prime => 'FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF',
320354 A => 'FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC',
321355 B => '5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B',
322356 Gx => '6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296',
323 Gy => '4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5',
357 Gy => '4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5',
324358 order => 'FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551',
325359 cofactor => 1,
326360 },
542576 The following pre-defined C<$curve_name> values are supported:
543577
544578 # curves from http://www.ecc-brainpool.org/download/Domain-parameters.pdf
545 'brainpoolP160r1'
546 'brainpoolP192r1'
547 'brainpoolP224r1'
548 'brainpoolP256r1'
549 'brainpoolP320r1'
550 'brainpoolP384r1'
551 'brainpoolP512r1'
579 'brainpoolp160r1'
580 'brainpoolp192r1'
581 'brainpoolp224r1'
582 'brainpoolp256r1'
583 'brainpoolp320r1'
584 'brainpoolp384r1'
585 'brainpoolp512r1'
552586 # curves from http://www.secg.org/collateral/sec2_final.pdf
553587 'secp112r1'
554588 'secp112r2'
558592 'secp160r1'
559593 'secp160r2'
560594 'secp192k1'
561 'secp192r1'
595 'secp192r1' ... same as nistp192, prime192v1
562596 'secp224k1'
563 'secp224r1'
564 'secp256k1' ... used by Bitcoin
565 'secp256r1'
566 'secp384r1'
567 'secp521r1'
597 'secp224r1' ... same as nistp224
598 'secp256k1' ... used by Bitcoin
599 'secp256r1' ... same as nistp256, prime256v1
600 'secp384r1' ... same as nistp384
601 'secp521r1' ... same as nistp521
568602 #curves from http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf
569 'nistp192'
570 'nistp224'
571 'nistp256'
572 'nistp384'
573 'nistp521'
603 'nistp192' ... same as secp192r1, prime192v1
604 'nistp224' ... same as secp224r1
605 'nistp256' ... same as secp256r1, prime256v1
606 'nistp384' ... same as secp384r1
607 'nistp521' ... same as secp521r1
574608 # curves from ANS X9.62
575 'prime192v1'
609 'prime192v1' ... same as nistp192, secp192r1
576610 'prime192v2'
577611 'prime192v3'
578612 'prime239v1'
579613 'prime239v2'
580614 'prime239v3'
581 'prime256v1'
615 'prime256v1' ... same as nistp256, secp256r1
582616
583617 Using custom curve parameters:
584618
890924 openssl ec -param_enc explicit -in eckey.priv.pem -out eckey.pubc.der -outform der -pubout -conv_form compressed
891925 openssl ec -param_enc explicit -in eckey.priv.pem -passout pass:secret -des3 -out eckey-passwd.priv.pem
892926
893 B<IMPORTANT:> it is necessary to use C<-param_enc explicit> option
894
895927 Load keys (Perl code):
896928
897929 use Crypt::PK::ECC;
0 -----BEGIN PUBLIC KEY-----
1 MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEoBUyo8CQAFPeYPvv78ylh5MwFZjT
2 CLQeb042TjiMJxG+9DLFmRSMlBQ9T/RsLLc+PmpB1+7yPAR+oR5gZn3kJQ==
3 -----END PUBLIC KEY-----
115115 is(unpack("H*",$ss1), unpack("H*",$ss2), 'shared_secret');
116116 }
117117
118 {
119 my $k = Crypt::PK::ECC->new('t/data/openssl_ec-short.pem');
120 ok($k, 'load openssl_ec-short.pem');
121 ok($k->is_private, 'is_private openssl_ec-short.pem');
122 is($k->size, 32, 'size');
123 is(uc($k->key2hash->{pub_x}), 'C068B754877A4AB328A569BAC6D464A81B17E527D2D652572ABB11BDA3572D50', 'key2hash');
118 for my $priv (qw/openssl_ec-short.pem openssl_ec-short.der/) {
119 my $k = Crypt::PK::ECC->new("t/data/$priv");
120 ok($k, "load $priv");
121 ok($k->is_private, "is_private $priv");
122 is($k->size, 32, "size $priv");
123 is(uc($k->key2hash->{pub_x}), 'A01532A3C0900053DE60FBEFEFCCA58793301598D308B41E6F4E364E388C2711', "key2hash $priv");
124 }
125
126 for my $pub (qw/openssl_ec-short.pub.pem openssl_ec-short.pub.der/) {
127 my $k = Crypt::PK::ECC->new("t/data/$pub");
128 ok($k, "load $pub");
129 ok(!$k->is_private, "is_private $pub");
130 is($k->size, 32, "$pub size");
131 is(uc($k->key2hash->{pub_x}), 'A01532A3C0900053DE60FBEFEFCCA58793301598D308B41E6F4E364E388C2711', "key2hash $pub");
124132 }
125133
126134 done_testing;