xref: /aosp_15_r20/external/tpm2-tss/test/integration/sapi-get-random.int.c (revision 758e9fba6fc9adbf15340f70c73baee7b168b1c9)
1*758e9fbaSOystein Eftevaag /* SPDX-License-Identifier: BSD-2-Clause */
2*758e9fbaSOystein Eftevaag /***********************************************************************
3*758e9fbaSOystein Eftevaag  * Copyright (c) 2017-2018, Intel Corporation
4*758e9fbaSOystein Eftevaag  *
5*758e9fbaSOystein Eftevaag  * All rights reserved.
6*758e9fbaSOystein Eftevaag  ***********************************************************************/
7*758e9fbaSOystein Eftevaag #ifdef HAVE_CONFIG_H
8*758e9fbaSOystein Eftevaag #include <config.h>
9*758e9fbaSOystein Eftevaag #endif
10*758e9fbaSOystein Eftevaag 
11*758e9fbaSOystein Eftevaag #include <stdio.h>
12*758e9fbaSOystein Eftevaag #include <stdlib.h>
13*758e9fbaSOystein Eftevaag #include <string.h>
14*758e9fbaSOystein Eftevaag 
15*758e9fbaSOystein Eftevaag #include "tss2_sys.h"
16*758e9fbaSOystein Eftevaag 
17*758e9fbaSOystein Eftevaag #define LOGMODULE test
18*758e9fbaSOystein Eftevaag #include "util/log.h"
19*758e9fbaSOystein Eftevaag #include "test.h"
20*758e9fbaSOystein Eftevaag 
21*758e9fbaSOystein Eftevaag /**
22*758e9fbaSOystein Eftevaag  * This program contains integration test for SAPI Tss2_Sys_GetRandom.
23*758e9fbaSOystein Eftevaag  * First, this test is checking the return code to make sure the
24*758e9fbaSOystein Eftevaag  * SAPI is executed correctly(return code should return TPM2_RC_SUCCESS).
25*758e9fbaSOystein Eftevaag  * Second, the SAPI is called twice to make sure the return randomBytes
26*758e9fbaSOystein Eftevaag  * are different by comparing the two randomBytes through memcmp.
27*758e9fbaSOystein Eftevaag  * It might not be the best test for random bytes generator but
28*758e9fbaSOystein Eftevaag  * at least this test shows the return randomBytes are different.
29*758e9fbaSOystein Eftevaag  */
30*758e9fbaSOystein Eftevaag int
test_invoke(TSS2_SYS_CONTEXT * sapi_context)31*758e9fbaSOystein Eftevaag test_invoke (TSS2_SYS_CONTEXT *sapi_context)
32*758e9fbaSOystein Eftevaag {
33*758e9fbaSOystein Eftevaag     TSS2_RC rc;
34*758e9fbaSOystein Eftevaag     TPM2B_DIGEST randomBytes1 = {sizeof (TPM2B_DIGEST) - 2,};
35*758e9fbaSOystein Eftevaag     TPM2B_DIGEST randomBytes2 = {sizeof (TPM2B_DIGEST) - 2,};
36*758e9fbaSOystein Eftevaag     int bytes = 20;
37*758e9fbaSOystein Eftevaag 
38*758e9fbaSOystein Eftevaag     LOG_INFO("GetRandom tests started.");
39*758e9fbaSOystein Eftevaag     rc = Tss2_Sys_GetRandom(sapi_context, 0, bytes, &randomBytes1, 0);
40*758e9fbaSOystein Eftevaag     if (rc != TSS2_RC_SUCCESS) {
41*758e9fbaSOystein Eftevaag         LOG_ERROR("GetRandom FAILED! Response Code : %x", rc);
42*758e9fbaSOystein Eftevaag         exit(1);
43*758e9fbaSOystein Eftevaag     }
44*758e9fbaSOystein Eftevaag     rc = Tss2_Sys_GetRandom(sapi_context, 0, bytes, &randomBytes2, 0);
45*758e9fbaSOystein Eftevaag     if (rc != TSS2_RC_SUCCESS) {
46*758e9fbaSOystein Eftevaag         LOG_ERROR("GetRandom FAILED! Response Code : %x", rc);
47*758e9fbaSOystein Eftevaag         exit(1);
48*758e9fbaSOystein Eftevaag     }
49*758e9fbaSOystein Eftevaag     if(memcmp(&randomBytes1, &randomBytes2, bytes) == 0) {
50*758e9fbaSOystein Eftevaag         LOG_ERROR("Comparison FAILED! randomBytes 0x%p & 0x%p are the same.", &randomBytes1, &randomBytes2);
51*758e9fbaSOystein Eftevaag         exit(1);
52*758e9fbaSOystein Eftevaag     }
53*758e9fbaSOystein Eftevaag     LOG_INFO("GetRandom Test Passed!");
54*758e9fbaSOystein Eftevaag     return 0;
55*758e9fbaSOystein Eftevaag }
56