123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #include "tpm2_alg_util.h"
- #include "tpm2_util.h"
- #define SESSION_HANDLE 0xBADC0DE
- typedef struct expected_data expected_data;
- struct expected_data {
- struct {
- ESYS_TR key;
- ESYS_TR bind;
- TPM2_SE session_type;
- TPMT_SYM_DEF symmetric;
- TPMI_ALG_HASH auth_hash;
- TPM2B_NONCE nonce_caller;
- } input;
- struct output {
- ESYS_TR handle;
- TPM2_RC rc;
- } output;
- };
- static inline void set_expected(ESYS_TR key, ESYS_TR bind,
- TPM2_SE session_type,
- TPMT_SYM_DEF *symmetric, TPMI_ALG_HASH auth_hash,
- TPM2B_NONCE *nonce_caller, ESYS_TR handle, TPM2_RC rc) {
- expected_data *e = calloc(1, sizeof(*e));
- assert_non_null(e);
- e->input.key = key;
- e->input.bind = bind;
- e->input.session_type = session_type;
- e->input.symmetric = *symmetric;
- e->input.auth_hash = auth_hash;
- if (nonce_caller) {
- e->input.nonce_caller = *nonce_caller;
- }
- e->output.handle = handle;
- e->output.rc = rc;
- will_return(__wrap_Esys_StartAuthSession, e);
- }
- static inline void set_expected_defaults(TPM2_SE session_type,
- ESYS_TR handle, TPM2_RC rc) {
- TPMT_SYM_DEF symmetric;
- memset(&symmetric, 0, sizeof(symmetric));
- symmetric.algorithm = TPM2_ALG_NULL;
- TPM2B_NONCE nonce_caller;
- memset(&nonce_caller, 0, sizeof(nonce_caller));
- nonce_caller.size = tpm2_alg_util_get_hash_size(TPM2_ALG_SHA1);
- set_expected(
- ESYS_TR_NONE,
- ESYS_TR_NONE, session_type, &symmetric,
- TPM2_ALG_SHA256, &nonce_caller, handle, rc);
- }
- TSS2_RC __wrap_Esys_StartAuthSession(ESYS_CONTEXT *esysContext,
- ESYS_TR tpmKey, ESYS_TR bind,
- ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3,
- const TPM2B_NONCE *nonceCaller, TPM2_SE sessionType,
- const TPMT_SYM_DEF *symmetric, TPMI_ALG_HASH authHash,
- ESYS_TR *sessionHandle) {
- UNUSED(esysContext);
- UNUSED(shandle1);
- UNUSED(shandle2);
- UNUSED(shandle3);
- UNUSED(sessionHandle);
- expected_data *e = mock_ptr_type(expected_data *);
- assert_int_equal(tpmKey, e->input.key);
- assert_int_equal(bind, e->input.bind);
- if (nonceCaller) {
- assert_int_equal(e->input.nonce_caller.size, nonceCaller->size);
- assert_memory_equal(e->input.nonce_caller.buffer, nonceCaller->buffer, nonceCaller->size);
- }
- assert_int_equal(sessionType, e->input.session_type);
- assert_memory_equal(symmetric, &e->input.symmetric,
- sizeof(*symmetric));
- assert_int_equal(authHash, e->input.auth_hash);
- *sessionHandle = e->output.handle;
- TSS2_RC rc = e->output.rc;
- free(e);
- return rc;
- }
|