xref: /onnv-gate/usr/src/cmd/wusbadm/crypto_util.h (revision 9430:637732b28916)
1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License (the "License").
6  * You may not use this file except in compliance with the License.
7  *
8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9  * or http://www.opensolaris.org/os/licensing.
10  * See the License for the specific language governing permissions
11  * and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL HEADER in each
14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15  * If applicable, add the following below this CDDL HEADER, with the
16  * fields enclosed by brackets "[]" replaced with your own identifying
17  * information: Portions Copyright [yyyy] [name of copyright owner]
18  *
19  * CDDL HEADER END
20  */
21 /*
22  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
23  * Use is subject to license terms.
24  */
25 
26 #ifndef	_CRYPTO_UTIL_H
27 #define	_CRYPTO_UTIL_H
28 
29 
30 #ifdef	__cplusplus
31 extern "C" {
32 #endif
33 
34 #include <limits.h>
35 #include <security/cryptoki.h>
36 #include <security/pkcs11.h>
37 #include <kmfapi.h>
38 
39 #include <sys/usb/usba/wusba_io.h>
40 
41 
42 #define	WUSB_DEV_MAC_LENGTH		6
43 #define	WUSB_CC_LABEL_LENGTH		(WUSB_DEV_MAC_LENGTH * 2 + 1)
44 #define	WUSB_TYPE_LEN			16
45 
46 /*
47  * wusb_cc_info.
48  * Record the association information and it is
49  * saved at /etc/usb/wusbcc
50  */
51 typedef	struct wusb_cc_info {
52 	uint8_t			mac[WUSB_DEV_MAC_LENGTH];
53 	wusb_cc_t		cc;   /* cc info */
54 	char			type[WUSB_TYPE_LEN]; /* device/host path */
55 	uint8_t			host; /* Host id */
56 	uint16_t		dev;  /* Device id */
57 	char			flag; /* Onetime/Always */
58 } wusb_cc_info_t;
59 
60 
61 /* Device state definition */
62 #define	DEV_STAT_DISCONN	0x00
63 #define	DEV_STAT_CONNECT	0x01
64 
65 /* wusbadm list structure */
66 typedef	struct wusb_cc_list {
67 	struct wusb_cc_list	*next;
68 	wusb_cc_info_t		info;   /* cc info */
69 	uint8_t			stat;	/* host or device state */
70 } wusb_cc_list_t;
71 
72 typedef	struct wusb_device_info {
73 	char			type[WUSB_TYPE_LEN];
74 	uint8_t			host; /* host id */
75 	uint16_t		dev;  /* device id */
76 	uint8_t			stat; /* state */
77 } wusb_device_info_t;
78 
79 /* cc generation functions */
80 int	wusb_crypto_init(KMF_HANDLE_T *, CK_SESSION_HANDLE *,
81 		const char *, const char *);
82 void	wusb_crypto_fini(KMF_HANDLE_T);
83 
84 int	wusb_random(CK_SESSION_HANDLE, CK_BYTE *, size_t, CK_BYTE *, size_t);
85 
86 
87 void	mac_to_label(uint8_t *, char *);
88 
89 void	print_array(const char *, CK_BYTE *, size_t);
90 
91 int	chk_auths(uid_t, const char *);
92 #ifdef __cplusplus
93 }
94 #endif
95 
96 #endif	/* _CRYPTO_UTIL_H */
97