目录

加解密

Overview

iTrustee提供丰富的加解密接口,用于TA业务中数据的加解密及秘钥处理等操作。加解密接口的使用限制请参见接口使用限制与约束。

Method Summary

Qualifier and Type

Method Name and Description

TEE_Result

TEE_AllocateOperation(TEE_OperationHandle *operation, uint32_t algorithm, uint32_t mode, uint32_t maxKeySize)

分配加解密资源,为需要运行的算法分配资源,初始化部分变量。

void

TEE_FreeOperation(TEE_OperationHandle operation)

释放加解密相关的资源。

void

TEE_GetOperationInfo(const TEE_OperationHandle operation, TEE_OperationInfo *operationInfo)

获取模块句柄的加解密信息,保存到operationInfo中。

void

TEE_ResetOperation(TEE_OperationHandle operation)

重置加解密模块句柄。

TEE_Result

TEE_SetOperationKey(TEE_OperationHandle operation, const TEE_ObjectHandle key)

设置加解密模块密钥。

TEE_Result

TEE_SetOperationKey2(TEE_OperationHandle operation, const TEE_ObjectHandle key1, const TEE_ObjectHandle key2)

设置加解密模块密钥1和密钥2。

void

TEE_CopyOperation(TEE_OperationHandle dstOperation, const TEE_OperationHandle srcOperation)

拷贝加解密模块句柄到另一个句柄。

void

TEE_CipherInit(TEE_OperationHandle operation, const void *IV, size_t IVLen)

加解密初始化,包括AES和DES初始化,不推荐DES。

TEE_Result

TEE_CipherUpdate(TEE_OperationHandle operation, const void *srcData, size_t srcLen, void *destData, size_t *destLen)

加解密运算,包括AES和DES运算。

TEE_Result

TEE_CipherDoFinal(TEE_OperationHandle operation, const void *srcData, size_t srcLen, void *destData, size_t *destLen)

结束加解密运算。

void

TEE_DigestUpdate(TEE_OperationHandle operation, const void *chunk, size_t chunkSize)

摘要运算,支持SHA1,SHA224,SHA256,SHA384,SHA512,推荐SHA256。

TEE_Result

TEE_DigestDoFinal(TEE_OperationHandle operation, const void *chunk, size_t chunkLen, void *hash, size_t *hashLen)

摘要运算结束,支持SHA1,SHA224,SHA256,SHA384,SHA512,推荐SHA256。

void

TEE_MACInit(TEE_OperationHandle operation, void *IV, size_t IVLen)

MAC初始化。

void

TEE_MACUpdate(TEE_OperationHandle operation, const void *chunk, size_t chunkSize)

MAC运算。

TEE_Result

TEE_MACComputeFinal(TEE_OperationHandle operation, const void *message, size_t messageLen, void *mac, size_t *macLen)

MAC运算结束,并将计算出的mac写入到出参。

TEE_Result

TEE_MACCompareFinal(TEE_OperationHandle operation, const void *message, size_t messageLen, const void *mac, const size_t macLen)

MAC运算结束,并将结果和输入数据比较。

void

TEE_DeriveKey(TEE_OperationHandle operation, const TEE_Attribute *params, uint32_t paramCount, TEE_ObjectHandle derivedKey)

根据传入公私钥派生共享密钥。

void

TEE_GenerateRandom(void *randomBuffer, size_t randomBufferLen)

生成随机数。

TEE_Result

TEE_AEInit(TEE_OperationHandle operation, void *nonce, size_t nonceLen, uint32_t tagLen, size_t AADLen, size_t payloadLen)

认证加解密初始化。

void

TEE_AEUpdateAAD(TEE_OperationHandle operation, const void *AADdata, size_t AADdataLen)

认证加解密AAD运算。

TEE_Result

TEE_AEUpdate(TEE_OperationHandle operation, void *srcData, size_t srcLen, void *destData, size_t *destLen)

认证加解密运算

TEE_Result

TEE_AEEncryptFinal(TEE_OperationHandle operation, void *srcData, size_t srcLen, void *destData, size_t *destLen, void *tag, size_t *tagLen)

认证加密运算结束,并计算tag

TEE_Result

TEE_AEDecryptFinal(TEE_OperationHandle operation, void *srcData, size_t srcLen, void *destData, size_t *destLen, void *tag, size_t tagLen)

认证解密运算结束,并计算tag和输入tag进行比较

TEE_Result

TEE_AsymmetricEncrypt(TEE_OperationHandle operation, const TEE_Attribute *params, uint32_t paramCount, const void *srcData, size_t srcLen, void *destData, size_t *destLen)

非对称数据加密,只执行一次

TEE_Result

TEE_AsymmetricDecrypt(TEE_OperationHandle operation, const TEE_Attribute *params, uint32_t paramCount, const void *srcData, size_t srcLen, void *destData, size_t *destLen)

