include: crypto: clean out api.h

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
Closes #12901
This commit is contained in:
наб 2021-12-25 04:00:34 +01:00 committed by Brian Behlendorf
parent 42dbc2025a
commit 15ec086396
3 changed files with 3 additions and 86 deletions

View File

@ -33,21 +33,14 @@ extern "C" {
#include <sys/zfs_context.h> #include <sys/zfs_context.h>
#include <sys/crypto/common.h> #include <sys/crypto/common.h>
typedef long crypto_req_id_t;
typedef void *crypto_bc_t;
typedef void *crypto_context_t; typedef void *crypto_context_t;
typedef void *crypto_ctx_template_t; typedef void *crypto_ctx_template_t;
typedef struct { typedef struct {} crypto_call_req_t;
void (*cr_callback_func)(void *, int);
void *cr_callback_arg;
crypto_req_id_t cr_reqid;
} crypto_call_req_t;
/* /*
* Returns the mechanism type corresponding to a mechanism name. * Returns the mechanism type corresponding to a mechanism name.
*/ */
#define CRYPTO_MECH_INVALID ((uint64_t)-1) #define CRYPTO_MECH_INVALID ((uint64_t)-1)
extern crypto_mech_type_t crypto_mech2id(const char *name); extern crypto_mech_type_t crypto_mech2id(const char *name);
@ -70,87 +63,15 @@ extern int crypto_mac_update(crypto_context_t ctx, crypto_data_t *data);
extern int crypto_mac_final(crypto_context_t ctx, crypto_data_t *data); extern int crypto_mac_final(crypto_context_t ctx, crypto_data_t *data);
/* /*
* Single and multi-part encryption operations. * Single-part encryption/decryption operations.
*/ */
extern int crypto_encrypt(crypto_mechanism_t *mech, crypto_data_t *plaintext, extern int crypto_encrypt(crypto_mechanism_t *mech, crypto_data_t *plaintext,
crypto_key_t *key, crypto_ctx_template_t tmpl, crypto_data_t *ciphertext, crypto_key_t *key, crypto_ctx_template_t tmpl, crypto_data_t *ciphertext,
crypto_call_req_t *cr); crypto_call_req_t *cr);
/*
* Single and multi-part decryption operations.
*/
extern int crypto_decrypt(crypto_mechanism_t *mech, crypto_data_t *ciphertext, extern int crypto_decrypt(crypto_mechanism_t *mech, crypto_data_t *ciphertext,
crypto_key_t *key, crypto_ctx_template_t tmpl, crypto_data_t *plaintext, crypto_key_t *key, crypto_ctx_template_t tmpl, crypto_data_t *plaintext,
crypto_call_req_t *cr); crypto_call_req_t *cr);
/*
* A kernel consumer can request to be notified when some particular event
* occurs. The valid events, callback function type, and functions to
* be called to register or unregister for notification are defined below.
*/
#define CRYPTO_EVENT_MECHS_CHANGED 0x00000001
#define CRYPTO_EVENT_PROVIDER_REGISTERED 0x00000002
#define CRYPTO_EVENT_PROVIDER_UNREGISTERED 0x00000004
typedef enum {
CRYPTO_MECH_ADDED = 1,
CRYPTO_MECH_REMOVED
} crypto_event_change_t;
/* The event_arg argument structure for CRYPTO_EVENT_PROVIDERS_CHANGE event */
typedef struct crypto_notify_event_change {
crypto_mech_name_t ec_mech_name;
crypto_event_change_t ec_change;
} crypto_notify_event_change_t;
typedef void *crypto_notify_handle_t;
typedef void (*crypto_notify_callback_t)(uint32_t event_mask, void *event_arg);
extern crypto_notify_handle_t crypto_notify_events(
crypto_notify_callback_t nf, uint32_t event_mask);
extern void crypto_unnotify_events(crypto_notify_handle_t);
/*
* crypto_bufcall(9F) group of routines.
*/
extern crypto_bc_t crypto_bufcall_alloc(void);
extern int crypto_bufcall_free(crypto_bc_t bc);
extern int crypto_bufcall(crypto_bc_t bc, void (*func)(void *arg), void *arg);
extern int crypto_unbufcall(crypto_bc_t bc);
/*
* To obtain the list of key size ranges supported by a mechanism.
*/
#define CRYPTO_MECH_USAGE_ENCRYPT 0x00000001
#define CRYPTO_MECH_USAGE_DECRYPT 0x00000002
#define CRYPTO_MECH_USAGE_MAC 0x00000004
typedef uint32_t crypto_mech_usage_t;
typedef struct crypto_mechanism_info {
size_t mi_min_key_size;
size_t mi_max_key_size;
crypto_keysize_unit_t mi_keysize_unit; /* for mi_xxx_key_size */
crypto_mech_usage_t mi_usage;
} crypto_mechanism_info_t;
#ifdef _SYSCALL32
typedef struct crypto_mechanism_info32 {
size32_t mi_min_key_size;
size32_t mi_max_key_size;
crypto_keysize_unit_t mi_keysize_unit; /* for mi_xxx_key_size */
crypto_mech_usage_t mi_usage;
} crypto_mechanism_info32_t;
#endif /* _SYSCALL32 */
extern int crypto_get_all_mech_info(crypto_mech_type_t,
crypto_mechanism_info_t **, uint_t *, int);
extern void crypto_free_all_mech_info(crypto_mechanism_info_t *, uint_t);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@ -93,9 +93,6 @@ typedef uint32_t crypto_keysize_unit_t;
/* /*
* The following bit flags are valid in cm_mech_flags field in * The following bit flags are valid in cm_mech_flags field in
* the crypto_mech_info_t structure of the SPI. * the crypto_mech_info_t structure of the SPI.
*
* Only the first two bit flags are valid in mi_keysize_unit
* field in the crypto_mechanism_info_t structure of the API.
*/ */
#define CRYPTO_KEYSIZE_UNIT_IN_BITS 0x00000001 #define CRYPTO_KEYSIZE_UNIT_IN_BITS 0x00000001
#define CRYPTO_KEYSIZE_UNIT_IN_BYTES 0x00000002 #define CRYPTO_KEYSIZE_UNIT_IN_BYTES 0x00000002

View File

@ -45,8 +45,7 @@
* CRYPTO_INVALID_DATA for bogus 'data' * CRYPTO_INVALID_DATA for bogus 'data'
* CRYPTO_HOST_MEMORY for failure to allocate memory to handle this work. * CRYPTO_HOST_MEMORY for failure to allocate memory to handle this work.
* CRYPTO_INVALID_CONTEXT: Not a valid context. * CRYPTO_INVALID_CONTEXT: Not a valid context.
* CRYPTO_BUSY: Cannot process the request now. Schedule a * CRYPTO_BUSY: Cannot process the request now. Try later.
* crypto_bufcall(), or try later.
* CRYPTO_NOT_SUPPORTED and CRYPTO_MECH_NOT_SUPPORTED: No provider is * CRYPTO_NOT_SUPPORTED and CRYPTO_MECH_NOT_SUPPORTED: No provider is
* capable of a function or a mechanism. * capable of a function or a mechanism.
* CRYPTO_INVALID_KEY: bogus 'key' argument. * CRYPTO_INVALID_KEY: bogus 'key' argument.