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#include "daa_parameter.h"
12
13setenv("TCSD_FOREGROUND", "1", 1);
14
15static EVP_MD *digest = NULL;
16
17extern EVP_MD *DAA_PARAM_get_message_digest(void) {
18	if( digest == NULL) {
19		OpenSSL_add_all_digests();
20		digest = EVP_get_digestbyname( DAA_PARAM_MESSAGE_DIGEST_ALGORITHM);
21	}
22	return digest;
23}
24
25// from common.c (ltp-tss)
26char *err_string(TSS_RESULT r)
27{
28	/* Check the return code to see if it is common to all layers.
29	 * If so, return it.
30	 */
31	switch (TSS_ERROR_CODE(r)) {
32		case TSS_SUCCESS:	return "TSS_SUCCESS";
33		default:
34			break;
35	}
36
37	/* The return code is either unknown, or specific to a layer */
38	if (TSS_ERROR_LAYER(r) == TSS_LAYER_TPM) {
39		switch (TSS_ERROR_CODE(r)) {
40			case TCPA_E_AUTHFAIL:		return "TCPA_E_AUTHFAIL";
41			case TCPA_E_BADINDEX:		return "TCPA_E_BADINDEX";
42			case TCPA_E_AUDITFAILURE:	return "TCPA_E_AUDITFAILURE";
43			case TCPA_E_CLEAR_DISABLED:	return "TCPA_E_CLEAR_DISABLED";
44			case TCPA_E_DEACTIVATED:	return "TCPA_E_DEACTIVATED";
45			case TCPA_E_DISABLED:		return "TCPA_E_DISABLED";
46			case TCPA_E_DISABLED_CMD:	return "TCPA_E_DISABLED_CMD";
47			case TCPA_E_FAIL:		return "TCPA_E_FAIL";
48			case TCPA_E_INACTIVE:		return "TCPA_E_INACTIVE";
49			case TCPA_E_INSTALL_DISABLED:	return "TCPA_E_INSTALL_DISABLED";
50			case TCPA_E_INVALID_KEYHANDLE:	return "TCPA_E_INVALID_KEYHANDLE";
51			case TCPA_E_KEYNOTFOUND:	return "TCPA_E_KEYNOTFOUND";
52			case TCPA_E_NEED_SELFTEST:	return "TCPA_E_NEED_SELFTEST";
53			case TCPA_E_MIGRATEFAIL:	return "TCPA_E_MIGRATEFAIL";
54			case TCPA_E_NO_PCR_INFO:	return "TCPA_E_NO_PCR_INFO";
55			case TCPA_E_NOSPACE:		return "TCPA_E_NOSPACE";
56			case TCPA_E_NOSRK:		return "TCPA_E_NOSRK";
57			case TCPA_E_NOTSEALED_BLOB:	return "TCPA_E_NOTSEALED_BLOB";
58			case TCPA_E_OWNER_SET:		return "TCPA_E_OWNER_SET";
59			case TCPA_E_RESOURCES:		return "TCPA_E_RESOURCES";
60			case TCPA_E_SHORTRANDOM:	return "TCPA_E_SHORTRANDOM";
61			case TCPA_E_SIZE:		return "TCPA_E_SIZE";
62			case TCPA_E_WRONGPCRVAL:	return "TCPA_E_WRONGPCRVAL";
63			case TCPA_E_BAD_PARAM_SIZE:	return "TCPA_E_BAD_PARAM_SIZE";
64			case TCPA_E_SHA_THREAD:		return "TCPA_E_SHA_THREAD";
65			case TCPA_E_SHA_ERROR:		return "TCPA_E_SHA_ERROR";
66			case TCPA_E_FAILEDSELFTEST:	return "TCPA_E_FAILEDSELFTEST";
67			case TCPA_E_AUTH2FAIL:		return "TCPA_E_AUTH2FAIL";
68			case TCPA_E_BADTAG:		return "TCPA_E_BADTAG";
69			case TCPA_E_IOERROR:		return "TCPA_E_IOERROR";
70			case TCPA_E_ENCRYPT_ERROR:	return "TCPA_E_ENCRYPT_ERROR";
71			case TCPA_E_DECRYPT_ERROR:	return "TCPA_E_DECRYPT_ERROR";
72			case TCPA_E_INVALID_AUTHHANDLE:	return "TCPA_E_INVALID_AUTHHANDLE";
73			case TCPA_E_NO_ENDORSEMENT:	return "TCPA_E_NO_ENDORSEMENT";
74			case TCPA_E_INVALID_KEYUSAGE:	return "TCPA_E_INVALID_KEYUSAGE";
75			case TCPA_E_WRONG_ENTITYTYPE:	return "TCPA_E_WRONG_ENTITYTYPE";
76			case TCPA_E_INVALID_POSTINIT:	return "TCPA_E_INVALID_POSTINIT";
77			case TCPA_E_INAPPROPRIATE_SIG:	return "TCPA_E_INAPPROPRIATE_SIG";
78			case TCPA_E_BAD_KEY_PROPERTY:	return "TCPA_E_BAD_KEY_PROPERTY";
79			case TCPA_E_BAD_MIGRATION:	return "TCPA_E_BAD_MIGRATION";
80			case TCPA_E_BAD_SCHEME:		return "TCPA_E_BAD_SCHEME";
81			case TCPA_E_BAD_DATASIZE:	return "TCPA_E_BAD_DATASIZE";
82			case TCPA_E_BAD_MODE:		return "TCPA_E_BAD_MODE";
83			case TCPA_E_BAD_PRESENCE:	return "TCPA_E_BAD_PRESENCE";
84			case TCPA_E_BAD_VERSION:	return "TCPA_E_BAD_VERSION";
85			case TCPA_E_RETRY:		return "TCPA_E_RETRY";
86			default:			return "UNKNOWN TPM ERROR";
87		}
88	} else if (TSS_ERROR_LAYER(r) == TSS_LAYER_TDDL) {
89		switch (TSS_ERROR_CODE(r)) {
90			case TSS_E_FAIL:			return "TSS_E_FAIL";
91			case TSS_E_BAD_PARAMETER:		return "TSS_E_BAD_PARAMETER";
92			case TSS_E_INTERNAL_ERROR:		return "TSS_E_INTERNAL_ERROR";
93			case TSS_E_NOTIMPL:			return "TSS_E_NOTIMPL";
94			case TSS_E_PS_KEY_NOTFOUND:		return "TSS_E_PS_KEY_NOTFOUND";
95			case TSS_E_KEY_ALREADY_REGISTERED:	return "TSS_E_KEY_ALREADY_REGISTERED";
96			case TSS_E_CANCELED:			return "TSS_E_CANCELED";
97			case TSS_E_TIMEOUT:			return "TSS_E_TIMEOUT";
98			case TSS_E_OUTOFMEMORY:			return "TSS_E_OUTOFMEMORY";
99			case TSS_E_TPM_UNEXPECTED:		return "TSS_E_TPM_UNEXPECTED";
100			case TSS_E_COMM_FAILURE:		return "TSS_E_COMM_FAILURE";
101			case TSS_E_TPM_UNSUPPORTED_FEATURE:	return "TSS_E_TPM_UNSUPPORTED_FEATURE";
102			case TDDL_E_COMPONENT_NOT_FOUND:	return "TDDL_E_COMPONENT_NOT_FOUND";
103			case TDDL_E_ALREADY_OPENED:		return "TDDL_E_ALREADY_OPENED";
104			case TDDL_E_BADTAG:			return "TDDL_E_BADTAG";
105			case TDDL_E_INSUFFICIENT_BUFFER:	return "TDDL_E_INSUFFICIENT_BUFFER";
106			case TDDL_E_COMMAND_COMPLETED:		return "TDDL_E_COMMAND_COMPLETED";
107			case TDDL_E_ALREADY_CLOSED:		return "TDDL_E_ALREADY_CLOSED";
108			case TDDL_E_IOERROR:			return "TDDL_E_IOERROR";
109			default:				return "UNKNOWN TDDL ERROR";
110		}
111	} else if (TSS_ERROR_LAYER(r) == TSS_LAYER_TCS) {
112		switch (TSS_ERROR_CODE(r)) {
113			case TSS_E_FAIL:			return "TSS_E_FAIL";
114			case TSS_E_BAD_PARAMETER:		return "TSS_E_BAD_PARAMETER";
115			case TSS_E_INTERNAL_ERROR:		return "TSS_E_INTERNAL_ERROR";
116			case TSS_E_NOTIMPL:			return "TSS_E_NOTIMPL";
117			case TSS_E_PS_KEY_NOTFOUND:		return "TSS_E_PS_KEY_NOTFOUND";
118			case TSS_E_KEY_ALREADY_REGISTERED:	return "TSS_E_KEY_ALREADY_REGISTERED";
119			case TSS_E_CANCELED:			return "TSS_E_CANCELED";
120			case TSS_E_TIMEOUT:			return "TSS_E_TIMEOUT";
121			case TSS_E_OUTOFMEMORY:			return "TSS_E_OUTOFMEMORY";
122			case TSS_E_TPM_UNEXPECTED:		return "TSS_E_TPM_UNEXPECTED";
123			case TSS_E_COMM_FAILURE:		return "TSS_E_COMM_FAILURE";
124			case TSS_E_TPM_UNSUPPORTED_FEATURE:	return "TSS_E_TPM_UNSUPPORTED_FEATURE";
125			case TCS_E_KEY_MISMATCH:		return "TCS_E_KEY_MISMATCH";
126			case TCS_E_KM_LOADFAILED:		return "TCS_E_KM_LOADFAILED";
127			case TCS_E_KEY_CONTEXT_RELOAD:		return "TCS_E_KEY_CONTEXT_RELOAD";
128			case TCS_E_INVALID_CONTEXTHANDLE:	return "TCS_E_INVALID_CONTEXTHANDLE";
129			case TCS_E_INVALID_KEYHANDLE:		return "TCS_E_INVALID_KEYHANDLE";
130			case TCS_E_INVALID_AUTHHANDLE:		return "TCS_E_INVALID_AUTHHANDLE";
131			case TCS_E_INVALID_AUTHSESSION:		return "TCS_E_INVALID_AUTHSESSION";
132			case TCS_E_INVALID_KEY:			return "TCS_E_INVALID_KEY";
133			default:				return "UNKNOWN TCS ERROR";
134		}
135	} else {
136		switch (TSS_ERROR_CODE(r)) {
137			case TSS_E_FAIL:			return "TSS_E_FAIL";
138			case TSS_E_BAD_PARAMETER:		return "TSS_E_BAD_PARAMETER";
139			case TSS_E_INTERNAL_ERROR:		return "TSS_E_INTERNAL_ERROR";
140			case TSS_E_NOTIMPL:			return "TSS_E_NOTIMPL";
141			case TSS_E_PS_KEY_NOTFOUND:		return "TSS_E_PS_KEY_NOTFOUND";
142			case TSS_E_KEY_ALREADY_REGISTERED:	return "TSS_E_KEY_ALREADY_REGISTERED";
143			case TSS_E_CANCELED:			return "TSS_E_CANCELED";
144			case TSS_E_TIMEOUT:			return "TSS_E_TIMEOUT";
145			case TSS_E_OUTOFMEMORY:			return "TSS_E_OUTOFMEMORY";
146			case TSS_E_TPM_UNEXPECTED:		return "TSS_E_TPM_UNEXPECTED";
147			case TSS_E_COMM_FAILURE:		return "TSS_E_COMM_FAILURE";
148			case TSS_E_TPM_UNSUPPORTED_FEATURE:	return "TSS_E_TPM_UNSUPPORTED_FEATURE";
149			case TSS_E_INVALID_OBJECT_TYPE:		return "TSS_E_INVALID_OBJECT_TYPE";
150			case TSS_E_INVALID_OBJECT_INITFLAG:	return "TSS_E_INVALID_OBJECT_INITFLAG";
151			case TSS_E_INVALID_HANDLE:		return "TSS_E_INVALID_HANDLE";
152			case TSS_E_NO_CONNECTION:		return "TSS_E_NO_CONNECTION";
153			case TSS_E_CONNECTION_FAILED:		return "TSS_E_CONNECTION_FAILED";
154			case TSS_E_CONNECTION_BROKEN:		return "TSS_E_CONNECTION_BROKEN";
155			case TSS_E_HASH_INVALID_ALG:		return "TSS_E_HASH_INVALID_ALG";
156			case TSS_E_HASH_INVALID_LENGTH:		return "TSS_E_HASH_INVALID_LENGTH";
157			case TSS_E_HASH_NO_DATA:		return "TSS_E_HASH_NO_DATA";
158			case TSS_E_SILENT_CONTEXT:		return "TSS_E_SILENT_CONTEXT";
159			case TSS_E_INVALID_ATTRIB_FLAG:		return "TSS_E_INVALID_ATTRIB_FLAG";
160			case TSS_E_INVALID_ATTRIB_SUBFLAG:	return "TSS_E_INVALID_ATTRIB_SUBFLAG";
161			case TSS_E_INVALID_ATTRIB_DATA:		return "TSS_E_INVALID_ATTRIB_DATA";
162			case TSS_E_NO_PCRS_SET:			return "TSS_E_NO_PCRS_SET";
163			case TSS_E_KEY_NOT_LOADED:		return "TSS_E_KEY_NOT_LOADED";
164			case TSS_E_KEY_NOT_SET:			return "TSS_E_KEY_NOT_SET";
165			case TSS_E_VALIDATION_FAILED:		return "TSS_E_VALIDATION_FAILED";
166			case TSS_E_TSP_AUTHREQUIRED:		return "TSS_E_TSP_AUTHREQUIRED";
167			case TSS_E_TSP_AUTH2REQUIRED:		return "TSS_E_TSP_AUTH2REQUIRED";
168			case TSS_E_TSP_AUTHFAIL:		return "TSS_E_TSP_AUTHFAIL";
169			case TSS_E_TSP_AUTH2FAIL:		return "TSS_E_TSP_AUTH2FAIL";
170			case TSS_E_KEY_NO_MIGRATION_POLICY:	return "TSS_E_KEY_NO_MIGRATION_POLICY";
171			case TSS_E_POLICY_NO_SECRET:		return "TSS_E_POLICY_NO_SECRET";
172			case TSS_E_INVALID_OBJ_ACCESS:		return "TSS_E_INVALID_OBJ_ACCESS";
173			case TSS_E_INVALID_ENCSCHEME:		return "TSS_E_INVALID_ENCSCHEME";
174			case TSS_E_INVALID_SIGSCHEME:		return "TSS_E_INVALID_SIGSCHEME";
175			case TSS_E_ENC_INVALID_LENGTH:		return "TSS_E_ENC_INVALID_LENGTH";
176			case TSS_E_ENC_NO_DATA:			return "TSS_E_ENC_NO_DATA";
177			case TSS_E_ENC_INVALID_TYPE:		return "TSS_E_ENC_INVALID_TYPE";
178			case TSS_E_INVALID_KEYUSAGE:		return "TSS_E_INVALID_KEYUSAGE";
179			case TSS_E_VERIFICATION_FAILED:		return "TSS_E_VERIFICATION_FAILED";
180			case TSS_E_HASH_NO_IDENTIFIER:		return "TSS_E_HASH_NO_IDENTIFIER";
181			default:	return "UNKNOWN TSS ERROR";
182		}
183	}
184}
185