blob: 6926808acd465126404e127dc380d8529ab0bad8 [file] [log] [blame]
Vadim Bendebury56797522015-05-20 10:32:25 -07001// 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
Darren Krahn124ce142015-12-15 16:03:04 -08008#include <stdlib.h>
9
Vadim Bendeburyfea3a142015-05-28 18:53:22 -070010#include "CryptoEngine.h"
Vadim Bendebury56797522015-05-20 10:32:25 -070011#include "OsslCryptoEngine.h"
12static void Trap(const char *function, int line, int code);
13FAIL_FUNCTION TpmFailFunction = (FAIL_FUNCTION)&Trap;
14//
15//
16// Functions
17//
Vadim Bendebury56797522015-05-20 10:32:25 -070018// 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}