blob: 8c187af195d42562cfb3d06b16294e90de8a6fef [file] [log] [blame]
#pragma once
#ifndef _countof
#define _countof(x) (sizeof(x)/sizeof(x[0]))
#endif
#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();
// 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);
#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,
} 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; \
}