# IHuks ## 概述 定义了HUKS的驱动接口,用于进行密钥管理。 **起始版本:** 4.0 **相关模块:**[HdfHuks](_hdf_huks.md) ## 汇总 ### Public 成员函数 | 名称 | 描述 | | -------- | -------- | | [ModuleInit](#moduleinit) () | HUKS驱动初始化。 | | [GenerateKey](#generatekey) ([in] struct [HuksBlob](_huks_blob.md) keyAlias,[in] struct [HuksParamSet](_huks_param_set.md) paramSet,[in] struct [HuksBlob](_huks_blob.md) keyIn, [out] struct [HuksBlob](_huks_blob.md) encKeyOut) | 根据待生成密钥的属性生成对应的密钥材料,并返回加密后的密钥材料密文。 | | [ImportKey](#importkey) ([in] struct [HuksBlob](_huks_blob.md) keyAlias, [in] struct [HuksBlob](_huks_blob.md) key, [in] struct [HuksParamSet](_huks_param_set.md) paramSet, [out] struct [HuksBlob](_huks_blob.md) encKeyOut) | 导入明文密钥。 | | [ImportWrappedKey](#importwrappedkey) ([in] struct [HuksBlob](_huks_blob.md) wrappingKeyAlias, [in] struct [HuksBlob](_huks_blob.md) wrappingEncKey, [in] struct [HuksBlob](_huks_blob.md) wrappedKeyData, [in] struct [HuksParamSet](_huks_param_set.md) paramSet, [out] struct [HuksBlob](_huks_blob.md) encKeyOut) | 导入加密密钥。 | | [ExportPublicKey](#exportpublickey) ([in] struct [HuksBlob](_huks_blob.md) encKey, [in] struct [HuksParamSet](_huks_param_set.md) paramSet, [out] struct [HuksBlob](_huks_blob.md) keyOut) | 导出密钥对的公钥。 | | [Init](#init) ([in] struct [HuksBlob](_huks_blob.md) encKey, [in] struct [HuksParamSet](_huks_param_set.md) paramSet, [out]struct [HuksBlob](_huks_blob.md) handle, [out] struct [HuksBlob](_huks_blob.md) token) | 初始化密钥会话,解密密钥材料到内存中,并返回一个句柄和令牌。 | | [Update](#update) ([in] struct [HuksBlob](_huks_blob.md) handle, [in] struct [HuksParamSet](_huks_param_set.md) paramSet, [in] struct [HuksBlob](_huks_blob.md) inData, [out] struct [HuksBlob](_huks_blob.md) outData) | 分段操作数据或分段传参,根据密码算法的本身的要求需要对数据进行分段操作或传参(密钥协商场景)。 | | [Finish](#finish) ([in] struct [HuksBlob](_huks_blob.md) handle, [in] struct [HuksParamSet](_huks_param_set.md) paramSet, [in] struct [HuksBlob](_huks_blob.md) inData, [out] struct [HuksBlob](_huks_blob.md) outData) | 结束密钥会话和操作数据。 | | [Abort](#abort) ([in] struct [HuksBlob](_huks_blob.md) handle, [in] struct [HuksParamSet](_huks_param_set.md) paramSet) | 中止密钥会话,并释放会话内部的数据,中止后不能操作会话。 | | [CheckKeyValidity](#checkkeyvalidity) ([in] struct [HuksParamSet](_huks_param_set.md) paramSet, [in] struct [HuksBlob](_huks_blob.md) encKey) | 校验密钥材料的有效性(密钥和属性的完整性)。 | | [AttestKey](#attestkey) ([in] struct [HuksBlob](_huks_blob.md) encKey, [in] struct [HuksParamSet](_huks_param_set.md) paramSet, [out] struct [HuksBlob](_huks_blob.md) certChain) | 获取密钥证书链。 | | [GenerateRandom](#generaterandom) ([in] struct [HuksParamSet](_huks_param_set.md) paramSet, [out]struct [HuksBlob](_huks_blob.md) random) | 生成随机数。 | | [Sign](#sign) ([in] struct [HuksBlob](_huks_blob.md) encKey, [in] struct [HuksParamSet](_huks_param_set.md) paramSet, [in] struct [HuksBlob](_huks_blob.md) srcData, [out]struct [HuksBlob](_huks_blob.md) signature) | 使用密钥对数据进行签名。 | | [Verify](#verify) ([in] struct [HuksBlob](_huks_blob.md) encKey, [in] struct [HuksParamSet](_huks_param_set.md) paramSet, [in] struct [HuksBlob](_huks_blob.md) srcData, [in] struct [HuksBlob](_huks_blob.md) signature) | 校验数据的签名。 | | [Encrypt](#encrypt) ([in] struct [HuksBlob](_huks_blob.md) encKey, [in] struct [HuksParamSet](_huks_param_set.md) paramSet, [in] struct [HuksBlob](_huks_blob.md) plainText, [out] struct [HuksBlob](_huks_blob.md) cipherText) | 使用密钥对数据进行加密。 | | [Decrypt](#decrypt) ([in] struct [HuksBlob](_huks_blob.md) encKey, [in] struct [HuksParamSet](_huks_param_set.md) paramSet, [in] struct [HuksBlob](_huks_blob.md) cipherText, [out] struct [HuksBlob](_huks_blob.md) plainText) | 使用密钥对数据的密文进行解密。 | | [AgreeKey](#agreekey) ([in] struct [HuksParamSet](_huks_param_set.md) paramSet, [in] struct [HuksBlob](_huks_blob.md) encPrivateKey, [in] struct [HuksBlob](_huks_blob.md) peerPublicKey, [out] struct [HuksBlob](_huks_blob.md) agreedKey) | 使用HUKS存储的私钥和业务的公钥进行密钥协商。 | | [DeriveKey](#derivekey) ([in] struct [HuksParamSet](_huks_param_set.md) paramSet, [in] struct [HuksBlob](_huks_blob.md) encKdfKey, [out] struct [HuksBlob](_huks_blob.md) derivedKey) | 使用HUKS存储的密钥进行派生。 | | [Mac](#mac) ([in] struct [HuksBlob](_huks_blob.md) encKey, [in] struct [HuksParamSet](_huks_param_set.md) paramSet, [in] struct [HuksBlob](_huks_blob.md) srcData, [out] struct [HuksBlob](_huks_blob.md) mac) | 使用HUKS存储的密钥做数据的消息认证码。 | | [UpgradeKey](#upgradekey) ([in] struct [HuksBlob](_huks_blob.md) encOldKey, [in] struct [HuksParamSet](_huks_param_set.md) paramSet, [out] struct [HuksBlob](_huks_blob.md) encNewKey) | 升级密钥,包括升级加密方式和加密材料。当密钥文件版本号小于最新版本号时,HUKS Service触发该升级能力。 | | [ExportChipsetPlatformPublicKey](#exportchipsetplatformpublickey) ([in] struct [HuksBlob](_huks_blob.md) salt, [in] enum [HuksChipsetPlatformDecryptScene](_hdf_huks.md#hukschipsetplatformdecryptscene) scene, [out] struct [HuksBlob](_huks_blob.md) publicKey) | 导出芯片平台级密钥对的公钥。 | ## 成员函数说明 ### Abort() ``` IHuks::Abort ([in] struct HuksBlob handle, [in] struct HuksParamSet paramSet ) ``` **描述** 中止密钥会话,并释放会话内部的数据,中止后不能操作会话。 **起始版本:** 4.0 **参数:** | 名称 | 描述 | | -------- | -------- | | handle | 密钥会话句柄[HuksBlob](_huks_blob.md) | | paramSet | 操作密钥的参数集[HuksParamSet](_huks_param_set.md),属性集结构参见《HUKS设备开发指南》。 | **参见:** [Init](#init) | [Update](#update) | [Finish](#finish) **返回:** 0 表示操作成功 非0表示操作失败 ### AgreeKey() ``` IHuks::AgreeKey ([in] struct HuksParamSet paramSet, [in] struct HuksBlob encPrivateKey, [in] struct HuksBlob peerPublicKey, [out] struct HuksBlob agreedKey ) ``` **描述** 使用HUKS存储的私钥和业务的公钥进行密钥协商。 **起始版本:** 4.0 **参数:** | 名称 | 描述 | | -------- | -------- | | paramSet | 用于协商的参数[HuksParamSet](_huks_param_set.md) | | encPrivateKey | HUKS存储的密钥对材料密文[HuksBlob](_huks_blob.md),密钥材料结构参见《HUKS设备开发指南》。 | | peerPublicKey | 待协商的公钥[HuksBlob](_huks_blob.md)。 | | agreedKey | 协商出的密钥明文[HuksBlob](_huks_blob.md)。 | **返回:** 0 表示成功 非0表示失败 ### AttestKey() ``` IHuks::AttestKey ([in] struct HuksBlob encKey, [in] struct HuksParamSet paramSet, [out] struct HuksBlob certChain ) ``` **描述** 获取密钥证书链。 **起始版本:** 4.0 **参数:** | 名称 | 描述 | | -------- | -------- | | encKey | 密钥材料密文[HuksBlob](_huks_blob.md),密钥材料结构参见《HUKS设备开发指南》。 | | paramSet | 用于获取密钥证书链的参数[HuksParamSet](_huks_param_set.md),属性集结构参见《HUKS设备开发指南》。 | | certChain | 密钥证书链[HuksBlob](_huks_blob.md),证书链结构参见《HUKS设备开发指南》。 | **返回:** 0 表示操作成功 非0表示操作失败 ### CheckKeyValidity() ``` IHuks::CheckKeyValidity ([in] struct HuksParamSet paramSet, [in] struct HuksBlob encKey ) ``` **描述** 校验密钥材料的有效性(密钥和属性的完整性)。 **起始版本:** 4.0 **参数:** | 名称 | 描述 | | -------- | -------- | | paramSet | 校验密钥有效性的参数集[HuksParamSet](_huks_param_set.md),属性集结构参见《HUKS设备开发指南》。 | | encKey | 密钥材料密文[HuksBlob](_huks_blob.md),密钥材料结构参见《HUKS设备开发指南》。 | **返回:** 0 表示密钥材料有效 非0表示密钥材料无效 ### Decrypt() ``` IHuks::Decrypt ([in] struct HuksBlob encKey, [in] struct HuksParamSet paramSet, [in] struct HuksBlob cipherText, [out] struct HuksBlob plainText ) ``` **描述** 使用密钥对数据的密文进行解密。 **起始版本:** 4.0 **参数:** | 名称 | 描述 | | -------- | -------- | | encKey | 密钥材料密文[HuksBlob](_huks_blob.md),密钥材料结构参见《HUKS设备开发指南》。 | | paramSet | 用于加密的参数[HuksParamSet](_huks_param_set.md),属性集结构参见《HUKS设备开发指南》。 | | cipherText | 数据的密文[HuksBlob](_huks_blob.md)。 | | plainText | 数据的明文[HuksBlob](_huks_blob.md)。 | **返回:** 0 表示成功 非0表示失败 ### DeriveKey() ``` IHuks::DeriveKey ([in] struct HuksParamSet paramSet, [in] struct HuksBlob encKdfKey, [out] struct HuksBlob derivedKey ) ``` **描述** 使用HUKS存储的密钥进行派生。 **起始版本:** 4.0 **参数:** | 名称 | 描述 | | -------- | -------- | | paramSet | 用于派生的参数[HuksParamSet](_huks_param_set.md),属性集结构参见《HUKS设备开发指南》。 | | encKdfKey | HUKS存储的密钥材料密文[HuksBlob](_huks_blob.md),密钥材料结构参见《HUKS设备开发指南》。 | | derivedKey | 派生出的密钥明文[HuksBlob](_huks_blob.md)。 | **返回:** 0 表示成功 非0表示失败 ### Encrypt() ``` IHuks::Encrypt ([in] struct HuksBlob encKey, [in] struct HuksParamSet paramSet, [in] struct HuksBlob plainText, [out] struct HuksBlob cipherText ) ``` **描述** 使用密钥对数据进行加密。 **起始版本:** 4.0 **参数:** | 名称 | 描述 | | -------- | -------- | | encKey | 密钥材料密文[HuksBlob](_huks_blob.md),密钥材料结构参见《HUKS设备开发指南》。 | | paramSet | 用于加密的参数[HuksParamSet](_huks_param_set.md),属性集结构参见《HUKS设备开发指南》。 | | plainText | 待加密的数据[HuksBlob](_huks_blob.md)。 | | cipherText | 数据的密文[HuksBlob](_huks_blob.md)。 | **返回:** 0 表示成功 非0表示失败 ### ExportChipsetPlatformPublicKey() ``` IHuks::ExportChipsetPlatformPublicKey ([in] struct HuksBlob salt, [in] enum HuksChipsetPlatformDecryptScene scene, [out] struct HuksBlob publicKey ) ``` **描述** 导出芯片平台级密钥对的公钥。 **起始版本:** 4.0 **参数:** | 名称 | 描述 | | -------- | -------- | | salt | 用来派生芯片平台密钥对时的派生因子[HuksBlob](_huks_blob.md)。 | | scene | 业务预期进行芯片平台解密的场景[HuksParamSet](_huks_param_set.md),属性集结构参见《HUKS设备开发指南》。 | | publicKey | 公钥材料,如出参为ECC-P256的x、y轴值裸数据,各32字节[HuksBlob](_huks_blob.md)。 | **返回:** 0 表示成功 非0表示失败 ### ExportPublicKey() ``` IHuks::ExportPublicKey ([in] struct HuksBlob encKey, [in] struct HuksParamSet paramSet, [out] struct HuksBlob keyOut ) ``` **描述** 导出密钥对的公钥。 **起始版本:** 4.0 **参数:** | 名称 | 描述 | | -------- | -------- | | encKey | 加密的密钥对材料[HuksBlob](_huks_blob.md),密钥材料结构参见《HUKS设备开发指南》。 | | paramSet | 导出密钥密钥属性集[HuksParamSet](_huks_param_set.md),属性集结构参见《HUKS设备开发指南》。 | | keyOut | 公钥材料[HuksBlob](_huks_blob.md),密钥材料结构参见《HUKS设备开发指南》。 | **返回:** 0 表示导出密钥成功 非0表示导出密钥失败 ### Finish() ``` IHuks::Finish ([in] struct HuksBlob handle, [in] struct HuksParamSet paramSet, [in] struct HuksBlob inData, [out] struct HuksBlob outData ) ``` **描述** 结束密钥会话和操作数据。 **起始版本:** 4.0 **参数:** | 名称 | 描述 | | -------- | -------- | | handle | 密钥会话句柄[HuksBlob](_huks_blob.md) | | paramSet | 操作密钥的参数集[HuksParamSet](_huks_param_set.md),属性集结构参见《HUKS设备开发指南》。 | | inData | 分段数据或者参数[HuksBlob](_huks_blob.md)。 | | outData | 操作完成的数据[HuksBlob](_huks_blob.md)。 | **参见:** [Init](#init) | [Update](#update) | [Abort](#abort) **返回:** 0 表示操作成功 非0表示操作失败 ### GenerateKey() ``` IHuks::GenerateKey ([in] struct HuksBlob keyAlias, [in] struct HuksParamSet paramSet, [in] struct HuksBlob keyIn, [out] struct HuksBlob encKeyOut ) ``` **描述** 根据待生成密钥的属性生成对应的密钥材料,并返回加密后的密钥材料密文。 **起始版本:** 4.0 **参数:** | 名称 | 描述 | | -------- | -------- | | keyAlias | 待生成密钥的别名[HuksBlob](_huks_blob.md)。 | | paramSet | 待生成密钥的密钥属性参数[HuksParamSet](_huks_param_set.md),属性集结构参见《HUKS设备开发指南》。 | | keyIn | 待生成密钥的密钥材料[HuksBlob](_huks_blob.md),可选。 | | encKeyOut | 生成密钥的密文材料[HuksBlob](_huks_blob.md),密钥材料结构参见《HUKS设备开发指南》。 | **返回:** 0 表示生成密钥成功 非0表示生成密钥失败 ### GenerateRandom() ``` IHuks::GenerateRandom ([in] struct HuksParamSet paramSet, [out] struct HuksBlob random ) ``` **描述** 生成随机数。 **起始版本:** 4.0 **参数:** | 名称 | 描述 | | -------- | -------- | | paramSet | 用于生成随机数的参数[HuksParamSet](_huks_param_set.md),属性集结构参见《HUKS设备开发指南》。 | | random | 生成的随机数[HuksBlob](_huks_blob.md)。 | **返回:** 0 表示生成成功 非0表示生成失败 ### ImportKey() ``` IHuks::ImportKey ([in] struct HuksBlob keyAlias, [in] struct HuksBlob key, [in] struct HuksParamSet paramSet, [out] struct HuksBlob encKeyOut ) ``` **描述** 导入明文密钥。 **起始版本:** 4.0 **参数:** | 名称 | 描述 | | -------- | -------- | | keyAlias | 待导入密钥的别名[HuksBlob](_huks_blob.md)。 | | key | 待导入密钥的明文密钥材料[HuksBlob](_huks_blob.md),密钥材料结构参见《HUKS设备开发指南》。 | | paramSet | 待导入密钥的密钥属性集[HuksParamSet](_huks_param_set.md),属性集结构参见《HUKS设备开发指南》。 | | encKeyOut | 导入密钥的密文材料[HuksBlob](_huks_blob.md),密钥材料结构参见《HUKS设备开发指南》。 | **返回:** 0 表示导入密钥成功 非0表示导入密钥失败 ### ImportWrappedKey() ``` IHuks::ImportWrappedKey ([in] struct HuksBlob wrappingKeyAlias, [in] struct HuksBlob wrappingEncKey, [in] struct HuksBlob wrappedKeyData, [in] struct HuksParamSet paramSet, [out] struct HuksBlob encKeyOut ) ``` **描述** 导入加密密钥。 **起始版本:** 4.0 **参数:** | 名称 | 描述 | | -------- | -------- | | wrappingKeyAlias | 用于做加密导入的中间密钥别名[HuksBlob](_huks_blob.md)。 | | wrappingEncKey | 用于做加密导入的中间密钥密文[HuksBlob](_huks_blob.md),密钥材料结构参见《HUKS设备开发指南》。 | | wrappedKeyData | 待导入密钥的密文密钥材料[HuksBlob](_huks_blob.md),密钥材料结构参见《HUKS设备开发指南》。 | | paramSet | 待导入密钥的密钥属性集[HuksParamSet](_huks_param_set.md),属性集结构参见《HUKS设备开发指南》。 | | encKeyOut | 导入密钥的密文材料[HuksBlob](_huks_blob.md),密钥材料结构参见《HUKS设备开发指南》。 | **返回:** 0 表示导入密钥成功 非0表示导入密钥失败 ### Init() ``` IHuks::Init ([in] struct HuksBlob encKey, [in] struct HuksParamSet paramSet, [out] struct HuksBlob handle, [out] struct HuksBlob token ) ``` **描述** 初始化密钥会话,解密密钥材料到内存中,并返回一个句柄和令牌。 **起始版本:** 4.0 **参数:** | 名称 | 描述 | | -------- | -------- | | encKey | 加密的密钥材料[HuksBlob](_huks_blob.md),密钥材料结构参见《HUKS设备开发指南》。 | | paramSet | 操作密钥的参数集[HuksParamSet](_huks_param_set.md),用于指定该次密钥操作的参数。 | | handle | 密钥会话句柄[HuksBlob](_huks_blob.md),用于后续操作密钥会话。 | | token | 密钥会话令牌[HuksBlob](_huks_blob.md),用于密钥访问控制使用。 | **参见:** [Init](#init) | Update| [Finish](#finish) **返回:** 0 表示初始化会话成功 非0表示初始化失败 ### Mac() ``` IHuks::Mac ([in] struct HuksBlob encKey, [in] struct HuksParamSet paramSet, [in] struct HuksBlob srcData, [out] struct HuksBlob mac ) ``` **描述** 使用HUKS存储的密钥做数据的消息认证码。 **起始版本:** 4.0 **参数:** | 名称 | 描述 | | -------- | -------- | | encKey | 密钥材料密文[HuksBlob](_huks_blob.md),密钥材料结构参见《HUKS设备开发指南》。 | | paramSet | 用于做MAC的参数[HuksParamSet](_huks_param_set.md),属性集结构参见《HUKS设备开发指南》。 | | srcData | 用于做MAC的数据[HuksBlob](_huks_blob.md)。 | | mac | 消息认证码[HuksBlob](_huks_blob.md)。 | **返回:** 0 表示成功 非0表示失败 ### ModuleInit() ``` IHuks::ModuleInit () ``` **描述** HUKS驱动初始化。 **起始版本:** 4.0 **返回:** 0 表示初始化成功 非0表示初始化失败 ### Sign() ``` IHuks::Sign ([in] struct HuksBlob encKey, [in] struct HuksParamSet paramSet, [in] struct HuksBlob srcData, [out] struct HuksBlob signature ) ``` **描述** 使用密钥对数据进行签名。 **起始版本:** 4.0 **参数:** | 名称 | 描述 | | -------- | -------- | | encKey | 密钥材料密文[HuksBlob](_huks_blob.md),密钥材料结构参见《HUKS设备开发指南》。 | | paramSet | 用于签名的参数[HuksParamSet](_huks_param_set.md),属性集结构参见《HUKS设备开发指南》。 | | srcData | 待签名的数据[HuksBlob](_huks_blob.md)。 | | signature | 数据的签名[HuksBlob](_huks_blob.md)。 | **返回:** 0 表示成功 非0表示失败 ### Update() ``` IHuks::Update ([in] struct HuksBlob handle, [in] struct HuksParamSet paramSet, [in] struct HuksBlob inData, [out] struct HuksBlob outData ) ``` **描述** 分段操作数据或分段传参,根据密码算法的本身的要求需要对数据进行分段操作或传参(密钥协商场景)。 **起始版本:** 4.0 **参数:** | 名称 | 描述 | | -------- | -------- | | handle | 密钥会话句柄[HuksBlob](_huks_blob.md),通过初始化密钥会话接口获取。 | | paramSet | 操作密钥的参数集[HuksParamSet](_huks_param_set.md),属性集结构参见《HUKS设备开发指南》。 | | inData | 分段数据或者参数[HuksBlob](_huks_blob.md)。 | | outData | 操作完成的数据[HuksBlob](_huks_blob.md)。 | **参见:** [Init](#init) | [Finish](#finish) | [Abort](#abort) **返回:** 0 表示操作成功 非0表示操作失败 ### UpgradeKey() ``` IHuks::UpgradeKey ([in] struct HuksBlob encOldKey, [in] struct HuksParamSet paramSet, [out] struct HuksBlob encNewKey ) ``` **描述** 升级密钥,包括升级加密方式和加密材料。当密钥文件版本号小于最新版本号时,HUKS Service触发该升级能力。 **起始版本:** 4.0 **参数:** | 名称 | 描述 | | -------- | -------- | | encOldKey | 待升级密钥材料密文[HuksBlob](_huks_blob.md),密钥材料结构参见《HUKS设备开发指南》。 | | paramSet | 升级密钥的参数[HuksParamSet](_huks_param_set.md),属性集结构参见《HUKS设备开发指南》。 | | encNewKey | 升级后的密钥材料密文[HuksBlob](_huks_blob.md),密钥材料结构参见《HUKS设备开发指南》。 | **返回:** 0 表示成功 非0表示失败 ### Verify() ``` IHuks::Verify ([in] struct HuksBlob encKey, [in] struct HuksParamSet paramSet, [in] struct HuksBlob srcData, [in] struct HuksBlob signature ) ``` **描述** 校验数据的签名。 **起始版本:** 4.0 **参数:** | 名称 | 描述 | | -------- | -------- | | encKey | 密钥材料密文[HuksBlob](_huks_blob.md),密钥材料结构参见《HUKS设备开发指南》。 | | paramSet | 用于校验签名的参数[HuksParamSet](_huks_param_set.md),属性集结构参见《HUKS设备开发指南》。 | | srcData | 待验签的数据[HuksBlob](_huks_blob.md)。 | | signature | 待校验数据的签名[HuksBlob](_huks_blob.md)。 | **返回:** 0 表示成功 非0表示失败