blob: 4b2eba9144c6d01cacdc85a648351b7eea32eea1 [file] [log] [blame]
/* 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