3. API Reference¶
CIPHER providewithunder APIs:
CVI_UNF_CIPHER_Init :initialization CIPHER module.
CVI_UNF_CIPHER_Deinit :deinitialization CIPHER module.
CVI_UNF_CIPHER_Open: Open the CIPHER module.
CVI_UNF_CIPHER_Close :Disable CIPHER module.
CVI_UNF_CIPHER_CreateHandle: Create a Cipher handle.
CVI_UNF_CIPHER_DestroyHandle :destroyalreadystorein CIPHER handle.
CVI_UNF_CIPHER_ConfigHandle :Configure CIPHER control information.
CVI_UNF_CIPHER_ConfigHandleEx :Configure CIPHER control information (extended) .
CVI_UNF_CIPHER_GetHandleConfig :Get CIPHERconfigureinformation.
CVI_UNF_CIPHER_Encrypt :single-packet data encryption.
CVI_UNF_CIPHER_Decrypt :single-packet data decryption.
CVI_UNF_CIPHER_EncryptVir :fordataperform encryption.
CVI_UNF_CIPHER_DecryptVir :fordataperform decryption.
CVI_UNF_CIPHER_EncryptMulti :multi-packet data encryption.
CVI_UNF_CIPHER_DecryptMulti :multi-packet data decryption.
CVI_UNF_CIPHER_HashInit :HASH, HMAC calculateinitializationfunction.
CVI_UNF_CIPHER_HashUpdate :HASH, HMAC calculatedatainputfunction.
CVI_UNF_CIPHER_HashFinal :HASH, HMAC calculatemostendresultoutputfunction.
CVI_UNF_CIPHER_GetRandomNumber :random number retrieval.
CVI_UNF_CIPHER_GetTag :TAG value retrieval.
CVI_UNF_CIPHER_RsaPublicEncrypt :usepublic keyforplaintextperform encryption.
CVI_UNF_CIPHER_RsaPrivateDecrypt :useprivate keyforciphertextperform decryption.
CVI_UNF_CIPHER_RsaPublicDecrypt :usepublic keyforciphertextperform decryption.
CVI_UNF_CIPHER_RsaSign :useprivate keyforuserdataperform signature.
CVI_UNF_CIPHER_RsaVerify :usepublic keyforuserdataperform validnessandcompletenessverification.
CVI_UNF_CIPHER_KladEncryptKey :use KLAD forclear keyperform encryption.
3.1. CVI_UNF_CIPHER_Init¶
[Description]
initialization CIPHER module.
Syntax
CVI_S32 CVI_UNF_CIPHER_Init(void);
[Parameters]
None.
[Return Value]
Return Value |
Description |
|---|---|
0 |
Success |
non-zero |
Reference Error Code . |
3.2. CVI_UNF_CIPHER_Deinit¶
[Description]
deinitialization CIPHER module.
Syntax
CVI_S32 CVI_UNF_CIPHER_DeInit(void);
[Parameters]
None.
[Return Value]
Return Value |
Description |
|---|---|
0 |
Success |
non-zero |
Reference Error Code . |
3.3. CVI_UNF_CIPHER_Open¶
[Description]
Open the CIPHER module.
Syntax
#define CVI_UNF_CIPHER_Open(CVI_VOID)
CVI_UNF_CIPHER_Init(CVI_VOID);
[Parameters]
None.
[Return Value]
Return Value |
Description |
|---|---|
0 |
Success |
non-zero |
Reference Error Code . |
3.4. CVI_UNF_CIPHER_Close¶
[Description]
Disable CIPHER module.
Syntax
#define CVI_UNF_CIPHER_Close(CVI_VOID)
CVI_UNF_CIPHER_DeInit(CVI_VOID);
[Parameters]
None.
[Return Value]
Return Value |
Description |
|---|---|
0 |
Success |
non-zero |
Reference Error Code . |
3.5. CVI_UNF_CIPHER_CreateHandle¶
[Description]
createonepath Cipher handle.
Syntax
CVI_S32 CVI_UNF_CIPHER_CreateHandle(CVI_HANDLE *phCipher, const CVI_UNF_CIPHER_ATTS_S *pstCipherAttr);
[Parameters]
Parameter Name |
Description |
Input/Output |
|---|---|---|
phCipher |
CIPHER handlepointer |
Output |
pstCipherAtt |
CIPHER attributepointer |
Input |
[Return Value]
Return Value |
Description |
|---|---|
0 |
Success |
non-zero |
Reference Error Code . |
3.6. CVI_UNF_CIPHER_DestroyHandle¶
[Description]
Destroy a CIPHER channel.
Syntax
CVI_S32 CVI_UNF_CIPHER_DestroyHandle(CVI_HANDLE hCipher);
[Parameters]
Parameter Name |
Description |
Input/Output |
|---|---|---|
hCipher |
CIPHER handle |
Input |
[Return Value]
Return Value |
Description |
|---|---|
0 |
Success |
non-zero |
Reference Error Code . |
3.7. CVI_UNF_CIPHER_ConfigHandle¶
[Description]
Configure CIPHER control information. detailedconfigurepleaseSee structure CVI_UNF_CIPHER_CTRL_S.
Syntax
CVI_S32 CVI_UNF_CIPHER_ConfigHandle(CVI_HANDLE hCipher, CVI_UNF_CIPHER_CTRL_S* pstCtrl);
[Parameters]
Parameter Name |
Description |
Input/Output |
|---|---|---|
hCipher |
CIPHER handle |
Input |
pstCtrl |
controlinformationpointer |
Input |
[Return Value]
Return Value |
Description |
|---|---|
0 |
Success |
non-zero |
Reference Error Code . |
3.8. CVI_UNF_CIPHER_ConfigHandleEx¶
[Description]
Configure CIPHER control information. detailedconfigurepleaseSee structure CVI_UNF_CIPHER_CTRL_EX_S.
Syntax
CVI_S32 CVI_UNF_CIPHER_ConfigHandleEx(CVI_HANDLE hCipher, CVI_UNF_CIPHER_CTRL_EX_S* pstExCtrl);
[Parameters]
Parameter Name |
Description |
Input/Output |
|---|---|---|
hCipher |
CIPHER handle |
Input |
pstExCtrl |
controlextendedinformationpointer |
Input |
[Return Value]
Return Value |
Description |
|---|---|
0 |
Success |
non-zero |
Reference Error Code . |
3.9. CVI_UNF_CIPHER_GetHandleConfig¶
[Description]
Get CIPHER channelcorrespondingconfigureinformation.
Syntax
CVI_S32 CVI_UNF_CIPHER_GetHandleConfig(CVI_HANDLE hCipher, CVI_UNF_CIPHER_CTRL_S* pstCtrl);
[Parameters]
Parameter Name |
Description |
Input/Output |
|---|---|---|
hCipher |
CIPHER handle |
Input |
pstCtrl |
CIPHER channelconfigureinformation |
Output |
[Return Value]
Return Value |
Description |
|---|---|
0 |
Success |
non-zero |
Reference Error Code . |
3.10. CVI_UNF_CIPHER_Encrypt¶
[Description]
fordataperform encryption.
Syntax
CVI_S32 CVI_UNF_CIPHER_Encrypt(CVI_HANDLE hCipher, CVI_U32 u32SrcPhyAddr, CVI_U32 u32DestPhyAddr, CVI_U32 u32ByteLength);
[Parameters]
Parameter Name |
Description |
Input/Output |
|---|---|---|
hCipher |
CIPHER handle |
Input |
u32SrcPhyAddr |
sourcedata (wait forencryptiondata) physicaladdress |
Input |
u32DestPhyAddr |
storeencryptionresultphysicaladdress |
Input |
u32ByteLength |
datalength (unit:bytes) |
Input |
[Return Value]
Return Value |
Description |
|---|---|
0 |
Success |
non-zero |
Reference Error Code . |
3.11. CVI_UNF_CIPHER_Decrypt¶
[Description]
fordataperform decryption.
Syntax
CVI_S32 CVI_UNF_CIPHER_Decrypt(CVI_HANDLE hCipher, CVI_U32 u32SrcPhyAddr, CVI_U32 u32DestPhyAddr, CVI_U32 u32ByteLength);
[Parameters]
Parameter Name |
Description |
Input/Output |
|---|---|---|
hCipher |
CIPHER handle |
Input |
u32SrcPhyAddr |
sourcedata (wait fordecryptiondata) physicaladdress |
Input |
u32DestPhyAddr |
storedecryptionresultphysicaladdress |
Input |
u32ByteLength |
datalength (unit:bytes) |
Input |
[Return Value]
Return Value |
Description |
|---|---|
0 |
Success |
non-zero |
Reference Error Code . |
3.12. CVI_UNF_CIPHER_EncryptVir¶
[Description]
fordataperform encryption.
Syntax
CVI_S32 CVI_UNF_CIPHER_EncryptVir(CVI_HANDLE hCipher, const CVI_U8 *pu8SrcData, CVI_U8 *pu8DestData, CVI_U32 u32ByteLength);
[Parameters]
Parameter Name |
Description |
Input/Output |
|---|---|---|
hCipher |
CIPHER handle |
Input |
*pu8SrcData |
sourcedata (wait forencryptiondata) virtualaddress. |
Input |
*pu8DestData |
storeencryptionresultvirtualaddress |
Output |
u32ByteLength |
datalength (unit:bytes) |
Input |
[Return Value]
Return Value |
Description |
|---|---|
0 |
Success |
non-zero |
Reference Error Code . |
3.13. CVI_UNF_CIPHER_DecryptVir¶
[Description]
fordataperform decryption.
Syntax
CVI_S32 CVI_UNF_CIPHER_DecryptVir(CVI_HANDLE hCipher, const CVI_U8 *pu8SrcData, CVI_U8 *pu8DestData, CVI_U32 u32ByteLength);
[Parameters]
Parameter Name |
Description |
Input/Output |
|---|---|---|
hCipher |
CIPHER handle |
Input |
*pu8SrcData |
sourcedata (wait fordecryptiondata) virtualaddress. |
Input |
*pu8DestData |
storedecryptionresultvirtualaddress |
Output |
u32ByteLength |
datalength (unit:bytes) |
Input |
[Return Value]
Return Value |
Description |
|---|---|
0 |
Success |
non-zero |
Reference Error Code . |
3.14. CVI_UNF_CIPHER_EncryptMulti¶
[Description]
perform multiplepacketdataencryption.
Syntax
CVI_S32 CVI_UNF_CIPHER_EncryptMulti(CVI_HANDLE hCipher, CVI_UNF_CIPHER_DATA_S *pstDataPkg, CVI_U32 u32DataPkgNum);
[Parameters]
Parameter Name |
Description |
Input/Output |
|---|---|---|
hCipher |
CIPHER handle |
Input |
*pstDataPkg |
wait forencryptiondatapacket |
Input |
u32DataPkgNum |
wait forencryptiondatapacketcount |
Input |
[Return Value]
Return Value |
Description |
|---|---|
0 |
Success |
non-zero |
Reference Error Code . |
3.15. CVI_UNF_CIPHER_DecryptMulti¶
[Description]
perform multiplepacketdatadecryption.
Syntax
CVI_S32 CVI_UNF_CIPHER_DecryptMulti(CVI_HANDLE hCipher, CVI_UNF_CIPHER_DATA_S *pstDataPkg, CVI_U32 u32DataPkgNum);
[Parameters]
Parameter Name |
Description |
Input/Output |
|---|---|---|
hCipher |
CIPHER handle |
Input |
*pstDataPkg |
wait fordecryptiondatapacket |
Input |
u32DataPkgNum |
wait fordecryptiondatapacketcount |
Input |
[Return Value]
Return Value |
Description |
|---|---|
0 |
Success |
non-zero |
Reference Error Code . |
3.16. CVI_UNF_CIPHER_HashInit¶
[Description]
initialization HASH module.
Syntax
CVI_S32 CVI_UNF_CIPHER_HashInit(CVI_UNF_CIPHER_HASH_ATTS_S *pstHashAttr, CVI_HANDLE *pHashHandle);
[Parameters]
Parameter Name |
Description |
Input/Output |
|---|---|---|
pstHashAttr |
used to calculate hash structureparameter |
Input |
pHashHandle |
output hash handle |
Output |
[Return Value]
Return Value |
Description |
|---|---|
0 |
Success |
non-zero |
Reference Error Code . |
3.17. CVI_UNF_CIPHER_HashUpdate¶
[Description]
calculate hash value.
Syntax
CVI_S32 CVI_UNF_CIPHER_HashUpdate(CVI_HANDLE hHashHandle, CVI_U8 *pu8InputData, CVI_U32 u32InputDataLen);
[Parameters]
Parameter Name |
Description |
Input/Output |
|---|---|---|
hHashHandl |
Hash handle |
Input |
pu8InputData |
inputdatabuffer |
Input |
u32InputDataLen |
inputdatalength, unit:byte |
Input |
[Return Value]
Return Value |
Description |
|---|---|
0 |
Success |
non-zero |
Reference Error Code . |
3.18. CVI_UNF_CIPHER_HashFinal¶
[Description]
Get hash value.
Syntax
CVI_S32 CVI_UNF_CIPHER_HashFinal(CVI_HANDLE hHashHandle, CVI_U8 *pu8OutputHash);
[Parameters]
Parameter Name |
Description |
Input/Output |
|---|---|---|
hHashHandl |
Hash handle |
Input |
pu8OutputHash |
output hash |
Output |
[Return Value]
Return Value |
Description |
|---|---|
0 |
Success |
non-zero |
Reference Error Code . |
3.19. CVI_UNF_CIPHER_GetRandomNumber¶
[Description]
generaterandom number.
Syntax
CVI_S32 CVI_UNF_CIPHER_GetRandomNumber(CVI_U32 *pu32RandomNumber);
[Parameters]
Parameter Name |
Description |
Input/Output |
|---|---|---|
pu32RandomNumber |
outputrandom number |
Output |
[Return Value]
Return Value |
Description |
|---|---|
0 |
Success |
non-zero |
Reference Error Code . |
3.20. CVI_UNF_CIPHER_GetTag¶
[Description]
CCM/GCM modeencryption/decryptionafterTAG value retrieval.
Syntax
CVI_S32 CVI_UNF_CIPHER_GetTag(CVI_HANDLE hCipher, CVI_U8 *pstTag);
[Parameters]
Parameter Name |
Description |
Input/Output |
|---|---|---|
hCipher |
CIPHER handle |
Input |
pstTag |
TAG value |
Output |
[Return Value]
Return Value |
Description |
|---|---|
0 |
Success |
non-zero |
Reference Error Code . |
3.21. CVI_UNF_CIPHER_RsaPublicEncrypt¶
[Description]
use RSA public keyencryptiona segmentplaintext.
Syntax
CVI_S32 CVI_UNF_CIPHER_RsaPublicEncrypt(CVI_UNF_CIPHER_RSA_PUB_ENC_S *pstRsaEnc, CVI_U8 *pu8Input, CVI_U32 u32InLen, CVI_U8 *pu8Output, CVI_U32 CIPHER *pu32OutLen);
[Parameters]
Parameter Name |
Description |
Input/Output |
|---|---|---|
pstRsaEnc |
public keyencryptionattributestructure |
Input |
pu8Input |
wait forencryptiondata |
Input |
u32InLen |
wait forencryptiondatalength, unit:byte |
Input |
pu8Output |
encryptionresultdata |
Output |
pu32OutLen |
encryptionresultdatalength, unit:byte |
Output |
[Return Value]
Return Value |
Description |
|---|---|
0 |
Success |
non-zero |
Reference Error Code . |
3.22. CVI_UNF_CIPHER_RsaPrivateDecrypt¶
[Description]
use RSA private keydecryptiona segmentciphertext.
Syntax
CVI_S32 CVI_UNF_CIPHER_RsaPrivateDecrypt(CVI_UNF_CIPHER_RSA_PRI_ENC_S *pstRsaDec, CVI_U8 *pu8Input, CVI_U32 u32InLen, CVI_U8 *pu8Output, CVI_U32 *pu32OutLen);
[Parameters]
Parameter Name |
Description |
Input/Output |
|---|---|---|
pstRsaEnc |
private keyencryptionattributestructure |
Input |
pu8Input |
wait forencryptiondata |
Input |
u32InLen |
wait forencryptiondatalength, unit:byte |
Input |
pu8Output |
encryptionresultdata |
Output |
pu32OutLen |
encryptionresultdatalength, unit:byte |
Output |
[Return Value]
Return Value |
Description |
|---|---|
0 |
Success |
non-zero |
Reference Error Code . |
3.23. CVI_UNF_CIPHER_RsaPublicDecrypt¶
[Description]
use RSA public keydecryptiona segmentciphertext.
Syntax
CVI_S32 CVI_UNF_CIPHER_RsaPrivateDecrypt(CVI_UNF_CIPHER_RSA_PUB_ENC_S *pstRsaDec, CVI_U8 *pu8Input, CVI_U32 u32InLen, CVI_U8 *pu8Output, CVI_U32 *pu32OutLen);
[Parameters]
Parameter Name |
Description |
Input/Output |
|---|---|---|
pstRsaDec |
public keydecryptionattributestructure |
Input |
pu8Input |
wait fordecryptiondata |
Input |
u32InLen |
wait fordecryptiondatalength, unit:byte |
Input |
pu8Output |
decryptionresultdata |
Output |
pu32OutLen |
decryptionresultdatalength, unit:byte |
Output |
[Return Value]
Return Value |
Description |
|---|---|
0 |
Success |
non-zero |
Reference Error Code . |
3.24. CVI_UNF_CIPHER_RsaSign¶
[Description]
use RSA private keysignaturea text segment.
Syntax
CVI_S32 CVI_UNF_CIPHER_RsaSign(CVI_UNF_CIPHER_RSA_SIGN_S *pstRsaSign, CVI_U8 *pu8InData, CVI_U32 u32InDataLen, CVI_U8 *pu8HashData,CVI_U8 *pu8OutSign, CVI_U32 *pu32OutSignLen);
[Parameters]
Parameter Name |
Description |
Input/Output |
|---|---|---|
pstRsaSign |
signatureattributestructure |
Input |
pu8InData |
wait forsignaturedata, If pu8HashData notisempty, thenuse pu8HashData perform signature, theparameterwillbeignore. |
Input |
u32InDataLen |
wait forsignaturedatalength, unit:byte |
Input |
pu8HashData |
wait forsignaturetext HASH digest, If isempty, thenautomaticcalculate pu8InData HASH digestperform signature |
Input |
pu8OutSign |
signatureresultdata |
Output |
pu32OutSignLen |
signatureresultdatalength, unit:byte |
Output |
[Return Value]
Return Value |
Description |
|---|---|
0 |
Success |
non-zero |
Reference Error Code . |
3.25. CVI_UNF_CIPHER_RsaVerify¶
[Description]
use RSA public keysignatureverificationa text segment.
Syntax
CVI_S32 CVI_UNF_CIPHER_RsaVerify(CVI_UNF_CIPHER_RSA_VERIFY_S *pstRsaVerify,CVI_U8 *pu8InData, CVI_U32 u32InDataLen, CVI_U8 *pu8HashData,CVI_U8 *pu8InSign, CVI_U32 u32InSignLen);
[Parameters]
Parameter Name |
Description |
Input/Output |
|---|---|---|
pstRsaVerify |
signatureverificationattributestructure |
Input |
pu8InData |
wait forverificationdata, If pu8HashData notisempty, thenuse pu8HashData perform verification, theparameterwillbeignore |
Input |
u32InDataLen |
wait forverificationdatalength, unit:byte |
Input |
pu8HashData |
wait forverificationtext HASH digest, If isempty, thenautomaticcalculate pu8InData HASH digestperform verification |
Input |
pu8InSign |
wait forverificationsignaturedata |
Input |
u32InSignLen |
wait forverificationsignaturedatalength, unit:byte |
Input |
[Return Value]
Return Value |
Description |
|---|---|
0 |
Success |
non-zero |
Reference Error Code . |
3.26. CVI_UNF_CIPHER_KladEncryptKey¶
[Description]
use KLAD forclear keyperform encryption.
Syntax
CV_S32 CVI_UNF_CIPHER_KladEncryptKey(CVI_UNF_CIPHER_CA_TYPE_E enRootKey, CVI_UNF_CIPHER_KLAD_TARGET_E enTarget, CVI_U8 *pu8CleanKey, CVI_U8 *pu8EcnryptKey, CVI_U32 u32KeyLen);
[Parameters]
Parameter Name |
Description |
Input/Output |
|---|---|---|
enRootKey |
KLAD root keyselect, onlycanselect EFUSE Key |
Input |
enTarget |
usethekeymodule |
Input |
pu8CleanKey |
clear key |
Input |
pu8EcnryptKey |
encryption key |
Output |
u32KeyLen |
keylength, mustis 16 entirenumbertimes |
Input |
[Return Value]
Return Value |
Description |
|---|---|
0 |
Success |
non-zero |
Reference Error Code . |