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