mock_tpm.cc revision 4dc4629c415e7ca90ff146d7bb75b5646ecd8b17
1// 2// Copyright (C) 2014 The Android Open Source Project 3// 4// Licensed under the Apache License, Version 2.0 (the "License"); 5// you may not use this file except in compliance with the License. 6// You may obtain a copy of the License at 7// 8// http://www.apache.org/licenses/LICENSE-2.0 9// 10// Unless required by applicable law or agreed to in writing, software 11// distributed under the License is distributed on an "AS IS" BASIS, 12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13// See the License for the specific language governing permissions and 14// limitations under the License. 15// 16 17#include "trunks/mock_tpm.h" 18 19#include "trunks/tpm_utility.h" 20 21using testing::_; 22using testing::DoAll; 23using testing::Return; 24using testing::SetArgPointee; 25 26namespace trunks { 27 28MockTpm::MockTpm() : Tpm(nullptr) { 29 ON_CALL(*this, PCR_AllocateSync(_, _, _, _, _, _, _, _)) 30 .WillByDefault(DoAll(SetArgPointee<3>(YES), Return(TPM_RC_SUCCESS))); 31} 32 33MockTpm::~MockTpm() {} 34 35void MockTpm::StartAuthSession(const TPMI_DH_OBJECT& tpm_key, 36 const std::string& tpm_key_name, 37 const TPMI_DH_ENTITY& bind, 38 const std::string& bind_name, 39 const TPM2B_NONCE& nonce_caller, 40 const TPM2B_ENCRYPTED_SECRET& encrypted_salt, 41 const TPM_SE& session_type, 42 const TPMT_SYM_DEF& symmetric, 43 const TPMI_ALG_HASH& auth_hash, 44 AuthorizationDelegate* authorization_delegate, 45 const StartAuthSessionResponse& callback) { 46 StartAuthSessionShort(tpm_key, bind, nonce_caller, encrypted_salt, 47 session_type, symmetric, auth_hash, 48 authorization_delegate, callback); 49} 50 51TPM_RC MockTpm::StartAuthSessionSync( 52 const TPMI_DH_OBJECT& tpm_key, 53 const std::string& tpm_key_name, 54 const TPMI_DH_ENTITY& bind, 55 const std::string& bind_name, 56 const TPM2B_NONCE& nonce_caller, 57 const TPM2B_ENCRYPTED_SECRET& encrypted_salt, 58 const TPM_SE& session_type, 59 const TPMT_SYM_DEF& symmetric, 60 const TPMI_ALG_HASH& auth_hash, 61 TPMI_SH_AUTH_SESSION* session_handle, 62 TPM2B_NONCE* nonce_tpm, 63 AuthorizationDelegate* authorization_delegate) { 64 return StartAuthSessionSyncShort( 65 tpm_key, bind, nonce_caller, encrypted_salt, session_type, symmetric, 66 auth_hash, session_handle, nonce_tpm, authorization_delegate); 67} 68TPM_RC MockTpm::CreateSync(const TPMI_DH_OBJECT& parent_handle, 69 const std::string& parent_handle_name, 70 const TPM2B_SENSITIVE_CREATE& in_sensitive, 71 const TPM2B_PUBLIC& in_public, 72 const TPM2B_DATA& outside_info, 73 const TPML_PCR_SELECTION& creation_pcr, 74 TPM2B_PRIVATE* out_private, 75 TPM2B_PUBLIC* out_public, 76 TPM2B_CREATION_DATA* creation_data, 77 TPM2B_DIGEST* creation_hash, 78 TPMT_TK_CREATION* creation_ticket, 79 AuthorizationDelegate* authorization_delegate) { 80 return CreateSyncShort(parent_handle, in_sensitive, in_public, creation_pcr, 81 out_private, out_public, creation_data, creation_hash, 82 creation_ticket, authorization_delegate); 83} 84TPM_RC MockTpm::CertifyCreationSync( 85 const TPMI_DH_OBJECT& sign_handle, 86 const std::string& sign_handle_name, 87 const TPMI_DH_OBJECT& object_handle, 88 const std::string& object_handle_name, 89 const TPM2B_DATA& qualifying_data, 90 const TPM2B_DIGEST& creation_hash, 91 const TPMT_SIG_SCHEME& in_scheme, 92 const TPMT_TK_CREATION& creation_ticket, 93 TPM2B_ATTEST* certify_info, 94 TPMT_SIGNATURE* signature, 95 AuthorizationDelegate* authorization_delegate) { 96 return CertifyCreationSyncShort( 97 sign_handle, object_handle, qualifying_data, creation_hash, in_scheme, 98 creation_ticket, certify_info, signature, authorization_delegate); 99} 100TPM_RC MockTpm::GetSessionAuditDigestSync( 101 const TPMI_RH_ENDORSEMENT& privacy_admin_handle, 102 const std::string& privacy_admin_handle_name, 103 const TPMI_DH_OBJECT& sign_handle, 104 const std::string& sign_handle_name, 105 const TPMI_SH_HMAC& session_handle, 106 const std::string& session_handle_name, 107 const TPM2B_DATA& qualifying_data, 108 const TPMT_SIG_SCHEME& in_scheme, 109 TPM2B_ATTEST* audit_info, 110 TPMT_SIGNATURE* signature, 111 AuthorizationDelegate* authorization_delegate) { 112 return GetSessionAuditDigestSyncShort( 113 privacy_admin_handle, sign_handle, session_handle, qualifying_data, 114 in_scheme, audit_info, signature, authorization_delegate); 115} 116TPM_RC MockTpm::CommitSync(const TPMI_DH_OBJECT& sign_handle, 117 const std::string& sign_handle_name, 118 const UINT32& param_size, 119 const TPM2B_ECC_POINT& p1, 120 const TPM2B_SENSITIVE_DATA& s2, 121 const TPM2B_ECC_PARAMETER& y2, 122 UINT32* param_size_out, 123 TPM2B_ECC_POINT* k, 124 TPM2B_ECC_POINT* l, 125 TPM2B_ECC_POINT* e, 126 UINT16* counter, 127 AuthorizationDelegate* authorization_delegate) { 128 return CommitSyncShort(sign_handle, param_size, p1, y2, param_size_out, k, l, 129 e, counter, authorization_delegate); 130} 131void MockTpm::PolicySigned(const TPMI_DH_OBJECT& auth_object, 132 const std::string& auth_object_name, 133 const TPMI_SH_POLICY& policy_session, 134 const std::string& policy_session_name, 135 const TPM2B_NONCE& nonce_tpm, 136 const TPM2B_DIGEST& cp_hash_a, 137 const TPM2B_NONCE& policy_ref, 138 const INT32& expiration, 139 const TPMT_SIGNATURE& auth, 140 AuthorizationDelegate* authorization_delegate, 141 const PolicySignedResponse& callback) { 142 PolicySignedShort(auth_object, policy_session, nonce_tpm, cp_hash_a, 143 policy_ref, expiration, auth, authorization_delegate, 144 callback); 145} 146TPM_RC MockTpm::PolicySignedSync( 147 const TPMI_DH_OBJECT& auth_object, 148 const std::string& auth_object_name, 149 const TPMI_SH_POLICY& policy_session, 150 const std::string& policy_session_name, 151 const TPM2B_NONCE& nonce_tpm, 152 const TPM2B_DIGEST& cp_hash_a, 153 const TPM2B_NONCE& policy_ref, 154 const INT32& expiration, 155 const TPMT_SIGNATURE& auth, 156 TPM2B_TIMEOUT* timeout, 157 TPMT_TK_AUTH* policy_ticket, 158 AuthorizationDelegate* authorization_delegate) { 159 return PolicySignedSyncShort(auth_object, policy_session, nonce_tpm, 160 cp_hash_a, policy_ref, expiration, auth, timeout, 161 policy_ticket, authorization_delegate); 162} 163TPM_RC MockTpm::PolicySecretSync( 164 const TPMI_DH_ENTITY& auth_handle, 165 const std::string& auth_handle_name, 166 const TPMI_SH_POLICY& policy_session, 167 const std::string& policy_session_name, 168 const TPM2B_NONCE& nonce_tpm, 169 const TPM2B_DIGEST& cp_hash_a, 170 const TPM2B_NONCE& policy_ref, 171 const INT32& expiration, 172 TPM2B_TIMEOUT* timeout, 173 TPMT_TK_AUTH* policy_ticket, 174 AuthorizationDelegate* authorization_delegate) { 175 return PolicySecretSyncShort(auth_handle, policy_session, nonce_tpm, 176 cp_hash_a, policy_ref, expiration, timeout, 177 policy_ticket, authorization_delegate); 178} 179void MockTpm::PolicyNV(const TPMI_RH_NV_AUTH& auth_handle, 180 const std::string& auth_handle_name, 181 const TPMI_RH_NV_INDEX& nv_index, 182 const std::string& nv_index_name, 183 const TPMI_SH_POLICY& policy_session, 184 const std::string& policy_session_name, 185 const TPM2B_OPERAND& operand_b, 186 const UINT16& offset, 187 const TPM_EO& operation, 188 AuthorizationDelegate* authorization_delegate, 189 const PolicyNVResponse& callback) { 190 PolicyNVShort(auth_handle, nv_index, policy_session, operand_b, offset, 191 operation, authorization_delegate, callback); 192} 193TPM_RC MockTpm::CreatePrimarySync( 194 const TPMI_RH_HIERARCHY& primary_handle, 195 const std::string& primary_handle_name, 196 const TPM2B_SENSITIVE_CREATE& in_sensitive, 197 const TPM2B_PUBLIC& in_public, 198 const TPM2B_DATA& outside_info, 199 const TPML_PCR_SELECTION& creation_pcr, 200 TPM_HANDLE* object_handle, 201 TPM2B_PUBLIC* out_public, 202 TPM2B_CREATION_DATA* creation_data, 203 TPM2B_DIGEST* creation_hash, 204 TPMT_TK_CREATION* creation_ticket, 205 TPM2B_NAME* name, 206 AuthorizationDelegate* authorization_delegate) { 207 return CreatePrimarySyncShort(primary_handle, in_public, creation_pcr, 208 object_handle, out_public, creation_data, 209 creation_hash, creation_ticket, name, 210 authorization_delegate); 211} 212void MockTpm::NV_Certify(const TPMI_DH_OBJECT& sign_handle, 213 const std::string& sign_handle_name, 214 const TPMI_RH_NV_AUTH& auth_handle, 215 const std::string& auth_handle_name, 216 const TPMI_RH_NV_INDEX& nv_index, 217 const std::string& nv_index_name, 218 const TPM2B_DATA& qualifying_data, 219 const TPMT_SIG_SCHEME& in_scheme, 220 const UINT16& size, 221 const UINT16& offset, 222 AuthorizationDelegate* authorization_delegate, 223 const NV_CertifyResponse& callback) { 224 NV_CertifyShort(sign_handle, auth_handle, nv_index, qualifying_data, 225 in_scheme, size, offset, authorization_delegate, callback); 226} 227TPM_RC MockTpm::NV_CertifySync(const TPMI_DH_OBJECT& sign_handle, 228 const std::string& sign_handle_name, 229 const TPMI_RH_NV_AUTH& auth_handle, 230 const std::string& auth_handle_name, 231 const TPMI_RH_NV_INDEX& nv_index, 232 const std::string& nv_index_name, 233 const TPM2B_DATA& qualifying_data, 234 const TPMT_SIG_SCHEME& in_scheme, 235 const UINT16& size, 236 const UINT16& offset, 237 TPM2B_ATTEST* certify_info, 238 TPMT_SIGNATURE* signature, 239 AuthorizationDelegate* authorization_delegate) { 240 return NV_CertifySyncShort(sign_handle, auth_handle, nv_index, 241 qualifying_data, in_scheme, size, offset, 242 certify_info, signature, authorization_delegate); 243} 244 245} // namespace trunks 246