| #pragma once |
| |
| #include <stdbool.h> |
| |
| #ifdef USE_CBOR_CONTEXT |
| cn_cbor_context* context; |
| #define CBOR_CONTEXT_PARAM , context |
| #define CBOR_CONTEXT_PARAM_COMMA context, |
| #else |
| #define CBOR_CONTEXT_PARAM |
| #define CBOR_CONTEXT_PARAM_COMMA |
| #endif |
| |
| // encrypt.c |
| |
| int ValidateEnveloped(const cn_cbor* pControl); |
| int EncryptMessage(); |
| int BuildEnvelopedMessage(const cn_cbor* pControl); |
| int ValidateEncrypt(const cn_cbor* pControl); |
| int BuildEncryptMessage(const cn_cbor* pControl); |
| void Enveloped_Corners(); |
| void Encrypt_Corners(); |
| void Recipient_Corners(); |
| void CounterSign_Corners(); |
| |
| // sign.c |
| |
| int ValidateSigned(const cn_cbor* pControl); |
| int SignMessage(); |
| int BuildSignedMessage(const cn_cbor* pControl); |
| int ValidateSign1(const cn_cbor* pControl); |
| int BuildSign1Message(const cn_cbor* pControl); |
| void Sign_Corners(); |
| void Sign1_Corners(); |
| |
| // mac_testc |
| |
| int ValidateMAC(const cn_cbor* pControl); |
| int MacMessage(); |
| int BuildMacMessage(const cn_cbor* pControl); |
| int ValidateMac0(const cn_cbor* pControl); |
| int BuildMac0Message(const cn_cbor* pControl); |
| void MAC_Corners(); |
| void MAC0_Corners(); |
| |
| #ifdef USE_CBOR_CONTEXT |
| // context.c |
| extern cn_cbor_context* CreateContext(unsigned int iFailPoint); |
| void FreeContext(cn_cbor_context* pContext); |
| int IsContextEmpty(cn_cbor_context* pContext); |
| #endif |
| |
| // test.c |
| enum { |
| Attributes_MAC_protected = 1, |
| Attributes_MAC0_protected, |
| Attributes_Recipient_protected, |
| Attributes_Enveloped_protected, |
| Attributes_Encrypt_protected, |
| Attributes_Sign_protected, |
| Attributes_Signer_protected, |
| Attributes_Sign1_protected, |
| Attributes_Countersign_protected |
| } whichSet; |
| |
| extern int CFails; |
| |
| int MapAlgorithmName(const cn_cbor* p); |
| byte* GetCBOREncoding(const cn_cbor* pControl, int* pcbEncoded); |
| // bool SetAttributes(HCOSE hHandle, const cn_cbor * pAttributes, int which, |
| // bool fPublicKey); |
| cn_cbor* BuildKey(const cn_cbor* pKeyIn, bool fPublicKey); |
| byte* FromHex(const char* rgch, int cch); |
| bool SetSendingAttributes(HCOSE hMsg, const cn_cbor* pIn, int base); |
| bool SetReceivingAttributes(HCOSE hMsg, const cn_cbor* pIn, int base); |
| int IsAlgorithmSupported(const cn_cbor* alg); |
| |
| // |
| // Internal macros to make testing easier |
| // |
| |
| #define CHECK_RETURN(functionCall, errorReturn, onFailure) \ |
| { \ |
| if (!functionCall) \ |
| onFailure; \ |
| } |
| |
| #define CHECK_FAILURE(functionCall, errorReturn, onFailure) \ |
| { \ |
| bool bReturn = functionCall; \ |
| if (!bReturn) { \ |
| if (cose_error.err != errorReturn) \ |
| onFailure; \ |
| } \ |
| else if (errorReturn != COSE_ERR_NONE) \ |
| onFailure; \ |
| } |
| |
| #define CHECK_FAILURE_PTR(functionCall, errorReturn, onFailure) \ |
| { \ |
| void* bReturn = functionCall; \ |
| if (bReturn == NULL) { \ |
| if (cose_error.err != errorReturn) \ |
| onFailure; \ |
| } \ |
| else if (errorReturn != COSE_ERR_NONE) \ |
| onFailure; \ |
| } |