blob: 08cbb28dfd723f1846b3f5f7dccf73f28dd62bb2 [file] [log] [blame]
Juergen Repp731135d2018-03-27 14:43:03 +02001/*******************************************************************************
2 * Copyright 2017-2018, Fraunhofer SIT sponsored by Infineon Technologies AG
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer.
10 *
11 * 2. Redistributions in binary form must reproduce the above copyright notice,
12 * this list of conditions and the following disclaimer in the documentation
13 * and/or other materials provided with the distribution.
14 *
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
25 * THE POSSIBILITY OF SUCH DAMAGE.
26 *******************************************************************************/
27
28#include "tss2_esys.h"
29
30#include "esys_iutil.h"
31#define LOGMODULE test
32#include "util/log.h"
33
34/* Test the basic commands for PCR processing: Esys_PCR_Extend */
35
36int
37test_invoke_esapi(ESYS_CONTEXT * esys_context)
38{
39 uint32_t r = 0;
40
41#ifdef TEST_SESSION
42 ESYS_TR session;
43 TPMT_SYM_DEF symmetric = {.algorithm = TPM2_ALG_AES,
44 .keyBits = {.aes = 128},
45 .mode = {.aes = TPM2_ALG_CFB}
46 };
47 TPMA_SESSION sessionAttributes;
48 TPM2B_NONCE *nonceTpm;
49 TPM2B_NONCE nonceCaller = {
50 .size = 20,
51 .buffer = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
52 11, 12, 13, 14, 15, 16, 17, 18, 19, 20}
53 };
54
55 memset(&sessionAttributes, 0, sizeof sessionAttributes);
56
57 r = Esys_StartAuthSession(esys_context, ESYS_TR_NONE, ESYS_TR_NONE,
58 ESYS_TR_NONE, ESYS_TR_NONE, ESYS_TR_NONE,
59 &nonceCaller,
60 TPM2_SE_HMAC, &symmetric, TPM2_ALG_SHA1, &session,
61 &nonceTpm);
62
63 goto_if_error(r, "Error: During initialization of session", error);
64#endif /* TEST_SESSION */
65
66 ESYS_TR pcrHandle_handle = 1;
67 TPML_DIGEST_VALUES digests
68 = {
69 .count = 1,
70 .digests = {
71 {
72 .hashAlg = TPM2_ALG_SHA1,
73 .digest = {
74 .sha1 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19}
75 }
76 },
77 }};
78
79 r = Esys_PCR_Extend (
80 esys_context,
81 pcrHandle_handle,
82#ifdef TEST_SESSION
83 session,
84#else
85 ESYS_TR_PASSWORD,
86#endif
87 ESYS_TR_NONE,
88 ESYS_TR_NONE,
89 &digests
90 );
91 goto_if_error(r, "Error: PCR_Extend", error);
92
93 return 0;
94
95 error:
96 return 1;
97
98}