GM/T 0058-2018 可信计算 TCM服务模块接口规范

GM/T 0058-2018 Trusted computing—TCM service module interface specification

行业标准-密码 中文简体 现行 页数:192页 | 格式:PDF

基本信息

标准号
GM/T 0058-2018
标准类型
行业标准-密码
标准状态
现行
中国标准分类号(CCS)
国际标准分类号(ICS)
发布日期
2018-05-02
实施日期
2018-05-02
发布单位/组织
国家密码管理局
归口单位
密码行业标准化技术委员会
适用范围
本标准规定了TCM服务模块的组成和接口标准,包含TSP、TCS和TDDL,是面向TCM应用层的接口标准。
本标准适用于基于TCM的应用开发。

发布历史

研制信息

起草单位:
国民技术股份有限公司、联想控股有限公司、同方股份有限公司、中国科学院软件所、北京兆日技术有限责任公司、瑞达信息安全产业股份有限公司、长春吉大正元信息技术股份有限公司、方正科技集团股份有限公司、北京信息科技大学、中国长城计算机深圳股份有限公司、成都卫士通信息产业股份有限公司、无锡江南信息安全工程技术中心、中国人民解放军国防科学技术大学、北京工业大学
起草人:
吴秋新、杨贤伟、范琴、邹浩、余发江、宁晓魁、王梓、郑必可、刘鑫、林洋、李伟平、尹洪兵、徐震、严飞、付月朋、明明、刘韧、李丰、许勇、贾兵、王蕾、顾健、何长龙、秦宇
出版信息:
页数:192页 | 字数:368 千字 | 开本: 大16开

内容描述

犐犆犛35.040

犔80

GM/T0058—2018

可信计算TCM服务模块接口规范

TrustedcomputingTCMomputingservicemoduleinterface

specification

2018-05-02发布2018-05-02实施

GM/T0058-2018

目次

前言III

1范围1

2规范性引用文件1

3术语和定义1

4缩略语3

5软件架构4

6TCM应用服务5

6.1类定义5

6.2类与对象的关系6

6.3接口7

6.3.1通用接口7

6.3.2上下文管理11

6.3.3管理策略类25

6.3.4TCM管理类30

6.3.5密钥管理类52

6.3.6数据加解密类64

6.3.7PCR操作类72

6.3.8NV存储管理类76

6.3.9杂凑计算类82

6.3.10密钥协商算类89

6.3.11回调函数类92

7TCM核心服务96

7.1TCM核心服务管理96

7.1.1上下文管理96

7.1.2密钥管理99

7.1.3事件管理103

7.2可信密码模块管理105

7.2.1TCM测试105

7.2.2工作模式设置106

7.2.3所有者管理109

7.2.4属性管理112

7.2.5升级与维护113

7.2.6授权管理114

7.2.7非易失性存储管理116

7.2.8审计120

7.2.9时钟122

7.2.10计数器123

7.3平台身份标识与认证126

7.3.1密码模块密钥管理126

I

GM/T0058-2018

7.3.2平台身份密钥管理129

7.4平台数据保护132

7.4.1数据保护操作132

7.4.2密钥管理134

7.4.3密钥协商138

7.4.4密钥迁移141

7.4.5密码学服务143

7.4.6传输会话146

7.4.7授权协议149

7.5完整性度量与报告150

7.5.1平台配置寄存器管理150

8TDDL设备驱动库153

8.1TDDL架构153

8.2TDDL内存管理153

8.3TDDL错误码与定义153

8.4TDDL接口153

8.4.1Tddli_Open153

8.4.2Tddli_Close154

8.4.3Tddli_Cancel154

8.4.4Tddli_GetCapability155

8.4.5Tddli_SetCapability156

8.4.6Tddli_GetStatus157

8.4.7Tddli_TransmitData157

附录A(规范性附录)接口数据结构159

A.1基础定义159

A.2数据结构176

A.3授权数据处理181

A.4返回码定义181

II

GM/T0058-2018

前言

可信计算标准体系包含以下标准:

GM/T0011-2012可信计算可信密码支撑平台功能与接口规范

GM/T0012-2012可信计算可信密码模块接口规范

GM/T0013-2012可信计算可信密码模块接口符合性测试规范

GM/TXXXX-XXXX可信计算TCM服务模块接口规范

上述四个标准中,本标准的接口介于GM/T0012-2012之上,向上为应用程序提供接口调用,中间定

义了如何实现服务模块接口,向下调用GM/T0012-2012中的接口,本标准以GM/T0011-2012为基础及核

心,技术内容基本未做改动,GM/T0013-2012为可信密码模块产品的符合性检测提供依据,四个规范形

成一套完整的可信计算体系标准。

本标准根据GB/T1.1-2009给出的规则起草。

请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别这些专利的责任。

本标准由密码行业标准化技术委员会提出并归口。

本标准起草单位:国民技术股份有限公司、联想控股有限公司、同方股份有限公司、中国科学院软

件所、北京兆日技术有限责任公司、瑞达信息安全产业股份有限公司、长春吉大正元信息技术股份有限

公司、方正科技集团股份有限公司、北京信息科技大学、中国长城计算机深圳股份有限公司、成都卫士

通信息产业股份有限公司、无锡江南信息安全工程技术中心、中国人民解放军国防科学技术大学、北京

工业大学。

本标准主要起草人:吴秋新、杨贤伟、范琴、邹浩、余发江、宁晓魁、王梓、郑必可、刘鑫、林洋、

李伟平、尹洪兵、徐震、严飞、付月朋、明明、刘韧、李丰、许勇、贾兵、王蕾、顾健、何长龙、秦宇。

本标准凡涉及密码算法的相关内容,按国家有关法规实施;凡涉及到采用密码技术解决保密性、完

整性、真实性、不可否认性需求的应遵循密码相关国家标准和行业标准。

III

GM/T0058-2018

可信计算TCM服务模块接口规范

1范围

本标准规定了TCM服务模块的组成和接口标准,包含TSP、TCS和TDDL,是面向TCM应用层的接口标准。

本标准适用于基于TCM的应用开发。

2规范性引用文件

下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文件,

凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。

GB/T32905-2016SM3密码杂凑算法

GB/T32907-2016SM4分组密码算法

GB/T32918.2-2016SM2椭圆曲线公钥密码算法第2部分:数字签名算法

GB/T32918.4-2016SM2椭圆曲线公钥密码算法第4部分:公钥加密算法

GM/T0005-2012随机性检测规范

GM/T0009-2012SM2密码算法使用规范

GM/T0015-2012基于SM2密码算法的数字证书格式规范

3术语和定义

以下术语和定义适用于本文件。

3.1

部件component

计算系统中可被度量的硬件和/或软件模块。

3.2

存储主密钥storagemasterkey

用于保护平台身份密钥和用户密钥的主密钥,是可信存储根的一种实现形式。

3.3

对象object

可信计算密码支撑平台内可以被实体访问的各类资源,包括密钥数据、运行环境数据、敏感数据等。

3.4

可信计算平台trustedcomputingplatform

构建在计算系统中,用于实现可信计算功能的支撑系统。

3.5

可信计算密码支撑平台cryptographicsupportplatformfortrustedcomputing

1

GM/T0058-2018

可信计算平台的重要组成部分,包括密码算法、密钥管理、证书管理、密码协议、密码服务等内容,

为可信计算平台自身的完整性、身份可信性和数据安全性提供密码支持。其产品形态主要表现为可信密

码模块和可信密码服务模块。

3.6

可信报告trustreport

一种用于标识平台身份、平台配置和平台证明的报告。

3.7

可信度量根rootofrrustformeasurement

一个可信的完整性度量单元,是可信计算平台内进行可信度量的基础。

3.8

可信存储根rootoftrustforstorage

是一种通用安全机制,是可信计算平台内进行可信存储的基础。

3.9

可信报告根rootoftrustforreporting

指密码模块密钥,是可信计算平台内进行可信报告的基础。

3.10

可信密码模块trustedcryptographymodule

是可信计算平台的硬件模块,为可信计算平台提供密码运算功能,具有受保护的存储空间。

3.11

TCM服务模块tcmservicemodule

可信计算密码支撑平台内部的软件模块,为对平台外部提供访问可信密码模块的软件接口。

