/* Microsoft Reference Implementation for TPM 2.0 | |
* | |
* The copyright in this software is being made available under the BSD License, | |
* included below. This software may be subject to other third party and | |
* contributor rights, including patent rights, and no such rights are granted | |
* under this license. | |
* | |
* Copyright (c) Microsoft Corporation | |
* | |
* All rights reserved. | |
* | |
* BSD License | |
* | |
* Redistribution and use in source and binary forms, with or without modification, | |
* are permitted provided that the following conditions are met: | |
* | |
* Redistributions of source code must retain the above copyright notice, this list | |
* of conditions and the following disclaimer. | |
* | |
* Redistributions in binary form must reproduce the above copyright notice, this | |
* list of conditions and the following disclaimer in the documentation and/or | |
* other materials provided with the distribution. | |
* | |
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ""AS IS"" | |
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR | |
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | |
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | |
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
*/ | |
//** Description | |
// | |
// This file contains the NV read and write access methods. This implementation | |
// uses RAM/file and does not manage the RAM/file as NV blocks. | |
// The implementation may become more sophisticated over time. | |
// | |
//** Includes and Local | |
#include <stdio.h> | |
#include <time.h> | |
#include "Platform.h" | |
#if CERTIFYX509_DEBUG | |
const char *debugFileName = "DebugFile.txt"; | |
//*** fileOpen() | |
// This exists to allow use of the 'safe' version of fopen() with a MS runtime. | |
static FILE * | |
fileOpen( | |
const char *fn, | |
const char *mode | |
) | |
{ | |
FILE *f; | |
# if defined _MSC_VER | |
if(fopen_s(&f, fn, mode) != 0) | |
f = NULL; | |
# else | |
f = fopen(fn, mode); | |
# endif | |
return f; | |
} | |
//*** DebugFileInit() | |
// This function initializes the file containing the debug data with the time of the | |
// file creation. | |
// Return Type: int | |
// 0 success | |
// != 0 error | |
int | |
DebugFileInit( | |
void | |
) | |
{ | |
FILE *f = NULL; | |
time_t t = time(NULL); | |
// | |
// Get current date and time. | |
# if defined _MSC_VER | |
char timeString[100]; | |
ctime_s(timeString, (size_t)sizeof(timeString), &t); | |
# else | |
char *timeString; | |
timeString = ctime(&t); | |
# endif | |
// Try to open the debug file | |
f = fileOpen(debugFileName, "w"); | |
if(f) | |
{ | |
// Initialize the contents with the time. | |
fprintf(f, "%s\n", timeString); | |
fclose(f); | |
return 0; | |
} | |
return -1; | |
} | |
//*** DebugDumpBuffer() | |
void | |
DebugDumpBuffer( | |
int size, | |
unsigned char *buf, | |
const char *identifier | |
) | |
{ | |
int i; | |
// | |
FILE *f = fileOpen(debugFileName, "a"); | |
if(!f) | |
return; | |
if(identifier) | |
fprintf(f, "%s\n", identifier); | |
if(buf) | |
{ | |
for(i = 0; i < size; i++) | |
{ | |
if(((i % 16) == 0) && (i)) | |
fprintf(f, "\n"); | |
fprintf(f, " %02X", buf[i]); | |
} | |
if((size % 16) != 0) | |
fprintf(f, "\n"); | |
} | |
fclose(f); | |
} | |
#endif // CERTIFYX509_DEBUG |