blob: 2caebf162e80db20ed13d069233472f12b1ebb35 [file] [log] [blame]
#pragma once
/**
* Perform an AES-CCM Decryption operation
*
* @param[in] COSE_Enveloped Pointer to COSE Encryption context object
* @param[in] int Size of the Tag value to be create
* @param[in] int Size of the Message Length field
* @param[in] byte * Pointer to authenticated data structure
* @param[in] int Size of authenticated data structure
* @return Did the function succeed?
*/
bool AES_CCM_Decrypt(COSE_Enveloped * pcose, int TSize, int LSize, const byte * pbKey, size_t cbitKey, const byte * pbCrypto, size_t cbCrypto, const byte * pbAuthData, size_t cbAuthData, cose_errback * perr);
bool AES_GCM_Decrypt(COSE_Enveloped * pcose, const byte * pbKey, size_t cbKey, const byte * pbCrypto, size_t cbCrypto, const byte * pbAuthData, size_t cbAuthData, cose_errback * perr);
bool AES_KW_Decrypt(COSE_Enveloped * pcose, const byte * pbKeyIn, size_t cbitKey, const byte * pbCipherText, size_t cbCipherText, byte * pbKeyOut, int * pcbKeyOut, cose_errback * perr);
/**
* Perform an AES-CCM Encryption operation
*
* @param[in] COSE_Enveloped Pointer to COSE Encryption context object
* @param[in] int Size of the Tag value to be create
* @param[in] int Size of the Message Length field
* @param[in] byte * Pointer to authenticated data structure
* @param[in] int Size of authenticated data structure
* @return Did the function succeed?
*/
bool AES_CCM_Encrypt(COSE_Enveloped * pcose, int TSize, int LSize, const byte * pbKey, size_t cbKey, const byte * pbAuthData, size_t cbAuthData, cose_errback * perr);
bool AES_GCM_Encrypt(COSE_Enveloped * pcose, const byte * pbKey, size_t cbKey, const byte * pbAuthData, size_t cbAuthData, cose_errback * perr);
bool AES_KW_Encrypt(COSE_RecipientInfo * pcose, const byte * pbKeyIn, int cbitKey, const byte * pbContent, int cbContent, cose_errback * perr);
extern bool AES_CMAC_Validate(COSE_MacMessage * pcose, int KeySize, int TagSize, const byte * pbKey, int cbitKey, const byte * pbAuthData, size_t cbAuthData, cose_errback * perr);
extern bool AES_CBC_MAC_Create(COSE_MacMessage * pcose, int TagSize, const byte * pbKey, size_t cbKey, const byte * pbAuthData, size_t cbAuthData, cose_errback * perr);
extern bool AES_CBC_MAC_Validate(COSE_MacMessage * pcose, int TagSize, const byte * pbKey, size_t cbitKey, const byte * pbAuthData, size_t cbAuthData, cose_errback * perr);
/**
* Perform an HMAC Creation operation
*
* @param[in] COSE_Enveloped Pointer to COSE Encryption context object
* @param[in] int Hash function to be used
* @param[in] int Size of Tag value to be created
* @param[in] byte * Pointer to authenticated data structure
* @param[in] int Size of authenticated data structure
* @param[in] cose_errback * Error return location
* @return Did the function succeed?
*/
bool HMAC_Create(COSE_MacMessage * pcose, int HSize, int TSize, const byte * pbKey, size_t cbKey, const byte * pbAuthData, size_t cbAuthData, cose_errback * perr);
bool HMAC_Validate(COSE_MacMessage * pcose, int HSize, int TSize, const byte * pbKey, size_t cbitKey, const byte * pbAuthData, size_t cbAuthData, cose_errback * perr);
bool HKDF_Extract(COSE * pcose, const byte * pbKey, size_t cbKey, size_t cbitDigest, byte * rgbDigest, size_t * pcbDigest, CBOR_CONTEXT_COMMA cose_errback * perr);
bool HKDF_Expand(COSE * pcose, size_t cbitDigest, const byte * pbPRK, size_t cbPRK, const byte * pbInfo, size_t cbInfo, byte * pbOutput, size_t cbOutput, cose_errback * perr);
bool HKDF_AES_Expand(COSE * pcose, size_t cbitKey, const byte * pbPRK, size_t cbPRK, const byte * pbInfo, size_t cbInfo, byte * pbOutput, size_t cbOutput, cose_errback * perr);
/**
* Perform a signature operation
*
* @param[in] COSE_SignerInfo Pointer to COSE SignerInfo context object
* @param[in] byte * Pointer to text to be signed
* @param[in] size_t size of text to be signed
* @param[in] cose_errback * Error return location
* @return Did the function succeed?
*/
bool ECDSA_Sign(COSE * pSigner, int index, const cn_cbor * pKey, int cbitsDigest, const byte * rgbToSign, size_t cbToSign, cose_errback * perr);
bool ECDSA_Verify(COSE * pSigner, int index, const cn_cbor * pKey, int cbitsDigest, const byte * rgbToSign, size_t cbToSign, cose_errback * perr);
bool ECDH_ComputeSecret(COSE * pReciient, cn_cbor ** ppKeyMe, const cn_cbor * pKeyYou, byte ** ppbSecret, size_t * pcbSecret, CBOR_CONTEXT_COMMA cose_errback *perr);
/**
* Generate random bytes in a buffer
*
* @param[in] byte * Pointer to buffer to be filled
* @param[in] size_t Size of buffer to be filled
* @return none
*/
void rand_bytes(byte * pb, size_t cb);