非对称数据解密,只执行一次

TEE_Result

TEE_AsymmetricSignDigest(TEE_OperationHandle operation, const TEE_Attribute *params, uint32_t paramCount, const void *digest, size_t digestLen, void *signature, size_t *signatureLen)

非对称数据签名摘要

TEE_Result

TEE_AsymmetricVerifyDigest(TEE_OperationHandle operation, const TEE_Attribute *params, uint32_t paramCount, const void *digest, size_t digestLen, void *signature, size_t signatureLen)

非对称数据签名摘要

TEE_Result

TEE_GetOperationInfoMultiple(TEE_OperationHandle operation, TEE_OperationInfoMultiple *operationInfoMultiple, const size_t *operationSize)

获取模块句柄的加解密信息,保存到operationInfoMultiple中

TEE_Result

TEE_IsAlgorithmSupported(uint32_t algId, uint32_t element)

查询TEE是否支持指定的加密算法和算法因子

Methods

[h2]TEE_AllocateOperation

Method

TEE_Result TEE_AllocateOperation(TEE_OperationHandle *operation, uint32_t algorithm, uint32_t mode, uint32_t maxKeySize)

分配加解密资源,为需要运行的算法分配资源,初始化部分变量。

Parameters

Name

Description

operation

加解密模块句柄。

algorithm

加解密算法。

mode

加解密模式。

maxKeySize

最大密钥长度。

Return

Type

Description

TEE_Result

参见错误码定义。

[h2]TEE_FreeOperation

Method

void TEE_FreeOperation(TEE_OperationHandle operation)

释放加解密相关的资源。

Parameters

Name

Description

operation

加解密模块句柄。

Return

Type

Description

void

-

[h2]TEE_GetOperationInfo

Method

void TEE_GetOperationInfo(const TEE_OperationHandle operation, TEE_OperationInfo *operationInfo)

获取模块句柄的加解密信息,保存到operationInfo中。

Parameters

Name

Description

operation

加解密模块句柄。

operationInfo

加解密信息。

Return

Type

Description

void

-

[h2]TEE_ResetOperation

Method

void TEE_ResetOperation(TEE_OperationHandle operation)

重置加解密模块句柄。

Parameters

Name

Description

operation

加解密模块句柄。

Return

Type

Description

void

-

[h2]TEE_SetOperationKey

Method

TEE_Result TEE_SetOperationKey(TEE_OperationHandle operation, const TEE_ObjectHandle key)

设置加解密模块密钥。

Parameters

Name

Description

operation

加解密模块句柄。

key

密钥句柄。

Return

Type

Description

TEE_Result

参见错误码定义。

[h2]TEE_SetOperationKey2

Method

TEE_Result TEE_SetOperationKey2(TEE_OperationHandle operation, const TEE_ObjectHandle key1, const TEE_ObjectHandle key2)

设置加解密模块密钥1和密钥2。

Parameters

Name

Description

operation

加解密模块句柄。

key1

密钥1句柄。

Key2

密钥2句柄。

Return

Type

Description

TEE_Result

参见错误码定义。

[h2]TEE_CopyOperation

Method

void TEE_CopyOperation(TEE_OperationHandle dstOperation, const TEE_OperationHandle srcOperation)

拷贝加解密模块句柄到另一个句柄。

Parameters

Name

Description

dstOperation

目标加解密模块句柄。

srcOperation

源加解密模块句柄。

Return

Type

Description

void

-

[h2]TEE_CipherInit

Method

void TEE_CipherInit(TEE_OperationHandle operation, const void *IV, size_t IVLen)

加解密初始化,包括AES和DES初始化,不推荐DES。

Parameters

Name

Description

operation

加解密模块句柄。

IV

初始化向量指针,如果不需要初始化向量的话设为NULL。

IVLen

初始化向量长度。

Return

Type

Description

void

-

[h2]TEE_CipherUpdate

Method

TEE_Result TEE_CipherUpdate(TEE_OperationHandle operation, const void *srcData, size_t srcLen, void *destData, size_t *destLen)

加解密运算,包括AES和DES运算。

Parameters

Name

Description

operation

加解密模块句柄。

srcData

输入加密/解密数据指针。

srcLen

输入加密/解密数据长度。

destData

输出解密/加密数据指针。

destLen

输出解密/加密数据长度。

Return

Type

Description

TEE_Result

参见错误码定义。

[h2]TEE_CipherDoFinal

Method

TEE_Result TEE_CipherDoFinal(TEE_OperationHandle operation, const void *srcData, size_t srcLen, void *destData, size_t *destLen)

结束加解密运算。

Parameters

Name

Description

operation

加解密模块句柄。

srcData

输入加密/解密数据指针。

srcLen

输入加密/解密数据长度。

destData

输出解密/加密数据指针。

