3. API Reference

CIPHER providewithunder APIs:

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 .