📄 bsg.h
字号:
// ===================================================================// // Copyright (c) 2005, Intel Corp.// All rights reserved.//// Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met://// * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer.// * Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution.// * Neither the name of Intel Corporation nor the names of its // contributors may be used to endorse or promote products derived// from this software without specific prior written permission.//// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED// OF THE POSSIBILITY OF SUCH DAMAGE.// ===================================================================// // bsg.h// // This file contains API's for the TPM Byte Stream functions//// ==================================================================#ifndef __BSG_H__#define __BSG_H__#include <stdarg.h>#include "buffer.h"typedef unsigned int BSG_UINT32;typedef unsigned char BSG_BYTE;// forward declstruct pack_const_tuple_t;struct pack_tuple_t;/** * Byte stream generator */// this has to be manually kept in sync with the// s_fmt array!!// but now we have a self-check function which can make sure things are well// (if used!) typedef enum BSG_Type{ BSG_TYPE_FIRST = 1, BSG_TYPE_UINT32 = 1, // start at 1 so that Type 0 only serves as an // unused/special value BSG_TYPE_UINT16, BSG_TYPE_BYTE, BSG_TYPE_BOOL, BSG_TPM_SIZE32_DATA, // a 32 bit unsigned size, followed by // a pointer to that much data. can pass a // struct pack_buf_t as the param BSG_TPM_TAG, BSG_TPM_HANDLE, BSG_TPM_RESULT, BSG_TPM_RESOURCE_TYPE, BSG_TPM_COMMAND_CODE, BSG_TPM_AUTH_DATA_USAGE, BSG_TPM_ALGORITHM_ID, BSG_TPM_PROTOCOL_ID, BSG_TPM_KEY_USAGE, BSG_TPM_ENC_SCHEME, BSG_TPM_SIG_SCHEME, BSG_TPM_MIGRATE_SCHEME, BSG_TPM_KEY_FLAGS, BSG_TPM_AUTHDATA, BSG_TPM_SECRET, BSG_TPM_ENCAUTH, BSG_TPM_PAYLOAD_TYPE, BSG_TPM_VERSION, BSG_TPM_DIGEST, BSG_TPM_COMPOSITE_HASH, BSG_TPM_CHOSENID_HASH, BSG_TPM_NONCE, BSG_TPM_KEY_HANDLE, BSG_TPM_KEY_HANDLE_LIST, BSG_TPM_KEY_PARMS, BSG_TPM_RSA_KEY_PARMS, BSG_TPM_STORE_PUBKEY, BSG_TPM_PUBKEY, BSG_TPM_KEY, BSG_TPM_MIGRATIONKEYAUTH, BSG_TCPA_AUDIT_EVENT, BSG_TCPA_EVENT_CERT, BSG_TPM_PCR_SELECTION, BSG_TPM_PCR_COMPOSITE, BSG_TPM_PCR_INFO, BSG_TPM_STORED_DATA, BSG_TPM_SYMMETRIC_KEY, BSG_TPM_STORE_PRIVKEY, BSG_TPM_STORE_ASYMKEY, BSG_TPM_MIGRATE_ASYMKEY, BSG_TPM_QUOTE_INFO, BSG_TPM_IDENTITY_CONTENTS, BSG_TPM_PCRVALUE, BSG_TCPA_PCR_FLAGS, BSG_TCS_AUTH, // this is the BSG_TPM_KEY struct without the encData field BSG_TPM_KEY_NONSENSITIVE, BSG_PACKED, BSG_TYPE_MAX} BSG_Type;struct pack_const_tuple_t { BSG_Type type; const void * addr;};typedef struct pack_tuple_t { BSG_Type type; void * addr;} pack_tuple_t;int BSG_Pack(BSG_Type type, const void* src, BSG_BYTE* dst);int BSG_Unpack(BSG_Type type, const BSG_BYTE* src, void* dst);void BSG_Destroy(BSG_Type type, void* src);// wrappers of Pack and PackList which malloc the ouput buffer. to be freed// by the caller later. returns size of allocated buffer, or -1 in case// allocation failedint BSG_PackMalloc (BSG_Type type, const void* src, BSG_BYTE** o_dst);int BSG_PackListMalloc (BSG_BYTE** outBuffer, int ParamCount, ... );// a va_list version of PackListint BSG_PackList(BSG_BYTE* outBuffer, int ParamCount, ... );int BSG_UnpackList(const BSG_BYTE* inBuffer, int ParamCount, ... );void BSG_DestroyList(int ParamCount, ... );// wrapper of PackList which uses a buffer_tTPM_RESULT BSG_PackListBuf (buffer_t * o_buf, int ParamCount, ...);// and a tuple versionTPM_RESULT BSG_DestroyTuple (int numParams, pack_tuple_t params[]);void BSG_PackConst(BSG_UINT32 val, int size, BSG_BYTE* dst);BSG_UINT32 BSG_UnpackConst(const BSG_BYTE* src, int size);BOOL BSG_static_selfcheck ();#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -