1 
2 /*
3  * Licensed Materials - Property of IBM
4  *
5  * trousers - An open source TCG Software Stack
6  *
7  * (C) Copyright International Business Machines Corp. 2006
8  *
9  */
10 
11 
12 #include <stdlib.h>
13 #include <stdio.h>
14 #include <string.h>
15 
16 #include "bi.h"
17 #include "daa_parameter.h"
18 #include "trousers/tss.h"
19 #include "spi_internal_types.h"
20 #include "spi_utils.h"
21 #include <trousers/trousers.h>
22 #include <obj.h>
23 #include "tsplog.h"
24 #include "tss/tcs.h"
25 #include "platform.h"
26 
27 #include "verifier.h"
28 
Tspi_DAA_VerifyInit_internal(TSS_HDAA hDAA,UINT32 * nonceVerifierLength,BYTE ** nonceVerifier,UINT32 baseNameLength,BYTE ** baseName)29 TSPICALL Tspi_DAA_VerifyInit_internal
30 (
31           TSS_HDAA  hDAA,     // in
32           UINT32*   nonceVerifierLength,          // out
33           BYTE**    nonceVerifier,      // out
34           UINT32    baseNameLength,     // out
35           BYTE **   baseName  // out
36 ) {
37           TSS_RESULT result = TSS_SUCCESS;
38           TCS_CONTEXT_HANDLE tcsContext;
39           bi_ptr nounce = NULL;
40 
41           //TODO how to setup the baseName & baseNameLength
42           if( (result = obj_daa_get_tsp_context( hDAA, &tcsContext)) != TSS_SUCCESS)
43                     goto close;
44           *nonceVerifierLength = DAA_PARAM_LENGTH_MESSAGE_DIGEST;
45           *nonceVerifier = calloc_tspi( tcsContext, DAA_PARAM_LENGTH_MESSAGE_DIGEST);
46           if (*nonceVerifier == NULL) {
47                     LogError("malloc of %d bytes failed", DAA_PARAM_LENGTH_MESSAGE_DIGEST);
48                     result = TSPERR(TSS_E_OUTOFMEMORY);
49                     goto close;
50           }
51           nounce = bi_new_ptr();
52           bi_urandom( nounce, DAA_PARAM_LENGTH_MESSAGE_DIGEST * 8);
53           bi_2_byte_array( *nonceVerifier, DAA_PARAM_LENGTH_MESSAGE_DIGEST, nounce);
54 close:
55           FREE_BI( nounce);
56           return result;
57 }
58