15679752bf24c21135884e987c4077e2f7184897Vadim Bendebury// This file was extracted from the TCG Published
25679752bf24c21135884e987c4077e2f7184897Vadim Bendebury// Trusted Platform Module Library
35679752bf24c21135884e987c4077e2f7184897Vadim Bendebury// Part 3: Commands
45679752bf24c21135884e987c4077e2f7184897Vadim Bendebury// Family "2.0"
55679752bf24c21135884e987c4077e2f7184897Vadim Bendebury// Level 00 Revision 01.16
65679752bf24c21135884e987c4077e2f7184897Vadim Bendebury// October 30, 2014
75679752bf24c21135884e987c4077e2f7184897Vadim Bendebury
85679752bf24c21135884e987c4077e2f7184897Vadim Bendebury#include "InternalRoutines.h"
95679752bf24c21135884e987c4077e2f7184897Vadim Bendebury#include "IncrementalSelfTest_fp.h"
105679752bf24c21135884e987c4077e2f7184897Vadim Bendebury//
115679752bf24c21135884e987c4077e2f7184897Vadim Bendebury//
125679752bf24c21135884e987c4077e2f7184897Vadim Bendebury//     Error Returns                 Meaning
135679752bf24c21135884e987c4077e2f7184897Vadim Bendebury//
145679752bf24c21135884e987c4077e2f7184897Vadim Bendebury//     TPM_RC_CANCELED               the command was canceled (some tests may have completed)
155679752bf24c21135884e987c4077e2f7184897Vadim Bendebury//     TPM_RC_VALUE                  an algorithm in the toTest list is not implemented
165679752bf24c21135884e987c4077e2f7184897Vadim Bendebury//
175679752bf24c21135884e987c4077e2f7184897Vadim BendeburyTPM_RC
185679752bf24c21135884e987c4077e2f7184897Vadim BendeburyTPM2_IncrementalSelfTest(
195679752bf24c21135884e987c4077e2f7184897Vadim Bendebury   IncrementalSelfTest_In        *in,                // IN: input parameter list
205679752bf24c21135884e987c4077e2f7184897Vadim Bendebury   IncrementalSelfTest_Out       *out                // OUT: output parameter list
215679752bf24c21135884e987c4077e2f7184897Vadim Bendebury   )
225679752bf24c21135884e987c4077e2f7184897Vadim Bendebury{
235679752bf24c21135884e987c4077e2f7184897Vadim Bendebury   TPM_RC                         result;
245679752bf24c21135884e987c4077e2f7184897Vadim Bendebury// Command Output
255679752bf24c21135884e987c4077e2f7184897Vadim Bendebury
265679752bf24c21135884e987c4077e2f7184897Vadim Bendebury   // Call incremental self test function in crypt module. If this function
275679752bf24c21135884e987c4077e2f7184897Vadim Bendebury   // returns TPM_RC_VALUE, it means that an algorithm on the 'toTest' list is
285679752bf24c21135884e987c4077e2f7184897Vadim Bendebury   // not implemented.
295679752bf24c21135884e987c4077e2f7184897Vadim Bendebury   result = CryptIncrementalSelfTest(&in->toTest, &out->toDoList);
305679752bf24c21135884e987c4077e2f7184897Vadim Bendebury   if(result == TPM_RC_VALUE)
31065e0d7552ad876e067e56dcd8cc2a8f84bd8cc4Vadim Bendebury       return TPM_RC_VALUE + RC_IncrementalSelfTest_toTest;
325679752bf24c21135884e987c4077e2f7184897Vadim Bendebury   return result;
335679752bf24c21135884e987c4077e2f7184897Vadim Bendebury}
34