annotate usr/src/lib/libkmsagent/common/KMSAgent_direct.h @ 12720:3db6e0082404

PSARC 2010/195 PKCS11 KMS Provider 6944296 Solaris needs a PKCS#11 provider to allow access to KMS keystore functionality
author Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
date Mon, 28 Jun 2010 16:04:11 -0700
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12720
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
1 /*
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
2 * CDDL HEADER START
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
3 *
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
4 * The contents of this file are subject to the terms of the
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
5 * Common Development and Distribution License (the "License").
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
6 * You may not use this file except in compliance with the License.
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
7 *
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
9 * or http://www.opensolaris.org/os/licensing.
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
10 * See the License for the specific language governing permissions
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
11 * and limitations under the License.
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
12 *
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
13 * When distributing Covered Code, include this CDDL HEADER in each
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
15 * If applicable, add the following below this CDDL HEADER, with the
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
16 * fields enclosed by brackets "[]" replaced with your own identifying
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
17 * information: Portions Copyright [yyyy] [name of copyright owner]
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
18 *
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
19 * CDDL HEADER END
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
20 */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
21
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
22 /*
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
23 * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
24 */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
25
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
26 /**
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
27 * \file direct.h
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
28 *
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
29 * This file is included in KMSAgentStorage.cpp to provide file handling
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
30 * hooks. It also contains our EEPROM file handling functions.
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
31 *
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
32 * HISTORY:
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
33 * 8/6/07 BJB Added code for 9840D encryption sectors
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
34 * 4/7/08 BJB Changed to remove 'file is junk' message - EVT
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
35 * didn't like it.
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
36 * 4/24/08 BJB Added function call back to T10000/9840D code
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
37 * to lookup eeprom address -
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
38 * so it isn't a hardcoded value.
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
39 * 05/09/08 BJB Added being more conservative about EEPROM so as to change
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
40 * frequency of 32CA problems
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
41 *
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
42 */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
43
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
44
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
45 #ifndef KMSAGENT_DIRECT_H
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
46 #define KMSAGENT_DIRECT_H
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
47
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
48 #include <stdio.h>
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
49 #include <string.h>
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
50
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
51 #ifdef WIN32
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
52 #include <direct.h>
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
53 #endif
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
54
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
55 #define my_unlink(a) unlink(a)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
56 #define my_rmdir(a) rmdir(a)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
57
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
58 #ifndef METAWARE
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
59
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
60 #define myFILE FILE
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
61
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
62 #else // METAWARE
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
63
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
64 #include "SYSCommon.h"
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
65 #include "debug.h"
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
66 #include <snprintf.h>
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
67
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
68 extern "C" void ecpt_trace_msg(ECPT_TRACE_ENTRY*,const char*,...);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
69
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
70 extern char st[256];
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
71
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
72
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
73 #ifndef I_KNOW_REAL_NAMES
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
74 #undef fopen
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
75 #undef fclose
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
76 #undef fputs
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
77 #undef fgets
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
78 #undef fwrite
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
79 #undef fread
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
80 #undef unlink
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
81 #undef rmdir
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
82
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
83 #define fopen my_eeprom_fopen
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
84 #define fclose my_eeprom_fclose
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
85 #define fputs my_eeprom_fputs
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
86 #define fwrite my_eeprom_fwrite
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
87 #define fread my_eeprom_fread
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
88 #define fgets my_eeprom_fgets
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
89 #define unlink my_eeprom_unlink
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
90 #define rmdir my_eeprom_rmdir
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
91
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
92 #define my_eeprom_rmdir(a) (1)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
93
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
94 #endif
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
95
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
96
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
97 #include "KMSClientProfile.h"
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
98 extern char KMSAgent_Version[KMS_MAX_VERSION_LENGTH];
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
99
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
100 unsigned char volatile* eeprom_addr_lookup_FILESYSTEM_START_ADDR(void);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
101 unsigned int EEPROM_Sector_size(void);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
102
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
103 #define FILESYSTEM_SECTOR (eeprom_addr_lookup_FILESYSTEM_START_ADDR())
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
104 // was ((unsigned char volatile*)0xf20000) on 9840
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
105 // was ((unsigned char volatile*)0x41dc0000) on T10000
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
106
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
107 #define FILESYSTEM_SECTOR_SIZE (EEPROM_Sector_size())
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
108 // was hardcoded 0x20000
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
109
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
110 #define EEPROM_ERASED_BYTE 0xFF
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
111
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
112 /* size of a file allowed (not counting the name) */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
113 #define EEPROM_FILE_SECT_SIZE 0x1800
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
114
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
115 /* size of a file name allowed (+ the null) */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
116 #define EEPROM_FNAME_SIZE 0x80
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
117
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
118 // 1000h = 4096d
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
119 #define EEPROM_BLOCK_SIZE (EEPROM_FILE_SECT_SIZE - EEPROM_FNAME_SIZE - 4)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
120
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
121 /* number of 'files' available */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
122 #define FTABLE_SIZE 0x5
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
123
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
124
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
125 #define UCHAR8 unsigned char
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
126 #define UINT32 unsigned long
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
127
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
128
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
129 extern "C" unsigned long
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
130 EEPROM_Sector_Erase( unsigned char volatile *sector_address );
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
131
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
132 extern "C" unsigned long
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
133 Flash_Write( UCHAR8 *destinationP,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
134 UCHAR8 *sourceP,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
135 UINT32 byteCount);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
136
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
137 extern "C" unsigned long
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
138 Flash_Read( UCHAR8 *dstP,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
139 UCHAR8 *srcP,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
140 UINT32 byteCount);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
141
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
142 /* a eeprom file */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
143 struct eepromBlockStruct
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
144 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
145 unsigned long fsize;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
146 char fname[EEPROM_FNAME_SIZE];
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
147 unsigned char fdata[EEPROM_BLOCK_SIZE];
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
148 };
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
149
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
150
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
151 struct fileSystem
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
152 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
153 struct eepromBlockStruct ftable[FTABLE_SIZE];
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
154 /* what level of toolkit wrote this - for
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
155 future compatibility */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
156 char writingversion[KMS_MAX_VERSION_LENGTH+1];
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
157 };
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
158
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
159
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
160 #define MODE_WRITE 0x01
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
161 #define MODE_READ 0x02
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
162
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
163 #define MYFILE_CLOSED 0x0
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
164 #define MYFILE_OPEN_READ 0x1
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
165 #define MYFILE_OPEN_WRITE 0x2
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
166
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
167
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
168 /* an open file */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
169 typedef struct fileStruct
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
170 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
171 unsigned char *readptr;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
172 unsigned long readsize;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
173 unsigned char *writeptr;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
174 struct eepromBlockStruct *memptr;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
175 unsigned long mode;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
176 unsigned long file_number;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
177 } myFILE;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
178
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
179
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
180 extern "C" myFILE *my_eeprom_fopen (const char *filename, const char *mode);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
181 extern "C" int my_eeprom_fclose (myFILE *stream);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
182 extern "C" int my_eeprom_fputs (const char *s, myFILE *stream);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
183 extern "C" int my_eeprom_fwrite (const char *s, int size, int nobj, myFILE *f);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
184 extern "C" int my_eeprom_fread (char *s, int size, int nobj, myFILE *f);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
185 extern "C" char *my_eeprom_fgets (char *s, int n, myFILE *stream);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
186 extern "C" int my_eeprom_unlink (const char *filename);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
187 extern "C" int my_eeprom_fsys_erase(void);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
188
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
189 #ifndef FALSE
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
190 #define FALSE 0
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
191 #endif
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
192 #ifndef TRUE
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
193 #define TRUE 1
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
194 #endif
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
195
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
196 #ifdef DEFINE_STORAGE
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
197 /* ram copy of the file system */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
198 struct fileSystem ramFileSystem;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
199 int file_read = FALSE;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
200
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
201 /* file state - open/closed/etc */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
202 unsigned long fstate[FTABLE_SIZE] = {MYFILE_CLOSED,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
203 MYFILE_CLOSED,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
204 MYFILE_CLOSED,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
205 MYFILE_CLOSED,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
206 MYFILE_CLOSED};
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
207 #else
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
208 /* ram copy of the file system */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
209 extern struct fileSystem ramFileSystem;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
210 extern int file_read;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
211
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
212 /* file state - open/closed/etc */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
213 extern unsigned long fstate[FTABLE_SIZE];
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
214
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
215 #endif
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
216
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
217
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
218
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
219 #ifdef DEFINE_STORAGE
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
220
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
221
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
222 extern "C" unsigned long
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
223
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
224
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
225 /* UNIT TEST */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
226 int TESTV = 0;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
227
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
228 /* UNIT TEST */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
229 #define MY_FLASH_READ(a,b,c) \
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
230 Flash_Read(a,b,c); \
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
231 if (TESTV++ < 5) { \
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
232 ramFileSystem.ftable[0].fname[0] = EEPROM_ERASED_BYTE; \
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
233 ramFileSystem.ftable[1].fsize = EEPROM_BLOCK_SIZE+1; \
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
234 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
235
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
236
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
237
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
238 /**
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
239 * my_eeprom_fopen()
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
240 * my filesystem fileopen
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
241 */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
242 extern "C" myFILE *my_eeprom_fopen(const char *filename, const char *mode)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
243 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
244 int i;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
245 myFILE *file;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
246 int open_for_write = TRUE;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
247 static int Firsttime = TRUE;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
248 int retries = 100;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
249
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
250 ECPT_TRACE_ENTRY *trace = NULL;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
251 ECPT_TRACE( trace, my_eeprom_fopen ) ;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
252 ecpt_trace_msg( trace, "file %s", (char*)filename);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
253
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
254 FATAL_ASSERT(filename);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
255 FATAL_ASSERT(mode);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
256
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
257 if ( (strcmp(mode,"wb") == 0) ||
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
258 (strcmp(mode,"w") == 0))
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
259 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
260 // write
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
261 open_for_write = TRUE;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
262 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
263 else if ( (strcmp(mode,"r") == 0) ||
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
264 (strcmp(mode,"rb") == 0) )
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
265 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
266 // read binary
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
267 open_for_write = FALSE;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
268 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
269 else
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
270 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
271 FATAL_APPLICATION_STATE("my_eeprom_fopen : Illegal mode");
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
272 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
273
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
274 /* read the file table from eeprom? */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
275 if (!file_read)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
276 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
277 RETRY:
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
278
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
279 MY_FLASH_READ((unsigned char *)&ramFileSystem,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
280 (unsigned char *)FILESYSTEM_SECTOR,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
281 sizeof(ramFileSystem));
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
282
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
283 /* Audit the filesystem - if it looks junked, reclaim bad files */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
284
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
285 for (i=0; i < FTABLE_SIZE; i++)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
286 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
287 if ( (ramFileSystem.ftable[i].fname[0] == EEPROM_ERASED_BYTE) ||
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
288 (ramFileSystem.ftable[i].fsize > EEPROM_BLOCK_SIZE) )
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
289 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
290 /* if this looks bad, don't accept this outcome until
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
291 100 retries */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
292 if (retries-- > 0)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
293 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
294 ecpt_trace_msg( trace, "file was junk - retrying %s", (char*)filename);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
295 log_error_printf(
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
296 "KMSAgent_direct::fopen file %d is junk - (name %x, "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
297 "size %x, data %x) RETRYING \n",
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
298 i,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
299 ramFileSystem.ftable[i].fname[0],
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
300 ramFileSystem.ftable[i].fsize ,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
301 ramFileSystem.ftable[i].fdata[0]);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
302
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
303 goto RETRY;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
304 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
305 else
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
306 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
307 ecpt_trace_msg( trace, "file was junk - formatting %s", (char*)filename);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
308 log_error_printf(
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
309 "KMSAgent_direct::fopen file %d is junk - (name %x, "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
310 "size %x, data %x) formatting it\n",
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
311 i,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
312 ramFileSystem.ftable[i].fname[0],
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
313 ramFileSystem.ftable[i].fsize ,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
314 ramFileSystem.ftable[i].fdata[0]);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
315
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
316 /* set data to reasonable starting values */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
317 ramFileSystem.ftable[i].fname[0] = 0;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
318 ramFileSystem.ftable[i].fsize = 0;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
319 ramFileSystem.ftable[i].fdata[0] = 0;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
320 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
321
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
322 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
323
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
324 } /* for */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
325
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
326 file_read = TRUE;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
327
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
328 } /* !file read */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
329
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
330 /* read the file table */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
331 for (i=0; i < FTABLE_SIZE; i++)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
332 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
333 /* compare filename to ram copy filename */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
334 if (strcmp(filename, (const char *)ramFileSystem.ftable[i].fname) == 0)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
335 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
336
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
337 if (fstate[i] != MYFILE_CLOSED)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
338 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
339 log_printf("KMSAgent_direct::fopen FN=%s file matches, "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
340 "FILE %d WAS ALREADY OPEN for %s with mode %s"
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
341 "file size is %d \n",
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
342 filename,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
343 i,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
344 (fstate[i] == MYFILE_OPEN_WRITE ? "WRITE": "READ"),
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
345 mode,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
346 ramFileSystem.ftable[i].fsize);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
347 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
348
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
349 /* create a new ramfile handle */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
350 file = malloc(sizeof(myFILE));
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
351
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
352 /* since file is being rewritten, it is now size 0 */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
353 if (open_for_write)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
354 ramFileSystem.ftable[i].fsize = 0;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
355
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
356 /* remember the file is open */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
357 fstate[i]= open_for_write ? MYFILE_OPEN_WRITE : MYFILE_OPEN_READ;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
358
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
359
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
360 /* if filename matches, set file pointers to it */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
361 file->writeptr = file->readptr = ramFileSystem.ftable[i].fdata;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
362 file->memptr = &ramFileSystem.ftable[i];
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
363 file->readsize = 0;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
364 file->mode = open_for_write ? MODE_WRITE : MODE_READ;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
365 file->file_number = i;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
366
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
367
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
368 log_printf("KMSAgent_direct::fopen FN=%s file matches, "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
369 "opening existing file number %d with mode %s"
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
370 "file size is %d \n",
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
371 filename,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
372 i,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
373 mode,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
374 ramFileSystem.ftable[i].fsize);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
375
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
376 break;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
377 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
378
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
379 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
380
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
381 /* if no existing entry was found, assign a new entry to this filename */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
382 if (i == FTABLE_SIZE)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
383 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
384 /* couldn't find an old file and opened for read so return NULL */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
385 if (open_for_write == FALSE)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
386 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
387
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
388
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
389 log_printf("KMSAgent_direct::fopen FN=%s no file match, "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
390 "file opened for read so return NULL %d\n",
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
391 filename,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
392 i);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
393
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
394
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
395 return NULL;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
396 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
397
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
398 /* find a free file pointer */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
399 for (i=0; i < FTABLE_SIZE ; i++)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
400 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
401 /* empty data will be 0xffffffff since it was copied
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
402 straight from EEPROM */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
403 if (ramFileSystem.ftable[i].fname[0] == '\0')
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
404 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
405 log_printf("KMSAgent_direct::fopen FN=%s no file match, "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
406 "opening new file %d\n",
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
407 filename,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
408 i);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
409
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
410 /* give it a filename - marks this as in use */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
411 strcpy ((char *)ramFileSystem.ftable[i].fname, filename);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
412
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
413 /* set filesize to zero */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
414 ramFileSystem.ftable[i].fsize = 0;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
415
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
416 /* remember the file is open */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
417 fstate[i]= open_for_write ? MYFILE_OPEN_WRITE : MYFILE_OPEN_READ;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
418
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
419
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
420 /* create a new ramfile handle */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
421 file = malloc(sizeof(myFILE));
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
422
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
423 /* if filename matches, set file pointers to it */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
424 file->writeptr = file->readptr = ramFileSystem.ftable[i].fdata;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
425 file->memptr = &ramFileSystem.ftable[i];
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
426 file->readsize = 0;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
427 file->mode = open_for_write ? MODE_WRITE : MODE_READ;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
428 file->file_number = i;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
429
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
430 break;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
431 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
432
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
433 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
434
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
435 if (i == FTABLE_SIZE)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
436 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
437 log_error_printf("KMSAgent_direct::fopen FN=%s no free files \n",
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
438 filename);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
439 /* no free entries - bail */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
440 return NULL;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
441 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
442
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
443 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
444
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
445 /* return pointer to the myFILE struct created */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
446 return file;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
447
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
448 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
449
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
450 /**
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
451 * my_eeprom_fclose()
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
452 * my filesystem fileclose
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
453 */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
454 extern "C" int my_eeprom_fclose(myFILE *f)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
455 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
456 ECPT_TRACE_ENTRY *trace = NULL;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
457 ECPT_TRACE( trace, my_eeprom_fclose ) ;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
458 ecpt_trace_msg( trace, "entered");
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
459
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
460 FATAL_ASSERT(f);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
461
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
462 #ifdef DEBUG
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
463 log_printf("KMSAgent_direct::fclose FN=%s, "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
464 "FILE %d "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
465 "file size is %d \n",
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
466 ramFileSystem.ftable[f->file_number].fname,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
467 f->file_number,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
468 ramFileSystem.ftable[f->file_number].fsize);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
469 #endif
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
470
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
471 if (fstate[f->file_number] == MYFILE_CLOSED)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
472 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
473 log_error_printf("KMSAgent_direct::fclose FN=%s, "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
474 "FILE %d WAS ALREADY CLOSED "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
475 "file size is %d \n",
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
476 ramFileSystem.ftable[f->file_number].fname,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
477 f->file_number,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
478 ramFileSystem.ftable[f->file_number].fsize);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
479 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
480
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
481 /* remember the file is closed */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
482 fstate[f->file_number]= MYFILE_CLOSED;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
483
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
484 /* don't rewrite eeprom unless file was opened for writing */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
485 if (f->mode == MODE_WRITE)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
486 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
487 /* Erase the sector we are rewriting */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
488 EEPROM_Sector_Erase( (unsigned char*)FILESYSTEM_SECTOR ) ;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
489
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
490 /* remember the version of toolkit that wrote this filesystem
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
491 (for any future compatibility problems). */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
492 strncpy(ramFileSystem.writingversion,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
493 KMSAgent_Version,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
494 sizeof(KMSAgent_Version));
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
495
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
496 /* flush the memory indicated by myFILE * out to EEPROM */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
497 /* see boot_eeprom.c for details on Flash_Write */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
498 Flash_Write ((unsigned char*)FILESYSTEM_SECTOR,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
499 (unsigned char*)&ramFileSystem,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
500 FILESYSTEM_SECTOR_SIZE);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
501 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
502
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
503 /* delete the placeholder file */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
504 free(f);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
505
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
506 return 0;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
507 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
508
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
509 /**
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
510 * my_eeprom_fputs()
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
511 * my filesystem put string
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
512 */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
513 extern "C" int my_eeprom_fputs(const char *s, myFILE *f)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
514 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
515 /* put the string to the memory indicated by myFILE */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
516 int i;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
517 ECPT_TRACE_ENTRY *trace = NULL;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
518 ECPT_TRACE( trace, my_eeprom_fputs ) ;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
519
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
520 ecpt_trace_msg (trace, "\nmy_eeprom_fputs : Entered");
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
521
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
522 #ifdef DEBUG
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
523 log_printf(
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
524 "\nKMSAgent_direct::my_eeprom_fputs "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
525 "f->writeptr =%x "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
526 "f->readptr=%x "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
527 "f->readsize=%x "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
528 "f->memptr=%x"
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
529 "f->memptr->fsize=%x\n",
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
530 f->writeptr,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
531 f->readptr,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
532 f->readsize,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
533 f->memptr,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
534 f->memptr->fsize);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
535
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
536 #endif
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
537
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
538 FATAL_ASSERT(s);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
539 FATAL_ASSERT(f);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
540
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
541 for (i=0;;i++)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
542 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
543 /* end of input string? quit */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
544 if (*s == '\0')
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
545 break;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
546
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
547 /* end of max file memory, quit */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
548 if ((unsigned char*)s >=
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
549 (unsigned char*)(f->memptr + sizeof(struct eepromBlockStruct)))
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
550 break;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
551
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
552 /* copy */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
553 *(f->writeptr) = *s++;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
554 f->writeptr++;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
555
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
556 /* increment the filesize */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
557 f->memptr->fsize += 1;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
558
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
559 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
560
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
561 #ifdef DEBUG
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
562 log_printf(
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
563 "\nKMSAgent_direct::fputs wrote %d chars, "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
564 "filesize is %d\n",
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
565 i,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
566 f->memptr->fsize );
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
567 #endif
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
568
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
569 /* return how many chars were written */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
570 return i;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
571 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
572
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
573
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
574 /**
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
575 * my_eeprom_fwrite()
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
576 * my filesystem put string
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
577 */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
578 extern "C" int my_eeprom_fwrite(const char *s,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
579 int size,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
580 int nobj,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
581 myFILE *f)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
582 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
583 /* put the string to the memory indicated by myFILE */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
584 int i,j;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
585
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
586 ECPT_TRACE_ENTRY *trace = NULL;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
587 ECPT_TRACE( trace, my_eeprom_fwrite ) ;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
588 ecpt_trace_msg ( trace, "Entered");
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
589
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
590 log_printf(
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
591 "\nKMSAgent_direct::my_eeprom_fputs "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
592 "f->writeptr =%x "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
593 "f->readptr=%x "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
594 "f->readsize=%x "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
595 "f->memptr=%x"
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
596 "f->memptr->fsize=%x\n",
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
597 f->writeptr,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
598 f->readptr,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
599 f->readsize,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
600 f->memptr,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
601 f->memptr->fsize);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
602
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
603 FATAL_ASSERT(s);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
604 FATAL_ASSERT(f);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
605 FATAL_ASSERT((size*nobj) > 0);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
606
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
607 for (i=0; i<nobj; i++)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
608 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
609 for (j=0; j<size; j++)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
610 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
611 /* end of max file memory, quit */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
612 if ((unsigned char*)s >=
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
613 (unsigned char*)(f->memptr + sizeof(struct eepromBlockStruct)))
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
614 goto DONE;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
615
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
616 /* copy */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
617 *(f->writeptr) = *s++;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
618 f->writeptr++;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
619
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
620 /* increment the filesize */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
621 f->memptr->fsize += 1;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
622 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
623
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
624 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
625
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
626 DONE:
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
627
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
628
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
629 #ifdef DEBUG
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
630 log_printf(
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
631 "\nKMSAgent_direct::fwrite wrote %d chars, "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
632 "filesize is %d\n",
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
633 i,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
634 f->memptr->fsize );
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
635 #endif
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
636
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
637 /* return how many objects were written */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
638 return i;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
639 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
640
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
641
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
642
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
643 /**
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
644 * my_eeprom_fgets()
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
645 * my filesystem getstring
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
646 */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
647 extern "C" char *my_eeprom_fgets(char *s, int n, myFILE *f)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
648 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
649 /* put the string to the memory indicated by myFILE */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
650 int i;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
651 char *tmp = s;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
652
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
653 ECPT_TRACE_ENTRY *trace = NULL;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
654 ECPT_TRACE( trace, my_eeprom_fgets ) ;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
655 ecpt_trace_msg (trace, "entered");
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
656
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
657 FATAL_ASSERT(s);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
658 FATAL_ASSERT(n > 0);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
659 FATAL_ASSERT(f);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
660
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
661 #ifdef DEBUG
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
662 log_printf(
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
663 "\nKMSAgent_direct::my_eeprom_fgets from file %s "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
664 "fileptr %x "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
665 "readptr = %x "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
666 "readsize = %d "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
667 "filesize = %d \n",
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
668 f->memptr->fname,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
669 f,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
670 f->readptr,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
671 f->readsize,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
672 f->memptr->fsize);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
673 #endif
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
674
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
675 /* get up to n-1 (and a \0) chars */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
676 for (i=0; i < n; i++)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
677 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
678 /* end of read line? quit */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
679 if (*f->readptr == '\n')
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
680 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
681 /* increment the number of bytes read */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
682 f->readptr++;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
683 f->readsize++;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
684 break;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
685 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
686
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
687 /* trying to read beyond what was written? quit */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
688 if (f->readsize >
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
689 f->memptr->fsize)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
690 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
691 #ifdef DEBUG
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
692 log_printf(
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
693 "\nKMSAgent_direct::fgets eof after %d chars, "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
694 "readsize is %d "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
695 "filesize is %d\n",
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
696 i,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
697 f->readsize,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
698 f->memptr->fsize);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
699 #endif
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
700 return NULL;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
701 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
702
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
703 /* trying to read beyond max file memory, quit */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
704 if ((unsigned char*)f->readptr >=
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
705 (unsigned char*)(f->memptr + sizeof(struct eepromBlockStruct)))
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
706 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
707 #ifdef DEBUG
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
708 log_printf(
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
709 "\nKMSAgent_direct::fgets end of max file after %d chars "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
710 "readsize is %d "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
711 "filesize is %d\n",
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
712 i,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
713 f->readsize,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
714 f->memptr->fsize);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
715 #endif
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
716 /* EOF or error is signalled by NULL return */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
717 return NULL;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
718 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
719
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
720 /* copy a char */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
721 *tmp++ = *f->readptr;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
722
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
723 /* increment the number of bytes read */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
724 f->readptr++;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
725 f->readsize++;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
726
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
727 } /* for */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
728
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
729 /* terminate the returned string with a 0, but not a \n */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
730 *tmp='\0';
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
731
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
732 #ifdef DEBUG
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
733 /* terminate returned string after a non-absurd number of chars
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
734 */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
735 log_printf(
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
736 "\nKMSAgent_direct::fgets string [%s] "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
737 "end of line after %d chars "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
738 "readsize is %d "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
739 "filesize is %d\n",
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
740 s,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
741 i,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
742 f->readsize,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
743 f->memptr->fsize);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
744 #endif
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
745
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
746 /* on success, return the original pointer */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
747 return s;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
748 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
749
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
750
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
751
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
752
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
753 /**
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
754 * my_eeprom_fread()
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
755 * my filesystem read a file
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
756 */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
757 extern "C" int my_eeprom_fread(char *s, int size, int nobj, myFILE *f)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
758 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
759 /* put the string to the memory indicated by myFILE */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
760 int i,j;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
761
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
762 ECPT_TRACE_ENTRY *trace = NULL;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
763 ECPT_TRACE( trace, my_eeprom_fread ) ;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
764 ecpt_trace_msg (trace, "entered");
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
765
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
766 FATAL_ASSERT(s);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
767 FATAL_ASSERT(f);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
768 FATAL_ASSERT((size*nobj) > 0);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
769
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
770 for (i=0; i<nobj; i++)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
771 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
772 for (j=0; j<size; j++)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
773 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
774 /* end of written file memory, quit */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
775 if ( (unsigned char*) s >=
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
776 (unsigned char*) (f->memptr + f->memptr->fsize) )
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
777 goto DONE;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
778
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
779 /* copy */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
780 *s++ = *(f->readptr);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
781 f->readptr++;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
782 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
783
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
784 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
785
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
786 DONE:
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
787
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
788 #ifdef DEBUG
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
789 log_printf(
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
790 "\nKMSAgent_direct::fread read %d chars, "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
791 "filesize is %d\n",
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
792 i,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
793 f->memptr->fsize );
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
794 #endif
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
795
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
796 /* return how many objects were written */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
797 return i;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
798
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
799 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
800
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
801
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
802
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
803
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
804
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
805
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
806 /**
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
807 * my_eeprom_unlink() - delete the file named
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
808 */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
809 extern "C" int my_eeprom_unlink(const char *filename)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
810 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
811 int i;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
812
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
813 ECPT_TRACE_ENTRY *trace = NULL;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
814 ECPT_TRACE( trace, my_eeprom_fgets ) ;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
815 ecpt_trace_msg (trace, "Entered fn=%s", (char*)filename);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
816
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
817 /* assume the file is closed */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
818 FATAL_ASSERT(filename);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
819
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
820 /* read the file table */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
821 for (i=0; i < FTABLE_SIZE; i++)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
822 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
823
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
824 if (fstate[i] != MYFILE_CLOSED)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
825 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
826 log_error_printf("KMSAgent_direct::unlink FN=%s file matches, "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
827 "FILE %d WAS STILL OPEN for %s"
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
828 "file size is %d \n",
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
829 filename,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
830 i,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
831 (fstate[i] == MYFILE_OPEN_WRITE ? "WRITE": "READ"),
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
832 ramFileSystem.ftable[i].fsize);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
833 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
834
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
835 /* compare input filename to ram copy filename */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
836 if (strcmp(filename, (const char*)ramFileSystem.ftable[i].fname) == 0)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
837 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
838 /* if filename matches, zero it out to delete the file */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
839 ramFileSystem.ftable[i].fname[0] = '\0';
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
840 ramFileSystem.ftable[i].fsize = 0;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
841 ramFileSystem.ftable[i].fdata[0] = 1;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
842
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
843 /* remember the file is closed */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
844 fstate[i]= MYFILE_CLOSED;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
845
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
846 EEPROM_Sector_Erase( FILESYSTEM_SECTOR ) ;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
847
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
848 /* remember the version of toolkit that wrote this filesystem
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
849 (for any future compatibility problems). */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
850 strncpy(ramFileSystem.writingversion,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
851 KMSAgent_Version,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
852 sizeof(KMSAgent_Version));
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
853
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
854 /* flush the memory indicated by myFILE * out to EEPROM */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
855 Flash_Write ((unsigned char*)FILESYSTEM_SECTOR,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
856 (unsigned char*)&ramFileSystem,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
857 FILESYSTEM_SECTOR_SIZE);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
858
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
859 break;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
860 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
861
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
862 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
863
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
864 #ifdef DEBUG
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
865 log_printf ("my_eeprom_unlink : returning");
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
866 #endif
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
867
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
868 if (i == FTABLE_SIZE)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
869 return -1;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
870
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
871 /* success */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
872 return 0;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
873 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
874
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
875
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
876 /**
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
877 * my_eeprom_fsys_erase() - delete all files
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
878 */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
879 extern "C" int my_eeprom_fsys_erase(void)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
880 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
881 int i;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
882
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
883 ECPT_TRACE_ENTRY *trace = NULL;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
884 ECPT_TRACE( trace, my_eeprom_fread ) ;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
885 ecpt_trace_msg (trace, "my_eeprom_fsys_erase : entering ");
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
886
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
887 /* read the file table */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
888 for (i=0; i < FTABLE_SIZE; i++)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
889 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
890 if (fstate[i] != MYFILE_CLOSED)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
891 {
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
892 log_error_printf("KMSAgent_direct::fsys_erase FN=%s file "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
893 "FILE %d WAS STILL OPEN for %s "
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
894 "file size is %d \n",
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
895 ramFileSystem.ftable[i].fname,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
896 i,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
897 (fstate[i] == MYFILE_OPEN_WRITE ? "WRITE": "READ"),
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
898 ramFileSystem.ftable[i].fsize);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
899 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
900
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
901 /* zero filename out to delete the file */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
902 ramFileSystem.ftable[i].fname[0] = '\0';
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
903 ramFileSystem.ftable[i].fsize = 0;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
904 ramFileSystem.ftable[i].fdata[0] = 2;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
905
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
906 /* remember the file is closed */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
907 fstate[i]= MYFILE_CLOSED;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
908
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
909 EEPROM_Sector_Erase( FILESYSTEM_SECTOR ) ;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
910
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
911 /* remember the version of toolkit that wrote this filesystem
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
912 (for any future compatibility problems). */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
913 strncpy(ramFileSystem.writingversion,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
914 KMSAgent_Version,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
915 sizeof(KMSAgent_Version));
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
916
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
917 /* flush the memory indicated by myFILE * out to EEPROM */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
918 Flash_Write ((unsigned char*)FILESYSTEM_SECTOR,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
919 (unsigned char*)&ramFileSystem,
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
920 FILESYSTEM_SECTOR_SIZE);
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
921
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
922
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
923 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
924
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
925 #ifdef DEBUG
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
926 log_printf ("\nmy_eeprom_fsys_erase : returning");
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
927 #endif
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
928
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
929 if (i == FTABLE_SIZE)
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
930 return -1;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
931
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
932 /* success */
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
933 return 0;
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
934 }
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
935
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
936
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
937
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
938
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
939 #endif // DEFINE_STORAGE
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
940 #endif // METAWARE
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
941 #endif
3db6e0082404 PSARC 2010/195 PKCS11 KMS Provider
Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
parents:
diff changeset
942