1// This file was extracted from the TCG Published
2// Trusted Platform Module Library
3// Part 4: Supporting Routines
4// Family "2.0"
5// Level 00 Revision 01.16
6// October 30, 2014
7
8#include <stdlib.h>
9
10#include "CryptoEngine.h"
11#include "OsslCryptoEngine.h"
12static void Trap(const char *function, int line, int code);
13FAIL_FUNCTION       TpmFailFunction = (FAIL_FUNCTION)&Trap;
14//
15//
16//          Functions
17//
18//          FAILURE_TRAP()
19//
20//     This function is called if the caller to _cpri__InitCryptoUnits() doesn't provide a call back address.
21//
22static void
23Trap(
24     const char          *function,
25     int                  line,
26     int                  code
27     )
28{
29     UNREFERENCED(function);
30     UNREFERENCED(line);
31     UNREFERENCED(code);
32     abort();
33}
34//
35//
36//          _cpri__InitCryptoUnits()
37//
38//     This function calls the initialization functions of the other crypto modules that are part of the crypto engine
39//     for this implementation. This function should be called as a result of _TPM_Init(). The parameter to this
40//     function is a call back function it TPM.lib that is called when the crypto engine has a failure.
41//
42LIB_EXPORT CRYPT_RESULT
43_cpri__InitCryptoUnits(
44     FAIL_FUNCTION        failFunction
45     )
46{
47   TpmFailFunction = failFunction;
48   _cpri__RngStartup();
49   _cpri__HashStartup();
50   _cpri__SymStartup();
51#ifdef TPM_ALG_RSA
52   _cpri__RsaStartup();
53#endif
54#ifdef TPM_ALG_ECC
55   _cpri__EccStartup();
56#endif
57   return CRYPT_SUCCESS;
58}
59//
60//
61//          _cpri__StopCryptoUnits()
62//
63//     This function calls the shutdown functions of the other crypto modules that are part of the crypto engine
64//     for this implementation.
65//
66LIB_EXPORT void
67_cpri__StopCryptoUnits(
68   void
69   )
70{
71   return;
72}
73//
74//
75//          _cpri__Startup()
76//
77//     This function calls the startup functions of the other crypto modules that are part of the crypto engine for
78//     this implementation. This function should be called during processing of TPM2_Startup().
79//
80LIB_EXPORT BOOL
81_cpri__Startup(
82   void
83   )
84{
85   return(       _cpri__HashStartup()
86              && _cpri__RngStartup()
87#ifdef     TPM_ALG_RSA
88              && _cpri__RsaStartup()
89#endif     // TPM_ALG_RSA
90#ifdef     TPM_ALG_ECC
91              && _cpri__EccStartup()
92#endif     // TPM_ALG_ECC
93              && _cpri__SymStartup());
94}
95