blob: bfcb50d60dc1f9b510001e5a237bba7997bc33a3 [file] [log] [blame]
// This file was extracted from the TCG Published
// Trusted Platform Module Library
// Part 4: Supporting Routines
// Family "2.0"
// Level 00 Revision 01.16
// October 30, 2014
#include "CryptoEngine.h"
#include "OsslCryptoEngine.h"
static void Trap(const char *function, int line, int code);
FAIL_FUNCTION TpmFailFunction = (FAIL_FUNCTION)&Trap;
//
//
// Functions
//
// TpmFail()
//
// This is a shim function that is called when a failure occurs. It simply relays the call to the callback pointed
// to by TpmFailFunction(). It is only defined for the sake of NO_RETURN specifier that cannot be added to
// a function pointer with some compilers.
//
void
TpmFail(
const char *function,
int line,
int code)
{
TpmFailFunction(function, line, code);
}
//
//
// FAILURE_TRAP()
//
// This function is called if the caller to _cpri__InitCryptoUnits() doesn't provide a call back address.
//
static void
Trap(
const char *function,
int line,
int code
)
{
UNREFERENCED(function);
UNREFERENCED(line);
UNREFERENCED(code);
abort();
}
//
//
// _cpri__InitCryptoUnits()
//
// This function calls the initialization functions of the other crypto modules that are part of the crypto engine
// for this implementation. This function should be called as a result of _TPM_Init(). The parameter to this
// function is a call back function it TPM.lib that is called when the crypto engine has a failure.
//
LIB_EXPORT CRYPT_RESULT
_cpri__InitCryptoUnits(
FAIL_FUNCTION failFunction
)
{
TpmFailFunction = failFunction;
_cpri__RngStartup();
_cpri__HashStartup();
_cpri__SymStartup();
#ifdef TPM_ALG_RSA
_cpri__RsaStartup();
#endif
#ifdef TPM_ALG_ECC
_cpri__EccStartup();
#endif
return CRYPT_SUCCESS;
}
//
//
// _cpri__StopCryptoUnits()
//
// This function calls the shutdown functions of the other crypto modules that are part of the crypto engine
// for this implementation.
//
LIB_EXPORT void
_cpri__StopCryptoUnits(
void
)
{
return;
}
//
//
// _cpri__Startup()
//
// This function calls the startup functions of the other crypto modules that are part of the crypto engine for
// this implementation. This function should be called during processing of TPM2_Startup().
//
LIB_EXPORT BOOL
_cpri__Startup(
void
)
{
return( _cpri__HashStartup()
&& _cpri__RngStartup()
#ifdef TPM_ALG_RSA
&& _cpri__RsaStartup()
#endif // TPM_ALG_RSA
#ifdef TPM_ALG_ECC
&& _cpri__EccStartup()
#endif // TPM_ALG_ECC
&& _cpri__SymStartup());
}