ec.h (21544B)
1 /* ec.h 2 * 3 * Copyright (C) 2006-2025 wolfSSL Inc. 4 * 5 * This file is part of wolfSSL. 6 * 7 * wolfSSL is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; either version 3 of the License, or 10 * (at your option) any later version. 11 * 12 * wolfSSL is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA 20 */ 21 22 /* ec.h for openssl */ 23 24 #ifndef WOLFSSL_EC_H_ 25 #define WOLFSSL_EC_H_ 26 27 #include <wolfssl/wolfcrypt/types.h> 28 #include <wolfssl/openssl/compat_types.h> 29 #include <wolfssl/openssl/bn.h> 30 #include <wolfssl/openssl/compat_types.h> 31 #include <wolfssl/wolfcrypt/asn.h> 32 #include <wolfssl/wolfcrypt/ecc.h> 33 34 #ifdef __cplusplus 35 extern "C" { 36 #endif 37 38 #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) 39 40 /* Map OpenSSL NID value */ 41 enum { 42 WC_POINT_CONVERSION_COMPRESSED = 2, 43 WC_POINT_CONVERSION_UNCOMPRESSED = 4, 44 45 #ifdef HAVE_ECC 46 /* Use OpenSSL NIDs. NIDs can be mapped to ecc_curve_id enum values by 47 calling NIDToEccEnum() in ssl.c */ 48 WC_NID_X9_62_prime192v1 = 409, 49 WC_NID_X9_62_prime192v2 = 410, 50 WC_NID_X9_62_prime192v3 = 411, 51 WC_NID_X9_62_prime239v1 = 412, 52 WC_NID_X9_62_prime239v2 = 413, 53 WC_NID_X9_62_prime239v3 = 418, /* Previous value conflicted with AES128CBCb */ 54 WC_NID_X9_62_prime256v1 = 415, 55 WC_NID_secp112r1 = 704, 56 WC_NID_secp112r2 = 705, 57 WC_NID_secp128r1 = 706, 58 WC_NID_secp128r2 = 707, 59 WC_NID_secp160r1 = 709, 60 WC_NID_secp160r2 = 710, 61 WC_NID_secp224r1 = 713, 62 WC_NID_secp384r1 = 715, 63 WC_NID_secp521r1 = 716, 64 WC_NID_secp160k1 = 708, 65 WC_NID_secp192k1 = 711, 66 WC_NID_secp224k1 = 712, 67 WC_NID_secp256k1 = 714, 68 WC_NID_brainpoolP160r1 = 921, 69 WC_NID_brainpoolP192r1 = 923, 70 WC_NID_brainpoolP224r1 = 925, 71 WC_NID_brainpoolP256r1 = 927, 72 WC_NID_brainpoolP320r1 = 929, 73 WC_NID_brainpoolP384r1 = 931, 74 WC_NID_brainpoolP512r1 = 933, 75 #endif 76 77 #ifdef HAVE_ED448 78 WC_NID_ED448 = ED448k, 79 #endif 80 #ifdef HAVE_CURVE448 81 WC_NID_X448 = X448k, 82 #endif 83 #ifdef HAVE_ED25519 84 WC_NID_ED25519 = ED25519k, 85 #endif 86 #ifdef HAVE_CURVE25519 87 WC_NID_X25519 = X25519k, 88 #endif 89 90 WOLFSSL_EC_EXPLICIT_CURVE = 0x000, 91 WOLFSSL_EC_NAMED_CURVE = 0x001 92 }; 93 94 #ifndef OPENSSL_COEXIST 95 96 #define POINT_CONVERSION_COMPRESSED WC_POINT_CONVERSION_COMPRESSED 97 #define POINT_CONVERSION_UNCOMPRESSED WC_POINT_CONVERSION_UNCOMPRESSED 98 99 #ifdef HAVE_ECC 100 #define NID_X9_62_prime192v1 WC_NID_X9_62_prime192v1 101 #define NID_X9_62_prime192v2 WC_NID_X9_62_prime192v2 102 #define NID_X9_62_prime192v3 WC_NID_X9_62_prime192v3 103 #define NID_X9_62_prime239v1 WC_NID_X9_62_prime239v1 104 #define NID_X9_62_prime239v2 WC_NID_X9_62_prime239v2 105 #define NID_X9_62_prime239v3 WC_NID_X9_62_prime239v3 106 #define NID_X9_62_prime256v1 WC_NID_X9_62_prime256v1 107 #define NID_secp112r1 WC_NID_secp112r1 108 #define NID_secp112r2 WC_NID_secp112r2 109 #define NID_secp128r1 WC_NID_secp128r1 110 #define NID_secp128r2 WC_NID_secp128r2 111 #define NID_secp160r1 WC_NID_secp160r1 112 #define NID_secp160r2 WC_NID_secp160r2 113 #define NID_secp224r1 WC_NID_secp224r1 114 #define NID_secp384r1 WC_NID_secp384r1 115 #define NID_secp521r1 WC_NID_secp521r1 116 #define NID_secp160k1 WC_NID_secp160k1 117 #define NID_secp192k1 WC_NID_secp192k1 118 #define NID_secp224k1 WC_NID_secp224k1 119 #define NID_secp256k1 WC_NID_secp256k1 120 #define NID_brainpoolP160r1 WC_NID_brainpoolP160r1 121 #define NID_brainpoolP192r1 WC_NID_brainpoolP192r1 122 #define NID_brainpoolP224r1 WC_NID_brainpoolP224r1 123 #define NID_brainpoolP256r1 WC_NID_brainpoolP256r1 124 #define NID_brainpoolP320r1 WC_NID_brainpoolP320r1 125 #define NID_brainpoolP384r1 WC_NID_brainpoolP384r1 126 #define NID_brainpoolP512r1 WC_NID_brainpoolP512r1 127 #endif 128 129 #ifdef HAVE_ED448 130 #define NID_ED448 WC_NID_ED448 131 #endif 132 #ifdef HAVE_CURVE448 133 #define NID_X448 WC_NID_X448 134 #endif 135 #ifdef HAVE_ED25519 136 #define NID_ED25519 WC_NID_ED25519 137 #endif 138 #ifdef HAVE_CURVE25519 139 #define NID_X25519 WC_NID_X25519 140 #endif 141 142 #define OPENSSL_EC_EXPLICIT_CURVE WOLFSSL_EC_EXPLICIT_CURVE 143 #define OPENSSL_EC_NAMED_CURVE WOLFSSL_EC_NAMED_CURVE 144 145 #endif /* !OPENSSL_COEXIST */ 146 147 #endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ 148 149 #ifndef WOLFSSL_EC_TYPE_DEFINED /* guard on redeclaration */ 150 typedef struct WOLFSSL_EC_KEY WOLFSSL_EC_KEY; 151 typedef struct WOLFSSL_EC_POINT WOLFSSL_EC_POINT; 152 typedef struct WOLFSSL_EC_GROUP WOLFSSL_EC_GROUP; 153 typedef struct WOLFSSL_EC_BUILTIN_CURVE WOLFSSL_EC_BUILTIN_CURVE; 154 /* WOLFSSL_EC_METHOD is just an alias of WOLFSSL_EC_GROUP for now */ 155 typedef struct WOLFSSL_EC_GROUP WOLFSSL_EC_METHOD; 156 157 #define WOLFSSL_EC_TYPE_DEFINED 158 #endif 159 160 struct WOLFSSL_EC_POINT { 161 WOLFSSL_BIGNUM *X; 162 WOLFSSL_BIGNUM *Y; 163 WOLFSSL_BIGNUM *Z; 164 165 void* internal; /* our ECC point */ 166 char inSet; /* internal set from external ? */ 167 char exSet; /* external set from internal ? */ 168 }; 169 170 struct WOLFSSL_EC_GROUP { 171 int curve_idx; /* index of curve, used by WolfSSL as reference */ 172 int curve_nid; /* NID of curve, used by OpenSSL/OpenSSH as reference */ 173 int curve_oid; /* OID of curve, used by OpenSSL/OpenSSH as reference */ 174 }; 175 176 struct WOLFSSL_EC_KEY { 177 WOLFSSL_EC_GROUP *group; 178 WOLFSSL_EC_POINT *pub_key; 179 WOLFSSL_BIGNUM *priv_key; 180 181 void* internal; /* our ECC Key */ 182 void* heap; 183 unsigned char form; /* Either POINT_CONVERSION_UNCOMPRESSED or 184 * POINT_CONVERSION_COMPRESSED */ 185 word16 pkcs8HeaderSz; 186 187 /* option bits */ 188 WC_BITFIELD inSet:1; /* internal set from external ? */ 189 WC_BITFIELD exSet:1; /* external set from internal ? */ 190 191 wolfSSL_Ref ref; /* Reference count information. */ 192 }; 193 194 struct WOLFSSL_EC_BUILTIN_CURVE { 195 int nid; 196 const char *comment; 197 }; 198 199 #define WOLFSSL_EC_KEY_LOAD_PRIVATE 1 200 #define WOLFSSL_EC_KEY_LOAD_PUBLIC 2 201 202 typedef int wc_point_conversion_form_t; 203 #ifndef OPENSSL_COEXIST 204 #define point_conversion_form_t wc_point_conversion_form_t 205 #endif 206 207 typedef struct WOLFSSL_EC_KEY_METHOD { 208 /* Not implemented */ 209 /* Just here so that some C compilers don't complain. To be removed. */ 210 void* dummy_member; 211 } WOLFSSL_EC_KEY_METHOD; 212 213 WOLFSSL_API 214 size_t wolfSSL_EC_get_builtin_curves(WOLFSSL_EC_BUILTIN_CURVE *r,size_t nitems); 215 216 WOLFSSL_API 217 WOLFSSL_EC_KEY *wolfSSL_EC_KEY_dup(const WOLFSSL_EC_KEY *src); 218 WOLFSSL_API 219 int wolfSSL_EC_KEY_up_ref(WOLFSSL_EC_KEY* key); 220 221 WOLFSSL_API 222 int wolfSSL_ECPoint_i2d(const WOLFSSL_EC_GROUP *curve, 223 const WOLFSSL_EC_POINT *p, 224 unsigned char *out, unsigned int *len); 225 WOLFSSL_API 226 int wolfSSL_ECPoint_d2i(const unsigned char *in, unsigned int len, 227 const WOLFSSL_EC_GROUP *curve, WOLFSSL_EC_POINT *p); 228 WOLFSSL_API 229 size_t wolfSSL_EC_POINT_point2oct(const WOLFSSL_EC_GROUP *group, 230 const WOLFSSL_EC_POINT *p, 231 int form, 232 byte *buf, size_t len, WOLFSSL_BN_CTX *ctx); 233 WOLFSSL_API 234 int wolfSSL_EC_POINT_oct2point(const WOLFSSL_EC_GROUP *group, 235 WOLFSSL_EC_POINT *p, const unsigned char *buf, 236 size_t len, WOLFSSL_BN_CTX *ctx); 237 WOLFSSL_API 238 WOLFSSL_EC_KEY *wolfSSL_o2i_ECPublicKey(WOLFSSL_EC_KEY **a, const unsigned char **in, 239 long len); 240 WOLFSSL_API 241 int wolfSSL_i2o_ECPublicKey(const WOLFSSL_EC_KEY *in, unsigned char **out); 242 WOLFSSL_API 243 WOLFSSL_EC_KEY *wolfSSL_d2i_ECPrivateKey(WOLFSSL_EC_KEY **key, const unsigned char **in, 244 long len); 245 WOLFSSL_API 246 int wolfSSL_i2d_ECPrivateKey(const WOLFSSL_EC_KEY *in, unsigned char **out); 247 WOLFSSL_API 248 void wolfSSL_EC_KEY_set_conv_form(WOLFSSL_EC_KEY *eckey, int form); 249 WOLFSSL_API 250 wc_point_conversion_form_t wolfSSL_EC_KEY_get_conv_form(const WOLFSSL_EC_KEY* key); 251 WOLFSSL_API 252 WOLFSSL_BIGNUM *wolfSSL_EC_POINT_point2bn(const WOLFSSL_EC_GROUP *group, 253 const WOLFSSL_EC_POINT *p, 254 int form, 255 WOLFSSL_BIGNUM *in, WOLFSSL_BN_CTX *ctx); 256 WOLFSSL_API 257 int wolfSSL_EC_POINT_is_on_curve(const WOLFSSL_EC_GROUP *group, 258 const WOLFSSL_EC_POINT *point, 259 WOLFSSL_BN_CTX *ctx); 260 261 WOLFSSL_API 262 int wolfSSL_EC_KEY_LoadDer(WOLFSSL_EC_KEY* key, 263 const unsigned char* der, int derSz); 264 WOLFSSL_API 265 int wolfSSL_EC_KEY_LoadDer_ex(WOLFSSL_EC_KEY* key, 266 const unsigned char* der, int derSz, int opt); 267 WOLFSSL_API 268 WOLFSSL_EC_KEY *wolfSSL_d2i_EC_PUBKEY_bio(WOLFSSL_BIO *bio, 269 WOLFSSL_EC_KEY **out); 270 WOLFSSL_API 271 void wolfSSL_EC_KEY_free(WOLFSSL_EC_KEY *key); 272 WOLFSSL_API 273 WOLFSSL_EC_POINT *wolfSSL_EC_KEY_get0_public_key(const WOLFSSL_EC_KEY *key); 274 WOLFSSL_API 275 const WOLFSSL_EC_GROUP *wolfSSL_EC_KEY_get0_group(const WOLFSSL_EC_KEY *key); 276 WOLFSSL_API 277 int wolfSSL_EC_KEY_set_private_key(WOLFSSL_EC_KEY *key, 278 const WOLFSSL_BIGNUM *priv_key); 279 WOLFSSL_API 280 WOLFSSL_BIGNUM *wolfSSL_EC_KEY_get0_private_key(const WOLFSSL_EC_KEY *key); 281 WOLFSSL_API 282 WOLFSSL_EC_KEY *wolfSSL_EC_KEY_new_by_curve_name(int nid); 283 WOLFSSL_API const char* wolfSSL_EC_curve_nid2nist(int nid); 284 WOLFSSL_API int wolfSSL_EC_curve_nist2nid(const char* name); 285 WOLFSSL_API 286 WOLFSSL_EC_KEY *wolfSSL_EC_KEY_new_ex(void* heap, int devId); 287 WOLFSSL_API 288 WOLFSSL_EC_KEY *wolfSSL_EC_KEY_new(void); 289 WOLFSSL_API 290 int wolfSSL_EC_KEY_set_group(WOLFSSL_EC_KEY *key, WOLFSSL_EC_GROUP *group); 291 WOLFSSL_API 292 int wolfSSL_EC_KEY_generate_key(WOLFSSL_EC_KEY *key); 293 WOLFSSL_API 294 void wolfSSL_EC_KEY_set_asn1_flag(WOLFSSL_EC_KEY *key, int asn1_flag); 295 WOLFSSL_API 296 int wolfSSL_EC_KEY_set_public_key(WOLFSSL_EC_KEY *key, 297 const WOLFSSL_EC_POINT *pub); 298 WOLFSSL_API int wolfSSL_EC_KEY_check_key(const WOLFSSL_EC_KEY *key); 299 #if !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM) 300 WOLFSSL_API int wolfSSL_EC_KEY_print_fp(XFILE fp, WOLFSSL_EC_KEY* key, 301 int indent); 302 #endif /* !NO_FILESYSTEM && !NO_STDIO_FILESYSTEM */ 303 WOLFSSL_API int wolfSSL_ECDSA_size(const WOLFSSL_EC_KEY *key); 304 WOLFSSL_API int wolfSSL_ECDSA_sign(int type, const unsigned char *digest, 305 int digestSz, unsigned char *sig, 306 unsigned int *sigSz, WOLFSSL_EC_KEY *key); 307 WOLFSSL_API int wolfSSL_ECDSA_verify(int type, const unsigned char *digest, 308 int digestSz, const unsigned char *sig, 309 int sigSz, WOLFSSL_EC_KEY *key); 310 311 312 #if defined HAVE_ECC && (defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)) 313 WOLFSSL_API int EccEnumToNID(int n); 314 #endif 315 316 WOLFSSL_API 317 void wolfSSL_EC_GROUP_set_asn1_flag(WOLFSSL_EC_GROUP *group, int flag); 318 WOLFSSL_API 319 WOLFSSL_EC_GROUP *wolfSSL_EC_GROUP_new_by_curve_name(int nid); 320 WOLFSSL_API 321 int wolfSSL_EC_GROUP_cmp(const WOLFSSL_EC_GROUP *a, const WOLFSSL_EC_GROUP *b, 322 WOLFSSL_BN_CTX *ctx); 323 WOLFSSL_API 324 WOLFSSL_EC_GROUP *wolfSSL_EC_GROUP_dup(const WOLFSSL_EC_GROUP *src); 325 WOLFSSL_API 326 int wolfSSL_EC_GROUP_get_curve_name(const WOLFSSL_EC_GROUP *group); 327 WOLFSSL_API 328 int wolfSSL_EC_GROUP_get_degree(const WOLFSSL_EC_GROUP *group); 329 WOLFSSL_API 330 int wolfSSL_EC_GROUP_get_order(const WOLFSSL_EC_GROUP *group, 331 WOLFSSL_BIGNUM *order, WOLFSSL_BN_CTX *ctx); 332 WOLFSSL_API 333 int wolfSSL_EC_GROUP_order_bits(const WOLFSSL_EC_GROUP *group); 334 WOLFSSL_API 335 void wolfSSL_EC_GROUP_free(WOLFSSL_EC_GROUP *group); 336 WOLFSSL_API 337 const WOLFSSL_EC_METHOD* wolfSSL_EC_GROUP_method_of( 338 const WOLFSSL_EC_GROUP *group); 339 WOLFSSL_API 340 int wolfSSL_EC_METHOD_get_field_type(const WOLFSSL_EC_METHOD *meth); 341 WOLFSSL_API 342 WOLFSSL_EC_POINT *wolfSSL_EC_POINT_new(const WOLFSSL_EC_GROUP *group); 343 WOLFSSL_LOCAL 344 int ec_point_convert_to_affine(const WOLFSSL_EC_GROUP *group, 345 WOLFSSL_EC_POINT *point); 346 WOLFSSL_API 347 int wolfSSL_EC_POINT_get_affine_coordinates_GFp(const WOLFSSL_EC_GROUP *group, 348 const WOLFSSL_EC_POINT *p, 349 WOLFSSL_BIGNUM *x, 350 WOLFSSL_BIGNUM *y, 351 WOLFSSL_BN_CTX *ctx); 352 WOLFSSL_API 353 int wolfSSL_EC_POINT_set_affine_coordinates_GFp(const WOLFSSL_EC_GROUP *group, 354 WOLFSSL_EC_POINT *point, 355 const WOLFSSL_BIGNUM *x, 356 const WOLFSSL_BIGNUM *y, 357 WOLFSSL_BN_CTX *ctx); 358 WOLFSSL_API 359 int wolfSSL_EC_POINT_add(const WOLFSSL_EC_GROUP *group, WOLFSSL_EC_POINT *r, 360 const WOLFSSL_EC_POINT *p1, 361 const WOLFSSL_EC_POINT *p2, WOLFSSL_BN_CTX *ctx); 362 WOLFSSL_API 363 int wolfSSL_EC_POINT_mul(const WOLFSSL_EC_GROUP *group, WOLFSSL_EC_POINT *r, 364 const WOLFSSL_BIGNUM *n, 365 const WOLFSSL_EC_POINT *q, const WOLFSSL_BIGNUM *m, 366 WOLFSSL_BN_CTX *ctx); 367 WOLFSSL_API 368 int wolfSSL_EC_POINT_invert(const WOLFSSL_EC_GROUP *group, WOLFSSL_EC_POINT *a, 369 WOLFSSL_BN_CTX *ctx); 370 WOLFSSL_API 371 void wolfSSL_EC_POINT_clear_free(WOLFSSL_EC_POINT *point); 372 WOLFSSL_API 373 int wolfSSL_EC_POINT_cmp(const WOLFSSL_EC_GROUP *group, 374 const WOLFSSL_EC_POINT *a, const WOLFSSL_EC_POINT *b, 375 WOLFSSL_BN_CTX *ctx); 376 WOLFSSL_API int wolfSSL_EC_POINT_copy(WOLFSSL_EC_POINT *dest, 377 const WOLFSSL_EC_POINT *src); 378 WOLFSSL_API 379 void wolfSSL_EC_POINT_free(WOLFSSL_EC_POINT *point); 380 WOLFSSL_API 381 int wolfSSL_EC_POINT_is_at_infinity(const WOLFSSL_EC_GROUP *group, 382 const WOLFSSL_EC_POINT *a); 383 384 WOLFSSL_API 385 char* wolfSSL_EC_POINT_point2hex(const WOLFSSL_EC_GROUP* group, 386 const WOLFSSL_EC_POINT* point, int form, 387 WOLFSSL_BN_CTX* ctx); 388 WOLFSSL_API 389 WOLFSSL_EC_POINT *wolfSSL_EC_POINT_hex2point 390 (const WOLFSSL_EC_GROUP *group, const char *hex, 391 WOLFSSL_EC_POINT *p, WOLFSSL_BN_CTX *ctx); 392 393 WOLFSSL_API const WOLFSSL_EC_KEY_METHOD *wolfSSL_EC_KEY_OpenSSL(void); 394 WOLFSSL_API WOLFSSL_EC_KEY_METHOD *wolfSSL_EC_KEY_METHOD_new( 395 const WOLFSSL_EC_KEY_METHOD *meth); 396 WOLFSSL_API void wolfSSL_EC_KEY_METHOD_free(WOLFSSL_EC_KEY_METHOD *meth); 397 /* TODO when implementing change the types to the real callback signatures 398 * and use real parameter names */ 399 WOLFSSL_API void wolfSSL_EC_KEY_METHOD_set_init(WOLFSSL_EC_KEY_METHOD *meth, 400 void* a1, void* a2, void* a3, void* a4, void* a5, void* a6); 401 WOLFSSL_API void wolfSSL_EC_KEY_METHOD_set_sign(WOLFSSL_EC_KEY_METHOD *meth, 402 void* a1, void* a2, void* a3); 403 WOLFSSL_API const WOLFSSL_EC_KEY_METHOD *wolfSSL_EC_KEY_get_method( 404 const WOLFSSL_EC_KEY *key); 405 WOLFSSL_API int wolfSSL_EC_KEY_set_method(WOLFSSL_EC_KEY *key, 406 const WOLFSSL_EC_KEY_METHOD *meth); 407 408 #if !defined(OPENSSL_COEXIST) && (defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)) 409 410 typedef WOLFSSL_EC_KEY EC_KEY; 411 typedef WOLFSSL_EC_GROUP EC_GROUP; 412 typedef WOLFSSL_EC_GROUP EC_METHOD; 413 typedef WOLFSSL_EC_POINT EC_POINT; 414 typedef WOLFSSL_EC_BUILTIN_CURVE EC_builtin_curve; 415 typedef WOLFSSL_EC_KEY_METHOD EC_KEY_METHOD; 416 417 #ifndef HAVE_ECC 418 #define OPENSSL_NO_EC 419 #endif 420 421 #define EC_KEY_new wolfSSL_EC_KEY_new 422 #define EC_KEY_free wolfSSL_EC_KEY_free 423 #define EC_KEY_up_ref wolfSSL_EC_KEY_up_ref 424 #define EC_KEY_dup wolfSSL_EC_KEY_dup 425 #define EC_KEY_get0_public_key wolfSSL_EC_KEY_get0_public_key 426 #define EC_KEY_get0_group wolfSSL_EC_KEY_get0_group 427 #define EC_KEY_set_private_key wolfSSL_EC_KEY_set_private_key 428 #define EC_KEY_get0_private_key wolfSSL_EC_KEY_get0_private_key 429 #define EC_KEY_new_by_curve_name wolfSSL_EC_KEY_new_by_curve_name 430 #define EC_KEY_set_group wolfSSL_EC_KEY_set_group 431 #define EC_KEY_generate_key wolfSSL_EC_KEY_generate_key 432 #define EC_KEY_set_asn1_flag wolfSSL_EC_KEY_set_asn1_flag 433 #define EC_KEY_set_public_key wolfSSL_EC_KEY_set_public_key 434 #define EC_KEY_check_key wolfSSL_EC_KEY_check_key 435 #define EC_KEY_print_fp wolfSSL_EC_KEY_print_fp 436 437 #define d2i_EC_PUBKEY_bio wolfSSL_d2i_EC_PUBKEY_bio 438 439 #define ECDSA_size wolfSSL_ECDSA_size 440 #define ECDSA_sign wolfSSL_ECDSA_sign 441 #define ECDSA_verify wolfSSL_ECDSA_verify 442 443 #define EC_GROUP_free wolfSSL_EC_GROUP_free 444 #define EC_GROUP_set_asn1_flag wolfSSL_EC_GROUP_set_asn1_flag 445 #define EC_GROUP_new_by_curve_name wolfSSL_EC_GROUP_new_by_curve_name 446 #define EC_GROUP_cmp wolfSSL_EC_GROUP_cmp 447 #define EC_GROUP_dup wolfSSL_EC_GROUP_dup 448 #define EC_GROUP_get_curve_name wolfSSL_EC_GROUP_get_curve_name 449 #define EC_GROUP_get_degree wolfSSL_EC_GROUP_get_degree 450 #define EC_GROUP_get_order wolfSSL_EC_GROUP_get_order 451 #define EC_GROUP_order_bits wolfSSL_EC_GROUP_order_bits 452 #define EC_GROUP_method_of wolfSSL_EC_GROUP_method_of 453 #ifndef NO_WOLFSSL_STUB 454 #ifdef WOLF_NO_VARIADIC_MACROS 455 #define EC_GROUP_set_point_conversion_form() WC_DO_NOTHING 456 #else 457 #define EC_GROUP_set_point_conversion_form(...) WC_DO_NOTHING 458 #endif 459 #endif 460 461 #define EC_METHOD_get_field_type wolfSSL_EC_METHOD_get_field_type 462 463 #define EC_POINT_new wolfSSL_EC_POINT_new 464 #define EC_POINT_free wolfSSL_EC_POINT_free 465 #define EC_POINT_get_affine_coordinates_GFp \ 466 wolfSSL_EC_POINT_get_affine_coordinates_GFp 467 #define EC_POINT_get_affine_coordinates \ 468 wolfSSL_EC_POINT_get_affine_coordinates_GFp 469 #define EC_POINT_set_affine_coordinates_GFp \ 470 wolfSSL_EC_POINT_set_affine_coordinates_GFp 471 #define EC_POINT_set_affine_coordinates \ 472 wolfSSL_EC_POINT_set_affine_coordinates_GFp 473 #define EC_POINT_add wolfSSL_EC_POINT_add 474 #define EC_POINT_mul wolfSSL_EC_POINT_mul 475 #define EC_POINT_invert wolfSSL_EC_POINT_invert 476 #define EC_POINT_clear_free wolfSSL_EC_POINT_clear_free 477 #define EC_POINT_cmp wolfSSL_EC_POINT_cmp 478 #define EC_POINT_copy wolfSSL_EC_POINT_copy 479 #define EC_POINT_is_at_infinity wolfSSL_EC_POINT_is_at_infinity 480 481 #define EC_get_builtin_curves wolfSSL_EC_get_builtin_curves 482 483 #define ECPoint_i2d wolfSSL_ECPoint_i2d 484 #define ECPoint_d2i wolfSSL_ECPoint_d2i 485 #define EC_POINT_point2oct wolfSSL_EC_POINT_point2oct 486 #define EC_POINT_oct2point wolfSSL_EC_POINT_oct2point 487 #define EC_POINT_point2bn wolfSSL_EC_POINT_point2bn 488 #define EC_POINT_is_on_curve wolfSSL_EC_POINT_is_on_curve 489 #define o2i_ECPublicKey wolfSSL_o2i_ECPublicKey 490 #define i2o_ECPublicKey wolfSSL_i2o_ECPublicKey 491 #define i2d_EC_PUBKEY wolfSSL_i2o_ECPublicKey 492 #define d2i_ECPrivateKey wolfSSL_d2i_ECPrivateKey 493 #define i2d_ECPrivateKey wolfSSL_i2d_ECPrivateKey 494 #define EC_KEY_set_conv_form wolfSSL_EC_KEY_set_conv_form 495 #define EC_KEY_get_conv_form wolfSSL_EC_KEY_get_conv_form 496 #define d2i_ECPKParameters wolfSSL_d2i_ECPKParameters 497 #define i2d_ECPKParameters wolfSSL_i2d_ECPKParameters 498 499 #define EC_POINT_point2hex wolfSSL_EC_POINT_point2hex 500 #define EC_POINT_hex2point wolfSSL_EC_POINT_hex2point 501 502 #define EC_POINT_dump wolfSSL_EC_POINT_dump 503 #define EC_get_builtin_curves wolfSSL_EC_get_builtin_curves 504 505 #define EC_curve_nid2nist wolfSSL_EC_curve_nid2nist 506 #define EC_curve_nist2nid wolfSSL_EC_curve_nist2nid 507 508 #define EC_KEY_OpenSSL wolfSSL_EC_KEY_OpenSSL 509 #define EC_KEY_METHOD_new wolfSSL_EC_KEY_METHOD_new 510 #define EC_KEY_METHOD_free wolfSSL_EC_KEY_METHOD_free 511 #define EC_KEY_METHOD_set_init wolfSSL_EC_KEY_METHOD_set_init 512 #define EC_KEY_METHOD_set_sign wolfSSL_EC_KEY_METHOD_set_sign 513 #define EC_KEY_get_method wolfSSL_EC_KEY_get_method 514 #define EC_KEY_set_method wolfSSL_EC_KEY_set_method 515 516 #endif /* !OPENSSL_COEXIST && (OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL) */ 517 518 #ifdef __cplusplus 519 } /* extern "C" */ 520 #endif 521 522 #endif /* header */