3.12

可信方trustedparty

提供可信证明的机构,包含可信第三方和主管方。

3.13

密码模块密钥tcmdndorsementkey

可信密码模块的背书密钥。

3.14

密钥管理中心keymanagementcentre

用于密钥生成和管理的软硬件系统。

3.15

平台配置寄存器platformconfigurationregister

可信密码模块内部用于存储平台配置值的存储单元。

2

GM/T0058-2018

3.16

平台身份密钥platformidentitykey

可信密码模块的身份密钥。

3.17

平台加密密钥platformencryptionkey

可信密码模块中与平台身份密钥关联的加密密钥。

3.18

双证书dualcertificate

包括签名证书和加密证书,分别用于签名和数据加密,由可信方一同签发。

3.19

实体entity

访问密码支撑平台资源的应用程序和用户。

3.20

完整性度量integritymeasurement

使用密码杂凑算法对被度量对象计算其杂凑值的过程。

3.21

完整性度量值integritymeasurementvalue

部件被度量后得到的杂凑值。

3.22

完整性基准值predefinedintegrityvalue

部件在可信状态下被度量得到的杂凑值。该值可作为完整性校验的基准。

3.23

信任链trustedchain

在计算系统启动和运行过程中,使用完整性度量方法在部件之间所建立的信任传递关系。

4缩略语

下列缩略语适用于本文件。

EK可信计算密码模块密钥(TCMEndorsementKey)

HMAC带密钥的消息验证码算法(thekeyed-hashmessageauthenticationcode)

NV非易失性(Non-Volatility)

PCR平台配置寄存器(PlatformConfigurationRegister)

PEK平台加密密钥(PlatformEncryptionKey)

PIK平台身份密钥(PlatformIdentityKey)

SMK存储主密钥(StorageMasterKey)

TCM可信密码模块(TrustedCryptographyModule)

3

GM/T0058-2018

TSMTCM服务模块(TCMservicemodule)

TSPTCM应用服务(TCMServiceProvider)

TCSTCM核心服务(TCMCoreServices)

TDDTCM设备驱动(TCMDeviceDriver)

TDDLTCM设备驱动库(TCMDeviceDriverLibrary)

TDDLITCM设备驱动库接口(TCMDeviceDriverLibraryInterface)

5软件架构

TCM服务模块软件架构如图1所示,包括TCM应用服务、TCM核心服务和TCM设备驱动库三个组成部分。

图1TCM服务模块软件架构图

a)TCM应用服务(TCMServiceProvider:TSP)

TSP向应用程序提供TCM的服务,使应用程序只关注它本身的特性,通过提供上层的TCM函数接口,

使TSP执行TCM提供的可信函数。TSP还提供了一些方便功能操作的辅助函数,这些函数不是由TCM提

供,如:签名验证功能。

TSP位于应用程序进程内,使每个应用程序看起来像拥有一个自己的TSP。

多进程的操作系统中,会有多个TSP实例运行在平台上。

一个TSM的执行需要有TSP:

1)它们负责对应用程序间信息和数据的传输提供保护;

2)提供C语言接口或者能被各个平台调用的通用接口,和对应用程序的动态链接或静态连接;

3)运行在Windows操作系统的TSM也可以提供COM接口。

b)TCM核心服务(TCMCoreServices:TCS)

TCS位于TSM服务提供者(TSP)层和TCM设备驱动库(TDDL)层之间,以系统服务的形式存在,为

TSP等上层应用提供TCM使用和密钥管理等功能接口。

4

GM/T0058-2018

TCS按功能的不同可分为:

基本信息管理、密钥管理、密钥缓存管理、事件管理、授权操作、完整性操作、迁移操作、密码操

作、身份证书操作、设备操作、密钥协商类11个模块,其中基本信息管理、密钥管理和事件管理同属

于TCS管理器,密钥缓存管理、授权操作、完整性操作、迁移操作、密码操作、身份证书操作、设备操

作同属于TCM操作。

c)TCM设备驱动库(TDDL)

TDDL位于TCM核心服务(TCS)层和TCM设备驱动(TDD)层之间,主要目的是在TDD之上提供一

