5 d2i_ECPKParameters, i2d_ECPKParameters, d2i_ECPKParameters_bio, i2d_ECPKParameters_bio, d2i_ECPKParameters_fp, i2d_ECPKParameters_fp(fp,x), ECPKParameters_print, ECPKParameters_print_fp - Functions for decoding and encoding ASN1 representations of elliptic curve entities
9 #include <openssl/ec.h>
11 EC_GROUP *d2i_ECPKParameters(EC_GROUP **px, const unsigned char **in, long len);
12 int i2d_ECPKParameters(const EC_GROUP *x, unsigned char **out);
13 #define d2i_ECPKParameters_bio(bp,x) ASN1_d2i_bio_of(EC_GROUP,NULL,d2i_ECPKParameters,bp,x)
14 #define i2d_ECPKParameters_bio(bp,x) ASN1_i2d_bio_of_const(EC_GROUP,i2d_ECPKParameters,bp,x)
15 #define d2i_ECPKParameters_fp(fp,x) (EC_GROUP *)ASN1_d2i_fp(NULL, \
16 (char *(*)())d2i_ECPKParameters,(fp),(unsigned char **)(x))
17 #define i2d_ECPKParameters_fp(fp,x) ASN1_i2d_fp(i2d_ECPKParameters,(fp), \
19 int ECPKParameters_print(BIO *bp, const EC_GROUP *x, int off);
20 int ECPKParameters_print_fp(FILE *fp, const EC_GROUP *x, int off);
25 The ECPKParameters encode and decode routines encode and parse the public parameters for an
26 B<EC_GROUP> structure, which represents a curve.
28 d2i_ECPKParameters() attempts to decode B<len> bytes at B<*in>. If
29 successful a pointer to the B<EC_GROUP> structure is returned. If an error
30 occurred then B<NULL> is returned. If B<px> is not B<NULL> then the
31 returned structure is written to B<*px>. If B<*px> is not B<NULL>
32 then it is assumed that B<*px> contains a valid B<EC_GROUP>
33 structure and an attempt is made to reuse it. If the call is
34 successful B<*in> is incremented to the byte following the
37 i2d_ECPKParameters() encodes the structure pointed to by B<x> into DER format.
38 If B<out> is not B<NULL> is writes the DER encoded data to the buffer
39 at B<*out>, and increments it to point after the data just written.
40 If the return value is negative an error occurred, otherwise it
41 returns the length of the encoded data.
43 If B<*out> is B<NULL> memory will be allocated for a buffer and the encoded
44 data written to it. In this case B<*out> is not incremented and it points to
45 the start of the data just written.
47 d2i_ECPKParameters_bio() is similar to d2i_ECPKParameters() except it attempts
48 to parse data from BIO B<bp>.
50 d2i_ECPKParameters_fp() is similar to d2i_ECPKParameters() except it attempts
51 to parse data from FILE pointer B<fp>.
53 i2d_ECPKParameters_bio() is similar to i2d_ECPKParameters() except it writes
54 the encoding of the structure B<x> to BIO B<bp> and it
55 returns 1 for success and 0 for failure.
57 i2d_ECPKParameters_fp() is similar to i2d_ECPKParameters() except it writes
58 the encoding of the structure B<x> to BIO B<bp> and it
59 returns 1 for success and 0 for failure.
61 These functions are very similar to the X509 functions described in L<d2i_X509(3)|d2i_X509(3)>,
62 where further notes and examples are available.
64 The ECPKParameters_print and ECPKParameters_print_fp functions print a human-readable output
65 of the public parameters of the EC_GROUP to B<bp> or B<fp>. The output lines are indented by B<off> spaces.
69 d2i_ECPKParameters(), d2i_ECPKParameters_bio() and d2i_ECPKParameters_fp() return a valid B<EC_GROUP> structure
70 or B<NULL> if an error occurs.
72 i2d_ECPKParameters() returns the number of bytes successfully encoded or a negative
73 value if an error occurs.
75 i2d_ECPKParameters_bio(), i2d_ECPKParameters_fp(), ECPKParameters_print and ECPKParameters_print_fp
76 return 1 for success and 0 if an error occurs.
80 L<crypto(3)|crypto(3)>, L<ec(3)|ec(3)>, L<EC_GROUP_new(3)|EC_GROUP_new(3)>, L<EC_GROUP_copy(3)|EC_GROUP_copy(3)>,
81 L<EC_POINT_new(3)|EC_POINT_new(3)>, L<EC_POINT_add(3)|EC_POINT_add(3)>, L<EC_KEY_new(3)|EC_KEY_new(3)>,
82 L<EC_GFp_simple_method(3)|EC_GFp_simple_method(3)>, L<d2i_X509(3)|d2i_X509(3)>