mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-11-18 18:31:00 +03:00
112c1bff94
These paths are never exercised, as the parameters given are always different cipher and plaintext `crypto_data_t` pointers. Reviewed-by: Richard Laager <rlaager@wiktel.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Attila Fueloep <attila@fueloep.org> Signed-off-by: Dirkjan Bussink <d.bussink@gmail.com> Closes #9661 Closes #10015
1481 lines
37 KiB
C
1481 lines
37 KiB
C
/*
|
|
* CDDL HEADER START
|
|
*
|
|
* The contents of this file are subject to the terms of the
|
|
* Common Development and Distribution License (the "License").
|
|
* You may not use this file except in compliance with the License.
|
|
*
|
|
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
|
|
* or http://www.opensolaris.org/os/licensing.
|
|
* See the License for the specific language governing permissions
|
|
* and limitations under the License.
|
|
*
|
|
* When distributing Covered Code, include this CDDL HEADER in each
|
|
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
|
|
* If applicable, add the following below this CDDL HEADER, with the
|
|
* fields enclosed by brackets "[]" replaced with your own identifying
|
|
* information: Portions Copyright [yyyy] [name of copyright owner]
|
|
*
|
|
* CDDL HEADER END
|
|
*/
|
|
|
|
/*
|
|
* Copyright 2008 Sun Microsystems, Inc. All rights reserved.
|
|
* Use is subject to license terms.
|
|
*/
|
|
|
|
#ifndef _SYS_CRYPTO_IOCTL_H
|
|
#define _SYS_CRYPTO_IOCTL_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <sys/zfs_context.h>
|
|
#include <sys/crypto/api.h>
|
|
#include <sys/crypto/spi.h>
|
|
#include <sys/crypto/common.h>
|
|
|
|
#define CRYPTO_MAX_ATTRIBUTE_COUNT 128
|
|
|
|
#define CRYPTO_IOFLAGS_RW_SESSION 0x00000001
|
|
|
|
#define CRYPTO(x) (('y' << 8) | (x))
|
|
|
|
#define MAX_NUM_THRESHOLD 7
|
|
|
|
/* the PKCS11 Mechanisms */
|
|
#define CKM_RC4 0x00000111
|
|
#define CKM_DES3_ECB 0x00000132
|
|
#define CKM_DES3_CBC 0x00000133
|
|
#define CKM_MD5 0x00000210
|
|
#define CKM_SHA_1 0x00000220
|
|
#define CKM_AES_ECB 0x00001081
|
|
#define CKM_AES_CBC 0x00001082
|
|
|
|
/*
|
|
* General Purpose Ioctls
|
|
*/
|
|
|
|
typedef struct fl_mechs_threshold {
|
|
int mech_type;
|
|
uint32_t mech_threshold;
|
|
} fl_mechs_threshold_t;
|
|
|
|
typedef struct crypto_function_list {
|
|
boolean_t fl_digest_init;
|
|
boolean_t fl_digest;
|
|
boolean_t fl_digest_update;
|
|
boolean_t fl_digest_key;
|
|
boolean_t fl_digest_final;
|
|
|
|
boolean_t fl_encrypt_init;
|
|
boolean_t fl_encrypt;
|
|
boolean_t fl_encrypt_update;
|
|
boolean_t fl_encrypt_final;
|
|
|
|
boolean_t fl_decrypt_init;
|
|
boolean_t fl_decrypt;
|
|
boolean_t fl_decrypt_update;
|
|
boolean_t fl_decrypt_final;
|
|
|
|
boolean_t fl_mac_init;
|
|
boolean_t fl_mac;
|
|
boolean_t fl_mac_update;
|
|
boolean_t fl_mac_final;
|
|
|
|
boolean_t fl_sign_init;
|
|
boolean_t fl_sign;
|
|
boolean_t fl_sign_update;
|
|
boolean_t fl_sign_final;
|
|
boolean_t fl_sign_recover_init;
|
|
boolean_t fl_sign_recover;
|
|
|
|
boolean_t fl_verify_init;
|
|
boolean_t fl_verify;
|
|
boolean_t fl_verify_update;
|
|
boolean_t fl_verify_final;
|
|
boolean_t fl_verify_recover_init;
|
|
boolean_t fl_verify_recover;
|
|
|
|
boolean_t fl_digest_encrypt_update;
|
|
boolean_t fl_decrypt_digest_update;
|
|
boolean_t fl_sign_encrypt_update;
|
|
boolean_t fl_decrypt_verify_update;
|
|
|
|
boolean_t fl_seed_random;
|
|
boolean_t fl_generate_random;
|
|
|
|
boolean_t fl_session_open;
|
|
boolean_t fl_session_close;
|
|
boolean_t fl_session_login;
|
|
boolean_t fl_session_logout;
|
|
|
|
boolean_t fl_object_create;
|
|
boolean_t fl_object_copy;
|
|
boolean_t fl_object_destroy;
|
|
boolean_t fl_object_get_size;
|
|
boolean_t fl_object_get_attribute_value;
|
|
boolean_t fl_object_set_attribute_value;
|
|
boolean_t fl_object_find_init;
|
|
boolean_t fl_object_find;
|
|
boolean_t fl_object_find_final;
|
|
|
|
boolean_t fl_key_generate;
|
|
boolean_t fl_key_generate_pair;
|
|
boolean_t fl_key_wrap;
|
|
boolean_t fl_key_unwrap;
|
|
boolean_t fl_key_derive;
|
|
|
|
boolean_t fl_init_token;
|
|
boolean_t fl_init_pin;
|
|
boolean_t fl_set_pin;
|
|
|
|
boolean_t prov_is_limited;
|
|
uint32_t prov_hash_threshold;
|
|
uint32_t prov_hash_limit;
|
|
|
|
int total_threshold_count;
|
|
fl_mechs_threshold_t fl_threshold[MAX_NUM_THRESHOLD];
|
|
} crypto_function_list_t;
|
|
|
|
typedef struct crypto_get_function_list {
|
|
uint_t fl_return_value;
|
|
crypto_provider_id_t fl_provider_id;
|
|
crypto_function_list_t fl_list;
|
|
} crypto_get_function_list_t;
|
|
|
|
typedef struct crypto_get_mechanism_number {
|
|
uint_t pn_return_value;
|
|
caddr_t pn_mechanism_string;
|
|
size_t pn_mechanism_len;
|
|
crypto_mech_type_t pn_internal_number;
|
|
} crypto_get_mechanism_number_t;
|
|
|
|
#ifdef _KERNEL
|
|
#ifdef _SYSCALL32
|
|
|
|
#if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
|
|
#pragma pack(4)
|
|
#endif
|
|
|
|
typedef struct crypto_get_mechanism_number32 {
|
|
uint32_t pn_return_value;
|
|
caddr32_t pn_mechanism_string;
|
|
size32_t pn_mechanism_len;
|
|
crypto_mech_type_t pn_internal_number;
|
|
} crypto_get_mechanism_number32_t;
|
|
|
|
#if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
|
|
#pragma pack()
|
|
#endif
|
|
|
|
#endif /* _SYSCALL32 */
|
|
#endif /* _KERNEL */
|
|
|
|
#define CRYPTO_GET_FUNCTION_LIST CRYPTO(20)
|
|
#define CRYPTO_GET_MECHANISM_NUMBER CRYPTO(21)
|
|
|
|
/*
|
|
* Session Ioctls
|
|
*/
|
|
|
|
typedef uint32_t crypto_flags_t;
|
|
|
|
typedef struct crypto_open_session {
|
|
uint_t os_return_value;
|
|
crypto_session_id_t os_session;
|
|
crypto_flags_t os_flags;
|
|
crypto_provider_id_t os_provider_id;
|
|
} crypto_open_session_t;
|
|
|
|
typedef struct crypto_close_session {
|
|
uint_t cs_return_value;
|
|
crypto_session_id_t cs_session;
|
|
} crypto_close_session_t;
|
|
|
|
typedef struct crypto_close_all_sessions {
|
|
uint_t as_return_value;
|
|
crypto_provider_id_t as_provider_id;
|
|
} crypto_close_all_sessions_t;
|
|
|
|
#define CRYPTO_OPEN_SESSION CRYPTO(30)
|
|
#define CRYPTO_CLOSE_SESSION CRYPTO(31)
|
|
#define CRYPTO_CLOSE_ALL_SESSIONS CRYPTO(32)
|
|
|
|
/*
|
|
* Login Ioctls
|
|
*/
|
|
typedef struct crypto_login {
|
|
uint_t co_return_value;
|
|
crypto_session_id_t co_session;
|
|
uint_t co_user_type;
|
|
uint_t co_pin_len;
|
|
caddr_t co_pin;
|
|
} crypto_login_t;
|
|
|
|
typedef struct crypto_logout {
|
|
uint_t cl_return_value;
|
|
crypto_session_id_t cl_session;
|
|
} crypto_logout_t;
|
|
|
|
#ifdef _KERNEL
|
|
#ifdef _SYSCALL32
|
|
|
|
typedef struct crypto_login32 {
|
|
uint32_t co_return_value;
|
|
crypto_session_id_t co_session;
|
|
uint32_t co_user_type;
|
|
uint32_t co_pin_len;
|
|
caddr32_t co_pin;
|
|
} crypto_login32_t;
|
|
|
|
typedef struct crypto_logout32 {
|
|
uint32_t cl_return_value;
|
|
crypto_session_id_t cl_session;
|
|
} crypto_logout32_t;
|
|
|
|
#endif /* _SYSCALL32 */
|
|
#endif /* _KERNEL */
|
|
|
|
#define CRYPTO_LOGIN CRYPTO(40)
|
|
#define CRYPTO_LOGOUT CRYPTO(41)
|
|
|
|
/*
|
|
* Cryptographic Ioctls
|
|
*/
|
|
typedef struct crypto_encrypt {
|
|
uint_t ce_return_value;
|
|
crypto_session_id_t ce_session;
|
|
size_t ce_datalen;
|
|
caddr_t ce_databuf;
|
|
size_t ce_encrlen;
|
|
caddr_t ce_encrbuf;
|
|
uint_t ce_flags;
|
|
} crypto_encrypt_t;
|
|
|
|
typedef struct crypto_encrypt_init {
|
|
uint_t ei_return_value;
|
|
crypto_session_id_t ei_session;
|
|
crypto_mechanism_t ei_mech;
|
|
crypto_key_t ei_key;
|
|
} crypto_encrypt_init_t;
|
|
|
|
typedef struct crypto_encrypt_update {
|
|
uint_t eu_return_value;
|
|
crypto_session_id_t eu_session;
|
|
size_t eu_datalen;
|
|
caddr_t eu_databuf;
|
|
size_t eu_encrlen;
|
|
caddr_t eu_encrbuf;
|
|
} crypto_encrypt_update_t;
|
|
|
|
typedef struct crypto_encrypt_final {
|
|
uint_t ef_return_value;
|
|
crypto_session_id_t ef_session;
|
|
size_t ef_encrlen;
|
|
caddr_t ef_encrbuf;
|
|
} crypto_encrypt_final_t;
|
|
|
|
typedef struct crypto_decrypt {
|
|
uint_t cd_return_value;
|
|
crypto_session_id_t cd_session;
|
|
size_t cd_encrlen;
|
|
caddr_t cd_encrbuf;
|
|
size_t cd_datalen;
|
|
caddr_t cd_databuf;
|
|
uint_t cd_flags;
|
|
} crypto_decrypt_t;
|
|
|
|
typedef struct crypto_decrypt_init {
|
|
uint_t di_return_value;
|
|
crypto_session_id_t di_session;
|
|
crypto_mechanism_t di_mech;
|
|
crypto_key_t di_key;
|
|
} crypto_decrypt_init_t;
|
|
|
|
typedef struct crypto_decrypt_update {
|
|
uint_t du_return_value;
|
|
crypto_session_id_t du_session;
|
|
size_t du_encrlen;
|
|
caddr_t du_encrbuf;
|
|
size_t du_datalen;
|
|
caddr_t du_databuf;
|
|
} crypto_decrypt_update_t;
|
|
|
|
typedef struct crypto_decrypt_final {
|
|
uint_t df_return_value;
|
|
crypto_session_id_t df_session;
|
|
size_t df_datalen;
|
|
caddr_t df_databuf;
|
|
} crypto_decrypt_final_t;
|
|
|
|
typedef struct crypto_digest {
|
|
uint_t cd_return_value;
|
|
crypto_session_id_t cd_session;
|
|
size_t cd_datalen;
|
|
caddr_t cd_databuf;
|
|
size_t cd_digestlen;
|
|
caddr_t cd_digestbuf;
|
|
} crypto_digest_t;
|
|
|
|
typedef struct crypto_digest_init {
|
|
uint_t di_return_value;
|
|
crypto_session_id_t di_session;
|
|
crypto_mechanism_t di_mech;
|
|
} crypto_digest_init_t;
|
|
|
|
typedef struct crypto_digest_update {
|
|
uint_t du_return_value;
|
|
crypto_session_id_t du_session;
|
|
size_t du_datalen;
|
|
caddr_t du_databuf;
|
|
} crypto_digest_update_t;
|
|
|
|
typedef struct crypto_digest_key {
|
|
uint_t dk_return_value;
|
|
crypto_session_id_t dk_session;
|
|
crypto_key_t dk_key;
|
|
} crypto_digest_key_t;
|
|
|
|
typedef struct crypto_digest_final {
|
|
uint_t df_return_value;
|
|
crypto_session_id_t df_session;
|
|
size_t df_digestlen;
|
|
caddr_t df_digestbuf;
|
|
} crypto_digest_final_t;
|
|
|
|
typedef struct crypto_mac {
|
|
uint_t cm_return_value;
|
|
crypto_session_id_t cm_session;
|
|
size_t cm_datalen;
|
|
caddr_t cm_databuf;
|
|
size_t cm_maclen;
|
|
caddr_t cm_macbuf;
|
|
} crypto_mac_t;
|
|
|
|
typedef struct crypto_mac_init {
|
|
uint_t mi_return_value;
|
|
crypto_session_id_t mi_session;
|
|
crypto_mechanism_t mi_mech;
|
|
crypto_key_t mi_key;
|
|
} crypto_mac_init_t;
|
|
|
|
typedef struct crypto_mac_update {
|
|
uint_t mu_return_value;
|
|
crypto_session_id_t mu_session;
|
|
size_t mu_datalen;
|
|
caddr_t mu_databuf;
|
|
} crypto_mac_update_t;
|
|
|
|
typedef struct crypto_mac_final {
|
|
uint_t mf_return_value;
|
|
crypto_session_id_t mf_session;
|
|
size_t mf_maclen;
|
|
caddr_t mf_macbuf;
|
|
} crypto_mac_final_t;
|
|
|
|
typedef struct crypto_sign {
|
|
uint_t cs_return_value;
|
|
crypto_session_id_t cs_session;
|
|
size_t cs_datalen;
|
|
caddr_t cs_databuf;
|
|
size_t cs_signlen;
|
|
caddr_t cs_signbuf;
|
|
} crypto_sign_t;
|
|
|
|
typedef struct crypto_sign_init {
|
|
uint_t si_return_value;
|
|
crypto_session_id_t si_session;
|
|
crypto_mechanism_t si_mech;
|
|
crypto_key_t si_key;
|
|
} crypto_sign_init_t;
|
|
|
|
typedef struct crypto_sign_update {
|
|
uint_t su_return_value;
|
|
crypto_session_id_t su_session;
|
|
size_t su_datalen;
|
|
caddr_t su_databuf;
|
|
} crypto_sign_update_t;
|
|
|
|
typedef struct crypto_sign_final {
|
|
uint_t sf_return_value;
|
|
crypto_session_id_t sf_session;
|
|
size_t sf_signlen;
|
|
caddr_t sf_signbuf;
|
|
} crypto_sign_final_t;
|
|
|
|
typedef struct crypto_sign_recover_init {
|
|
uint_t ri_return_value;
|
|
crypto_session_id_t ri_session;
|
|
crypto_mechanism_t ri_mech;
|
|
crypto_key_t ri_key;
|
|
} crypto_sign_recover_init_t;
|
|
|
|
typedef struct crypto_sign_recover {
|
|
uint_t sr_return_value;
|
|
crypto_session_id_t sr_session;
|
|
size_t sr_datalen;
|
|
caddr_t sr_databuf;
|
|
size_t sr_signlen;
|
|
caddr_t sr_signbuf;
|
|
} crypto_sign_recover_t;
|
|
|
|
typedef struct crypto_verify {
|
|
uint_t cv_return_value;
|
|
crypto_session_id_t cv_session;
|
|
size_t cv_datalen;
|
|
caddr_t cv_databuf;
|
|
size_t cv_signlen;
|
|
caddr_t cv_signbuf;
|
|
} crypto_verify_t;
|
|
|
|
typedef struct crypto_verify_init {
|
|
uint_t vi_return_value;
|
|
crypto_session_id_t vi_session;
|
|
crypto_mechanism_t vi_mech;
|
|
crypto_key_t vi_key;
|
|
} crypto_verify_init_t;
|
|
|
|
typedef struct crypto_verify_update {
|
|
uint_t vu_return_value;
|
|
crypto_session_id_t vu_session;
|
|
size_t vu_datalen;
|
|
caddr_t vu_databuf;
|
|
} crypto_verify_update_t;
|
|
|
|
typedef struct crypto_verify_final {
|
|
uint_t vf_return_value;
|
|
crypto_session_id_t vf_session;
|
|
size_t vf_signlen;
|
|
caddr_t vf_signbuf;
|
|
} crypto_verify_final_t;
|
|
|
|
typedef struct crypto_verify_recover_init {
|
|
uint_t ri_return_value;
|
|
crypto_session_id_t ri_session;
|
|
crypto_mechanism_t ri_mech;
|
|
crypto_key_t ri_key;
|
|
} crypto_verify_recover_init_t;
|
|
|
|
typedef struct crypto_verify_recover {
|
|
uint_t vr_return_value;
|
|
crypto_session_id_t vr_session;
|
|
size_t vr_signlen;
|
|
caddr_t vr_signbuf;
|
|
size_t vr_datalen;
|
|
caddr_t vr_databuf;
|
|
} crypto_verify_recover_t;
|
|
|
|
typedef struct crypto_digest_encrypt_update {
|
|
uint_t eu_return_value;
|
|
crypto_session_id_t eu_session;
|
|
size_t eu_datalen;
|
|
caddr_t eu_databuf;
|
|
size_t eu_encrlen;
|
|
caddr_t eu_encrbuf;
|
|
} crypto_digest_encrypt_update_t;
|
|
|
|
typedef struct crypto_decrypt_digest_update {
|
|
uint_t du_return_value;
|
|
crypto_session_id_t du_session;
|
|
size_t du_encrlen;
|
|
caddr_t du_encrbuf;
|
|
size_t du_datalen;
|
|
caddr_t du_databuf;
|
|
} crypto_decrypt_digest_update_t;
|
|
|
|
typedef struct crypto_sign_encrypt_update {
|
|
uint_t eu_return_value;
|
|
crypto_session_id_t eu_session;
|
|
size_t eu_datalen;
|
|
caddr_t eu_databuf;
|
|
size_t eu_encrlen;
|
|
caddr_t eu_encrbuf;
|
|
} crypto_sign_encrypt_update_t;
|
|
|
|
typedef struct crypto_decrypt_verify_update {
|
|
uint_t vu_return_value;
|
|
crypto_session_id_t vu_session;
|
|
size_t vu_encrlen;
|
|
caddr_t vu_encrbuf;
|
|
size_t vu_datalen;
|
|
caddr_t vu_databuf;
|
|
} crypto_decrypt_verify_update_t;
|
|
|
|
#ifdef _KERNEL
|
|
#ifdef _SYSCALL32
|
|
|
|
typedef struct crypto_encrypt32 {
|
|
uint32_t ce_return_value;
|
|
crypto_session_id_t ce_session;
|
|
size32_t ce_datalen;
|
|
caddr32_t ce_databuf;
|
|
size32_t ce_encrlen;
|
|
caddr32_t ce_encrbuf;
|
|
uint32_t ce_flags;
|
|
} crypto_encrypt32_t;
|
|
|
|
#if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
|
|
#pragma pack(4)
|
|
#endif
|
|
|
|
typedef struct crypto_encrypt_init32 {
|
|
uint32_t ei_return_value;
|
|
crypto_session_id_t ei_session;
|
|
crypto_mechanism32_t ei_mech;
|
|
crypto_key32_t ei_key;
|
|
} crypto_encrypt_init32_t;
|
|
|
|
#if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
|
|
#pragma pack()
|
|
#endif
|
|
|
|
typedef struct crypto_encrypt_update32 {
|
|
uint32_t eu_return_value;
|
|
crypto_session_id_t eu_session;
|
|
size32_t eu_datalen;
|
|
caddr32_t eu_databuf;
|
|
size32_t eu_encrlen;
|
|
caddr32_t eu_encrbuf;
|
|
} crypto_encrypt_update32_t;
|
|
|
|
typedef struct crypto_encrypt_final32 {
|
|
uint32_t ef_return_value;
|
|
crypto_session_id_t ef_session;
|
|
size32_t ef_encrlen;
|
|
caddr32_t ef_encrbuf;
|
|
} crypto_encrypt_final32_t;
|
|
|
|
typedef struct crypto_decrypt32 {
|
|
uint32_t cd_return_value;
|
|
crypto_session_id_t cd_session;
|
|
size32_t cd_encrlen;
|
|
caddr32_t cd_encrbuf;
|
|
size32_t cd_datalen;
|
|
caddr32_t cd_databuf;
|
|
uint32_t cd_flags;
|
|
} crypto_decrypt32_t;
|
|
|
|
#if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
|
|
#pragma pack(4)
|
|
#endif
|
|
|
|
typedef struct crypto_decrypt_init32 {
|
|
uint32_t di_return_value;
|
|
crypto_session_id_t di_session;
|
|
crypto_mechanism32_t di_mech;
|
|
crypto_key32_t di_key;
|
|
} crypto_decrypt_init32_t;
|
|
|
|
#if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
|
|
#pragma pack()
|
|
#endif
|
|
|
|
typedef struct crypto_decrypt_update32 {
|
|
uint32_t du_return_value;
|
|
crypto_session_id_t du_session;
|
|
size32_t du_encrlen;
|
|
caddr32_t du_encrbuf;
|
|
size32_t du_datalen;
|
|
caddr32_t du_databuf;
|
|
} crypto_decrypt_update32_t;
|
|
|
|
typedef struct crypto_decrypt_final32 {
|
|
uint32_t df_return_value;
|
|
crypto_session_id_t df_session;
|
|
size32_t df_datalen;
|
|
caddr32_t df_databuf;
|
|
} crypto_decrypt_final32_t;
|
|
|
|
typedef struct crypto_digest32 {
|
|
uint32_t cd_return_value;
|
|
crypto_session_id_t cd_session;
|
|
size32_t cd_datalen;
|
|
caddr32_t cd_databuf;
|
|
size32_t cd_digestlen;
|
|
caddr32_t cd_digestbuf;
|
|
} crypto_digest32_t;
|
|
|
|
typedef struct crypto_digest_init32 {
|
|
uint32_t di_return_value;
|
|
crypto_session_id_t di_session;
|
|
crypto_mechanism32_t di_mech;
|
|
} crypto_digest_init32_t;
|
|
|
|
typedef struct crypto_digest_update32 {
|
|
uint32_t du_return_value;
|
|
crypto_session_id_t du_session;
|
|
size32_t du_datalen;
|
|
caddr32_t du_databuf;
|
|
} crypto_digest_update32_t;
|
|
|
|
typedef struct crypto_digest_key32 {
|
|
uint32_t dk_return_value;
|
|
crypto_session_id_t dk_session;
|
|
crypto_key32_t dk_key;
|
|
} crypto_digest_key32_t;
|
|
|
|
typedef struct crypto_digest_final32 {
|
|
uint32_t df_return_value;
|
|
crypto_session_id_t df_session;
|
|
size32_t df_digestlen;
|
|
caddr32_t df_digestbuf;
|
|
} crypto_digest_final32_t;
|
|
|
|
typedef struct crypto_mac32 {
|
|
uint32_t cm_return_value;
|
|
crypto_session_id_t cm_session;
|
|
size32_t cm_datalen;
|
|
caddr32_t cm_databuf;
|
|
size32_t cm_maclen;
|
|
caddr32_t cm_macbuf;
|
|
} crypto_mac32_t;
|
|
|
|
#if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
|
|
#pragma pack(4)
|
|
#endif
|
|
|
|
typedef struct crypto_mac_init32 {
|
|
uint32_t mi_return_value;
|
|
crypto_session_id_t mi_session;
|
|
crypto_mechanism32_t mi_mech;
|
|
crypto_key32_t mi_key;
|
|
} crypto_mac_init32_t;
|
|
|
|
#if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
|
|
#pragma pack()
|
|
#endif
|
|
|
|
typedef struct crypto_mac_update32 {
|
|
uint32_t mu_return_value;
|
|
crypto_session_id_t mu_session;
|
|
size32_t mu_datalen;
|
|
caddr32_t mu_databuf;
|
|
} crypto_mac_update32_t;
|
|
|
|
typedef struct crypto_mac_final32 {
|
|
uint32_t mf_return_value;
|
|
crypto_session_id_t mf_session;
|
|
size32_t mf_maclen;
|
|
caddr32_t mf_macbuf;
|
|
} crypto_mac_final32_t;
|
|
|
|
typedef struct crypto_sign32 {
|
|
uint32_t cs_return_value;
|
|
crypto_session_id_t cs_session;
|
|
size32_t cs_datalen;
|
|
caddr32_t cs_databuf;
|
|
size32_t cs_signlen;
|
|
caddr32_t cs_signbuf;
|
|
} crypto_sign32_t;
|
|
|
|
#if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
|
|
#pragma pack(4)
|
|
#endif
|
|
|
|
typedef struct crypto_sign_init32 {
|
|
uint32_t si_return_value;
|
|
crypto_session_id_t si_session;
|
|
crypto_mechanism32_t si_mech;
|
|
crypto_key32_t si_key;
|
|
} crypto_sign_init32_t;
|
|
|
|
#if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
|
|
#pragma pack()
|
|
#endif
|
|
|
|
typedef struct crypto_sign_update32 {
|
|
uint32_t su_return_value;
|
|
crypto_session_id_t su_session;
|
|
size32_t su_datalen;
|
|
caddr32_t su_databuf;
|
|
} crypto_sign_update32_t;
|
|
|
|
typedef struct crypto_sign_final32 {
|
|
uint32_t sf_return_value;
|
|
crypto_session_id_t sf_session;
|
|
size32_t sf_signlen;
|
|
caddr32_t sf_signbuf;
|
|
} crypto_sign_final32_t;
|
|
|
|
#if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
|
|
#pragma pack(4)
|
|
#endif
|
|
|
|
typedef struct crypto_sign_recover_init32 {
|
|
uint32_t ri_return_value;
|
|
crypto_session_id_t ri_session;
|
|
crypto_mechanism32_t ri_mech;
|
|
crypto_key32_t ri_key;
|
|
} crypto_sign_recover_init32_t;
|
|
|
|
#if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
|
|
#pragma pack()
|
|
#endif
|
|
|
|
typedef struct crypto_sign_recover32 {
|
|
uint32_t sr_return_value;
|
|
crypto_session_id_t sr_session;
|
|
size32_t sr_datalen;
|
|
caddr32_t sr_databuf;
|
|
size32_t sr_signlen;
|
|
caddr32_t sr_signbuf;
|
|
} crypto_sign_recover32_t;
|
|
|
|
typedef struct crypto_verify32 {
|
|
uint32_t cv_return_value;
|
|
crypto_session_id_t cv_session;
|
|
size32_t cv_datalen;
|
|
caddr32_t cv_databuf;
|
|
size32_t cv_signlen;
|
|
caddr32_t cv_signbuf;
|
|
} crypto_verify32_t;
|
|
|
|
#if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
|
|
#pragma pack(4)
|
|
#endif
|
|
|
|
typedef struct crypto_verify_init32 {
|
|
uint32_t vi_return_value;
|
|
crypto_session_id_t vi_session;
|
|
crypto_mechanism32_t vi_mech;
|
|
crypto_key32_t vi_key;
|
|
} crypto_verify_init32_t;
|
|
|
|
#if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
|
|
#pragma pack()
|
|
#endif
|
|
|
|
typedef struct crypto_verify_update32 {
|
|
uint32_t vu_return_value;
|
|
crypto_session_id_t vu_session;
|
|
size32_t vu_datalen;
|
|
caddr32_t vu_databuf;
|
|
} crypto_verify_update32_t;
|
|
|
|
typedef struct crypto_verify_final32 {
|
|
uint32_t vf_return_value;
|
|
crypto_session_id_t vf_session;
|
|
size32_t vf_signlen;
|
|
caddr32_t vf_signbuf;
|
|
} crypto_verify_final32_t;
|
|
|
|
#if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
|
|
#pragma pack(4)
|
|
#endif
|
|
|
|
typedef struct crypto_verify_recover_init32 {
|
|
uint32_t ri_return_value;
|
|
crypto_session_id_t ri_session;
|
|
crypto_mechanism32_t ri_mech;
|
|
crypto_key32_t ri_key;
|
|
} crypto_verify_recover_init32_t;
|
|
|
|
#if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
|
|
#pragma pack()
|
|
#endif
|
|
|
|
typedef struct crypto_verify_recover32 {
|
|
uint32_t vr_return_value;
|
|
crypto_session_id_t vr_session;
|
|
size32_t vr_signlen;
|
|
caddr32_t vr_signbuf;
|
|
size32_t vr_datalen;
|
|
caddr32_t vr_databuf;
|
|
} crypto_verify_recover32_t;
|
|
|
|
typedef struct crypto_digest_encrypt_update32 {
|
|
uint32_t eu_return_value;
|
|
crypto_session_id_t eu_session;
|
|
size32_t eu_datalen;
|
|
caddr32_t eu_databuf;
|
|
size32_t eu_encrlen;
|
|
caddr32_t eu_encrbuf;
|
|
} crypto_digest_encrypt_update32_t;
|
|
|
|
typedef struct crypto_decrypt_digest_update32 {
|
|
uint32_t du_return_value;
|
|
crypto_session_id_t du_session;
|
|
size32_t du_encrlen;
|
|
caddr32_t du_encrbuf;
|
|
size32_t du_datalen;
|
|
caddr32_t du_databuf;
|
|
} crypto_decrypt_digest_update32_t;
|
|
|
|
typedef struct crypto_sign_encrypt_update32 {
|
|
uint32_t eu_return_value;
|
|
crypto_session_id_t eu_session;
|
|
size32_t eu_datalen;
|
|
caddr32_t eu_databuf;
|
|
size32_t eu_encrlen;
|
|
caddr32_t eu_encrbuf;
|
|
} crypto_sign_encrypt_update32_t;
|
|
|
|
typedef struct crypto_decrypt_verify_update32 {
|
|
uint32_t vu_return_value;
|
|
crypto_session_id_t vu_session;
|
|
size32_t vu_encrlen;
|
|
caddr32_t vu_encrbuf;
|
|
size32_t vu_datalen;
|
|
caddr32_t vu_databuf;
|
|
} crypto_decrypt_verify_update32_t;
|
|
|
|
#endif /* _SYSCALL32 */
|
|
#endif /* _KERNEL */
|
|
|
|
#define CRYPTO_ENCRYPT CRYPTO(50)
|
|
#define CRYPTO_ENCRYPT_INIT CRYPTO(51)
|
|
#define CRYPTO_ENCRYPT_UPDATE CRYPTO(52)
|
|
#define CRYPTO_ENCRYPT_FINAL CRYPTO(53)
|
|
#define CRYPTO_DECRYPT CRYPTO(54)
|
|
#define CRYPTO_DECRYPT_INIT CRYPTO(55)
|
|
#define CRYPTO_DECRYPT_UPDATE CRYPTO(56)
|
|
#define CRYPTO_DECRYPT_FINAL CRYPTO(57)
|
|
|
|
#define CRYPTO_DIGEST CRYPTO(58)
|
|
#define CRYPTO_DIGEST_INIT CRYPTO(59)
|
|
#define CRYPTO_DIGEST_UPDATE CRYPTO(60)
|
|
#define CRYPTO_DIGEST_KEY CRYPTO(61)
|
|
#define CRYPTO_DIGEST_FINAL CRYPTO(62)
|
|
#define CRYPTO_MAC CRYPTO(63)
|
|
#define CRYPTO_MAC_INIT CRYPTO(64)
|
|
#define CRYPTO_MAC_UPDATE CRYPTO(65)
|
|
#define CRYPTO_MAC_FINAL CRYPTO(66)
|
|
|
|
#define CRYPTO_SIGN CRYPTO(67)
|
|
#define CRYPTO_SIGN_INIT CRYPTO(68)
|
|
#define CRYPTO_SIGN_UPDATE CRYPTO(69)
|
|
#define CRYPTO_SIGN_FINAL CRYPTO(70)
|
|
#define CRYPTO_SIGN_RECOVER_INIT CRYPTO(71)
|
|
#define CRYPTO_SIGN_RECOVER CRYPTO(72)
|
|
#define CRYPTO_VERIFY CRYPTO(73)
|
|
#define CRYPTO_VERIFY_INIT CRYPTO(74)
|
|
#define CRYPTO_VERIFY_UPDATE CRYPTO(75)
|
|
#define CRYPTO_VERIFY_FINAL CRYPTO(76)
|
|
#define CRYPTO_VERIFY_RECOVER_INIT CRYPTO(77)
|
|
#define CRYPTO_VERIFY_RECOVER CRYPTO(78)
|
|
|
|
#define CRYPTO_DIGEST_ENCRYPT_UPDATE CRYPTO(79)
|
|
#define CRYPTO_DECRYPT_DIGEST_UPDATE CRYPTO(80)
|
|
#define CRYPTO_SIGN_ENCRYPT_UPDATE CRYPTO(81)
|
|
#define CRYPTO_DECRYPT_VERIFY_UPDATE CRYPTO(82)
|
|
|
|
/*
|
|
* Random Number Ioctls
|
|
*/
|
|
typedef struct crypto_seed_random {
|
|
uint_t sr_return_value;
|
|
crypto_session_id_t sr_session;
|
|
size_t sr_seedlen;
|
|
caddr_t sr_seedbuf;
|
|
} crypto_seed_random_t;
|
|
|
|
typedef struct crypto_generate_random {
|
|
uint_t gr_return_value;
|
|
crypto_session_id_t gr_session;
|
|
caddr_t gr_buf;
|
|
size_t gr_buflen;
|
|
} crypto_generate_random_t;
|
|
|
|
#ifdef _KERNEL
|
|
#ifdef _SYSCALL32
|
|
|
|
typedef struct crypto_seed_random32 {
|
|
uint32_t sr_return_value;
|
|
crypto_session_id_t sr_session;
|
|
size32_t sr_seedlen;
|
|
caddr32_t sr_seedbuf;
|
|
} crypto_seed_random32_t;
|
|
|
|
typedef struct crypto_generate_random32 {
|
|
uint32_t gr_return_value;
|
|
crypto_session_id_t gr_session;
|
|
caddr32_t gr_buf;
|
|
size32_t gr_buflen;
|
|
} crypto_generate_random32_t;
|
|
|
|
#endif /* _SYSCALL32 */
|
|
#endif /* _KERNEL */
|
|
|
|
#define CRYPTO_SEED_RANDOM CRYPTO(90)
|
|
#define CRYPTO_GENERATE_RANDOM CRYPTO(91)
|
|
|
|
/*
|
|
* Object Management Ioctls
|
|
*/
|
|
typedef struct crypto_object_create {
|
|
uint_t oc_return_value;
|
|
crypto_session_id_t oc_session;
|
|
crypto_object_id_t oc_handle;
|
|
uint_t oc_count;
|
|
caddr_t oc_attributes;
|
|
} crypto_object_create_t;
|
|
|
|
typedef struct crypto_object_copy {
|
|
uint_t oc_return_value;
|
|
crypto_session_id_t oc_session;
|
|
crypto_object_id_t oc_handle;
|
|
crypto_object_id_t oc_new_handle;
|
|
uint_t oc_count;
|
|
caddr_t oc_new_attributes;
|
|
} crypto_object_copy_t;
|
|
|
|
typedef struct crypto_object_destroy {
|
|
uint_t od_return_value;
|
|
crypto_session_id_t od_session;
|
|
crypto_object_id_t od_handle;
|
|
} crypto_object_destroy_t;
|
|
|
|
typedef struct crypto_object_get_attribute_value {
|
|
uint_t og_return_value;
|
|
crypto_session_id_t og_session;
|
|
crypto_object_id_t og_handle;
|
|
uint_t og_count;
|
|
caddr_t og_attributes;
|
|
} crypto_object_get_attribute_value_t;
|
|
|
|
typedef struct crypto_object_get_size {
|
|
uint_t gs_return_value;
|
|
crypto_session_id_t gs_session;
|
|
crypto_object_id_t gs_handle;
|
|
size_t gs_size;
|
|
} crypto_object_get_size_t;
|
|
|
|
typedef struct crypto_object_set_attribute_value {
|
|
uint_t sa_return_value;
|
|
crypto_session_id_t sa_session;
|
|
crypto_object_id_t sa_handle;
|
|
uint_t sa_count;
|
|
caddr_t sa_attributes;
|
|
} crypto_object_set_attribute_value_t;
|
|
|
|
typedef struct crypto_object_find_init {
|
|
uint_t fi_return_value;
|
|
crypto_session_id_t fi_session;
|
|
uint_t fi_count;
|
|
caddr_t fi_attributes;
|
|
} crypto_object_find_init_t;
|
|
|
|
typedef struct crypto_object_find_update {
|
|
uint_t fu_return_value;
|
|
crypto_session_id_t fu_session;
|
|
uint_t fu_max_count;
|
|
uint_t fu_count;
|
|
caddr_t fu_handles;
|
|
} crypto_object_find_update_t;
|
|
|
|
typedef struct crypto_object_find_final {
|
|
uint_t ff_return_value;
|
|
crypto_session_id_t ff_session;
|
|
} crypto_object_find_final_t;
|
|
|
|
#ifdef _KERNEL
|
|
#ifdef _SYSCALL32
|
|
|
|
typedef struct crypto_object_create32 {
|
|
uint32_t oc_return_value;
|
|
crypto_session_id_t oc_session;
|
|
crypto_object_id_t oc_handle;
|
|
uint32_t oc_count;
|
|
caddr32_t oc_attributes;
|
|
} crypto_object_create32_t;
|
|
|
|
typedef struct crypto_object_copy32 {
|
|
uint32_t oc_return_value;
|
|
crypto_session_id_t oc_session;
|
|
crypto_object_id_t oc_handle;
|
|
crypto_object_id_t oc_new_handle;
|
|
uint32_t oc_count;
|
|
caddr32_t oc_new_attributes;
|
|
} crypto_object_copy32_t;
|
|
|
|
typedef struct crypto_object_destroy32 {
|
|
uint32_t od_return_value;
|
|
crypto_session_id_t od_session;
|
|
crypto_object_id_t od_handle;
|
|
} crypto_object_destroy32_t;
|
|
|
|
typedef struct crypto_object_get_attribute_value32 {
|
|
uint32_t og_return_value;
|
|
crypto_session_id_t og_session;
|
|
crypto_object_id_t og_handle;
|
|
uint32_t og_count;
|
|
caddr32_t og_attributes;
|
|
} crypto_object_get_attribute_value32_t;
|
|
|
|
typedef struct crypto_object_get_size32 {
|
|
uint32_t gs_return_value;
|
|
crypto_session_id_t gs_session;
|
|
crypto_object_id_t gs_handle;
|
|
size32_t gs_size;
|
|
} crypto_object_get_size32_t;
|
|
|
|
typedef struct crypto_object_set_attribute_value32 {
|
|
uint32_t sa_return_value;
|
|
crypto_session_id_t sa_session;
|
|
crypto_object_id_t sa_handle;
|
|
uint32_t sa_count;
|
|
caddr32_t sa_attributes;
|
|
} crypto_object_set_attribute_value32_t;
|
|
|
|
typedef struct crypto_object_find_init32 {
|
|
uint32_t fi_return_value;
|
|
crypto_session_id_t fi_session;
|
|
uint32_t fi_count;
|
|
caddr32_t fi_attributes;
|
|
} crypto_object_find_init32_t;
|
|
|
|
typedef struct crypto_object_find_update32 {
|
|
uint32_t fu_return_value;
|
|
crypto_session_id_t fu_session;
|
|
uint32_t fu_max_count;
|
|
uint32_t fu_count;
|
|
caddr32_t fu_handles;
|
|
} crypto_object_find_update32_t;
|
|
|
|
typedef struct crypto_object_find_final32 {
|
|
uint32_t ff_return_value;
|
|
crypto_session_id_t ff_session;
|
|
} crypto_object_find_final32_t;
|
|
|
|
#endif /* _SYSCALL32 */
|
|
#endif /* _KERNEL */
|
|
|
|
#define CRYPTO_OBJECT_CREATE CRYPTO(100)
|
|
#define CRYPTO_OBJECT_COPY CRYPTO(101)
|
|
#define CRYPTO_OBJECT_DESTROY CRYPTO(102)
|
|
#define CRYPTO_OBJECT_GET_ATTRIBUTE_VALUE CRYPTO(103)
|
|
#define CRYPTO_OBJECT_GET_SIZE CRYPTO(104)
|
|
#define CRYPTO_OBJECT_SET_ATTRIBUTE_VALUE CRYPTO(105)
|
|
#define CRYPTO_OBJECT_FIND_INIT CRYPTO(106)
|
|
#define CRYPTO_OBJECT_FIND_UPDATE CRYPTO(107)
|
|
#define CRYPTO_OBJECT_FIND_FINAL CRYPTO(108)
|
|
|
|
/*
|
|
* Key Generation Ioctls
|
|
*/
|
|
typedef struct crypto_object_generate_key {
|
|
uint_t gk_return_value;
|
|
crypto_session_id_t gk_session;
|
|
crypto_object_id_t gk_handle;
|
|
crypto_mechanism_t gk_mechanism;
|
|
uint_t gk_count;
|
|
caddr_t gk_attributes;
|
|
} crypto_object_generate_key_t;
|
|
|
|
typedef struct crypto_object_generate_key_pair {
|
|
uint_t kp_return_value;
|
|
crypto_session_id_t kp_session;
|
|
crypto_object_id_t kp_public_handle;
|
|
crypto_object_id_t kp_private_handle;
|
|
uint_t kp_public_count;
|
|
uint_t kp_private_count;
|
|
caddr_t kp_public_attributes;
|
|
caddr_t kp_private_attributes;
|
|
crypto_mechanism_t kp_mechanism;
|
|
} crypto_object_generate_key_pair_t;
|
|
|
|
typedef struct crypto_object_wrap_key {
|
|
uint_t wk_return_value;
|
|
crypto_session_id_t wk_session;
|
|
crypto_mechanism_t wk_mechanism;
|
|
crypto_key_t wk_wrapping_key;
|
|
crypto_object_id_t wk_object_handle;
|
|
size_t wk_wrapped_key_len;
|
|
caddr_t wk_wrapped_key;
|
|
} crypto_object_wrap_key_t;
|
|
|
|
typedef struct crypto_object_unwrap_key {
|
|
uint_t uk_return_value;
|
|
crypto_session_id_t uk_session;
|
|
crypto_mechanism_t uk_mechanism;
|
|
crypto_key_t uk_unwrapping_key;
|
|
crypto_object_id_t uk_object_handle;
|
|
size_t uk_wrapped_key_len;
|
|
caddr_t uk_wrapped_key;
|
|
uint_t uk_count;
|
|
caddr_t uk_attributes;
|
|
} crypto_object_unwrap_key_t;
|
|
|
|
typedef struct crypto_derive_key {
|
|
uint_t dk_return_value;
|
|
crypto_session_id_t dk_session;
|
|
crypto_mechanism_t dk_mechanism;
|
|
crypto_key_t dk_base_key;
|
|
crypto_object_id_t dk_object_handle;
|
|
uint_t dk_count;
|
|
caddr_t dk_attributes;
|
|
} crypto_derive_key_t;
|
|
|
|
#ifdef _KERNEL
|
|
#ifdef _SYSCALL32
|
|
|
|
#if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
|
|
#pragma pack(4)
|
|
#endif
|
|
|
|
typedef struct crypto_object_generate_key32 {
|
|
uint32_t gk_return_value;
|
|
crypto_session_id_t gk_session;
|
|
crypto_object_id_t gk_handle;
|
|
crypto_mechanism32_t gk_mechanism;
|
|
uint32_t gk_count;
|
|
caddr32_t gk_attributes;
|
|
} crypto_object_generate_key32_t;
|
|
|
|
#if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
|
|
#pragma pack()
|
|
#endif
|
|
|
|
typedef struct crypto_object_generate_key_pair32 {
|
|
uint32_t kp_return_value;
|
|
crypto_session_id_t kp_session;
|
|
crypto_object_id_t kp_public_handle;
|
|
crypto_object_id_t kp_private_handle;
|
|
uint32_t kp_public_count;
|
|
uint32_t kp_private_count;
|
|
caddr32_t kp_public_attributes;
|
|
caddr32_t kp_private_attributes;
|
|
crypto_mechanism32_t kp_mechanism;
|
|
} crypto_object_generate_key_pair32_t;
|
|
|
|
typedef struct crypto_object_wrap_key32 {
|
|
uint32_t wk_return_value;
|
|
crypto_session_id_t wk_session;
|
|
crypto_mechanism32_t wk_mechanism;
|
|
crypto_key32_t wk_wrapping_key;
|
|
crypto_object_id_t wk_object_handle;
|
|
size32_t wk_wrapped_key_len;
|
|
caddr32_t wk_wrapped_key;
|
|
} crypto_object_wrap_key32_t;
|
|
|
|
typedef struct crypto_object_unwrap_key32 {
|
|
uint32_t uk_return_value;
|
|
crypto_session_id_t uk_session;
|
|
crypto_mechanism32_t uk_mechanism;
|
|
crypto_key32_t uk_unwrapping_key;
|
|
crypto_object_id_t uk_object_handle;
|
|
size32_t uk_wrapped_key_len;
|
|
caddr32_t uk_wrapped_key;
|
|
uint32_t uk_count;
|
|
caddr32_t uk_attributes;
|
|
} crypto_object_unwrap_key32_t;
|
|
|
|
typedef struct crypto_derive_key32 {
|
|
uint32_t dk_return_value;
|
|
crypto_session_id_t dk_session;
|
|
crypto_mechanism32_t dk_mechanism;
|
|
crypto_key32_t dk_base_key;
|
|
crypto_object_id_t dk_object_handle;
|
|
uint32_t dk_count;
|
|
caddr32_t dk_attributes;
|
|
} crypto_derive_key32_t;
|
|
|
|
#endif /* _SYSCALL32 */
|
|
#endif /* _KERNEL */
|
|
|
|
#define CRYPTO_GENERATE_KEY CRYPTO(110)
|
|
#define CRYPTO_GENERATE_KEY_PAIR CRYPTO(111)
|
|
#define CRYPTO_WRAP_KEY CRYPTO(112)
|
|
#define CRYPTO_UNWRAP_KEY CRYPTO(113)
|
|
#define CRYPTO_DERIVE_KEY CRYPTO(114)
|
|
|
|
/*
|
|
* Provider Management Ioctls
|
|
*/
|
|
|
|
typedef struct crypto_get_provider_list {
|
|
uint_t pl_return_value;
|
|
uint_t pl_count;
|
|
crypto_provider_entry_t pl_list[1];
|
|
} crypto_get_provider_list_t;
|
|
|
|
typedef struct crypto_provider_data {
|
|
uchar_t pd_prov_desc[CRYPTO_PROVIDER_DESCR_MAX_LEN];
|
|
uchar_t pd_label[CRYPTO_EXT_SIZE_LABEL];
|
|
uchar_t pd_manufacturerID[CRYPTO_EXT_SIZE_MANUF];
|
|
uchar_t pd_model[CRYPTO_EXT_SIZE_MODEL];
|
|
uchar_t pd_serial_number[CRYPTO_EXT_SIZE_SERIAL];
|
|
ulong_t pd_flags;
|
|
ulong_t pd_max_session_count;
|
|
ulong_t pd_session_count;
|
|
ulong_t pd_max_rw_session_count;
|
|
ulong_t pd_rw_session_count;
|
|
ulong_t pd_max_pin_len;
|
|
ulong_t pd_min_pin_len;
|
|
ulong_t pd_total_public_memory;
|
|
ulong_t pd_free_public_memory;
|
|
ulong_t pd_total_private_memory;
|
|
ulong_t pd_free_private_memory;
|
|
crypto_version_t pd_hardware_version;
|
|
crypto_version_t pd_firmware_version;
|
|
uchar_t pd_time[CRYPTO_EXT_SIZE_TIME];
|
|
} crypto_provider_data_t;
|
|
|
|
typedef struct crypto_get_provider_info {
|
|
uint_t gi_return_value;
|
|
crypto_provider_id_t gi_provider_id;
|
|
crypto_provider_data_t gi_provider_data;
|
|
} crypto_get_provider_info_t;
|
|
|
|
typedef struct crypto_get_provider_mechanisms {
|
|
uint_t pm_return_value;
|
|
crypto_provider_id_t pm_provider_id;
|
|
uint_t pm_count;
|
|
crypto_mech_name_t pm_list[1];
|
|
} crypto_get_provider_mechanisms_t;
|
|
|
|
typedef struct crypto_get_provider_mechanism_info {
|
|
uint_t mi_return_value;
|
|
crypto_provider_id_t mi_provider_id;
|
|
crypto_mech_name_t mi_mechanism_name;
|
|
uint32_t mi_min_key_size;
|
|
uint32_t mi_max_key_size;
|
|
uint32_t mi_flags;
|
|
} crypto_get_provider_mechanism_info_t;
|
|
|
|
typedef struct crypto_init_token {
|
|
uint_t it_return_value;
|
|
crypto_provider_id_t it_provider_id;
|
|
caddr_t it_pin;
|
|
size_t it_pin_len;
|
|
caddr_t it_label;
|
|
} crypto_init_token_t;
|
|
|
|
typedef struct crypto_init_pin {
|
|
uint_t ip_return_value;
|
|
crypto_session_id_t ip_session;
|
|
caddr_t ip_pin;
|
|
size_t ip_pin_len;
|
|
} crypto_init_pin_t;
|
|
|
|
typedef struct crypto_set_pin {
|
|
uint_t sp_return_value;
|
|
crypto_session_id_t sp_session;
|
|
caddr_t sp_old_pin;
|
|
size_t sp_old_len;
|
|
caddr_t sp_new_pin;
|
|
size_t sp_new_len;
|
|
} crypto_set_pin_t;
|
|
|
|
#ifdef _KERNEL
|
|
#ifdef _SYSCALL32
|
|
|
|
typedef struct crypto_get_provider_list32 {
|
|
uint32_t pl_return_value;
|
|
uint32_t pl_count;
|
|
crypto_provider_entry_t pl_list[1];
|
|
} crypto_get_provider_list32_t;
|
|
|
|
typedef struct crypto_version32 {
|
|
uchar_t cv_major;
|
|
uchar_t cv_minor;
|
|
} crypto_version32_t;
|
|
|
|
typedef struct crypto_provider_data32 {
|
|
uchar_t pd_prov_desc[CRYPTO_PROVIDER_DESCR_MAX_LEN];
|
|
uchar_t pd_label[CRYPTO_EXT_SIZE_LABEL];
|
|
uchar_t pd_manufacturerID[CRYPTO_EXT_SIZE_MANUF];
|
|
uchar_t pd_model[CRYPTO_EXT_SIZE_MODEL];
|
|
uchar_t pd_serial_number[CRYPTO_EXT_SIZE_SERIAL];
|
|
uint32_t pd_flags;
|
|
uint32_t pd_max_session_count;
|
|
uint32_t pd_session_count;
|
|
uint32_t pd_max_rw_session_count;
|
|
uint32_t pd_rw_session_count;
|
|
uint32_t pd_max_pin_len;
|
|
uint32_t pd_min_pin_len;
|
|
uint32_t pd_total_public_memory;
|
|
uint32_t pd_free_public_memory;
|
|
uint32_t pd_total_private_memory;
|
|
uint32_t pd_free_private_memory;
|
|
crypto_version32_t pd_hardware_version;
|
|
crypto_version32_t pd_firmware_version;
|
|
uchar_t pd_time[CRYPTO_EXT_SIZE_TIME];
|
|
} crypto_provider_data32_t;
|
|
|
|
typedef struct crypto_get_provider_info32 {
|
|
uint32_t gi_return_value;
|
|
crypto_provider_id_t gi_provider_id;
|
|
crypto_provider_data32_t gi_provider_data;
|
|
} crypto_get_provider_info32_t;
|
|
|
|
typedef struct crypto_get_provider_mechanisms32 {
|
|
uint32_t pm_return_value;
|
|
crypto_provider_id_t pm_provider_id;
|
|
uint32_t pm_count;
|
|
crypto_mech_name_t pm_list[1];
|
|
} crypto_get_provider_mechanisms32_t;
|
|
|
|
typedef struct crypto_init_token32 {
|
|
uint32_t it_return_value;
|
|
crypto_provider_id_t it_provider_id;
|
|
caddr32_t it_pin;
|
|
size32_t it_pin_len;
|
|
caddr32_t it_label;
|
|
} crypto_init_token32_t;
|
|
|
|
typedef struct crypto_init_pin32 {
|
|
uint32_t ip_return_value;
|
|
crypto_session_id_t ip_session;
|
|
caddr32_t ip_pin;
|
|
size32_t ip_pin_len;
|
|
} crypto_init_pin32_t;
|
|
|
|
typedef struct crypto_set_pin32 {
|
|
uint32_t sp_return_value;
|
|
crypto_session_id_t sp_session;
|
|
caddr32_t sp_old_pin;
|
|
size32_t sp_old_len;
|
|
caddr32_t sp_new_pin;
|
|
size32_t sp_new_len;
|
|
} crypto_set_pin32_t;
|
|
|
|
#endif /* _SYSCALL32 */
|
|
#endif /* _KERNEL */
|
|
|
|
#define CRYPTO_GET_PROVIDER_LIST CRYPTO(120)
|
|
#define CRYPTO_GET_PROVIDER_INFO CRYPTO(121)
|
|
#define CRYPTO_GET_PROVIDER_MECHANISMS CRYPTO(122)
|
|
#define CRYPTO_GET_PROVIDER_MECHANISM_INFO CRYPTO(123)
|
|
#define CRYPTO_INIT_TOKEN CRYPTO(124)
|
|
#define CRYPTO_INIT_PIN CRYPTO(125)
|
|
#define CRYPTO_SET_PIN CRYPTO(126)
|
|
|
|
/*
|
|
* No (Key) Store Key Generation Ioctls
|
|
*/
|
|
typedef struct crypto_nostore_generate_key {
|
|
uint_t ngk_return_value;
|
|
crypto_session_id_t ngk_session;
|
|
crypto_mechanism_t ngk_mechanism;
|
|
uint_t ngk_in_count;
|
|
uint_t ngk_out_count;
|
|
caddr_t ngk_in_attributes;
|
|
caddr_t ngk_out_attributes;
|
|
} crypto_nostore_generate_key_t;
|
|
|
|
typedef struct crypto_nostore_generate_key_pair {
|
|
uint_t nkp_return_value;
|
|
crypto_session_id_t nkp_session;
|
|
uint_t nkp_in_public_count;
|
|
uint_t nkp_in_private_count;
|
|
uint_t nkp_out_public_count;
|
|
uint_t nkp_out_private_count;
|
|
caddr_t nkp_in_public_attributes;
|
|
caddr_t nkp_in_private_attributes;
|
|
caddr_t nkp_out_public_attributes;
|
|
caddr_t nkp_out_private_attributes;
|
|
crypto_mechanism_t nkp_mechanism;
|
|
} crypto_nostore_generate_key_pair_t;
|
|
|
|
typedef struct crypto_nostore_derive_key {
|
|
uint_t ndk_return_value;
|
|
crypto_session_id_t ndk_session;
|
|
crypto_mechanism_t ndk_mechanism;
|
|
crypto_key_t ndk_base_key;
|
|
uint_t ndk_in_count;
|
|
uint_t ndk_out_count;
|
|
caddr_t ndk_in_attributes;
|
|
caddr_t ndk_out_attributes;
|
|
} crypto_nostore_derive_key_t;
|
|
|
|
#ifdef _KERNEL
|
|
#ifdef _SYSCALL32
|
|
|
|
typedef struct crypto_nostore_generate_key32 {
|
|
uint32_t ngk_return_value;
|
|
crypto_session_id_t ngk_session;
|
|
crypto_mechanism32_t ngk_mechanism;
|
|
uint32_t ngk_in_count;
|
|
uint32_t ngk_out_count;
|
|
caddr32_t ngk_in_attributes;
|
|
caddr32_t ngk_out_attributes;
|
|
} crypto_nostore_generate_key32_t;
|
|
|
|
typedef struct crypto_nostore_generate_key_pair32 {
|
|
uint32_t nkp_return_value;
|
|
crypto_session_id_t nkp_session;
|
|
uint32_t nkp_in_public_count;
|
|
uint32_t nkp_in_private_count;
|
|
uint32_t nkp_out_public_count;
|
|
uint32_t nkp_out_private_count;
|
|
caddr32_t nkp_in_public_attributes;
|
|
caddr32_t nkp_in_private_attributes;
|
|
caddr32_t nkp_out_public_attributes;
|
|
caddr32_t nkp_out_private_attributes;
|
|
crypto_mechanism32_t nkp_mechanism;
|
|
} crypto_nostore_generate_key_pair32_t;
|
|
|
|
#if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
|
|
#pragma pack(4)
|
|
#endif
|
|
|
|
typedef struct crypto_nostore_derive_key32 {
|
|
uint32_t ndk_return_value;
|
|
crypto_session_id_t ndk_session;
|
|
crypto_mechanism32_t ndk_mechanism;
|
|
crypto_key32_t ndk_base_key;
|
|
uint32_t ndk_in_count;
|
|
uint32_t ndk_out_count;
|
|
caddr32_t ndk_in_attributes;
|
|
caddr32_t ndk_out_attributes;
|
|
} crypto_nostore_derive_key32_t;
|
|
|
|
#if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
|
|
#pragma pack()
|
|
#endif
|
|
|
|
#endif /* _SYSCALL32 */
|
|
#endif /* _KERNEL */
|
|
|
|
#define CRYPTO_NOSTORE_GENERATE_KEY CRYPTO(127)
|
|
#define CRYPTO_NOSTORE_GENERATE_KEY_PAIR CRYPTO(128)
|
|
#define CRYPTO_NOSTORE_DERIVE_KEY CRYPTO(129)
|
|
|
|
/*
|
|
* Mechanism Ioctls
|
|
*/
|
|
|
|
typedef struct crypto_get_mechanism_list {
|
|
uint_t ml_return_value;
|
|
uint_t ml_count;
|
|
crypto_mech_name_t ml_list[1];
|
|
} crypto_get_mechanism_list_t;
|
|
|
|
typedef struct crypto_get_all_mechanism_info {
|
|
uint_t mi_return_value;
|
|
crypto_mech_name_t mi_mechanism_name;
|
|
uint_t mi_count;
|
|
crypto_mechanism_info_t mi_list[1];
|
|
} crypto_get_all_mechanism_info_t;
|
|
|
|
#ifdef _KERNEL
|
|
#ifdef _SYSCALL32
|
|
|
|
typedef struct crypto_get_mechanism_list32 {
|
|
uint32_t ml_return_value;
|
|
uint32_t ml_count;
|
|
crypto_mech_name_t ml_list[1];
|
|
} crypto_get_mechanism_list32_t;
|
|
|
|
typedef struct crypto_get_all_mechanism_info32 {
|
|
uint32_t mi_return_value;
|
|
crypto_mech_name_t mi_mechanism_name;
|
|
uint32_t mi_count;
|
|
crypto_mechanism_info32_t mi_list[1];
|
|
} crypto_get_all_mechanism_info32_t;
|
|
|
|
#endif /* _SYSCALL32 */
|
|
#endif /* _KERNEL */
|
|
|
|
#define CRYPTO_GET_MECHANISM_LIST CRYPTO(140)
|
|
#define CRYPTO_GET_ALL_MECHANISM_INFO CRYPTO(141)
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* _SYS_CRYPTO_IOCTL_H */
|