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 35static char const n8_id[] = "$Id: n8_daemon_kernel.c,v 1.1 2008/10/30 12:02:14 darran Exp $"; 36/*****************************************************************************/ 37/** @file n8_daemon_kernel.c 38 * @brief This file implements the driver half of the N8 daemon ioctl 39 * mechanism. 40 * 41 *---------------------------------------------------------------------------- 42 * Key Handle File Functional Interfaces 43 * (See sdk/common/include_private/n8_daemon_sks.h) 44 *---------------------------------------------------------------------------- 45 * 46 * n8_daemon_sks_read - Reads data from the specified key handle file into 47 * a key handle structure. 48 * 49 * n8_daemon_sks_write - Write data in key handle specified into a key 50 * handle file with specified name. 51 * 52 * n8_daemon_sks_delete - Deletes specified key handle file from the host 53 * file system. 54 * 55 * n8_dameon_sks_reset - Deletes all key handle files from host 56 * file system. 57 * 58 *****************************************************************************/ 59 60/***************************************************************************** 61 * Revision history: 62 * 10/25/02 brr Clean up function prototypes & include files. 63 * 04/03/02 spm Removed use of daemon. Changed existing interfaces to 64 * return N8_FILE_ERROR. Removed init interface. 65 * 03/18/02 bac Added debugging information for daemon failures. 66 * 03/13/02 brr Make n8_daemon_init reentrant to support BSD initialization. 67 * 03/08/02 msz No more system semaphores. 68 * 02/22/02 spm Changed keyEntryName_p type class to const in sks_write. 69 * 02/22/02 spm Converted printk's to DBG's. 70 * 02/05/02 spm Removed const typing. Reverted to using N8_Status_t, 71 * as opposed to the original daemon status. 72 * 01/28/02 spm Removed finish semaphore and replaced it with n8_usleep. 73 * This will cause the SKS daemon interfaces to sleep for 74 * a specified timeout, rather than potentially blocking the 75 * caller forever. 76 * 01/22/02 spm Added include of n8_sks.h. NOTE: we will want 77 * to move this header to common/include_private. 78 * 01/20/02 spm Serialized access to daemon. Split interface 79 * into internal and functional halves. 80 * 01/17/02 spm Fixed some debug statements. 81 * 01/16/02 spm Revamp for integration w/ /wing/SDK-2.1 82 * 12/17/01 spm Original version. 83 ****************************************************************************/ 84/** @defgroup subsystem_name Subsystem Title (not used for a header file) 85 */ 86 87#include "n8_pub_common.h" 88#include "n8_daemon_sks.h" 89 90 91/***************************************************************************** 92 * n8_daemon_sks_read 93 *****************************************************************************/ 94/** @ingroup n8_sks 95 * @brief Read a key handle from an SKS entry. 96 * 97 * Reads from a file, formatted for the keyhandle contents. Note that 98 * this function does not know what the key entry name is. It is the 99 * responsibility of the caller to set this field in the key handle. We 100 * only set the key type, length, unitID, and offset. 101 * 102 * WARNING: THIS FUNCTION IS NOT IMPLEMENTED IN THE KERNEL! 103 * 104 * @param *keyHandle_p RW: A key handle pointer. 105 * @param *keyEntryPath_p RO: key entry path (full pathname) 106 * 107 * @par Externals: None. 108 * 109 * @return 110 * N8_FILE_ERROR 111 * 112 * @par Errors: 113 * N8_FILE_ERROR 114 * 115 * @par Locks: None. 116 * 117 * @par Assumptions: None. 118 *****************************************************************************/ 119N8_Status_t n8_daemon_sks_read(N8_SKSKeyHandle_t* keyHandle_p, 120 char *keyEntryPath_p) 121{ 122 123 return N8_FILE_ERROR; 124 125} /* n8_daemon_sks_read */ 126 127 128/***************************************************************************** 129 * n8_daemon_sks_write 130 *****************************************************************************/ 131/** @ingroup n8_sks 132 * @brief Write a key handle to an SKS entry. 133 * 134 * Writes to a file, formatted for the keyhandle contents. 135 * 136 * WARNING: THIS FUNCTION IS NOT IMPLEMENTED IN THE KERNEL! 137 * 138 * @param *sks_key_p RW: key handle pointer. 139 * @param *keyEntryName_p RO: key entry name (filename, NOT path) 140 * 141 * @par Externals: None. 142 * 143 * @return 144 * N8_FILE_ERROR 145 * 146 * @par Errors: 147 * N8_FILE_ERROR 148 * 149 * @par Locks: None. 150 * 151 * @par Assumptions: None. 152 *****************************************************************************/ 153N8_Status_t n8_daemon_sks_write(N8_SKSKeyHandle_t *sks_key_p, 154 const char *keyEntryName_p) 155{ 156 157 return N8_FILE_ERROR; 158 159} /* n8_daemon_sks_write */ 160 161 162/***************************************************************************** 163 * n8_daemon_sks_delete 164 *****************************************************************************/ 165/** @ingroup substem_name 166 * @brief Deletes a key handle file. 167 * 168 * 169 * WARNING: THIS FUNCTION IS NOT IMPLEMENTED IN THE KERNEL! 170 * 171 * @param keyEntryPath_p RO: key entry path (full pathname) 172 * 173 * @par Externals: None. 174 * 175 * @return 176 * N8_FILE_ERROR 177 * 178 * @par Errors: 179 * N8_FILE_ERROR 180 * 181 * @par Locks: None. 182 * 183 * @par Assumptions: None. 184 *****************************************************************************/ 185N8_Status_t n8_daemon_sks_delete(char *keyEntryPath_p) 186{ 187 188 return N8_FILE_ERROR; 189 190} /* n8_daemon_sks_delete */ 191 192/***************************************************************************** 193 * n8_daemon_sks_reset 194 *****************************************************************************/ 195/** @ingroup n8_sks 196 * @brief Remove all the key handle files from the host file system 197 * 198 * WARNING: THIS FUNCTION IS NOT IMPLEMENTED IN THE KERNEL! 199 * 200 * @param targetSKS RO: execution unit to reset 201 * 202 * @par Externals: None. 203 * 204 * @return 205 * N8_FILE_ERROR 206 * 207 * @par Errors: 208 * N8_FILE_ERROR 209 * 210 * @par Locks: None. 211 * 212 * @par Assumptions: None. 213 *****************************************************************************/ 214N8_Status_t n8_daemon_sks_reset(N8_Unit_t targetSKS) 215{ 216 217 return N8_FILE_ERROR; 218 219} /* n8_daemon_sks_reset */ 220 221 222 223 224 225 226 227