diff options
author | Joel Sing <jsing@cvs.openbsd.org> | 2015-06-20 13:26:09 +0000 |
---|---|---|
committer | Joel Sing <jsing@cvs.openbsd.org> | 2015-06-20 13:26:09 +0000 |
commit | ad29f78db7e982df11794164695fe1e3888534ee (patch) | |
tree | 95bc547920abb0ac9395f6f6d159cb3f6dd46f62 | |
parent | 5f83f8cb80bfeba17e51115f43a552fa53870a02 (diff) |
Provide EC_curve_nid2nist() and EC_curve_nist2nid().
From OpenSSL.
Rides libcrypto bump.
ok miod@ (a while ago)
-rw-r--r-- | lib/libcrypto/ec/ec.h | 4 | ||||
-rw-r--r-- | lib/libcrypto/ec/ec_curve.c | 55 |
2 files changed, 57 insertions, 2 deletions
diff --git a/lib/libcrypto/ec/ec.h b/lib/libcrypto/ec/ec.h index db0b99a8e9d..3b409ff92d1 100644 --- a/lib/libcrypto/ec/ec.h +++ b/lib/libcrypto/ec/ec.h @@ -1,4 +1,4 @@ -/* $OpenBSD: ec.h,v 1.9 2014/06/12 15:49:29 deraadt Exp $ */ +/* $OpenBSD: ec.h,v 1.10 2015/06/20 13:26:08 jsing Exp $ */ /* * Originally written by Bodo Moeller for the OpenSSL project. */ @@ -395,6 +395,8 @@ typedef struct { * are filled with the data of the first nitems internal groups */ size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems); +const char *EC_curve_nid2nist(int nid); +int EC_curve_nist2nid(const char *name); /********************************************************************/ /* EC_POINT functions */ diff --git a/lib/libcrypto/ec/ec_curve.c b/lib/libcrypto/ec/ec_curve.c index d913867b760..9278e5593b4 100644 --- a/lib/libcrypto/ec/ec_curve.c +++ b/lib/libcrypto/ec/ec_curve.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ec_curve.c,v 1.11 2015/02/09 01:12:03 doug Exp $ */ +/* $OpenBSD: ec_curve.c,v 1.12 2015/06/20 13:26:08 jsing Exp $ */ /* * Written by Nils Larsch for the OpenSSL project. */ @@ -69,6 +69,8 @@ * */ +#include <string.h> + #include <openssl/opensslconf.h> #include "ec_lcl.h" @@ -3285,3 +3287,54 @@ EC_get_builtin_curves(EC_builtin_curve * r, size_t nitems) return curve_list_length; } + +/* + * Functions to translate between common NIST curve names and NIDs. + */ + +typedef struct { + const char *name; /* NIST Name of curve */ + int nid; /* Curve NID */ +} EC_NIST_NAME; + +static EC_NIST_NAME nist_curves[] = { + { "B-163", NID_sect163r2 }, + { "B-233", NID_sect233r1 }, + { "B-283", NID_sect283r1 }, + { "B-409", NID_sect409r1 }, + { "B-571", NID_sect571r1 }, + { "K-163", NID_sect163k1 }, + { "K-233", NID_sect233k1 }, + { "K-283", NID_sect283k1 }, + { "K-409", NID_sect409k1 }, + { "K-571", NID_sect571k1 }, + { "P-192", NID_X9_62_prime192v1 }, + { "P-224", NID_secp224r1 }, + { "P-256", NID_X9_62_prime256v1 }, + { "P-384", NID_secp384r1 }, + { "P-521", NID_secp521r1 } +}; + +const char * +EC_curve_nid2nist(int nid) +{ + size_t i; + + for (i = 0; i < sizeof(nist_curves) / sizeof(EC_NIST_NAME); i++) { + if (nist_curves[i].nid == nid) + return (nist_curves[i].name); + } + return (NULL); +} + +int +EC_curve_nist2nid(const char *name) +{ + size_t i; + + for (i = 0; i < sizeof(nist_curves) / sizeof(EC_NIST_NAME); i++) { + if (!strcmp(nist_curves[i].name, name)) + return (nist_curves[i].nid); + } + return (NID_undef); +} |