个标准的接口,屏蔽各设备I/O控制信息的差异,完成信息在用户软件和内核软件的传递。

本标准以C语言为例编制相关函数、接口进行说明。

6TCM应用服务

6.1类定义

TCM应用服务定义如下类:

a)上下文管理类(Contextclass)

上下文管理类包含关于TSM对象的执行环境的信息

b)策略管理类(Policyclass)

策略管理类用于为不同用户应用程序配置相应的安全策略与行为。

应用程序通过策略管理为授权机制提供专门的授权秘密信息的处理操作(如回调,生命周期)。

c)TCM管理类(TCMclass)

TCM管理类用于表示TCM的所有者。TCM的所有者可以看成是PC环境中的系统管理员。因此,每个

上下文仅有一个TCM管理类的实例。这个对象自动与一个策略对象相关联,用于处理TCM所有者的授权

数据。此外,它还提供一些基本控制和报告的功能。

d)密钥管理类(Keyclass)

密钥管理类用于表示TSM密钥管理功能的入口。每个密钥对象的实例代表TSM密钥树中一个具体的

密钥节点。每个需授权的密钥对象,需要分配一个策略对象,用于管理授权秘密信息。

e)数据加解密类(EncryptedDataclass)

该类用于将外部(例如用户,应用程序)产生的数据与系统关联起来(与平台或PCR绑定),或者

用于为外部提供数据加密/解密服务。

进行授权处理时,可以给该类分配一个策略对象。

f)PCR操作类(PCRCompositeclass)

PCR操作类可用于建立系统平台的信任级别。该类提供了对PCR进行选择、读、写等操作的简便方

法。

所有需要PCR信息的函数,在其参数表中都使用了这个类的对象句柄。

g)NV存储管理类(NVStoreclass)

NV存储管理类用于管理TCM的非易失性存储区域中存储属性信息。用于NV区域的定义、读、写和

释放。

该类建立NV存储区的大小、索引、各种读写授权,其中授权可以基于PCR值或者授权数据,但不

能基于Locality。

h)杂凑计算类(Hashclass)

杂凑计算类为数字签名操作提供了一种密码学安全的方法。

i)密钥协商类(ExchangeKeyclass)

密钥协商类用于执行密钥交换协议操作。

5

GM/T0058-2018

6.2类与对象的关系

工作对象可再分为授权工作对象和非授权工作对象。非授权工作对象包括PCR组合对象和杂凑对

象,见图2。授权对象包括TCM对象、密钥对象、NV存储对象、迁移数据对象和加密数据对象,见图3。

图2安全策略与工作对象之间的关系

图3非授权工作对象

在非授权工作对象中,可以创建多个PCR组合对象和杂凑对象。

6

GM/T0058-2018

图4需授权的工作对象之间关系

调用程序(用户)可能只为使用的每个策略提供一次授权数据。一个策略可能分配给多个对象,比

如密钥对象,加密数据对象,或者TCM对象。这些对象中的每一个都将使用分配给它的策略对象的内部

函数来处理授权TCM命令,关系见图4。

6.3接口

6.3.1通用接口

6.3.1.1Tspi_SetAttribUint32

功能描述:

本函数设置对象的32-bit属性。如果请求的数据长度小于UINT32,必须将数据转换成32-bit长度

的数据。

接口定义:

TSM_RESULTTspi_SetAttribUint32

(

TSM_HOBJECThObject,//in

TSM_FLAGattribFlag,//in

TSM_FLAGsubFlag,//in

UINT32ulAttrib//in

7

GM/T0058-2018

);

输入参数描述:

——hObject需要设置属性的对象句柄。

——attribFlag需要设置的属性标记。

——subFlag需要设置的子属性标记。

——ulAttrib属性设置的值。

输出参数描述:

——无。

返回参数:

TSM_SUCCESS

TSM_E_INVALID_HANDLE

TSM_E_INVALID_ATTRIB_FLAG

TSM_E_INVALID_ATTRIB_SUBFLAG

TSM_E_INVALID_ATTRIB_DATA

TSM_E_BAD_PARAMETER

TSM_E_INTERNAL_ERROR

6.3.1.2Tspi_GetAttribUint32

功能描述:

