1 // This file was extracted from the TCG Published
2 // Trusted Platform Module Library
3 // Part 3: Commands
4 // Family "2.0"
5 // Level 00 Revision 01.16
6 // October 30, 2014
7 
8 #include "InternalRoutines.h"
9 #include "GetRandom_fp.h"
10 TPM_RC
TPM2_GetRandom(GetRandom_In * in,GetRandom_Out * out)11 TPM2_GetRandom(
12    GetRandom_In     *in,            // IN: input parameter list
13    GetRandom_Out    *out            // OUT: output parameter list
14    )
15 {
16 // Command Output
17 
18    // if the requested bytes exceed the output buffer size, generates the
19    // maximum bytes that the output buffer allows
20    if(in->bytesRequested > sizeof(TPMU_HA))
21        out->randomBytes.t.size = sizeof(TPMU_HA);
22    else
23        out->randomBytes.t.size = in->bytesRequested;
24 
25    CryptGenerateRandom(out->randomBytes.t.size, out->randomBytes.t.buffer);
26 
27    return TPM_RC_SUCCESS;
28 }
29