2018可信计算TCM服务模块接口规范_第1页
2018可信计算TCM服务模块接口规范_第2页
2018可信计算TCM服务模块接口规范_第3页
2018可信计算TCM服务模块接口规范_第4页
2018可信计算TCM服务模块接口规范_第5页
已阅读5页,还剩183页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

可信计算TCM服务模块接口规范TrustedcomputingTCMservicemoduleinterfacespecificationGM/T0058-2018GM/T0058-2018GM/T0058-2018GM/T0058-2018GM/T0058-2018IIIIII目 次前言 III范围 1规性用件 1术和义 1缩语 3软架构 4TCM应服务 5定义 5与象关系 67通接口 7上文理 11管策类 25TCM管类 30密管类 52数加密类 64PCR操类 72NV存管类 76杂计类 82钥商类 89调数类 92TCM核服务 96TCM心务理 96上文理 96密管理 99事管理 103信码块理 105TCM测试 105工模设置 106所者理 109属管理 112升与护 113授管理 114非失存管理 1167.2.8审计 1207.2.9时钟 1227.2.10数器 123台份识认证 126密模密管理 126平身密管理 129台据护 132数保操作 132密管理 134密协商 138密迁移 141密学务 143传会话 146授协议 149整度与告 150平配寄器理 150TDDL备动库 153TDDL架构 153TDDL内管理 153TDDL错码定义 153TDDL接口 1538.4.1Tddli_Open1538.4.2Tddli_Close1548.4.3Tddli_Cancel1548.4.4Tddli_GetCapability1558.4.5Tddli_SetCapability1568.4.6Tddli_GetStatus1578.4.7Tddli_TransmitData157附录A(规范性附录)接口数据结构159础义 159据构 176权据理 181回定义 181GM/T0058-2018GM/T0058-2018GM/T0058-2018GM/T0058-2018PAGEPAGE101PAGEPAGE100可信计算TCM服务模块接口规范范围TSPTCS和TDDLTCMTCMGB/T32905-2016SM3GB/T32907-2016SM4GB/T32918.2-2016SM2椭圆曲线公钥密码算法第2部分:数字签名算法GB/T32918.4-2016SM2椭圆曲线公钥密码算法第4部分:公钥加密算法GM/T0005-2012随机性检测规范GM/T0009-2012SM2密码算法使用规范GM/T0015-2012基于SM2密码算法的数字证书格式规范以下术语和定义适用于本文件。3.1部件component计算系统中可被度量的硬件和/或软件模块。3.2存储主密钥storagemasterkey用于保护平台身份密钥和用户密钥的主密钥,是可信存储根的一种实现形式。3.3对象object可信计算密码支撑平台内可以被实体访问的各类资源,包括密钥数据、运行环境数据、敏感数据等。3.4可信计算平台trustedcomputingplatform构建在计算系统中,用于实现可信计算功能的支撑系统。3.5可信计算密码支撑平台cryptographicsupportplatformfortrustedcomputing3.6可信报告trustreport一种用于标识平台身份、平台配置和平台证明的报告。3.7可信度量根rootofrrustformeasurement一个可信的完整性度量单元,是可信计算平台内进行可信度量的基础。3.8可信存储根rootoftrustforstorage是一种通用安全机制,是可信计算平台内进行可信存储的基础。3.9可信报告根rootoftrustforreporting指密码模块密钥,是可信计算平台内进行可信报告的基础。3.10可信密码模块trustedcryptographymodule是可信计算平台的硬件模块,为可信计算平台提供密码运算功能,具有受保护的存储空间。3.11TCM服务模块tcmservicemodule可信计算密码支撑平台内部的软件模块,为对平台外部提供访问可信密码模块的软件接口。3.12可信方trustedparty提供可信证明的机构,包含可信第三方和主管方。3.13密码模块密钥tcmdndorsementkey可信密码模块的背书密钥。3.14密钥管理中心keymanagementcentre用于密钥生成和管理的软硬件系统。3.15平台配置寄存器platformconfigurationregister可信密码模块内部用于存储平台配置值的存储单元。3.16平台身份密钥platformidentitykey可信密码模块的身份密钥。3.17平台加密密钥platformencryptionkey可信密码模块中与平台身份密钥关联的加密密钥。3.18双证书dualcertificate包括签名证书和加密证书,分别用于签名和数据加密,由可信方一同签发。3.19实体entity访问密码支撑平台资源的应用程序和用户。3.20完整性度量integritymeasurement使用密码杂凑算法对被度量对象计算其杂凑值的过程。3.21完整性度量值integritymeasurementvalue部件被度量后得到的杂凑值。3.22完整性基准值predefinedintegrityvalue部件在可信状态下被度量得到的杂凑值。该值可作为完整性校验的基准。3.23信任链trustedchain在计算系统启动和运行过程中,使用完整性度量方法在部件之间所建立的信任传递关系。缩略语下列缩略语适用于本文件。EK (TCMEndorsementKey)HMAC 密的息码算(thekeyed-hashmessageauthenticationcode)NV 易性(Non-Volatility)PCR 台置存(PlatformConfigurationRegister)PEK 台密密钥(PlatformEncryptionKey)PIK 台份钥(PlatformIdentityKey)SMK 储密(StorageMasterKey)TCM (TrustedCryptographyModule)TSM TCM服模(TCMservicemodule)TSP TCM应服(TCMServiceTCS TCM核服(TCMCoreServices)TDD TCM设驱动(TCMDeviceDriver)TDDL TCM(TCMDeviceDriverLibrary)TDDLITCM(TCMDeviceDriverLibraryInterface)TCM服务模块软件架构如图1所示,包括TCM应用服务、TCM核心服务和TCM设备驱动库三个组成部分。图1TCM服务模块软件架构图TCMTCMServiceProvider:TSP)TSPTCMTCMTSPTCMTSPTCMTSPTSP。TSP一个TSM的执行需要有TSP:CWindowsTSMCOMTCMTCMCoreServices:TCS)TCSTSMTSPTCM(TDDL)TCMTCS按功能的不同可分为:11TCSTCMTCM(TDDL)TDDLTCM(TCS)TCM(TDD)TDDI/O本标准以C语言为例编制相关函数、接口进行说明。TCM类定义TCM应用服务定义如下类:(Contextclass)TSMPolicyclass)策略管理类用于为不同用户应用程序配置相应的安全策略与行为。(。c)TCMTCMclass)TCMTCMTCMPCTCMTCMKeyclass)TSMTSM(EncryptedDataclass)(CR绑定进行授权处理时,可以给该类分配一个策略对象。f)PCR操作类(PCRCompositeclass)PCRPCRPCR(NVStoreclass)NVTCMNVNVPCRLocality。h)杂凑计算类(Hashclass)杂凑计算类为数字签名操作提供了一种密码学安全的方法。i)密钥协商类(ExchangeKeyclass)密钥协商类用于执行密钥交换协议操作。PCR2TCMNV。图2安全策略与工作对象之间的关系图3非授权工作对象在非授权工作对象中,可以创建多个PCR组合对象和杂凑对象。图4需授权的工作对象之间关系TCMTCM。接口Tspi_SetAttribUint32功能描述:本函数设置对象的32-bit属性。如果请求的数据长度小于UINT32,必须将数据转换成32-bit长度的数据。接口定义:TSM_RESULTTspi_SetAttribUint32(TSM_HOBJECThObject,//inTSM_FLAGattribFlag,//inTSM_FLAGsubFlag,//inUINT32ulAttrib//in);输入参数描述:——hObject ——attribFlag需要设置的属性标记。——subFlag ——ulAttrib ——无。返回参数:TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_INVALID_ATTRIB_FLAGTSM_E_INVALID_ATTRIB_SUBFLAGTSM_E_INVALID_ATTRIB_DATATSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERRORTspi_GetAttribUint3232-bitTSM_RESULTTspi_GetAttribUint32(TSM_HOBJECThObject,//inTSM_FLAGattribFlag,//inTSM_FLAGsubFlag,//inUINT32*pulAttrib//out);输入参数描述:——hObject ——attribFlag需要查询的属性标记。——subFlag ——pulAttrib指向查询到的属性值。返回参数:TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_INVALID_ATTRIB_FLAGTSM_E_INVALID_ATTRIB_SUBFLAGTSM_E_INVALID_ATTRIB_DATATSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERRORTspi_SetAttribData32-bitTSM_RESULTTspi_SetAttribData(TSM_HOBJECThObject,//inTSM_FLAGattribFlag,//inTSM_FLAGsubFlag,//inUINT32ulAttribDataSize,//inBYTE*rgbAttribData//in);输入参数描述:——hObject ——attribFlag ——subFlag ——ulAttribDataSize prgbAttribData(。——rgbAttribData ——无。返回参数:TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_INVALID_ATTRIB_FLAGTSM_E_INVALID_ATTRIB_SUBFLAGTSM_E_INVALID_ATTRIB_DATATSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERRORTspi_GetAttribData功能描述:32-bitTspi_Context_FreeMemory接口定义:TSM_RESULTTspi_GetAttribData(TSM_HOBJECT hObject, //TSM_FLAG attribFlag, //TSM_FLAG subFlag, //inUINT32* pulAttribDataSize,//outBYTE** prgbAttribData //out);输入参数描述:——hObject ——attribFlag需要获取的属性标记。——subFlag ——pulAttribDataSize rgbAttribData(rgbAttribData为一个TSM_UNICODE字符串,则该大小还包括结束符NULL。——prgbAttribData TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_INVALID_ATTRIB_FLAGTSM_E_INVALID_ATTRIB_SUBFLAGTSM_E_INVALID_ATTRIB_DATATSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERRORTspi_ChangeAuth功能描述:接口定义:TSM_RESULTTspi_ChangeAuth(TSM_HOBJECThObjectToChange,//inTSM_HOBJECThParentObject,//inTSM_HPOLICYhNewPolicy//in);输入参数描述:——hObjectToChange ——hParentObject ——hNewPolicy ——无。返回参数:TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_INTERNAL_ERRORTspi_GetPolicyObject功能描述:返回当前工作对象的策略。接口定义:TSM_RESULTTspi_GetPolicyObject(TSM_HOBJECThObject,//inTSM_FLAGpolicyType,//inTSM_HPOLICY*phPolicy//out);输入参数描述:——hObject ——policyTypet ——phPolicy TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERRORTspi_Context_CreateTSM_RESULTTspi_Context_Create(TSM_HCONTEXT* phContext //out);输入参数描述:——无。输出参数描述:——phContext TSM_SUCCESSTSM_E_INTERNAL_ERRORTspi_Context_CloseTSM_RESULTTspi_Context_Close(TSM_HCONTEXT hContext //in);——hContext ——无。返回参数:TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_INTERNAL_ERRORTspi_SetAttribUint32()功能描述:2-bitUIN332-it接口定义:TSM_RESULTTspi_SetAttribUint32(TSM_HOBJECThObject,//inTSM_FLAGattribFlag,//inTSM_FLAGsubFlag,//inUINT32ulAttrib//in);输入参数描述:——hObject ——attribFlag需要设置的属性标记。——subFlag ——ulAttrib 1。表1属性说明属性子属性属性值描述TSM_TSPATTRIB_CONTEXT_SILENT_MODETSM_TSPATTRIB_CONTEXT_NOT_SILENT显示协议接口的对话窗口TSM_TSPATTRIB_CONTEXT_SILENT不显示协议接口对话窗口(默认)TSM_TSPATTRI_SECRET_HASH_MODETSM_TSPATTRIB_SECRET_HASH_MODE_POPUPTSM_TSPATTRIB_HASH_MODE_NOT_NULL对于不包括其他数据授权密码进行杂凑计算TSM_TSPATTRIB_HASH_MODE_NULL对于包括其他数据授权密码进行杂凑计算输出参数描述:——无。返回参数:TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_INVALID_ATTRIB_FLAGTSM_E_INVALID_ATTRIB_SUBFLAGTSM_E_INVALID_ATTRIB_DATATSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERRORTspi_GetAttribUint32()32-bitTSM_RESULTTspi_GetAttribUint32(TSM_HOBJECT hObject, //TSM_FLAG attribFlag,//TSM_FLAG subFlag, //inUINT32* pulAttrib //out);输入参数描述:——hObject ——attribFlag需要查询的属性标记。——subFlag 。表2属性说明属性子属性属性值描述TSM_TSPATTRIB_CONTEXT_SILENT_MODETSM_TSPATTRIB_CONTEXT_NOT_SILENT显示协议接口的对话窗口TSM_TSPATTRIB_CONTEXT_SILENT不显示协议接口对话窗口(默认)TSM_TSPATTRI_SECRET_HASH_MODETSM_TSPATTRIB_SECRET_HASH_MODE_POPUPTSM_TSPATTRIB_HASH_MODE_NOT_NULL对于不包括其他数据授权密码进行杂凑计算TSM_TSPATTRIB_HASH_MODE_NULL对于包括其他数据授权密码进行杂凑计算输出参数描述:——pulAttrib指向查询到的属性值。返回参数:TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_INVALID_ATTRIB_FLAGTSM_E_INVALID_ATTRIB_SUBFLAGTSM_E_INVALID_ATTRIB_DATATSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERRORTspi_SetAttribData32-bitTSM_RESULTTspi_SetAttribData(TSM_HOBJECThObject,//inTSM_FLAGattribFlag,//inTSM_FLAGsubFlag,//inUINT32ulAttribDataSize,//inBYTE*rgbAttribData//in);输入参数描述:——hObject ——attribFlag ——subFlag ——ulAttribDataSize prgbAttribData()——rgbAttribData ——无。返回参数:TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_INVALID_ATTRIB_FLAGTSM_E_INVALID_ATTRIB_SUBFLAGTSM_E_INVALID_ATTRIB_DATATSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERRORTspi_GetAttribData功能描述:32-bitTspi_Context_FreeMemory接口定义:TSM_RESULTTspi_GetAttribData(TSM_HOBJECT hObject, //inTSM_FLAG attribFlag, //inTSM_FLAG subFlag, //inUINT32* pulAttribDataSize,//outBYTE** prgbAttribData //out);输入参数描述:——hObject ——attribFlag需要获取的属性标记。——subFlag ——pulAttribDataSize rgbAttribData(rgbAttribData为一个TSM_UNICODE字符串,则该大小还包括结束符NULL。——prgbAttribData 3。表3属性说明属性子属性属性值TSM_TSPATTRIB_CONTEXT_MACHINE_NAME0提供TSM结束的TSM_UNICODE返回参数:TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_INVALID_ATTRIB_FLAGTSM_E_INVALID_ATTRIB_SUBFLAGTSM_E_INVALID_ATTRIB_DATATSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERRORTspi_Context_Connect与TCS,TCSTSM_RESULTTspi_Context_Connect(TSM_HCONTEXT hContext, //inTSM_UNICODE* wszDestination//in);输入参数描述:——hContext ——wszDestination标识连接到的远程服务(以null结束),NULL代表连接本地服务。输出参数描述:——无。返回参数:TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_NO_CONNECTIONTSM_E_INTERNAL_ERRORTspi_Context_FreeMemoryTSPTSM_RESULTTspi_Context_FreeMemory(TSM_HCONTEXThContext,//inBYTE*rgbMemory//in);输入参数描述:——hContext上下文对象句柄。——rgbMemory上下文对象内存指针。若为NULL,则与该上下文对象绑定的内存块已经释放。输出参数描述:——无。返回参数:TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_INTERNAL_ERRORTSM_E_INVALID_RESOURCETspi_Context_GetDefaultPolicyTSM_RESULTTspi_Context_GetDefaultPolicy(TSM_HCONTEXThContext,//inTSM_HPOLICY*phPolicy//out);——hContext——phPolicy返回上下文对象的策略对象句柄。返回参数:TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_INTERNAL_ERRORTspi_Context_CreateObject功能描述:创建并初始化一个指定类型的空对象,返回该对象的句柄。该空对象将与一个已经打开的上下文对象相关联。接口定义:TSM_RESULTTspi_Context_CreateObject(TSM_HCONTEXThContext,//inTSM_FLAGobjectType,//inTSM_FLAGinitFlags,//inTSM_HOBJECT*phObject//out);输入参数描述:——hContext ——objectType要创建的对象类型标识。——initFlags ——phObject返回所创建的对象。返回参数:TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_INVALID_OBJECT_TYPETSM_E_INVALID_OBJECT_INIT_FLAGTSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERRORTSM_E_ENC_INVALID_TYPETSM_E_HASH_INVALID_ALG说明:对象类型定义见附录A.1.2.1对象初始化定义见附录Tspi_Context_CloseObjectTSM_RESULTTspi_Context_CloseObject(TSM_HCONTEXThContext,//inTSM_HOBJECThObject//in);输入参数描述:——hContext上下文对象句柄。——phObject要释放的对象句柄。输出参数描述:——无。返回参数:TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_INTERNAL_ERRORTspi_Context_GetCapability获取TSM性能TSM_RESULTTspi_Context_GetCapability(TSM_HCONTEXT hContext, //inTSM_FLAG capArea, //inUINT32 ulSubCapLength, //inBYTE* rgbSubCap, //inUINT32* pulRespDataLength,//outBYTE** prgbRespData //out);输入参数描述:——hContext ——capArea ——ulSubCapLength子属性的长度参数。——rgbSubCap 4。表4属性说明属性标记子属性标记数据描述TSM_TCSCAP_ALGTSM_ALG_XX:代表支持的算法名称BOOL返回:TRUE代表系统服务支持该算法,FALSE代表不支持TSM_TCSCAP_VERSION从系统服务获取TSM_VERSION结构说明数据TSM_TCSCAP_CACHINGTSM_TCSCAP_PROP_KEYCACHEBOOL返回:TRUE说明系统服务支持密钥缓存;FALSE说明不支持.TSM_TCSCAP_CACHINGTSM_TCSCAP_PROP_AUTHCACHEBOOL返回:TRUE说明系统服务支持授权协议缓存;FALSE说明不支持TSM_TCSCAP_PERSSTORAGEBOOL返回:TRUE说明系统服务支持永久存储;FALSE说明不支持TSM_TSPCAP_ALGTSM_ALG_DEFAULT返回默认算法TSM_TSPCAP_ALGTSM_ALG_DEFAULT_SIZE返回默认密钥长度TSM_TSPCAP_ALGTSM_ALG_XX:代表支持的算法名称BOLTUEFLE代表不支持属性标记子属性标记数据描述TSM_TSPCAP_VERSION获取TSM版本TSM_TSPCAP_PERSSTORAGEBOOL说明不支持TSM_TCSCAP_MANUFACTURERTSM_TCSCAP_PROP_MANUFACTURER_IDUINT32返回:说明系统服务厂商TSM_TCSCAP_PROP_MANUFACTURER_STR返回系统服务厂商名称TSM_TSPCAP_MANUFACTURERTSM_TSPCAP_PROP_MANUFACTURER_IDUINT32返回:说明TSM厂商TSM_TSPCAP_PROP_MANUFACTURER_STR返回TSM厂商名称TSM_TSPCAP_RETURNVALUE_INFOTSM_TSPCAP_PROP_RETURNVALUE_INFO0说明采用ASN.1编码,1说明采用字节流输出参数描述:——pulRespDataLength ——prgbRespData TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERRORTspi_Context_GetTCMObject获取TCMTCMTCMTSM_RESULTTspi_Context_GetTcmObject(TSM_HCONTEXThContext,//inTSM_HTCM*phTCM//out);——hContext——phTCM返回获取的TCM类对象句柄。返回参数:TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERRORTspi_Context_LoadKeyByBlob功能描述:根据keyblobTCMhUnwrappingKeyblobhUnwrappingKeyTCM内。接口定义:TSM_RESULTTspi_Context_LoadKeyByBlob(TSM_HCONTEXThContext,//inTSM_HKEYhUnwrappingKey,//inUINT32ulBlobLength,//inBYTE*rgbBlobData,//inTSM_HKEY*phKey//out);输入参数描述:——hContext ——hUnwrappingKey rgbBlobData——ulBlobLength (。——rgbBlobData ——phKey KeyTSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERRORTspi_Context_LoadKeyByUUID功能描述:密钥管理器根据UUID获取密钥信息,填充密钥对象,并将密钥加载到TCM中。加载密钥时所需的父密钥信息可从永久性存储器获得。使用此命令时,需要考虑父密钥的授权要求:aTspi_Context_LoadKeyByUUID()b)如果有一个密钥需要授权,并且应用程序知道密钥缓存信息,则应用程序必须通过调用函数Tspi_Context_GetKeyByUUID()从密钥库中获得密钥信息,并为其指派策略后,用Tspi_Key_LoadKey()加载密钥。c)如果有一个密钥需要授权,并且应用程序不知道密钥缓存信息,则应用程序必须通过调用Tspi_Context_GetRegisteredKeysByUUID()从密钥库中获取密钥缓存信息。然后为其指派策略,用Tspi_Key_LoadKey()加载密钥。接口定义:TSM_RESULTTspi_Context_LoadKeyByUUID(TSM_HCONTEXT hContext, //TSM_FLAG persistentStorageType,//TSM_UUID uuidData, //inTSM_HKEY* phKey //out);输入参数描述:——hContext ——persistentStorageType TCSTSP——uuidData UUID——phKey TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_BAD_PARAMETERTSM_E_PS_KEY_NOTFOUNDTSM_E_INTERNAL_ERRORTspi_Context_RegisterKeyTSPTSM_RESULTTspi_Context_RegisterKey(TSM_HCONTEXThContext,//inTSM_HKEYhKey,//inTSM_FLAGpersistentStorageType,//inTSM_UUIDuuidKey,//inTSM_FLAG persistentStorageTypeParent,//inTSM_UUID uuidParentKey //out);输入参数描述:——hContext ——hKey Tspi_SetAttribData——persistentStorageType TCSTSP中。——uuidKey UUID。——persistentStorageTypeParentTCSTSP——uuidParentKey父密钥的UUID返回参数:TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_BAD_PARAMETERTSM_E_PS_KEY_NOTFOUNDTSM_E_INTERNAL_ERRORTspi_Context_UnregisterKeyTSPTSM_RESULTTspi_Context_UnregisterKey(TSM_HCONTEXT hContext, //TSM_FLAG persistentStorageType,//TSM_UUID uuidKey, //inTSM_HKEY* phkey, //out);输入参数描述:——hContext ——persistentStorageType (TCSTSP)——uuidKey UUID——phKey TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_PS_KEY_NOTFOUNDTSM_E_INTERNAL_ERRORTSM_E_BAD_PARAMETER注:注销密钥时不需要验证授权信息Tspi_Context_GetKeyByUUID利用UUIDTSM_RESULTTspi_Context_GetKeyByUUID(TSM_HCONTEXT hContext, //TSM_FLAG persistentStorageType,//TSM_UUID uuidData, //inTSM_HKEY* phKey //out);输入参数描述:——hContext ——persistentStorageType (TCSTSP)——uuidData UUID——phKey TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_BAD_PARAMETERTSM_E_PS_KEY_NOTFOUNDTSM_E_INTERNAL_ERRORTspi_Context_GetKeyByPublicInfo功能描述:接口定义:TSM_RESULTTspi_Context_GetKeyByPublicInfo(TSM_HCONTEXThContext, //TSM_FLAG persistentStorageType,//TSM_ALGORITHM_IDalgld, //UINT32 ulPublicInfoLength,//BYTE* rgbPublicInfo,//inTSM_HKEY* phKey //out);输入参数描述:——hContext ——persistentStorageType ——algld ——ulPublicInfoLength rgbPublicInfo(。——rgbPublicInfo ——phKey TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_BAD_PARAMETERTSM_E_PS_KEY_NOTFOUNDTSM_E_INTERNAL_ERRORTspi_Context_GetRegisteredKeysByUUID功能描述:获取一个TSM_KM_KEYINFO结构的数组,该数组反映注册密钥的层次信息。注:调用方需要调用Tspi_Context_FreeMemory()方法来释放本函数分配的内存。接口定义:TSM_RESULTTspi_Context_GetRegisteredKeysByUUID(TSM_HCONTEXThContext,//inTSM_FLAGpersistentStorageType,//inTSM_UUID*pUuidData,//inUINT32*pulKeyHierarchySize,//outTSM_KM_KEYINFO**ppKeyHierarchy //out);输入参数描述:——hContext ——persistentStorageType (TCSTSP)——pUuidDat UUIDNULLUUIDSMK输出参数描述:——pulKeyHierarchySize ppKeyHierarchy(。——ppKeyHierarchy ppKeyHierarchy数据的缓冲区。返回参数:TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERRORTspi_Context_SetTransEncryptionKeyTSM_RESULTTspi_Context_SetTransEncryptionKey(TSM_HCONTEXThContext,//inTSM_HKEYhKey//in);输入参数描述:——hContext ——hKey ——无返回参数:TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERRORTspi_Context_CloseTransportTSM_RESULTTspi_Context_CloseTransport(TSM_HCONTEXT hContext, //in);输入参数描述:——hContext上下文对象句柄。输出参数描述:——无返回参数:TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERROR注:传输会话接口请见下文7.4.6章节的详细说明Tspi_SetAttribUint322-btUIT3TSM_RESULTTspi_SetAttribUint32(TSM_HOBJECT hObject, //TSM_FLAG attribFlag,//TSM_FLAG subFlag, //inUINT32 ulAttrib //in);输入参数描述:——hObject ——attribFlag需要设置的属性标记。——subFlag ——ulAttrib 5。表5属性说明属性标识子属性标识数据描述TSM_TSPATTRIB_POLICY_CALLBACK_HMAC应用程序提供TSM_TSPATTRIB_POLICY_CALLBACK_TAKEOWNERSHIP应用程序提供TSM_TSPATTRIB_POLICY_SECRET_LIFETIMETSM_TSPATTRIB_POLSECRET_LIFETI授权数据将一直有效属性标识子属性标识数据描述ME_ALWAYSTSM_TSPATTRIB_POLSECRET_LIFETIME_COUNTER授权数据能够被使用的次数TSM_TSPATTRIB_POLSECRET_LIFETIME_TIMER授权数据能够被使用秒数TSM_TSPATTRIB_SECRET_HASH_MODETSM_TSPATTRIB_SECRET_HASH_MODE_POPUPTSM_TSPATTRIB_HASH_MODE_NULL(默认)TSM_TSPATTRIB_HASH_MODE_NOT_NULL输出参数描述:——无返回参数TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_INVALID_ATTRIB_FLAGTSM_E_INVALID_ATTRIB_SUBFLAGTSM_E_INVALID_ATTRIB_DATATSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERRORTspi_GetAttribUint322-btUIT3TSM_RESULTTspi_GetAttribUint32(TSM_HOBJECT hObject, //TSM_FLAG attribFlag,//TSM_FLAG subFlag, //inUINT32* pulAttrib //out);输入参数描述:——hObject ——attribFlag需要获取的属性标记。——subFlag 6。表6属性说明属性标识子属性标识数据描述TSM_TSPATTRIB_POLICY_CALLBACK_HMAC应用程序提供属性标识子属性标识数据描述TSM_TSPATTRIB_POLICY_CALLBACK_TAKEOWNERSHIP应用程序提供TSM_TSPATTRIB_POLICY_SECRET_LIFETIMETSM_TSPATTRIB_POLSECRET_LIFETIME_ALWAYS授权数据将一直有效TSM_TSPATTRIB_POLSECRET_LIFETIME_COUNTER授权数据能够被使用的次数TSM_TSPATTRIB_POLSECRET_LIFETIME_TIMER授权数据能够被使用秒数TSM_TSPATTRIB_SECRET_HASH_MODETSM_TSPATTRIB_SECRET_HASH_MODE_POPUPTSM_TSPATTRIB_HASH_MODE_NULL(默认)TSM_TSPATTRIB_HASH_MODE_NOT_NULL输出参数描述:——pulAttrib TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_INVALID_ATTRIB_FLAGTSM_E_INVALID_ATTRIB_SUBFLAGTSM_E_INVALID_ATTRIB_DATATSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERRORTspi_SetAttribData32-bitTSM_RESULTTspi_SetAttribData(TSM_HOBJECThObject,//inTSM_FLAGattribFlag,//inTSM_FLAGsubFlag,//inUINT32ulAttribDataSize,//inBYTE*rgbAttribData//in);输入参数描述:——hObject ——attribFlag——subFlags 。表7属性说明属性标识子属性标识数据描述TSM_TSPATTRIB_POLICY_CALLBACK_HMAC应用程序提供TSM_TSPATTRIB_POLICY_CALLBACK_TAKEOWNERSHIP应用程序提供TSM_TSPATTRIB_POLICY_POPUPSTRING0POPUP窗口的字符串——ulAttribDataSize rgbAttribData(。——rgbAttribData ——无。返回参数TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_INVALID_ATTRIB_FLAGTSM_E_INVALID_ATTRIB_SUBFLAGTSM_E_INVALID_ATTRIB_DATATSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERRORTspi_GetAttribData功能描述:32-bit接口定义:TSM_RESULTTspi_GetAttribData(TSM_HOBJECThObject, //inTSM_FLAGattribFlag, //inTSM_FLAGsubFlag, //inUINT32*pulAttribDataSize,//BYTE**prgbAttribData //);输入参数描述:——hObject ——attribFlag ——subFlags 。表8属性说明属性标识子属性标识数据描述TSM_TSPATTRIB_POLICY_CALLBACK_HMAC应用程序提供TSM_TSPATTRIB_POLICY_CALLBACK_TAKEOWNERSHIP应用程序提供TSM_TSPATTRIB_POLICY_POPUPSTRING0POPUP窗口的字符串输出参数描述:——pulAttribDataSize prgbAttribData(。——prgbAttribData TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_INVALID_ATTRIB_FLAGTSM_E_INVALID_ATTRIB_SUBFLAGTSM_E_INVALID_ATTRIB_DATATSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERRORTspi_Policy_SetSecret功能描述:本函数设置策略对象的授权数据和句柄。如果secretmode不要求任何授权数据,参数ulSecretLength被设为0,rgbSecret为NULL.此时,若password为NULL,则子密钥也为NULL。secretmode包括:TSM_SECRET_MODE_NONE:无授权要求。TSM_SECRET_MODE_SM3:对rgbsecret指向一个散列后的32字节秘密信息。TSM_SECRET_MODE_PLAIN:rgbsecret指向一段明文,ulsecretLength为rgbsecret的串长。TSM_SECRET_MODE_POPUP:TSP提示用户输入一串口令,其代表了一串TSM_UNICODE字符串。该字符串必须被SCH杂凑过。接口定义:TSM_RESULTTspi_Policy_SetSecret(TSM_HPOLICYhPolicy,//inTSM_FLAGsecretMode,//UINT32ulSecretLength,//BYTE*rgbSecret //);输入参数描述:——hPolicy ——secretMode ——ulSecretLengthrgbSecret ——rgbSecret blob——无。返回参数TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERRORTspi_Policy_FlushSecretTSM_RESULTTspi_Policy_FlushSecret(TSM_HPOLICY hPolicy //in);——hPolicy——无返回参数:TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_INTERNAL_ERRORTspi_Policy_AssignToObject功能描述:接口定义:TSM_RESULTTspi_Policy_AssignToObject(TSM_HPOLICY hPolicy, //inTSM_HOBJECT hObject //in);输入参数描述:——hPolicy策略对象句柄。——hObject工作对象句柄。输出参数描述:——无返回参数:TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_INTERNAL_ERRORTCMTspi_TCM_CollateIdentityRequest功能描述:(PIK只有TCMOwner有权创建身份密钥。接口定义:TSM_RESULTTspi_TCM_CollateIdentityRequest(TSM_HTCMhTCM,hKeySMK,hCAPubKey,//////inininUINT32ulIdentityLabelLength,//inBYTE*rgbIdentityLabelData,//inTSM_HKEYhIdentityKey,//inTSM_ALGORITHM_IDalgID,//inUINT32*pulTCMIdentityReqLength,//outBYTE**prgbTCMIdentityReq//out);输入参数描述:——hTCM TCM——hKeySMK SMK——hCAPubKey ——ulIdentityLabelLength rgbIdentityLabelData——rgbIdentityLabelData TSM_UNICODE字符串。——hIdentityKey ——algID PIK输出参数描述:——pulTCMIdentityReqLength接收prgbTCMIdentityReq的缓冲区字节大小。——prgbTCMIdentityReq TCM_IDENTITY_REQTSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERRORTspi_TCM_ActivateIdentityPIKTSM_RESULTTspi_TCM_ActivateIdentity(TSM_HTCMhTCM,//inTSM_HKEYhIdentKey,//inUINT32ulAsymCAContentsBlobLength,//inBYTE*rgbAsymCAContentsBlob,//inUINT32ulSymCAAttestationBlobLength,//inBYTE*rgbSymCAAttestationBlob,//inUINT32*pulCredentialLength,//outBYTE**prgbCredential//out);输入参数描述:——hTCM TCM——hIdentityKey ——ulAsymCAContentsBlobLengthrgbAsymCAContentsBlob(。——rgbAsymCAContentsBlob TCM_ASYM_CA_CONTENTS得。——ulSymCAAttestationBlobLength rgbSymCAAttestationBlob。——rgbSymCAAttestationBlob TCM_SYM_CA_ATTESTATION得。输出参数描述:——pulCredetialLength prgbCredential(。——prgbCredetial PIKTSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERRORTspi_TCM_CollatePekRequestPEKPEKTSM_RESULTTspi_TCM_CollatePekRequest(TSM_HTCMTSM_HKEYhTCM,hCAPubKey,////ininUINT32ulPekLabelLength,//inBYTE*rgbPekLabelData,//inTSM_ALGORITHM_IDalgID,//inUINT32ulPekParamsLength,//inBYTE*rgbPekParams,//inUINT32*pulTCMPekReqLength,//outBYTE**prgbTCMPekReq//out);输入参数描述:——hTCM TCM——hCAPubKey ——ulPekLabelLength rgbPekLabelData——rgbPekLabelData TSM_UNICODE——algID PEK——ulPekParamsLength rgbPekParams——rgbPekParams PEKTCM_KEY_PARMS——pulTCMPekReqLength接收prgbTCMPekReq的缓冲区字节大小。——prgbTCMPekReq PEKTCM_PEK_REQTSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERRORTspi_TCM_ActivatePEKCertPEKTSM_RESULTTspi_TCM_ActivatePEKCert(TSM_HTCMhTCM,//inUINT32ulAsymCAContentsBlobLength,//inBYTE*rgbAsymCAContentsBlob,//inUINT32ulSymCAAttestationBlobLength,//inBYTE*rgbSymCAAttestationBlob,//inUINT32*pulCredentialLength,//outBYTE**prgbCredential//out);输入参数描述:——hTCM TCM——ulAsymCAContentsBlobLengthrgbAsymCAContentsBlob(。——rgbAsymCAContentsBlob EKTCM_SYMMETRIC_KEY处获得。——ulSymCAAttestationBlobLength rgbSymCAAttestationBlob。——rgbSymCAAttestationBlob TCM_SYM_CA_ATTESTATION处获得。输出参数描述:——pulCredetialLength prgbCredential(。——prgbCredetial PEKTSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERROR说明:证书格式请参考GM/T0015-2012Tspi_TCM_ActivatePEKPEKTSM_RESULTTspi_TCM_ActivatePEK(TSM_HTCMTSM_HKEYhTCM,hKeySMK,////ininTSM_HKEYhPEKKey,//in,outTSM_HPCRShPEKPcr,//inUINT32ulAsymCAContentsBlobLength,//inBYTE*rgbAsymCAContentsBlob,//inUINT32ulSymCAAttestationBlobLength,//inBYTE*rgbSymCAAttestationBlob,//in);输入参数描述:——hTCM TCM——hKeySMK SMK——hPEKKey PEK——hPEKPcr PEKPCR——ulAsymCAContentsBlobLength rgbAsymCAContentsBlob(。——rgbAsymCAContentsBlob EKTCM_SYMMETRIC_KEY结构数据,其从可信方处获得。——ulSymCAAttestationBlobLength rgbSymCAAttestationBlob。——rgbSymCAAttestationBlob PEK(TCM_KEY处获得。输出参数描述:——hPEKKey PEKTSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERRORTspi_TCM_CreateEndorsementKey功能描述:创建不可撤消的密码模块密钥。hKey对象的属性由Tspi_SetAttribData()设置。接口定义:TSM_RESULTTspi_TCM_CreateEndorsementKey(TSM_HTCMhTCM,//inTSM_HKEYhKey,//inTSM_VALIDATION*pValidationData//in,out);输入参数描述:——hTCM TCM——hKey endorsementKeyendorsementKey属性。——pValidationDataexternalData。——pValidationData该命令执行成功后,该缓冲区包含计算得到的验证数据。返回参数TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERRORTspi_TCM_GetPubEndorsementKeyTSM_RESULTTspi_TCM_GetPubEndorsementKey(TSM_HTCMhTCM,//inTSM_BOOLfOwnerAuthorized,//inTSM_VALIDATION*pValidationData,//in,outTSM_HKEY*phEndorsementPubKey//out);输入参数描述:——hTCM TCM——fOwnerAuthorizedendorsement的公钥,TCMowner——pValidationData提供用于计算签名的externalData。输出参数描述:——pValidationData该命令执行成功后,pValidationData包含计算得到的验证数据。——phEndorsementPubKeyendorsementkeyTSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERRORTspi_TCM_CreateRevocableEndorsementKey功能描述:TCMEndorsementEKTCMEK接口定义:TSM_RESULTTspi_TCM_CreateRevocableEndorsementKey(TSM_HTCMhTCM,//inTSM_HKEYhKey,//inTSM_VALIDATION*pValidationData,//in,outUINT32*pulEkResetDataLength,//in,outBYTE**prgbEkResetData//in,out);输入参数描述:——hTCM TCM——hKey endorsemntKey——pValidationData提供用于计算签名的externalData。——pulEkResetDataLength0,TSPTCMEKEKEK——pgbERestDaa 若pulERestDaaLegth不为0EK——pValidationData ——pulEkResetDataLength如果这一值为0,TSP使用TCM来产生撤销EK的授权数据,之后,该参数包含复位数据包的长度。如果是其他值,则表示了由外部产生的复位数据包长度。——prgbEkResetData *pulEKResetDataLength0TCMEK返回参数TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERRORTspi_TCM_RevokeEndorsementKey功能描述:TCMEK,Owner(EKSMKownerOwnerAuthNVRAMNVRAM。接口定义:TSM_RESULTTspi_TCM_RevokeEndorsementKey(TSM_HTCM hTCM, //UINT32 ulEkResetDataLength,//BYTE* rgbEkResetData //in);输入参数描述:——hTCM TCM——ulEkResetDataLength撤销EK的授权数据大小。——rgbEkResetData EK——无返回参数TSM_SUCCESSTSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERRORTspi_TCM_TakeOwnership功能描述:TCMOwnerTCMOwnerTspi_Context_RegisterKeySMK接口定义:TSM_RESULTTspi_TCM_TakeOwnership(TSM_HTCM hTCM, //inTSM_HKEY hKeySMK, //TSM_HKEY hEndorsementPubKey//);输入参数描述:——hTCM TCM——hKeySMK SMK(StorageRootKey——hEndorsementPubKeyEndorsementpublickey的密钥对象句柄,该密钥用于加密SMK秘密和TCM秘密。输出参数描述:——无返回参数TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_INTERNAL_ERRORTspi_TCM_ClearOwnerTCMownershipTSM_RESULTTspi_TCM_ClearOwner(TSM_HTCM hTCM, //inTSM_BOOL fForcedClear//in);输入参数描述:——hTCM TCM——fForcedClear FALSE,将执行需要TCMOwner输出参数描述:——无返回参数TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_INTERNAL_ERRORTspi_TCM_SetOperatorAuthTCMhOperatorPolicyhTCM者授权策略。此命令中,操作者的授权是明文形式,如果hOperatorPolicy的secretmode是TSM_SECRET_MODE_CALLBACK,TSPTSM_E_POLICY_NO_SECRETTSM_RESULTTspi_TCM_SetOperatorAuth(TSM_HTCM hTCM, //TSM_HPOLICY hOperatorPolicy//);输入参数描述:——hTCM TCM——hOperatorPolicy策略对象句柄,该策略对象包含新授权信息。输出参数描述:——无。返回参数:TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERRORTspi_TCM_SetStatusTCMTSM_RESULTTspi_TCM_SetStatus(TSM_HTCMhTCM,//inTSM_FLAGstatusFlag,//inTSM_BOOL fTcmState //in);输入参数描述:——hTCM TCM——statusFlag表示待设置的状态或属性。——fTcmState 9表9属性说明属性FTcmState状态值描述TSM_TCMSTATUS_DISABLEOWNERCLEAR忽略永久禁止TCM所有者进行ClearOwner操作此时,方法ClearOwner()中的fForcedClear参数将不再允许取FALSE值这个设置需要所有者授权TSM_TCMSTATUS_DISABLEFORCECLEAR忽略临时禁止TCM(次系统运行时有效,在下一次系统重新启动时将被取消)此时,方法ClearOwner()中的fForcedClear参数将暂时不允许取TRUE值(直到下次系统重新启动为止)TSM_TCMSTATUS_OWNERSETDISABLETSM_BOOLfTCMState=TRUE:表示设置TCM的状态为Disabled该命令需要TCM所有者的授权TSM_TCMSTATUS_PHYSICALDISABLETSM_BOOLfTCMState=TRUE:表示设置TCM的状态为Disabled该命令必须是物理现场的。TSM_TCMSTATUS_PHYSICALSETDEACTIVATEDTSM_BOOLfTCMState=TRUE:表示设置TCM的状态为Deactived该命令必须是物理现场的TSM_TCMSTATUS_SETTEMPDEACTIVATED忽略暂时将TCM的状态设置为Deactived(直到下次系统重新启动为止)TSM_TCMSTATUS_SETOWNERINSTALLTSM_BOOLfTCMState=TRUE:表示允许使用TakeOwnership()方法来取得TCM的所有者关系这个操作需要物理现场TSM_TCMSTATUS_DISABLEPUBEKREADTSM_BOOL永久禁止在没有TCMEKTCMEK后,GetPubEndorsementKey()方法中的fOwnerAuthorizedFALSE设置这个属性值需要所有者授权TSM_TCMSTATUS_DISABLEDTSM_BOOL将TCM设置为可用或不可用状态TSM_TCMSTATUS_DEACTIVATEDTSM_BOOL将TCM设置为激活或非激活状态输出参数描述:——无。返回参数:TSM_SUCCESSTSM_E_INVALID_HANDLETSM_E_BAD_PARAMETERTSM_E_INTERNAL_ERRORTspi_TCM_GetStatus功能描述:查询TCM状态。读取TCM状态标记需要所有者授权。接口定义:TSM_RESULTTspi_TCM_GetStatus(TSM_HTCMhTCM,//inTSM_FLAGstatusFlag,//inTSM_BOOL*pfTcmState//);输入参数描述:——hTCM TCM——statusFlag表示待获取的状态或属性。输出参数描述:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论