VirtualBox

source: vbox/trunk/src/libs/openssl-3.4.1/include/openssl/core_dispatch.h

Last change on this file was 109052, checked in by vboxsync, 3 weeks ago

openssl-3.4.1: Applied our changes, regenerated files, added missing files and functions. This time with a three way merge. ​bugref:10890

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 51.0 KB
Line 
1/*
2 * Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved.
3 *
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
8 */
9
10#ifndef OPENSSL_CORE_NUMBERS_H
11# define OPENSSL_CORE_NUMBERS_H
12# pragma once
13
14# include <stdarg.h>
15# include <openssl/core.h>
16# include <openssl/indicator.h>
17
18# ifdef __cplusplus
19extern "C" {
20# endif
21
22/*-
23 * Identities
24 * ----------
25 *
26 * All series start with 1, to allow 0 to be an array terminator.
27 * For any FUNC identity, we also provide a function signature typedef
28 * and a static inline function to extract a function pointer from a
29 * OSSL_DISPATCH element in a type safe manner.
30 *
31 * Names:
32 * for any function base name 'foo' (uppercase form 'FOO'), we will have
33 * the following:
34 * - a macro for the identity with the name OSSL_FUNC_'FOO' or derivatives
35 * thereof (to be specified further down)
36 * - a function signature typedef with the name OSSL_FUNC_'foo'_fn
37 * - a function pointer extractor function with the name OSSL_FUNC_'foo'
38 */
39
40/*
41 * Helper macro to create the function signature typedef and the extractor
42 * |type| is the return-type of the function, |name| is the name of the
43 * function to fetch, and |args| is a parenthesized list of parameters
44 * for the function (that is, it is |name|'s function signature).
45 * Note: This is considered a "reserved" internal macro. Applications should
46 * not use this or assume its existence.
47 */
48#define OSSL_CORE_MAKE_FUNC(type,name,args) \
49 typedef type (OSSL_FUNC_##name##_fn)args; \
50 static ossl_unused ossl_inline \
51 OSSL_FUNC_##name##_fn *OSSL_FUNC_##name(const OSSL_DISPATCH *opf) \
52 { \
53 return (OSSL_FUNC_##name##_fn *)opf->function; \
54 }
55
56/*
57 * Core function identities, for the two OSSL_DISPATCH tables being passed
58 * in the OSSL_provider_init call.
59 *
60 * 0 serves as a marker for the end of the OSSL_DISPATCH array, and must
61 * therefore NEVER be used as a function identity.
62 */
63/* Functions provided by the Core to the provider, reserved numbers 1-1023 */
64# define OSSL_FUNC_CORE_GETTABLE_PARAMS 1
65OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *,
66 core_gettable_params,(const OSSL_CORE_HANDLE *prov))
67# define OSSL_FUNC_CORE_GET_PARAMS 2
68OSSL_CORE_MAKE_FUNC(int,core_get_params,(const OSSL_CORE_HANDLE *prov,
69 OSSL_PARAM params[]))
70# define OSSL_FUNC_CORE_THREAD_START 3
71OSSL_CORE_MAKE_FUNC(int,core_thread_start,(const OSSL_CORE_HANDLE *prov,
72 OSSL_thread_stop_handler_fn handfn,
73 void *arg))
74# define OSSL_FUNC_CORE_GET_LIBCTX 4
75OSSL_CORE_MAKE_FUNC(OPENSSL_CORE_CTX *,core_get_libctx,
76 (const OSSL_CORE_HANDLE *prov))
77# define OSSL_FUNC_CORE_NEW_ERROR 5
78OSSL_CORE_MAKE_FUNC(void,core_new_error,(const OSSL_CORE_HANDLE *prov))
79# define OSSL_FUNC_CORE_SET_ERROR_DEBUG 6
80OSSL_CORE_MAKE_FUNC(void,core_set_error_debug,
81 (const OSSL_CORE_HANDLE *prov,
82 const char *file, int line, const char *func))
83# define OSSL_FUNC_CORE_VSET_ERROR 7
84OSSL_CORE_MAKE_FUNC(void,core_vset_error,
85 (const OSSL_CORE_HANDLE *prov,
86 uint32_t reason, const char *fmt, va_list args))
87# define OSSL_FUNC_CORE_SET_ERROR_MARK 8
88OSSL_CORE_MAKE_FUNC(int, core_set_error_mark, (const OSSL_CORE_HANDLE *prov))
89# define OSSL_FUNC_CORE_CLEAR_LAST_ERROR_MARK 9
90OSSL_CORE_MAKE_FUNC(int, core_clear_last_error_mark,
91 (const OSSL_CORE_HANDLE *prov))
92# define OSSL_FUNC_CORE_POP_ERROR_TO_MARK 10
93OSSL_CORE_MAKE_FUNC(int, core_pop_error_to_mark, (const OSSL_CORE_HANDLE *prov))
94
95
96/* Functions to access the OBJ database */
97
98#define OSSL_FUNC_CORE_OBJ_ADD_SIGID 11
99#define OSSL_FUNC_CORE_OBJ_CREATE 12
100
101OSSL_CORE_MAKE_FUNC(int, core_obj_add_sigid,
102 (const OSSL_CORE_HANDLE *prov, const char *sign_name,
103 const char *digest_name, const char *pkey_name))
104OSSL_CORE_MAKE_FUNC(int, core_obj_create,
105 (const OSSL_CORE_HANDLE *prov, const char *oid,
106 const char *sn, const char *ln))
107
108/* Memory allocation, freeing, clearing. */
109#define OSSL_FUNC_CRYPTO_MALLOC 20
110OSSL_CORE_MAKE_FUNC(void *,
111 CRYPTO_malloc, (size_t num, const char *file, int line))
112#define OSSL_FUNC_CRYPTO_ZALLOC 21
113OSSL_CORE_MAKE_FUNC(void *,
114 CRYPTO_zalloc, (size_t num, const char *file, int line))
115#define OSSL_FUNC_CRYPTO_FREE 22
116OSSL_CORE_MAKE_FUNC(void,
117 CRYPTO_free, (void *ptr, const char *file, int line))
118#define OSSL_FUNC_CRYPTO_CLEAR_FREE 23
119OSSL_CORE_MAKE_FUNC(void,
120 CRYPTO_clear_free, (void *ptr, size_t num, const char *file, int line))
121#define OSSL_FUNC_CRYPTO_REALLOC 24
122OSSL_CORE_MAKE_FUNC(void *,
123 CRYPTO_realloc, (void *addr, size_t num, const char *file, int line))
124#define OSSL_FUNC_CRYPTO_CLEAR_REALLOC 25
125OSSL_CORE_MAKE_FUNC(void *,
126 CRYPTO_clear_realloc, (void *addr, size_t old_num, size_t num,
127 const char *file, int line))
128#define OSSL_FUNC_CRYPTO_SECURE_MALLOC 26
129OSSL_CORE_MAKE_FUNC(void *,
130 CRYPTO_secure_malloc, (size_t num, const char *file, int line))
131#define OSSL_FUNC_CRYPTO_SECURE_ZALLOC 27
132OSSL_CORE_MAKE_FUNC(void *,
133 CRYPTO_secure_zalloc, (size_t num, const char *file, int line))
134#define OSSL_FUNC_CRYPTO_SECURE_FREE 28
135OSSL_CORE_MAKE_FUNC(void,
136 CRYPTO_secure_free, (void *ptr, const char *file, int line))
137#define OSSL_FUNC_CRYPTO_SECURE_CLEAR_FREE 29
138OSSL_CORE_MAKE_FUNC(void,
139 CRYPTO_secure_clear_free, (void *ptr, size_t num, const char *file,
140 int line))
141#define OSSL_FUNC_CRYPTO_SECURE_ALLOCATED 30
142OSSL_CORE_MAKE_FUNC(int,
143 CRYPTO_secure_allocated, (const void *ptr))
144#define OSSL_FUNC_OPENSSL_CLEANSE 31
145OSSL_CORE_MAKE_FUNC(void,
146 OPENSSL_cleanse, (void *ptr, size_t len))
147
148/* Bio functions provided by the core */
149#define OSSL_FUNC_BIO_NEW_FILE 40
150#define OSSL_FUNC_BIO_NEW_MEMBUF 41
151#define OSSL_FUNC_BIO_READ_EX 42
152#define OSSL_FUNC_BIO_WRITE_EX 43
153#define OSSL_FUNC_BIO_UP_REF 44
154#define OSSL_FUNC_BIO_FREE 45
155#define OSSL_FUNC_BIO_VPRINTF 46
156#define OSSL_FUNC_BIO_VSNPRINTF 47
157#define OSSL_FUNC_BIO_PUTS 48
158#define OSSL_FUNC_BIO_GETS 49
159#define OSSL_FUNC_BIO_CTRL 50
160
161
162OSSL_CORE_MAKE_FUNC(OSSL_CORE_BIO *, BIO_new_file, (const char *filename,
163 const char *mode))
164OSSL_CORE_MAKE_FUNC(OSSL_CORE_BIO *, BIO_new_membuf, (const void *buf, int len))
165OSSL_CORE_MAKE_FUNC(int, BIO_read_ex, (OSSL_CORE_BIO *bio, void *data,
166 size_t data_len, size_t *bytes_read))
167OSSL_CORE_MAKE_FUNC(int, BIO_write_ex, (OSSL_CORE_BIO *bio, const void *data,
168 size_t data_len, size_t *written))
169OSSL_CORE_MAKE_FUNC(int, BIO_gets, (OSSL_CORE_BIO *bio, char *buf, int size))
170OSSL_CORE_MAKE_FUNC(int, BIO_puts, (OSSL_CORE_BIO *bio, const char *str))
171OSSL_CORE_MAKE_FUNC(int, BIO_up_ref, (OSSL_CORE_BIO *bio))
172OSSL_CORE_MAKE_FUNC(int, BIO_free, (OSSL_CORE_BIO *bio))
173OSSL_CORE_MAKE_FUNC(int, BIO_vprintf, (OSSL_CORE_BIO *bio, const char *format,
174 va_list args))
175OSSL_CORE_MAKE_FUNC(int, BIO_vsnprintf,
176 (char *buf, size_t n, const char *fmt, va_list args))
177OSSL_CORE_MAKE_FUNC(int, BIO_ctrl, (OSSL_CORE_BIO *bio,
178 int cmd, long num, void *ptr))
179
180/* New seeding functions prototypes with the 101-104 series */
181#define OSSL_FUNC_CLEANUP_USER_ENTROPY 96
182#define OSSL_FUNC_CLEANUP_USER_NONCE 97
183#define OSSL_FUNC_GET_USER_ENTROPY 98
184#define OSSL_FUNC_GET_USER_NONCE 99
185
186#define OSSL_FUNC_INDICATOR_CB 95
187OSSL_CORE_MAKE_FUNC(void, indicator_cb, (OPENSSL_CORE_CTX *ctx,
188 OSSL_INDICATOR_CALLBACK **cb))
189#define OSSL_FUNC_SELF_TEST_CB 100
190OSSL_CORE_MAKE_FUNC(void, self_test_cb, (OPENSSL_CORE_CTX *ctx, OSSL_CALLBACK **cb,
191 void **cbarg))
192
193/* Functions to get seed material from the operating system */
194#define OSSL_FUNC_GET_ENTROPY 101
195#define OSSL_FUNC_CLEANUP_ENTROPY 102
196#define OSSL_FUNC_GET_NONCE 103
197#define OSSL_FUNC_CLEANUP_NONCE 104
198OSSL_CORE_MAKE_FUNC(size_t, get_entropy, (const OSSL_CORE_HANDLE *handle,
199 unsigned char **pout, int entropy,
200 size_t min_len, size_t max_len))
201OSSL_CORE_MAKE_FUNC(size_t, get_user_entropy, (const OSSL_CORE_HANDLE *handle,
202 unsigned char **pout, int entropy,
203 size_t min_len, size_t max_len))
204OSSL_CORE_MAKE_FUNC(void, cleanup_entropy, (const OSSL_CORE_HANDLE *handle,
205 unsigned char *buf, size_t len))
206OSSL_CORE_MAKE_FUNC(void, cleanup_user_entropy, (const OSSL_CORE_HANDLE *handle,
207 unsigned char *buf, size_t len))
208OSSL_CORE_MAKE_FUNC(size_t, get_nonce, (const OSSL_CORE_HANDLE *handle,
209 unsigned char **pout, size_t min_len,
210 size_t max_len, const void *salt,
211 size_t salt_len))
212OSSL_CORE_MAKE_FUNC(size_t, get_user_nonce, (const OSSL_CORE_HANDLE *handle,
213 unsigned char **pout, size_t min_len,
214 size_t max_len, const void *salt,
215 size_t salt_len))
216OSSL_CORE_MAKE_FUNC(void, cleanup_nonce, (const OSSL_CORE_HANDLE *handle,
217 unsigned char *buf, size_t len))
218OSSL_CORE_MAKE_FUNC(void, cleanup_user_nonce, (const OSSL_CORE_HANDLE *handle,
219 unsigned char *buf, size_t len))
220
221/* Functions to access the core's providers */
222#define OSSL_FUNC_PROVIDER_REGISTER_CHILD_CB 105
223#define OSSL_FUNC_PROVIDER_DEREGISTER_CHILD_CB 106
224#define OSSL_FUNC_PROVIDER_NAME 107
225#define OSSL_FUNC_PROVIDER_GET0_PROVIDER_CTX 108
226#define OSSL_FUNC_PROVIDER_GET0_DISPATCH 109
227#define OSSL_FUNC_PROVIDER_UP_REF 110
228#define OSSL_FUNC_PROVIDER_FREE 111
229
230OSSL_CORE_MAKE_FUNC(int, provider_register_child_cb,
231 (const OSSL_CORE_HANDLE *handle,
232 int (*create_cb)(const OSSL_CORE_HANDLE *provider, void *cbdata),
233 int (*remove_cb)(const OSSL_CORE_HANDLE *provider, void *cbdata),
234 int (*global_props_cb)(const char *props, void *cbdata),
235 void *cbdata))
236OSSL_CORE_MAKE_FUNC(void, provider_deregister_child_cb,
237 (const OSSL_CORE_HANDLE *handle))
238OSSL_CORE_MAKE_FUNC(const char *, provider_name,
239 (const OSSL_CORE_HANDLE *prov))
240OSSL_CORE_MAKE_FUNC(void *, provider_get0_provider_ctx,
241 (const OSSL_CORE_HANDLE *prov))
242OSSL_CORE_MAKE_FUNC(const OSSL_DISPATCH *, provider_get0_dispatch,
243 (const OSSL_CORE_HANDLE *prov))
244OSSL_CORE_MAKE_FUNC(int, provider_up_ref,
245 (const OSSL_CORE_HANDLE *prov, int activate))
246OSSL_CORE_MAKE_FUNC(int, provider_free,
247 (const OSSL_CORE_HANDLE *prov, int deactivate))
248
249/* Functions provided by the provider to the Core, reserved numbers 1024-1535 */
250# define OSSL_FUNC_PROVIDER_TEARDOWN 1024
251OSSL_CORE_MAKE_FUNC(void,provider_teardown,(void *provctx))
252# define OSSL_FUNC_PROVIDER_GETTABLE_PARAMS 1025
253OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *,
254 provider_gettable_params,(void *provctx))
255# define OSSL_FUNC_PROVIDER_GET_PARAMS 1026
256OSSL_CORE_MAKE_FUNC(int,provider_get_params,(void *provctx,
257 OSSL_PARAM params[]))
258# define OSSL_FUNC_PROVIDER_QUERY_OPERATION 1027
259OSSL_CORE_MAKE_FUNC(const OSSL_ALGORITHM *,provider_query_operation,
260 (void *provctx, int operation_id, int *no_store))
261# define OSSL_FUNC_PROVIDER_UNQUERY_OPERATION 1028
262OSSL_CORE_MAKE_FUNC(void, provider_unquery_operation,
263 (void *provctx, int operation_id, const OSSL_ALGORITHM *))
264# define OSSL_FUNC_PROVIDER_GET_REASON_STRINGS 1029
265OSSL_CORE_MAKE_FUNC(const OSSL_ITEM *,provider_get_reason_strings,
266 (void *provctx))
267# define OSSL_FUNC_PROVIDER_GET_CAPABILITIES 1030
268OSSL_CORE_MAKE_FUNC(int, provider_get_capabilities, (void *provctx,
269 const char *capability, OSSL_CALLBACK *cb, void *arg))
270# define OSSL_FUNC_PROVIDER_SELF_TEST 1031
271OSSL_CORE_MAKE_FUNC(int, provider_self_test, (void *provctx))
272
273/* Operations */
274
275# define OSSL_OP_DIGEST 1
276# define OSSL_OP_CIPHER 2 /* Symmetric Ciphers */
277# define OSSL_OP_MAC 3
278# define OSSL_OP_KDF 4
279# define OSSL_OP_RAND 5
280# define OSSL_OP_KEYMGMT 10
281# define OSSL_OP_KEYEXCH 11
282# define OSSL_OP_SIGNATURE 12
283# define OSSL_OP_ASYM_CIPHER 13
284# define OSSL_OP_KEM 14
285/* New section for non-EVP operations */
286# define OSSL_OP_ENCODER 20
287# define OSSL_OP_DECODER 21
288# define OSSL_OP_STORE 22
289/* Highest known operation number */
290# define OSSL_OP__HIGHEST 22
291
292/* Digests */
293
294# define OSSL_FUNC_DIGEST_NEWCTX 1
295# define OSSL_FUNC_DIGEST_INIT 2
296# define OSSL_FUNC_DIGEST_UPDATE 3
297# define OSSL_FUNC_DIGEST_FINAL 4
298# define OSSL_FUNC_DIGEST_DIGEST 5
299# define OSSL_FUNC_DIGEST_FREECTX 6
300# define OSSL_FUNC_DIGEST_DUPCTX 7
301# define OSSL_FUNC_DIGEST_GET_PARAMS 8
302# define OSSL_FUNC_DIGEST_SET_CTX_PARAMS 9
303# define OSSL_FUNC_DIGEST_GET_CTX_PARAMS 10
304# define OSSL_FUNC_DIGEST_GETTABLE_PARAMS 11
305# define OSSL_FUNC_DIGEST_SETTABLE_CTX_PARAMS 12
306# define OSSL_FUNC_DIGEST_GETTABLE_CTX_PARAMS 13
307# define OSSL_FUNC_DIGEST_SQUEEZE 14
308
309OSSL_CORE_MAKE_FUNC(void *, digest_newctx, (void *provctx))
310OSSL_CORE_MAKE_FUNC(int, digest_init, (void *dctx, const OSSL_PARAM params[]))
311OSSL_CORE_MAKE_FUNC(int, digest_update,
312 (void *dctx, const unsigned char *in, size_t inl))
313OSSL_CORE_MAKE_FUNC(int, digest_final,
314 (void *dctx,
315 unsigned char *out, size_t *outl, size_t outsz))
316OSSL_CORE_MAKE_FUNC(int, digest_squeeze,
317 (void *dctx,
318 unsigned char *out, size_t *outl, size_t outsz))
319OSSL_CORE_MAKE_FUNC(int, digest_digest,
320 (void *provctx, const unsigned char *in, size_t inl,
321 unsigned char *out, size_t *outl, size_t outsz))
322
323OSSL_CORE_MAKE_FUNC(void, digest_freectx, (void *dctx))
324OSSL_CORE_MAKE_FUNC(void *, digest_dupctx, (void *dctx))
325
326OSSL_CORE_MAKE_FUNC(int, digest_get_params, (OSSL_PARAM params[]))
327OSSL_CORE_MAKE_FUNC(int, digest_set_ctx_params,
328 (void *vctx, const OSSL_PARAM params[]))
329OSSL_CORE_MAKE_FUNC(int, digest_get_ctx_params,
330 (void *vctx, OSSL_PARAM params[]))
331OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, digest_gettable_params,
332 (void *provctx))
333OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, digest_settable_ctx_params,
334 (void *dctx, void *provctx))
335OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, digest_gettable_ctx_params,
336 (void *dctx, void *provctx))
337
338/* Symmetric Ciphers */
339
340# define OSSL_FUNC_CIPHER_NEWCTX 1
341# define OSSL_FUNC_CIPHER_ENCRYPT_INIT 2
342# define OSSL_FUNC_CIPHER_DECRYPT_INIT 3
343# define OSSL_FUNC_CIPHER_UPDATE 4
344# define OSSL_FUNC_CIPHER_FINAL 5
345# define OSSL_FUNC_CIPHER_CIPHER 6
346# define OSSL_FUNC_CIPHER_FREECTX 7
347# define OSSL_FUNC_CIPHER_DUPCTX 8
348# define OSSL_FUNC_CIPHER_GET_PARAMS 9
349# define OSSL_FUNC_CIPHER_GET_CTX_PARAMS 10
350# define OSSL_FUNC_CIPHER_SET_CTX_PARAMS 11
351# define OSSL_FUNC_CIPHER_GETTABLE_PARAMS 12
352# define OSSL_FUNC_CIPHER_GETTABLE_CTX_PARAMS 13
353# define OSSL_FUNC_CIPHER_SETTABLE_CTX_PARAMS 14
354
355OSSL_CORE_MAKE_FUNC(void *, cipher_newctx, (void *provctx))
356OSSL_CORE_MAKE_FUNC(int, cipher_encrypt_init, (void *cctx,
357 const unsigned char *key,
358 size_t keylen,
359 const unsigned char *iv,
360 size_t ivlen,
361 const OSSL_PARAM params[]))
362OSSL_CORE_MAKE_FUNC(int, cipher_decrypt_init, (void *cctx,
363 const unsigned char *key,
364 size_t keylen,
365 const unsigned char *iv,
366 size_t ivlen,
367 const OSSL_PARAM params[]))
368OSSL_CORE_MAKE_FUNC(int, cipher_update,
369 (void *cctx,
370 unsigned char *out, size_t *outl, size_t outsize,
371 const unsigned char *in, size_t inl))
372OSSL_CORE_MAKE_FUNC(int, cipher_final,
373 (void *cctx,
374 unsigned char *out, size_t *outl, size_t outsize))
375OSSL_CORE_MAKE_FUNC(int, cipher_cipher,
376 (void *cctx,
377 unsigned char *out, size_t *outl, size_t outsize,
378 const unsigned char *in, size_t inl))
379OSSL_CORE_MAKE_FUNC(void, cipher_freectx, (void *cctx))
380OSSL_CORE_MAKE_FUNC(void *, cipher_dupctx, (void *cctx))
381OSSL_CORE_MAKE_FUNC(int, cipher_get_params, (OSSL_PARAM params[]))
382OSSL_CORE_MAKE_FUNC(int, cipher_get_ctx_params, (void *cctx,
383 OSSL_PARAM params[]))
384OSSL_CORE_MAKE_FUNC(int, cipher_set_ctx_params, (void *cctx,
385 const OSSL_PARAM params[]))
386OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, cipher_gettable_params,
387 (void *provctx))
388OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, cipher_settable_ctx_params,
389 (void *cctx, void *provctx))
390OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, cipher_gettable_ctx_params,
391 (void *cctx, void *provctx))
392
393/* MACs */
394
395# define OSSL_FUNC_MAC_NEWCTX 1
396# define OSSL_FUNC_MAC_DUPCTX 2
397# define OSSL_FUNC_MAC_FREECTX 3
398# define OSSL_FUNC_MAC_INIT 4
399# define OSSL_FUNC_MAC_UPDATE 5
400# define OSSL_FUNC_MAC_FINAL 6
401# define OSSL_FUNC_MAC_GET_PARAMS 7
402# define OSSL_FUNC_MAC_GET_CTX_PARAMS 8
403# define OSSL_FUNC_MAC_SET_CTX_PARAMS 9
404# define OSSL_FUNC_MAC_GETTABLE_PARAMS 10
405# define OSSL_FUNC_MAC_GETTABLE_CTX_PARAMS 11
406# define OSSL_FUNC_MAC_SETTABLE_CTX_PARAMS 12
407
408OSSL_CORE_MAKE_FUNC(void *, mac_newctx, (void *provctx))
409OSSL_CORE_MAKE_FUNC(void *, mac_dupctx, (void *src))
410OSSL_CORE_MAKE_FUNC(void, mac_freectx, (void *mctx))
411OSSL_CORE_MAKE_FUNC(int, mac_init, (void *mctx, const unsigned char *key,
412 size_t keylen, const OSSL_PARAM params[]))
413OSSL_CORE_MAKE_FUNC(int, mac_update,
414 (void *mctx, const unsigned char *in, size_t inl))
415OSSL_CORE_MAKE_FUNC(int, mac_final,
416 (void *mctx,
417 unsigned char *out, size_t *outl, size_t outsize))
418OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, mac_gettable_params, (void *provctx))
419OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, mac_gettable_ctx_params,
420 (void *mctx, void *provctx))
421OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, mac_settable_ctx_params,
422 (void *mctx, void *provctx))
423OSSL_CORE_MAKE_FUNC(int, mac_get_params, (OSSL_PARAM params[]))
424OSSL_CORE_MAKE_FUNC(int, mac_get_ctx_params,
425 (void *mctx, OSSL_PARAM params[]))
426OSSL_CORE_MAKE_FUNC(int, mac_set_ctx_params,
427 (void *mctx, const OSSL_PARAM params[]))
428
429/* KDFs and PRFs */
430
431# define OSSL_FUNC_KDF_NEWCTX 1
432# define OSSL_FUNC_KDF_DUPCTX 2
433# define OSSL_FUNC_KDF_FREECTX 3
434# define OSSL_FUNC_KDF_RESET 4
435# define OSSL_FUNC_KDF_DERIVE 5
436# define OSSL_FUNC_KDF_GETTABLE_PARAMS 6
437# define OSSL_FUNC_KDF_GETTABLE_CTX_PARAMS 7
438# define OSSL_FUNC_KDF_SETTABLE_CTX_PARAMS 8
439# define OSSL_FUNC_KDF_GET_PARAMS 9
440# define OSSL_FUNC_KDF_GET_CTX_PARAMS 10
441# define OSSL_FUNC_KDF_SET_CTX_PARAMS 11
442
443OSSL_CORE_MAKE_FUNC(void *, kdf_newctx, (void *provctx))
444OSSL_CORE_MAKE_FUNC(void *, kdf_dupctx, (void *src))
445OSSL_CORE_MAKE_FUNC(void, kdf_freectx, (void *kctx))
446OSSL_CORE_MAKE_FUNC(void, kdf_reset, (void *kctx))
447OSSL_CORE_MAKE_FUNC(int, kdf_derive, (void *kctx, unsigned char *key,
448 size_t keylen, const OSSL_PARAM params[]))
449OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, kdf_gettable_params, (void *provctx))
450OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, kdf_gettable_ctx_params,
451 (void *kctx, void *provctx))
452OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, kdf_settable_ctx_params,
453 (void *kctx, void *provctx))
454OSSL_CORE_MAKE_FUNC(int, kdf_get_params, (OSSL_PARAM params[]))
455OSSL_CORE_MAKE_FUNC(int, kdf_get_ctx_params,
456 (void *kctx, OSSL_PARAM params[]))
457OSSL_CORE_MAKE_FUNC(int, kdf_set_ctx_params,
458 (void *kctx, const OSSL_PARAM params[]))
459
460/* RAND */
461
462# define OSSL_FUNC_RAND_NEWCTX 1
463# define OSSL_FUNC_RAND_FREECTX 2
464# define OSSL_FUNC_RAND_INSTANTIATE 3
465# define OSSL_FUNC_RAND_UNINSTANTIATE 4
466# define OSSL_FUNC_RAND_GENERATE 5
467# define OSSL_FUNC_RAND_RESEED 6
468# define OSSL_FUNC_RAND_NONCE 7
469# define OSSL_FUNC_RAND_ENABLE_LOCKING 8
470# define OSSL_FUNC_RAND_LOCK 9
471# define OSSL_FUNC_RAND_UNLOCK 10
472# define OSSL_FUNC_RAND_GETTABLE_PARAMS 11
473# define OSSL_FUNC_RAND_GETTABLE_CTX_PARAMS 12
474# define OSSL_FUNC_RAND_SETTABLE_CTX_PARAMS 13
475# define OSSL_FUNC_RAND_GET_PARAMS 14
476# define OSSL_FUNC_RAND_GET_CTX_PARAMS 15
477# define OSSL_FUNC_RAND_SET_CTX_PARAMS 16
478# define OSSL_FUNC_RAND_VERIFY_ZEROIZATION 17
479# define OSSL_FUNC_RAND_GET_SEED 18
480# define OSSL_FUNC_RAND_CLEAR_SEED 19
481
482OSSL_CORE_MAKE_FUNC(void *,rand_newctx,
483 (void *provctx, void *parent,
484 const OSSL_DISPATCH *parent_calls))
485OSSL_CORE_MAKE_FUNC(void,rand_freectx, (void *vctx))
486OSSL_CORE_MAKE_FUNC(int,rand_instantiate,
487 (void *vdrbg, unsigned int strength,
488 int prediction_resistance,
489 const unsigned char *pstr, size_t pstr_len,
490 const OSSL_PARAM params[]))
491OSSL_CORE_MAKE_FUNC(int,rand_uninstantiate, (void *vdrbg))
492OSSL_CORE_MAKE_FUNC(int,rand_generate,
493 (void *vctx, unsigned char *out, size_t outlen,
494 unsigned int strength, int prediction_resistance,
495 const unsigned char *addin, size_t addin_len))
496OSSL_CORE_MAKE_FUNC(int,rand_reseed,
497 (void *vctx, int prediction_resistance,
498 const unsigned char *ent, size_t ent_len,
499 const unsigned char *addin, size_t addin_len))
500OSSL_CORE_MAKE_FUNC(size_t,rand_nonce,
501 (void *vctx, unsigned char *out, unsigned int strength,
502 size_t min_noncelen, size_t max_noncelen))
503OSSL_CORE_MAKE_FUNC(int,rand_enable_locking, (void *vctx))
504OSSL_CORE_MAKE_FUNC(int,rand_lock, (void *vctx))
505OSSL_CORE_MAKE_FUNC(void,rand_unlock, (void *vctx))
506OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *,rand_gettable_params, (void *provctx))
507OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *,rand_gettable_ctx_params,
508 (void *vctx, void *provctx))
509OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *,rand_settable_ctx_params,
510 (void *vctx, void *provctx))
511OSSL_CORE_MAKE_FUNC(int,rand_get_params, (OSSL_PARAM params[]))
512OSSL_CORE_MAKE_FUNC(int,rand_get_ctx_params,
513 (void *vctx, OSSL_PARAM params[]))
514OSSL_CORE_MAKE_FUNC(int,rand_set_ctx_params,
515 (void *vctx, const OSSL_PARAM params[]))
516OSSL_CORE_MAKE_FUNC(void,rand_set_callbacks,
517 (void *vctx, OSSL_INOUT_CALLBACK *get_entropy,
518 OSSL_CALLBACK *cleanup_entropy,
519 OSSL_INOUT_CALLBACK *get_nonce,
520 OSSL_CALLBACK *cleanup_nonce, void *arg))
521OSSL_CORE_MAKE_FUNC(int,rand_verify_zeroization,
522 (void *vctx))
523OSSL_CORE_MAKE_FUNC(size_t,rand_get_seed,
524 (void *vctx, unsigned char **buffer,
525 int entropy, size_t min_len, size_t max_len,
526 int prediction_resistance,
527 const unsigned char *adin, size_t adin_len))
528OSSL_CORE_MAKE_FUNC(void,rand_clear_seed,
529 (void *vctx, unsigned char *buffer, size_t b_len))
530
531/*-
532 * Key management
533 *
534 * The Key Management takes care of provider side key objects, and includes
535 * all current functionality to create them, destroy them, set parameters
536 * and key material, etc, essentially everything that manipulates the keys
537 * themselves and their parameters.
538 *
539 * The key objects are commonly referred to as |keydata|, and it MUST be able
540 * to contain parameters if the key has any, the public key and the private
541 * key. All parts are optional, but their presence determines what can be
542 * done with the key object in terms of encryption, signature, and so on.
543 * The assumption from libcrypto is that the key object contains any of the
544 * following data combinations:
545 *
546 * - parameters only
547 * - public key only
548 * - public key + private key
549 * - parameters + public key
550 * - parameters + public key + private key
551 *
552 * What "parameters", "public key" and "private key" means in detail is left
553 * to the implementation. In the case of DH and DSA, they would typically
554 * include domain parameters, while for certain variants of RSA, they would
555 * typically include PSS or OAEP parameters.
556 *
557 * Key objects are created with OSSL_FUNC_keymgmt_new() and destroyed with
558 * OSSL_FUNC_keymgmt_free(). Key objects can have data filled in with
559 * OSSL_FUNC_keymgmt_import().
560 *
561 * Three functions are made available to check what selection of data is
562 * present in a key object: OSSL_FUNC_keymgmt_has_parameters(),
563 * OSSL_FUNC_keymgmt_has_public_key(), and OSSL_FUNC_keymgmt_has_private_key(),
564 */
565
566/* Key data subset selection - individual bits */
567# define OSSL_KEYMGMT_SELECT_PRIVATE_KEY 0x01
568# define OSSL_KEYMGMT_SELECT_PUBLIC_KEY 0x02
569# define OSSL_KEYMGMT_SELECT_DOMAIN_PARAMETERS 0x04
570# define OSSL_KEYMGMT_SELECT_OTHER_PARAMETERS 0x80
571
572/* Key data subset selection - combinations */
573# define OSSL_KEYMGMT_SELECT_ALL_PARAMETERS \
574 ( OSSL_KEYMGMT_SELECT_DOMAIN_PARAMETERS \
575 | OSSL_KEYMGMT_SELECT_OTHER_PARAMETERS)
576# define OSSL_KEYMGMT_SELECT_KEYPAIR \
577 ( OSSL_KEYMGMT_SELECT_PRIVATE_KEY | OSSL_KEYMGMT_SELECT_PUBLIC_KEY )
578# define OSSL_KEYMGMT_SELECT_ALL \
579 ( OSSL_KEYMGMT_SELECT_KEYPAIR | OSSL_KEYMGMT_SELECT_ALL_PARAMETERS )
580
581# define OSSL_KEYMGMT_VALIDATE_FULL_CHECK 0
582# define OSSL_KEYMGMT_VALIDATE_QUICK_CHECK 1
583
584/* Basic key object creation */
585# define OSSL_FUNC_KEYMGMT_NEW 1
586OSSL_CORE_MAKE_FUNC(void *, keymgmt_new, (void *provctx))
587
588/* Generation, a more complex constructor */
589# define OSSL_FUNC_KEYMGMT_GEN_INIT 2
590# define OSSL_FUNC_KEYMGMT_GEN_SET_TEMPLATE 3
591# define OSSL_FUNC_KEYMGMT_GEN_SET_PARAMS 4
592# define OSSL_FUNC_KEYMGMT_GEN_SETTABLE_PARAMS 5
593# define OSSL_FUNC_KEYMGMT_GEN 6
594# define OSSL_FUNC_KEYMGMT_GEN_CLEANUP 7
595# define OSSL_FUNC_KEYMGMT_GEN_GET_PARAMS 15
596# define OSSL_FUNC_KEYMGMT_GEN_GETTABLE_PARAMS 16
597
598OSSL_CORE_MAKE_FUNC(void *, keymgmt_gen_init,
599 (void *provctx, int selection, const OSSL_PARAM params[]))
600OSSL_CORE_MAKE_FUNC(int, keymgmt_gen_set_template,
601 (void *genctx, void *templ))
602OSSL_CORE_MAKE_FUNC(int, keymgmt_gen_set_params,
603 (void *genctx, const OSSL_PARAM params[]))
604OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *,
605 keymgmt_gen_settable_params,
606 (void *genctx, void *provctx))
607OSSL_CORE_MAKE_FUNC(int, keymgmt_gen_get_params,
608 (void *genctx, OSSL_PARAM params[]))
609OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_gen_gettable_params,
610 (void *genctx, void *provctx))
611OSSL_CORE_MAKE_FUNC(void *, keymgmt_gen,
612 (void *genctx, OSSL_CALLBACK *cb, void *cbarg))
613OSSL_CORE_MAKE_FUNC(void, keymgmt_gen_cleanup, (void *genctx))
614
615/* Key loading by object reference */
616# define OSSL_FUNC_KEYMGMT_LOAD 8
617OSSL_CORE_MAKE_FUNC(void *, keymgmt_load,
618 (const void *reference, size_t reference_sz))
619
620/* Basic key object destruction */
621# define OSSL_FUNC_KEYMGMT_FREE 10
622OSSL_CORE_MAKE_FUNC(void, keymgmt_free, (void *keydata))
623
624/* Key object information, with discovery */
625#define OSSL_FUNC_KEYMGMT_GET_PARAMS 11
626#define OSSL_FUNC_KEYMGMT_GETTABLE_PARAMS 12
627OSSL_CORE_MAKE_FUNC(int, keymgmt_get_params,
628 (void *keydata, OSSL_PARAM params[]))
629OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_gettable_params,
630 (void *provctx))
631
632#define OSSL_FUNC_KEYMGMT_SET_PARAMS 13
633#define OSSL_FUNC_KEYMGMT_SETTABLE_PARAMS 14
634OSSL_CORE_MAKE_FUNC(int, keymgmt_set_params,
635 (void *keydata, const OSSL_PARAM params[]))
636OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_settable_params,
637 (void *provctx))
638
639/* Key checks - discovery of supported operations */
640# define OSSL_FUNC_KEYMGMT_QUERY_OPERATION_NAME 20
641OSSL_CORE_MAKE_FUNC(const char *, keymgmt_query_operation_name,
642 (int operation_id))
643
644/* Key checks - key data content checks */
645# define OSSL_FUNC_KEYMGMT_HAS 21
646OSSL_CORE_MAKE_FUNC(int, keymgmt_has, (const void *keydata, int selection))
647
648/* Key checks - validation */
649# define OSSL_FUNC_KEYMGMT_VALIDATE 22
650OSSL_CORE_MAKE_FUNC(int, keymgmt_validate, (const void *keydata, int selection,
651 int checktype))
652
653/* Key checks - matching */
654# define OSSL_FUNC_KEYMGMT_MATCH 23
655OSSL_CORE_MAKE_FUNC(int, keymgmt_match,
656 (const void *keydata1, const void *keydata2,
657 int selection))
658
659/* Import and export functions, with discovery */
660# define OSSL_FUNC_KEYMGMT_IMPORT 40
661# define OSSL_FUNC_KEYMGMT_IMPORT_TYPES 41
662# define OSSL_FUNC_KEYMGMT_EXPORT 42
663# define OSSL_FUNC_KEYMGMT_EXPORT_TYPES 43
664OSSL_CORE_MAKE_FUNC(int, keymgmt_import,
665 (void *keydata, int selection, const OSSL_PARAM params[]))
666OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_import_types,
667 (int selection))
668OSSL_CORE_MAKE_FUNC(int, keymgmt_export,
669 (void *keydata, int selection,
670 OSSL_CALLBACK *param_cb, void *cbarg))
671OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_export_types,
672 (int selection))
673
674/* Dup function, constructor */
675# define OSSL_FUNC_KEYMGMT_DUP 44
676OSSL_CORE_MAKE_FUNC(void *, keymgmt_dup,
677 (const void *keydata_from, int selection))
678
679/* Extended import and export functions */
680# define OSSL_FUNC_KEYMGMT_IMPORT_TYPES_EX 45
681# define OSSL_FUNC_KEYMGMT_EXPORT_TYPES_EX 46
682OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_import_types_ex,
683 (void *provctx, int selection))
684OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_export_types_ex,
685 (void *provctx, int selection))
686
687/* Key Exchange */
688
689# define OSSL_FUNC_KEYEXCH_NEWCTX 1
690# define OSSL_FUNC_KEYEXCH_INIT 2
691# define OSSL_FUNC_KEYEXCH_DERIVE 3
692# define OSSL_FUNC_KEYEXCH_SET_PEER 4
693# define OSSL_FUNC_KEYEXCH_FREECTX 5
694# define OSSL_FUNC_KEYEXCH_DUPCTX 6
695# define OSSL_FUNC_KEYEXCH_SET_CTX_PARAMS 7
696# define OSSL_FUNC_KEYEXCH_SETTABLE_CTX_PARAMS 8
697# define OSSL_FUNC_KEYEXCH_GET_CTX_PARAMS 9
698# define OSSL_FUNC_KEYEXCH_GETTABLE_CTX_PARAMS 10
699
700OSSL_CORE_MAKE_FUNC(void *, keyexch_newctx, (void *provctx))
701OSSL_CORE_MAKE_FUNC(int, keyexch_init, (void *ctx, void *provkey,
702 const OSSL_PARAM params[]))
703OSSL_CORE_MAKE_FUNC(int, keyexch_derive, (void *ctx, unsigned char *secret,
704 size_t *secretlen, size_t outlen))
705OSSL_CORE_MAKE_FUNC(int, keyexch_set_peer, (void *ctx, void *provkey))
706OSSL_CORE_MAKE_FUNC(void, keyexch_freectx, (void *ctx))
707OSSL_CORE_MAKE_FUNC(void *, keyexch_dupctx, (void *ctx))
708OSSL_CORE_MAKE_FUNC(int, keyexch_set_ctx_params, (void *ctx,
709 const OSSL_PARAM params[]))
710OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keyexch_settable_ctx_params,
711 (void *ctx, void *provctx))
712OSSL_CORE_MAKE_FUNC(int, keyexch_get_ctx_params, (void *ctx,
713 OSSL_PARAM params[]))
714OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keyexch_gettable_ctx_params,
715 (void *ctx, void *provctx))
716
717/* Signature */
718
719# define OSSL_FUNC_SIGNATURE_NEWCTX 1
720# define OSSL_FUNC_SIGNATURE_SIGN_INIT 2
721# define OSSL_FUNC_SIGNATURE_SIGN 3
722# define OSSL_FUNC_SIGNATURE_VERIFY_INIT 4
723# define OSSL_FUNC_SIGNATURE_VERIFY 5
724# define OSSL_FUNC_SIGNATURE_VERIFY_RECOVER_INIT 6
725# define OSSL_FUNC_SIGNATURE_VERIFY_RECOVER 7
726# define OSSL_FUNC_SIGNATURE_DIGEST_SIGN_INIT 8
727# define OSSL_FUNC_SIGNATURE_DIGEST_SIGN_UPDATE 9
728# define OSSL_FUNC_SIGNATURE_DIGEST_SIGN_FINAL 10
729# define OSSL_FUNC_SIGNATURE_DIGEST_SIGN 11
730# define OSSL_FUNC_SIGNATURE_DIGEST_VERIFY_INIT 12
731# define OSSL_FUNC_SIGNATURE_DIGEST_VERIFY_UPDATE 13
732# define OSSL_FUNC_SIGNATURE_DIGEST_VERIFY_FINAL 14
733# define OSSL_FUNC_SIGNATURE_DIGEST_VERIFY 15
734# define OSSL_FUNC_SIGNATURE_FREECTX 16
735# define OSSL_FUNC_SIGNATURE_DUPCTX 17
736# define OSSL_FUNC_SIGNATURE_GET_CTX_PARAMS 18
737# define OSSL_FUNC_SIGNATURE_GETTABLE_CTX_PARAMS 19
738# define OSSL_FUNC_SIGNATURE_SET_CTX_PARAMS 20
739# define OSSL_FUNC_SIGNATURE_SETTABLE_CTX_PARAMS 21
740# define OSSL_FUNC_SIGNATURE_GET_CTX_MD_PARAMS 22
741# define OSSL_FUNC_SIGNATURE_GETTABLE_CTX_MD_PARAMS 23
742# define OSSL_FUNC_SIGNATURE_SET_CTX_MD_PARAMS 24
743# define OSSL_FUNC_SIGNATURE_SETTABLE_CTX_MD_PARAMS 25
744# define OSSL_FUNC_SIGNATURE_QUERY_KEY_TYPES 26
745# define OSSL_FUNC_SIGNATURE_SIGN_MESSAGE_INIT 27
746# define OSSL_FUNC_SIGNATURE_SIGN_MESSAGE_UPDATE 28
747# define OSSL_FUNC_SIGNATURE_SIGN_MESSAGE_FINAL 29
748# define OSSL_FUNC_SIGNATURE_VERIFY_MESSAGE_INIT 30
749# define OSSL_FUNC_SIGNATURE_VERIFY_MESSAGE_UPDATE 31
750# define OSSL_FUNC_SIGNATURE_VERIFY_MESSAGE_FINAL 32
751
752OSSL_CORE_MAKE_FUNC(void *, signature_newctx, (void *provctx,
753 const char *propq))
754OSSL_CORE_MAKE_FUNC(int, signature_sign_init, (void *ctx, void *provkey,
755 const OSSL_PARAM params[]))
756OSSL_CORE_MAKE_FUNC(int, signature_sign, (void *ctx, unsigned char *sig,
757 size_t *siglen, size_t sigsize,
758 const unsigned char *tbs,
759 size_t tbslen))
760OSSL_CORE_MAKE_FUNC(int, signature_sign_message_init,
761 (void *ctx, void *provkey, const OSSL_PARAM params[]))
762OSSL_CORE_MAKE_FUNC(int, signature_sign_message_update,
763 (void *ctx, const unsigned char *in, size_t inlen))
764OSSL_CORE_MAKE_FUNC(int, signature_sign_message_final,
765 (void *ctx, unsigned char *sig,
766 size_t *siglen, size_t sigsize))
767OSSL_CORE_MAKE_FUNC(int, signature_verify_init, (void *ctx, void *provkey,
768 const OSSL_PARAM params[]))
769OSSL_CORE_MAKE_FUNC(int, signature_verify, (void *ctx,
770 const unsigned char *sig,
771 size_t siglen,
772 const unsigned char *tbs,
773 size_t tbslen))
774OSSL_CORE_MAKE_FUNC(int, signature_verify_message_init,
775 (void *ctx, void *provkey, const OSSL_PARAM params[]))
776OSSL_CORE_MAKE_FUNC(int, signature_verify_message_update,
777 (void *ctx, const unsigned char *in, size_t inlen))
778/*
779 * signature_verify_final requires that the signature to be verified against
780 * is specified via an OSSL_PARAM.
781 */
782OSSL_CORE_MAKE_FUNC(int, signature_verify_message_final, (void *ctx))
783OSSL_CORE_MAKE_FUNC(int, signature_verify_recover_init,
784 (void *ctx, void *provkey, const OSSL_PARAM params[]))
785OSSL_CORE_MAKE_FUNC(int, signature_verify_recover,
786 (void *ctx, unsigned char *rout, size_t *routlen,
787 size_t routsize, const unsigned char *sig, size_t siglen))
788OSSL_CORE_MAKE_FUNC(int, signature_digest_sign_init,
789 (void *ctx, const char *mdname, void *provkey,
790 const OSSL_PARAM params[]))
791OSSL_CORE_MAKE_FUNC(int, signature_digest_sign_update,
792 (void *ctx, const unsigned char *data, size_t datalen))
793OSSL_CORE_MAKE_FUNC(int, signature_digest_sign_final,
794 (void *ctx, unsigned char *sig, size_t *siglen,
795 size_t sigsize))
796OSSL_CORE_MAKE_FUNC(int, signature_digest_sign,
797 (void *ctx, unsigned char *sigret, size_t *siglen,
798 size_t sigsize, const unsigned char *tbs, size_t tbslen))
799OSSL_CORE_MAKE_FUNC(int, signature_digest_verify_init,
800 (void *ctx, const char *mdname, void *provkey,
801 const OSSL_PARAM params[]))
802OSSL_CORE_MAKE_FUNC(int, signature_digest_verify_update,
803 (void *ctx, const unsigned char *data, size_t datalen))
804OSSL_CORE_MAKE_FUNC(int, signature_digest_verify_final,
805 (void *ctx, const unsigned char *sig, size_t siglen))
806OSSL_CORE_MAKE_FUNC(int, signature_digest_verify,
807 (void *ctx, const unsigned char *sig, size_t siglen,
808 const unsigned char *tbs, size_t tbslen))
809OSSL_CORE_MAKE_FUNC(void, signature_freectx, (void *ctx))
810OSSL_CORE_MAKE_FUNC(void *, signature_dupctx, (void *ctx))
811OSSL_CORE_MAKE_FUNC(int, signature_get_ctx_params,
812 (void *ctx, OSSL_PARAM params[]))
813OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, signature_gettable_ctx_params,
814 (void *ctx, void *provctx))
815OSSL_CORE_MAKE_FUNC(int, signature_set_ctx_params,
816 (void *ctx, const OSSL_PARAM params[]))
817OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, signature_settable_ctx_params,
818 (void *ctx, void *provctx))
819OSSL_CORE_MAKE_FUNC(int, signature_get_ctx_md_params,
820 (void *ctx, OSSL_PARAM params[]))
821OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, signature_gettable_ctx_md_params,
822 (void *ctx))
823OSSL_CORE_MAKE_FUNC(int, signature_set_ctx_md_params,
824 (void *ctx, const OSSL_PARAM params[]))
825OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, signature_settable_ctx_md_params,
826 (void *ctx))
827OSSL_CORE_MAKE_FUNC(const char **, signature_query_key_types, (void))
828
829/* Asymmetric Ciphers */
830
831# define OSSL_FUNC_ASYM_CIPHER_NEWCTX 1
832# define OSSL_FUNC_ASYM_CIPHER_ENCRYPT_INIT 2
833# define OSSL_FUNC_ASYM_CIPHER_ENCRYPT 3
834# define OSSL_FUNC_ASYM_CIPHER_DECRYPT_INIT 4
835# define OSSL_FUNC_ASYM_CIPHER_DECRYPT 5
836# define OSSL_FUNC_ASYM_CIPHER_FREECTX 6
837# define OSSL_FUNC_ASYM_CIPHER_DUPCTX 7
838# define OSSL_FUNC_ASYM_CIPHER_GET_CTX_PARAMS 8
839# define OSSL_FUNC_ASYM_CIPHER_GETTABLE_CTX_PARAMS 9
840# define OSSL_FUNC_ASYM_CIPHER_SET_CTX_PARAMS 10
841# define OSSL_FUNC_ASYM_CIPHER_SETTABLE_CTX_PARAMS 11
842
843OSSL_CORE_MAKE_FUNC(void *, asym_cipher_newctx, (void *provctx))
844OSSL_CORE_MAKE_FUNC(int, asym_cipher_encrypt_init, (void *ctx, void *provkey,
845 const OSSL_PARAM params[]))
846OSSL_CORE_MAKE_FUNC(int, asym_cipher_encrypt, (void *ctx, unsigned char *out,
847 size_t *outlen,
848 size_t outsize,
849 const unsigned char *in,
850 size_t inlen))
851OSSL_CORE_MAKE_FUNC(int, asym_cipher_decrypt_init, (void *ctx, void *provkey,
852 const OSSL_PARAM params[]))
853OSSL_CORE_MAKE_FUNC(int, asym_cipher_decrypt, (void *ctx, unsigned char *out,
854 size_t *outlen,
855 size_t outsize,
856 const unsigned char *in,
857 size_t inlen))
858OSSL_CORE_MAKE_FUNC(void, asym_cipher_freectx, (void *ctx))
859OSSL_CORE_MAKE_FUNC(void *, asym_cipher_dupctx, (void *ctx))
860OSSL_CORE_MAKE_FUNC(int, asym_cipher_get_ctx_params,
861 (void *ctx, OSSL_PARAM params[]))
862OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, asym_cipher_gettable_ctx_params,
863 (void *ctx, void *provctx))
864OSSL_CORE_MAKE_FUNC(int, asym_cipher_set_ctx_params,
865 (void *ctx, const OSSL_PARAM params[]))
866OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, asym_cipher_settable_ctx_params,
867 (void *ctx, void *provctx))
868
869/* Asymmetric Key encapsulation */
870# define OSSL_FUNC_KEM_NEWCTX 1
871# define OSSL_FUNC_KEM_ENCAPSULATE_INIT 2
872# define OSSL_FUNC_KEM_ENCAPSULATE 3
873# define OSSL_FUNC_KEM_DECAPSULATE_INIT 4
874# define OSSL_FUNC_KEM_DECAPSULATE 5
875# define OSSL_FUNC_KEM_FREECTX 6
876# define OSSL_FUNC_KEM_DUPCTX 7
877# define OSSL_FUNC_KEM_GET_CTX_PARAMS 8
878# define OSSL_FUNC_KEM_GETTABLE_CTX_PARAMS 9
879# define OSSL_FUNC_KEM_SET_CTX_PARAMS 10
880# define OSSL_FUNC_KEM_SETTABLE_CTX_PARAMS 11
881# define OSSL_FUNC_KEM_AUTH_ENCAPSULATE_INIT 12
882# define OSSL_FUNC_KEM_AUTH_DECAPSULATE_INIT 13
883
884OSSL_CORE_MAKE_FUNC(void *, kem_newctx, (void *provctx))
885OSSL_CORE_MAKE_FUNC(int, kem_encapsulate_init, (void *ctx, void *provkey,
886 const OSSL_PARAM params[]))
887OSSL_CORE_MAKE_FUNC(int, kem_auth_encapsulate_init, (void *ctx, void *provkey,
888 void *authprivkey,
889 const OSSL_PARAM params[]))
890OSSL_CORE_MAKE_FUNC(int, kem_encapsulate, (void *ctx,
891 unsigned char *out, size_t *outlen,
892 unsigned char *secret,
893 size_t *secretlen))
894OSSL_CORE_MAKE_FUNC(int, kem_decapsulate_init, (void *ctx, void *provkey,
895 const OSSL_PARAM params[]))
896OSSL_CORE_MAKE_FUNC(int, kem_auth_decapsulate_init, (void *ctx, void *provkey,
897 void *authpubkey,
898 const OSSL_PARAM params[]))
899OSSL_CORE_MAKE_FUNC(int, kem_decapsulate, (void *ctx,
900 unsigned char *out, size_t *outlen,
901 const unsigned char *in, size_t inlen))
902OSSL_CORE_MAKE_FUNC(void, kem_freectx, (void *ctx))
903OSSL_CORE_MAKE_FUNC(void *, kem_dupctx, (void *ctx))
904OSSL_CORE_MAKE_FUNC(int, kem_get_ctx_params, (void *ctx, OSSL_PARAM params[]))
905OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, kem_gettable_ctx_params,
906 (void *ctx, void *provctx))
907OSSL_CORE_MAKE_FUNC(int, kem_set_ctx_params,
908 (void *ctx, const OSSL_PARAM params[]))
909OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, kem_settable_ctx_params,
910 (void *ctx, void *provctx))
911
912/* Encoders and decoders */
913# define OSSL_FUNC_ENCODER_NEWCTX 1
914# define OSSL_FUNC_ENCODER_FREECTX 2
915# define OSSL_FUNC_ENCODER_GET_PARAMS 3
916# define OSSL_FUNC_ENCODER_GETTABLE_PARAMS 4
917# define OSSL_FUNC_ENCODER_SET_CTX_PARAMS 5
918# define OSSL_FUNC_ENCODER_SETTABLE_CTX_PARAMS 6
919# define OSSL_FUNC_ENCODER_DOES_SELECTION 10
920# define OSSL_FUNC_ENCODER_ENCODE 11
921# define OSSL_FUNC_ENCODER_IMPORT_OBJECT 20
922# define OSSL_FUNC_ENCODER_FREE_OBJECT 21
923OSSL_CORE_MAKE_FUNC(void *, encoder_newctx, (void *provctx))
924OSSL_CORE_MAKE_FUNC(void, encoder_freectx, (void *ctx))
925OSSL_CORE_MAKE_FUNC(int, encoder_get_params, (OSSL_PARAM params[]))
926OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, encoder_gettable_params,
927 (void *provctx))
928OSSL_CORE_MAKE_FUNC(int, encoder_set_ctx_params,
929 (void *ctx, const OSSL_PARAM params[]))
930OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, encoder_settable_ctx_params,
931 (void *provctx))
932
933OSSL_CORE_MAKE_FUNC(int, encoder_does_selection,
934 (void *provctx, int selection))
935OSSL_CORE_MAKE_FUNC(int, encoder_encode,
936 (void *ctx, OSSL_CORE_BIO *out,
937 const void *obj_raw, const OSSL_PARAM obj_abstract[],
938 int selection,
939 OSSL_PASSPHRASE_CALLBACK *cb, void *cbarg))
940
941OSSL_CORE_MAKE_FUNC(void *, encoder_import_object,
942 (void *ctx, int selection, const OSSL_PARAM params[]))
943OSSL_CORE_MAKE_FUNC(void, encoder_free_object, (void *obj))
944
945# define OSSL_FUNC_DECODER_NEWCTX 1
946# define OSSL_FUNC_DECODER_FREECTX 2
947# define OSSL_FUNC_DECODER_GET_PARAMS 3
948# define OSSL_FUNC_DECODER_GETTABLE_PARAMS 4
949# define OSSL_FUNC_DECODER_SET_CTX_PARAMS 5
950# define OSSL_FUNC_DECODER_SETTABLE_CTX_PARAMS 6
951# define OSSL_FUNC_DECODER_DOES_SELECTION 10
952# define OSSL_FUNC_DECODER_DECODE 11
953# define OSSL_FUNC_DECODER_EXPORT_OBJECT 20
954OSSL_CORE_MAKE_FUNC(void *, decoder_newctx, (void *provctx))
955OSSL_CORE_MAKE_FUNC(void, decoder_freectx, (void *ctx))
956OSSL_CORE_MAKE_FUNC(int, decoder_get_params, (OSSL_PARAM params[]))
957OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, decoder_gettable_params,
958 (void *provctx))
959OSSL_CORE_MAKE_FUNC(int, decoder_set_ctx_params,
960 (void *ctx, const OSSL_PARAM params[]))
961OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, decoder_settable_ctx_params,
962 (void *provctx))
963
964OSSL_CORE_MAKE_FUNC(int, decoder_does_selection,
965 (void *provctx, int selection))
966OSSL_CORE_MAKE_FUNC(int, decoder_decode,
967 (void *ctx, OSSL_CORE_BIO *in, int selection,
968 OSSL_CALLBACK *data_cb, void *data_cbarg,
969 OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg))
970OSSL_CORE_MAKE_FUNC(int, decoder_export_object,
971 (void *ctx, const void *objref, size_t objref_sz,
972 OSSL_CALLBACK *export_cb, void *export_cbarg))
973
974/*-
975 * Store
976 *
977 * Objects are scanned by using the 'open', 'load', 'eof' and 'close'
978 * functions, which implement an OSSL_STORE loader.
979 *
980 * store_load() works in a way that's very similar to the decoders, in
981 * that they pass an abstract object through a callback, either as a DER
982 * octet string or as an object reference, which libcrypto will have to
983 * deal with.
984 */
985
986#define OSSL_FUNC_STORE_OPEN 1
987#define OSSL_FUNC_STORE_ATTACH 2
988#define OSSL_FUNC_STORE_SETTABLE_CTX_PARAMS 3
989#define OSSL_FUNC_STORE_SET_CTX_PARAMS 4
990#define OSSL_FUNC_STORE_LOAD 5
991#define OSSL_FUNC_STORE_EOF 6
992#define OSSL_FUNC_STORE_CLOSE 7
993#define OSSL_FUNC_STORE_EXPORT_OBJECT 8
994#define OSSL_FUNC_STORE_DELETE 9
995#define OSSL_FUNC_STORE_OPEN_EX 10
996OSSL_CORE_MAKE_FUNC(void *, store_open, (void *provctx, const char *uri))
997OSSL_CORE_MAKE_FUNC(void *, store_attach, (void *provctx, OSSL_CORE_BIO *in))
998OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, store_settable_ctx_params,
999 (void *provctx))
1000OSSL_CORE_MAKE_FUNC(int, store_set_ctx_params,
1001 (void *loaderctx, const OSSL_PARAM params[]))
1002OSSL_CORE_MAKE_FUNC(int, store_load,
1003 (void *loaderctx,
1004 OSSL_CALLBACK *object_cb, void *object_cbarg,
1005 OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg))
1006OSSL_CORE_MAKE_FUNC(int, store_eof, (void *loaderctx))
1007OSSL_CORE_MAKE_FUNC(int, store_close, (void *loaderctx))
1008OSSL_CORE_MAKE_FUNC(int, store_export_object,
1009 (void *loaderctx, const void *objref, size_t objref_sz,
1010 OSSL_CALLBACK *export_cb, void *export_cbarg))
1011OSSL_CORE_MAKE_FUNC(int, store_delete,
1012 (void *provctx, const char *uri, const OSSL_PARAM params[],
1013 OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg))
1014OSSL_CORE_MAKE_FUNC(void *, store_open_ex,
1015 (void *provctx, const char *uri, const OSSL_PARAM params[],
1016 OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg))
1017
1018# ifdef __cplusplus
1019}
1020# endif
1021
1022#endif
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette