diff --git a/.gitignore b/.gitignore
index d2165dc..bec05a8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -67,6 +67,8 @@
 dist
 test/test.cbor
 *.tcl
+CMakeLists.txt.user
+
 
 # Coverity
 cov-int
diff --git a/dumper/CMakeLists.txt b/dumper/CMakeLists.txt
index 46246cb..21d1ed4 100644
--- a/dumper/CMakeLists.txt
+++ b/dumper/CMakeLists.txt
@@ -6,6 +6,8 @@
   target_link_libraries(cose_dumper PRIVATE ws2_32)
 endif()
 
+target_include_directories(cose_dumper PRIVATE ../src)
+
 if(COSE_C_USE_MBEDTLS)
   # mbedtls
   target_include_directories(cose_dumper
@@ -19,4 +21,4 @@
 
 if(CLANG_TIDY_EXE)
   set_target_properties(cose_dumper PROPERTIES C_CLANG_TIDY "${CLANG_TIDY_EXE}")
-endif()
\ No newline at end of file
+endif()
diff --git a/dumper/dumper.c b/dumper/dumper.c
index 908b968..8b2ec18 100644
--- a/dumper/dumper.c
+++ b/dumper/dumper.c
@@ -1,22 +1,19 @@
 #define _CRT_SECURE_NO_WARNINGS
 
-#include <stdio.h>
-#include <cose/cose.h>
-#include <sys/stat.h>
 #include <cn-cbor/cn-cbor.h>
+#include <cose/cose.h>
+#include <cose_int.h>
 #include <fcntl.h>
+#include <stdarg.h>
+#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <stdarg.h>
+#include <sys/stat.h>
 
 #ifdef _MSC_VER
 #include <io.h>
 #endif
 
-#ifndef _countof
-#define _countof(x) (sizeof(x)/sizeof(x[0]))
-#endif
-
 #ifndef _MSC_VER
 #define strcat_s(a, b, c) strcat(a, c)
 #endif
@@ -395,7 +392,7 @@
 			if (pFOO != NULL) {
 				//  Locate the right entry in foo
 				for (i2 = 0, pFoo2 = pFOO->children; i2 < pFOO->count; pFoo2++, i2 += 1) {
-					if (pFoo2->type != cbor2->type) continue;
+					if ((unsigned)pFoo2->type != cbor2->type) continue;
 					switch (cbor2->type) {
 					case CN_CBOR_UINT:
 						if ((group != 0) && (pFoo2->group != 0) && (pFoo2->group != group)) continue;
diff --git a/include/cose/cose.h b/include/cose/cose.h
index d767c85..dbb08f3 100644
--- a/include/cose/cose.h
+++ b/include/cose/cose.h
@@ -1,8 +1,9 @@
+#pragma once
+
+#include <stdbool.h>
 #include <cn-cbor/cn-cbor.h>
 #include "cose/cose_configure.h"
 
-#pragma once
-
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -368,10 +369,10 @@
 /*
 */
 
-extern cn_cbor * cn_cbor_clone(const cn_cbor * pIn, CBOR_CONTEXT_COMMA cn_cbor_errback * perr);
-extern cn_cbor * cn_cbor_tag_create(int tag, cn_cbor * child, CBOR_CONTEXT_COMMA cn_cbor_errback * perr);
-extern cn_cbor * cn_cbor_bool_create(int boolValue, CBOR_CONTEXT_COMMA cn_cbor_errback * errp);
-extern cn_cbor * cn_cbor_null_create(CBOR_CONTEXT_COMMA cn_cbor_errback * errp);
+cn_cbor * cn_cbor_clone(const cn_cbor * pIn, CBOR_CONTEXT_COMMA cn_cbor_errback * perr);
+cn_cbor * cn_cbor_tag_create(int tag, cn_cbor * child, CBOR_CONTEXT_COMMA cn_cbor_errback * perr);
+cn_cbor * cn_cbor_bool_create(int boolValue, CBOR_CONTEXT_COMMA cn_cbor_errback * errp);
+cn_cbor * cn_cbor_null_create(CBOR_CONTEXT_COMMA cn_cbor_errback * errp);
 
 #ifdef __cplusplus
 }
diff --git a/src/Cose.c b/src/Cose.c
index 6ded3fa..d8c0039 100644
--- a/src/Cose.c
+++ b/src/Cose.c
@@ -498,15 +498,19 @@
 	return;
 }
 
-bool _COSE_IsInList(COSE * root, COSE * thisMsg)
+bool _COSE_IsInList(const COSE *const root, const COSE  *const thisMsg)
 {
-	COSE * walk;
+	if (root == NULL) {
+		return false;
+	}
+	if (thisMsg == NULL) {
+		return false;
+	}
 
-	if (root == NULL) return false;
-	if (thisMsg == NULL) return false;
-
-	for (walk = root; walk != NULL; walk = walk->m_handleList) {
-		if (walk == thisMsg) return true;		
+	for (const COSE * walk = root; walk != NULL; walk = walk->m_handleList) {
+		if (walk == thisMsg) {
+			return true;
+		}
 	}
 	return false;
 }
diff --git a/src/Encrypt.c b/src/Encrypt.c
index a7e140a..8e59329 100644
--- a/src/Encrypt.c
+++ b/src/Encrypt.c
@@ -129,7 +129,7 @@
 bool COSE_Enveloped_Free(HCOSE_ENVELOPED h)
 {
 #ifdef USE_CBOR_CONTEXT
-	cn_cbor_context context;
+	cn_cbor_context *context;
 #endif
 	COSE_Enveloped * p = (COSE_Enveloped *)h;
 
@@ -141,14 +141,14 @@
 	}
 
 #ifdef USE_CBOR_CONTEXT
-	context = ((COSE_Enveloped *)h)->m_message.m_allocContext;
+	context = &((COSE_Enveloped *)h)->m_message.m_allocContext;
 #endif
 
 	_COSE_RemoveFromList(&EnvelopedRoot, &p->m_message);
 
 	_COSE_Enveloped_Release((COSE_Enveloped *)h);
 
-	COSE_FREE((COSE_Enveloped *)h, &context);
+	COSE_FREE((COSE_Enveloped *)h, context);
 
 	return true;
 }
diff --git a/src/Encrypt0.c b/src/Encrypt0.c
index 132bde4..9012fe2 100644
--- a/src/Encrypt0.c
+++ b/src/Encrypt0.c
@@ -128,21 +128,21 @@
 bool COSE_Encrypt_Free(HCOSE_ENCRYPT h)
 {
 #ifdef USE_CBOR_CONTEXT
-	cn_cbor_context context;
+	cn_cbor_context *context;
 #endif
 	COSE_Encrypt * pEncrypt = (COSE_Encrypt *)h;
 
 	if (!IsValidEncryptHandle(h)) return false;
 
 #ifdef USE_CBOR_CONTEXT
-	context = ((COSE_Encrypt *)h)->m_message.m_allocContext;
+	context = &((COSE_Encrypt *)h)->m_message.m_allocContext;
 #endif
 
 	_COSE_Encrypt_Release(pEncrypt);
 
 	_COSE_RemoveFromList(&EncryptRoot, &pEncrypt->m_message);
 	
-	COSE_FREE((COSE_Encrypt *)h, &context);
+	COSE_FREE((COSE_Encrypt *)h, context);
 
 	return true;
 }
diff --git a/src/MacMessage.c b/src/MacMessage.c
index 6c4eb34..b09870a 100644
--- a/src/MacMessage.c
+++ b/src/MacMessage.c
@@ -113,7 +113,7 @@
 bool COSE_Mac_Free(HCOSE_MAC h)
 {
 #ifdef USE_CBOR_CONTEXT
-	cn_cbor_context context;
+	cn_cbor_context *context;
 #endif
 	COSE_MacMessage * p = (COSE_MacMessage *)h;
 
@@ -127,12 +127,12 @@
 	_COSE_RemoveFromList(&MacRoot, &p->m_message);
 
 #ifdef USE_CBOR_CONTEXT
-	context = ((COSE_MacMessage *)h)->m_message.m_allocContext;
+	context = &((COSE_MacMessage *)h)->m_message.m_allocContext;
 #endif
 
 	_COSE_Mac_Release((COSE_MacMessage *)h);
 
-	COSE_FREE((COSE_MacMessage *)h, &context);
+	COSE_FREE((COSE_MacMessage *)h, context);
 
 	return true;
 }
@@ -286,7 +286,7 @@
 	CHECK_CONDITION(cbAuthData > 0, COSE_ERR_CBOR);
 	pbAuthData = (byte *)COSE_CALLOC(cbAuthData, 1, context);
 	CHECK_CONDITION(pbAuthData != NULL, COSE_ERR_OUT_OF_MEMORY);
-	CHECK_CONDITION(cn_cbor_encoder_write(pbAuthData, 0, cbAuthData, pAuthData) == cbAuthData, COSE_ERR_CBOR);
+	CHECK_CONDITION(cn_cbor_encoder_write(pbAuthData, 0, cbAuthData, pAuthData) == (ssize_t)cbAuthData, COSE_ERR_CBOR);
 
 	*ppbAuthData = pbAuthData;
 	*pcbAuthData = cbAuthData;
diff --git a/src/MacMessage0.c b/src/MacMessage0.c
index d445265..e9368d0 100644
--- a/src/MacMessage0.c
+++ b/src/MacMessage0.c
@@ -100,7 +100,7 @@
 bool COSE_Mac0_Free(HCOSE_MAC0 h)
 {
 #ifdef USE_CBOR_CONTEXT
-	cn_cbor_context context;
+	cn_cbor_context *context;
 #endif
 	COSE_Mac0Message * p = (COSE_Mac0Message *)h;
 
@@ -114,12 +114,12 @@
 	_COSE_RemoveFromList(&Mac0Root, &p->m_message);
 
 #ifdef USE_CBOR_CONTEXT
-	context = p->m_message.m_allocContext;
+	context = &p->m_message.m_allocContext;
 #endif
 
 	_COSE_Mac0_Release(p);
 
-	COSE_FREE(p, &context);
+	COSE_FREE(p, context);
 
 	return true;
 }
diff --git a/src/Recipient.c b/src/Recipient.c
index a7a627c..761f52b 100644
--- a/src/Recipient.c
+++ b/src/Recipient.c
@@ -234,6 +234,7 @@
 
 bool _COSE_Recipient_decrypt(COSE_RecipientInfo * pRecip, COSE_RecipientInfo * pRecipUse, int algIn, size_t cbitKeyOut, byte * pbKeyOut, cose_errback * perr)
 {
+	UNUSED(pRecipUse);
 	int alg;
 	const cn_cbor * cn = NULL;
 	COSE_RecipientInfo * pRecip2;
@@ -251,8 +252,6 @@
 	int cbitKeyX = 0;
 	byte rgbKey[256 / 8];
 
-	UNUSED(pcose);
-
 #ifdef USE_CBOR_CONTEXT
 	context = &pcose->m_message.m_allocContext;
 #else
@@ -279,7 +278,7 @@
 		CHECK_CONDITION(pRecip->m_pkey != NULL, COSE_ERR_INVALID_PARAMETER);
 		cn = cn_cbor_mapget_int(pRecip->m_pkey, -1);
 		CHECK_CONDITION((cn != NULL) && (cn->type == CN_CBOR_BYTES), COSE_ERR_INVALID_PARAMETER);
-		CHECK_CONDITION((cn->length == (unsigned int)cbitKeyOut / 8), COSE_ERR_INVALID_PARAMETER);
+		CHECK_CONDITION(((size_t)cn->length == cbitKeyOut / 8), COSE_ERR_INVALID_PARAMETER);
 		memcpy(pbKeyOut, cn->v.bytes, cn->length);
 
 		return true;
@@ -881,7 +880,7 @@
 		CHECK_CONDITION(pRecipient->m_pkey != NULL, COSE_ERR_INVALID_PARAMETER);
 			pK = cn_cbor_mapget_int(pRecipient->m_pkey, -1);
 			CHECK_CONDITION((pK != NULL) && (pK->type == CN_CBOR_BYTES), COSE_ERR_INVALID_PARAMETER);
-			CHECK_CONDITION(pK->length == cbitKeySize / 8, COSE_ERR_INVALID_PARAMETER);
+			CHECK_CONDITION((size_t)pK->length == cbitKeySize / 8, COSE_ERR_INVALID_PARAMETER);
 			memcpy(pb, pK->v.bytes, cbitKeySize / 8);
 	break;
 
@@ -1225,7 +1224,6 @@
 	cn_cbor * cnArrayT = NULL;
 	cn_cbor * cnParam;
 	byte * pbContext = NULL;
-	size_t cbContext;
 
 	pArray = cn_cbor_array_create(CBOR_CONTEXT_PARAM_COMMA &cbor_error);
 	CHECK_CONDITION_CBOR(pArray != NULL, cbor_error);
@@ -1346,11 +1344,11 @@
 		cnParam = NULL;
 	}
 
-	cbContext = cn_cbor_encode_size(pArray);
+	size_t cbContext = cn_cbor_encode_size(pArray);
 	CHECK_CONDITION(cbContext > 0, COSE_ERR_CBOR);
 	pbContext = (byte *)COSE_CALLOC(cbContext, 1, context);
 	CHECK_CONDITION(pbContext != NULL, COSE_ERR_OUT_OF_MEMORY);
-	CHECK_CONDITION(cn_cbor_encoder_write(pbContext, 0, cbContext, pArray) == cbContext, COSE_ERR_CBOR);
+	CHECK_CONDITION(cn_cbor_encoder_write(pbContext, 0, cbContext, pArray) == (ssize_t)cbContext, COSE_ERR_CBOR);
 
 	*ppbContext = pbContext;
 	*pcbContext = cbContext;
diff --git a/src/Sign.c b/src/Sign.c
index 082d5e3..c9c04fd 100644
--- a/src/Sign.c
+++ b/src/Sign.c
@@ -107,7 +107,7 @@
 bool COSE_Sign_Free(HCOSE_SIGN h)
 {
 #ifdef USE_CBOR_CONTEXT
-	cn_cbor_context context;
+	cn_cbor_context *context;
 #endif
 	COSE_SignMessage * pMessage = (COSE_SignMessage *)h;
 
@@ -122,12 +122,12 @@
 	_COSE_RemoveFromList(&SignRoot, &pMessage->m_message);
 
 #ifdef USE_CBOR_CONTEXT
-	context = pMessage->m_message.m_allocContext;
+	context = &pMessage->m_message.m_allocContext;
 #endif
 
 	_COSE_Sign_Release(pMessage);
 
-	COSE_FREE(pMessage, &context);
+	COSE_FREE(pMessage, context);
 
 	return true;
 }
diff --git a/src/Sign1.c b/src/Sign1.c
index 93364b8..f71c8ce 100644
--- a/src/Sign1.c
+++ b/src/Sign1.c
@@ -92,7 +92,7 @@
 bool COSE_Sign1_Free(HCOSE_SIGN1 h)
 {
 #ifdef USE_CBOR_CONTEXT
-	cn_cbor_context context;
+	cn_cbor_context *context;
 #endif
 	COSE_Sign1Message * pMessage = (COSE_Sign1Message *)h;
 
@@ -107,12 +107,12 @@
 	_COSE_RemoveFromList(&Sign1Root, &pMessage->m_message);
 
 #ifdef USE_CBOR_CONTEXT
-	context = pMessage->m_message.m_allocContext;
+	context = &pMessage->m_message.m_allocContext;
 #endif
 
 	_COSE_Sign1_Release(pMessage);
 
-	COSE_FREE(pMessage, &context);
+	COSE_FREE(pMessage, context);
 
 	return true;
 }
@@ -294,7 +294,7 @@
 	CHECK_CONDITION(cbToSign > 0, COSE_ERR_CBOR);
 	pbToSign = (byte *)COSE_CALLOC(cbToSign, 1, context);
 	CHECK_CONDITION(pbToSign != NULL, COSE_ERR_OUT_OF_MEMORY);
-	CHECK_CONDITION(cn_cbor_encoder_write(pbToSign, 0, cbToSign, pArray) == cbToSign, COSE_ERR_CBOR);
+	CHECK_CONDITION(cn_cbor_encoder_write(pbToSign, 0, cbToSign, pArray) == (ssize_t)cbToSign, COSE_ERR_CBOR);
 
 	*ppbToSign = pbToSign;
 	*pcbToSign = cbToSign;
diff --git a/src/SignerInfo.c b/src/SignerInfo.c
index 82e3a24..45090e9 100644
--- a/src/SignerInfo.c
+++ b/src/SignerInfo.c
@@ -153,7 +153,9 @@
 	CHECK_CONDITION(cbToSign > 0, COSE_ERR_CBOR);
 	pbToSign = (byte *)COSE_CALLOC(cbToSign, 1, context);
 	CHECK_CONDITION(pbToSign != NULL, COSE_ERR_OUT_OF_MEMORY);
-	CHECK_CONDITION(cn_cbor_encoder_write(pbToSign, 0, cbToSign, pArray) == cbToSign, COSE_ERR_CBOR);
+	const ssize_t writtenBits = cn_cbor_encoder_write(pbToSign, 0, cbToSign, pArray);
+	CHECK_CONDITION(writtenBits >= 0, COSE_ERR_CBOR);
+	CHECK_CONDITION((size_t)writtenBits == cbToSign, COSE_ERR_CBOR);
 
 	*ppbToSign = pbToSign;
 	*pcbToSign = cbToSign;
@@ -370,15 +372,13 @@
 
 bool COSE_Signer_map_put_int(HCOSE_SIGNER h, int key, cn_cbor * value, int flags, cose_errback * perr)
 {
-	bool fRet = false;
-
 	CHECK_CONDITION(IsValidSignerHandle(h), COSE_ERR_INVALID_HANDLE);
 	CHECK_CONDITION(value != NULL, COSE_ERR_INVALID_PARAMETER);
 
 	return _COSE_map_put(&((COSE_SignerInfo *)h)->m_message, key, value, flags, perr);
 
 errorReturn:
-	return fRet;
+	return false;
 }
 
 #endif
diff --git a/src/cose_int.h b/src/cose_int.h
index 59e1757..34b87d0 100644
--- a/src/cose_int.h
+++ b/src/cose_int.h
@@ -1,6 +1,9 @@
 #pragma once
 
 #include <assert.h>
+#include <cn-cbor/cn-cbor.h>
+#include <cose/cose.h>
+#include <stdbool.h>
 
 // These definitions are here because they aren't required for the public
 // interface, and they were quite confusing in cn-cbor.h
@@ -12,6 +15,10 @@
 
 #define UNUSED(x) ((void) (x))
 
+#ifndef _countof
+#define _countof(x) (sizeof(x)/sizeof(x[0]))
+#endif
+
 typedef struct _COSE {
 	COSE_INIT_FLAGS m_flags;		//  Not sure what goes here yet
 	int m_ownMsg;		//  Do I own the pointer @ m_cbor?
@@ -149,9 +156,6 @@
 
 #endif // USE_CBOR_CONTEXT
 
-#ifndef UNUSED_PARAM
-#define UNUSED_PARAM(p) ((void)&(p))
-#endif
 
 extern cose_error _MapFromCBOR(cn_cbor_errback err);
 
@@ -160,7 +164,7 @@
  */
 
 extern void _COSE_InsertInList(COSE ** rootNode, COSE * newMsg);
-extern bool _COSE_IsInList(COSE * rootNode, COSE * thisMsg);
+extern bool _COSE_IsInList(const COSE *const rootNode, const COSE  *const thisMsg);
 extern void _COSE_RemoveFromList(COSE ** rootNode, COSE * thisMsg);
 
 extern bool IsValidEncryptHandle(HCOSE_ENCRYPT h);
diff --git a/src/crypto.h b/src/crypto.h
index 9afb3d6..5a069d2 100644
--- a/src/crypto.h
+++ b/src/crypto.h
@@ -1,15 +1,19 @@
 #pragma once
 
+#include <cose/cose.h>
+#include <stdbool.h>
+#include "cose_int.h"
+
 /**
-* 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?
-*/
+ * 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);
diff --git a/src/mbedtls.c b/src/mbedtls.c
index 334ac3a..fe5a1ff 100644
--- a/src/mbedtls.c
+++ b/src/mbedtls.c
@@ -231,9 +231,7 @@
 bool AES_GCM_Encrypt(COSE_Enveloped * pcose, const byte * pbKey, size_t cbKey, const byte * pbAuthData, size_t cbAuthData, cose_errback * perr)
 {
 	mbedtls_gcm_context ctx;
-	int cbOut;
 	byte * rgbOut = NULL;
-	int outl = 0;
 	byte rgbIV[16] = { 0 };
 	byte * pbIV = NULL;
 	const cn_cbor * cbor_iv = NULL;
@@ -571,20 +569,19 @@
 
 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)
 {
+	UNUSED(pcose);
 	mbedtls_md_type_t mdType;
 	mbedtls_md_info_t * pmd;
 
-	size_t ib;
-    int cbSalt;
-    unsigned int cbDigest = 0;
-    byte bCount = 1;
 
-    if (0) {
-    errorReturn:
-        return false;
-    }
+	unsigned int cbDigest = 0;
 
-    switch (cbitDigest) {
+	if (0) {
+	errorReturn:
+		return false;
+	}
+
+	switch (cbitDigest) {
     case 256: mdType = MBEDTLS_MD_SHA256; cbDigest = 256 / 8;  break;
     case 384: mdType = MBEDTLS_MD_SHA384; cbDigest = 384 / 8; break;
     case 512: mdType = MBEDTLS_MD_SHA512; cbDigest = 512 / 8; break;
@@ -600,7 +597,6 @@
     }
 
     return true;
-
 }
 /*
 void dump_output(byte* b, size_t s){
@@ -1175,6 +1171,7 @@
 
 int rand_bytes2(void * pv, unsigned char * pb, size_t cb)
 {
+	UNUSED(pv);
     rand_bytes(pb, cb);
     return 0;
 }
diff --git a/src/openssl.c b/src/openssl.c
index 229ba29..297fa33 100644
--- a/src/openssl.c
+++ b/src/openssl.c
@@ -1099,7 +1099,7 @@
 	CHECK_CONDITION(pSig != NULL, COSE_ERR_INVALID_PARAMETER);
 	cbSignature = pSig->length;
 
-	CHECK_CONDITION(cbSignature / 2 == cbR, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(cbSignature / 2 == (size_t)cbR, COSE_ERR_INVALID_PARAMETER);
 	r = BN_bin2bn(pSig->v.bytes,(int) cbSignature/2, NULL);
 	CHECK_CONDITION(NULL != r, COSE_ERR_OUT_OF_MEMORY);
 	s = BN_bin2bn(pSig->v.bytes+cbSignature/2, (int) cbSignature/2, NULL);
@@ -1197,14 +1197,10 @@
 
 bool EdDSA_Verify(COSE* pSigner, int index, const cn_cbor* pKey, const byte* rgbToSign, size_t cbToSign, cose_errback* perr)
 {
-#ifdef USE_CBOR_CONTEXT
-	cn_cbor_context* context = &pSigner->m_allocContext;
-#endif
-	cn_cbor* p = NULL;
 	cn_cbor* pSig;
 	EVP_PKEY* pkey = NULL;
 
-	p = cn_cbor_mapget_int(pKey, COSE_Key_OPK_Curve);
+	cn_cbor *p = cn_cbor_mapget_int(pKey, COSE_Key_OPK_Curve);
 	if (p == NULL) {
 	errorReturn:
 		if (pkey != NULL) EVP_PKEY_free(pkey);
diff --git a/test/context.c b/test/context.c
index dbdea88..8fc925e 100644
--- a/test/context.c
+++ b/test/context.c
@@ -29,22 +29,19 @@
 bool CheckMemory(MyContext * pContext)
 {
 	MyItem * p;
-	int i;
-
 	//  Walk memory and check every block
 
 	for (p =  (MyItem *) pContext->pFirst; p != NULL; p = p->pNext) {
 		if (p->pad[0] == (byte) 0xab) {
 			//  Block has been freed
-			for (i = 0; i < p->size + 8; i++) {
+			for (unsigned i = 0; i < p->size + 8; i++) {
 				if (p->pad[i] != (byte) 0xab) {
 					fprintf(stderr, "Freed block is modified");
 					assert(false);
 				}
 			}
-		}
-		else if (p->pad[0] == (byte) 0xef) {
-			for (i = 0; i < 4; i++) {
+		} else if (p->pad[0] == (byte) 0xef) {
+			for (unsigned i = 0; i < 4; i++) {
 				if ((p->pad[i] != (byte) 0xef) || (p->pad[i + 4 + p->size] != (byte) 0xef)) {
 					fprintf(stderr, "Curent block was overrun");
 					assert(false);
diff --git a/test/encrypt.c b/test/encrypt.c
index 14eff3e..5a569cc 100644
--- a/test/encrypt.c
+++ b/test/encrypt.c
@@ -421,12 +421,13 @@
 		if (!fAlgSupport) {
 			fFail = true;
 			fAlgSupport = false;
+		} else if ((pFail != NULL) && (pFail->type != CN_CBOR_TRUE)) {
+			fFail = true;
 		}
-		else if ((pFail != NULL) && (pFail->type != CN_CBOR_TRUE)) fFail = true;
 
-                size_t cb;
-                byte * pb;
-                pb = COSE_Encrypt_GetContent(hEnc, &cb, NULL);
+		size_t cb;
+		byte * pb;
+		pb = COSE_Encrypt_GetContent(hEnc, &cb, NULL);
 	}
 	else {
 		if (fAlgSupport) {
diff --git a/test/json.c b/test/json.c
index 9a99ecd..d3bd7bc 100644
--- a/test/json.c
+++ b/test/json.c
@@ -217,10 +217,10 @@
 
 	for (unsigned int i = 0, j = 0; i < input_length;) {
 
-		uint32_t sextet_a = data[i] == '=' ? 0 & i++ : decoding_table[(int) data[i++]];
-		uint32_t sextet_b = data[i] == '=' ? 0 & i++ : decoding_table[(int) data[i++]];
-		uint32_t sextet_c = data[i] == '=' ? 0 & i++ : decoding_table[(int) data[i++]];
-		uint32_t sextet_d = data[i] == '=' ? 0 & i++ : decoding_table[(int) data[i++]];
+		uint32_t sextet_a = data[i] == '=' ? 0 & i++ : (unsigned)decoding_table[(int) data[i++]];
+		uint32_t sextet_b = data[i] == '=' ? 0 & i++ : (unsigned)decoding_table[(int) data[i++]];
+		uint32_t sextet_c = data[i] == '=' ? 0 & i++ : (unsigned)decoding_table[(int) data[i++]];
+		uint32_t sextet_d = data[i] == '=' ? 0 & i++ : (unsigned)decoding_table[(int) data[i++]];
 
 		uint32_t triple = (sextet_a << 3 * 6)
 			+ (sextet_b << 2 * 6)
diff --git a/test/test.c b/test/test.c
index bc110f1..c6a5911 100644
--- a/test/test.c
+++ b/test/test.c
@@ -10,6 +10,7 @@
 #include <cose/cose_configure.h>
 #include <cn-cbor/cn-cbor.h>
 #include <assert.h>
+#include <cose_int.h>
 
 #ifndef _MSC_VER
 #include <dirent.h>
@@ -18,7 +19,6 @@
 #endif
 
 #include "json.h"
-
 #include "test.h"
 
 #ifdef USE_MBED_TLS
@@ -330,19 +330,23 @@
 
 bool SetAttributes(HCOSE hHandle, const cn_cbor * pAttributes, int which, int msgType, bool fPublicKey)
 {
-	const cn_cbor * pKey;
-	const cn_cbor * pValue;
-	int keyNew;
-	cn_cbor * pValueNew;
-	bool f = false;
+	int keyNew = 0;
+	cn_cbor * pValueNew = NULL;
+	bool fRet = true;
 
-	if (pAttributes == NULL) return true;
-	if (pAttributes->type != CN_CBOR_MAP) return false;
+	if (pAttributes == NULL) {
+		return true;
+	}
+	if (pAttributes->type != CN_CBOR_MAP) {
+		return false;
+	}
 
-	for (pKey = pAttributes->first_child; pKey != NULL; pKey = pKey->next->next) {
-		pValue = pKey->next;
+	for (const cn_cbor * pKey = pAttributes->first_child; pKey != NULL; pKey = pKey->next->next) {
+		const cn_cbor *  pValue = pKey->next;
 
-		if (pKey->type != CN_CBOR_TEXT) return false;
+		if (pKey->type != CN_CBOR_TEXT) {
+			return false;
+		}
 
 		if (strcmp(pKey->v.str, "alg") == 0) {
 			keyNew = COSE_Header_Algorithm;
@@ -391,57 +395,56 @@
 		switch (msgType) {
 #if INCLUDE_MAC
 		case Attributes_MAC_protected:
-			f = COSE_Mac_map_put_int((HCOSE_MAC)hHandle, keyNew, pValueNew, which, NULL);
+			fRet &= COSE_Mac_map_put_int((HCOSE_MAC)hHandle, keyNew, pValueNew, which, NULL);
 			break;
 #endif
 
 #if INCLUDE_MAC0
 		case Attributes_MAC0_protected:
-			f = COSE_Mac0_map_put_int((HCOSE_MAC0)hHandle, keyNew, pValueNew, which, NULL);
+			fRet &= COSE_Mac0_map_put_int((HCOSE_MAC0)hHandle, keyNew, pValueNew, which, NULL);
 			break;
 #endif
 
 #if INCLUDE_ENCRYPT || INCLUDE_MAC
 		case Attributes_Recipient_protected:
-			f = COSE_Recipient_map_put_int((HCOSE_RECIPIENT)hHandle, keyNew, pValueNew, which, NULL);
+			fRet &= COSE_Recipient_map_put_int((HCOSE_RECIPIENT)hHandle, keyNew, pValueNew, which, NULL);
 			break;
 #endif
 
 #if INCLUDE_ENCRYPT
 		case Attributes_Enveloped_protected:
-			f = COSE_Enveloped_map_put_int((HCOSE_ENVELOPED)hHandle, keyNew, pValueNew, which, NULL);
+			fRet &= COSE_Enveloped_map_put_int((HCOSE_ENVELOPED)hHandle, keyNew, pValueNew, which, NULL);
 			break;
 #endif
 
 #if INCLUDE_ENCRYPT0
 		case Attributes_Encrypt_protected:
-			f = COSE_Encrypt_map_put_int((HCOSE_ENCRYPT)hHandle, keyNew, pValueNew, which, NULL);
+			fRet &= COSE_Encrypt_map_put_int((HCOSE_ENCRYPT)hHandle, keyNew, pValueNew, which, NULL);
 			break;
 #endif
 
 #if INCLUDE_SIGN
 		case Attributes_Sign_protected:
-			f = COSE_Sign_map_put_int((HCOSE_SIGN)hHandle, keyNew, pValueNew, which, NULL);
+			fRet &= COSE_Sign_map_put_int((HCOSE_SIGN)hHandle, keyNew, pValueNew, which, NULL);
 			break;
 #endif
 
 #if INCLUDE_SIGN
 		case Attributes_Signer_protected:
-			f = COSE_Signer_map_put_int((HCOSE_SIGNER)hHandle, keyNew, pValueNew, which, NULL);
+			fRet &= COSE_Signer_map_put_int((HCOSE_SIGNER)hHandle, keyNew, pValueNew, which, NULL);
 			break;
 #endif
 
 #if INCLUDE_SIGN1
 		case Attributes_Sign1_protected:
-			f = COSE_Sign1_map_put_int((HCOSE_SIGN1)hHandle, keyNew, pValueNew, which, NULL);
+			fRet &= COSE_Sign1_map_put_int((HCOSE_SIGN1)hHandle, keyNew, pValueNew, which, NULL);
 			break;
 #endif
-
+		assert(fRet);
 		}
-		// assert(f);
 	}
 
-	return true;
+	return fRet;
 }
 
 bool SetSendingAttributes(HCOSE hMsg, const cn_cbor * pIn, int base)
@@ -561,7 +564,7 @@
 	cn_cbor * p;
 	cn_cbor * pKey;
 	cn_cbor * pValue;
-	int i;
+	size_t i;
 	int kty;
 	unsigned char * pb;
 	size_t cb;
@@ -589,7 +592,7 @@
 
 		if (pKey->type == CN_CBOR_TEXT) {
 			for (i = 0; i < sizeof(RgStringKeys)/sizeof(RgStringKeys[0]); i++) {
-				if ((pKey->length == strlen(RgStringKeys[i].szKey)) &&
+				if (((size_t)pKey->length == strlen(RgStringKeys[i].szKey)) &&
 					(strncmp(pKey->v.str, RgStringKeys[i].szKey, strlen(RgStringKeys[i].szKey)) == 0) &&
 					((RgStringKeys[i].kty == 0) || (RgStringKeys[i].kty == kty))) {
 					switch (RgStringKeys[i].operation) {
@@ -632,9 +635,6 @@
 }
 
 
-
-bool cn_cbor_array_replace(cn_cbor * cb_array, cn_cbor * cb_value, int index, CBOR_CONTEXT_COMMA cn_cbor_errback *errp);
-
 bool Test_cn_cbor_array_replace()
 {
 	cn_cbor * pRoot;
diff --git a/test/test.h b/test/test.h
index 8c187af..0c77899 100644
--- a/test/test.h
+++ b/test/test.h
@@ -1,9 +1,6 @@
 #pragma once
 
-#ifndef _countof
-
-#define _countof(x) (sizeof(x)/sizeof(x[0]))
-#endif
+#include <stdbool.h>
 
 #ifdef USE_CBOR_CONTEXT
 cn_cbor_context * context;