本函数获取对象的32-bit属性。

接口定义:

TSM_RESULTTspi_GetAttribUint32

(

TSM_HOBJECThObject,//in

TSM_FLAGattribFlag,//in

TSM_FLAGsubFlag,//in

UINT32*pulAttrib//out

);

输入参数描述:

——hObject需要查询属性的对象句柄。

——attribFlag需要查询的属性标记。

——subFlag需要查询的子属性标记。

输出参数描述:

——pulAttrib指向查询到的属性值。

返回参数:

TSM_SUCCESS

TSM_E_INVALID_HANDLE

TSM_E_INVALID_ATTRIB_FLAG

TSM_E_INVALID_ATTRIB_SUBFLAG

TSM_E_INVALID_ATTRIB_DATA

TSM_E_BAD_PARAMETER

TSM_E_INTERNAL_ERROR

8

GM/T0058-2018

6.3.1.3Tspi_SetAttribData

功能描述:

本函数设置对象的非32-bit属性。属性数据的结构和大小依属性而定。

接口定义:

TSM_RESULTTspi_SetAttribData

(

TSM_HOBJECThObject,//in

TSM_FLAGattribFlag,//in

TSM_FLAGsubFlag,//in

UINT32ulAttribDataSize,//in

BYTE*rgbAttribData//in

);

输入参数描述:

——hObject需要设置属性的对象句柄。

——attribFlag需要设置的属性标记。

——subFlag需要设置的子属性标记。

——ulAttribDataSizeprgbAttribData参数的大小(以字节为单位)。

——rgbAttribData此参数指向一个存放设置属性值的缓冲区。

输出参数描述:

——无。

返回参数:

TSM_SUCCESS

TSM_E_INVALID_HANDLE

TSM_E_INVALID_ATTRIB_FLAG

TSM_E_INVALID_ATTRIB_SUBFLAG

TSM_E_INVALID_ATTRIB_DATA

TSM_E_BAD_PARAMETER

TSM_E_INTERNAL_ERROR

6.3.1.4Tspi_GetAttribData

功能描述:

本函数获取对象的非32-bit属性。属性数据的结构和大小依属性而定。为属性数据所分配的内存

块必须用Tspi_Context_FreeMemory来释放。

接口定义:

TSM_RESULTTspi_GetAttribData

(

TSM_HOBJECThObject,//in

TSM_FLAGattribFlag,//in

TSM_FLAGsubFlag,//in

UINT32*pulAttribDataSize,//out

BYTE**prgbAttribData//out

);

输入参数描述:

9

GM/T0058-2018

——hObject需要获取属性的对象句柄。

——attribFlag需要获取的属性标记。

——subFlag需要获取的子属性标记。

输出参数描述:

——pulAttribDataSize取得的rgbAttribData参数的大小(以字节为单位)。若参数

rgbAttribData为一个TSM_UNICODE字符串,则该大小还包括结束符NULL。

——prgbAttribData此参数指向一个存放获取的属性值的缓冲区。

返回参数:

TSM_SUCCESS

TSM_E_INVALID_HANDLE

TSM_E_INVALID_ATTRIB_FLAG

TSM_E_INVALID_ATTRIB_SUBFLAG

TSM_E_INVALID_ATTRIB_DATA

TSM_E_BAD_PARAMETER

TSM_E_INTERNAL_ERROR

6.3.1.5Tspi_ChangeAuth

功能描述:

改变实体(对象)的授权数据(秘密)并将该对象指派给策略对象。所有使用授权数据的类都提供

本函数用以改变它们的授权数据。

接口定义:

TSM_RESULTTspi_ChangeAuth

(

TSM_HOBJECThObjectToChange,//in

TSM_HOBJECThParentObject,//in

TSM_HPOLICYhNewPolicy//in

);

输入参数描述:

——hObjectToChange需要修改授权数据的对象句柄。

——hParentObject需要修改授权对象的父对象句柄。

——hNewPolicy更新的授权信息策略对象句柄。

输出参数描述:

——无。

返回参数:

TSM_SUCCESS

TSM_E_INVALID_HANDLE

TSM_E_INTERNAL_ERROR

6.3.1.6Tspi_GetPolicyObject

