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 */