]> git.ipfire.org Git - thirdparty/openssl.git/blame - doc/internal/man3/ossl_param_bld_init.pod
Remove unused OSSL_PARAM_construct_from_text() function.
[thirdparty/openssl.git] / doc / internal / man3 / ossl_param_bld_init.pod
CommitLineData
3c93fbac
P
1=pod
2
3=head1 NAME
4
7312ef3f
P
5ossl_param_bld_init, ossl_param_bld_to_param, ossl_param_bld_to_param_ex,
6ossl_param_bld_free, ossl_param_bld_push_int, ossl_param_bld_push_uint,
7ossl_param_bld_push_long, ossl_param_bld_push_ulong,
8ossl_param_bld_push_int32, ossl_param_bld_push_uint32,
9ossl_param_bld_push_int64, ossl_param_bld_push_uint64,
10ossl_param_bld_push_size_t, ossl_param_bld_push_double,
ac23078b
P
11ossl_param_bld_push_BN, ossl_param_bld_push_BN_pad,
12ossl_param_bld_push_utf8_string, ossl_param_bld_push_utf8_ptr,
13ossl_param_bld_push_octet_string, ossl_param_bld_push_octet_ptr
3c93fbac
P
14- functions to assist in the creation of OSSL_PARAM arrays
15
16=head1 SYNOPSIS
17
bb82531f 18=for openssl generic
3c93fbac 19
7312ef3f 20 #include "internal/params_build.h"
3c93fbac
P
21
22 #define OSSL_PARAM_BLD_MAX 10
23 typedef struct { ... } OSSL_PARAM_BLD;
24
a1c5cefa 25 void ossl_param_bld_init(OSSL_PARAM_BLD *bld);
7312ef3f 26 OSSL_PARAM *ossl_param_bld_to_param(OSSL_PARAM_BLD *bld);
a1c5cefa 27 OSSL_PARAM *ossl_param_bld_to_param_ex(OSSL_PARAM_BLD *bld,
3c93fbac
P
28 OSSL_PARAM *params, size_t param_n,
29 void *data, size_t data_n,
30 void *secure, size_t secure_n);
7312ef3f 31 void ossl_param_bld_free(OSSL_PARAM *params);
3c93fbac 32
a1c5cefa 33 int ossl_param_bld_push_TYPE(OSSL_PARAM_BLD *bld, const char *key, TYPE val);
3c93fbac 34
a1c5cefa 35 int ossl_param_bld_push_BN(OSSL_PARAM_BLD *bld, const char *key,
3c93fbac 36 const BIGNUM *bn);
ac23078b
P
37 int ossl_param_bld_push_BN_pad(OSSL_PARAM_BLD *bld, const char *key,
38 const BIGNUM *bn, size_t sz);
3c93fbac 39
a1c5cefa 40 int ossl_param_bld_push_utf8_string(OSSL_PARAM_BLD *bld, const char *key,
5fa7789f 41 const char *buf, size_t bsize);
a1c5cefa 42 int ossl_param_bld_push_utf8_ptr(OSSL_PARAM_BLD *bld, const char *key,
3c93fbac 43 char *buf, size_t bsize);
a1c5cefa 44 int ossl_param_bld_push_octet_string(OSSL_PARAM_BLD *bld, const char *key,
5fa7789f 45 const void *buf, size_t bsize);
a1c5cefa 46 int ossl_param_bld_push_octet_ptr(OSSL_PARAM_BLD *bld, const char *key,
3c93fbac
P
47 void *buf, size_t bsize);
48
49
50=head1 DESCRIPTION
51
52A collection of utility functions that simplify the creation of OSSL_PARAM
bbecf04e 53arrays. The B<I<TYPE>> names are as per L<OSSL_PARAM_int(3)>.
3c93fbac 54
a1c5cefa 55ossl_param_bld_init() initialises the OSSL_PARAM_BLD structure so that values
3c93fbac
P
56can be added.
57Any existing values are cleared.
58
a1c5cefa 59ossl_param_bld_to_param() converts a built up OSSL_PARAM_BLD structure
dfabee82 60I<bld> into an allocated OSSL_PARAM array.
7312ef3f
P
61The OSSL_PARAM array and all associated storage must be freed by calling
62ossl_param_bld_free() with the functions return value.
63
64ossl_param_bld_free() deallocates the memory allocated by
65ossl_param_bld_to_param().
3c93fbac 66
a1c5cefa 67ossl_param_bld_to_param_ex() behaves like ossl_param_bld_to_param(), except that
3c93fbac 68no additional memory is allocated.
dfabee82 69An OSSL_PARAM array of at least I<param_n> elements is passed in as I<params>.
3c93fbac 70The auxiliary storage for the parameters is a block of memory pointed to
dfabee82 71by I<data> of at least I<data_n> bytes in size.
3c93fbac 72If required, secure memory for private BIGNUMs should be pointed to by
dfabee82 73I<secure> of at least I<secure_n> bytes in size.
3c93fbac 74
c18d2d94
RL
75=begin comment
76
77POD is pretty good at recognising function names and making them appropriately
78bold... however, when part of the function name is variable, we have to help
79the processor along
80
81=end comment
82
83B<ossl_param_bld_push_I<TYPE>>() are a series of functions which will create
dfabee82 84OSSL_PARAM objects of the specified size and correct type for the I<val>
3c93fbac 85argument.
dfabee82 86I<val> is stored by value and an expression or auto variable can be used.
3c93fbac 87
a1c5cefa 88ossl_param_bld_push_BN() is a function that will create an OSSL_PARAM object
dfabee82
RL
89that holds the specified BIGNUM I<bn>.
90If I<bn> is marked as being securely allocated, it's OSSL_PARAM representation
7312ef3f 91will also be securely allocated.
dfabee82 92The I<bn> argument is stored by reference and the underlying BIGNUM object
a1c5cefa 93must exist until after ossl_param_bld_to_param() has been called.
3c93fbac 94
ac23078b
P
95ossl_param_bld_push_BN_pad() is a function that will create an OSSL_PARAM object
96that holds the specified BIGNUM I<bn>.
97The object will be padded to occupy exactly I<sz> bytes, if insufficient space
98is specified an error results.
99If I<bn> is marked as being securely allocated, it's OSSL_PARAM representation
100will also be securely allocated.
101The I<bn> argument is stored by reference and the underlying BIGNUM object
102must exist until after ossl_param_bld_to_param() has been called.
103
a1c5cefa 104ossl_param_bld_push_utf8_string() is a function that will create an OSSL_PARAM
dfabee82
RL
105object that references the UTF8 string specified by I<buf>.
106If the length of the string, I<bsize>, is zero then it will be calculated.
107The string that I<buf> points to is stored by reference and must remain in
a1c5cefa 108scope until after ossl_param_bld_to_param() has been called.
3c93fbac 109
a1c5cefa 110ossl_param_bld_push_octet_string() is a function that will create an OSSL_PARAM
dfabee82
RL
111object that references the octet string specified by I<buf> and <bsize>.
112The memory that I<buf> points to is stored by reference and must remain in
a1c5cefa 113scope until after ossl_param_bld_to_param() has been called.
3c93fbac 114
a1c5cefa 115ossl_param_bld_push_utf8_ptr() is a function that will create an OSSL_PARAM
dfabee82
RL
116object that references the UTF8 string specified by I<buf>.
117If the length of the string, I<bsize>, is zero then it will be calculated.
118The string I<buf> points to is stored by reference and must remain in
3c93fbac
P
119scope until the OSSL_PARAM array is freed.
120
a1c5cefa 121ossl_param_bld_push_octet_ptr() is a function that will create an OSSL_PARAM
dfabee82
RL
122object that references the octet string specified by I<buf>.
123The memory I<buf> points to is stored by reference and must remain in
3c93fbac
P
124scope until the OSSL_PARAM array is freed.
125
126=head1 RETURN VALUES
127
a1c5cefa 128ossl_param_bld_to_param() and ossl_param_bld_to_param_ex() return the
3c93fbac
P
129allocated OSSL_PARAM array, or NULL on error.
130
a1c5cefa 131All of the ossl_param_bld_push_TYPE functions return 1 on success and 0
3c93fbac
P
132on error.
133
134=head1 NOTES
135
136The constant B<OSSL_PARAM_BLD_MAX> specifies the maximum number of parameters
137that can be added.
138Exceeding this will result in the push functions returning errors.
139
140The structure B<OSSL_PARAM_BLD> should be considered opaque and subject to
141change between versions.
142
143=head1 EXAMPLES
144
145Both examples creating an OSSL_PARAM array that contains an RSA key.
146For both, the predefined key variables are:
147
148 BIGNUM *p, *q; /* both prime */
149 BIGNUM *n; /* = p * q */
150 unsigned int e; /* exponent, usually 65537 */
151 BIGNUM *d; /* e^-1 */
152
153=head2 Example 1
154
155This example shows how to create an OSSL_PARAM array that contains an RSA
156private key.
157
158 OSSL_PARAM_BLD bld;
159 OSSL_PARAM *params;
3c93fbac 160
a1c5cefa
RL
161 ossl_param_bld_init(&bld, &secure);
162 if (!ossl_param_bld_push_BN(&bld, "p", p)
163 || !ossl_param_bld_push_BN(&bld, "q", q)
164 || !ossl_param_bld_push_uint(&bld, "e", e)
165 || !ossl_param_bld_push_BN(&bld, "n", n)
166 || !ossl_param_bld_push_BN(&bld, "d", d)
167 || (params = ossl_param_bld_to_param(&bld)) == NULL)
3c93fbac
P
168 goto err;
169 /* Use params */
170 ...
7312ef3f 171 ossl_param_bld_free(params);
3c93fbac
P
172
173=head2 Example 2
174
175This example shows how to create an OSSL_PARAM array that contains an RSA
176public key.
177
178 OSSL_PARAM_BLD bld;
179 OSSL_PARAM *params;
3c93fbac 180
a1c5cefa
RL
181 ossl_param_bld_init(&bld, &secure);
182 if (!ossl_param_bld_push_BN(&bld, "n", n)
183 || !ossl_param_bld_push_BN(&bld, "d", d)
184 || (params = ossl_param_bld_to_param(&bld)) == NULL)
3c93fbac
P
185 goto err;
186 /* Use params */
187 ...
7312ef3f 188 ossl_param_bld_free(params);
3c93fbac
P
189
190=head1 SEE ALSO
191
6e4618a0 192L<OSSL_PARAM_int(3)>, L<OSSL_PARAM(3)>
3c93fbac
P
193
194=head1 HISTORY
195
196The functions described here were all added in OpenSSL 3.0.
197
198=head1 COPYRIGHT
199
200Copyright 2019 The OpenSSL Project Authors. All Rights Reserved.
201
202Licensed under the Apache License 2.0 (the "License"). You may not use
203this file except in compliance with the License. You can obtain a copy
204in the file LICENSE in the source distribution or at
205L<https://www.openssl.org/source/license.html>.
206
207=cut