]>
git.ipfire.org Git - thirdparty/openssl.git/blob - crypto/param_build_set.c
2 * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
4 * Licensed under the Apache License 2.0 (the "License"). You may not use
5 * this file except in compliance with the License. You can obtain a copy
6 * in the file LICENSE in the source distribution or at
7 * https://www.openssl.org/source/license.html
11 * Key Management utility functions to share functionality between the export()
12 * and get_params() methods.
13 * export() uses OSSL_PARAM_BLD, and get_params() used the OSSL_PARAM[] to
14 * fill in parameter data for the same key and data fields.
17 #include <openssl/core_names.h>
18 #include "internal/param_build_set.h"
20 DEFINE_SPECIAL_STACK_OF_CONST(BIGNUM_const
, BIGNUM
)
22 int ossl_param_build_set_int(OSSL_PARAM_BLD
*bld
, OSSL_PARAM
*p
,
23 const char *key
, int num
)
26 return OSSL_PARAM_BLD_push_int(bld
, key
, num
);
27 p
= OSSL_PARAM_locate(p
, key
);
29 return OSSL_PARAM_set_int(p
, num
);
33 int ossl_param_build_set_long(OSSL_PARAM_BLD
*bld
, OSSL_PARAM
*p
,
34 const char *key
, long num
)
37 return OSSL_PARAM_BLD_push_long(bld
, key
, num
);
38 p
= OSSL_PARAM_locate(p
, key
);
40 return OSSL_PARAM_set_long(p
, num
);
44 int ossl_param_build_set_utf8_string(OSSL_PARAM_BLD
*bld
, OSSL_PARAM
*p
,
45 const char *key
, const char *buf
)
48 return OSSL_PARAM_BLD_push_utf8_string(bld
, key
, buf
, 0);
49 p
= OSSL_PARAM_locate(p
, key
);
51 return OSSL_PARAM_set_utf8_string(p
, buf
);
55 int ossl_param_build_set_octet_string(OSSL_PARAM_BLD
*bld
, OSSL_PARAM
*p
,
57 const unsigned char *data
,
61 return OSSL_PARAM_BLD_push_octet_string(bld
, key
, data
, data_len
);
63 p
= OSSL_PARAM_locate(p
, key
);
65 return OSSL_PARAM_set_octet_string(p
, data
, data_len
);
69 int ossl_param_build_set_bn_pad(OSSL_PARAM_BLD
*bld
, OSSL_PARAM
*p
,
70 const char *key
, const BIGNUM
*bn
, size_t sz
)
73 return OSSL_PARAM_BLD_push_BN_pad(bld
, key
, bn
, sz
);
74 p
= OSSL_PARAM_locate(p
, key
);
76 if (sz
> p
->data_size
)
79 return OSSL_PARAM_set_BN(p
, bn
);
84 int ossl_param_build_set_bn(OSSL_PARAM_BLD
*bld
, OSSL_PARAM
*p
,
85 const char *key
, const BIGNUM
*bn
)
88 return OSSL_PARAM_BLD_push_BN(bld
, key
, bn
);
90 p
= OSSL_PARAM_locate(p
, key
);
92 return OSSL_PARAM_set_BN(p
, bn
) > 0;
96 int ossl_param_build_set_multi_key_bn(OSSL_PARAM_BLD
*bld
, OSSL_PARAM
*params
,
98 STACK_OF(BIGNUM_const
) *stk
)
100 int i
, sz
= sk_BIGNUM_const_num(stk
);
105 for (i
= 0; i
< sz
&& names
[i
] != NULL
; ++i
) {
106 if (!OSSL_PARAM_BLD_push_BN(bld
, names
[i
],
107 sk_BIGNUM_const_value(stk
, i
)))
113 for (i
= 0; i
< sz
&& names
[i
] != NULL
; ++i
) {
114 p
= OSSL_PARAM_locate(params
, names
[i
]);
116 if (!OSSL_PARAM_set_BN(p
, sk_BIGNUM_const_value(stk
, i
)))