11/* ec.h
22 *
3- * Copyright (C) 2006-2017 wolfSSL Inc. All rights reserved.
3+ * Copyright (C) 2006-2018 wolfSSL Inc. All rights reserved.
44 *
55 * This file is part of wolfSSL.
66 *
77 * Contact [email protected] with any questions or comments. 88 *
9- * http ://www.wolfssl.com
9+ * https ://www.wolfssl.com
1010 */
1111
1212
@@ -24,6 +24,7 @@ extern "C" {
2424
2525/* Map OpenSSL NID value */
2626enum {
27+ POINT_CONVERSION_COMPRESSED = 2 ,
2728 POINT_CONVERSION_UNCOMPRESSED = 4 ,
2829
2930#ifdef HAVE_ECC
@@ -92,6 +93,10 @@ struct WOLFSSL_EC_KEY {
9293 char exSet ; /* external set from internal ? */
9394};
9495
96+
97+ #define WOLFSSL_EC_KEY_LOAD_PRIVATE 1
98+ #define WOLFSSL_EC_KEY_LOAD_PUBLIC 2
99+
95100WOLFSSL_API
96101int wolfSSL_ECPoint_i2d (const WOLFSSL_EC_GROUP * curve ,
97102 const WOLFSSL_EC_POINT * p ,
@@ -103,6 +108,9 @@ WOLFSSL_API
103108int wolfSSL_EC_KEY_LoadDer (WOLFSSL_EC_KEY * key ,
104109 const unsigned char * der , int derSz );
105110WOLFSSL_API
111+ int wolfSSL_EC_KEY_LoadDer_ex (WOLFSSL_EC_KEY * key ,
112+ const unsigned char * der , int derSz , int opt );
113+ WOLFSSL_API
106114void wolfSSL_EC_KEY_free (WOLFSSL_EC_KEY * key );
107115WOLFSSL_API
108116WOLFSSL_EC_POINT * wolfSSL_EC_KEY_get0_public_key (const WOLFSSL_EC_KEY * key );
@@ -167,36 +175,47 @@ WOLFSSL_API
167175int wolfSSL_EC_POINT_is_at_infinity (const WOLFSSL_EC_GROUP * group ,
168176 const WOLFSSL_EC_POINT * a );
169177
170- #define EC_KEY_free wolfSSL_EC_KEY_free
171- #define EC_KEY_get0_public_key wolfSSL_EC_KEY_get0_public_key
172- #define EC_KEY_get0_group wolfSSL_EC_KEY_get0_group
173- #define EC_KEY_set_private_key wolfSSL_EC_KEY_set_private_key
174- #define EC_KEY_get0_private_key wolfSSL_EC_KEY_get0_private_key
175- #define EC_KEY_new_by_curve_name wolfSSL_EC_KEY_new_by_curve_name
176- #define EC_KEY_set_group wolfSSL_EC_KEY_set_group
177- #define EC_KEY_generate_key wolfSSL_EC_KEY_generate_key
178- #define EC_KEY_set_asn1_flag wolfSSL_EC_KEY_set_asn1_flag
179- #define EC_KEY_set_public_key wolfSSL_EC_KEY_set_public_key
180- #define EC_KEY_new wolfSSL_EC_KEY_new
181-
182- #define EC_GROUP_set_asn1_flag wolfSSL_EC_GROUP_set_asn1_flag
183- #define EC_GROUP_new_by_curve_name wolfSSL_EC_GROUP_new_by_curve_name
184- #define EC_GROUP_cmp wolfSSL_EC_GROUP_cmp
185- #define EC_GROUP_get_curve_name wolfSSL_EC_GROUP_get_curve_name
186- #define EC_GROUP_get_degree wolfSSL_EC_GROUP_get_degree
187- #define EC_GROUP_get_order wolfSSL_EC_GROUP_get_order
188- #define EC_GROUP_free wolfSSL_EC_GROUP_free
189-
190- #define EC_POINT_new wolfSSL_EC_POINT_new
178+ #ifndef HAVE_SELFTEST
179+ WOLFSSL_API
180+ char * wolfSSL_EC_POINT_point2hex (const WOLFSSL_EC_GROUP * group ,
181+ const WOLFSSL_EC_POINT * point , int form ,
182+ WOLFSSL_BN_CTX * ctx );
183+ #endif
184+
185+ #define EC_KEY_new wolfSSL_EC_KEY_new
186+ #define EC_KEY_free wolfSSL_EC_KEY_free
187+ #define EC_KEY_get0_public_key wolfSSL_EC_KEY_get0_public_key
188+ #define EC_KEY_get0_group wolfSSL_EC_KEY_get0_group
189+ #define EC_KEY_set_private_key wolfSSL_EC_KEY_set_private_key
190+ #define EC_KEY_get0_private_key wolfSSL_EC_KEY_get0_private_key
191+ #define EC_KEY_new_by_curve_name wolfSSL_EC_KEY_new_by_curve_name
192+ #define EC_KEY_set_group wolfSSL_EC_KEY_set_group
193+ #define EC_KEY_generate_key wolfSSL_EC_KEY_generate_key
194+ #define EC_KEY_set_asn1_flag wolfSSL_EC_KEY_set_asn1_flag
195+ #define EC_KEY_set_public_key wolfSSL_EC_KEY_set_public_key
196+
197+ #define EC_GROUP_free wolfSSL_EC_GROUP_free
198+ #define EC_GROUP_set_asn1_flag wolfSSL_EC_GROUP_set_asn1_flag
199+ #define EC_GROUP_new_by_curve_name wolfSSL_EC_GROUP_new_by_curve_name
200+ #define EC_GROUP_cmp wolfSSL_EC_GROUP_cmp
201+ #define EC_GROUP_get_curve_name wolfSSL_EC_GROUP_get_curve_name
202+ #define EC_GROUP_get_degree wolfSSL_EC_GROUP_get_degree
203+ #define EC_GROUP_get_order wolfSSL_EC_GROUP_get_order
204+
205+ #define EC_POINT_new wolfSSL_EC_POINT_new
206+ #define EC_POINT_free wolfSSL_EC_POINT_free
191207#define EC_POINT_get_affine_coordinates_GFp \
192- wolfSSL_EC_POINT_get_affine_coordinates_GFp
193- #define EC_POINT_mul wolfSSL_EC_POINT_mul
194- #define EC_POINT_clear_free wolfSSL_EC_POINT_clear_free
195- #define EC_POINT_cmp wolfSSL_EC_POINT_cmp
196- #define EC_POINT_free wolfSSL_EC_POINT_free
197- #define EC_POINT_is_at_infinity wolfSSL_EC_POINT_is_at_infinity
198-
199- #define EC_POINT_dump wolfSSL_EC_POINT_dump
208+ wolfSSL_EC_POINT_get_affine_coordinates_GFp
209+ #define EC_POINT_mul wolfSSL_EC_POINT_mul
210+ #define EC_POINT_clear_free wolfSSL_EC_POINT_clear_free
211+ #define EC_POINT_cmp wolfSSL_EC_POINT_cmp
212+ #define EC_POINT_is_at_infinity wolfSSL_EC_POINT_is_at_infinity
213+
214+ #ifndef HAVE_SELFTEST
215+ #define EC_POINT_point2hex wolfSSL_EC_POINT_point2hex
216+ #endif
217+
218+ #define EC_POINT_dump wolfSSL_EC_POINT_dump
200219
201220#ifdef __cplusplus
202221} /* extern "C" */
0 commit comments