destLen

输出解密/加密数据长度。

Return

Type

Description

TEE_Result

参见错误码定义

[h2]TEE_DigestUpdate

Method

void TEE_DigestUpdate(TEE_OperationHandle operation, const void *chunk, size_t chunkSize)

摘要运算,支持SHA1、SHA224、SHA256、SHA384、SHA512,推荐SHA256。

Parameters

Name

Description

operation

加解密模块句柄。

chunk

输入数据指针。

chunkSize

输入数据长度。

Return

Type

Description

void

-

[h2]TEE_DigestDoFinal

Method

TEE_Result TEE_DigestDoFinal(TEE_OperationHandle operation, const void *chunk, size_t chunkLen, void *hash, size_t *hashLen)

摘要运算结束,支持SHA1、SHA224、SHA256、SHA384、SHA512,推荐SHA256。

Parameters

Name

Description

operation

加解密模块句柄。

chunk

输入数据指针。

chunkLen

输入数据长度

hash

输出摘要数据指针。

hashLen

输出摘要数据长度 固定长度且与算法有关。

Return

Type

Description

TEE_Result

参见错误码定义。

[h2]TEE_MACInit

Method

void TEE_MACInit(TEE_OperationHandle operation, void *IV, size_t IVLen)

MAC初始化。

Parameters

Name

Description

operation

加解密模块句柄。

IV

初始化向量指针。

IVLen

初始化向量长度。

Return

Type

Description

void

-

[h2]TEE_MACUpdate

Method

void TEE_MACUpdate(TEE_OperationHandle operation, const void *chunk, size_t chunkSize)

MAC运算。

Parameters

Name

Description

operation

加解密模块句柄。

chunk

输入数据指针。

chunkSize

输入数据长度。

Return

Type

Description

void

-

[h2]TEE_MACComputeFinal

Method

TEE_Result TEE_MACComputeFinal(TEE_OperationHandle operation, const void *message, size_t messageLen, void *mac, size_t *macLen)

MAC运算结束,并将计算出的mac写入到出参。

Parameters

Name

Description

operation

加解密模块句柄。

message

输入比较数据指针。

messageLen

输入比较数据长度。

mac

输出摘要数据指针。

macLen

输出摘要数据长度。

Return

Type

Description

TEE_Result

参见错误码定义。

[h2]TEE_MACCompareFinal

Method

TEE_Result TEE_MACCompareFinal(TEE_OperationHandle operation, const void *message, size_t messageLen, const void *mac, const size_t macLen)

MAC运算结束,并将结果和输入数据比较。

Parameters

Name

Description

operation

加解密模块句柄。

message

输入比较数据指针。

messageLen

输入比较数据长度。

mac

输出摘要数据指针。

macLen

输出摘要数据长度。

Return

Type

Description

TEE_Result

参见错误码定义。

[h2]TEE_DeriveKey

Method

void TEE_DeriveKey(TEE_OperationHandle operation, const TEE_Attribute *params, uint32_t paramCount, TEE_ObjectHandle derivedKey)

根据传入公私钥派生共享密钥。

Parameters

Name

Description

operation

加解密模块句柄。

params

共享机密数据指针。

paramCount

共享机密数据个数。

derivedKey

派生密钥句柄。

Return

Type

Description

void

-

[h2]TEE_GenerateRandom

Method

void TEE_GenerateRandom(void *randomBuffer, size_t randomBufferLen)

生成随机数。

Parameters

Name

Description

randomBuffer

随机数指针。

randomBufferLen

随机数长度。

Return

Type

Description

void

-

[h2]TEE_AEInit

Method

TEE_Result TEE_AEInit(TEE_OperationHandle operation, void *nonce, size_t nonceLen, uint32_t tagLen, size_t AADLen, size_t payloadLen)

认证加解密初始化

Parameters

Name

Description

operation

加解密模块句柄。

nonce

输入随机数数据指针。

nonceLen

输入随机数数据长度。

tagLen

按位表示的摘要数据长度。

AADLen

附加认证数据长度。

payloadLen

加解密数据长度。

Return

Type

Description

TEE_Result

参见错误码定义。

[h2]TEE_AEUpdateAAD

Method

void TEE_AEUpdateAAD(TEE_OperationHandle operation, const void *AADdata, size_t AADdataLen)

认证加解密AAD运算。

Parameters

Name

Description

operation

加解密模块句柄。

AADdata

输入附加认证数据指针。

AADdataLen

输入附加认证数据长度。

Return

Type

Description

void

-

[h2]TEE_AEUpdate

Method

TEE_Result TEE_AEUpdate(TEE_OperationHandle operation, void *srcData, size_t srcLen, void *destData, size_t *destLen)

认证加解密运算。

Parameters

Name

Description

operation

加解密模块句柄。

srcData

输入加密/解密数据指针。

srcLen