功能描述:

返回当前工作对象的策略。

如果应用程序没有创建策略对象,且在调用前没有为该工作对象指派策略,本函数将返回默认的策

略。为默认策略设置新的授权数据信息,将影响与其相关的所有对象的后续操作。

10

GM/T0058-2018

接口定义:

TSM_RESULTTspi_GetPolicyObject

(

TSM_HOBJECThObject,//in

TSM_FLAGpolicyType,//in

TSM_HPOLICY*phPolicy//out

);

输入参数描述:

——hObject对象句柄。

——policyTypet定义的策略类型。

输出参数描述:

——phPolicy返回指派的策略对象。

返回参数:

TSM_SUCCESS

TSM_E_INVALID_HANDLE

TSM_E_BAD_PARAMETER

TSM_E_INTERNAL_ERROR

6.3.2上下文管理

6.3.2.1Tspi_Context_Create

功能描述:

创建一个上下文对象,返回该对象句柄。

接口定义:

TSM_RESULTTspi_Context_Create

(

TSM_HCONTEXT*phContext//out

);

输入参数描述:

——无。

输出参数描述:

——phContext创建的上下文对象句柄。

返回参数:

TSM_SUCCESS

TSM_E_INTERNAL_ERROR

6.3.2.2Tspi_Context_Close

功能描述:

销毁一个上下文对象,并释放所分配的所有资源。

接口定义:

TSM_RESULTTspi_Context_Close

(

TSM_HCONTEXThContext//in

);

11

GM/T0058-2018

输入参数描述:

——hContext要关闭的上下文对象的句柄。

输出参数描述:

——无。

返回参数:

TSM_SUCCESS

TSM_E_INVALID_HANDLE

TSM_E_INTERNAL_ERROR

6.3.2.3Tspi_SetAttribUint32(整型参数)

功能描述:

本函数设置上下文对象的32-bit属性。如果请求的数据长度小于UINT32,必须将数据转换成32-bit

长度的数据。

接口定义:

TSM_RESULTTspi_SetAttribUint32

(

TSM_HOBJECThObject,//in

TSM_FLAGattribFlag,//in

TSM_FLAGsubFlag,//in

UINT32ulAttrib//in

);

输入参数描述:

——hObject需要设置属性的对象句柄。

——attribFlag需要设置的属性标记。

——subFlag需要设置的子属性标记。

——ulAttrib属性设置的值。

输入参数中属性见表1。

表1属性说明

属性子属性属性值描述

TSM_TSPATTRIB_CONTEXT_STSM_TSPATTRIB_CONTEXT_NOT_SILENT显示协议接口的对

ILENT_MODE话窗口

TSM_TSPATTRIB_CONTEXT_SILENT不显示协议接口对

话窗口(默认)

TSM_TSPATTRI_SECRET_HASTSM_TSPATTRIB_SECRTSM_TSPATTRIB_HASH_MODE_NOT_NULL对于不包括其他数

H_MODEET_HASH_MODE_POPUP据授权密码进行杂

凑计算

TSM_TSPATTRIB_HASH_MODE_NULL对于包括其他数据

授权密码进行杂凑

计算

12

GM/T0058-2018

输出参数描述:

——无。

返回参数:

TSM_SUCCESS

TSM_E_INVALID_HANDLE

TSM_E_INVALID_ATTRIB_FLAG

TSM_E_INVALID_ATTRIB_SUBFLAG

TSM_E_INVALID_ATTRIB_DATA

TSM_E_BAD_PARAMETER

TSM_E_INTERNAL_ERROR

6.3.2.4Tspi_GetAttribUint32(整型参数)

功能描述:

本函数获取上下文对象的32-bit属性。

接口定义:

TSM_RESULTTspi_GetAttribUint32

(

TSM_HOBJECThObject,//in

TSM_FLAGattribFlag,//in

TSM_FLAGsubFlag,//in

UINT32*pulAttrib//out

);

输入参数描述:

——hObject需要查询属性的对象句柄。

——attribFlag需要查询的属性标记。

——subFlag需要查询的子属性标记。

输入参数中属性变量见表2。

表2属性说明

属性子属性属性值描述

