cryptlib
3.4.1
Main Page
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Macros
bn
ec.h
Go to the documentation of this file.
1
/* crypto/ec/ec.h */
2
/*
3
* Originally written by Bodo Moeller for the OpenSSL project.
4
*/
5
/* ====================================================================
6
* Copyright (c) 1998-2003 The OpenSSL Project. All rights reserved.
7
*
8
* Redistribution and use in source and binary forms, with or without
9
* modification, are permitted provided that the following conditions
10
* are met:
11
*
12
* 1. Redistributions of source code must retain the above copyright
13
* notice, this list of conditions and the following disclaimer.
14
*
15
* 2. Redistributions in binary form must reproduce the above copyright
16
* notice, this list of conditions and the following disclaimer in
17
* the documentation and/or other materials provided with the
18
* distribution.
19
*
20
* 3. All advertising materials mentioning features or use of this
21
* software must display the following acknowledgment:
22
* "This product includes software developed by the OpenSSL Project
23
* for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
24
*
25
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
26
* endorse or promote products derived from this software without
27
* prior written permission. For written permission, please contact
28
*
[email protected]
.
29
*
30
* 5. Products derived from this software may not be called "OpenSSL"
31
* nor may "OpenSSL" appear in their names without prior written
32
* permission of the OpenSSL Project.
33
*
34
* 6. Redistributions of any form whatsoever must retain the following
35
* acknowledgment:
36
* "This product includes software developed by the OpenSSL Project
37
* for use in the OpenSSL Toolkit (http://www.openssl.org/)"
38
*
39
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
40
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
41
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
42
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
43
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
44
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
45
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
46
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
47
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
48
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
49
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
50
* OF THE POSSIBILITY OF SUCH DAMAGE.
51
* ====================================================================
52
*
53
* This product includes cryptographic software written by Eric Young
54
* (
[email protected]
). This product includes software written by Tim
55
* Hudson (
[email protected]
).
56
*
57
*/
58
/* ====================================================================
59
* Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
60
*
61
* Portions of the attached software ("Contribution") are developed by
62
* SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project.
63
*
64
* The Contribution is licensed pursuant to the OpenSSL open source
65
* license provided above.
66
*
67
* The elliptic curve binary polynomial software is originally written by
68
* Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories.
69
*
70
*/
71
72
#ifndef HEADER_EC_H
73
#define HEADER_EC_H
74
75
/* Other changes for cryptlib - pcg:
76
77
- Replace OPENSSL_malloc() with clBnAlloc() in ecp_smpl.c, ec_lib.c,
78
ec_mult.c, ec_rand.c.
79
- Replace OPENSSL_free() with clBnFree() in ec_lib.c */
80
81
#if defined( INC_ALL )
/* pcg */
82
#include "
osconfig.h
"
83
#else
84
#include "
crypt/osconfig.h
"
85
#endif
/* Compiler-specific includes */
86
#define ECerr(a,b)
87
#define ERR_clear_error()
88
#define ERR_peek_last_error() 0
89
#define ERR_GET_LIB( dummy ) 0
90
#define ERR_GET_REASON( dummy ) 0
91
#define ERR_LIB_BN 0
92
#define CRYPTO_add( dummy1, dummy2, dummy3 ) 0
93
#define OPENSSL_NO_BIO
94
95
/* End of cryptlib changes - pcg */
96
97
#ifdef OPENSSL_NO_EC
98
#error EC is disabled.
99
#endif
100
101
#ifdef __cplusplus
102
extern
"C"
{
103
#elif defined(__SUNPRO_C)
104
# if __SUNPRO_C >= 0x520
105
# pragma error_messages (off,E_ARRAY_OF_INCOMPLETE_NONAME,E_ARRAY_OF_INCOMPLETE)
106
# endif
107
#endif
108
109
110
#ifndef OPENSSL_ECC_MAX_FIELD_BITS
111
# define OPENSSL_ECC_MAX_FIELD_BITS 661
112
#endif
113
114
typedef
enum
{
115
/* values as defined in X9.62 (ECDSA) and elsewhere */
116
POINT_CONVERSION_COMPRESSED
= 2,
117
POINT_CONVERSION_UNCOMPRESSED
= 4,
118
POINT_CONVERSION_HYBRID
= 6
119
}
point_conversion_form_t
;
120
121
122
typedef
struct
ec_method_st
EC_METHOD
;
123
124
typedef
struct
ec_group_st
125
/*
126
EC_METHOD *meth;
127
-- field definition
128
-- curve coefficients
129
-- optional generator with associated information (order, cofactor)
130
-- optional extra data (precomputed table for fast computation of multiples of generator)
131
-- ASN1 stuff
132
*/
133
EC_GROUP
;
134
135
typedef
struct
ec_point_st
EC_POINT
;
136
137
138
/* EC_METHODs for curves over GF(p).
139
* EC_GFp_simple_method provides the basis for the optimized methods.
140
*/
141
const
EC_METHOD
*
EC_GFp_simple_method
(
void
);
142
const
EC_METHOD
*
EC_GFp_mont_method
(
void
);
143
const
EC_METHOD
*
EC_GFp_nist_method
(
void
);
144
145
/* EC_METHOD for curves over GF(2^m).
146
*/
147
const
EC_METHOD
*
EC_GF2m_simple_method
(
void
);
148
149
150
EC_GROUP
*
EC_GROUP_new
(
const
EC_METHOD
*);
151
void
EC_GROUP_free
(
EC_GROUP
*);
152
void
EC_GROUP_clear_free
(
EC_GROUP
*);
153
int
EC_GROUP_copy
(
EC_GROUP
*,
const
EC_GROUP
*);
154
EC_GROUP
*
EC_GROUP_dup
(
const
EC_GROUP
*);
155
156
const
EC_METHOD
*
EC_GROUP_method_of
(
const
EC_GROUP
*);
157
int
EC_METHOD_get_field_type
(
const
EC_METHOD
*);
158
159
int
EC_GROUP_set_generator
(
EC_GROUP
*,
const
EC_POINT
*generator,
const
BIGNUM
*order,
const
BIGNUM
*cofactor);
160
const
EC_POINT
*
EC_GROUP_get0_generator
(
const
EC_GROUP
*);
161
int
EC_GROUP_get_order
(
const
EC_GROUP
*,
BIGNUM
*order,
BN_CTX
*);
162
int
EC_GROUP_get_cofactor
(
const
EC_GROUP
*,
BIGNUM
*cofactor,
BN_CTX
*);
163
164
void
EC_GROUP_set_curve_name
(
EC_GROUP
*,
int
nid);
165
int
EC_GROUP_get_curve_name
(
const
EC_GROUP
*);
166
167
void
EC_GROUP_set_asn1_flag
(
EC_GROUP
*,
int
flag);
168
int
EC_GROUP_get_asn1_flag
(
const
EC_GROUP
*);
169
170
void
EC_GROUP_set_point_conversion_form
(
EC_GROUP
*,
point_conversion_form_t
);
171
point_conversion_form_t
EC_GROUP_get_point_conversion_form
(
const
EC_GROUP
*);
172
173
unsigned
char
*
EC_GROUP_get0_seed
(
const
EC_GROUP
*);
174
size_t
EC_GROUP_get_seed_len
(
const
EC_GROUP
*);
175
size_t
EC_GROUP_set_seed
(
EC_GROUP
*,
const
unsigned
char
*,
size_t
len);
176
177
int
EC_GROUP_set_curve_GFp
(
EC_GROUP
*,
const
BIGNUM
*
p
,
const
BIGNUM
*a,
const
BIGNUM
*b,
BN_CTX
*);
178
int
EC_GROUP_get_curve_GFp
(
const
EC_GROUP
*,
BIGNUM
*
p
,
BIGNUM
*a,
BIGNUM
*b,
BN_CTX
*);
179
int
EC_GROUP_set_curve_GF2m
(
EC_GROUP
*,
const
BIGNUM
*
p
,
const
BIGNUM
*a,
const
BIGNUM
*b,
BN_CTX
*);
180
int
EC_GROUP_get_curve_GF2m
(
const
EC_GROUP
*,
BIGNUM
*
p
,
BIGNUM
*a,
BIGNUM
*b,
BN_CTX
*);
181
182
/* returns the number of bits needed to represent a field element */
183
int
EC_GROUP_get_degree
(
const
EC_GROUP
*);
184
185
/* EC_GROUP_check() returns 1 if 'group' defines a valid group, 0 otherwise */
186
int
EC_GROUP_check
(
const
EC_GROUP
*group,
BN_CTX
*ctx);
187
/* EC_GROUP_check_discriminant() returns 1 if the discriminant of the
188
* elliptic curve is not zero, 0 otherwise */
189
int
EC_GROUP_check_discriminant
(
const
EC_GROUP
*,
BN_CTX
*);
190
191
/* EC_GROUP_cmp() returns 0 if both groups are equal and 1 otherwise */
192
int
EC_GROUP_cmp
(
const
EC_GROUP
*,
const
EC_GROUP
*,
BN_CTX
*);
193
194
/* EC_GROUP_new_GF*() calls EC_GROUP_new() and EC_GROUP_set_GF*()
195
* after choosing an appropriate EC_METHOD */
196
EC_GROUP
*
EC_GROUP_new_curve_GFp
(
const
BIGNUM
*
p
,
const
BIGNUM
*a,
const
BIGNUM
*b,
BN_CTX
*);
197
EC_GROUP
*
EC_GROUP_new_curve_GF2m
(
const
BIGNUM
*
p
,
const
BIGNUM
*a,
const
BIGNUM
*b,
BN_CTX
*);
198
199
/* EC_GROUP_new_by_curve_name() creates a EC_GROUP structure
200
* specified by a curve name (in form of a NID) */
201
EC_GROUP
*
EC_GROUP_new_by_curve_name
(
int
nid);
202
/* handling of internal curves */
203
typedef
struct
{
204
int
nid
;
205
const
char
*
comment
;
206
}
EC_builtin_curve
;
207
/* EC_builtin_curves(EC_builtin_curve *r, size_t size) returns number
208
* of all available curves or zero if a error occurred.
209
* In case r ist not zero nitems EC_builtin_curve structures
210
* are filled with the data of the first nitems internal groups */
211
size_t
EC_get_builtin_curves
(
EC_builtin_curve
*r,
size_t
nitems);
212
213
214
/* EC_POINT functions */
215
216
EC_POINT
*
EC_POINT_new
(
const
EC_GROUP
*);
217
void
EC_POINT_free
(
EC_POINT
*);
218
void
EC_POINT_clear_free
(
EC_POINT
*);
219
int
EC_POINT_copy
(
EC_POINT
*,
const
EC_POINT
*);
220
EC_POINT
*
EC_POINT_dup
(
const
EC_POINT
*,
const
EC_GROUP
*);
221
222
const
EC_METHOD
*
EC_POINT_method_of
(
const
EC_POINT
*);
223
224
int
EC_POINT_set_to_infinity
(
const
EC_GROUP
*,
EC_POINT
*);
225
int
EC_POINT_set_Jprojective_coordinates_GFp
(
const
EC_GROUP
*,
EC_POINT
*,
226
const
BIGNUM
*x,
const
BIGNUM
*y,
const
BIGNUM
*z,
BN_CTX
*);
227
int
EC_POINT_get_Jprojective_coordinates_GFp
(
const
EC_GROUP
*,
const
EC_POINT
*,
228
BIGNUM
*x,
BIGNUM
*y,
BIGNUM
*z,
BN_CTX
*);
229
int
EC_POINT_set_affine_coordinates_GFp
(
const
EC_GROUP
*,
EC_POINT
*,
230
const
BIGNUM
*x,
const
BIGNUM
*y,
BN_CTX
*);
231
int
EC_POINT_get_affine_coordinates_GFp
(
const
EC_GROUP
*,
const
EC_POINT
*,
232
BIGNUM
*x,
BIGNUM
*y,
BN_CTX
*);
233
int
EC_POINT_set_compressed_coordinates_GFp
(
const
EC_GROUP
*,
EC_POINT
*,
234
const
BIGNUM
*x,
int
y_bit,
BN_CTX
*);
235
236
int
EC_POINT_set_affine_coordinates_GF2m
(
const
EC_GROUP
*,
EC_POINT
*,
237
const
BIGNUM
*x,
const
BIGNUM
*y,
BN_CTX
*);
238
int
EC_POINT_get_affine_coordinates_GF2m
(
const
EC_GROUP
*,
const
EC_POINT
*,
239
BIGNUM
*x,
BIGNUM
*y,
BN_CTX
*);
240
int
EC_POINT_set_compressed_coordinates_GF2m
(
const
EC_GROUP
*,
EC_POINT
*,
241
const
BIGNUM
*x,
int
y_bit,
BN_CTX
*);
242
243
size_t
EC_POINT_point2oct
(
const
EC_GROUP
*,
const
EC_POINT
*,
point_conversion_form_t
form,
244
unsigned
char
*buf,
size_t
len,
BN_CTX
*);
245
int
EC_POINT_oct2point
(
const
EC_GROUP
*,
EC_POINT
*,
246
const
unsigned
char
*buf,
size_t
len,
BN_CTX
*);
247
248
/* other interfaces to point2oct/oct2point: */
249
BIGNUM
*
EC_POINT_point2bn
(
const
EC_GROUP
*,
const
EC_POINT
*,
250
point_conversion_form_t
form,
BIGNUM
*,
BN_CTX
*);
251
EC_POINT
*
EC_POINT_bn2point
(
const
EC_GROUP
*,
const
BIGNUM
*,
252
EC_POINT
*,
BN_CTX
*);
253
char
*
EC_POINT_point2hex
(
const
EC_GROUP
*,
const
EC_POINT
*,
254
point_conversion_form_t
form,
BN_CTX
*);
255
EC_POINT
*
EC_POINT_hex2point
(
const
EC_GROUP
*,
const
char
*,
256
EC_POINT
*,
BN_CTX
*);
257
258
int
EC_POINT_add
(
const
EC_GROUP
*,
EC_POINT
*r,
const
EC_POINT
*a,
const
EC_POINT
*b,
BN_CTX
*);
259
int
EC_POINT_dbl
(
const
EC_GROUP
*,
EC_POINT
*r,
const
EC_POINT
*a,
BN_CTX
*);
260
int
EC_POINT_invert
(
const
EC_GROUP
*,
EC_POINT
*,
BN_CTX
*);
261
262
int
EC_POINT_is_at_infinity
(
const
EC_GROUP
*,
const
EC_POINT
*);
263
int
EC_POINT_is_on_curve
(
const
EC_GROUP
*,
const
EC_POINT
*,
BN_CTX
*);
264
int
EC_POINT_cmp
(
const
EC_GROUP
*,
const
EC_POINT
*a,
const
EC_POINT
*b,
BN_CTX
*);
265
266
int
EC_POINT_make_affine
(
const
EC_GROUP
*,
EC_POINT
*,
BN_CTX
*);
267
int
EC_POINTs_make_affine
(
const
EC_GROUP
*,
size_t
num,
EC_POINT
*[],
BN_CTX
*);
268
269
270
int
EC_POINTs_mul
(
const
EC_GROUP
*,
EC_POINT
*r,
const
BIGNUM
*,
size_t
num,
const
EC_POINT
*[],
const
BIGNUM
*[],
BN_CTX
*);
271
int
EC_POINT_mul
(
const
EC_GROUP
*,
EC_POINT
*r,
const
BIGNUM
*,
const
EC_POINT
*,
const
BIGNUM
*,
BN_CTX
*);
272
273
/* EC_GROUP_precompute_mult() stores multiples of generator for faster point multiplication */
274
int
EC_GROUP_precompute_mult
(
EC_GROUP
*,
BN_CTX
*);
275
/* EC_GROUP_have_precompute_mult() reports whether such precomputation has been done */
276
int
EC_GROUP_have_precompute_mult
(
const
EC_GROUP
*);
277
278
279
280
/* ASN1 stuff */
281
282
/* EC_GROUP_get_basis_type() returns the NID of the basis type
283
* used to represent the field elements */
284
int
EC_GROUP_get_basis_type
(
const
EC_GROUP
*);
285
int
EC_GROUP_get_trinomial_basis
(
const
EC_GROUP
*,
unsigned
int
*k);
286
int
EC_GROUP_get_pentanomial_basis
(
const
EC_GROUP
*,
unsigned
int
*k1,
287
unsigned
int
*k2,
unsigned
int
*k3);
288
289
#define OPENSSL_EC_NAMED_CURVE 0x001
290
291
typedef
struct
ecpk_parameters_st
ECPKPARAMETERS
;
292
293
EC_GROUP
*
d2i_ECPKParameters
(
EC_GROUP
**,
const
unsigned
char
**in,
long
len);
294
int
i2d_ECPKParameters
(
const
EC_GROUP
*,
unsigned
char
**out);
295
296
#define d2i_ECPKParameters_bio(bp,x) ASN1_d2i_bio_of(EC_GROUP,NULL,d2i_ECPKParameters,bp,x)
297
#define i2d_ECPKParameters_bio(bp,x) ASN1_i2d_bio_of_const(EC_GROUP,i2d_ECPKParameters,bp,x)
298
#define d2i_ECPKParameters_fp(fp,x) (EC_GROUP *)ASN1_d2i_fp(NULL, \
299
(char *(*)())d2i_ECPKParameters,(fp),(unsigned char **)(x))
300
#define i2d_ECPKParameters_fp(fp,x) ASN1_i2d_fp(i2d_ECPKParameters,(fp), \
301
(unsigned char *)(x))
302
303
#ifndef OPENSSL_NO_BIO
304
int
ECPKParameters_print(BIO *bp,
const
EC_GROUP
*x,
int
off);
305
#endif
306
#ifndef OPENSSL_NO_FP_API
307
int
ECPKParameters_print_fp
(FILE *fp,
const
EC_GROUP
*x,
int
off);
308
#endif
309
310
/* the EC_KEY stuff */
311
typedef
struct
ec_key_st
EC_KEY
;
312
313
/* some values for the encoding_flag */
314
#define EC_PKEY_NO_PARAMETERS 0x001
315
#define EC_PKEY_NO_PUBKEY 0x002
316
317
EC_KEY
*
EC_KEY_new
(
void
);
318
EC_KEY
*
EC_KEY_new_by_curve_name
(
int
nid);
319
void
EC_KEY_free
(
EC_KEY
*);
320
EC_KEY
*
EC_KEY_copy
(
EC_KEY
*,
const
EC_KEY
*);
321
EC_KEY
*
EC_KEY_dup
(
const
EC_KEY
*);
322
323
int
EC_KEY_up_ref
(
EC_KEY
*);
324
325
const
EC_GROUP
*
EC_KEY_get0_group
(
const
EC_KEY
*);
326
int
EC_KEY_set_group
(
EC_KEY
*,
const
EC_GROUP
*);
327
const
BIGNUM
*
EC_KEY_get0_private_key
(
const
EC_KEY
*);
328
int
EC_KEY_set_private_key
(
EC_KEY
*,
const
BIGNUM
*);
329
const
EC_POINT
*
EC_KEY_get0_public_key
(
const
EC_KEY
*);
330
int
EC_KEY_set_public_key
(
EC_KEY
*,
const
EC_POINT
*);
331
unsigned
EC_KEY_get_enc_flags
(
const
EC_KEY
*);
332
void
EC_KEY_set_enc_flags
(
EC_KEY
*,
unsigned
int
);
333
point_conversion_form_t
EC_KEY_get_conv_form
(
const
EC_KEY
*);
334
void
EC_KEY_set_conv_form
(
EC_KEY
*,
point_conversion_form_t
);
335
/* functions to set/get method specific data */
336
void
*
EC_KEY_get_key_method_data
(
EC_KEY
*,
337
void
*(*dup_func)(
void
*),
void
(*free_func)(
void
*),
void
(*clear_free_func)(
void
*));
338
void
EC_KEY_insert_key_method_data
(
EC_KEY
*,
void
*
data
,
339
void
*(*dup_func)(
void
*),
void
(*free_func)(
void
*),
void
(*clear_free_func)(
void
*));
340
/* wrapper functions for the underlying EC_GROUP object */
341
void
EC_KEY_set_asn1_flag
(
EC_KEY
*,
int
);
342
int
EC_KEY_precompute_mult
(
EC_KEY
*,
BN_CTX
*ctx);
343
344
/* EC_KEY_generate_key() creates a ec private (public) key */
345
int
EC_KEY_generate_key
(
EC_KEY
*);
346
/* EC_KEY_check_key() */
347
int
EC_KEY_check_key
(
const
EC_KEY
*);
348
349
/* de- and encoding functions for SEC1 ECPrivateKey */
350
EC_KEY
*
d2i_ECPrivateKey
(
EC_KEY
**a,
const
unsigned
char
**in,
long
len);
351
int
i2d_ECPrivateKey
(
EC_KEY
*a,
unsigned
char
**out);
352
/* de- and encoding functions for EC parameters */
353
EC_KEY
*
d2i_ECParameters
(
EC_KEY
**a,
const
unsigned
char
**in,
long
len);
354
int
i2d_ECParameters
(
EC_KEY
*a,
unsigned
char
**out);
355
/* de- and encoding functions for EC public key
356
* (octet string, not DER -- hence 'o2i' and 'i2o') */
357
EC_KEY
*
o2i_ECPublicKey
(
EC_KEY
**a,
const
unsigned
char
**in,
long
len);
358
int
i2o_ECPublicKey
(
EC_KEY
*a,
unsigned
char
**out);
359
360
#ifndef OPENSSL_NO_BIO
361
int
ECParameters_print(BIO *bp,
const
EC_KEY
*x);
362
int
EC_KEY_print(BIO *bp,
const
EC_KEY
*x,
int
off);
363
#endif
364
#ifndef OPENSSL_NO_FP_API
365
int
ECParameters_print_fp
(FILE *fp,
const
EC_KEY
*x);
366
int
EC_KEY_print_fp
(FILE *fp,
const
EC_KEY
*x,
int
off);
367
#endif
368
369
#define ECParameters_dup(x) ASN1_dup_of(EC_KEY,i2d_ECParameters,d2i_ECParameters,x)
370
371
#ifndef __cplusplus
372
#if defined(__SUNPRO_C)
373
# if __SUNPRO_C >= 0x520
374
# pragma error_messages (default,E_ARRAY_OF_INCOMPLETE_NONAME,E_ARRAY_OF_INCOMPLETE)
375
# endif
376
# endif
377
#endif
378
379
/* BEGIN ERROR CODES */
380
/* The following lines are auto generated by the script mkerr.pl. Any changes
381
* made after this point may be overwritten when the script is next run.
382
*/
383
void
ERR_load_EC_strings
(
void
);
384
385
/* Error codes for the EC functions. */
386
387
/* Function codes. */
388
#define EC_F_COMPUTE_WNAF 143
389
#define EC_F_D2I_ECPARAMETERS 144
390
#define EC_F_D2I_ECPKPARAMETERS 145
391
#define EC_F_D2I_ECPRIVATEKEY 146
392
#define EC_F_ECPARAMETERS_PRINT 147
393
#define EC_F_ECPARAMETERS_PRINT_FP 148
394
#define EC_F_ECPKPARAMETERS_PRINT 149
395
#define EC_F_ECPKPARAMETERS_PRINT_FP 150
396
#define EC_F_ECP_NIST_MOD_192 203
397
#define EC_F_ECP_NIST_MOD_224 204
398
#define EC_F_ECP_NIST_MOD_256 205
399
#define EC_F_ECP_NIST_MOD_521 206
400
#define EC_F_EC_ASN1_GROUP2CURVE 153
401
#define EC_F_EC_ASN1_GROUP2FIELDID 154
402
#define EC_F_EC_ASN1_GROUP2PARAMETERS 155
403
#define EC_F_EC_ASN1_GROUP2PKPARAMETERS 156
404
#define EC_F_EC_ASN1_PARAMETERS2GROUP 157
405
#define EC_F_EC_ASN1_PKPARAMETERS2GROUP 158
406
#define EC_F_EC_EX_DATA_SET_DATA 211
407
#define EC_F_EC_GF2M_MONTGOMERY_POINT_MULTIPLY 208
408
#define EC_F_EC_GF2M_SIMPLE_GROUP_CHECK_DISCRIMINANT 159
409
#define EC_F_EC_GF2M_SIMPLE_GROUP_SET_CURVE 195
410
#define EC_F_EC_GF2M_SIMPLE_OCT2POINT 160
411
#define EC_F_EC_GF2M_SIMPLE_POINT2OCT 161
412
#define EC_F_EC_GF2M_SIMPLE_POINT_GET_AFFINE_COORDINATES 162
413
#define EC_F_EC_GF2M_SIMPLE_POINT_SET_AFFINE_COORDINATES 163
414
#define EC_F_EC_GF2M_SIMPLE_SET_COMPRESSED_COORDINATES 164
415
#define EC_F_EC_GFP_MONT_FIELD_DECODE 133
416
#define EC_F_EC_GFP_MONT_FIELD_ENCODE 134
417
#define EC_F_EC_GFP_MONT_FIELD_MUL 131
418
#define EC_F_EC_GFP_MONT_FIELD_SET_TO_ONE 209
419
#define EC_F_EC_GFP_MONT_FIELD_SQR 132
420
#define EC_F_EC_GFP_MONT_GROUP_SET_CURVE 189
421
#define EC_F_EC_GFP_MONT_GROUP_SET_CURVE_GFP 135
422
#define EC_F_EC_GFP_NIST_FIELD_MUL 200
423
#define EC_F_EC_GFP_NIST_FIELD_SQR 201
424
#define EC_F_EC_GFP_NIST_GROUP_SET_CURVE 202
425
#define EC_F_EC_GFP_SIMPLE_GROUP_CHECK_DISCRIMINANT 165
426
#define EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE 166
427
#define EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE_GFP 100
428
#define EC_F_EC_GFP_SIMPLE_GROUP_SET_GENERATOR 101
429
#define EC_F_EC_GFP_SIMPLE_MAKE_AFFINE 102
430
#define EC_F_EC_GFP_SIMPLE_OCT2POINT 103
431
#define EC_F_EC_GFP_SIMPLE_POINT2OCT 104
432
#define EC_F_EC_GFP_SIMPLE_POINTS_MAKE_AFFINE 137
433
#define EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES 167
434
#define EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES_GFP 105
435
#define EC_F_EC_GFP_SIMPLE_POINT_SET_AFFINE_COORDINATES 168
436
#define EC_F_EC_GFP_SIMPLE_POINT_SET_AFFINE_COORDINATES_GFP 128
437
#define EC_F_EC_GFP_SIMPLE_SET_COMPRESSED_COORDINATES 169
438
#define EC_F_EC_GFP_SIMPLE_SET_COMPRESSED_COORDINATES_GFP 129
439
#define EC_F_EC_GROUP_CHECK 170
440
#define EC_F_EC_GROUP_CHECK_DISCRIMINANT 171
441
#define EC_F_EC_GROUP_COPY 106
442
#define EC_F_EC_GROUP_GET0_GENERATOR 139
443
#define EC_F_EC_GROUP_GET_COFACTOR 140
444
#define EC_F_EC_GROUP_GET_CURVE_GF2M 172
445
#define EC_F_EC_GROUP_GET_CURVE_GFP 130
446
#define EC_F_EC_GROUP_GET_DEGREE 173
447
#define EC_F_EC_GROUP_GET_ORDER 141
448
#define EC_F_EC_GROUP_GET_PENTANOMIAL_BASIS 193
449
#define EC_F_EC_GROUP_GET_TRINOMIAL_BASIS 194
450
#define EC_F_EC_GROUP_NEW 108
451
#define EC_F_EC_GROUP_NEW_BY_CURVE_NAME 174
452
#define EC_F_EC_GROUP_NEW_FROM_DATA 175
453
#define EC_F_EC_GROUP_PRECOMPUTE_MULT 142
454
#define EC_F_EC_GROUP_SET_CURVE_GF2M 176
455
#define EC_F_EC_GROUP_SET_CURVE_GFP 109
456
#define EC_F_EC_GROUP_SET_EXTRA_DATA 110
457
#define EC_F_EC_GROUP_SET_GENERATOR 111
458
#define EC_F_EC_KEY_CHECK_KEY 177
459
#define EC_F_EC_KEY_COPY 178
460
#define EC_F_EC_KEY_GENERATE_KEY 179
461
#define EC_F_EC_KEY_NEW 182
462
#define EC_F_EC_KEY_PRINT 180
463
#define EC_F_EC_KEY_PRINT_FP 181
464
#define EC_F_EC_POINTS_MAKE_AFFINE 136
465
#define EC_F_EC_POINTS_MUL 138
466
#define EC_F_EC_POINT_ADD 112
467
#define EC_F_EC_POINT_CMP 113
468
#define EC_F_EC_POINT_COPY 114
469
#define EC_F_EC_POINT_DBL 115
470
#define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GF2M 183
471
#define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GFP 116
472
#define EC_F_EC_POINT_GET_JPROJECTIVE_COORDINATES_GFP 117
473
#define EC_F_EC_POINT_INVERT 210
474
#define EC_F_EC_POINT_IS_AT_INFINITY 118
475
#define EC_F_EC_POINT_IS_ON_CURVE 119
476
#define EC_F_EC_POINT_MAKE_AFFINE 120
477
#define EC_F_EC_POINT_MUL 184
478
#define EC_F_EC_POINT_NEW 121
479
#define EC_F_EC_POINT_OCT2POINT 122
480
#define EC_F_EC_POINT_POINT2OCT 123
481
#define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GF2M 185
482
#define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GFP 124
483
#define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GF2M 186
484
#define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GFP 125
485
#define EC_F_EC_POINT_SET_JPROJECTIVE_COORDINATES_GFP 126
486
#define EC_F_EC_POINT_SET_TO_INFINITY 127
487
#define EC_F_EC_PRE_COMP_DUP 207
488
#define EC_F_EC_PRE_COMP_NEW 196
489
#define EC_F_EC_WNAF_MUL 187
490
#define EC_F_EC_WNAF_PRECOMPUTE_MULT 188
491
#define EC_F_I2D_ECPARAMETERS 190
492
#define EC_F_I2D_ECPKPARAMETERS 191
493
#define EC_F_I2D_ECPRIVATEKEY 192
494
#define EC_F_I2O_ECPUBLICKEY 151
495
#define EC_F_O2I_ECPUBLICKEY 152
496
497
/* Reason codes. */
498
#define EC_R_ASN1_ERROR 115
499
#define EC_R_ASN1_UNKNOWN_FIELD 116
500
#define EC_R_BUFFER_TOO_SMALL 100
501
#define EC_R_D2I_ECPKPARAMETERS_FAILURE 117
502
#define EC_R_DISCRIMINANT_IS_ZERO 118
503
#define EC_R_EC_GROUP_NEW_BY_NAME_FAILURE 119
504
#define EC_R_FIELD_TOO_LARGE 138
505
#define EC_R_GROUP2PKPARAMETERS_FAILURE 120
506
#define EC_R_I2D_ECPKPARAMETERS_FAILURE 121
507
#define EC_R_INCOMPATIBLE_OBJECTS 101
508
#define EC_R_INVALID_ARGUMENT 112
509
#define EC_R_INVALID_COMPRESSED_POINT 110
510
#define EC_R_INVALID_COMPRESSION_BIT 109
511
#define EC_R_INVALID_ENCODING 102
512
#define EC_R_INVALID_FIELD 103
513
#define EC_R_INVALID_FORM 104
514
#define EC_R_INVALID_GROUP_ORDER 122
515
#define EC_R_INVALID_PENTANOMIAL_BASIS 132
516
#define EC_R_INVALID_PRIVATE_KEY 123
517
#define EC_R_INVALID_TRINOMIAL_BASIS 137
518
#define EC_R_MISSING_PARAMETERS 124
519
#define EC_R_MISSING_PRIVATE_KEY 125
520
#define EC_R_NOT_A_NIST_PRIME 135
521
#define EC_R_NOT_A_SUPPORTED_NIST_PRIME 136
522
#define EC_R_NOT_IMPLEMENTED 126
523
#define EC_R_NOT_INITIALIZED 111
524
#define EC_R_NO_FIELD_MOD 133
525
#define EC_R_PASSED_NULL_PARAMETER 134
526
#define EC_R_PKPARAMETERS2GROUP_FAILURE 127
527
#define EC_R_POINT_AT_INFINITY 106
528
#define EC_R_POINT_IS_NOT_ON_CURVE 107
529
#define EC_R_SLOT_FULL 108
530
#define EC_R_UNDEFINED_GENERATOR 113
531
#define EC_R_UNDEFINED_ORDER 128
532
#define EC_R_UNKNOWN_GROUP 129
533
#define EC_R_UNKNOWN_ORDER 114
534
#define EC_R_UNSUPPORTED_FIELD 131
535
#define EC_R_WRONG_ORDER 130
536
537
#ifdef __cplusplus
538
}
539
#endif
540
#endif
Generated on Thu Jan 10 2013 10:00:43 for cryptlib by
1.8.2