输入加密/解密数据长度。

destData

输出解密/加密数据指针。

destLen

输出解密/加密数据长度。

Return

Type

Description

TEE_Result

参见错误码定义。

[h2]TEE_AEEncryptFinal

Method

TEE_Result TEE_AEEncryptFinal(TEE_OperationHandle operation, void *srcData, size_t srcLen, void *destData, size_t *destLen, void *tag, size_t *tagLen)

认证加密运算结束,并计算tag。

Parameters

Name

Description

operation

加解密模块句柄。

srcData

输入加密/解密数据指针。

srcLen

输入加密/解密数据长度。

destData

输出解密/加密数据指针。

destLen

输出解密/加密数据长度。

tag

校验数据指针。

tagLen

校验数据长度。

Return

Type

Description

TEE_Result

参见错误码定义。

[h2]TEE_AEDecryptFinal

Method

TEE_Result TEE_AEDecryptFinal(TEE_OperationHandle operation, void *srcData, size_t srcLen, void *destData, size_t *destLen, void *tag, size_t tagLen)

认证解密运算结束,并计算tag和输入tag进行比较。

Parameters

Name

Description

operation

加解密模块句柄。

srcData

输入加密/解密数据指针。

srcLen

输入加密/解密数据长度。

destData

输出解密/加密数据指针。

destLen

输出解密/加密数据长度。

tag

校验数据指针。

tagLen

校验数据长度。

Return

Type

Description

TEE_Result

参见错误码定义。

[h2]TEE_AsymmetricEncrypt

Method

TEE_Result TEE_AsymmetricEncrypt(TEE_OperationHandle operation, const TEE_Attribute *params, uint32_t paramCount, const void *srcData, size_t srcLen, void *destData, size_t *destLen)

非对称数据加密,只执行一次。

Parameters

Name

Description

operation

加解密模块句柄。

params

参数指针。

paramCount

参数个数。

srcData

输入加密数据指针。

srcLen

输入加密数据长度。

destData

输出加密后的数据指针。

destLen

输出加密后数据长度。

Return

Type

Description

TEE_Result

参见错误码定义。

[h2]TEE_AsymmetricDecrypt

Method

TEE_Result TEE_AsymmetricDecrypt(TEE_OperationHandle operation, const TEE_Attribute *params, uint32_t paramCount, const void *srcData, size_t srcLen, void *destData, size_t *destLen)

非对称数据解密,只执行一次。

Parameters

Name

Description

operation

加解密模块句柄。

params

参数指针。

paramCount

参数个数。

srcData

输入加密数据指针。

srcLen

输入加密数据长度。

destData

输出加密后的数据指针。

destLen

输出加密后数据长度。

Return

Type

Description

TEE_Result

参见错误码定义。

[h2]TEE_AsymmetricSignDigest

Method

TEE_Result TEE_AsymmetricSignDigest(TEE_OperationHandle operation, const TEE_Attribute *params, uint32_t paramCount, const void *digest, size_t digestLen, void *signature, size_t *signatureLen)

非对称数据签名摘要。

Parameters

Name

Description

operation

加解密模块句柄。

params

参数指针。

paramCount

参数个数。

digest

摘要数据指针。

digestLen

摘要数据长度。

signature

签名数据指针。

signatureLen

签名数据长度。

Return

Type

Description

TEE_Result

参见错误码定义。

[h2]TEE_AsymmetricVerifyDigest

Method

TEE_Result TEE_AsymmetricVerifyDigest(TEE_OperationHandle operation, const TEE_Attribute *params, uint32_t paramCount, const void *digest, size_t digestLen, void *signature, size_t signatureLen)

验证非对称数据签名摘要。

Parameters

Name

Description

operation

加解密模块句柄。

params

参数指针。

paramCount

参数个数。

digest

摘要数据指针。

digestLen

摘要数据长度。

signature

签名数据指针。

signatureLen

签名数据长度。

Return

Type

Description

TEE_Result

参见错误码定义。

[h2]TEE_GetOperationInfoMultiple

Method

TEE_Result TEE_GetOperationInfoMultiple(TEE_OperationHandle operation, TEE_OperationInfoMultiple *operationInfoMultiple, const size_t *operationSize)

获取模块句柄的加解密信息,保存到operationInfoMultiple中。

Parameters

Name

Description

operation

加解密模块句柄。

operationInfoMultiple

加解密信息。

operationSize

加解密模块句柄数量。

Return

Type

Description

TEE_Result

参见错误码定义。

[h2]TEE_IsAlgorithmSupported

Method

TEE_Result TEE_IsAlgorithmSupported(uint32_t algId, uint32_t element)

查询TEE是否支持指定的加密算法和算法因子。

Parameters

Name

Description

algId

加密算法。

element

加密因子。

Return

Type

Description

TEE_Result

参见错误码定义。