TSM_TSPATTRIB_CONTEXT_N显示协议接口的对话窗口

TSM_TSPATTRIB_CONTEXOT_SILENT

T_SILENT_MODETSM_TSPATTRIB_CONTEXT_S不显示协议接口对话窗口

ILENT(默认)

TSM_TSPATTRIB_TSM_TSPATTRIB_HASH_MODE对于不包括其他数据授权

TSM_TSPATTRI_SECRET_SECRET_HASH_MO_NOT_NULL密码进行杂凑计算

HASH_MODEDE_POPUPTSM_TSPATTRIB_HASH_MODE对于包括其他数据授权密

_NULL码进行杂凑计算

输出参数描述:

——pulAttrib指向查询到的属性值。

返回参数:

TSM_SUCCESS

TSM_E_INVALID_HANDLE

13

GM/T0058-2018

TSM_E_INVALID_ATTRIB_FLAG

TSM_E_INVALID_ATTRIB_SUBFLAG

TSM_E_INVALID_ATTRIB_DATA

TSM_E_BAD_PARAMETER

TSM_E_INTERNAL_ERROR

6.3.2.5Tspi_SetAttribData(变长参数)

功能描述:

本函数设置上下文对象的非32-bit属性。属性数据的结构和大小依属性而定。

接口定义:

TSM_RESULTTspi_SetAttribData

(

TSM_HOBJECThObject,//in

TSM_FLAGattribFlag,//in

TSM_FLAGsubFlag,//in

UINT32ulAttribDataSize,//in

BYTE*rgbAttribData//in

);

输入参数描述:

——hObject需要设置属性的对象句柄。

——attribFlag需要设置的属性标记。

——subFlag需要设置的子属性标记。

——ulAttribDataSizeprgbAttribData参数的大小(以字节为单位)

——rgbAttribData此参数指向一个存放设置属性值的缓冲区。

输出参数描述:

——无。

返回参数:

TSM_SUCCESS

TSM_E_INVALID_HANDLE

TSM_E_INVALID_ATTRIB_FLAG

TSM_E_INVALID_ATTRIB_SUBFLAG

TSM_E_INVALID_ATTRIB_DATA

TSM_E_BAD_PARAMETER

TSM_E_INTERNAL_ERROR

6.3.2.6Tspi_GetAttribData(变长参数)

功能描述:

本函数获取上下文对象的非32-bit属性。属性数据的结构和大小依属性而定。为属性数据所分配

的内存块必须用Tspi_Context_FreeMemory来释放。

接口定义:

TSM_RESULTTspi_GetAttribData

(

TSM_HOBJECThObject,//in

14

GM/T0058-2018

TSM_FLAGattribFlag,//in

TSM_FLAGsubFlag,//in

UINT32*pulAttribDataSize,//out

BYTE**prgbAttribData//out

);

输入参数描述:

——hObject需要获取属性的对象句柄。

——attribFlag需要获取的属性标记。

——subFlag需要获取的子属性标记。

输出参数描述:

——pulAttribDataSize取得的rgbAttribData参数的大小(以字节为单位)。若参数

rgbAttribData为一个TSM_UNICODE字符串,则该大小还包括结束符NULL。

——prgbAttribData此参数指向一个存放获取的属性值的缓冲区。

输入参数的属性见表3。

表3属性说明

属性子属性属性值

TSM_TSPATTRIB_CONTEXT_MACHINE_NAME0提供TSM运行的机器名,是一个以

NULL结束的TSM_UNICODE字符串。

返回参数:

TSM_SUCCESS

TSM_E_INVALID_HANDLE

TSM_E_INVALID_ATTRIB_FLAG

TSM_E_INVALID_ATTRIB_SUBFLAG

TSM_E_INVALID_ATTRIB_DATA

TSM_E_BAD_PARAMETER

TSM_E_INTERNAL_ERROR

6.3.2.7Tspi_Context_Connect

功能描述:

建立TSP与TCS的连接,TCS可以为本地的或远程的。

接口定义:

TSM_RESULTTspi_Context_Connect

(

TSM_HCONTEXThContext,//in

TSM_UNICODE*wszDestination//in

);

输入参数描述:

——hContext上