Unified · Split
| @@ -529,6 +529,7 @@ char* X509ecdsaverify(uchar *sig, int siglen, ECdomain *dom, ECpub *pub); · 528 unmodified lines | ||
| 529 | 529 | /* curves */ |
| 530 | 530 | void secp256r1(mpint *p, mpint *a, mpint *b, mpint *x, mpint *y, mpint *n, mpint *h); |
| 531 | 531 | void secp256k1(mpint *p, mpint *a, mpint *b, mpint *x, mpint *y, mpint *n, mpint *h); |
| 532 | +void secp384r1(mpint *p, mpint *a, mpint *b, mpint *x, mpint *y, mpint *n, mpint *h); | |
| 532 | 533 | |
| 533 | 534 | DigestState* ripemd160(uchar *, ulong, uchar *, DigestState *); |
| 534 | 535 | |
| @@ -60,6 +60,7 @@ OFILES=\ · 59 unmodified lines | ||
| 60 | 60 | salsa.$O\ |
| 61 | 61 | secp256k1.$O\ |
| 62 | 62 | secp256r1.$O\ |
| 63 | + secp384r1.$O\ | |
| 63 | 64 | sha1.$O\ |
| 64 | 65 | sha1pickle.$O\ |
| 65 | 66 | sha2_128.$O\ |
| @@ -0,0 +1,12 @@ | ||
| 1 | +#include "os.h" | |
| 2 | +#include <mp.h> | |
| 3 | +void secp384r1(mpint *p, mpint *a, mpint *b, mpint *x, mpint *y, mpint *n, mpint *h){ | |
| 4 | + strtomp("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFF", nil, 16, p); | |
| 5 | + uitomp(3UL, a); | |
| 6 | + mpsub(p, a, a); | |
| 7 | + strtomp("B3312FA7E23EE7E4988E056BE3F82D19181D9C6EFE8141120314088F5013875AC656398D8A2ED19D2A85C8EDD3EC2AEF", nil, 16, b); | |
| 8 | + strtomp("AA87CA22BE8B05378EB1C71EF320AD746E1D3B628BA79B9859F741E082542A385502F25DBF55296C3A545E3872760AB7", nil, 16, x); | |
| 9 | + strtomp("3617DE4A96262C6F5D9E98BF9292DC29F8F41DBD289A147CE9DA3113B5F0B8C00A60B1CE1D7E819D7A431D7C90EA0E5F", nil, 16, y); | |
| 10 | + strtomp("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973", nil, 16, n); | |
| 11 | + mpassign(mpone, h); | |
| 12 | + } | |
| @@ -350,6 +350,7 @@ static uchar compressors[] = { · 349 unmodified lines | ||
| 350 | 350 | |
| 351 | 351 | static Namedcurve namedcurves[] = { |
| 352 | 352 | 0x0017, secp256r1, |
| 353 | + 0x0018, secp384r1, | |
| 353 | 354 | }; |
| 354 | 355 | |
| 355 | 356 | static uchar pointformats[] = { |
| @@ -1696,13 +1696,16 @@ static DigestAlg *digestalg[NUMALGS+1] = { · 1695 unmodified lines | ||
| 1696 | 1696 | }; |
| 1697 | 1697 | |
| 1698 | 1698 | static Ints15 oid_secp256r1 = {7, 1, 2, 840, 10045, 3, 1, 7}; |
| 1699 | +static Ints15 oid_secp384r1 = {5, 1, 3, 132, 0, 34}; | |
| 1699 | 1700 | |
| 1700 | 1701 | static Ints *namedcurves_oid_tab[] = { |
| 1701 | 1702 | (Ints*)&oid_secp256r1, |
| 1703 | + (Ints*)&oid_secp384r1, | |
| 1702 | 1704 | nil, |
| 1703 | 1705 | }; |
| 1704 | 1706 | static void (*namedcurves[])(mpint *p, mpint *a, mpint *b, mpint *x, mpint *y, mpint *n, mpint *h) = { |
| 1705 | 1707 | secp256r1, |
| 1708 | + secp384r1, | |
| 1706 | 1709 | nil, |
| 1707 | 1710 | }; |
| 1708 | 1711 | |