1/*- 2 * Copyright (C) 2001-2003 by NBMK Encryption Technologies. 3 * All rights reserved. 4 * 5 * NBMK Encryption Technologies provides no support of any kind for 6 * this software. Questions or concerns about it may be addressed to 7 * the members of the relevant open-source community at 8 * <tech-crypto@netbsd.org>. 9 * 10 * Redistribution and use in source and binary forms, with or without 11 * modification, are permitted provided that the following conditions are 12 * met: 13 * 14 * 1. Redistributions of source code must retain the above copyright 15 * notice, this list of conditions and the following disclaimer. 16 * 17 * 2. Redistributions in binary form must reproduce the above 18 * copyright notice, this list of conditions and the following 19 * disclaimer in the documentation and/or other materials provided 20 * with the distribution. 21 * 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 23 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 24 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 25 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 26 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 27 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 28 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 29 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 30 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 32 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 33 */ 34 35/***************************************************************************** 36 * @(#) n8_daemon_common.h 1.10@(#) 37 *****************************************************************************/ 38 39/*****************************************************************************/ 40/** @file n8_daemon_common.h 41 * @brief This file defines the message formats used by the 42 * N8 daemon ioctl mechanism, which enables the driver to 43 * depute a specific set of file system procedures to a 44 * dedicated user process or daemon. 45 * 46 * This mechanism is split between the kernel driver and 47 * a userspace program. This file should be included by both the driver 48 * and the dedicated user process. 49 * 50 *****************************************************************************/ 51 52/***************************************************************************** 53 * Revision history: 54 * 04/10/02 mmd Created N8_DRIVER_DEVNODE. 55 * 04/04/02 spm Removed definition of daemon lock filename. 56 * 02/05/02 spm Changed n8DaemonStatus_t to N8_Status_t. 57 * 01/22/02 spm Added N8_DAEMON_LOCK_FILE so that it is globally 58 * defined. 59 * 01/19/02 spm Removed nUnits member from message structure, 60 * since now, the API will only ask the N8 daemon 61 * to initialize one (1) execution unit at a time. 62 * 01/16/02 spm Stole N8_KERN_CHECK_RETURN from n8_api_driver.h. 63 * This should be made more publicly available to 64 * the driver code. Removed inline functions. 65 * 12/17/01 spm Original version. 66 ****************************************************************************/ 67#ifndef _N8_DAEMON_COMMON_H 68#define _N8_DAEMON_COMMON_H 69 70/***************************************************************************** 71 * #defines 72 *****************************************************************************/ 73 74/* devnode for driver */ 75#define N8_DRIVER_DEVNODE "/dev/nsp2000" 76 77/* this is the maximum size in bytes of the parm struct. in the case of 78 * the key handles, this is way more memory than necessary. 79 */ 80#define N8_DAEMON_MAX_PATH_LEN N8_SKS_ENTRY_NAME_MAX_LENGTH+256 /* max full path length in chars */ 81 82/* below, len is the desired strlen(str) of str in characters 83 * (i.e. not including the terminating null charcter) 84 * this allows one to force string delimiting after 85 * a specified number of characters, thereby 86 * avoiding nasty seg faults. 87 */ 88#define N8_TRUNC_STR(str,len) (((char *) (str))[(len)] = '\0') 89 90#define CHECK_RETURN(RET) \ 91 if ((RET) != N8_STATUS_OK) \ 92 { \ 93 break; \ 94 } 95 96 97/***************************************************************************** 98 * Structures/type definitions 99 *****************************************************************************/ 100/* these enums define the specific set of file system procedures recognized 101 * by the sks daemon ioctl mechanism 102 */ 103typedef enum 104{ 105 /* bit3 clear means start */ 106 N8_DAEMON_WRITE_START = 0x00, 107 N8_DAEMON_RESET_START = 0x01, 108 N8_DAEMON_DELETE_START = 0x02, 109 N8_DAEMON_READ_START = 0x03, 110 N8_DAEMON_INIT_START = 0x04, 111 N8_DAEMON_SHUTDOWN_START = 0x05, 112 113 /* bit3 set means finish */ 114 N8_DAEMON_WRITE_FINISH = 0x08, 115 N8_DAEMON_RESET_FINISH = 0x09, 116 N8_DAEMON_DELETE_FINISH = 0x0A, 117 N8_DAEMON_READ_FINISH = 0x0B, 118 N8_DAEMON_INIT_FINISH = 0x0C, 119 N8_DAEMON_SHUTDOWN_FINISH = 0x0D 120 121} n8_DaemonCmd_t; 122 123/* If sizeof(PARAMSTRUCT_t) < sizeof(n8DaemonMsg_t) 124 * we can't overlay n8DaemonMsg_t inside 125 * PARMSTRUCT_t (kernel/userspace copying will not work 126 * in N8_ioctl) 127 */ 128typedef struct 129{ 130 n8_DaemonCmd_t cmd; 131 N8_Status_t status; 132 N8_Unit_t unit; 133 N8_SKSKeyHandle_t *keyHandle_p; 134 N8_Buffer_t *string_p; 135 N8_Buffer_t *SKS_Descriptor_p; 136 137} n8_DaemonMsg_t; 138 139 140 141/***************************************************************************** 142 * Function prototypes 143 *****************************************************************************/ 144 145 146 147#endif /* _N8_DAEMON_COMMON_H */ 148 149 150 151 152 153 154 155 156