Update API to use (char *) for email addresses and hostnames
[openssl.git] / doc / crypto / d2i_ECPKParameters.pod
1 =pod
2
3 =head1 NAME
4
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
6
7 =head1 SYNOPSIS
8
9  #include <openssl/ec.h>
10
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), \
18                 (unsigned char *)(x))
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);
21
22
23 =head1 DESCRIPTION
24
25 The ECPKParameters encode and decode routines encode and parse the public parameters for an
26 B<EC_GROUP> structure, which represents a curve.
27
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
35 parsed data.
36
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. 
42
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.
46
47 d2i_ECPKParameters_bio() is similar to d2i_ECPKParameters() except it attempts
48 to parse data from BIO B<bp>.
49
50 d2i_ECPKParameters_fp() is similar to d2i_ECPKParameters() except it attempts
51 to parse data from FILE pointer B<fp>.
52
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.
56
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.
60
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.
63
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.
66
67 =head1 RETURN VALUES
68
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.
71
72 i2d_ECPKParameters() returns the number of bytes successfully encoded or a negative
73 value if an error occurs.
74
75 i2d_ECPKParameters_bio(), i2d_ECPKParameters_fp(), ECPKParameters_print and ECPKParameters_print_fp
76 return 1 for success and 0 if an error occurs. 
77
78 =head1 SEE ALSO
79
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)>
83
84 =cut