xref: /titanic_51/usr/src/uts/common/sys/crypto/ioctladmin.h (revision 735564919188238196dbd0d320770dda59b38369)
17c478bd9Sstevel@tonic-gate /*
27c478bd9Sstevel@tonic-gate  * CDDL HEADER START
37c478bd9Sstevel@tonic-gate  *
47c478bd9Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
5b5a2d845SHai-May Chao  * Common Development and Distribution License (the "License").
6b5a2d845SHai-May Chao  * You may not use this file except in compliance with the License.
77c478bd9Sstevel@tonic-gate  *
87c478bd9Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
97c478bd9Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
107c478bd9Sstevel@tonic-gate  * See the License for the specific language governing permissions
117c478bd9Sstevel@tonic-gate  * and limitations under the License.
127c478bd9Sstevel@tonic-gate  *
137c478bd9Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
147c478bd9Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
157c478bd9Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
167c478bd9Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
177c478bd9Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
187c478bd9Sstevel@tonic-gate  *
197c478bd9Sstevel@tonic-gate  * CDDL HEADER END
207c478bd9Sstevel@tonic-gate  */
217c478bd9Sstevel@tonic-gate /*
22b5a2d845SHai-May Chao  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
237c478bd9Sstevel@tonic-gate  * Use is subject to license terms.
247c478bd9Sstevel@tonic-gate  */
257c478bd9Sstevel@tonic-gate 
267c478bd9Sstevel@tonic-gate #ifndef	_SYS_CRYPTO_IOCTLADMIN_H
277c478bd9Sstevel@tonic-gate #define	_SYS_CRYPTO_IOCTLADMIN_H
287c478bd9Sstevel@tonic-gate 
297c478bd9Sstevel@tonic-gate #ifdef	__cplusplus
307c478bd9Sstevel@tonic-gate extern "C" {
317c478bd9Sstevel@tonic-gate #endif
327c478bd9Sstevel@tonic-gate 
337c478bd9Sstevel@tonic-gate #include <sys/types.h>
347c478bd9Sstevel@tonic-gate #include <sys/crypto/common.h>
357c478bd9Sstevel@tonic-gate 
367c478bd9Sstevel@tonic-gate #define	ADMIN_IOCTL_DEVICE	"/dev/cryptoadm"
377c478bd9Sstevel@tonic-gate 
387c478bd9Sstevel@tonic-gate #define	CRYPTOADMIN(x)		(('y' << 8) | (x))
397c478bd9Sstevel@tonic-gate 
407c478bd9Sstevel@tonic-gate /*
417c478bd9Sstevel@tonic-gate  * Administrative IOCTLs
427c478bd9Sstevel@tonic-gate  */
437c478bd9Sstevel@tonic-gate 
447c478bd9Sstevel@tonic-gate typedef struct crypto_get_dev_list {
457c478bd9Sstevel@tonic-gate 	uint_t			dl_return_value;
467c478bd9Sstevel@tonic-gate 	uint_t			dl_dev_count;
477c478bd9Sstevel@tonic-gate 	crypto_dev_list_entry_t	dl_devs[1];
487c478bd9Sstevel@tonic-gate } crypto_get_dev_list_t;
497c478bd9Sstevel@tonic-gate 
507c478bd9Sstevel@tonic-gate typedef struct crypto_get_soft_list {
517c478bd9Sstevel@tonic-gate 	uint_t			sl_return_value;
527c478bd9Sstevel@tonic-gate 	uint_t			sl_soft_count;
537c478bd9Sstevel@tonic-gate 	size_t			sl_soft_len;
547c478bd9Sstevel@tonic-gate 	caddr_t			sl_soft_names;
557c478bd9Sstevel@tonic-gate } crypto_get_soft_list_t;
567c478bd9Sstevel@tonic-gate 
577c478bd9Sstevel@tonic-gate typedef struct crypto_get_dev_info {
587c478bd9Sstevel@tonic-gate 	uint_t			di_return_value;
597c478bd9Sstevel@tonic-gate 	char			di_dev_name[MAXNAMELEN];
607c478bd9Sstevel@tonic-gate 	uint_t			di_dev_instance;
617c478bd9Sstevel@tonic-gate 	uint_t			di_count;
627c478bd9Sstevel@tonic-gate 	crypto_mech_name_t	di_list[1];
637c478bd9Sstevel@tonic-gate } crypto_get_dev_info_t;
647c478bd9Sstevel@tonic-gate 
657c478bd9Sstevel@tonic-gate typedef struct crypto_get_soft_info {
667c478bd9Sstevel@tonic-gate 	uint_t			si_return_value;
677c478bd9Sstevel@tonic-gate 	char			si_name[MAXNAMELEN];
687c478bd9Sstevel@tonic-gate 	uint_t			si_count;
697c478bd9Sstevel@tonic-gate 	crypto_mech_name_t	si_list[1];
707c478bd9Sstevel@tonic-gate } crypto_get_soft_info_t;
717c478bd9Sstevel@tonic-gate 
727c478bd9Sstevel@tonic-gate typedef struct crypto_load_dev_disabled {
737c478bd9Sstevel@tonic-gate 	uint_t			dd_return_value;
747c478bd9Sstevel@tonic-gate 	char			dd_dev_name[MAXNAMELEN];
757c478bd9Sstevel@tonic-gate 	uint_t			dd_dev_instance;
767c478bd9Sstevel@tonic-gate 	uint_t			dd_count;
777c478bd9Sstevel@tonic-gate 	crypto_mech_name_t	dd_list[1];
787c478bd9Sstevel@tonic-gate } crypto_load_dev_disabled_t;
797c478bd9Sstevel@tonic-gate 
807c478bd9Sstevel@tonic-gate typedef struct crypto_load_soft_disabled {
817c478bd9Sstevel@tonic-gate 	uint_t			sd_return_value;
827c478bd9Sstevel@tonic-gate 	char			sd_name[MAXNAMELEN];
837c478bd9Sstevel@tonic-gate 	uint_t			sd_count;
847c478bd9Sstevel@tonic-gate 	crypto_mech_name_t	sd_list[1];
857c478bd9Sstevel@tonic-gate } crypto_load_soft_disabled_t;
867c478bd9Sstevel@tonic-gate 
877c478bd9Sstevel@tonic-gate typedef struct crypto_unload_soft_module {
887c478bd9Sstevel@tonic-gate 	uint_t			sm_return_value;
897c478bd9Sstevel@tonic-gate 	char			sm_name[MAXNAMELEN];
907c478bd9Sstevel@tonic-gate } crypto_unload_soft_module_t;
917c478bd9Sstevel@tonic-gate 
927c478bd9Sstevel@tonic-gate typedef struct crypto_load_soft_config {
937c478bd9Sstevel@tonic-gate 	uint_t			sc_return_value;
947c478bd9Sstevel@tonic-gate 	char			sc_name[MAXNAMELEN];
957c478bd9Sstevel@tonic-gate 	uint_t			sc_count;
967c478bd9Sstevel@tonic-gate 	crypto_mech_name_t	sc_list[1];
977c478bd9Sstevel@tonic-gate } crypto_load_soft_config_t;
987c478bd9Sstevel@tonic-gate 
997c478bd9Sstevel@tonic-gate typedef struct crypto_load_door {
1007c478bd9Sstevel@tonic-gate 	uint_t			ld_return_value;
1017c478bd9Sstevel@tonic-gate 	uint_t			ld_did;
1027c478bd9Sstevel@tonic-gate } crypto_load_door_t;
1037c478bd9Sstevel@tonic-gate 
104b5a2d845SHai-May Chao typedef struct crypto_fips140 {
105b5a2d845SHai-May Chao 	uint_t			fips140_return_value;
106b5a2d845SHai-May Chao 	uint_t			fips140_op;
107b5a2d845SHai-May Chao 	uint_t			fips140_status;
108b5a2d845SHai-May Chao } crypto_fips140_t;
109b5a2d845SHai-May Chao 
1107c478bd9Sstevel@tonic-gate #ifdef	_KERNEL
1117c478bd9Sstevel@tonic-gate #ifdef	_SYSCALL32
1127c478bd9Sstevel@tonic-gate 
1137c478bd9Sstevel@tonic-gate typedef struct crypto_get_soft_list32 {
1147c478bd9Sstevel@tonic-gate 	uint32_t		sl_return_value;
1157c478bd9Sstevel@tonic-gate 	uint32_t		sl_soft_count;
1167c478bd9Sstevel@tonic-gate 	size32_t		sl_soft_len;
1177c478bd9Sstevel@tonic-gate 	caddr32_t		sl_soft_names;
1187c478bd9Sstevel@tonic-gate } crypto_get_soft_list32_t;
1197c478bd9Sstevel@tonic-gate 
1207c478bd9Sstevel@tonic-gate #endif	/* _SYSCALL32 */
1217c478bd9Sstevel@tonic-gate #endif	/* _KERNEL */
1227c478bd9Sstevel@tonic-gate 
123b5a2d845SHai-May Chao /*
124b5a2d845SHai-May Chao  * FIPS140 ioctl operations
125b5a2d845SHai-May Chao  */
126b5a2d845SHai-May Chao enum {
127b5a2d845SHai-May Chao 	FIPS140_STATUS,		/* get current fips140 mode */
128b5a2d845SHai-May Chao 	FIPS140_ENABLE,		/* enable fips140 mode */
129b5a2d845SHai-May Chao 	FIPS140_DISABLE		/* disable fips140 mode */
130*73556491SAnthony Scarpino 
131*73556491SAnthony Scarpino 
132b5a2d845SHai-May Chao };
133b5a2d845SHai-May Chao 
134b5a2d845SHai-May Chao /*
135b5a2d845SHai-May Chao  * FIPS140 Mode Status
136b5a2d845SHai-May Chao  */
137b5a2d845SHai-May Chao enum {
138*73556491SAnthony Scarpino 	FIPS140_MODE_UNSET,	 /* userland has not told us the mode */
139*73556491SAnthony Scarpino 	FIPS140_MODE_VALIDATING, /* In the process of validation to enable */
140*73556491SAnthony Scarpino 	FIPS140_MODE_SHUTDOWN,	 /* Failure has occurred, shutdown framework */
141*73556491SAnthony Scarpino 	FIPS140_MODE_ENABLED,	 /* Validation is complete and we are running */
142*73556491SAnthony Scarpino 	FIPS140_MODE_DISABLED	 /* Not running in FIPS 140 mode */
143b5a2d845SHai-May Chao };
144b5a2d845SHai-May Chao 
1457c478bd9Sstevel@tonic-gate #define	CRYPTO_GET_VERSION		CRYPTOADMIN(1)
1467c478bd9Sstevel@tonic-gate #define	CRYPTO_GET_DEV_LIST		CRYPTOADMIN(2)
1477c478bd9Sstevel@tonic-gate #define	CRYPTO_GET_SOFT_LIST		CRYPTOADMIN(3)
1487c478bd9Sstevel@tonic-gate #define	CRYPTO_GET_DEV_INFO		CRYPTOADMIN(4)
1497c478bd9Sstevel@tonic-gate #define	CRYPTO_GET_SOFT_INFO		CRYPTOADMIN(5)
1507c478bd9Sstevel@tonic-gate #define	CRYPTO_LOAD_DEV_DISABLED	CRYPTOADMIN(8)
1517c478bd9Sstevel@tonic-gate #define	CRYPTO_LOAD_SOFT_DISABLED	CRYPTOADMIN(9)
1527c478bd9Sstevel@tonic-gate #define	CRYPTO_UNLOAD_SOFT_MODULE	CRYPTOADMIN(10)
1537c478bd9Sstevel@tonic-gate #define	CRYPTO_LOAD_SOFT_CONFIG		CRYPTOADMIN(11)
1547c478bd9Sstevel@tonic-gate #define	CRYPTO_POOL_CREATE		CRYPTOADMIN(12)
1557c478bd9Sstevel@tonic-gate #define	CRYPTO_POOL_WAIT		CRYPTOADMIN(13)
1567c478bd9Sstevel@tonic-gate #define	CRYPTO_POOL_RUN			CRYPTOADMIN(14)
1577c478bd9Sstevel@tonic-gate #define	CRYPTO_LOAD_DOOR		CRYPTOADMIN(15)
158b5a2d845SHai-May Chao #define	CRYPTO_FIPS140_STATUS		CRYPTOADMIN(16)
159b5a2d845SHai-May Chao #define	CRYPTO_FIPS140_SET		CRYPTOADMIN(17)
1607c478bd9Sstevel@tonic-gate 
1617c478bd9Sstevel@tonic-gate #ifdef	__cplusplus
1627c478bd9Sstevel@tonic-gate }
1637c478bd9Sstevel@tonic-gate #endif
1647c478bd9Sstevel@tonic-gate 
1657c478bd9Sstevel@tonic-gate #endif	/* _SYS_CRYPTO_IOCTLADMIN_H */
166