refactor: use nullptr (#115)

* refactor: use nullptr

* ci: use cpp on travis

* chore: use cpp 11

* revert: nullptr for test files
diff --git a/.travis.yml b/.travis.yml
index 50620d5..f0b70e6 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,4 +1,4 @@
-language: c
+language: cpp
 compiler:
   - gcc
 sudo: false
diff --git a/src/Cose.cpp b/src/Cose.cpp
index 9260069..03162ee 100644
--- a/src/Cose.cpp
+++ b/src/Cose.cpp
@@ -11,7 +11,7 @@
 bool IsValidCOSEHandle(HCOSE h)
 {
 	COSE_Encrypt *p = (COSE_Encrypt *)h;
-	if (p == NULL) {
+	if (p == nullptr) {
 		return false;
 	}
 	return true;
@@ -26,7 +26,7 @@
 	;
 
 #ifdef USE_CBOR_CONTEXT
-	if (context != NULL) {
+	if (context != nullptr) {
 		pcose->m_allocContext = *context;
 	}
 #endif
@@ -39,22 +39,22 @@
 
 	pcose->m_protectedMap =
 		cn_cbor_map_create(CBOR_CONTEXT_PARAM_COMMA & errState);
-	CHECK_CONDITION_CBOR(pcose->m_protectedMap != NULL, errState);
+	CHECK_CONDITION_CBOR(pcose->m_protectedMap != nullptr, errState);
 
 	pcose->m_dontSendMap =
 		cn_cbor_map_create(CBOR_CONTEXT_PARAM_COMMA & errState);
-	CHECK_CONDITION_CBOR(pcose->m_dontSendMap != NULL, errState);
+	CHECK_CONDITION_CBOR(pcose->m_dontSendMap != nullptr, errState);
 
 	pcose->m_cborRoot = pcose->m_cbor =
 		cn_cbor_array_create(CBOR_CONTEXT_PARAM_COMMA & errState);
-	CHECK_CONDITION_CBOR(pcose->m_cbor != NULL, errState);
+	CHECK_CONDITION_CBOR(pcose->m_cbor != nullptr, errState);
 	pcose->m_ownMsg = 1;
 
 	pcose->m_msgType = msgType;
 
 	pcose->m_unprotectMap =
 		cn_cbor_map_create(CBOR_CONTEXT_PARAM_COMMA & errState);
-	CHECK_CONDITION_CBOR(pcose->m_unprotectMap != NULL, errState);
+	CHECK_CONDITION_CBOR(pcose->m_unprotectMap != nullptr, errState);
 	pcose->m_ownUnprotectedMap = true;
 	CHECK_CONDITION_CBOR(
 		_COSE_array_replace(pcose, pcose->m_unprotectMap, INDEX_UNPROTECTED,
@@ -66,7 +66,7 @@
 		cn_cbor_errback cbor_error;
 		cn_cbor *cn = cn_cbor_tag_create(
 			msgType, pcose->m_cborRoot, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-		CHECK_CONDITION_CBOR(cn != NULL, cbor_error);
+		CHECK_CONDITION_CBOR(cn != nullptr, cbor_error);
 		pcose->m_cborRoot = cn;
 	}
 
@@ -82,7 +82,7 @@
 	cn_cbor *pcbor,
 	CBOR_CONTEXT_COMMA cose_errback *perr)
 {
-	const cn_cbor *pmap = NULL;
+	const cn_cbor *pmap = nullptr;
 	cn_cbor_errback errState;  // = { 0 };
 	cn_cbor_errback cbor_error;
 
@@ -92,7 +92,7 @@
 	}
 
 #ifdef USE_CBOR_CONTEXT
-	if (context != NULL) {
+	if (context != nullptr) {
 		pobj->m_allocContext = *context;
 	}
 #endif
@@ -106,38 +106,38 @@
 
 	pmap = _COSE_arrayget_int(pobj, INDEX_PROTECTED);
 
-	CHECK_CONDITION(pmap != NULL, COSE_ERR_INVALID_PARAMETER);
-	if (pmap != NULL) {
+	CHECK_CONDITION(pmap != nullptr, COSE_ERR_INVALID_PARAMETER);
+	if (pmap != nullptr) {
 		CHECK_CONDITION(
 			pmap->type == CN_CBOR_BYTES, COSE_ERR_INVALID_PARAMETER);
 
 		if (pmap->length == 0) {
 			pobj->m_protectedMap =
-				cn_cbor_map_create(CBOR_CONTEXT_PARAM_COMMA NULL);
+				cn_cbor_map_create(CBOR_CONTEXT_PARAM_COMMA nullptr);
 			CHECK_CONDITION(pobj->m_protectedMap, COSE_ERR_OUT_OF_MEMORY);
 		}
 		else {
 			pobj->m_protectedMap = cn_cbor_decode((const byte *)pmap->v.str,
 				pmap->length, CBOR_CONTEXT_PARAM_COMMA & errState);
 			CHECK_CONDITION(
-				pobj->m_protectedMap != NULL, COSE_ERR_INVALID_PARAMETER);
+				pobj->m_protectedMap != nullptr, COSE_ERR_INVALID_PARAMETER);
 		}
 	}
 
 	pobj->m_unprotectMap = _COSE_arrayget_int(pobj, INDEX_UNPROTECTED);
-	CHECK_CONDITION((pobj->m_unprotectMap != NULL) &&
+	CHECK_CONDITION((pobj->m_unprotectMap != nullptr) &&
 						(pobj->m_unprotectMap->type == CN_CBOR_MAP),
 		COSE_ERR_INVALID_PARAMETER);
 	pobj->m_ownUnprotectedMap = false;
 
 	pobj->m_dontSendMap =
 		cn_cbor_map_create(CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(pobj->m_dontSendMap != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(pobj->m_dontSendMap != nullptr, cbor_error);
 
 #if INCLUDE_COUNTERSIGNATURE
 	cn_cbor *pCounter =
 		cn_cbor_mapget_int(pobj->m_unprotectMap, COSE_Header_CounterSign);
-	if (pCounter != NULL) {
+	if (pCounter != nullptr) {
 		CHECK_CONDITION(
 			pCounter->type == CN_CBOR_ARRAY, COSE_ERR_INVALID_PARAMETER);
 		CHECK_CONDITION(pCounter->length > 0, COSE_ERR_INVALID_PARAMETER);
@@ -145,14 +145,14 @@
 			cn_cbor *pSig = pCounter->first_child;
 			for (size_t i = 0; i < pCounter->length; i++, pSig = pSig->next) {
 				COSE_CounterSign *cs = _COSE_CounterSign_Init_From_Object(
-					pSig, NULL, CBOR_CONTEXT_PARAM_COMMA perr);
+					pSig, nullptr, CBOR_CONTEXT_PARAM_COMMA perr);
 				cs->m_next = pobj->m_counterSigners;
 				pobj->m_counterSigners = cs;
 			}
 		}
 		else {
 			COSE_CounterSign *cs = _COSE_CounterSign_Init_From_Object(
-				pCounter, NULL, CBOR_CONTEXT_PARAM_COMMA perr);
+				pCounter, nullptr, CBOR_CONTEXT_PARAM_COMMA perr);
 			pobj->m_counterSigners = cs;
 		}
 	}
@@ -171,26 +171,26 @@
 	cn_cbor_context *context = &pcose->m_allocContext;
 #endif
 
-	if (pcose->m_protectedMap != NULL) {
+	if (pcose->m_protectedMap != nullptr) {
 		CN_CBOR_FREE(pcose->m_protectedMap, context);
 	}
-	if (pcose->m_ownUnprotectedMap && (pcose->m_unprotectMap != NULL)) {
+	if (pcose->m_ownUnprotectedMap && (pcose->m_unprotectMap != nullptr)) {
 		CN_CBOR_FREE(pcose->m_unprotectMap, context);
 	}
-	if (pcose->m_dontSendMap != NULL) {
+	if (pcose->m_dontSendMap != nullptr) {
 		CN_CBOR_FREE(pcose->m_dontSendMap, context);
 	}
-	if (pcose->m_ownMsg && (pcose->m_cborRoot != NULL) &&
-		(pcose->m_cborRoot->parent == NULL)) {
+	if (pcose->m_ownMsg && (pcose->m_cborRoot != nullptr) &&
+		(pcose->m_cborRoot->parent == nullptr)) {
 		CN_CBOR_FREE(pcose->m_cborRoot, context);
 	}
 
 #if INCLUDE_COUNTERSIGNATURE
-	if (pcose->m_counterSigners != NULL) {
+	if (pcose->m_counterSigners != nullptr) {
 		COSE_CounterSign *p = pcose->m_counterSigners;
-		COSE_CounterSign *p2 = NULL;
+		COSE_CounterSign *p2 = nullptr;
 
-		while (p != NULL) {
+		while (p != nullptr) {
 			p2 = p->m_next;
 			COSE_CounterSign_Free((HCOSE_COUNTERSIGN)p);
 			p = p2;
@@ -205,7 +205,7 @@
 	COSE_object_type struct_type,
 	CBOR_CONTEXT_COMMA cose_errback *perr)
 {
-	cn_cbor *cbor = NULL;
+	cn_cbor *cbor = nullptr;
 	cn_cbor_errback cbor_err;
 	HCOSE h;
 
@@ -213,15 +213,15 @@
 	errorReturn:
 		// M00TODO - break up the init and allocation below for memory tests.
 		CN_CBOR_FREE(cbor, context);
-		return NULL;	
+		return nullptr;	
 	}
 	
 	CHECK_CONDITION(
-		(rgbData != NULL) && (ptype != NULL), COSE_ERR_INVALID_PARAMETER);
+		(rgbData != nullptr) && (ptype != nullptr), COSE_ERR_INVALID_PARAMETER);
 
 	cbor = 
 		cn_cbor_decode(rgbData, cbData, CBOR_CONTEXT_PARAM_COMMA & cbor_err);
-	CHECK_CONDITION_CBOR(cbor != NULL, cbor_err);
+	CHECK_CONDITION_CBOR(cbor != nullptr, cbor_err);
 
 	if (cbor->type == CN_CBOR_TAG) {
 		if (struct_type != 0) {
@@ -235,9 +235,9 @@
 
 		cn_cbor *ptag = cbor;
 		cbor = ptag->first_child;
-		ptag->first_child = NULL;
-		ptag->last_child = NULL;
-		cbor->parent = NULL;
+		ptag->first_child = nullptr;
+		ptag->last_child = nullptr;
+		cbor->parent = nullptr;
 		CN_CBOR_FREE(ptag, context);
 	}
 	else {
@@ -247,13 +247,13 @@
 	CHECK_CONDITION(cbor->type == CN_CBOR_ARRAY, COSE_ERR_INVALID_PARAMETER);
 
 	cn_cbor *cbor2 = cbor;
-	cbor = NULL;
+	cbor = nullptr;
 	switch (*ptype) {
 		case COSE_enveloped_object:
 #if INCLUDE_ENCRYPT
 			h = (HCOSE)_COSE_Enveloped_Init_From_Object(
-				cbor2, NULL, CBOR_CONTEXT_PARAM_COMMA perr);
-			if (h == NULL) {
+				cbor2, nullptr, CBOR_CONTEXT_PARAM_COMMA perr);
+			if (h == nullptr) {
 				goto errorReturn;
 			}
 #else
@@ -264,8 +264,8 @@
 		case COSE_sign_object:
 #if INCLUDE_SIGN
 			h = (HCOSE)_COSE_Sign_Init_From_Object(
-				cbor2, NULL, CBOR_CONTEXT_PARAM_COMMA perr);
-			if (h == NULL) {
+				cbor2, nullptr, CBOR_CONTEXT_PARAM_COMMA perr);
+			if (h == nullptr) {
 				goto errorReturn;
 			}
 #else
@@ -276,8 +276,8 @@
 		case COSE_sign1_object:
 #if INCLUDE_SIGN1
 			h = (HCOSE)_COSE_Sign1_Init_From_Object(
-				cbor2, NULL, CBOR_CONTEXT_PARAM_COMMA perr);
-			if (h == NULL) {
+				cbor2, nullptr, CBOR_CONTEXT_PARAM_COMMA perr);
+			if (h == nullptr) {
 				goto errorReturn;
 			}
 #else
@@ -288,8 +288,8 @@
 		case COSE_mac_object:
 #if INCLUDE_MAC
 			h = (HCOSE)_COSE_Mac_Init_From_Object(
-				cbor2, NULL, CBOR_CONTEXT_PARAM_COMMA perr);
-			if (h == NULL) {
+				cbor2, nullptr, CBOR_CONTEXT_PARAM_COMMA perr);
+			if (h == nullptr) {
 				goto errorReturn;
 			}
 #else
@@ -300,8 +300,8 @@
 		case COSE_mac0_object:
 #if INCLUDE_MAC0
 			h = (HCOSE)_COSE_Mac0_Init_From_Object(
-				cbor2, NULL, CBOR_CONTEXT_PARAM_COMMA perr);
-			if (h == NULL) {
+				cbor2, nullptr, CBOR_CONTEXT_PARAM_COMMA perr);
+			if (h == nullptr) {
 				goto errorReturn;
 			}
 #else
@@ -312,8 +312,8 @@
 		case COSE_encrypt_object:
 #if INCLUDE_ENCRYPT0
 			h = (HCOSE)_COSE_Encrypt_Init_From_Object(
-				cbor2, NULL, CBOR_CONTEXT_PARAM_COMMA perr);
-			if (h == NULL) {
+				cbor2, nullptr, CBOR_CONTEXT_PARAM_COMMA perr);
+			if (h == nullptr) {
 				goto errorReturn;
 			}
 #else
@@ -331,7 +331,7 @@
 
 size_t COSE_Encode(HCOSE msg, byte *rgb, size_t ib, size_t cb)
 {
-	if (rgb == NULL) {
+	if (rgb == nullptr) {
 		return cn_cbor_encode_size(((COSE *)msg)->m_cbor) + ib;
 	}
 	ssize_t size = cn_cbor_encoder_write(rgb, ib, cb, ((COSE *)msg)->m_cbor);
@@ -342,7 +342,7 @@
 {
 	COSE *msg = (COSE *)h;
 	if (!IsValidCOSEHandle(h)) {
-		return NULL;
+		return nullptr;
 	}
 
 	return msg->m_cbor;
@@ -362,32 +362,32 @@
 
 cn_cbor *_COSE_map_get_int(COSE *cose, int key, int flags, cose_errback *perr)
 {
-	cn_cbor *p = NULL;
+	cn_cbor *p = nullptr;
 
-	if (perr != NULL) {
+	if (perr != nullptr) {
 		perr->err = COSE_ERR_NONE;
 	}
 
-	if ((cose->m_protectedMap != NULL) && ((flags & COSE_PROTECT_ONLY) != 0)) {
+	if ((cose->m_protectedMap != nullptr) && ((flags & COSE_PROTECT_ONLY) != 0)) {
 		p = cn_cbor_mapget_int(cose->m_protectedMap, key);
-		if (p != NULL) {
+		if (p != nullptr) {
 			return p;
 		}
 	}
 
-	if ((cose->m_unprotectMap != NULL) &&
+	if ((cose->m_unprotectMap != nullptr) &&
 		((flags & COSE_UNPROTECT_ONLY) != 0)) {
 		p = cn_cbor_mapget_int(cose->m_unprotectMap, key);
-		if (p != NULL) {
+		if (p != nullptr) {
 			return p;
 		}
 	}
 
-	if ((cose->m_dontSendMap != NULL) && ((flags & COSE_DONT_SEND) != 0)) {
+	if ((cose->m_dontSendMap != nullptr) && ((flags & COSE_DONT_SEND) != 0)) {
 		p = cn_cbor_mapget_int(cose->m_dontSendMap, key);
 	}
 
-	if ((p == NULL) && (perr != NULL)) {
+	if ((p == nullptr) && (perr != nullptr)) {
 		perr->err = COSE_ERR_INVALID_PARAMETER;
 	}
 
@@ -399,25 +399,25 @@
 	int flags,
 	cose_errback *perror)
 {
-	cn_cbor *p = NULL;
+	cn_cbor *p = nullptr;
 
-	if (perror != NULL) {
+	if (perror != nullptr) {
 		perror->err = COSE_ERR_NONE;
 	}
 
-	if ((pcose->m_protectedMap != NULL) && ((flags & COSE_PROTECT_ONLY) != 0)) {
+	if ((pcose->m_protectedMap != nullptr) && ((flags & COSE_PROTECT_ONLY) != 0)) {
 		p = cn_cbor_mapget_string(pcose->m_protectedMap, key);
-		if (p != NULL) {
+		if (p != nullptr) {
 			return p;
 		}
 	}
 
-	if ((pcose->m_unprotectMap != NULL) &&
+	if ((pcose->m_unprotectMap != nullptr) &&
 		((flags & COSE_UNPROTECT_ONLY) != 0)) {
 		p = cn_cbor_mapget_string(pcose->m_unprotectMap, key);
 	}
 
-	if ((pcose->m_dontSendMap != NULL) && ((flags & COSE_DONT_SEND) != 0)) {
+	if ((pcose->m_dontSendMap != nullptr) && ((flags & COSE_DONT_SEND) != 0)) {
 		p = cn_cbor_mapget_string(pcose->m_dontSendMap, key);
 	}
 
@@ -435,13 +435,13 @@
 #endif
 	cn_cbor_errback error;
 	bool f = false;
-	CHECK_CONDITION(value != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(value != nullptr, COSE_ERR_INVALID_PARAMETER);
 
-	CHECK_CONDITION(cn_cbor_mapget_int(cose->m_protectedMap, key) == NULL,
+	CHECK_CONDITION(cn_cbor_mapget_int(cose->m_protectedMap, key) == nullptr,
 		COSE_ERR_INVALID_PARAMETER);
-	CHECK_CONDITION(cn_cbor_mapget_int(cose->m_unprotectMap, key) == NULL,
+	CHECK_CONDITION(cn_cbor_mapget_int(cose->m_unprotectMap, key) == nullptr,
 		COSE_ERR_INVALID_PARAMETER);
-	CHECK_CONDITION(cn_cbor_mapget_int(cose->m_dontSendMap, key) == NULL,
+	CHECK_CONDITION(cn_cbor_mapget_int(cose->m_dontSendMap, key) == nullptr,
 		COSE_ERR_INVALID_PARAMETER);
 
 	switch (flags) {
@@ -475,15 +475,15 @@
 {
 	cn_cbor *pProtected;
 	int cbProtected;
-	byte *pbProtected = NULL;
+	byte *pbProtected = nullptr;
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context = &pMessage->m_allocContext;
 #endif	// USE_CBOR_CONTEXT
 
 	pProtected = cn_cbor_index(pMessage->m_cbor, INDEX_PROTECTED);
-	if ((pProtected != NULL) && (pProtected->type != CN_CBOR_INVALID)) {
+	if ((pProtected != nullptr) && (pProtected->type != CN_CBOR_INVALID)) {
 	errorReturn:
-		if (pbProtected != NULL) {
+		if (pbProtected != nullptr) {
 			COSE_FREE(pbProtected, context);
 		}
 		return pProtected;
@@ -492,7 +492,7 @@
 	if (pMessage->m_protectedMap->length > 0) {
 		cbProtected = cn_cbor_encode_size(pMessage->m_protectedMap);
 		pbProtected = (byte *)COSE_CALLOC(cbProtected, 1, context);
-		CHECK_CONDITION(pbProtected != NULL, COSE_ERR_OUT_OF_MEMORY);
+		CHECK_CONDITION(pbProtected != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 		CHECK_CONDITION(cn_cbor_encoder_write(pbProtected, 0, cbProtected,
 							pMessage->m_protectedMap) == cbProtected,
@@ -503,12 +503,12 @@
 	}
 
 	pProtected = cn_cbor_data_create2(
-		pbProtected, cbProtected, 0, CBOR_CONTEXT_PARAM_COMMA NULL);
-	CHECK_CONDITION(pProtected != NULL, COSE_ERR_OUT_OF_MEMORY);
-	pbProtected = NULL;
+		pbProtected, cbProtected, 0, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	CHECK_CONDITION(pProtected != nullptr, COSE_ERR_OUT_OF_MEMORY);
+	pbProtected = nullptr;
 
 	CHECK_CONDITION(_COSE_array_replace(pMessage, pProtected, INDEX_PROTECTED,
-						CBOR_CONTEXT_PARAM_COMMA NULL),
+						CBOR_CONTEXT_PARAM_COMMA nullptr),
 		COSE_ERR_CBOR);
 
 	return pProtected;
@@ -544,7 +544,7 @@
 
 void _COSE_InsertInList(COSE **rootNode, COSE *newMsg)
 {
-	if (*rootNode == NULL) {
+	if (*rootNode == nullptr) {
 		*rootNode = newMsg;
 		return;
 	}
@@ -555,14 +555,14 @@
 
 bool _COSE_IsInList(const COSE *const rootNode, const COSE *const thisMsg)
 {
-	if (rootNode == NULL) {
+	if (rootNode == nullptr) {
 		return false;
 	}
-	if (thisMsg == NULL) {
+	if (thisMsg == nullptr) {
 		return false;
 	}
 
-	for (const COSE *walk = rootNode; walk != NULL; walk = walk->m_handleList) {
+	for (const COSE *walk = rootNode; walk != nullptr; walk = walk->m_handleList) {
 		if (walk == thisMsg) {
 			return true;
 		}
@@ -574,15 +574,15 @@
 {
 	if (*rootNode == thisMsg) {
 		*rootNode = thisMsg->m_handleList;
-		thisMsg->m_handleList = NULL;
+		thisMsg->m_handleList = nullptr;
 		return;
 	}
 
-	for (COSE *walk = *rootNode; walk->m_handleList != NULL;
+	for (COSE *walk = *rootNode; walk->m_handleList != nullptr;
 		 walk = walk->m_handleList) {
 		if (walk->m_handleList == thisMsg) {
 			walk->m_handleList = thisMsg->m_handleList;
-			thisMsg->m_handleList = NULL;
+			thisMsg->m_handleList = nullptr;
 			return;
 		}
 	}
@@ -619,28 +619,28 @@
 {
 	bool fRet = true;
 #if INCLUDE_COUNTERSIGNATURE
-	fRet &= CountersignRoot == NULL;
+	fRet &= CountersignRoot == nullptr;
 #endif
 #if INCLUDE_SIGN
-	fRet &= SignerRoot == NULL && SignRoot == NULL;
+	fRet &= SignerRoot == nullptr && SignRoot == nullptr;
 #endif
 #if INCLUDE_SIGN1
-	fRet &= Sign1Root == NULL;
+	fRet &= Sign1Root == nullptr;
 #endif
 #if INCLUDE_ENCRYPT0
-	fRet &= EncryptRoot == NULL;
+	fRet &= EncryptRoot == nullptr;
 #endif
 #if INCLUDE_ENCRYPT
-	fRet &= EnvelopedRoot == NULL;
+	fRet &= EnvelopedRoot == nullptr;
 #endif
 #if INCLUDE_ENCRYPT || INCLUDE_MAC
-	fRet &= RecipientRoot == NULL;
+	fRet &= RecipientRoot == nullptr;
 #endif
 #if INCLUDE_MAC
-	fRet &= MacRoot == NULL;
+	fRet &= MacRoot == nullptr;
 #endif
 #if INCLUDE_MAC0
-	fRet &= Mac0Root == NULL;
+	fRet &= Mac0Root == nullptr;
 #endif
 	return fRet;
 }
diff --git a/src/CoseKey.cpp b/src/CoseKey.cpp
index 9a101b5..d22a84e 100644
--- a/src/CoseKey.cpp
+++ b/src/CoseKey.cpp
@@ -5,7 +5,7 @@
 #include "cose_int.h"
 #include "cose_crypto.h"
 
-COSE_KEY *KeysRoot = NULL;
+COSE_KEY *KeysRoot = nullptr;
 
 /*! \private
  * @brief Test if a HCOSE_ENVELOPED handle is valid
@@ -24,14 +24,14 @@
 bool IsValidKeyHandle(HCOSE_KEY h)
 {
 	COSE_KEY *p = (COSE_KEY*)h;
-	if (KeysRoot == NULL) {
+	if (KeysRoot == nullptr) {
 		return false;
 	}
-	if (p == NULL) {
+	if (p == nullptr) {
 		return false;
 	}
 
-	for (const COSE_KEY *walk = KeysRoot; walk != NULL; walk = walk->m_nextKey) {
+	for (const COSE_KEY *walk = KeysRoot; walk != nullptr; walk = walk->m_nextKey) {
 		if (walk == p) {
 			return true;
 		}
@@ -42,19 +42,19 @@
 HCOSE_KEY COSE_KEY_FromCbor(cn_cbor *pcborKey,
 	CBOR_CONTEXT_COMMA cose_errback *perror)
 {
-	COSE_KEY *pkey = NULL;
+	COSE_KEY *pkey = nullptr;
 
 	pkey = (COSE_KEY *)COSE_CALLOC(1, sizeof(COSE_KEY), context);
 
-	if (pkey == NULL) {
-		if (perror != NULL) {
+	if (pkey == nullptr) {
+		if (perror != nullptr) {
 			perror->err = COSE_ERR_OUT_OF_MEMORY;
 		}
-		return NULL;
+		return nullptr;
 	}
 
 #ifdef USE_CBOR_CONTEXT
-	if (context != NULL) {
+	if (context != nullptr) {
 		pkey->m_allocContext = *context;
 	}
 #endif
@@ -82,14 +82,14 @@
 	
 	if (KeysRoot == p) {
 		KeysRoot = p->m_nextKey;
-		p->m_nextKey = NULL;;
+		p->m_nextKey = nullptr;;
 	}
 	else {
-		for (COSE_KEY *walk = KeysRoot; walk->m_nextKey != NULL;
+		for (COSE_KEY *walk = KeysRoot; walk->m_nextKey != nullptr;
 			 walk = walk->m_nextKey) {
 			if (walk->m_nextKey == p) {
 				walk->m_nextKey = p->m_nextKey;
-				p->m_nextKey = NULL;
+				p->m_nextKey = nullptr;
 				break;
 			}
 		}
@@ -103,17 +103,17 @@
 #if defined(COSE_C_USE_OPENSSL) && (OPENSSL_VERSION_NUMBER > 0x10100000L)
 HCOSE_KEY COSE_KEY_FromEVP(EVP_PKEY * opensslKey, cn_cbor * pcborKey, CBOR_CONTEXT_COMMA cose_errback* perror)
 {
-	COSE_KEY *pkey = NULL;
+	COSE_KEY *pkey = nullptr;
 
 	pkey = (COSE_KEY *)COSE_CALLOC(1, sizeof(COSE_KEY), context);
 
-	if (pkey == NULL) {
+	if (pkey == nullptr) {
 		perror->err = COSE_ERR_OUT_OF_MEMORY;
-		return NULL;
+		return nullptr;
 	}
 
 #ifdef USE_CBOR_CONTEXT
-	if (context != NULL) {
+	if (context != nullptr) {
 		pkey->m_allocContext = *context;
 	}
 #endif
diff --git a/src/CounterSign.cpp b/src/CounterSign.cpp
index 4698fad..6b329c6 100644
--- a/src/CounterSign.cpp
+++ b/src/CounterSign.cpp
@@ -10,7 +10,7 @@
 
 #if INCLUDE_COUNTERSIGNATURE
 
-COSE* CountersignRoot = NULL;
+COSE* CountersignRoot = nullptr;
 
 bool IsValidCounterSignHandle(HCOSE_COUNTERSIGN h)
 {
@@ -39,37 +39,37 @@
 	COSE_CounterSign* pobj = pIn;
 
 	cose_errback error = {COSE_ERR_NONE};
-	if (perr == NULL) {
+	if (perr == nullptr) {
 		perr = &error;
 	}
 
-	if (pobj == NULL) {
+	if (pobj == nullptr) {
 		pobj = (COSE_CounterSign*)COSE_CALLOC(
 			1, sizeof(COSE_CounterSign), context);
-		CHECK_CONDITION(pobj != NULL, COSE_ERR_OUT_OF_MEMORY);
+		CHECK_CONDITION(pobj != nullptr, COSE_ERR_OUT_OF_MEMORY);
 	}
 
 	CHECK_CONDITION(cbor->type == CN_CBOR_ARRAY, COSE_ERR_INVALID_PARAMETER);
 	if (!_COSE_SignerInfo_Init_From_Object(
 			cbor, &pobj->m_signer, CBOR_CONTEXT_PARAM_COMMA perr)) {
 		_COSE_SignerInfo_Release(&pobj->m_signer);
-		if (pIn == NULL) {
+		if (pIn == nullptr) {
 			COSE_FREE(pobj, context);
 		}
-		return NULL;
+		return nullptr;
 	}
 
-	if (pIn == NULL) {
+	if (pIn == nullptr) {
 		_COSE_InsertInList(&CountersignRoot, &pobj->m_signer.m_message);
 	}
 
 	return pobj;
 
 errorReturn:
-	if (pobj != NULL) {
+	if (pobj != nullptr) {
 		_COSE_CounterSign_Free(pobj);
 	}
-	return NULL;
+	return nullptr;
 }
 
 bool _COSE_CounterSign_Init(COSE_CounterSign* pobject,
@@ -84,16 +84,16 @@
 {
 	COSE_CounterSign* pobject =
 		(COSE_CounterSign*)COSE_CALLOC(1, sizeof(COSE_CounterSign), context);
-	if (pobject == NULL) {
-		if (perror != NULL) {
+	if (pobject == nullptr) {
+		if (perror != nullptr) {
 			perror->err = COSE_ERR_OUT_OF_MEMORY;
 		}
-		return NULL;
+		return nullptr;
 	}
 
 	if (!_COSE_CounterSign_Init(pobject, CBOR_CONTEXT_PARAM_COMMA perror)) {
 		_COSE_CounterSign_Free(pobject);
-		return NULL;
+		return nullptr;
 	}
 
 	_COSE_InsertInList(&CountersignRoot, &pobject->m_signer.m_message);
@@ -131,7 +131,7 @@
 	COSE_CounterSign* pSigner = (COSE_CounterSign*)hSigner;
 
 	CHECK_CONDITION(IsValidCounterSignHandle(hSigner), COSE_ERR_INVALID_HANDLE);
-	CHECK_CONDITION(pSigner->m_next == NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(pSigner->m_next == nullptr, COSE_ERR_INVALID_PARAMETER);
 
 	pSigner->m_next = pMessage->m_counterSigners;
 	pMessage->m_counterSigners = pSigner;
@@ -155,46 +155,46 @@
 	cn_cbor* pcnBody,
 	CBOR_CONTEXT_COMMA cose_errback* perr)
 {
-	cn_cbor* pArray = NULL;
+	cn_cbor* pArray = nullptr;
 	cn_cbor_errback cbor_err;
-	COSE_CounterSign* pSigner = NULL;
-	cn_cbor* pcnProtected = NULL;
-	cn_cbor* pcn = NULL;
-	cn_cbor* pcn2 = NULL;
+	COSE_CounterSign* pSigner = nullptr;
+	cn_cbor* pcnProtected = nullptr;
+	cn_cbor* pcn = nullptr;
+	cn_cbor* pcn2 = nullptr;
 
-	if (pMessage->m_counterSigners == NULL) {
+	if (pMessage->m_counterSigners == nullptr) {
 		return true;
 	}
 
 	//  One or more than one?
-	if (pMessage->m_counterSigners->m_signer.m_signerNext != NULL) {
+	if (pMessage->m_counterSigners->m_signer.m_signerNext != nullptr) {
 		pArray = cn_cbor_array_create(CBOR_CONTEXT_PARAM_COMMA & cbor_err);
-		CHECK_CONDITION_CBOR(pArray != NULL, cbor_err);
+		CHECK_CONDITION_CBOR(pArray != nullptr, cbor_err);
 	}
 
 	pcnProtected = _COSE_arrayget_int(pMessage, INDEX_PROTECTED);
-	CHECK_CONDITION(pcnProtected != NULL, COSE_ERR_INTERNAL);
+	CHECK_CONDITION(pcnProtected != nullptr, COSE_ERR_INTERNAL);
 
-	for (pSigner = pMessage->m_counterSigners; pSigner != NULL;
+	for (pSigner = pMessage->m_counterSigners; pSigner != nullptr;
 		 pSigner = pSigner->m_next) {
 		CHECK_CONDITION(
-			pSigner->m_signer.m_signerNext == NULL, COSE_ERR_INTERNAL);
+			pSigner->m_signer.m_signerNext == nullptr, COSE_ERR_INTERNAL);
 
 		pcn = cn_cbor_data_create(pcnProtected->v.bytes, pcnProtected->length,
 			CBOR_CONTEXT_PARAM_COMMA & cbor_err);
-		CHECK_CONDITION_CBOR(pcnProtected != NULL, cbor_err);
+		CHECK_CONDITION_CBOR(pcnProtected != nullptr, cbor_err);
 
 		pcn2 = cn_cbor_clone(pcnBody, CBOR_CONTEXT_PARAM_COMMA & cbor_err);
-		CHECK_CONDITION_CBOR(pcnBody != NULL, cbor_err);
+		CHECK_CONDITION_CBOR(pcnBody != nullptr, cbor_err);
 
 		if (!_COSE_Signer_sign(
 				&pSigner->m_signer, pcnBody, pcn2, "CounterSignature", perr)) {
 			goto errorReturn;
 		}
-		pcn = NULL;
-		pcn2 = NULL;
+		pcn = nullptr;
+		pcn2 = nullptr;
 
-		if (pArray != NULL) {
+		if (pArray != nullptr) {
 			bool f = cn_cbor_array_append(
 				pArray, pSigner->m_signer.m_message.m_cborRoot, &cbor_err);
 			CHECK_CONDITION_CBOR(f, cbor_err);
@@ -212,13 +212,13 @@
 	return true;
 
 errorReturn:
-	if (pArray != NULL) {
+	if (pArray != nullptr) {
 		CN_CBOR_FREE(pArray, context);
 	}
-	if ((pcn != NULL) && (pcn->parent != NULL)) {
+	if ((pcn != nullptr) && (pcn->parent != nullptr)) {
 		CN_CBOR_FREE(pcn, context);
 	}
-	if ((pcn2 != NULL) && (pcn2->parent != NULL)) {
+	if ((pcn2 != nullptr) && (pcn2->parent != nullptr)) {
 		CN_CBOR_FREE(pcn2, context);
 	}
 	return false;
@@ -230,19 +230,19 @@
 	cose_errback* perr)
 {
 	bool fRet = false;
-	HCOSE_KEY coseKey = NULL;
+	HCOSE_KEY coseKey = nullptr;
 #ifdef USE_CBOR_CONTEXT
-	cn_cbor_context* context = NULL;
+	cn_cbor_context* context = nullptr;
 #endif
 	
-	CHECK_CONDITION(pkey != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(pkey != nullptr, COSE_ERR_INVALID_PARAMETER);
 	coseKey = COSE_KEY_FromCbor((cn_cbor*) pkey, CBOR_CONTEXT_PARAM_COMMA perr);
-	CHECK_CONDITION(coseKey != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(coseKey != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	fRet = COSE_CounterSign_SetKey2(h, coseKey, perr);
 
 errorReturn:
-	if (coseKey != NULL) {
+	if (coseKey != nullptr) {
 		COSE_KEY_Free(coseKey);
 	}
 	return fRet;
@@ -257,12 +257,12 @@
 	CHECK_CONDITION(IsValidCounterSignHandle(hSigner), COSE_ERR_INVALID_HANDLE);
 	CHECK_CONDITION(IsValidKeyHandle(hKey), COSE_ERR_INVALID_HANDLE);
 	
-	if (pSigner->m_signer.m_pkey != NULL) {
+	if (pSigner->m_signer.m_pkey != nullptr) {
 		COSE_KEY_Free((HCOSE_KEY) pSigner->m_signer.m_pkey);
 	}
 	
 	pSigner->m_signer.m_pkey = pKey;
-	if (hKey != NULL) {
+	if (hKey != nullptr) {
 		pKey->m_refCount += 1;
 	}
 	fRet = true;
@@ -277,11 +277,11 @@
 {
 	COSE_CounterSign* pCounterSign = pMessage->m_counterSigners;
 	CHECK_CONDITION(
-		pMessage->m_counterSigners != NULL, COSE_ERR_INVALID_PARAMETER);
+		pMessage->m_counterSigners != nullptr, COSE_ERR_INVALID_PARAMETER);
 
 	for (int i = 0; i < index; i++) {
 		pCounterSign = pCounterSign->m_next;
-		CHECK_CONDITION(pCounterSign != NULL, COSE_ERR_INVALID_PARAMETER);
+		CHECK_CONDITION(pCounterSign != nullptr, COSE_ERR_INVALID_PARAMETER);
 	}
 
 	pCounterSign->m_signer.m_message.m_refCount += 1;
@@ -289,7 +289,7 @@
 	return pCounterSign;
 
 errorReturn:
-	return NULL;
+	return nullptr;
 }
 
 bool COSE_CounterSign_map_put_int(HCOSE_COUNTERSIGN h,
@@ -299,7 +299,7 @@
 	cose_errback* perr)
 {
 	CHECK_CONDITION(IsValidCounterSignHandle(h), COSE_ERR_INVALID_HANDLE);
-	CHECK_CONDITION(value != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(value != nullptr, COSE_ERR_INVALID_PARAMETER);
 
 	return _COSE_map_put(
 		&((COSE_CounterSign*)h)->m_signer.m_message, key, value, flags, perr);
@@ -330,7 +330,7 @@
 	cose_errback* perr)
 {
 	if (!IsValidCounterSignHandle(hcose)) {
-		if (perr != NULL) {
+		if (perr != nullptr) {
 			perr->err = COSE_ERR_INVALID_HANDLE;
 		}
 		return false;
@@ -344,16 +344,16 @@
 	CBOR_CONTEXT_COMMA cose_errback* perr)
 {
 	bool fRet = false;
-	cn_cbor* pcborProtectedSign = NULL;
+	cn_cbor* pcborProtectedSign = nullptr;
 
 	cn_cbor* pSignature = _COSE_arrayget_int(baseMessage, INDEX_SIGNATURE);
 	int count = 0;
 
 	COSE_CounterSign* pCountersign = baseMessage->m_counterSigners;
-	for (; pCountersign != NULL;
+	for (; pCountersign != nullptr;
 		 pCountersign = pCountersign->m_next, count += 1) {
 		pcborProtectedSign = _COSE_encode_protected(baseMessage, perr);
-		if (pcborProtectedSign == NULL) {
+		if (pcborProtectedSign == nullptr) {
 			goto errorReturn;
 		}
 		if (!_COSE_Signer_sign(&pCountersign->m_signer, pSignature,
@@ -374,7 +374,7 @@
 			cn_cbor_array_create(CBOR_CONTEXT_PARAM_COMMA & cn_error);
 		CHECK_CONDITION_CBOR(cn_counterSign, cn_error);
 
-		for (pCountersign = baseMessage->m_counterSigners; pCountersign != NULL;
+		for (pCountersign = baseMessage->m_counterSigners; pCountersign != nullptr;
 			 pCountersign = pCountersign->m_next) {
 			cn_cbor* cn = COSE_get_cbor((HCOSE)pCountersign);
 			CHECK_CONDITION_CBOR(
@@ -399,7 +399,7 @@
  * @param[in]    key	Key to look for
  * @param[in]	flags	What buckets should we look for the message
  * @param[out]	perror	Location to return error codes
- * @return	Object which is found or NULL
+ * @return	Object which is found or nullptr
  */
 
 cn_cbor* COSE_CounterSign_map_get_int(HCOSE_COUNTERSIGN h,
@@ -408,10 +408,10 @@
 	cose_errback* perror)
 {
 	if (!IsValidCounterSignHandle(h)) {
-		if (perror != NULL) {
+		if (perror != nullptr) {
 			perror->err = COSE_ERR_INVALID_HANDLE;
 		}
-		return NULL;
+		return nullptr;
 	}
 
 	return _COSE_map_get_int(
@@ -439,14 +439,14 @@
 	return hCountersign;
 
 errorReturn:
-	return NULL;
+	return nullptr;
 }
 
 HCOSE_COUNTERSIGN COSE_Signer_get_countersignature(HCOSE_SIGNER hSigner,
 	int index,
 	cose_errback* perr)
 {
-	COSE_CounterSign* p = NULL;
+	COSE_CounterSign* p = nullptr;
 
 	CHECK_CONDITION(IsValidSignerHandle(hSigner), COSE_ERR_INVALID_HANDLE);
 
@@ -475,12 +475,12 @@
 
 	const cn_cbor* cnContent =
 		_COSE_arrayget_int(&pSigner->m_message, INDEX_BODY);
-	CHECK_CONDITION(cnContent != NULL && cnContent->type == CN_CBOR_BYTES,
+	CHECK_CONDITION(cnContent != nullptr && cnContent->type == CN_CBOR_BYTES,
 		COSE_ERR_INVALID_PARAMETER);
 
 	const cn_cbor* cnProtected =
 		_COSE_arrayget_int(&pSigner->m_message, INDEX_PROTECTED);
-	CHECK_CONDITION(cnProtected != NULL && cnProtected->type == CN_CBOR_BYTES,
+	CHECK_CONDITION(cnProtected != nullptr && cnProtected->type == CN_CBOR_BYTES,
 		COSE_ERR_INVALID_PARAMETER);
 
 	bool f = _COSE_Signer_validate(&pCountersign->m_signer, cnContent,
@@ -510,14 +510,14 @@
 	return hCountersign;
 
 errorReturn:
-	return NULL;
+	return nullptr;
 }
 
 HCOSE_COUNTERSIGN COSE_Sign_get_countersignature(HCOSE_SIGN hSignMsg,
 	int index,
 	cose_errback* perr)
 {
-	COSE_CounterSign* p = NULL;
+	COSE_CounterSign* p = nullptr;
 
 	CHECK_CONDITION(IsValidSignHandle(hSignMsg), COSE_ERR_INVALID_HANDLE);
 
@@ -546,12 +546,12 @@
 
 	const cn_cbor* cnContent =
 		_COSE_arrayget_int(&pSignMsg->m_message, INDEX_BODY);
-	CHECK_CONDITION(cnContent != NULL && cnContent->type == CN_CBOR_BYTES,
+	CHECK_CONDITION(cnContent != nullptr && cnContent->type == CN_CBOR_BYTES,
 		COSE_ERR_INVALID_PARAMETER);
 
 	const cn_cbor* cnProtected =
 		_COSE_arrayget_int(&pSignMsg->m_message, INDEX_PROTECTED);
-	CHECK_CONDITION(cnProtected != NULL && cnProtected->type == CN_CBOR_BYTES,
+	CHECK_CONDITION(cnProtected != nullptr && cnProtected->type == CN_CBOR_BYTES,
 		COSE_ERR_INVALID_PARAMETER);
 
 	bool f = _COSE_Signer_validate(&pCountersign->m_signer, cnContent,
@@ -583,14 +583,14 @@
 	return hCountersign;
 
 errorReturn:
-	return NULL;
+	return nullptr;
 }
 
 HCOSE_COUNTERSIGN COSE_Sign1_get_countersignature(HCOSE_SIGN1 hSignMsg,
 	int index,
 	cose_errback* perr)
 {
-	COSE_CounterSign* p = NULL;
+	COSE_CounterSign* p = nullptr;
 
 	CHECK_CONDITION(IsValidSign1Handle(hSignMsg), COSE_ERR_INVALID_HANDLE);
 
@@ -619,12 +619,12 @@
 
 	const cn_cbor* cnContent =
 		_COSE_arrayget_int(&pSignMsg->m_message, INDEX_BODY);
-	CHECK_CONDITION(cnContent != NULL && cnContent->type == CN_CBOR_BYTES,
+	CHECK_CONDITION(cnContent != nullptr && cnContent->type == CN_CBOR_BYTES,
 		COSE_ERR_INVALID_PARAMETER);
 
 	const cn_cbor* cnProtected =
 		_COSE_arrayget_int(&pSignMsg->m_message, INDEX_PROTECTED);
-	CHECK_CONDITION(cnProtected != NULL && cnProtected->type == CN_CBOR_BYTES,
+	CHECK_CONDITION(cnProtected != nullptr && cnProtected->type == CN_CBOR_BYTES,
 		COSE_ERR_INVALID_PARAMETER);
 
 	bool f = _COSE_Signer_validate(&pCountersign->m_signer, cnContent,
@@ -655,14 +655,14 @@
 	return hCountersign;
 
 errorReturn:
-	return NULL;
+	return nullptr;
 }
 
 HCOSE_COUNTERSIGN COSE_Enveloped_get_countersignature(HCOSE_ENVELOPED hSignMsg,
 	int index,
 	cose_errback* perr)
 {
-	COSE_CounterSign* p = NULL;
+	COSE_CounterSign* p = nullptr;
 
 	CHECK_CONDITION(IsValidEnvelopedHandle(hSignMsg), COSE_ERR_INVALID_HANDLE);
 
@@ -690,12 +690,12 @@
 
 	const cn_cbor* cnContent =
 		_COSE_arrayget_int(&pSignMsg->m_message, INDEX_BODY);
-	CHECK_CONDITION(cnContent != NULL && cnContent->type == CN_CBOR_BYTES,
+	CHECK_CONDITION(cnContent != nullptr && cnContent->type == CN_CBOR_BYTES,
 		COSE_ERR_INVALID_PARAMETER);
 
 	const cn_cbor* cnProtected =
 		_COSE_arrayget_int(&pSignMsg->m_message, INDEX_PROTECTED);
-	CHECK_CONDITION(cnProtected != NULL && cnProtected->type == CN_CBOR_BYTES,
+	CHECK_CONDITION(cnProtected != nullptr && cnProtected->type == CN_CBOR_BYTES,
 		COSE_ERR_INVALID_PARAMETER);
 
 	bool f = _COSE_Signer_validate(&pCountersign->m_signer, cnContent,
@@ -727,14 +727,14 @@
 	return hCountersign;
 
 errorReturn:
-	return NULL;
+	return nullptr;
 }
 
 HCOSE_COUNTERSIGN COSE_Recipient_get_countersignature(HCOSE_RECIPIENT hSignMsg,
 	int index,
 	cose_errback* perr)
 {
-	COSE_CounterSign* p = NULL;
+	COSE_CounterSign* p = nullptr;
 
 	CHECK_CONDITION(IsValidRecipientHandle(hSignMsg), COSE_ERR_INVALID_HANDLE);
 
@@ -763,12 +763,12 @@
 
 	const cn_cbor* cnContent =
 		_COSE_arrayget_int(&pSignMsg->m_encrypt.m_message, INDEX_BODY);
-	CHECK_CONDITION(cnContent != NULL && cnContent->type == CN_CBOR_BYTES,
+	CHECK_CONDITION(cnContent != nullptr && cnContent->type == CN_CBOR_BYTES,
 		COSE_ERR_INVALID_PARAMETER);
 
 	const cn_cbor* cnProtected =
 		_COSE_arrayget_int(&pSignMsg->m_encrypt.m_message, INDEX_PROTECTED);
-	CHECK_CONDITION(cnProtected != NULL && cnProtected->type == CN_CBOR_BYTES,
+	CHECK_CONDITION(cnProtected != nullptr && cnProtected->type == CN_CBOR_BYTES,
 		COSE_ERR_INVALID_PARAMETER);
 
 	bool f = _COSE_Signer_validate(&pCountersign->m_signer, cnContent,
@@ -799,14 +799,14 @@
 	return hCountersign;
 
 errorReturn:
-	return NULL;
+	return nullptr;
 }
 
 HCOSE_COUNTERSIGN COSE_Encrypt0_get_countersignature(HCOSE_ENCRYPT hSignMsg,
 	int index,
 	cose_errback* perr)
 {
-	COSE_CounterSign* p = NULL;
+	COSE_CounterSign* p = nullptr;
 
 	CHECK_CONDITION(IsValidEncryptHandle(hSignMsg), COSE_ERR_INVALID_HANDLE);
 
@@ -835,12 +835,12 @@
 
 	const cn_cbor* cnContent =
 		_COSE_arrayget_int(&pSignMsg->m_message, INDEX_BODY);
-	CHECK_CONDITION(cnContent != NULL && cnContent->type == CN_CBOR_BYTES,
+	CHECK_CONDITION(cnContent != nullptr && cnContent->type == CN_CBOR_BYTES,
 		COSE_ERR_INVALID_PARAMETER);
 
 	const cn_cbor* cnProtected =
 		_COSE_arrayget_int(&pSignMsg->m_message, INDEX_PROTECTED);
-	CHECK_CONDITION(cnProtected != NULL && cnProtected->type == CN_CBOR_BYTES,
+	CHECK_CONDITION(cnProtected != nullptr && cnProtected->type == CN_CBOR_BYTES,
 		COSE_ERR_INVALID_PARAMETER);
 
 	bool f = _COSE_Signer_validate(&pCountersign->m_signer, cnContent,
@@ -871,14 +871,14 @@
 	return hCountersign;
 
 errorReturn:
-	return NULL;
+	return nullptr;
 }
 
 HCOSE_COUNTERSIGN COSE_Mac0_get_countersignature(HCOSE_MAC0 hSignMsg,
 	int index,
 	cose_errback* perr)
 {
-	COSE_CounterSign* p = NULL;
+	COSE_CounterSign* p = nullptr;
 
 	CHECK_CONDITION(IsValidMac0Handle(hSignMsg), COSE_ERR_INVALID_HANDLE);
 
@@ -907,12 +907,12 @@
 
 	const cn_cbor* cnContent =
 		_COSE_arrayget_int(&pSignMsg->m_message, INDEX_BODY);
-	CHECK_CONDITION(cnContent != NULL && cnContent->type == CN_CBOR_BYTES,
+	CHECK_CONDITION(cnContent != nullptr && cnContent->type == CN_CBOR_BYTES,
 		COSE_ERR_INVALID_PARAMETER);
 
 	const cn_cbor* cnProtected =
 		_COSE_arrayget_int(&pSignMsg->m_message, INDEX_PROTECTED);
-	CHECK_CONDITION(cnProtected != NULL && cnProtected->type == CN_CBOR_BYTES,
+	CHECK_CONDITION(cnProtected != nullptr && cnProtected->type == CN_CBOR_BYTES,
 		COSE_ERR_INVALID_PARAMETER);
 
 	bool f = _COSE_Signer_validate(&pCountersign->m_signer, cnContent,
@@ -943,14 +943,14 @@
 	return hCountersign;
 
 errorReturn:
-	return NULL;
+	return nullptr;
 }
 
 HCOSE_COUNTERSIGN COSE_Mac_get_countersignature(HCOSE_MAC hSignMsg,
 	int index,
 	cose_errback* perr)
 {
-	COSE_CounterSign* p = NULL;
+	COSE_CounterSign* p = nullptr;
 
 	CHECK_CONDITION(IsValidMacHandle(hSignMsg), COSE_ERR_INVALID_HANDLE);
 
@@ -979,12 +979,12 @@
 
 	const cn_cbor* cnContent =
 		_COSE_arrayget_int(&pSignMsg->m_message, INDEX_BODY);
-	CHECK_CONDITION(cnContent != NULL && cnContent->type == CN_CBOR_BYTES,
+	CHECK_CONDITION(cnContent != nullptr && cnContent->type == CN_CBOR_BYTES,
 		COSE_ERR_INVALID_PARAMETER);
 
 	const cn_cbor* cnProtected =
 		_COSE_arrayget_int(&pSignMsg->m_message, INDEX_PROTECTED);
-	CHECK_CONDITION(cnProtected != NULL && cnProtected->type == CN_CBOR_BYTES,
+	CHECK_CONDITION(cnProtected != nullptr && cnProtected->type == CN_CBOR_BYTES,
 		COSE_ERR_INVALID_PARAMETER);
 
 	bool f = _COSE_Signer_validate(&pCountersign->m_signer, cnContent,
diff --git a/src/CounterSign0.cpp b/src/CounterSign0.cpp
index 479e435..174d181 100644
--- a/src/CounterSign0.cpp
+++ b/src/CounterSign0.cpp
@@ -41,43 +41,43 @@
 	cn_cbor* pcnBody,
 	CBOR_CONTEXT_COMMA cose_errback* perr)
 {
-	cn_cbor* pArray = NULL;
+	cn_cbor* pArray = nullptr;
 	cn_cbor_errback cbor_err;
-	COSE_CounterSign1* pSigner = NULL;
-	cn_cbor* pcnProtected = NULL;
-	cn_cbor* pcn = NULL;
-	cn_cbor* pcn2 = NULL;
+	COSE_CounterSign1* pSigner = nullptr;
+	cn_cbor* pcnProtected = nullptr;
+	cn_cbor* pcn = nullptr;
+	cn_cbor* pcn2 = nullptr;
 
-	if (pMessage->m_counterSigners == NULL)
+	if (pMessage->m_counterSigners == nullptr)
 		return true;
 
 	//  One or more than one?
-	if (pMessage->m_counterSigners->m_signer.m_signerNext != NULL) {
+	if (pMessage->m_counterSigners->m_signer.m_signerNext != nullptr) {
 		pArray = cn_cbor_array_create(CBOR_CONTEXT_PARAM_COMMA & cbor_err);
-		CHECK_CONDITION_CBOR(pArray != NULL, cbor_err);
+		CHECK_CONDITION_CBOR(pArray != nullptr, cbor_err);
 	}
 
 	pcnProtected = _COSE_arrayget_int(pMessage, INDEX_PROTECTED);
-	CHECK_CONDITION(pcnProtected != NULL, COSE_ERR_INTERNAL);
+	CHECK_CONDITION(pcnProtected != nullptr, COSE_ERR_INTERNAL);
 
-	for (pSigner = pMessage->m_counterSigners; pSigner != NULL;
+	for (pSigner = pMessage->m_counterSigners; pSigner != nullptr;
 		 pSigner = pSigner->m_next) {
 		CHECK_CONDITION(
-			pSigner->m_signer.m_signerNext == NULL, COSE_ERR_INTERNAL);
+			pSigner->m_signer.m_signerNext == nullptr, COSE_ERR_INTERNAL);
 
 		pcn = cn_cbor_data_create(pcnProtected->v.bytes, pcnProtected->v.count,
 			CBOR_CONTEXT_PARAM_COMMA & cbor_err);
-		CHECK_CONDITION_CBOR(pcnProtected != NULL, cbor_err);
+		CHECK_CONDITION_CBOR(pcnProtected != nullptr, cbor_err);
 
 		pcn2 = cn_cbor_clone(pcnBody, CBOR_CONTEXT_PARAM_COMMA & cbor_err);
-		CHECK_CONDITION_CBOR(pcnBody != NULL, cbor_err);
+		CHECK_CONDITION_CBOR(pcnBody != nullptr, cbor_err);
 
 		if (!_COSE_Signer_sign(&pSigner->m_signer, pcnBody, pcn2, perr))
 			goto errorReturn;
-		pcn = NULL;
-		pcn2 = NULL;
+		pcn = nullptr;
+		pcn2 = nullptr;
 
-		if (pArray != NULL) {
+		if (pArray != nullptr) {
 			bool f = cn_cbor_array_append(
 				pArray, pSigner->m_signer.m_message.m_cborRoot, &cbor_err);
 			CHECK_CONDITION_CBOR(f, cbor_err);
@@ -94,11 +94,11 @@
 	return true;
 
 errorReturn:
-	if (pArray != NULL)
+	if (pArray != nullptr)
 		CN_CBOR_FREE(pArray, context);
-	if ((pcn != NULL) && (pcn->parent != NULL))
+	if ((pcn != nullptr) && (pcn->parent != nullptr))
 		CN_CBOR_FREE(pcn, context);
-	if ((pcn2 != NULL) && (pcn2->parent != NULL))
+	if ((pcn2 != nullptr) && (pcn2->parent != nullptr))
 		CN_CBOR_FREE(pcn2, context);
 	return false;
 }
diff --git a/src/Encrypt.cpp b/src/Encrypt.cpp
index 0872826..79ef464 100644
--- a/src/Encrypt.cpp
+++ b/src/Encrypt.cpp
@@ -19,7 +19,7 @@
 #include "cose_crypto.h"
 
 #if INCLUDE_ENCRYPT || INCLUDE_MAC
-COSE *EnvelopedRoot = NULL;
+COSE *EnvelopedRoot = nullptr;
 #endif
 
 #if INCLUDE_ENCRYPT
@@ -66,13 +66,13 @@
 {
 	COSE_Enveloped *pobj =
 		(COSE_Enveloped *)COSE_CALLOC(1, sizeof(COSE_Enveloped), context);
-	CHECK_CONDITION(pobj != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(pobj != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	if (!_COSE_Init(flags, &pobj->m_message, COSE_enveloped_object,
 			CBOR_CONTEXT_PARAM_COMMA perr)) {
 		_COSE_Enveloped_Release(pobj);
 		COSE_FREE(pobj, context);
-		return NULL;
+		return nullptr;
 	}
 
 	_COSE_InsertInList(&EnvelopedRoot, &pobj->m_message);
@@ -80,7 +80,7 @@
 	return (HCOSE_ENVELOPED)pobj;
 
 errorReturn:
-	return NULL;
+	return nullptr;
 }
 #endif
 
@@ -90,24 +90,24 @@
 	CBOR_CONTEXT_COMMA cose_errback *perr)
 {
 	COSE_Enveloped *pobj = pIn;
-	cn_cbor *pRecipients = NULL;
+	cn_cbor *pRecipients = nullptr;
 	cose_errback error = {COSE_ERR_NONE};
-	if (perr == NULL) {
+	if (perr == nullptr) {
 		perr = &error;
 	}
 
-	if (pobj == NULL) {
+	if (pobj == nullptr) {
 		pobj =
 			(COSE_Enveloped *)COSE_CALLOC(1, sizeof(COSE_Enveloped), context);
 	}
-	if (pobj == NULL) {
+	if (pobj == nullptr) {
 		perr->err = COSE_ERR_OUT_OF_MEMORY;
 	errorReturn:
-		if (pIn == NULL && pobj != NULL) {
+		if (pIn == nullptr && pobj != nullptr) {
 			_COSE_Enveloped_Release(pobj);
 			COSE_FREE(pobj, context);
 		}
-		return NULL;
+		return nullptr;
 	}
 
 	if (!_COSE_Init_From_Object(
@@ -116,15 +116,15 @@
 	}
 
 	pRecipients = _COSE_arrayget_int(&pobj->m_message, INDEX_RECIPIENTS);
-	if (pRecipients != NULL) {
+	if (pRecipients != nullptr) {
 		CHECK_CONDITION(
 			pRecipients->type == CN_CBOR_ARRAY, COSE_ERR_INVALID_PARAMETER);
 
 		pRecipients = pRecipients->first_child;
-		while (pRecipients != NULL) {
+		while (pRecipients != nullptr) {
 			COSE_RecipientInfo *pInfo = _COSE_Recipient_Init_From_Object(
 				pRecipients, CBOR_CONTEXT_PARAM_COMMA perr);
-			CHECK_CONDITION(pInfo != NULL, COSE_ERR_OUT_OF_MEMORY);
+			CHECK_CONDITION(pInfo != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 			pInfo->m_recipientNext = pobj->m_recipientFirst;
 			pobj->m_recipientFirst = pInfo;
@@ -132,7 +132,7 @@
 		}
 	}
 
-	if (pIn == NULL) {
+	if (pIn == nullptr) {
 		_COSE_InsertInList(&EnvelopedRoot, &pobj->m_message);
 	}
 
@@ -177,12 +177,12 @@
 	COSE_RecipientInfo *pRecipient1;
 	COSE_RecipientInfo *pRecipient2;
 
-	if (p->pbContent != NULL) {
+	if (p->pbContent != nullptr) {
 		COSE_FREE((void *)p->pbContent, &p->m_message.m_allocContext);
 	}
-	//	if (p->pbIV != NULL) COSE_FREE(p->pbIV, &p->m_message.m_allocContext);
+	//	if (p->pbIV != nullptr) COSE_FREE(p->pbIV, &p->m_message.m_allocContext);
 
-	for (pRecipient1 = p->m_recipientFirst; pRecipient1 != NULL;
+	for (pRecipient1 = p->m_recipientFirst; pRecipient1 != nullptr;
 		 pRecipient1 = pRecipient2) {
 		pRecipient2 = pRecipient1->m_recipientNext;
 		COSE_Recipient_Free((HCOSE_RECIPIENT)pRecipient1);
@@ -204,9 +204,9 @@
 	CHECK_CONDITION(IsValidEnvelopedHandle(h), COSE_ERR_INVALID_HANDLE);
 	CHECK_CONDITION(IsValidRecipientHandle(hRecip), COSE_ERR_INVALID_HANDLE);
 	CHECK_CONDITION(
-		pcose->m_recipientFirst != NULL, COSE_ERR_INVALID_PARAMETER);
+		pcose->m_recipientFirst != nullptr, COSE_ERR_INVALID_PARAMETER);
 
-	f = _COSE_Enveloped_decrypt(pcose, pRecip, NULL, 0, "Encrypt", perr);
+	f = _COSE_Enveloped_decrypt(pcose, pRecip, nullptr, 0, "Encrypt", perr);
 
 errorReturn:
 	return f;
@@ -222,14 +222,14 @@
 	cose_errback *perr)
 {
 	int alg;
-	const cn_cbor *cn = NULL;
-	byte *pbKeyNew = NULL;
-	const byte *pbKey = NULL;
+	const cn_cbor *cn = nullptr;
+	byte *pbKeyNew = nullptr;
+	const byte *pbKey = nullptr;
 	size_t cbitKey = 0;
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context;
 #endif
-	byte *pbAuthData = NULL;
+	byte *pbAuthData = nullptr;
 	size_t cbAuthData;
 
 #ifdef USE_CBOR_CONTEXT
@@ -237,17 +237,17 @@
 #endif
 
 	CHECK_CONDITION(
-		!((pRecip != NULL) && (pbKeyIn != NULL)), COSE_ERR_INTERNAL);
+		!((pRecip != nullptr) && (pbKeyIn != nullptr)), COSE_ERR_INTERNAL);
 
 	cn = _COSE_map_get_int(
 		&pcose->m_message, COSE_Header_Algorithm, COSE_BOTH, perr);
-	if (cn == NULL) {
+	if (cn == nullptr) {
 	error:
 	errorReturn:
-		if (pbAuthData != NULL) {
+		if (pbAuthData != nullptr) {
 			COSE_FREE(pbAuthData, context);
 		}
-		if (pbKeyNew != NULL) {
+		if (pbKeyNew != nullptr) {
 			memset(pbKeyNew, 0xff, cbitKey / 8);
 			COSE_FREE(pbKeyNew, context);
 		}
@@ -333,7 +333,7 @@
 	//  We are doing the enveloped item - so look for the passed in recipient
 	//
 
-	if (pbKeyIn != NULL) {
+	if (pbKeyIn != nullptr) {
 		CHECK_CONDITION(cbKeyIn == cbitKey / 8, COSE_ERR_INVALID_PARAMETER);
 		pbKey = pbKeyIn;
 	}
@@ -341,20 +341,20 @@
 	else {
 		//  Allocate the key if we have not already done so
 
-		if (pbKeyNew == NULL) {
+		if (pbKeyNew == nullptr) {
 			pbKeyNew = static_cast<byte*>(COSE_CALLOC(cbitKey / 8, 1, context));
-			CHECK_CONDITION(pbKeyNew != NULL, COSE_ERR_OUT_OF_MEMORY);
+			CHECK_CONDITION(pbKeyNew != nullptr, COSE_ERR_OUT_OF_MEMORY);
 			pbKey = pbKeyNew;
 		}
 
 		//  If there is a recipient - ask it for the key
 
-		if (pRecip != NULL) {
-			COSE_RecipientInfo *pRecipX = NULL;
+		if (pRecip != nullptr) {
+			COSE_RecipientInfo *pRecipX = nullptr;
 			cose_errback errorLocal = {COSE_ERR_NONE};
 			cose_error errorFound = COSE_ERR_NONE;
 
-			for (pRecipX = pcose->m_recipientFirst; pRecipX != NULL;
+			for (pRecipX = pcose->m_recipientFirst; pRecipX != nullptr;
 				 pRecipX = pRecipX->m_recipientNext) {
 				if (pRecipX == pRecip) {
 					if (!_COSE_Recipient_decrypt(
@@ -363,7 +363,7 @@
 					}
 					break;
 				}
-				else if (pRecipX->m_encrypt.m_recipientFirst != NULL) {
+				else if (pRecipX->m_encrypt.m_recipientFirst != nullptr) {
 					if (_COSE_Recipient_decrypt(pRecipX, pRecip, alg, cbitKey,
 							pbKeyNew, &errorLocal)) {
 						break;
@@ -375,17 +375,17 @@
 				perr->err = errorFound;
 				goto errorReturn;
 			}
-			CHECK_CONDITION(pRecipX != NULL, COSE_ERR_NO_RECIPIENT_FOUND);
+			CHECK_CONDITION(pRecipX != nullptr, COSE_ERR_NO_RECIPIENT_FOUND);
 		}
 		else {
-			for (pRecip = pcose->m_recipientFirst; pRecip != NULL;
+			for (pRecip = pcose->m_recipientFirst; pRecip != nullptr;
 				 pRecip = pRecip->m_recipientNext) {
 				if (_COSE_Recipient_decrypt(
-						pRecip, NULL, alg, cbitKey, pbKeyNew, perr)) {
+						pRecip, nullptr, alg, cbitKey, pbKeyNew, perr)) {
 					break;
 				}
 			}
-			CHECK_CONDITION(pRecip != NULL, COSE_ERR_NO_RECIPIENT_FOUND);
+			CHECK_CONDITION(pRecip != nullptr, COSE_ERR_NO_RECIPIENT_FOUND);
 		}
 	}
 #endif	// INCLUDE_ENCRYPT
@@ -398,7 +398,7 @@
 	}
 
 	cn = _COSE_arrayget_int(&pcose->m_message, INDEX_BODY);
-	CHECK_CONDITION(cn != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(cn != nullptr, COSE_ERR_INVALID_PARAMETER);
 
 	switch (alg) {
 #ifdef USE_AES_CCM_16_64_128
@@ -505,13 +505,13 @@
 			break;
 	}
 
-	if (pbAuthData != NULL) {
+	if (pbAuthData != nullptr) {
 		COSE_FREE(pbAuthData, context);
 	}
-	if (pbKeyNew != NULL) {
+	if (pbKeyNew != nullptr) {
 		COSE_FREE(pbKeyNew, context);
 	}
-	if (perr != NULL) {
+	if (perr != nullptr) {
 		perr->err = COSE_ERR_NONE;
 	}
 
@@ -525,9 +525,9 @@
 	COSE_Enveloped *pcose = (COSE_Enveloped *)h;
 
 	CHECK_CONDITION(IsValidEnvelopedHandle(h), COSE_ERR_INVALID_HANDLE);
-	CHECK_CONDITION(pcose->m_recipientFirst != NULL, COSE_ERR_INVALID_HANDLE);
+	CHECK_CONDITION(pcose->m_recipientFirst != nullptr, COSE_ERR_INVALID_HANDLE);
 
-	return _COSE_Enveloped_encrypt(pcose, NULL, 0, "Encrypt", perr);
+	return _COSE_Enveloped_encrypt(pcose, nullptr, 0, "Encrypt", perr);
 
 errorReturn:
 	return false;
@@ -544,25 +544,25 @@
 	int alg;
 	int t;
 	COSE_RecipientInfo *pri;
-	const cn_cbor *cn_Alg = NULL;
-	byte *pbAuthData = NULL;
+	const cn_cbor *cn_Alg = nullptr;
+	byte *pbAuthData = nullptr;
 	size_t cbitKey;
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context = &pcose->m_message.m_allocContext;
 #endif
 	bool fRet = false;
-	byte *pbKeyNew = NULL;
-	const byte *pbKey = NULL;
+	byte *pbKeyNew = nullptr;
+	const byte *pbKey = nullptr;
 	size_t cbKey = 0;
 
 	cn_Alg = _COSE_map_get_int(
 		&pcose->m_message, COSE_Header_Algorithm, COSE_BOTH, perr);
-	if (cn_Alg == NULL) {
+	if (cn_Alg == nullptr) {
 	errorReturn:
-		if (pbAuthData != NULL) {
+		if (pbAuthData != nullptr) {
 			COSE_FREE(pbAuthData, context);
 		}
-		if (pbKeyNew != NULL) {
+		if (pbKeyNew != nullptr) {
 			memset(pbKeyNew, 0, cbKey);
 			COSE_FREE(pbKeyNew, context);
 		}
@@ -650,7 +650,7 @@
 
 	//  Enveloped or Encrypted?
 
-	if (pbKeyIn != NULL) {
+	if (pbKeyIn != nullptr) {
 		CHECK_CONDITION(cbKeyIn == cbitKey / 8, COSE_ERR_INVALID_PARAMETER);
 		pbKey = pbKeyIn;
 		cbKey = cbKeyIn;
@@ -660,16 +660,16 @@
 		//  If we are doing direct encryption - then recipient generates the key
 
 		t = 0;
-		for (pri = pcose->m_recipientFirst; pri != NULL;
+		for (pri = pcose->m_recipientFirst; pri != nullptr;
 			 pri = pri->m_recipientNext) {
 			if (pri->m_encrypt.m_message.m_flags & 1) {
-				CHECK_CONDITION(pbKey == NULL, COSE_ERR_INVALID_PARAMETER);
+				CHECK_CONDITION(pbKey == nullptr, COSE_ERR_INVALID_PARAMETER);
 
 				t |= 1;
 				pbKeyNew =
 					_COSE_RecipientInfo_generateKey(pri, alg, cbitKey, perr);
 				cbKey = cbitKey / 8;
-				if (pbKeyNew == NULL) {
+				if (pbKeyNew == nullptr) {
 					goto errorReturn;
 				}
 			}
@@ -681,7 +681,7 @@
 
 		if (t == 2) {
 			pbKeyNew = (byte *)COSE_CALLOC(cbitKey / 8, 1, context);
-			CHECK_CONDITION(pbKeyNew != NULL, COSE_ERR_OUT_OF_MEMORY);
+			CHECK_CONDITION(pbKeyNew != nullptr, COSE_ERR_OUT_OF_MEMORY);
 			cbKey = cbitKey / 8;
 			rand_bytes(pbKeyNew, cbKey);
 		}
@@ -693,7 +693,7 @@
 
 	const cn_cbor *cbProtected =
 		_COSE_encode_protected(&pcose->m_message, perr);
-	if (cbProtected == NULL) {
+	if (cbProtected == nullptr) {
 		goto errorReturn;
 	}
 
@@ -810,7 +810,7 @@
 	}
 
 #if INCLUDE_ENCRYPT
-	for (pri = pcose->m_recipientFirst; pri != NULL;
+	for (pri = pcose->m_recipientFirst; pri != nullptr;
 		 pri = pri->m_recipientNext) {
 		if (!_COSE_Recipient_encrypt(pri, pbKey, cbKey, perr)) {
 			goto errorReturn;
@@ -819,7 +819,7 @@
 #endif	// INCLUDE_ENCRYPT
 
 #if INCLUDE_COUNTERSIGNATURE
-	if (pcose->m_message.m_counterSigners != NULL) {
+	if (pcose->m_message.m_counterSigners != nullptr) {
 		if (!_COSE_CounterSign_Sign(
 				&pcose->m_message, CBOR_CONTEXT_PARAM_COMMA perr)) {
 			goto errorReturn;
@@ -841,7 +841,7 @@
 	cose_errback *perr)
 {
 	CHECK_CONDITION(IsValidEnvelopedHandle(h), COSE_ERR_INVALID_HANDLE);
-	CHECK_CONDITION(rgb != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(rgb != nullptr, COSE_ERR_INVALID_PARAMETER);
 
 	return _COSE_Enveloped_SetContent((COSE_Enveloped *)h, rgb, cb, perr);
 
@@ -871,7 +871,7 @@
 	cose_errback *perr)
 {
 	CHECK_CONDITION(IsValidEnvelopedHandle(hcose), COSE_ERR_INVALID_HANDLE)
-	CHECK_CONDITION((pbExternalData != NULL) || (cbExternalData == 0),
+	CHECK_CONDITION((pbExternalData != nullptr) || (cbExternalData == 0),
 		COSE_ERR_INVALID_PARAMETER);
 
 	return _COSE_SetExternal(&((COSE_Enveloped *)hcose)->m_message,
@@ -889,8 +889,8 @@
 	byte *pb;
 	cose->pbContent = pb =
 		(byte *)COSE_CALLOC(cb, 1, &cose->m_message.m_allocContext);
-	if (cose->pbContent == NULL) {
-		if (perror != NULL) {
+	if (cose->pbContent == nullptr) {
+		if (perror != nullptr) {
 			perror->err = COSE_ERR_INVALID_PARAMETER;
 		}
 		return false;
@@ -910,7 +910,7 @@
  * @param[in]    key	Key to look for
  * @param[in]	flags	What buckets should we look for the message
  * @param[out]	perror	Location to return error codes
- * @return	Object which is found or NULL
+ * @return	Object which is found or nullptr
  */
 
 cn_cbor *COSE_Enveloped_map_get_int(HCOSE_ENVELOPED h,
@@ -919,10 +919,10 @@
 	cose_errback *perror)
 {
 	if (!IsValidEnvelopedHandle(h)) {
-		if (perror != NULL) {
+		if (perror != nullptr) {
 			perror->err = COSE_ERR_INVALID_HANDLE;
 		}
-		return NULL;
+		return nullptr;
 	}
 
 	return _COSE_map_get_int(
@@ -936,7 +936,7 @@
 	cose_errback *perr)
 {
 	CHECK_CONDITION(IsValidEnvelopedHandle(h), COSE_ERR_INVALID_HANDLE);
-	CHECK_CONDITION(value != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(value != nullptr, COSE_ERR_INVALID_PARAMETER);
 
 	return _COSE_map_put(
 		&((COSE_Enveloped *)h)->m_message, key, value, flags, perr);
@@ -951,7 +951,7 @@
 {
 	COSE_RecipientInfo *pRecip;
 	COSE_Enveloped *pEncrypt;
-	cn_cbor *pRecipients = NULL;
+	cn_cbor *pRecipients = nullptr;
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context;
 #endif
@@ -972,15 +972,15 @@
 	pRecip->m_encrypt.m_message.m_refCount++;
 
 	pRecipients = _COSE_arrayget_int(&pEncrypt->m_message, INDEX_RECIPIENTS);
-	if (pRecipients == NULL) {
+	if (pRecipients == nullptr) {
 		pRecipients =
 			cn_cbor_array_create(CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-		CHECK_CONDITION_CBOR(pRecipients != NULL, cbor_error);
+		CHECK_CONDITION_CBOR(pRecipients != nullptr, cbor_error);
 
 		if (!_COSE_array_replace(&pEncrypt->m_message, pRecipients,
 				INDEX_RECIPIENTS, CBOR_CONTEXT_PARAM_COMMA & cbor_error)) {
 			CN_CBOR_FREE(pRecipients, context);
-			if (perr != NULL) {
+			if (perr != nullptr) {
 				perr->err = _MapFromCBOR(cbor_error);
 			}
 			goto errorReturn;
@@ -1009,48 +1009,48 @@
 	cn_cbor_context *context = &pMessage->m_allocContext;
 #endif
 	cn_cbor_errback cbor_error;
-	byte *pbAuthData = NULL;
+	byte *pbAuthData = nullptr;
 	size_t cbAuthData;
-	cn_cbor *pAuthData = NULL;
-	cn_cbor *pItem = NULL;
-	cn_cbor *ptmp = NULL;
+	cn_cbor *pAuthData = nullptr;
+	cn_cbor *pItem = nullptr;
+	cn_cbor *ptmp = nullptr;
 
 	//  Build authenticated data
 	pAuthData = cn_cbor_array_create(CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(pAuthData != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(pAuthData != nullptr, cbor_error);
 
 	ptmp =
 		cn_cbor_string_create(szContext, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(ptmp != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(ptmp != nullptr, cbor_error);
 	CHECK_CONDITION_CBOR(
 		cn_cbor_array_append(pAuthData, ptmp, &cbor_error), cbor_error);
-	ptmp = NULL;
+	ptmp = nullptr;
 
 	pItem = _COSE_arrayget_int(pMessage, INDEX_PROTECTED);
-	CHECK_CONDITION(pItem != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(pItem != nullptr, COSE_ERR_INVALID_PARAMETER);
 	if ((pItem->length == 1) && (pItem->v.bytes[0] == 0xa0)) {
 		ptmp =
-			cn_cbor_data_create(NULL, 0, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
+			cn_cbor_data_create(nullptr, 0, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
 	}
 	else {
 		ptmp = cn_cbor_data_create(pItem->v.bytes, (int)pItem->length,
 			CBOR_CONTEXT_PARAM_COMMA & cbor_error);
 	}
-	CHECK_CONDITION_CBOR(ptmp != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(ptmp != nullptr, cbor_error);
 	CHECK_CONDITION_CBOR(
 		cn_cbor_array_append(pAuthData, ptmp, &cbor_error), cbor_error);
-	ptmp = NULL;
+	ptmp = nullptr;
 
 	ptmp = cn_cbor_data_create(pMessage->m_pbExternal,
 		(int)pMessage->m_cbExternal, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(ptmp != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(ptmp != nullptr, cbor_error);
 	CHECK_CONDITION_CBOR(
 		cn_cbor_array_append(pAuthData, ptmp, &cbor_error), cbor_error);
-	ptmp = NULL;
+	ptmp = nullptr;
 
 	cbAuthData = cn_cbor_encode_size(pAuthData);
 	pbAuthData = (byte *)COSE_CALLOC(cbAuthData, 1, context);
-	CHECK_CONDITION(pbAuthData != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(pbAuthData != nullptr, COSE_ERR_OUT_OF_MEMORY);
 	CHECK_CONDITION((size_t)cn_cbor_encoder_write(
 						pbAuthData, 0, cbAuthData, pAuthData) == cbAuthData,
 		COSE_ERR_CBOR);
@@ -1069,20 +1069,20 @@
         }
 #endif
 
-	if (pAuthData != NULL) {
+	if (pAuthData != nullptr) {
 		CN_CBOR_FREE(pAuthData, context);
 	}
 
 	return true;
 
 errorReturn:
-	if (pbAuthData != NULL) {
+	if (pbAuthData != nullptr) {
 		COSE_FREE(pbAuthData, context);
 	}
-	if (ptmp != NULL) {
-		CN_CBOR_FREE(ptmp, NULL);
+	if (ptmp != nullptr) {
+		CN_CBOR_FREE(ptmp, nullptr);
 	}
-	if (pAuthData != NULL) {
+	if (pAuthData != nullptr) {
 		CN_CBOR_FREE(pAuthData, context);
 	}
 	return false;
@@ -1095,17 +1095,17 @@
 	cose_errback *perr)
 {
 	int i;
-	COSE_RecipientInfo *p = NULL;
+	COSE_RecipientInfo *p = nullptr;
 
 	CHECK_CONDITION(IsValidEnvelopedHandle(cose), COSE_ERR_INVALID_HANDLE);
 	CHECK_CONDITION(iRecipient >= 0, COSE_ERR_INVALID_PARAMETER);
 
 	p = ((COSE_Enveloped *)cose)->m_recipientFirst;
 	for (i = 0; i < iRecipient; i++) {
-		CHECK_CONDITION(p != NULL, COSE_ERR_INVALID_PARAMETER);
+		CHECK_CONDITION(p != nullptr, COSE_ERR_INVALID_PARAMETER);
 		p = p->m_recipientNext;
 	}
-	if (p != NULL) {
+	if (p != nullptr) {
 		p->m_encrypt.m_message.m_refCount++;
 	}
 
diff --git a/src/Encrypt0.cpp b/src/Encrypt0.cpp
index 4c901d3..604aafd 100644
--- a/src/Encrypt0.cpp
+++ b/src/Encrypt0.cpp
@@ -19,7 +19,7 @@
 
 #if INCLUDE_ENCRYPT0 || INCLUDE_MAC0
 
-COSE *EncryptRoot = NULL;
+COSE *EncryptRoot = nullptr;
 #endif
 
 #if INCLUDE_ENCRYPT0
@@ -50,19 +50,19 @@
 {
 	if (false) {
 	errorReturn:
-		return NULL;		
+		return nullptr;		
 	}
 	
 	CHECK_CONDITION(flags == COSE_INIT_FLAGS_NONE, COSE_ERR_INVALID_PARAMETER);
 	COSE_Encrypt *pobj =
 		(COSE_Encrypt *)COSE_CALLOC(1, sizeof(COSE_Encrypt), context);
-	CHECK_CONDITION(pobj != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(pobj != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	if (!_COSE_Init(flags, &pobj->m_message, COSE_enveloped_object,
 			CBOR_CONTEXT_PARAM_COMMA perr)) {
 		_COSE_Encrypt_Release(pobj);
 		COSE_FREE(pobj, context);
-		return NULL;
+		return nullptr;
 	}
 
 	_COSE_InsertInList(&EncryptRoot, &pobj->m_message);
@@ -78,19 +78,19 @@
 	COSE_Encrypt *pobj;
 
 	cose_errback error = {COSE_ERR_NONE};
-	if (perr == NULL) {
+	if (perr == nullptr) {
 		perr = &error;
 	}
 
 	pobj = (COSE_Encrypt *)COSE_CALLOC(1, sizeof(COSE_Encrypt), context);
-	if (pobj == NULL) {
+	if (pobj == nullptr) {
 		perr->err = COSE_ERR_OUT_OF_MEMORY;
 	errorReturn:
-		if (pobj != NULL) {
+		if (pobj != nullptr) {
 			_COSE_Encrypt_Release(pobj);
 			COSE_FREE(pobj, context);
 		}
-		return NULL;
+		return nullptr;
 	}
 
 	if (!_COSE_Init_From_Object(
@@ -110,25 +110,25 @@
 	CBOR_CONTEXT_COMMA cose_errback *perr)
 {
 	COSE_Encrypt *pobj = pIn;
-	cn_cbor *pRecipients = NULL;
+	cn_cbor *pRecipients = nullptr;
 	cose_errback error = {COSE_ERR_NONE};
-	if (perr == NULL) {
+	if (perr == nullptr) {
 		perr = &error;
 	}
 
-	if (pobj == NULL) {
+	if (pobj == nullptr) {
 		pobj = (COSE_Encrypt *)COSE_CALLOC(1, sizeof(COSE_Encrypt), context);
 	}
-	if (pobj == NULL) {
+	if (pobj == nullptr) {
 		perr->err = COSE_ERR_OUT_OF_MEMORY;
 	errorReturn:
-		if (pobj != NULL) {
+		if (pobj != nullptr) {
 			_COSE_Encrypt_Release(pobj);
-			if (pIn == NULL) {
+			if (pIn == nullptr) {
 				COSE_FREE(pobj, context);
 			}
 		}
-		return NULL;
+		return nullptr;
 	}
 
 	if (!_COSE_Init_From_Object(
@@ -137,7 +137,7 @@
 	}
 
 	pRecipients = _COSE_arrayget_int(&pobj->m_message, INDEX_RECIPIENTS);
-	CHECK_CONDITION(pRecipients == NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(pRecipients == nullptr, COSE_ERR_INVALID_PARAMETER);
 
 	_COSE_InsertInList(&EncryptRoot, &pobj->m_message);
 
@@ -172,7 +172,7 @@
 #if INCLUDE_ENCRYPT0 || INCLUDE_MAC0
 void _COSE_Encrypt_Release(COSE_Encrypt *p)
 {
-	if (p->pbContent != NULL) {
+	if (p->pbContent != nullptr) {
 		COSE_FREE((void *)p->pbContent, &p->m_message.m_allocContext);
 	}
 
@@ -190,13 +190,13 @@
 	bool f;
 
 	if (!IsValidEncryptHandle(h)) {
-		if (perr != NULL) {
+		if (perr != nullptr) {
 			perr->err = COSE_ERR_INVALID_PARAMETER;
 		}
 		return false;
 	}
 
-	f = _COSE_Enveloped_decrypt(pcose, NULL, pbKey, cbKey, "Encrypt0", perr);
+	f = _COSE_Enveloped_decrypt(pcose, nullptr, pbKey, cbKey, "Encrypt0", perr);
 	return f;
 }
 
@@ -206,7 +206,7 @@
 	cose_errback *perr)
 {
 	CHECK_CONDITION(IsValidEncryptHandle(h), COSE_ERR_INVALID_HANDLE);
-	CHECK_CONDITION(pbKey != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(pbKey != nullptr, COSE_ERR_INVALID_PARAMETER);
 
 	return _COSE_Enveloped_encrypt(
 		(COSE_Encrypt *)h, pbKey, cbKey, "Encrypt0", perr);
@@ -220,11 +220,11 @@
 	cose_errback *perror)
 {
 	COSE_Encrypt *cose = (COSE_Encrypt *)h;
-	if (!IsValidEncryptHandle(h) || (pcbContent == NULL)) {
-		if (perror != NULL) {
+	if (!IsValidEncryptHandle(h) || (pcbContent == nullptr)) {
+		if (perror != nullptr) {
 			perror->err = COSE_ERR_INVALID_PARAMETER;
 		}
-		return NULL;
+		return nullptr;
 	}
 
 	*pcbContent = cose->cbContent;
@@ -236,8 +236,8 @@
 	size_t cb,
 	cose_errback *perror)
 {
-	if (!IsValidEncryptHandle(h) || (rgb == NULL)) {
-		if (perror != NULL) {
+	if (!IsValidEncryptHandle(h) || (rgb == nullptr)) {
+		if (perror != nullptr) {
 			perror->err = COSE_ERR_INVALID_PARAMETER;
 		}
 		return false;
@@ -254,8 +254,8 @@
 	byte *pb;
 	cose->pbContent = pb =
 		(byte *)COSE_CALLOC(cb, 1, &cose->m_message.m_allocContext);
-	if (cose->pbContent == NULL) {
-		if (perror != NULL) {
+	if (cose->pbContent == nullptr) {
+		if (perror != nullptr) {
 			perror->err = COSE_ERR_INVALID_PARAMETER;
 		}
 		return false;
@@ -288,7 +288,7 @@
 	cose_errback *perr)
 {
 	if (!IsValidEncryptHandle(hcose)) {
-		if (perr != NULL) {
+		if (perr != nullptr) {
 			perr->err = COSE_ERR_INVALID_PARAMETER;
 		}
 		return false;
@@ -304,10 +304,10 @@
 	cose_errback *perror)
 {
 	if (!IsValidEncryptHandle(h)) {
-		if (perror != NULL) {
+		if (perror != nullptr) {
 			perror->err = COSE_ERR_INVALID_PARAMETER;
 		}
-		return NULL;
+		return nullptr;
 	}
 
 	return _COSE_map_get_int(
@@ -320,8 +320,8 @@
 	int flags,
 	cose_errback *perror)
 {
-	if (!IsValidEncryptHandle(h) || (value == NULL)) {
-		if (perror != NULL) {
+	if (!IsValidEncryptHandle(h) || (value == nullptr)) {
+		if (perror != nullptr) {
 			perror->err = COSE_ERR_INVALID_PARAMETER;
 		}
 		return false;
diff --git a/src/MacMessage.cpp b/src/MacMessage.cpp
index 7bff626..304b665 100644
--- a/src/MacMessage.cpp
+++ b/src/MacMessage.cpp
@@ -17,7 +17,7 @@
 
 #if INCLUDE_MAC
 
-COSE *MacRoot = NULL;
+COSE *MacRoot = nullptr;
 
 /*! \private
  * @brief Test if a HCOSE_MAC handle is valid
@@ -42,12 +42,12 @@
 HCOSE_MAC COSE_Mac_Init(COSE_INIT_FLAGS flags,
 	CBOR_CONTEXT_COMMA cose_errback *perr)
 {
-	COSE_MacMessage *pobj = NULL;
+	COSE_MacMessage *pobj = nullptr;
 
 	CHECK_CONDITION(flags == COSE_INIT_FLAGS_NONE, COSE_ERR_INVALID_PARAMETER);
 
 	pobj = (COSE_MacMessage *)COSE_CALLOC(1, sizeof(COSE_MacMessage), context);
-	CHECK_CONDITION(pobj != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(pobj != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	if (!_COSE_Init(flags, &pobj->m_message, COSE_mac_object,
 			CBOR_CONTEXT_PARAM_COMMA perr)) {
@@ -59,11 +59,11 @@
 	return (HCOSE_MAC)pobj;
 
 errorReturn:
-	if (pobj != NULL) {
+	if (pobj != nullptr) {
 		_COSE_Mac_Release(pobj);
 		COSE_FREE(pobj, context);
 	}
-	return NULL;
+	return nullptr;
 }
 
 HCOSE_MAC _COSE_Mac_Init_From_Object(cn_cbor *cbor,
@@ -71,27 +71,27 @@
 	CBOR_CONTEXT_COMMA cose_errback *perr)
 {
 	COSE_MacMessage *pobj = pIn;
-	cn_cbor *pRecipients = NULL;
+	cn_cbor *pRecipients = nullptr;
 	// cn_cbor * tmp;
 	cose_errback error = {COSE_ERR_NONE};
-	if (perr == NULL) {
+	if (perr == nullptr) {
 		perr = &error;
 	}
 
-	if (pobj == NULL) {
+	if (pobj == nullptr) {
 		pobj =
 			(COSE_MacMessage *)COSE_CALLOC(1, sizeof(COSE_MacMessage), context);
 	}
-	if (pobj == NULL) {
+	if (pobj == nullptr) {
 		perr->err = COSE_ERR_OUT_OF_MEMORY;
 	errorReturn:
-		if (pobj != NULL) {
+		if (pobj != nullptr) {
 			_COSE_Mac_Release(pobj);
-			if (pIn == NULL) {
+			if (pIn == nullptr) {
 				COSE_FREE(pobj, context);
 			}
 		}
-		return NULL;
+		return nullptr;
 	}
 
 	if (!_COSE_Init_From_Object(
@@ -100,15 +100,15 @@
 	}
 
 	pRecipients = _COSE_arrayget_int(&pobj->m_message, INDEX_MAC_RECIPIENTS);
-	if (pRecipients != NULL) {
+	if (pRecipients != nullptr) {
 		CHECK_CONDITION(
 			pRecipients->type == CN_CBOR_ARRAY, COSE_ERR_INVALID_PARAMETER);
 
 		pRecipients = pRecipients->first_child;
-		while (pRecipients != NULL) {
+		while (pRecipients != nullptr) {
 			COSE_RecipientInfo *pInfo = _COSE_Recipient_Init_From_Object(
 				pRecipients, CBOR_CONTEXT_PARAM_COMMA perr);
-			if (pInfo == NULL) {
+			if (pInfo == nullptr) {
 				goto errorReturn;
 			}
 
@@ -157,7 +157,7 @@
 	COSE_RecipientInfo *pRecipient;
 	COSE_RecipientInfo *pRecipient2;
 
-	for (pRecipient = p->m_recipientFirst; pRecipient != NULL;
+	for (pRecipient = p->m_recipientFirst; pRecipient != nullptr;
 		 pRecipient = pRecipient2) {
 		pRecipient2 = pRecipient->m_recipientNext;
 		COSE_Recipient_Free((HCOSE_RECIPIENT)pRecipient);
@@ -177,24 +177,24 @@
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context = &p->m_message.m_allocContext;
 #endif
-	cn_cbor *ptmp = NULL;
+	cn_cbor *ptmp = nullptr;
 	cn_cbor_errback cbor_error;
 
 	CHECK_CONDITION(IsValidMacHandle(cose), COSE_ERR_INVALID_PARAMETER);
 
 	ptmp = cn_cbor_data_create(
 		rgbContent, (int)cbContent, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(ptmp != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(ptmp != nullptr, cbor_error);
 
 	CHECK_CONDITION_CBOR(_COSE_array_replace(&p->m_message, ptmp, INDEX_BODY,
 							 CBOR_CONTEXT_PARAM_COMMA & cbor_error),
 		cbor_error);
-	ptmp = NULL;
+	ptmp = nullptr;
 
 	return true;
 
 errorReturn:
-	if (ptmp != NULL) {
+	if (ptmp != nullptr) {
 		CN_CBOR_FREE(ptmp, context);
 	}
 	return false;
@@ -222,7 +222,7 @@
 	cose_errback *perr)
 {
 	if (!IsValidMacHandle(hcose)) {
-		if (perr != NULL) {
+		if (perr != nullptr) {
 			perr->err = COSE_ERR_INVALID_PARAMETER;
 		}
 		return false;
@@ -238,10 +238,10 @@
 	cose_errback *perror)
 {
 	if (!IsValidMacHandle(h)) {
-		if (perror != NULL) {
+		if (perror != nullptr) {
 			perror->err = COSE_ERR_INVALID_PARAMETER;
 		}
-		return NULL;
+		return nullptr;
 	}
 
 	return _COSE_map_get_int(
@@ -254,8 +254,8 @@
 	int flags,
 	cose_errback *perror)
 {
-	if (!IsValidMacHandle(h) || (value == NULL)) {
-		if (perror != NULL) {
+	if (!IsValidMacHandle(h) || (value == nullptr)) {
+		if (perror != nullptr) {
 			perror->err = COSE_ERR_INVALID_PARAMETER;
 		}
 		return false;
@@ -273,89 +273,89 @@
 	size_t *pcbAuthData,
 	CBOR_CONTEXT_COMMA cose_errback *perr)
 {
-	cn_cbor *pAuthData = NULL;
+	cn_cbor *pAuthData = nullptr;
 	bool fRet = false;
 	cn_cbor_errback cbor_error;
-	cn_cbor *ptmp = NULL;
+	cn_cbor *ptmp = nullptr;
 	cn_cbor *pcn;
 	size_t cbAuthData;
-	byte *pbAuthData = NULL;
+	byte *pbAuthData = nullptr;
 
 	//  Build authenticated data
 	//  Protected headers
 	//  external data
 	//  body
 
-	pAuthData = cn_cbor_array_create(CBOR_CONTEXT_PARAM_COMMA NULL);
-	CHECK_CONDITION(pAuthData != NULL, COSE_ERR_OUT_OF_MEMORY);
+	pAuthData = cn_cbor_array_create(CBOR_CONTEXT_PARAM_COMMA nullptr);
+	CHECK_CONDITION(pAuthData != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	//  Add the context string
 
 	ptmp =
 		cn_cbor_string_create(szContext, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(ptmp != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(ptmp != nullptr, cbor_error);
 	CHECK_CONDITION_CBOR(
 		cn_cbor_array_append(pAuthData, ptmp, &cbor_error), cbor_error);
-	ptmp = NULL;
+	ptmp = nullptr;
 
 	// Add the protected attributes
 
 	pcn = _COSE_arrayget_int(pCose, INDEX_PROTECTED);
-	CHECK_CONDITION((pcn != NULL) && (pcn->type == CN_CBOR_BYTES),
+	CHECK_CONDITION((pcn != nullptr) && (pcn->type == CN_CBOR_BYTES),
 		COSE_ERR_INVALID_PARAMETER);
 
 	if ((pcn->length == 1) && (pcn->v.bytes[0] == 0xa0)) {
-		ptmp = cn_cbor_data_create(NULL, 0, CBOR_CONTEXT_PARAM_COMMA NULL);
+		ptmp = cn_cbor_data_create(nullptr, 0, CBOR_CONTEXT_PARAM_COMMA nullptr);
 	}
 	else {
 		ptmp = cn_cbor_data_create(
-			pcn->v.bytes, (int)pcn->length, CBOR_CONTEXT_PARAM_COMMA NULL);
+			pcn->v.bytes, (int)pcn->length, CBOR_CONTEXT_PARAM_COMMA nullptr);
 	}
-	CHECK_CONDITION(ptmp != NULL, COSE_ERR_CBOR);
+	CHECK_CONDITION(ptmp != nullptr, COSE_ERR_CBOR);
 
-	CHECK_CONDITION(cn_cbor_array_append(pAuthData, ptmp, NULL), COSE_ERR_CBOR);
-	ptmp = NULL;
+	CHECK_CONDITION(cn_cbor_array_append(pAuthData, ptmp, nullptr), COSE_ERR_CBOR);
+	ptmp = nullptr;
 
 	//  Add the external bytes
 
 	ptmp = cn_cbor_data_create(pCose->m_pbExternal, (int)pCose->m_cbExternal,
 		CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(ptmp != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(ptmp != nullptr, cbor_error);
 	CHECK_CONDITION_CBOR(
 		cn_cbor_array_append(pAuthData, ptmp, &cbor_error), cbor_error);
-	ptmp = NULL;
+	ptmp = nullptr;
 
 	//  Add the content
 	pcn = _COSE_arrayget_int(pCose, INDEX_BODY);
 	ptmp = cn_cbor_data_create(
 		pcn->v.bytes, (int)pcn->length, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(ptmp != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(ptmp != nullptr, cbor_error);
 	CHECK_CONDITION_CBOR(
 		cn_cbor_array_append(pAuthData, ptmp, &cbor_error), cbor_error);
-	ptmp = NULL;
+	ptmp = nullptr;
 
 	//  Turn it into bytes
 	cbAuthData = cn_cbor_encode_size(pAuthData);
 	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(pbAuthData != nullptr, COSE_ERR_OUT_OF_MEMORY);
 	CHECK_CONDITION(cn_cbor_encoder_write(pbAuthData, 0, cbAuthData,
 						pAuthData) == (ssize_t)cbAuthData,
 		COSE_ERR_CBOR);
 
 	*ppbAuthData = pbAuthData;
 	*pcbAuthData = cbAuthData;
-	pbAuthData = NULL;
+	pbAuthData = nullptr;
 	fRet = true;
 
 errorReturn:
-	if (pbAuthData != NULL) {
+	if (pbAuthData != nullptr) {
 		COSE_FREE(pbAuthData, context);
 	}
-	if (pAuthData != NULL) {
+	if (pAuthData != nullptr) {
 		CN_CBOR_FREE(pAuthData, context);
 	}
-	if (ptmp != NULL) {
+	if (ptmp != nullptr) {
 		CN_CBOR_FREE(ptmp, context);
 	}
 	return fRet;
@@ -369,9 +369,9 @@
 
 	CHECK_CONDITION(IsValidMacHandle(h), COSE_ERR_INVALID_HANDLE);
 	CHECK_CONDITION(
-		pcose->m_recipientFirst != NULL, COSE_ERR_INVALID_PARAMETER);
+		pcose->m_recipientFirst != nullptr, COSE_ERR_INVALID_PARAMETER);
 
-	return _COSE_Mac_compute(pcose, NULL, 0, "MAC", perr);
+	return _COSE_Mac_compute(pcose, nullptr, 0, "MAC", perr);
 
 errorReturn:
 	return false;
@@ -388,25 +388,25 @@
 	int alg;
 	int t;
 	COSE_RecipientInfo *pri;
-	const cn_cbor *cn_Alg = NULL;
-	byte *pbAuthData = NULL;
+	const cn_cbor *cn_Alg = nullptr;
+	byte *pbAuthData = nullptr;
 	size_t cbitKey;
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context = &pcose->m_message.m_allocContext;
 #endif
 	bool fRet = false;
 	size_t cbAuthData = 0;
-	const byte *pbKey = NULL;
-	byte *pbKeyNew = NULL;
+	const byte *pbKey = nullptr;
+	byte *pbKeyNew = nullptr;
 	size_t cbKey = 0;
 
 	if (false) {
 	errorReturn:
-		if (pbKeyNew != NULL) {
+		if (pbKeyNew != nullptr) {
 			memset(pbKeyNew, 0, cbKey);
 			COSE_FREE(pbKeyNew, context);
 		}
-		if (pbAuthData != NULL) {
+		if (pbAuthData != nullptr) {
 			COSE_FREE(pbAuthData, context);
 		}
 		return fRet;		
@@ -414,7 +414,7 @@
 	
 	cn_Alg = _COSE_map_get_int(
 		&pcose->m_message, COSE_Header_Algorithm, COSE_BOTH, perr);
-	if (cn_Alg == NULL) {
+	if (cn_Alg == nullptr) {
 		goto errorReturn;
 	}
 	CHECK_CONDITION(cn_Alg->type != CN_CBOR_TEXT, COSE_ERR_UNKNOWN_ALGORITHM);
@@ -481,23 +481,23 @@
 
 	//  If we are doing direct encryption - then recipient generates the key
 
-	if (pbKeyIn != NULL) {
+	if (pbKeyIn != nullptr) {
 		CHECK_CONDITION(cbKeyIn == cbitKey / 8, COSE_ERR_INVALID_PARAMETER);
 		pbKey = pbKeyIn;
 		cbKey = cbKeyIn;
 	}
 	else {
 		t = 0;
-		for (pri = pcose->m_recipientFirst; pri != NULL;
+		for (pri = pcose->m_recipientFirst; pri != nullptr;
 			 pri = pri->m_recipientNext) {
 			if (pri->m_encrypt.m_message.m_flags & 1) {
-				CHECK_CONDITION(pbKey == NULL, COSE_ERR_INVALID_PARAMETER);
+				CHECK_CONDITION(pbKey == nullptr, COSE_ERR_INVALID_PARAMETER);
 
 				t |= 1;
 				pbKeyNew =
 					_COSE_RecipientInfo_generateKey(pri, alg, cbitKey, perr);
 				cbKey = cbitKey / 8;
-				CHECK_CONDITION(pbKeyNew != NULL, COSE_ERR_OUT_OF_MEMORY);
+				CHECK_CONDITION(pbKeyNew != nullptr, COSE_ERR_OUT_OF_MEMORY);
 				pbKey = pbKeyNew;
 			}
 			else {
@@ -508,7 +508,7 @@
 
 		if (t == 2) {
 			pbKeyNew = (byte *)COSE_CALLOC(cbitKey / 8, 1, context);
-			CHECK_CONDITION(pbKeyNew != NULL, COSE_ERR_OUT_OF_MEMORY);
+			CHECK_CONDITION(pbKeyNew != nullptr, COSE_ERR_OUT_OF_MEMORY);
 			pbKey = pbKeyNew;
 			cbKey = cbitKey / 8;
 			rand_bytes(pbKeyNew, cbKey);
@@ -519,7 +519,7 @@
 
 	const cn_cbor *cbProtected =
 		_COSE_encode_protected(&pcose->m_message, perr);
-	if (cbProtected == NULL) {
+	if (cbProtected == nullptr) {
 		goto errorReturn;
 	}
 
@@ -607,7 +607,7 @@
 			FAIL_CONDITION(COSE_ERR_INVALID_PARAMETER);
 	}
 
-	for (pri = pcose->m_recipientFirst; pri != NULL;
+	for (pri = pcose->m_recipientFirst; pri != nullptr;
 		 pri = pri->m_recipientNext) {
 		if (!_COSE_Recipient_encrypt(pri, pbKey, cbKey, perr)) {
 			goto errorReturn;
@@ -615,7 +615,7 @@
 	}
 
 #if INCLUDE_COUNTERSIGNATURE
-	if (pcose->m_message.m_counterSigners != NULL) {
+	if (pcose->m_message.m_counterSigners != nullptr) {
 		if (!_COSE_CounterSign_Sign(
 				&pcose->m_message, CBOR_CONTEXT_PARAM_COMMA perr)) {
 			goto errorReturn;
@@ -635,7 +635,7 @@
 {
 	cose_errback error;
 
-	if (perr == NULL) {
+	if (perr == nullptr) {
 		perr = &error;
 	}
 
@@ -645,7 +645,7 @@
 	CHECK_CONDITION(IsValidMacHandle(h) && IsValidRecipientHandle(hRecip),
 		COSE_ERR_INVALID_PARAMETER);
 
-	return _COSE_Mac_validate(pcose, pRecip, NULL, 0, "MAC", perr);
+	return _COSE_Mac_validate(pcose, pRecip, nullptr, 0, "MAC", perr);
 
 errorReturn:
 	return false;
@@ -660,25 +660,25 @@
 	const char *szContext,
 	cose_errback *perr)
 {
-	byte *pbAuthData = NULL;
+	byte *pbAuthData = nullptr;
 	size_t cbitKey = 0;
 	bool fRet = false;
 
 	int alg;
-	const cn_cbor *cn = NULL;
-	byte *pbKeyNew = NULL;
-	const byte *pbKey = NULL;
+	const cn_cbor *cn = nullptr;
+	byte *pbKeyNew = nullptr;
+	const byte *pbKey = nullptr;
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context = &pcose->m_message.m_allocContext;
 #endif
 	size_t cbAuthData;
 
 	CHECK_CONDITION(
-		!((pRecip != NULL) && (pbKeyIn != NULL)), COSE_ERR_INTERNAL);
+		!((pRecip != nullptr) && (pbKeyIn != nullptr)), COSE_ERR_INTERNAL);
 
 	cn = _COSE_map_get_int(
 		&pcose->m_message, COSE_Header_Algorithm, COSE_BOTH, perr);
-	if (cn == NULL) {
+	if (cn == nullptr) {
 		goto errorReturn;
 	}
 
@@ -747,23 +747,23 @@
 
 	//  Allocate the key if we have not already done so
 
-	if (pbKeyIn != NULL) {
+	if (pbKeyIn != nullptr) {
 		CHECK_CONDITION(cbitKey / 8 == cbKeyIn, COSE_ERR_INVALID_PARAMETER);
 		pbKey = pbKeyIn;
 	}
 	else {
-		if (pbKeyNew == NULL) {
+		if (pbKeyNew == nullptr) {
 			pbKeyNew = static_cast<byte*>(COSE_CALLOC(cbitKey / 8, 1, context));
-			CHECK_CONDITION(pbKeyNew != NULL, COSE_ERR_OUT_OF_MEMORY);
+			CHECK_CONDITION(pbKeyNew != nullptr, COSE_ERR_OUT_OF_MEMORY);
 			pbKey = pbKeyNew;
 		}
 
 		//  If there is a recipient - ask it for the key
 
-		if (pRecip != NULL) {
+		if (pRecip != nullptr) {
 			COSE_RecipientInfo *pRecipX;
 
-			for (pRecipX = pcose->m_recipientFirst; pRecipX != NULL;
+			for (pRecipX = pcose->m_recipientFirst; pRecipX != nullptr;
 				 pRecipX = pRecipX->m_recipientNext) {
 				if (pRecip == pRecipX) {
 					if (!_COSE_Recipient_decrypt(
@@ -772,24 +772,24 @@
 					}
 					break;
 				}
-				else if (pRecipX->m_encrypt.m_recipientFirst != NULL) {
+				else if (pRecipX->m_encrypt.m_recipientFirst != nullptr) {
 					if (_COSE_Recipient_decrypt(
 							pRecipX, pRecip, alg, cbitKey, pbKeyNew, perr)) {
 						break;
 					}
 				}
 			}
-			CHECK_CONDITION(pRecipX != NULL, COSE_ERR_NO_RECIPIENT_FOUND);
+			CHECK_CONDITION(pRecipX != nullptr, COSE_ERR_NO_RECIPIENT_FOUND);
 		}
 		else {
-			for (pRecip = pcose->m_recipientFirst; pRecip != NULL;
+			for (pRecip = pcose->m_recipientFirst; pRecip != nullptr;
 				 pRecip = pRecip->m_recipientNext) {
 				if (_COSE_Recipient_decrypt(
-						pRecip, NULL, alg, cbitKey, pbKeyNew, perr)) {
+						pRecip, nullptr, alg, cbitKey, pbKeyNew, perr)) {
 					break;
 				}
 			}
-			CHECK_CONDITION(pRecip != NULL, COSE_ERR_NO_RECIPIENT_FOUND);
+			CHECK_CONDITION(pRecip != nullptr, COSE_ERR_NO_RECIPIENT_FOUND);
 		}
 	}
 
@@ -881,12 +881,12 @@
 	fRet = true;
 
 errorReturn:
-	if (pbKeyNew != NULL) {
+	if (pbKeyNew != nullptr) {
 		memset(pbKeyNew, 0xff, cbitKey / 8);
 		COSE_FREE(pbKeyNew, context);
 	}
 
-	if (pbAuthData != NULL) {
+	if (pbAuthData != nullptr) {
 		COSE_FREE(pbAuthData, context);
 	}
 
@@ -901,10 +901,10 @@
 {
 	COSE_RecipientInfo *pRecip;
 	COSE_MacMessage *pMac;
-	cn_cbor *pRecipients = NULL;
-	cn_cbor *pRecipientsT = NULL;
+	cn_cbor *pRecipients = nullptr;
+	cn_cbor *pRecipientsT = nullptr;
 #ifdef USE_CBOR_CONTEXT
-	cn_cbor_context *context = NULL;
+	cn_cbor_context *context = nullptr;
 #endif
 	cn_cbor_errback cbor_error;
 
@@ -922,17 +922,17 @@
 #endif	// USE_CBOR_CONTEXT
 
 	pRecipients = _COSE_arrayget_int(&pMac->m_message, INDEX_MAC_RECIPIENTS);
-	if (pRecipients == NULL) {
+	if (pRecipients == nullptr) {
 		pRecipientsT =
 			cn_cbor_array_create(CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-		CHECK_CONDITION_CBOR(pRecipientsT != NULL, cbor_error);
+		CHECK_CONDITION_CBOR(pRecipientsT != nullptr, cbor_error);
 
 		CHECK_CONDITION_CBOR(
 			_COSE_array_replace(&pMac->m_message, pRecipientsT,
 				INDEX_MAC_RECIPIENTS, CBOR_CONTEXT_PARAM_COMMA & cbor_error),
 			cbor_error);
 		pRecipients = pRecipientsT;
-		pRecipientsT = NULL;
+		pRecipientsT = nullptr;
 	}
 
 	CHECK_CONDITION_CBOR(cn_cbor_array_append(pRecipients,
@@ -943,7 +943,7 @@
 	return true;
 
 errorReturn:
-	if (pRecipientsT == NULL) {
+	if (pRecipientsT == nullptr) {
 		CN_CBOR_FREE(pRecipientsT, context);
 	}
 	return false;
@@ -960,16 +960,16 @@
 
 	p = ((COSE_MacMessage *)cose)->m_recipientFirst;
 	for (i = 0; i < iRecipient; i++) {
-		CHECK_CONDITION(p != NULL, COSE_ERR_NO_RECIPIENT_FOUND);
+		CHECK_CONDITION(p != nullptr, COSE_ERR_NO_RECIPIENT_FOUND);
 		p = p->m_recipientNext;
 	}
-	if (p != NULL) {
+	if (p != nullptr) {
 		p->m_encrypt.m_message.m_refCount++;
 	}
 	return (HCOSE_RECIPIENT)p;
 
 errorReturn:
-	return NULL;
+	return nullptr;
 }
 
 #endif
diff --git a/src/MacMessage0.cpp b/src/MacMessage0.cpp
index 5c66546..c3683d2 100644
--- a/src/MacMessage0.cpp
+++ b/src/MacMessage0.cpp
@@ -18,7 +18,7 @@
 
 #if INCLUDE_MAC0
 
-COSE *Mac0Root = NULL;
+COSE *Mac0Root = nullptr;
 
 /*! \private
  * @brief Test if a HCOSE_MAC0 handle is valid
@@ -43,13 +43,13 @@
 HCOSE_MAC0 COSE_Mac0_Init(COSE_INIT_FLAGS flags,
 	CBOR_CONTEXT_COMMA cose_errback *perr)
 {
-	COSE_Mac0Message *pobj = NULL;
+	COSE_Mac0Message *pobj = nullptr;
 
 	CHECK_CONDITION(flags == COSE_INIT_FLAGS_NONE, COSE_ERR_INVALID_PARAMETER);
 
 	pobj =
 		(COSE_Mac0Message *)COSE_CALLOC(1, sizeof(COSE_Mac0Message), context);
-	CHECK_CONDITION(pobj != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(pobj != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	if (!_COSE_Init(flags, &pobj->m_message, COSE_mac0_object,
 			CBOR_CONTEXT_PARAM_COMMA perr)) {
@@ -61,11 +61,11 @@
 	return (HCOSE_MAC0)pobj;
 
 errorReturn:
-	if (pobj != NULL) {
+	if (pobj != nullptr) {
 		_COSE_Mac0_Release(pobj);
 		COSE_FREE(pobj, context);
 	}
-	return NULL;
+	return nullptr;
 }
 
 HCOSE_MAC0 _COSE_Mac0_Init_From_Object(cn_cbor *cbor,
@@ -73,27 +73,27 @@
 	CBOR_CONTEXT_COMMA cose_errback *perr)
 {
 	COSE_Mac0Message *pobj = pIn;
-	cn_cbor *pRecipients = NULL;
+	cn_cbor *pRecipients = nullptr;
 	// cn_cbor * tmp;
 	cose_errback error = {COSE_ERR_NONE};
-	if (perr == NULL) {
+	if (perr == nullptr) {
 		perr = &error;
 	}
 
-	if (pobj == NULL) {
+	if (pobj == nullptr) {
 		pobj = (COSE_Mac0Message *)COSE_CALLOC(
 			1, sizeof(COSE_Mac0Message), context);
 	}
-	if (pobj == NULL) {
+	if (pobj == nullptr) {
 		perr->err = COSE_ERR_OUT_OF_MEMORY;
 	errorReturn:
-		if (pobj != NULL) {
+		if (pobj != nullptr) {
 			_COSE_Mac0_Release(pobj);
-			if (pIn == NULL) {
+			if (pIn == nullptr) {
 				COSE_FREE(pobj, context);
 			}
 		}
-		return NULL;
+		return nullptr;
 	}
 
 	if (!_COSE_Init_From_Object(
@@ -102,7 +102,7 @@
 	}
 
 	pRecipients = _COSE_arrayget_int(&pobj->m_message, INDEX_MAC_RECIPIENTS);
-	CHECK_CONDITION(pRecipients == NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(pRecipients == nullptr, COSE_ERR_INVALID_PARAMETER);
 
 	_COSE_InsertInList(&Mac0Root, &pobj->m_message);
 
@@ -154,24 +154,24 @@
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context = &p->m_message.m_allocContext;
 #endif
-	cn_cbor *ptmp = NULL;
+	cn_cbor *ptmp = nullptr;
 	cn_cbor_errback cbor_error;
 
 	CHECK_CONDITION(IsValidMac0Handle(cose), COSE_ERR_INVALID_PARAMETER);
 
 	ptmp = cn_cbor_data_create(
 		rgbContent, (int)cbContent, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(ptmp != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(ptmp != nullptr, cbor_error);
 
 	CHECK_CONDITION_CBOR(_COSE_array_replace(&p->m_message, ptmp, INDEX_BODY,
 							 CBOR_CONTEXT_PARAM_COMMA & cbor_error),
 		cbor_error);
-	ptmp = NULL;
+	ptmp = nullptr;
 
 	return true;
 
 errorReturn:
-	if (ptmp != NULL) {
+	if (ptmp != nullptr) {
 		CN_CBOR_FREE(ptmp, context);
 	}
 	return false;
@@ -199,7 +199,7 @@
 	cose_errback *perr)
 {
 	if (!IsValidMac0Handle(hcose)) {
-		if (perr != NULL) {
+		if (perr != nullptr) {
 			perr->err = COSE_ERR_INVALID_PARAMETER;
 		}
 		return false;
@@ -215,10 +215,10 @@
 	cose_errback *perror)
 {
 	if (!IsValidMac0Handle(h)) {
-		if (perror != NULL) {
+		if (perror != nullptr) {
 			perror->err = COSE_ERR_INVALID_PARAMETER;
 		}
-		return NULL;
+		return nullptr;
 	}
 
 	return _COSE_map_get_int(
@@ -231,8 +231,8 @@
 	int flags,
 	cose_errback *perror)
 {
-	if (!IsValidMac0Handle(h) || (value == NULL)) {
-		if (perror != NULL) {
+	if (!IsValidMac0Handle(h) || (value == nullptr)) {
+		if (perror != nullptr) {
 			perror->err = COSE_ERR_INVALID_PARAMETER;
 		}
 		return false;
@@ -250,7 +250,7 @@
 	COSE_Mac0Message *pcose = (COSE_Mac0Message *)h;
 
 	CHECK_CONDITION(IsValidMac0Handle(h), COSE_ERR_INVALID_HANDLE);
-	CHECK_CONDITION(pbKey != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(pbKey != nullptr, COSE_ERR_INVALID_PARAMETER);
 
 	return _COSE_Mac_compute(pcose, pbKey, cbKey, "MAC0", perr);
 
@@ -265,9 +265,9 @@
 {
 	COSE_Mac0Message *pcose = (COSE_Mac0Message *)h;
 	CHECK_CONDITION(IsValidMac0Handle(h), COSE_ERR_INVALID_HANDLE);
-	CHECK_CONDITION(pbKey != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(pbKey != nullptr, COSE_ERR_INVALID_PARAMETER);
 
-	return _COSE_Mac_validate(pcose, NULL, pbKey, cbKey, "MAC0", perr);
+	return _COSE_Mac_validate(pcose, nullptr, pbKey, cbKey, "MAC0", perr);
 
 errorReturn:
 	return false;
diff --git a/src/Recipient.cpp b/src/Recipient.cpp
index 3714f32..e6f3147 100644
--- a/src/Recipient.cpp
+++ b/src/Recipient.cpp
@@ -20,7 +20,7 @@
 #endif
 
 #if INCLUDE_ENCRYPT || INCLUDE_MAC
-COSE *RecipientRoot = NULL;
+COSE *RecipientRoot = nullptr;
 
 /*! \private
  * @brief Test if a HCOSE_RECIPIENT handle is valid
@@ -39,7 +39,7 @@
 {
 	COSE_RecipientInfo *p = (COSE_RecipientInfo *)h;
 
-	if (p == NULL) {
+	if (p == nullptr) {
 		return false;
 	}
 	return _COSE_IsInList(RecipientRoot, &p->m_encrypt.m_message);
@@ -50,19 +50,19 @@
 {
 	if (false) {
 	errorReturn:
-		return NULL;		
+		return nullptr;		
 	}
 	
 	CHECK_CONDITION(flags == COSE_INIT_FLAGS_NONE, COSE_ERR_INVALID_PARAMETER);
 	COSE_RecipientInfo *pobj = (COSE_RecipientInfo *)COSE_CALLOC(
 		1, sizeof(COSE_RecipientInfo), context);
-	CHECK_CONDITION(pobj != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(pobj != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	if (!_COSE_Init(static_cast<COSE_INIT_FLAGS>(COSE_INIT_FLAGS_NO_CBOR_TAG | flags),
 	                &pobj->m_encrypt.m_message, COSE_recipient_object,
 	                CBOR_CONTEXT_PARAM_COMMA perr)) {
 		_COSE_Recipient_Free(pobj);
-		return NULL;
+		return nullptr;
 	}
 
 	_COSE_InsertInList(&RecipientRoot, &pobj->m_encrypt.m_message);
@@ -94,11 +94,11 @@
 	int cbKid,
 	CBOR_CONTEXT_COMMA cose_errback *perr)
 {
-	HCOSE_RECIPIENT hRecipient = NULL;
+	HCOSE_RECIPIENT hRecipient = nullptr;
 
 	hRecipient = COSE_Recipient_Init(
 		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA perr);
-	if (hRecipient == NULL) {
+	if (hRecipient == nullptr) {
 		goto errorReturn;
 	}
 
@@ -110,25 +110,25 @@
 	return hRecipient;
 
 errorReturn:
-	if (hRecipient != NULL) {
+	if (hRecipient != nullptr) {
 		COSE_Recipient_Free(hRecipient);
 	}
-	return NULL;
+	return nullptr;
 }
 
 COSE_RecipientInfo *_COSE_Recipient_Init_From_Object(cn_cbor *cbor,
 	CBOR_CONTEXT_COMMA cose_errback *perr)
 {
-	COSE_RecipientInfo *pRecipient = NULL;
+	COSE_RecipientInfo *pRecipient = nullptr;
 
 	pRecipient = (COSE_RecipientInfo *)COSE_CALLOC(
 		1, sizeof(COSE_RecipientInfo), context);
-	CHECK_CONDITION(pRecipient != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(pRecipient != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	CHECK_CONDITION(cbor->type == CN_CBOR_ARRAY, COSE_ERR_INVALID_PARAMETER);
 
 	if (_COSE_Enveloped_Init_From_Object(cbor, &pRecipient->m_encrypt,
-			CBOR_CONTEXT_PARAM_COMMA perr) == NULL) {
+			CBOR_CONTEXT_PARAM_COMMA perr) == nullptr) {
 		goto errorReturn;
 	}
 
@@ -137,10 +137,10 @@
 	return pRecipient;
 
 errorReturn:
-	if (pRecipient != NULL) {
+	if (pRecipient != nullptr) {
 		_COSE_Recipient_Free(pRecipient);
 	}
-	return NULL;
+	return nullptr;
 }
 
 void _COSE_Recipient_Free(COSE_RecipientInfo *pRecipient)
@@ -151,10 +151,10 @@
 	}
 
 	_COSE_Enveloped_Release(&pRecipient->m_encrypt);
-	if (pRecipient->m_pkey != NULL) {
+	if (pRecipient->m_pkey != nullptr) {
 		COSE_KEY_Free((HCOSE_KEY) pRecipient->m_pkey);
 	}
-	if (pRecipient->m_pkeyStatic != NULL) {
+	if (pRecipient->m_pkeyStatic != nullptr) {
 		COSE_KEY_Free((HCOSE_KEY) pRecipient->m_pkeyStatic);
 	}
 
@@ -192,13 +192,13 @@
 	size_t cbitHash,
 	CBOR_CONTEXT_COMMA cose_errback *perr)
 {
-	byte *pbContext = NULL;
+	byte *pbContext = nullptr;
 	size_t cbContext;
 	bool fRet = false;
 	const cn_cbor *cn;
 	byte rgbDigest[512 / 8];
 	size_t cbDigest;
-	byte *pbSecret = NULL;
+	byte *pbSecret = nullptr;
 	size_t cbSecret = 0;
 
 	if (!BuildContextBytes(pCose, algResult, cbitKey, &pbContext, &cbContext,
@@ -210,31 +210,31 @@
 #ifdef USE_ECDH
 		COSE_KEY *pkeyMessage;
 
-		if (pKeyPrivate != NULL) {
+		if (pKeyPrivate != nullptr) {
 			cn = cn_cbor_mapget_int(pKeyPrivate->m_cborKey, COSE_Key_Type);
-			CHECK_CONDITION((cn != NULL) && (cn->type == CN_CBOR_UINT),
+			CHECK_CONDITION((cn != nullptr) && (cn->type == CN_CBOR_UINT),
 				COSE_ERR_INVALID_PARAMETER);
 			CHECK_CONDITION(
 				cn->v.uint == COSE_Key_Type_EC2, COSE_ERR_INVALID_PARAMETER);
 		}
 
-		if (pKeyPublic != NULL) {
+		if (pKeyPublic != nullptr) {
 			cn = cn_cbor_mapget_int(pKeyPublic->m_cborKey, COSE_Key_Type);
-			CHECK_CONDITION((cn != NULL) && (cn->type == CN_CBOR_UINT),
+			CHECK_CONDITION((cn != nullptr) && (cn->type == CN_CBOR_UINT),
 				COSE_ERR_INVALID_PARAMETER);
 			CHECK_CONDITION(
 				cn->v.uint == COSE_Key_Type_EC2, COSE_ERR_INVALID_PARAMETER);
 		}
 
 		if (fSend) {
-			CHECK_CONDITION(pKeyPublic != NULL, COSE_ERR_INVALID_PARAMETER);
+			CHECK_CONDITION(pKeyPublic != nullptr, COSE_ERR_INVALID_PARAMETER);
 			pkeyMessage = pKeyPrivate;
 
 			if (!ECDH_ComputeSecret(pCose, &pkeyMessage, pKeyPublic, &pbSecret,
 					&cbSecret, CBOR_CONTEXT_PARAM_COMMA perr)) {
 				goto errorReturn;
 			}
-			if (!fStatic && pkeyMessage->m_cborKey->parent == NULL) {
+			if (!fStatic && pkeyMessage->m_cborKey->parent == nullptr) {
 				if (!_COSE_map_put(pCose, COSE_Header_ECDH_EPHEMERAL,
 						pkeyMessage->m_cborKey, COSE_UNPROTECT_ONLY, perr)) {
 					goto errorReturn;
@@ -245,14 +245,14 @@
 			cn_cbor * cborKey = _COSE_map_get_int(pCose,
 				fStatic ? COSE_Header_ECDH_STATIC : COSE_Header_ECDH_EPHEMERAL,
 				COSE_BOTH, perr);
-			CHECK_CONDITION(cborKey != NULL, COSE_ERR_OUT_OF_MEMORY);
+			CHECK_CONDITION(cborKey != nullptr, COSE_ERR_OUT_OF_MEMORY);
 			
 			pkeyMessage = (COSE_KEY *) COSE_KEY_FromCbor(cborKey, CBOR_CONTEXT_PARAM_COMMA perr);
-			if (pkeyMessage == NULL) {
+			if (pkeyMessage == nullptr) {
 				goto errorReturn;
 			}
 
-			CHECK_CONDITION(pKeyPrivate != NULL, COSE_ERR_INVALID_PARAMETER);
+			CHECK_CONDITION(pKeyPrivate != nullptr, COSE_ERR_INVALID_PARAMETER);
 
 			if (!ECDH_ComputeSecret(pCose, &pKeyPrivate,
 					pkeyMessage, &pbSecret, &cbSecret,
@@ -265,9 +265,9 @@
 #endif
 	}
 	else {
-		CHECK_CONDITION(pKeyPrivate != NULL, COSE_ERR_INVALID_PARAMETER);
+		CHECK_CONDITION(pKeyPrivate != nullptr, COSE_ERR_INVALID_PARAMETER);
 		cn = cn_cbor_mapget_int(pKeyPrivate->m_cborKey, COSE_Key_Type);
-		CHECK_CONDITION((cn != NULL) && (cn->type == CN_CBOR_UINT),
+		CHECK_CONDITION((cn != nullptr) && (cn->type == CN_CBOR_UINT),
 			COSE_ERR_INVALID_PARAMETER);
 		CHECK_CONDITION(
 			cn->v.uint == COSE_Key_Type_OCTET, COSE_ERR_INVALID_PARAMETER);
@@ -275,7 +275,7 @@
 		CHECK_CONDITION(cn->v.sint == 4, COSE_ERR_INVALID_PARAMETER);
 
 		cn = cn_cbor_mapget_int(pKeyPrivate->m_cborKey, -1);
-		CHECK_CONDITION((cn != NULL) && (cn->type == CN_CBOR_BYTES),
+		CHECK_CONDITION((cn != nullptr) && (cn->type == CN_CBOR_BYTES),
 			COSE_ERR_INVALID_PARAMETER);
 		pbSecret = (byte *)cn->v.bytes;
 		cbSecret = cn->length;
@@ -309,12 +309,12 @@
 	fRet = true;
 
 errorReturn:
-	if (fECDH && pbSecret != NULL) {
+	if (fECDH && pbSecret != nullptr) {
 		memset(pbSecret, 0, cbSecret);
 		COSE_FREE(pbSecret, context);
 	}
 	memset(rgbDigest, 0, sizeof(rgbDigest));
-	if (pbContext != NULL) {
+	if (pbContext != nullptr) {
 		COSE_FREE(pbContext, context);
 	}
 	return fRet;
@@ -330,19 +330,19 @@
 {
 	UNUSED(pRecipUse);
 	int alg;
-	const cn_cbor *cn = NULL;
+	const cn_cbor *cn = nullptr;
 	COSE_RecipientInfo *pRecip2;
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context;
 #endif
-	byte *pbAuthData = NULL;
-	byte *pbProtected = NULL;
+	byte *pbAuthData = nullptr;
+	byte *pbProtected = nullptr;
 	COSE_Enveloped *pcose = &pRecip->m_encrypt;
-	cn_cbor *cnBody = NULL;
-	byte *pbContext = NULL;
-	byte *pbSecret = NULL;
+	cn_cbor *cnBody = nullptr;
+	byte *pbContext = nullptr;
+	byte *pbSecret = nullptr;
 	int cbKey2;
-	byte *pbKeyX = NULL;
+	byte *pbKeyX = nullptr;
 	int cbitKeyX = 0;
 	byte rgbKey[256 / 8];
 
@@ -354,21 +354,21 @@
 
 	cn = _COSE_map_get_int(
 		&pRecip->m_encrypt.m_message, COSE_Header_Algorithm, COSE_BOTH, perr);
-	if (cn == NULL) {
+	if (cn == nullptr) {
 	errorReturn:
-		if (pbContext != NULL) {
+		if (pbContext != nullptr) {
 			COSE_FREE(pbContext, context);
 		}
-		if (pbProtected != NULL) {
+		if (pbProtected != nullptr) {
 			COSE_FREE(pbProtected, context);
 		}
-		if (pbAuthData != NULL) {
+		if (pbAuthData != nullptr) {
 			COSE_FREE(pbAuthData, context);
 		}
-		if (pbSecret != NULL) {
+		if (pbSecret != nullptr) {
 			COSE_FREE(pbSecret, context);
 		}
-		if (pbKeyX != NULL) {
+		if (pbKeyX != nullptr) {
 			COSE_FREE(pbKeyX, context);
 		}
 		return false;
@@ -378,13 +378,13 @@
 		COSE_ERR_INVALID_PARAMETER);
 	alg = (int)cn->v.uint;
 
-	CHECK_CONDITION(pbKeyOut != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(pbKeyOut != nullptr, COSE_ERR_INVALID_PARAMETER);
 
 	switch (alg) {
 		case COSE_Algorithm_Direct:
-			CHECK_CONDITION(pRecip->m_pkey != NULL, COSE_ERR_INVALID_PARAMETER);
+			CHECK_CONDITION(pRecip->m_pkey != nullptr, COSE_ERR_INVALID_PARAMETER);
 			cn = cn_cbor_mapget_int(pRecip->m_pkey->m_cborKey, -1);
-			CHECK_CONDITION((cn != NULL) && (cn->type == CN_CBOR_BYTES),
+			CHECK_CONDITION((cn != nullptr) && (cn->type == CN_CBOR_BYTES),
 				COSE_ERR_INVALID_PARAMETER);
 			CHECK_CONDITION(((size_t)cn->length == cbitKeyOut / 8),
 				COSE_ERR_INVALID_PARAMETER);
@@ -485,18 +485,18 @@
 			break;
 	}
 
-	if (pcose->m_recipientFirst != NULL) {
+	if (pcose->m_recipientFirst != nullptr) {
 		//  If there is a recipient - ask it for the key
 		CHECK_CONDITION(cbitKeyX != 0, COSE_ERR_INVALID_PARAMETER);
 		pbKeyX = (byte*) COSE_CALLOC(cbitKeyX / 8, 1, context);
-		CHECK_CONDITION(pbKeyX != NULL, COSE_ERR_OUT_OF_MEMORY);
+		CHECK_CONDITION(pbKeyX != nullptr, COSE_ERR_OUT_OF_MEMORY);
 		cose_errback error = {COSE_ERR_NONE};
 		cose_error errorFound = COSE_ERR_NONE;
 
-		for (pRecip2 = pcose->m_recipientFirst; pRecip2 != NULL;
+		for (pRecip2 = pcose->m_recipientFirst; pRecip2 != nullptr;
 			 pRecip2 = pRecip->m_recipientNext) {
 			if (_COSE_Recipient_decrypt(
-					pRecip2, NULL, alg, cbitKeyX, pbKeyX, &error)) {
+					pRecip2, nullptr, alg, cbitKeyX, pbKeyX, &error)) {
 				break;
 			}
 			if (error.err == COSE_ERR_NO_COMPRESSED_POINTS ||
@@ -509,16 +509,16 @@
 			perr->err = errorFound;
 			goto errorReturn;
 		}
-		CHECK_CONDITION(pRecip2 != NULL, COSE_ERR_NO_RECIPIENT_FOUND);
+		CHECK_CONDITION(pRecip2 != nullptr, COSE_ERR_NO_RECIPIENT_FOUND);
 	}
 
 	cnBody = _COSE_arrayget_int(&pcose->m_message, INDEX_BODY);
-	CHECK_CONDITION(cnBody != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(cnBody != nullptr, COSE_ERR_INVALID_PARAMETER);
 
 	switch (alg) {
 #ifdef USE_AES_KW_128
 		case COSE_Algorithm_AES_KW_128:
-			if (pbKeyX != NULL) {
+			if (pbKeyX != nullptr) {
 				int x = (int) (cbitKeyOut / 8);
 				if (!AES_KW_Decrypt((COSE_Enveloped *)pcose, pbKeyX, cbitKeyX,
 						cnBody->v.bytes, cnBody->length, pbKeyOut, &x, perr)) {
@@ -527,10 +527,10 @@
 			}
 			else {
 				CHECK_CONDITION(
-					pRecip->m_pkey != NULL, COSE_ERR_INVALID_PARAMETER);
+					pRecip->m_pkey != nullptr, COSE_ERR_INVALID_PARAMETER);
 				int x = cbitKeyOut / 8;
 				cn = cn_cbor_mapget_int(pRecip->m_pkey->m_cborKey, -1);
-				CHECK_CONDITION((cn != NULL) && (cn->type == CN_CBOR_BYTES),
+				CHECK_CONDITION((cn != nullptr) && (cn->type == CN_CBOR_BYTES),
 					COSE_ERR_INVALID_PARAMETER);
 
 				if (!AES_KW_Decrypt((COSE_Enveloped *)pcose, cn->v.bytes,
@@ -544,7 +544,7 @@
 
 #ifdef USE_AES_KW_192
 		case COSE_Algorithm_AES_KW_192:
-			if (pbKeyX != NULL) {
+			if (pbKeyX != nullptr) {
 				int x = cbitKeyOut / 8;
 				if (!AES_KW_Decrypt((COSE_Enveloped *)pcose, pbKeyX, cbitKeyX,
 						cnBody->v.bytes, cnBody->length, pbKeyOut, &x, perr)) {
@@ -553,10 +553,10 @@
 			}
 			else {
 				CHECK_CONDITION(
-					pRecip->m_pkey != NULL, COSE_ERR_INVALID_PARAMETER);
+					pRecip->m_pkey != nullptr, COSE_ERR_INVALID_PARAMETER);
 				int x = cbitKeyOut / 8;
 				cn = cn_cbor_mapget_int(pRecip->m_pkey->m_cborKey, -1);
-				CHECK_CONDITION((cn != NULL) && (cn->type == CN_CBOR_BYTES),
+				CHECK_CONDITION((cn != nullptr) && (cn->type == CN_CBOR_BYTES),
 					COSE_ERR_INVALID_PARAMETER);
 
 				if (!AES_KW_Decrypt((COSE_Enveloped *)pcose, cn->v.bytes,
@@ -570,7 +570,7 @@
 
 #ifdef USE_AES_KW_256
 		case COSE_Algorithm_AES_KW_256:
-			if (pbKeyX != NULL) {
+			if (pbKeyX != nullptr) {
 				int x = cbitKeyOut / 8;
 				if (!AES_KW_Decrypt((COSE_Enveloped *)pcose, pbKeyX, cbitKeyX,
 						cnBody->v.bytes, cnBody->length, pbKeyOut, &x, perr)) {
@@ -579,10 +579,10 @@
 			}
 			else {
 				CHECK_CONDITION(
-					pRecip->m_pkey != NULL, COSE_ERR_INVALID_PARAMETER);
+					pRecip->m_pkey != nullptr, COSE_ERR_INVALID_PARAMETER);
 				int x = cbitKeyOut / 8;
 				cn = cn_cbor_mapget_int(pRecip->m_pkey->m_cborKey, -1);
-				CHECK_CONDITION((cn != NULL) && (cn->type == CN_CBOR_BYTES),
+				CHECK_CONDITION((cn != nullptr) && (cn->type == CN_CBOR_BYTES),
 					COSE_ERR_INVALID_PARAMETER);
 
 				if (!AES_KW_Decrypt((COSE_Enveloped *)pcose, cn->v.bytes,
@@ -597,7 +597,7 @@
 #ifdef USE_Direct_HKDF_HMAC_SHA_256
 		case COSE_Algorithm_Direct_HKDF_HMAC_SHA_256:
 			if (!HKDF_X(&pcose->m_message, true, false, false, false, algIn,
-					pRecip->m_pkey, NULL, pbKeyOut, cbitKeyOut, 256,
+					pRecip->m_pkey, nullptr, pbKeyOut, cbitKeyOut, 256,
 					CBOR_CONTEXT_PARAM_COMMA perr)) {
 				goto errorReturn;
 			}
@@ -607,7 +607,7 @@
 #ifdef USE_Direct_HKDF_HMAC_SHA_512
 		case COSE_Algorithm_Direct_HKDF_HMAC_SHA_512:
 			if (!HKDF_X(&pcose->m_message, true, false, false, false, algIn,
-					pRecip->m_pkey, NULL, pbKeyOut, cbitKeyOut, 512,
+					pRecip->m_pkey, nullptr, pbKeyOut, cbitKeyOut, 512,
 					CBOR_CONTEXT_PARAM_COMMA perr)) {
 				goto errorReturn;
 			}
@@ -617,7 +617,7 @@
 #ifdef USE_Direct_HKDF_AES_128
 		case COSE_Algorithm_Direct_HKDF_AES_128:
 			if (!HKDF_X(&pcose->m_message, false, false, false, false, algIn,
-					pRecip->m_pkey, NULL, pbKeyOut, cbitKeyOut, 128,
+					pRecip->m_pkey, nullptr, pbKeyOut, cbitKeyOut, 128,
 					CBOR_CONTEXT_PARAM_COMMA perr)) {
 				goto errorReturn;
 			}
@@ -627,7 +627,7 @@
 #ifdef USE_Direct_HKDF_AES_256
 		case COSE_Algorithm_Direct_HKDF_AES_256:
 			if (!HKDF_X(&pcose->m_message, false, false, false, false, algIn,
-					pRecip->m_pkey, NULL, pbKeyOut, cbitKeyOut, 256,
+					pRecip->m_pkey, nullptr, pbKeyOut, cbitKeyOut, 256,
 					CBOR_CONTEXT_PARAM_COMMA perr)) {
 				goto errorReturn;
 			}
@@ -637,7 +637,7 @@
 #ifdef USE_ECDH_ES_HKDF_256
 		case COSE_Algorithm_ECDH_ES_HKDF_256:
 			if (!HKDF_X(&pcose->m_message, true, true, false, false, algIn,
-					pRecip->m_pkey, NULL, pbKeyOut, cbitKeyOut, 256,
+					pRecip->m_pkey, nullptr, pbKeyOut, cbitKeyOut, 256,
 					CBOR_CONTEXT_PARAM_COMMA perr)) {
 				goto errorReturn;
 			}
@@ -647,7 +647,7 @@
 #ifdef USE_ECDH_ES_HKDF_512
 		case COSE_Algorithm_ECDH_ES_HKDF_512:
 			if (!HKDF_X(&pcose->m_message, true, true, false, false, algIn,
-					pRecip->m_pkey, NULL, pbKeyOut, cbitKeyOut, 512,
+					pRecip->m_pkey, nullptr, pbKeyOut, cbitKeyOut, 512,
 					CBOR_CONTEXT_PARAM_COMMA perr)) {
 				goto errorReturn;
 			}
@@ -657,7 +657,7 @@
 #ifdef USE_ECDH_SS_HKDF_256
 		case COSE_Algorithm_ECDH_SS_HKDF_256:
 			if (!HKDF_X(&pcose->m_message, true, true, true, false, algIn,
-					pRecip->m_pkey, NULL, pbKeyOut, cbitKeyOut, 256,
+					pRecip->m_pkey, nullptr, pbKeyOut, cbitKeyOut, 256,
 					CBOR_CONTEXT_PARAM_COMMA perr)) {
 				goto errorReturn;
 			}
@@ -667,7 +667,7 @@
 #ifdef USE_ECDH_SS_HKDF_512
 		case COSE_Algorithm_ECDH_SS_HKDF_512:
 			if (!HKDF_X(&pcose->m_message, true, true, true, false, algIn,
-					pRecip->m_pkey, NULL, pbKeyOut, cbitKeyOut, 512,
+					pRecip->m_pkey, nullptr, pbKeyOut, cbitKeyOut, 512,
 					CBOR_CONTEXT_PARAM_COMMA perr)) {
 				goto errorReturn;
 			}
@@ -677,7 +677,7 @@
 #ifdef USE_ECDH_ES_A128KW
 		case COSE_Algorithm_ECDH_ES_A128KW:
 			if (!HKDF_X(&pcose->m_message, true, true, false, false,
-					COSE_Algorithm_AES_KW_128, pRecip->m_pkey, NULL, rgbKey,
+					COSE_Algorithm_AES_KW_128, pRecip->m_pkey, nullptr, rgbKey,
 					128, 256, CBOR_CONTEXT_PARAM_COMMA perr)) {
 				goto errorReturn;
 			}
@@ -693,7 +693,7 @@
 #ifdef USE_ECDH_ES_A192KW
 		case COSE_Algorithm_ECDH_ES_A192KW:
 			if (!HKDF_X(&pcose->m_message, true, true, false, false,
-					COSE_Algorithm_AES_KW_192, pRecip->m_pkey, NULL, rgbKey,
+					COSE_Algorithm_AES_KW_192, pRecip->m_pkey, nullptr, rgbKey,
 					192, 256, CBOR_CONTEXT_PARAM_COMMA perr)) {
 				goto errorReturn;
 			}
@@ -709,7 +709,7 @@
 #ifdef USE_ECDH_ES_A256KW
 		case COSE_Algorithm_ECDH_ES_A256KW:
 			if (!HKDF_X(&pcose->m_message, true, true, false, false,
-					COSE_Algorithm_AES_KW_256, pRecip->m_pkey, NULL, rgbKey,
+					COSE_Algorithm_AES_KW_256, pRecip->m_pkey, nullptr, rgbKey,
 					256, 256, CBOR_CONTEXT_PARAM_COMMA perr)) {
 				goto errorReturn;
 			}
@@ -725,7 +725,7 @@
 #ifdef USE_ECDH_SS_A128KW
 		case COSE_Algorithm_ECDH_SS_A128KW:
 			if (!HKDF_X(&pcose->m_message, true, true, true, false,
-					COSE_Algorithm_AES_KW_128, pRecip->m_pkey, NULL, rgbKey,
+					COSE_Algorithm_AES_KW_128, pRecip->m_pkey, nullptr, rgbKey,
 					128, 256, CBOR_CONTEXT_PARAM_COMMA perr)) {
 				goto errorReturn;
 			}
@@ -741,7 +741,7 @@
 #ifdef USE_ECDH_SS_A192KW
 		case COSE_Algorithm_ECDH_SS_A192KW:
 			if (!HKDF_X(&pcose->m_message, true, true, true, false,
-					COSE_Algorithm_AES_KW_192, pRecip->m_pkey, NULL, rgbKey,
+					COSE_Algorithm_AES_KW_192, pRecip->m_pkey, nullptr, rgbKey,
 					192, 256, CBOR_CONTEXT_PARAM_COMMA perr)) {
 				goto errorReturn;
 			}
@@ -757,7 +757,7 @@
 #ifdef USE_ECDH_SS_A256KW
 		case COSE_Algorithm_ECDH_SS_A256KW:
 			if (!HKDF_X(&pcose->m_message, true, true, true, false,
-					COSE_Algorithm_AES_KW_256, pRecip->m_pkey, NULL, rgbKey,
+					COSE_Algorithm_AES_KW_256, pRecip->m_pkey, nullptr, rgbKey,
 					256, 256, CBOR_CONTEXT_PARAM_COMMA perr)) {
 				goto errorReturn;
 			}
@@ -775,7 +775,7 @@
 			break;
 	}
 
-	if (pbKeyX != NULL) {
+	if (pbKeyX != nullptr) {
 		COSE_FREE(pbKeyX, context);
 	}
 
@@ -790,19 +790,19 @@
 	int alg;
 	int t = 0;
 	COSE_RecipientInfo *pri;
-	const cn_cbor *cn_Alg = NULL;
-	byte *pbAuthData = NULL;
-	cn_cbor *ptmp = NULL;
+	const cn_cbor *cn_Alg = nullptr;
+	byte *pbAuthData = nullptr;
+	cn_cbor *ptmp = nullptr;
 	size_t cbitKey;
 #ifdef USE_CBOR_CONTEXT
-	cn_cbor_context *context = NULL;
+	cn_cbor_context *context = nullptr;
 #endif
 	cn_cbor_errback cbor_error;
 	bool fRet = false;
-	byte *pbContext = NULL;
+	byte *pbContext = nullptr;
 	byte rgbKey[256 / 8];
-	byte *pbSecret = NULL;
-	byte *pbKey = NULL;
+	byte *pbSecret = nullptr;
+	byte *pbKey = nullptr;
 	size_t cbKey = 0;
 
 #ifdef USE_CBOR_CONTEXT
@@ -811,23 +811,23 @@
 
 	cn_Alg = _COSE_map_get_int(&pRecipient->m_encrypt.m_message,
 		COSE_Header_Algorithm, COSE_BOTH, perr);
-	if (cn_Alg == NULL) {
+	if (cn_Alg == nullptr) {
 	errorReturn:
 		memset(rgbKey, 0, sizeof(rgbKey));
-		if (pbKey != NULL) {
+		if (pbKey != nullptr) {
 			memset(pbKey, 0, cbKey);
 			COSE_FREE(pbKey, context);
 		}
-		if (pbSecret != NULL) {
+		if (pbSecret != nullptr) {
 			COSE_FREE(pbSecret, context);
 		}
-		if (pbContext != NULL) {
+		if (pbContext != nullptr) {
 			COSE_FREE(pbContext, context);
 		}
-		if (pbAuthData != NULL) {
+		if (pbAuthData != nullptr) {
 			COSE_FREE(pbAuthData, context);
 		}
-		if (ptmp != NULL) {
+		if (ptmp != nullptr) {
 			cn_cbor_free(ptmp CBOR_CONTEXT_PARAM);
 		}
 		return fRet;
@@ -870,7 +870,7 @@
 #endif
 			//  This is a NOOP
 			cbitKey = 0;
-			CHECK_CONDITION(pRecipient->m_encrypt.m_recipientFirst == NULL,
+			CHECK_CONDITION(pRecipient->m_encrypt.m_recipientFirst == nullptr,
 				COSE_ERR_INVALID_PARAMETER);
 			break;
 
@@ -934,15 +934,15 @@
 
 	//  If we are doing direct encryption - then recipient generates the key
 
-	if (pRecipient->m_encrypt.m_recipientFirst != NULL) {
+	if (pRecipient->m_encrypt.m_recipientFirst != nullptr) {
 		t = 0;
-		for (pri = pRecipient->m_encrypt.m_recipientFirst; pri != NULL;
+		for (pri = pRecipient->m_encrypt.m_recipientFirst; pri != nullptr;
 			 pri = pri->m_recipientNext) {
 			if (pri->m_encrypt.m_message.m_flags & 1) {
 				t |= 1;
 				pbKey =
 					_COSE_RecipientInfo_generateKey(pri, alg, cbitKey, perr);
-				if (pbKey == NULL) {
+				if (pbKey == nullptr) {
 					goto errorReturn;
 				}
 				cbKey = cbitKey / 8;
@@ -959,7 +959,7 @@
 
 		if (t == 2) {
 			pbKey = (byte *)COSE_CALLOC(cbitKey / 8, 1, context);
-			CHECK_CONDITION(pbKey != NULL, COSE_ERR_OUT_OF_MEMORY);
+			CHECK_CONDITION(pbKey != nullptr, COSE_ERR_OUT_OF_MEMORY);
 			cbKey = cbitKey / 8;
 			rand_bytes(pbKey, cbKey);
 		}
@@ -969,7 +969,7 @@
 
 	const cn_cbor *cbProtected =
 		_COSE_encode_protected(&pRecipient->m_encrypt.m_message, perr);
-	if (cbProtected == NULL) {
+	if (cbProtected == nullptr) {
 		goto errorReturn;
 	}
 
@@ -1008,20 +1008,20 @@
 		case COSE_Algorithm_ECDH_SS_HKDF_512:
 #endif
 			ptmp = cn_cbor_data_create(
-				NULL, 0, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-			CHECK_CONDITION_CBOR(ptmp != NULL, cbor_error);
+				nullptr, 0, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
+			CHECK_CONDITION_CBOR(ptmp != nullptr, cbor_error);
 			CHECK_CONDITION_CBOR(
 				_COSE_array_replace(&pRecipient->m_encrypt.m_message, ptmp,
 					INDEX_BODY, CBOR_CONTEXT_PARAM_COMMA & cbor_error),
 				cbor_error);
-			ptmp = NULL;
+			ptmp = nullptr;
 			break;
 
 #ifdef USE_AES_KW_128
 		case COSE_Algorithm_AES_KW_128:
-			if (pRecipient->m_pkey != NULL) {
+			if (pRecipient->m_pkey != nullptr) {
 				cn_cbor *pK = cn_cbor_mapget_int(pRecipient->m_pkey->m_cborKey, -1);
-				CHECK_CONDITION(pK != NULL, COSE_ERR_INVALID_PARAMETER);
+				CHECK_CONDITION(pK != nullptr, COSE_ERR_INVALID_PARAMETER);
 				if (!AES_KW_Encrypt(pRecipient, pK->v.bytes,
 						(int)pK->length * 8, pbContent, (int)cbContent, perr)) {
 					goto errorReturn;
@@ -1038,9 +1038,9 @@
 
 #ifdef USE_AES_KW_192
 		case COSE_Algorithm_AES_KW_192:
-			if (pRecipient->m_pkey != NULL) {
+			if (pRecipient->m_pkey != nullptr) {
 				cn_cbor *pK = cn_cbor_mapget_int(pRecipient->m_pkey->m_cborKey, -1);
-				CHECK_CONDITION(pK != NULL, COSE_ERR_INVALID_PARAMETER);
+				CHECK_CONDITION(pK != nullptr, COSE_ERR_INVALID_PARAMETER);
 				if (!AES_KW_Encrypt(pRecipient, pK->v.bytes,
 						(int)pK->length * 8, pbContent, (int)cbContent, perr)) {
 					goto errorReturn;
@@ -1057,9 +1057,9 @@
 
 #ifdef USE_AES_KW_256
 		case COSE_Algorithm_AES_KW_256:
-			if (pRecipient->m_pkey != NULL) {
+			if (pRecipient->m_pkey != nullptr) {
 				cn_cbor *pK = cn_cbor_mapget_int(pRecipient->m_pkey->m_cborKey, -1);
-				CHECK_CONDITION(pK != NULL, COSE_ERR_INVALID_PARAMETER);
+				CHECK_CONDITION(pK != nullptr, COSE_ERR_INVALID_PARAMETER);
 				if (!AES_KW_Encrypt(pRecipient, pK->v.bytes,
 						(int)pK->length * 8, pbContent, (int)cbContent, perr)) {
 					goto errorReturn;
@@ -1077,7 +1077,7 @@
 #ifdef USE_ECDH_ES_A128KW
 		case COSE_Algorithm_ECDH_ES_A128KW:
 			if (!HKDF_X(&pRecipient->m_encrypt.m_message, true, true, false,
-					true, COSE_Algorithm_AES_KW_128, NULL, pRecipient->m_pkey,
+					true, COSE_Algorithm_AES_KW_128, nullptr, pRecipient->m_pkey,
 					rgbKey, 128, 256, CBOR_CONTEXT_PARAM_COMMA perr)) {
 				goto errorReturn;
 			}
@@ -1091,7 +1091,7 @@
 #ifdef USE_ECDH_ES_A192KW
 		case COSE_Algorithm_ECDH_ES_A192KW:
 			if (!HKDF_X(&pRecipient->m_encrypt.m_message, true, true, false,
-					true, COSE_Algorithm_AES_KW_192, NULL, pRecipient->m_pkey,
+					true, COSE_Algorithm_AES_KW_192, nullptr, pRecipient->m_pkey,
 					rgbKey, 192, 256, CBOR_CONTEXT_PARAM_COMMA perr)) {
 				goto errorReturn;
 			}
@@ -1105,7 +1105,7 @@
 #ifdef USE_ECDH_ES_A256KW
 		case COSE_Algorithm_ECDH_ES_A256KW:
 			if (!HKDF_X(&pRecipient->m_encrypt.m_message, true, true, false,
-					true, COSE_Algorithm_AES_KW_256, NULL, pRecipient->m_pkey,
+					true, COSE_Algorithm_AES_KW_256, nullptr, pRecipient->m_pkey,
 					rgbKey, 256, 256, CBOR_CONTEXT_PARAM_COMMA perr)) {
 				goto errorReturn;
 			}
@@ -1165,7 +1165,7 @@
 			FAIL_CONDITION(COSE_ERR_INVALID_PARAMETER);
 	}
 
-	for (pri = pRecipient->m_encrypt.m_recipientFirst; pri != NULL;
+	for (pri = pRecipient->m_encrypt.m_recipientFirst; pri != nullptr;
 		 pri = pri->m_recipientNext) {
 		if (!_COSE_Recipient_encrypt(pri, pbKey, cbKey, perr)) {
 			goto errorReturn;
@@ -1186,15 +1186,15 @@
 	int alg;
 	const cn_cbor *cn_Alg = _COSE_map_get_int(&pRecipient->m_encrypt.m_message,
 		COSE_Header_Algorithm, COSE_BOTH, perr);
-	byte *pbContext = NULL;
-	byte *pb = NULL;
+	byte *pbContext = nullptr;
+	byte *pb = nullptr;
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context = &pRecipient->m_encrypt.m_message.m_allocContext;
 #endif
 	const cn_cbor *pK;
-	byte *pbSecret = NULL;
+	byte *pbSecret = nullptr;
 
-	CHECK_CONDITION(cn_Alg != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(cn_Alg != nullptr, COSE_ERR_INVALID_PARAMETER);
 	CHECK_CONDITION(
 		(cn_Alg->type == CN_CBOR_UINT) || (cn_Alg->type == CN_CBOR_INT),
 		COSE_ERR_INVALID_PARAMETER);
@@ -1203,14 +1203,14 @@
 	_COSE_encode_protected(&pRecipient->m_encrypt.m_message, perr);
 
 	pb = (byte*) COSE_CALLOC(cbitKeySize / 8, 1, context);
-	CHECK_CONDITION(pb != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(pb != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	switch (alg) {
 		case COSE_Algorithm_Direct:
 			CHECK_CONDITION(
-				pRecipient->m_pkey != NULL, COSE_ERR_INVALID_PARAMETER);
+				pRecipient->m_pkey != nullptr, COSE_ERR_INVALID_PARAMETER);
 			pK = cn_cbor_mapget_int(pRecipient->m_pkey->m_cborKey, -1);
-			CHECK_CONDITION((pK != NULL) && (pK->type == CN_CBOR_BYTES),
+			CHECK_CONDITION((pK != nullptr) && (pK->type == CN_CBOR_BYTES),
 				COSE_ERR_INVALID_PARAMETER);
 			CHECK_CONDITION((size_t)pK->length == cbitKeySize / 8,
 				COSE_ERR_INVALID_PARAMETER);
@@ -1220,7 +1220,7 @@
 #ifdef USE_Direct_HKDF_HMAC_SHA_256
 		case COSE_Algorithm_Direct_HKDF_HMAC_SHA_256:
 			if (!HKDF_X(&pRecipient->m_encrypt.m_message, true, false, false,
-					true, algIn, pRecipient->m_pkey, NULL, pb, cbitKeySize, 256,
+					true, algIn, pRecipient->m_pkey, nullptr, pb, cbitKeySize, 256,
 					CBOR_CONTEXT_PARAM_COMMA perr)) {
 				goto errorReturn;
 			}
@@ -1230,7 +1230,7 @@
 #ifdef USE_Direct_HKDF_HMAC_SHA_512
 		case COSE_Algorithm_Direct_HKDF_HMAC_SHA_512:
 			if (!HKDF_X(&pRecipient->m_encrypt.m_message, true, false, false,
-					true, algIn, pRecipient->m_pkey, NULL, pb, cbitKeySize, 512,
+					true, algIn, pRecipient->m_pkey, nullptr, pb, cbitKeySize, 512,
 					CBOR_CONTEXT_PARAM_COMMA perr)) {
 				goto errorReturn;
 			}
@@ -1240,7 +1240,7 @@
 #ifdef USE_Direct_HKDF_AES_128
 		case COSE_Algorithm_Direct_HKDF_AES_128:
 			if (!HKDF_X(&pRecipient->m_encrypt.m_message, false, false, false,
-					true, algIn, pRecipient->m_pkey, NULL, pb, cbitKeySize, 128,
+					true, algIn, pRecipient->m_pkey, nullptr, pb, cbitKeySize, 128,
 					CBOR_CONTEXT_PARAM_COMMA perr)) {
 				goto errorReturn;
 			}
@@ -1250,7 +1250,7 @@
 #ifdef USE_Direct_HKDF_AES_256
 		case COSE_Algorithm_Direct_HKDF_AES_256:
 			if (!HKDF_X(&pRecipient->m_encrypt.m_message, false, false, false,
-					true, algIn, pRecipient->m_pkey, NULL, pb, cbitKeySize, 256,
+					true, algIn, pRecipient->m_pkey, nullptr, pb, cbitKeySize, 256,
 					CBOR_CONTEXT_PARAM_COMMA perr)) {
 				goto errorReturn;
 			}
@@ -1260,7 +1260,7 @@
 #ifdef USE_ECDH_ES_HKDF_256
 		case COSE_Algorithm_ECDH_ES_HKDF_256:
 			if (!HKDF_X(&pRecipient->m_encrypt.m_message, true, true, false,
-					true, algIn, NULL, pRecipient->m_pkey, pb, cbitKeySize, 256,
+					true, algIn, nullptr, pRecipient->m_pkey, pb, cbitKeySize, 256,
 					CBOR_CONTEXT_PARAM_COMMA perr)) {
 				goto errorReturn;
 			}
@@ -1270,7 +1270,7 @@
 #ifdef USE_ECDH_ES_HKDF_512
 		case COSE_Algorithm_ECDH_ES_HKDF_512:
 			if (!HKDF_X(&pRecipient->m_encrypt.m_message, true, true, false,
-					true, algIn, NULL, pRecipient->m_pkey, pb, cbitKeySize, 512,
+					true, algIn, nullptr, pRecipient->m_pkey, pb, cbitKeySize, 512,
 					CBOR_CONTEXT_PARAM_COMMA perr)) {
 				goto errorReturn;
 			}
@@ -1301,26 +1301,26 @@
 			FAIL_CONDITION(COSE_ERR_INVALID_PARAMETER);
 	}
 
-	if (pbSecret != NULL) {
+	if (pbSecret != nullptr) {
 		COSE_FREE(pbSecret, context);
 	}
-	if (pbContext != NULL) {
+	if (pbContext != nullptr) {
 		COSE_FREE(pbContext, context);
 	}
 	return pb;
 
 errorReturn:
 
-	if (pbSecret != NULL) {
+	if (pbSecret != nullptr) {
 		COSE_FREE(pbSecret, context);
 	}
-	if (pbContext != NULL) {
+	if (pbContext != nullptr) {
 		COSE_FREE(pbContext, context);
 	}
-	if (pb != NULL) {
+	if (pb != nullptr) {
 		COSE_FREE(pb, context);
 	}
-	return NULL;
+	return nullptr;
 }
 #endif
 
@@ -1333,31 +1333,31 @@
 	cose_errback *perr)
 {
 	COSE_RecipientInfo *p;
-	cn_cbor *cn_Temp = NULL;
-	cn_cbor *cnTemp = NULL;
+	cn_cbor *cn_Temp = nullptr;
+	cn_cbor *cnTemp = nullptr;
 	cn_cbor_errback cbor_error;
-	byte *pbTemp = NULL;
-	byte *pbKey = NULL;
+	byte *pbTemp = nullptr;
+	byte *pbKey = nullptr;
 #ifdef USE_CBOR_CONTEXT
-	cn_cbor_context *context = NULL;
+	cn_cbor_context *context = nullptr;
 #endif
-	HCOSE_KEY hKey = NULL;
+	HCOSE_KEY hKey = nullptr;
 
 	if (false) {
 	errorReturn:
-		if (hKey != NULL) {
+		if (hKey != nullptr) {
 			COSE_KEY_Free(hKey);
 		}
-		if (cn_Temp != NULL) {
+		if (cn_Temp != nullptr) {
 			CN_CBOR_FREE(cn_Temp, context);
 		}
-		if (cnTemp != NULL) {
+		if (cnTemp != nullptr) {
 			CN_CBOR_FREE(cnTemp, context);
 		}
-		if (pbTemp != NULL) {
+		if (pbTemp != nullptr) {
 			COSE_FREE(pbTemp, context);
 		}
-		if (pbKey != NULL) {
+		if (pbKey != nullptr) {
 			COSE_FREE(pbKey, context);
 		}
 		return false;		
@@ -1365,7 +1365,7 @@
 	
 	CHECK_CONDITION(
 		IsValidRecipientHandle(hRecipient), COSE_ERR_INVALID_HANDLE);
-	CHECK_CONDITION(rgbKey != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(rgbKey != nullptr, COSE_ERR_INVALID_PARAMETER);
 
 	p = (COSE_RecipientInfo *)hRecipient;
 
@@ -1375,7 +1375,7 @@
 
 	cn_cbor *cnAlg = _COSE_map_get_int(
 		&p->m_encrypt.m_message, COSE_Header_Algorithm, COSE_BOTH, perr);
-	if (cnAlg != NULL) {
+	if (cnAlg != nullptr) {
 		CHECK_CONDITION(cnAlg->type == CN_CBOR_INT &&
 							cnAlg->v.sint == COSE_Algorithm_Direct,
 			COSE_ERR_INVALID_PARAMETER);
@@ -1383,23 +1383,23 @@
 	else {
 		cn_Temp = cn_cbor_int_create(
 			COSE_Algorithm_Direct, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-		CHECK_CONDITION_CBOR(cn_Temp != NULL, cbor_error);
+		CHECK_CONDITION_CBOR(cn_Temp != nullptr, cbor_error);
 		if (!COSE_Recipient_map_put_int(hRecipient, COSE_Header_Algorithm,
 				cn_Temp, COSE_UNPROTECT_ONLY, perr)) {
 			goto errorReturn;
 		}
-		cn_Temp = NULL;
+		cn_Temp = nullptr;
 	}
 
 	if (cbKid > 0) {
 		pbTemp = (byte *)COSE_CALLOC(cbKid, 1, context);
-		CHECK_CONDITION(pbTemp != NULL, COSE_ERR_OUT_OF_MEMORY);
+		CHECK_CONDITION(pbTemp != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 		memcpy(pbTemp, rgbKid, cbKid);
 		cnTemp = cn_cbor_data_create(
 			pbTemp, cbKid, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-		CHECK_CONDITION_CBOR(cnTemp != NULL, cbor_error);
-		pbTemp = NULL;
+		CHECK_CONDITION_CBOR(cnTemp != nullptr, cbor_error);
+		pbTemp = nullptr;
 
 		if (!COSE_Recipient_map_put_int(hRecipient, COSE_Header_KID, cnTemp,
 				COSE_UNPROTECT_ONLY, perr)) {
@@ -1408,36 +1408,36 @@
 	}
 
 	pbKey = (byte *)COSE_CALLOC(cbKey, 1, context);
-	CHECK_CONDITION(pbKey != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(pbKey != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	memcpy(pbKey, rgbKey, cbKey);
 
 	cn_Temp = cn_cbor_map_create(CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(cn_Temp != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(cn_Temp != nullptr, cbor_error);
 
 	cnTemp = cn_cbor_int_create(4, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(cnTemp != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(cnTemp != nullptr, cbor_error);
 	CHECK_CONDITION_CBOR(cn_cbor_mapput_int(cn_Temp, COSE_Key_Type, cnTemp,
 							 CBOR_CONTEXT_PARAM_COMMA & cbor_error),
 		cbor_error);
-	cnTemp = NULL;
+	cnTemp = nullptr;
 
 	cnTemp = cn_cbor_data_create(
 		pbKey, cbKey, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(cnTemp != NULL, cbor_error);
-	pbKey = NULL;
+	CHECK_CONDITION_CBOR(cnTemp != nullptr, cbor_error);
+	pbKey = nullptr;
 	CHECK_CONDITION_CBOR(cn_cbor_mapput_int(cn_Temp, -1, cnTemp,
 							 CBOR_CONTEXT_PARAM_COMMA & cbor_error),
 		cbor_error);
-	cnTemp = NULL;
+	cnTemp = nullptr;
 
 	hKey = COSE_KEY_FromCbor(cn_Temp, CBOR_CONTEXT_PARAM_COMMA perr);
-	CHECK_CONDITION(hKey != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(hKey != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	if (!COSE_Recipient_SetKey2(hRecipient, hKey, perr)) {
 		goto errorReturn;
 	}
-	cn_Temp = NULL;
+	cn_Temp = nullptr;
 
 	return true;
 }
@@ -1446,18 +1446,18 @@
 	const cn_cbor *pKey,
 	cose_errback *perr)
 {
-	HCOSE_KEY hkey = NULL;
+	HCOSE_KEY hkey = nullptr;
 
 	if (false) {
 	errorReturn:
-		if (hkey != NULL) {
+		if (hkey != nullptr) {
 			COSE_KEY_Free(hkey);
 		}
 		return false;		
 	}
 	
 	CHECK_CONDITION(IsValidRecipientHandle(h), COSE_ERR_INVALID_HANDLE);
-	CHECK_CONDITION(pKey != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(pKey != nullptr, COSE_ERR_INVALID_PARAMETER);
 
 	COSE_RecipientInfo *p = (COSE_RecipientInfo *)h;
 
@@ -1467,7 +1467,7 @@
 
 	hkey = COSE_KEY_FromCbor(
 		(cn_cbor *)pKey, CBOR_CONTEXT_PARAM_COMMA perr);
-	CHECK_CONDITION(hkey != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(hkey != nullptr, COSE_ERR_OUT_OF_MEMORY);
 	if (!COSE_Recipient_SetKey2(h, hkey, perr)) {
 		goto errorReturn;
 	}
@@ -1482,12 +1482,12 @@
 	CHECK_CONDITION(IsValidRecipientHandle(h), COSE_ERR_INVALID_HANDLE);
 
 	p = (COSE_RecipientInfo *)h;
-	if (p->m_pkey != NULL) {
+	if (p->m_pkey != nullptr) {
 		COSE_KEY_Free((HCOSE_KEY) p->m_pkey);
 	}
 	
 	p->m_pkey = (COSE_KEY *)hKey;
-	if (p->m_pkey != NULL) {
+	if (p->m_pkey != nullptr) {
 		p->m_pkey->m_refCount += 1;
 	}
 
@@ -1519,25 +1519,25 @@
 	cose_errback *perr)
 {
 	bool fRet = false;
-	HCOSE_KEY coseKey = NULL;
+	HCOSE_KEY coseKey = nullptr;
 
 	if (false) {
 	errorReturn:
-		if (coseKey != NULL) {
+		if (coseKey != nullptr) {
 			COSE_KEY_Free(coseKey);
 		}
 		return fRet;		
 	}
 	
 	CHECK_CONDITION(IsValidRecipientHandle(h), COSE_ERR_INVALID_HANDLE);
-	CHECK_CONDITION(pKey != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(pKey != nullptr, COSE_ERR_INVALID_PARAMETER);
 
 	#ifdef USE_CBOR_CONTEXT
-	cn_cbor_context *context = NULL;
+	cn_cbor_context *context = nullptr;
 #endif
 	
 	coseKey = COSE_KEY_FromCbor((cn_cbor *)pKey, CBOR_CONTEXT_PARAM_COMMA perr);
-	CHECK_CONDITION(coseKey != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(coseKey != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	fRet = COSE_Recipient_SetSenderKey2(h, coseKey, destination, perr);
 	goto errorReturn;
@@ -1551,19 +1551,19 @@
 	COSE_RecipientInfo *p;
 	bool f = false;
 	cn_cbor *cn;
-	cn_cbor *cn2 = NULL;
-	cn_cbor *cn3 = NULL;
+	cn_cbor *cn2 = nullptr;
+	cn_cbor *cn3 = nullptr;
 	cn_cbor_errback cbor_err;
 #ifdef USE_CBOR_CONTEXT
-	cn_cbor_context *context = NULL;
+	cn_cbor_context *context = nullptr;
 #endif
 
 	if (false) {
 	errorReturn:
-		if (cn2 != NULL) {
+		if (cn2 != nullptr) {
 			CN_CBOR_FREE(cn2, context);
 		}
-		if (cn3 != NULL) {
+		if (cn3 != nullptr) {
 			CN_CBOR_FREE(cn3, context);
 		}
 		return f;		
@@ -1585,60 +1585,60 @@
 
 		case 1:
 			cn = cn_cbor_mapget_int(pKey->m_cborKey, COSE_Key_ID);
-			CHECK_CONDITION(cn != NULL, COSE_ERR_INVALID_PARAMETER);
+			CHECK_CONDITION(cn != nullptr, COSE_ERR_INVALID_PARAMETER);
 			cn2 = cn_cbor_clone(cn, CBOR_CONTEXT_PARAM_COMMA & cbor_err);
-			CHECK_CONDITION_CBOR(cn2 != NULL, cbor_err);
+			CHECK_CONDITION_CBOR(cn2 != nullptr, cbor_err);
 			CHECK_CONDITION(
 				_COSE_map_put(&p->m_encrypt.m_message, COSE_Header_ECDH_SPK_KID,
 					cn2, COSE_UNPROTECT_ONLY, perr),
 				perr->err);
-			cn2 = NULL;
+			cn2 = nullptr;
 			break;
 
 		case 2:
 			cn2 = cn_cbor_map_create(CBOR_CONTEXT_PARAM_COMMA & cbor_err);
-			CHECK_CONDITION_CBOR(cn2 != NULL, cbor_err);
+			CHECK_CONDITION_CBOR(cn2 != nullptr, cbor_err);
 			cn = cn_cbor_mapget_int(pKey->m_cborKey, COSE_Key_Type);
-			CHECK_CONDITION(cn != NULL, COSE_ERR_INVALID_PARAMETER);
+			CHECK_CONDITION(cn != nullptr, COSE_ERR_INVALID_PARAMETER);
 			cn3 = cn_cbor_clone(cn, CBOR_CONTEXT_PARAM_COMMA & cbor_err);
-			CHECK_CONDITION_CBOR(cn3 != NULL, cbor_err);
+			CHECK_CONDITION_CBOR(cn3 != nullptr, cbor_err);
 			CHECK_CONDITION_CBOR(cn_cbor_mapput_int(cn2, COSE_Key_Type, cn3,
 									 CBOR_CONTEXT_PARAM_COMMA & cbor_err),
 				cbor_err);
-			cn3 = NULL;
+			cn3 = nullptr;
 			cn = cn_cbor_mapget_int(pKey->m_cborKey, COSE_Key_EC2_Curve);
 			cn3 = cn_cbor_clone(cn, CBOR_CONTEXT_PARAM_COMMA & cbor_err);
-			CHECK_CONDITION_CBOR(cn3 != NULL, cbor_err);
+			CHECK_CONDITION_CBOR(cn3 != nullptr, cbor_err);
 			CHECK_CONDITION_CBOR(cn_cbor_mapput_int(cn2, COSE_Key_EC2_Curve,
 									 cn3, CBOR_CONTEXT_PARAM_COMMA & cbor_err),
 				cbor_err);
-			cn3 = NULL;
+			cn3 = nullptr;
 			cn = cn_cbor_mapget_int(pKey->m_cborKey, COSE_Key_EC2_X);
 			cn3 = cn_cbor_clone(cn, CBOR_CONTEXT_PARAM_COMMA & cbor_err);
-			CHECK_CONDITION_CBOR(cn3 != NULL, cbor_err);
+			CHECK_CONDITION_CBOR(cn3 != nullptr, cbor_err);
 			CHECK_CONDITION_CBOR(cn_cbor_mapput_int(cn2, COSE_Key_EC2_X, cn3,
 									 CBOR_CONTEXT_PARAM_COMMA & cbor_err),
 				cbor_err);
-			cn3 = NULL;
+			cn3 = nullptr;
 			cn = cn_cbor_mapget_int(pKey->m_cborKey, COSE_Key_EC2_Y);
 			cn3 = cn_cbor_clone(cn, CBOR_CONTEXT_PARAM_COMMA & cbor_err);
-			CHECK_CONDITION_CBOR(cn3 != NULL, cbor_err);
+			CHECK_CONDITION_CBOR(cn3 != nullptr, cbor_err);
 			CHECK_CONDITION_CBOR(cn_cbor_mapput_int(cn2, COSE_Key_EC2_Y, cn3,
 									 CBOR_CONTEXT_PARAM_COMMA & cbor_err),
 				cbor_err);
-			cn3 = NULL;
+			cn3 = nullptr;
 			CHECK_CONDITION(
 				_COSE_map_put(&p->m_encrypt.m_message, COSE_Header_ECDH_SPK,
 					cn2, COSE_UNPROTECT_ONLY, perr),
 				perr->err);
-			cn2 = NULL;
+			cn2 = nullptr;
 			break;
 
 		default:
 			FAIL_CONDITION(COSE_ERR_INVALID_PARAMETER);
 	}
 
-	if (p->m_pkeyStatic != NULL) {
+	if (p->m_pkeyStatic != nullptr) {
 		COSE_KEY_Free((HCOSE_KEY)p->m_pkeyStatic);
 	}
 	p->m_pkeyStatic = pKey;
@@ -1670,7 +1670,7 @@
 	cose_errback *perr)
 {
 	if (!IsValidRecipientHandle(hcose)) {
-		if (perr != NULL) {
+		if (perr != nullptr) {
 			perr->err = COSE_ERR_INVALID_HANDLE;
 		}
 		return false;
@@ -1688,7 +1688,7 @@
 	cose_errback *perr)
 {
 	CHECK_CONDITION(IsValidRecipientHandle(h), COSE_ERR_INVALID_HANDLE);
-	CHECK_CONDITION(value != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(value != nullptr, COSE_ERR_INVALID_PARAMETER);
 
 	if (!_COSE_map_put(&((COSE_RecipientInfo *)h)->m_encrypt.m_message, key,
 			value, flags, perr)) {
@@ -1766,191 +1766,191 @@
 	cn_cbor *pArray;
 	cn_cbor_errback cbor_error;
 	bool fReturn = false;
-	cn_cbor *cnT = NULL;
-	cn_cbor *cnArrayT = NULL;
+	cn_cbor *cnT = nullptr;
+	cn_cbor *cnArrayT = nullptr;
 	cn_cbor *cnParam;
-	byte *pbContext = NULL;
+	byte *pbContext = nullptr;
 
 	if (false) {
 	errorReturn:
 		fReturn = false;
 
 	returnHere:
-		if (pbContext != NULL) {
+		if (pbContext != nullptr) {
 			COSE_FREE(pbContext, context);
 		}
-		if (pArray != NULL) {
+		if (pArray != nullptr) {
 			CN_CBOR_FREE(pArray, context);
 		}
-		if (cnArrayT != NULL) {
+		if (cnArrayT != nullptr) {
 			CN_CBOR_FREE(cnArrayT, context);
 		}
-		if (cnT != NULL) {
+		if (cnT != nullptr) {
 			CN_CBOR_FREE(cnT, context);
 		}
 		return fReturn;
 	}
 	
 	pArray = cn_cbor_array_create(CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(pArray != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(pArray != nullptr, cbor_error);
 
 	cnT = cn_cbor_int_create(algID, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(cnT != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(cnT != nullptr, cbor_error);
 	CHECK_CONDITION_CBOR(
 		cn_cbor_array_append(pArray, cnT, &cbor_error), cbor_error);
-	cnT = NULL;
+	cnT = nullptr;
 
 	cnArrayT = cn_cbor_array_create(CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(cnArrayT != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(cnArrayT != nullptr, cbor_error);
 
 	cnParam = _COSE_map_get_int(pcose, COSE_Header_KDF_U_name, COSE_BOTH, perr);
-	if (cnParam != NULL) {
+	if (cnParam != nullptr) {
 		cnT = cn_cbor_clone(cnParam, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
 	}
 	else {
 		cnT = cn_cbor_null_create(CBOR_CONTEXT_PARAM_COMMA &cbor_error);
 	}
-	CHECK_CONDITION_CBOR(cnT != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(cnT != nullptr, cbor_error);
 	CHECK_CONDITION_CBOR(
 		cn_cbor_array_append(cnArrayT, cnT, &cbor_error), cbor_error);
-	cnT = NULL;
-	cnParam = NULL;
+	cnT = nullptr;
+	cnParam = nullptr;
 
 	cnParam =
 		_COSE_map_get_int(pcose, COSE_Header_KDF_U_nonce, COSE_BOTH, perr);
-	if (cnParam != NULL) {
+	if (cnParam != nullptr) {
 		cnT = cn_cbor_clone(cnParam, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
 	}
 	else {
 		cnT = cn_cbor_null_create(CBOR_CONTEXT_PARAM_COMMA & cbor_error);
 	}
-	CHECK_CONDITION_CBOR(cnT != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(cnT != nullptr, cbor_error);
 	CHECK_CONDITION_CBOR(
 		cn_cbor_array_append(cnArrayT, cnT, &cbor_error), cbor_error);
-	cnT = NULL;
-	cnParam = NULL;
+	cnT = nullptr;
+	cnParam = nullptr;
 
 	cnParam =
 		_COSE_map_get_int(pcose, COSE_Header_KDF_U_other, COSE_BOTH, perr);
-	if (cnParam != NULL) {
+	if (cnParam != nullptr) {
 		cnT = cn_cbor_clone(cnParam, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
 	}
 	else {
 		cnT = cn_cbor_null_create(CBOR_CONTEXT_PARAM_COMMA & cbor_error);
 	}
-	CHECK_CONDITION_CBOR(cnT != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(cnT != nullptr, cbor_error);
 	CHECK_CONDITION_CBOR(
 		cn_cbor_array_append(cnArrayT, cnT, &cbor_error), cbor_error);
-	cnT = NULL;
-	cnParam = NULL;
+	cnT = nullptr;
+	cnParam = nullptr;
 
 	CHECK_CONDITION_CBOR(
 		cn_cbor_array_append(pArray, cnArrayT, &cbor_error), cbor_error);
-	cnArrayT = NULL;
+	cnArrayT = nullptr;
 
 	cnArrayT = cn_cbor_array_create(CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(cnArrayT != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(cnArrayT != nullptr, cbor_error);
 
 	cnParam = _COSE_map_get_int(pcose, COSE_Header_KDF_V_name, COSE_BOTH, perr);
-	if (cnParam != NULL) {
+	if (cnParam != nullptr) {
 		cnT = cn_cbor_clone(cnParam, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
 	}
 	else {
 		cnT = cn_cbor_null_create(CBOR_CONTEXT_PARAM_COMMA & cbor_error);
 	}
-	CHECK_CONDITION_CBOR(cnT != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(cnT != nullptr, cbor_error);
 	CHECK_CONDITION_CBOR(
 		cn_cbor_array_append(cnArrayT, cnT, &cbor_error), cbor_error);
-	cnT = NULL;
-	cnParam = NULL;
+	cnT = nullptr;
+	cnParam = nullptr;
 
 	cnParam =
 		_COSE_map_get_int(pcose, COSE_Header_KDF_V_nonce, COSE_BOTH, perr);
-	if (cnParam != NULL) {
+	if (cnParam != nullptr) {
 		cnT = cn_cbor_clone(cnParam, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
 	}
 	else {
 		cnT = cn_cbor_null_create(CBOR_CONTEXT_PARAM_COMMA & cbor_error);
 	}
-	CHECK_CONDITION_CBOR(cnT != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(cnT != nullptr, cbor_error);
 	CHECK_CONDITION_CBOR(
 		cn_cbor_array_append(cnArrayT, cnT, &cbor_error), cbor_error);
-	cnT = NULL;
-	cnParam = NULL;
+	cnT = nullptr;
+	cnParam = nullptr;
 
 	cnParam =
 		_COSE_map_get_int(pcose, COSE_Header_KDF_V_other, COSE_BOTH, perr);
-	if (cnParam != NULL) {
+	if (cnParam != nullptr) {
 		cnT = cn_cbor_clone(cnParam, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
 	}
 	else {
 		cnT = cn_cbor_null_create(CBOR_CONTEXT_PARAM_COMMA & cbor_error);
 	}
-	CHECK_CONDITION_CBOR(cnT != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(cnT != nullptr, cbor_error);
 	CHECK_CONDITION_CBOR(
 		cn_cbor_array_append(cnArrayT, cnT, &cbor_error), cbor_error);
-	cnT = NULL;
-	cnParam = NULL;
+	cnT = nullptr;
+	cnParam = nullptr;
 
 	CHECK_CONDITION_CBOR(
 		cn_cbor_array_append(pArray, cnArrayT, &cbor_error), cbor_error);
-	cnArrayT = NULL;
+	cnArrayT = nullptr;
 
 	cnArrayT = cn_cbor_array_create(CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(cnArrayT != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(cnArrayT != nullptr, cbor_error);
 
 	cnT = cn_cbor_int_create(cbitKey, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(cnT != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(cnT != nullptr, cbor_error);
 	CHECK_CONDITION_CBOR(
 		cn_cbor_array_append(cnArrayT, cnT, &cbor_error), cbor_error);
-	cnT = NULL;
+	cnT = nullptr;
 
 	cnParam = _COSE_arrayget_int(pcose, INDEX_PROTECTED);
-	if (cnParam != NULL) {
+	if (cnParam != nullptr) {
 		cnT = cn_cbor_clone(cnParam, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-		CHECK_CONDITION_CBOR(cnT != NULL, cbor_error);
+		CHECK_CONDITION_CBOR(cnT != nullptr, cbor_error);
 		CHECK_CONDITION_CBOR(
 			cn_cbor_array_append(cnArrayT, cnT, &cbor_error), cbor_error);
-		cnT = NULL;
-		cnParam = NULL;
+		cnT = nullptr;
+		cnParam = nullptr;
 	}
 
 	cnParam =
 		_COSE_map_get_int(pcose, COSE_Header_KDF_PUB_other, COSE_BOTH, perr);
-	if (cnParam != NULL) {
+	if (cnParam != nullptr) {
 		cnT = cn_cbor_clone(cnParam, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-		CHECK_CONDITION_CBOR(cnT != NULL, cbor_error);
+		CHECK_CONDITION_CBOR(cnT != nullptr, cbor_error);
 		CHECK_CONDITION_CBOR(
 			cn_cbor_array_append(cnArrayT, cnT, &cbor_error), cbor_error);
-		cnT = NULL;
-		cnParam = NULL;
+		cnT = nullptr;
+		cnParam = nullptr;
 	}
 
 	CHECK_CONDITION_CBOR(
 		cn_cbor_array_append(pArray, cnArrayT, &cbor_error), cbor_error);
-	cnArrayT = NULL;
+	cnArrayT = nullptr;
 
 	cnParam = _COSE_map_get_int(pcose, COSE_Header_KDF_PRIV, COSE_BOTH, perr);
-	if (cnParam != NULL) {
+	if (cnParam != nullptr) {
 		cnT = cn_cbor_clone(cnParam, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-		CHECK_CONDITION_CBOR(cnT != NULL, cbor_error);
+		CHECK_CONDITION_CBOR(cnT != nullptr, cbor_error);
 		CHECK_CONDITION_CBOR(
 			cn_cbor_array_append(pArray, cnT, &cbor_error), cbor_error);
-		cnT = NULL;
-		cnParam = NULL;
+		cnT = nullptr;
+		cnParam = nullptr;
 	}
 
 	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(pbContext != nullptr, COSE_ERR_OUT_OF_MEMORY);
 	CHECK_CONDITION(cn_cbor_encoder_write(pbContext, 0, cbContext, pArray) ==
 						(ssize_t)cbContext,
 		COSE_ERR_CBOR);
 
 	*ppbContext = pbContext;
 	*pcbContext = cbContext;
-	pbContext = NULL;
+	pbContext = nullptr;
 	fReturn = true;
 
 	goto returnHere;
@@ -1967,7 +1967,7 @@
  * @param[in]    key	Key to look for
  * @param[in]	flags	What buckets should we look for the message
  * @param[out]	perror	Location to return error codes
- * @return	Object which is found or NULL
+ * @return	Object which is found or nullptr
  */
 
 cn_cbor *COSE_Recipient_map_get_int(HCOSE_RECIPIENT h,
@@ -1976,10 +1976,10 @@
 	cose_errback *perror)
 {
 	if (!IsValidRecipientHandle(h)) {
-		if (perror != NULL) {
+		if (perror != nullptr) {
 			perror->err = COSE_ERR_INVALID_HANDLE;
 		}
-		return NULL;
+		return nullptr;
 	}
 
 	return _COSE_map_get_int(
@@ -1991,17 +1991,17 @@
 	cose_errback *perr)
 {
 	int i;
-	COSE_RecipientInfo *p = NULL;
+	COSE_RecipientInfo *p = nullptr;
 
 	CHECK_CONDITION(IsValidRecipientHandle(cose), COSE_ERR_INVALID_HANDLE);
 	CHECK_CONDITION(iRecipient >= 0, COSE_ERR_INVALID_PARAMETER);
 
 	p = ((COSE_RecipientInfo *)cose)->m_encrypt.m_recipientFirst;
 	for (i = 0; i < iRecipient; i++) {
-		CHECK_CONDITION(p != NULL, COSE_ERR_INVALID_PARAMETER);
+		CHECK_CONDITION(p != nullptr, COSE_ERR_INVALID_PARAMETER);
 		p = p->m_recipientNext;
 	}
-	if (p != NULL) {
+	if (p != nullptr) {
 		p->m_encrypt.m_message.m_refCount++;
 	}
 
@@ -2015,7 +2015,7 @@
 {
 	COSE_RecipientInfo *pRecip;
 	COSE_Enveloped *pEncrypt;
-	cn_cbor *pRecipients = NULL;
+	cn_cbor *pRecipients = nullptr;
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context;
 #endif
@@ -2035,15 +2035,15 @@
 	pEncrypt->m_recipientFirst = pRecip;
 
 	pRecipients = _COSE_arrayget_int(&pEncrypt->m_message, INDEX_RECIPIENTS);
-	if (pRecipients == NULL) {
+	if (pRecipients == nullptr) {
 		pRecipients =
 			cn_cbor_array_create(CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-		CHECK_CONDITION_CBOR(pRecipients != NULL, cbor_error);
+		CHECK_CONDITION_CBOR(pRecipients != nullptr, cbor_error);
 
 		if (!_COSE_array_replace(&pEncrypt->m_message, pRecipients,
 				INDEX_RECIPIENTS, CBOR_CONTEXT_PARAM_COMMA & cbor_error)) {
 			CN_CBOR_FREE(pRecipients, context);
-			if (perr != NULL) {
+			if (perr != nullptr) {
 				perr->err = _MapFromCBOR(cbor_error);
 			}
 			goto errorReturn;
diff --git a/src/Sign.cpp b/src/Sign.cpp
index a66ff76..8061c34 100644
--- a/src/Sign.cpp
+++ b/src/Sign.cpp
@@ -11,7 +11,7 @@
 
 #if INCLUDE_SIGN
 
-COSE *SignRoot = NULL;
+COSE *SignRoot = nullptr;
 
 /*! \private
  * @brief Test if a HCOSE_SIGN handle is valid
@@ -31,7 +31,7 @@
 {
 	COSE_SignMessage *p = (COSE_SignMessage *)h;
 
-	if (p == NULL) {
+	if (p == nullptr) {
 		return false;
 	}
 	return _COSE_IsInList(SignRoot, (COSE *)p);
@@ -49,18 +49,18 @@
 {
 	if (false) {
 	errorReturn:
-		return NULL;		
+		return nullptr;		
 	}
 	CHECK_CONDITION(flags == COSE_INIT_FLAGS_NONE, COSE_ERR_INVALID_PARAMETER);
 	COSE_SignMessage *pobj =
 		(COSE_SignMessage *)COSE_CALLOC(1, sizeof(COSE_SignMessage), context);
-	CHECK_CONDITION(pobj != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(pobj != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	if (!_COSE_Init(flags, &pobj->m_message, COSE_sign_object,
 			CBOR_CONTEXT_PARAM_COMMA perr)) {
 		_COSE_Sign_Release(pobj);
 		COSE_FREE(pobj, context);
-		return NULL;
+		return nullptr;
 	}
 
 	_COSE_InsertInList(&SignRoot, &pobj->m_message);
@@ -73,18 +73,18 @@
 	CBOR_CONTEXT_COMMA cose_errback *perr)
 {
 	COSE_SignMessage *pobj = pIn;
-	cn_cbor *pSigners = NULL;
+	cn_cbor *pSigners = nullptr;
 	// cn_cbor * tmp;
 	cose_errback error = {COSE_ERR_NONE};
-	if (perr == NULL) {
+	if (perr == nullptr) {
 		perr = &error;
 	}
 
-	if (pobj == NULL) {
+	if (pobj == nullptr) {
 		pobj = (COSE_SignMessage *)COSE_CALLOC(
 			1, sizeof(COSE_SignMessage), context);
 	}
-	CHECK_CONDITION(pobj != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(pobj != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	if (!_COSE_Init_From_Object(
 			&pobj->m_message, cbor, CBOR_CONTEXT_PARAM_COMMA perr)) {
@@ -92,7 +92,7 @@
 	}
 
 	pSigners = _COSE_arrayget_int(&pobj->m_message, INDEX_SIGNERS);
-	CHECK_CONDITION(pSigners != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(pSigners != nullptr, COSE_ERR_INVALID_PARAMETER);
 	CHECK_CONDITION(
 		pSigners->type == CN_CBOR_ARRAY, COSE_ERR_INVALID_PARAMETER);
 	CHECK_CONDITION(pSigners->length > 0,
@@ -101,30 +101,30 @@
 	pSigners = pSigners->first_child;
 	do {
 		COSE_SignerInfo *pInfo = _COSE_SignerInfo_Init_From_Object(
-			pSigners, NULL, CBOR_CONTEXT_PARAM_COMMA perr);
-		if (pInfo == NULL) {
+			pSigners, nullptr, CBOR_CONTEXT_PARAM_COMMA perr);
+		if (pInfo == nullptr) {
 			goto errorReturn;
 		}
 
 		pInfo->m_signerNext = pobj->m_signerFirst;
 		pobj->m_signerFirst = pInfo;
 		pSigners = pSigners->next;
-	} while (pSigners != NULL);
+	} while (pSigners != nullptr);
 
-	if (pIn == NULL) {
+	if (pIn == nullptr) {
 		_COSE_InsertInList(&SignRoot, &pobj->m_message);
 	}
 
 	return (HCOSE_SIGN)pobj;
 
 errorReturn:
-	if (pobj != NULL) {
+	if (pobj != nullptr) {
 		_COSE_Sign_Release(pobj);
-		if (pIn == NULL) {
+		if (pIn == nullptr) {
 			COSE_FREE(pobj, context);
 		}
 	}
-	return NULL;
+	return nullptr;
 }
 
 bool COSE_Sign_Free(HCOSE_SIGN h)
@@ -162,7 +162,7 @@
 	COSE_SignerInfo *pSigner;
 	COSE_SignerInfo *pSigner2;
 
-	for (pSigner = p->m_signerFirst; pSigner != NULL; pSigner = pSigner2) {
+	for (pSigner = p->m_signerFirst; pSigner != nullptr; pSigner = pSigner2) {
 		pSigner2 = pSigner->m_signerNext;
 		COSE_Signer_Free((HCOSE_SIGNER)pSigner);
 	}
@@ -176,30 +176,30 @@
 	cose_errback *perr)
 {
 #ifdef USE_CBOR_CONTEXT
-	cn_cbor_context *context = NULL;
+	cn_cbor_context *context = nullptr;
 #endif
-	cn_cbor *p = NULL;
+	cn_cbor *p = nullptr;
 	COSE_SignMessage *pMessage = (COSE_SignMessage *)h;
 	bool f = false;
 
 	CHECK_CONDITION(IsValidSignHandle(h), COSE_ERR_INVALID_HANDLE);
-	CHECK_CONDITION(rgb != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(rgb != nullptr, COSE_ERR_INVALID_PARAMETER);
 
 #ifdef USE_CBOR_CONTEXT
 	context = &pMessage->m_message.m_allocContext;
 #endif
 
-	p = cn_cbor_data_create(rgb, (int)cb, CBOR_CONTEXT_PARAM_COMMA NULL);
-	CHECK_CONDITION(p != NULL, COSE_ERR_OUT_OF_MEMORY);
+	p = cn_cbor_data_create(rgb, (int)cb, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	CHECK_CONDITION(p != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	CHECK_CONDITION(_COSE_array_replace(&pMessage->m_message, p, INDEX_BODY,
-						CBOR_CONTEXT_PARAM_COMMA NULL),
+						CBOR_CONTEXT_PARAM_COMMA nullptr),
 		COSE_ERR_OUT_OF_MEMORY);
-	p = NULL;
+	p = nullptr;
 
 	f = true;
 errorReturn:
-	if (p != NULL) {
+	if (p != nullptr) {
 		CN_CBOR_FREE(p, context);
 	}
 
@@ -212,46 +212,46 @@
 	cose_errback *perr)
 {
 #ifdef USE_CBOR_CONTEXT
-	cn_cbor_context *context = NULL;
+	cn_cbor_context *context = nullptr;
 	COSE_SignMessage *pMessage = (COSE_SignMessage *)hSign;
 #endif
 	const cn_cbor *cbor;
-	cn_cbor *cbor2 = NULL;
-	HCOSE_SIGNER hSigner = NULL;
+	cn_cbor *cbor2 = nullptr;
+	HCOSE_SIGNER hSigner = nullptr;
 	cn_cbor_errback cbor_error;
 
 	CHECK_CONDITION(IsValidSignHandle(hSign), COSE_ERR_INVALID_HANDLE);
-	CHECK_CONDITION(pkey != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(pkey != nullptr, COSE_ERR_INVALID_PARAMETER);
 
 #ifdef USE_CBOR_CONTEXT
 	context = &pMessage->m_message.m_allocContext;
 #endif
 
 	hSigner = COSE_Signer_Init(CBOR_CONTEXT_PARAM_COMMA perr);
-	if (hSigner == NULL) {
+	if (hSigner == nullptr) {
 		goto errorReturn;
 	}
 
 	cbor2 = cn_cbor_int_create(algId, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(cbor2 != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(cbor2 != nullptr, cbor_error);
 	if (!COSE_Signer_map_put_int(
 			hSigner, COSE_Header_Algorithm, cbor2, COSE_PROTECT_ONLY, perr)) {
 		goto errorReturn;
 	}
-	cbor2 = NULL;
+	cbor2 = nullptr;
 
 	cbor = cn_cbor_mapget_int(pkey, COSE_Key_ID);
-	if (cbor != NULL) {
+	if (cbor != nullptr) {
 		CHECK_CONDITION(
 			cbor->type == CN_CBOR_BYTES, COSE_ERR_INVALID_PARAMETER);
 		cbor2 = cn_cbor_data_create(cbor->v.bytes, (int)cbor->length,
 			CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-		CHECK_CONDITION_CBOR(cbor2 != NULL, cbor_error);
+		CHECK_CONDITION_CBOR(cbor2 != nullptr, cbor_error);
 		if (!COSE_Signer_map_put_int(
 				hSigner, COSE_Header_KID, cbor2, COSE_UNPROTECT_ONLY, perr)) {
 			goto errorReturn;
 		}
-		cbor2 = NULL;
+		cbor2 = nullptr;
 	}
 
 	if (!COSE_Signer_SetKey(hSigner, pkey, perr)) {
@@ -265,19 +265,19 @@
 	return hSigner;
 
 errorReturn:
-	if (cbor2 != NULL) {
+	if (cbor2 != nullptr) {
 		CN_CBOR_FREE(cbor2, context);
 	}
-	if (hSigner != NULL) {
+	if (hSigner != nullptr) {
 		COSE_Signer_Free(hSigner);
 	}
-	return NULL;
+	return nullptr;
 }
 
 bool COSE_Sign_Sign(HCOSE_SIGN h, cose_errback *perr)
 {
 #ifdef USE_CBOR_CONTEXT
-	cn_cbor_context *context = NULL;
+	cn_cbor_context *context = nullptr;
 #endif
 	COSE_SignMessage *pMessage = (COSE_SignMessage *)h;
 	COSE_SignerInfo *pSigner;
@@ -294,15 +294,15 @@
 #endif
 
 	pcborBody = _COSE_arrayget_int(&pMessage->m_message, INDEX_BODY);
-	CHECK_CONDITION((pcborBody != NULL) && (pcborBody->type == CN_CBOR_BYTES),
+	CHECK_CONDITION((pcborBody != nullptr) && (pcborBody->type == CN_CBOR_BYTES),
 		COSE_ERR_INVALID_PARAMETER);
 
 	pcborProtected = _COSE_encode_protected(&pMessage->m_message, perr);
-	if (pcborProtected == NULL) {
+	if (pcborProtected == nullptr) {
 		goto errorReturn;
 	}
 
-	for (pSigner = pMessage->m_signerFirst; pSigner != NULL;
+	for (pSigner = pMessage->m_signerFirst; pSigner != nullptr;
 		 pSigner = pSigner->m_signerNext) {
 		if (!_COSE_Signer_sign(
 				pSigner, pcborBody, pcborProtected, "Signature", perr)) {
@@ -311,7 +311,7 @@
 	}
 
 #if INCLUDE_COUNTERSIGNATURE
-	if (pMessage->m_message.m_counterSigners != NULL) {
+	if (pMessage->m_message.m_counterSigners != nullptr) {
 		if (!_COSE_CounterSign_Sign(
 				&pMessage->m_message, CBOR_CONTEXT_PARAM_COMMA perr)) {
 			goto errorReturn;
@@ -339,11 +339,11 @@
 	pSigner = (COSE_SignerInfo *)hSigner;
 
 	cnContent = _COSE_arrayget_int(&pSign->m_message, INDEX_BODY);
-	CHECK_CONDITION(cnContent != NULL && cnContent->type == CN_CBOR_BYTES,
+	CHECK_CONDITION(cnContent != nullptr && cnContent->type == CN_CBOR_BYTES,
 		COSE_ERR_INVALID_PARAMETER);
 
 	cnProtected = _COSE_arrayget_int(&pSign->m_message, INDEX_PROTECTED);
-	CHECK_CONDITION(cnProtected != NULL && cnProtected->type == CN_CBOR_BYTES,
+	CHECK_CONDITION(cnProtected != nullptr && cnProtected->type == CN_CBOR_BYTES,
 		COSE_ERR_INVALID_PARAMETER);
 
 	f = _COSE_Signer_validate(
@@ -361,10 +361,10 @@
 {
 	COSE_SignerInfo *pSigner;
 	COSE_SignMessage *pSign;
-	cn_cbor *pSigners = NULL;
-	cn_cbor *pSignersT = NULL;
+	cn_cbor *pSigners = nullptr;
+	cn_cbor *pSignersT = nullptr;
 #ifdef USE_CBOR_CONTEXT
-	cn_cbor_context *context = NULL;
+	cn_cbor_context *context = nullptr;
 #endif
 	cn_cbor_errback cbor_error;
 
@@ -382,16 +382,16 @@
 #endif	// USE_CBOR_CONTEXT
 
 	pSigners = _COSE_arrayget_int(&pSign->m_message, INDEX_SIGNERS);
-	if (pSigners == NULL) {
+	if (pSigners == nullptr) {
 		pSignersT = cn_cbor_array_create(CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-		CHECK_CONDITION_CBOR(pSignersT != NULL, cbor_error);
+		CHECK_CONDITION_CBOR(pSignersT != nullptr, cbor_error);
 
 		CHECK_CONDITION_CBOR(
 			_COSE_array_replace(&pSign->m_message, pSignersT, INDEX_SIGNERS,
 				CBOR_CONTEXT_PARAM_COMMA & cbor_error),
 			cbor_error);
 		pSigners = pSignersT;
-		pSignersT = NULL;
+		pSignersT = nullptr;
 	}
 
 	CHECK_CONDITION_CBOR(
@@ -402,7 +402,7 @@
 	return true;
 
 errorReturn:
-	if (pSignersT == NULL) {
+	if (pSignersT == nullptr) {
 		CN_CBOR_FREE(pSignersT, context);
 	}
 	return false;
@@ -414,10 +414,10 @@
 	cose_errback *perror)
 {
 	if (!IsValidSignHandle(h)) {
-		if (perror != NULL) {
+		if (perror != nullptr) {
 			perror->err = COSE_ERR_INVALID_HANDLE;
 		}
-		return NULL;
+		return nullptr;
 	}
 
 	return _COSE_map_get_int(
@@ -431,7 +431,7 @@
 	cose_errback *perror)
 {
 	if (!IsValidSignHandle(h)) {
-		if (perror != NULL) {
+		if (perror != nullptr) {
 			perror->err = COSE_ERR_INVALID_HANDLE;
 		}
 		return false;
@@ -449,19 +449,19 @@
 	COSE_SignerInfo *p;
 
 	if (!IsValidSignHandle(cose)) {
-		if (perr != NULL) {
+		if (perr != nullptr) {
 			perr->err = COSE_ERR_INVALID_HANDLE;
 		}
-		return NULL;
+		return nullptr;
 	}
 
 	p = ((COSE_SignMessage *)cose)->m_signerFirst;
 	for (i = 0; i < iSigner; i++) {
-		if (p == NULL) {
-			if (perr != NULL) {
+		if (p == nullptr) {
+			if (perr != nullptr) {
 				perr->err = COSE_ERR_INVALID_PARAMETER;
 			}
-			return NULL;
+			return nullptr;
 		}
 		p = p->m_signerNext;
 	}
diff --git a/src/Sign1.cpp b/src/Sign1.cpp
index 87b8f75..7d9eefa 100644
--- a/src/Sign1.cpp
+++ b/src/Sign1.cpp
@@ -19,7 +19,7 @@
 	COSE_KEY *pKey,
 	cose_errback *perr);
 
-COSE *Sign1Root = NULL;
+COSE *Sign1Root = nullptr;
 
 /*! \private
  * @brief Test if a HCOSE_SIGN1 handle is valid
@@ -39,7 +39,7 @@
 {
 	COSE_Sign1Message *p = (COSE_Sign1Message *)h;
 
-	if (p == NULL) {
+	if (p == nullptr) {
 		return false;
 	}
 	return _COSE_IsInList(Sign1Root, (COSE *)p);
@@ -50,24 +50,24 @@
 {
 	if (false) {
 	errorReturn:
-		return NULL;		
+		return nullptr;		
 	}
 	
 	CHECK_CONDITION(flags == COSE_INIT_FLAGS_NONE, COSE_ERR_INVALID_PARAMETER);
 	COSE_Sign1Message *pobj =
 		(COSE_Sign1Message *)COSE_CALLOC(1, sizeof(COSE_Sign1Message), context);
-	if (pobj == NULL) {
-		if (perr != NULL) {
+	if (pobj == nullptr) {
+		if (perr != nullptr) {
 			perr->err = COSE_ERR_OUT_OF_MEMORY;
 		}
-		return NULL;
+		return nullptr;
 	}
 
 	if (!_COSE_Init(flags, &pobj->m_message, COSE_sign_object,
 			CBOR_CONTEXT_PARAM_COMMA perr)) {
 		_COSE_Sign1_Release(pobj);
 		COSE_FREE(pobj, context);
-		return NULL;
+		return nullptr;
 	}
 
 	_COSE_InsertInList(&Sign1Root, &pobj->m_message);
@@ -82,35 +82,35 @@
 	COSE_Sign1Message *pobj = pIn;
 	cose_errback error = {COSE_ERR_NONE};
 
-	if (perr == NULL) {
+	if (perr == nullptr) {
 		perr = &error;
 	}
 
-	if (pobj == NULL) {
+	if (pobj == nullptr) {
 		pobj = (COSE_Sign1Message *)COSE_CALLOC(
 			1, sizeof(COSE_Sign1Message), context);
 	}
-	CHECK_CONDITION(pobj != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(pobj != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	if (!_COSE_Init_From_Object(
 			&pobj->m_message, cbor, CBOR_CONTEXT_PARAM_COMMA perr)) {
 		goto errorReturn;
 	}
 
-	if (pIn == NULL) {
+	if (pIn == nullptr) {
 		_COSE_InsertInList(&Sign1Root, &pobj->m_message);
 	}
 
 	return (HCOSE_SIGN1)pobj;
 
 errorReturn:
-	if (pobj != NULL) {
+	if (pobj != nullptr) {
 		_COSE_Sign1_Release(pobj);
-		if (pIn == NULL) {
+		if (pIn == nullptr) {
 			COSE_FREE(pobj, context);
 		}
 	}
-	return NULL;
+	return nullptr;
 }
 
 bool COSE_Sign1_Free(HCOSE_SIGN1 h)
@@ -154,31 +154,31 @@
 	cose_errback *perr)
 {
 #ifdef USE_CBOR_CONTEXT
-	cn_cbor_context *context = NULL;
+	cn_cbor_context *context = nullptr;
 #endif
-	cn_cbor *p = NULL;
+	cn_cbor *p = nullptr;
 	COSE_Sign1Message *pMessage = (COSE_Sign1Message *)h;
 	bool fRet = false;
 
 	CHECK_CONDITION(IsValidSign1Handle(h), COSE_ERR_INVALID_HANDLE);
-	CHECK_CONDITION(rgb != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(rgb != nullptr, COSE_ERR_INVALID_PARAMETER);
 
 #ifdef USE_CBOR_CONTEXT
 	context = &pMessage->m_message.m_allocContext;
 #endif
 
-	p = cn_cbor_data_create(rgb, (int)cb, CBOR_CONTEXT_PARAM_COMMA NULL);
-	CHECK_CONDITION(p != NULL, COSE_ERR_OUT_OF_MEMORY);
+	p = cn_cbor_data_create(rgb, (int)cb, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	CHECK_CONDITION(p != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	CHECK_CONDITION(_COSE_array_replace(&pMessage->m_message, p, INDEX_BODY,
-						CBOR_CONTEXT_PARAM_COMMA NULL),
+						CBOR_CONTEXT_PARAM_COMMA nullptr),
 		COSE_ERR_OUT_OF_MEMORY);
-	p = NULL;
+	p = nullptr;
 
 	fRet = true;
 
 errorReturn:
-	if (p != NULL) {
+	if (p != nullptr) {
 		CN_CBOR_FREE(p, context);
 	}
 	return fRet;
@@ -206,7 +206,7 @@
 	cose_errback *perr)
 {
 	if (!IsValidSign1Handle(hcose)) {
-		if (perr != NULL) {
+		if (perr != nullptr) {
 			perr->err = COSE_ERR_INVALID_HANDLE;
 		}
 		return false;
@@ -218,25 +218,25 @@
 
 bool COSE_Sign1_Sign(HCOSE_SIGN1 h, const cn_cbor *pKey, cose_errback *perr)
 {
-	HCOSE_KEY cose = NULL;
+	HCOSE_KEY cose = nullptr;
 	bool fRet = false;
 
 	if (false) {
 	errorReturn:
-		if (cose != NULL) {
+		if (cose != nullptr) {
 			COSE_KEY_Free(cose);
 		}
 		return fRet;		
 	}
 
-	CHECK_CONDITION(pKey != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(pKey != nullptr, COSE_ERR_INVALID_PARAMETER);
 
 #ifdef USE_CBOR_CONTEXT
-	cn_cbor_context *context = NULL;
+	cn_cbor_context *context = nullptr;
 #endif
 	
 	cose = COSE_KEY_FromCbor((cn_cbor *)pKey, CBOR_CONTEXT_PARAM_COMMA perr);
-	if (cose == NULL) {
+	if (cose == nullptr) {
 		goto errorReturn;
 	}
 
@@ -248,7 +248,7 @@
 bool COSE_Sign1_Sign2(HCOSE_SIGN1 h, HCOSE_KEY hKey, cose_errback *perr)
 {
 #ifdef USE_CBOR_CONTEXT
-	cn_cbor_context *context = NULL;
+	cn_cbor_context *context = nullptr;
 #endif
 	COSE_Sign1Message *pMessage = (COSE_Sign1Message *)h;
 	const cn_cbor *pcborProtected;
@@ -265,7 +265,7 @@
 #endif
 
 	pcborProtected = _COSE_encode_protected(&pMessage->m_message, perr);
-	if (pcborProtected == NULL) {
+	if (pcborProtected == nullptr) {
 		goto errorReturn;
 	}
 
@@ -274,7 +274,7 @@
 	}
 
 #if INCLUDE_COUNTERSIGNATURE
-	if (pMessage->m_message.m_counterSigners != NULL) {
+	if (pMessage->m_message.m_counterSigners != nullptr) {
 		if (!_COSE_CounterSign_Sign(
 				&pMessage->m_message, CBOR_CONTEXT_PARAM_COMMA perr)) {
 			goto errorReturn;
@@ -293,11 +293,11 @@
 	COSE_Sign1Message *pSign;
 	const cn_cbor *cnContent;
 	const cn_cbor *cnProtected;
-	COSE_KEY *pcose = NULL;
+	COSE_KEY *pcose = nullptr;
 
 	if (false) {
 	errorReturn:
-		if (pcose != NULL) {
+		if (pcose != nullptr) {
 			COSE_KEY_Free((HCOSE_KEY)pcose);
 		}
 		return false;		
@@ -308,11 +308,11 @@
 	pSign = (COSE_Sign1Message *)hSign;
 
 	cnContent = _COSE_arrayget_int(&pSign->m_message, INDEX_BODY);
-	CHECK_CONDITION(cnContent != NULL && cnContent->type == CN_CBOR_BYTES,
+	CHECK_CONDITION(cnContent != nullptr && cnContent->type == CN_CBOR_BYTES,
 		COSE_ERR_INVALID_PARAMETER);
 
 	cnProtected = _COSE_arrayget_int(&pSign->m_message, INDEX_PROTECTED);
-	CHECK_CONDITION(cnProtected != NULL && cnProtected->type == CN_CBOR_BYTES,
+	CHECK_CONDITION(cnProtected != nullptr && cnProtected->type == CN_CBOR_BYTES,
 		COSE_ERR_INVALID_PARAMETER);
 
 #ifdef USE_CBOR_CONTEXT
@@ -320,7 +320,7 @@
 #endif
 
 	pcose = (COSE_KEY*) COSE_KEY_FromCbor((cn_cbor *)pKey, CBOR_CONTEXT_PARAM_COMMA perr);
-	CHECK_CONDITION(pKey != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(pKey != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	f = _COSE_Signer1_validate(pSign, pcose, perr);
 
@@ -334,10 +334,10 @@
 	cose_errback *perror)
 {
 	if (!IsValidSign1Handle(h)) {
-		if (perror != NULL) {
+		if (perror != nullptr) {
 			perror->err = COSE_ERR_INVALID_HANDLE;
 		}
-		return NULL;
+		return nullptr;
 	}
 
 	return _COSE_map_get_int(
@@ -351,7 +351,7 @@
 	cose_errback *perr)
 {
 	CHECK_CONDITION(IsValidSign1Handle(h), COSE_ERR_INVALID_HANDLE);
-	CHECK_CONDITION(value != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(value != nullptr, COSE_ERR_INVALID_PARAMETER);
 
 	return _COSE_map_put(
 		&((COSE_Sign1Message *)h)->m_message, key, value, flags, perr);
@@ -366,86 +366,86 @@
 	const char *szContext,
 	cose_errback *perr)
 {
-	cn_cbor *pArray = NULL;
+	cn_cbor *pArray = nullptr;
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context = &pMessage->m_message.m_allocContext;
 #endif
 	cn_cbor_errback cbor_error;
-	cn_cbor *cn = NULL;
+	cn_cbor *cn = nullptr;
 	cn_cbor *cn2;
 	size_t cbToSign;
-	byte *pbToSign = NULL;
+	byte *pbToSign = nullptr;
 
 	pArray = cn_cbor_array_create(CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(pArray != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(pArray != nullptr, cbor_error);
 
 	cn =
 		cn_cbor_string_create(szContext, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(cn != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(cn != nullptr, cbor_error);
 	CHECK_CONDITION_CBOR(
 		cn_cbor_array_append(pArray, cn, &cbor_error), cbor_error);
-	cn = NULL;
+	cn = nullptr;
 
 	cn2 = _COSE_arrayget_int(&pMessage->m_message, INDEX_PROTECTED);
-	CHECK_CONDITION(cn2 != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(cn2 != nullptr, COSE_ERR_INVALID_PARAMETER);
 
 	if ((cn2->length == 1) && (cn2->v.bytes[0] == 0xa0)) {
 		cn =
-			cn_cbor_data_create(NULL, 0, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
+			cn_cbor_data_create(nullptr, 0, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
 	}
 	else {
 		cn = cn_cbor_data_create(cn2->v.bytes, (int)cn2->length,
 			CBOR_CONTEXT_PARAM_COMMA & cbor_error);
 	}
-	CHECK_CONDITION_CBOR(cn != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(cn != nullptr, cbor_error);
 	CHECK_CONDITION_CBOR(
 		cn_cbor_array_append(pArray, cn, &cbor_error), cbor_error);
-	cn = NULL;
+	cn = nullptr;
 
 	cn = cn_cbor_data_create(pMessage->m_message.m_pbExternal,
 		(int)pMessage->m_message.m_cbExternal,
 		CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(cn != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(cn != nullptr, cbor_error);
 	CHECK_CONDITION_CBOR(
 		cn_cbor_array_append(pArray, cn, &cbor_error), cbor_error);
-	cn = NULL;
+	cn = nullptr;
 
 	cn2 = _COSE_arrayget_int(&pMessage->m_message, INDEX_BODY);
 	cn = cn_cbor_data_create(
 		cn2->v.bytes, (int)cn2->length, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(cn != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(cn != nullptr, cbor_error);
 	CHECK_CONDITION_CBOR(
 		cn_cbor_array_append(pArray, cn, &cbor_error), cbor_error);
-	cn = NULL;
+	cn = nullptr;
 
 	cbToSign = cn_cbor_encode_size(pArray);
 	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(pbToSign != nullptr, COSE_ERR_OUT_OF_MEMORY);
 	CHECK_CONDITION(cn_cbor_encoder_write(pbToSign, 0, cbToSign, pArray) ==
 						(ssize_t)cbToSign,
 		COSE_ERR_CBOR);
 
 	*ppbToSign = pbToSign;
 	*pcbToSign = cbToSign;
-	pbToSign = NULL;
+	pbToSign = nullptr;
 
-	if (cn != NULL) {
+	if (cn != nullptr) {
 		CN_CBOR_FREE(cn, context);
 	}
-	if (pArray != NULL) {
+	if (pArray != nullptr) {
 		CN_CBOR_FREE(pArray, context);
 	}
 	return true;
 
 errorReturn:
-	if (pbToSign != NULL) {
+	if (pbToSign != nullptr) {
 		COSE_FREE(pbToSign, context);
 	}
-	if (cn != NULL) {
+	if (cn != nullptr) {
 		CN_CBOR_FREE(cn, context);
 	}
-	if (pArray != NULL) {
+	if (pArray != nullptr) {
 		CN_CBOR_FREE(pArray, context);
 	}
 	return false;
@@ -458,31 +458,31 @@
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context = &pSigner->m_message.m_allocContext;
 #endif
-	cn_cbor *pcborBody2 = NULL;
-	cn_cbor *pcborProtected2 = NULL;
-	cn_cbor *pArray = NULL;
-	cn_cbor *cn = NULL;
+	cn_cbor *pcborBody2 = nullptr;
+	cn_cbor *pcborProtected2 = nullptr;
+	cn_cbor *pArray = nullptr;
+	cn_cbor *cn = nullptr;
 	size_t cbToSign;
-	byte *pbToSign = NULL;
+	byte *pbToSign = nullptr;
 	bool f;
 	int alg;
 
-	pArray = cn_cbor_array_create(CBOR_CONTEXT_PARAM_COMMA NULL);
-	if (pArray == NULL) {
-		if (perr != NULL) {
+	pArray = cn_cbor_array_create(CBOR_CONTEXT_PARAM_COMMA nullptr);
+	if (pArray == nullptr) {
+		if (perr != nullptr) {
 			perr->err = COSE_ERR_OUT_OF_MEMORY;
 		}
 	errorReturn:
-		if (pcborBody2 != NULL) {
+		if (pcborBody2 != nullptr) {
 			CN_CBOR_FREE(pcborBody2, context);
 		}
-		if (pcborProtected2 != NULL) {
+		if (pcborProtected2 != nullptr) {
 			CN_CBOR_FREE(pcborProtected2, context);
 		}
-		if (pArray != NULL) {
+		if (pArray != nullptr) {
 			COSE_FREE(pArray, context);
 		}
-		if (pbToSign != NULL) {
+		if (pbToSign != nullptr) {
 			COSE_FREE(pbToSign, context);
 		}
 		return false;
@@ -490,7 +490,7 @@
 
 	cn = _COSE_map_get_int(
 		&pSigner->m_message, COSE_Header_Algorithm, COSE_BOTH, perr);
-	if (cn == NULL) {
+	if (cn == nullptr) {
 		goto errorReturn;
 	}
 
@@ -551,11 +551,11 @@
 	COSE_KEY *pKey,
 	cose_errback *perr)
 {
-	byte *pbToSign = NULL;
+	byte *pbToSign = nullptr;
 	int alg;
-	const cn_cbor *cn = NULL;
+	const cn_cbor *cn = nullptr;
 #ifdef USE_CBOR_CONTEXT
-	cn_cbor_context *context = NULL;
+	cn_cbor_context *context = nullptr;
 #endif
 	size_t cbToSign;
 	bool fRet = false;
@@ -566,7 +566,7 @@
 
 	cn = _COSE_map_get_int(
 		&pSign->m_message, COSE_Header_Algorithm, COSE_BOTH, perr);
-	if (cn == NULL) {
+	if (cn == nullptr) {
 		goto errorReturn;
 	}
 
@@ -631,7 +631,7 @@
 	fRet = true;
 
 errorReturn:
-	if (pbToSign != NULL) {
+	if (pbToSign != nullptr) {
 		COSE_FREE(pbToSign, context);
 	}
 
diff --git a/src/SignerInfo.cpp b/src/SignerInfo.cpp
index 292e21d..55ac6f0 100644
--- a/src/SignerInfo.cpp
+++ b/src/SignerInfo.cpp
@@ -16,7 +16,7 @@
 #if INCLUDE_SIGN || INCLUDE_COUNTERSIGNATURE
 
 #if INCLUDE_SIGN
-COSE *SignerRoot = NULL;
+COSE *SignerRoot = nullptr;
 
 bool IsValidSignerHandle(HCOSE_SIGNER h)
 {
@@ -34,7 +34,7 @@
 	}
 
 	_COSE_Release(&pSigner->m_message);
-	if (pSigner->m_pkey != NULL) {
+	if (pSigner->m_pkey != nullptr) {
 		COSE_KEY_Free((HCOSE_KEY)pSigner->m_pkey);
 	}
 
@@ -71,18 +71,18 @@
 {
 	COSE_SignerInfo *pobj =
 		(COSE_SignerInfo *)COSE_CALLOC(1, sizeof(COSE_SignerInfo), context);
-	if (pobj == NULL) {
-		if (perror != NULL) {
+	if (pobj == nullptr) {
+		if (perror != nullptr) {
 			perror->err = COSE_ERR_OUT_OF_MEMORY;
 		}
-		return NULL;
+		return nullptr;
 	}
 
 	if (!_COSE_SignerInfo_Init(COSE_INIT_FLAGS_NO_CBOR_TAG, pobj,
 			COSE_recipient_object, CBOR_CONTEXT_PARAM_COMMA perror)) {
 		_COSE_SignerInfo_Release(pobj);
 		COSE_FREE(pobj, context);
-		return NULL;
+		return nullptr;
 	}
 
 	_COSE_InsertInList(&SignerRoot, &pobj->m_message);
@@ -105,10 +105,10 @@
 {
 	COSE_SignerInfo *pSigner = pIn;
 
-	if (pSigner == NULL) {
+	if (pSigner == nullptr) {
 		pSigner =
 			(COSE_SignerInfo *)COSE_CALLOC(1, sizeof(COSE_SignerInfo), context);
-		CHECK_CONDITION(pSigner != NULL, COSE_ERR_OUT_OF_MEMORY);
+		CHECK_CONDITION(pSigner != nullptr, COSE_ERR_OUT_OF_MEMORY);
 	}
 
 	CHECK_CONDITION(cbor->type == CN_CBOR_ARRAY, COSE_ERR_INVALID_PARAMETER);
@@ -119,18 +119,18 @@
 	}
 
 #if INCLUDE_SIGN
-	if (pIn == NULL) {
+	if (pIn == nullptr) {
 		_COSE_InsertInList(&SignerRoot, &pSigner->m_message);
 	}
 #endif
 	return pSigner;
 
 errorReturn:
-	if (pSigner != NULL && pIn == NULL) {
+	if (pSigner != nullptr && pIn == nullptr) {
 		_COSE_SignerInfo_Release(pSigner);
 		COSE_FREE(pSigner, context);
 	}
-	return NULL;
+	return nullptr;
 }
 
 static bool BuildToBeSigned(byte **ppbToSign,
@@ -143,82 +143,82 @@
 	const char *const contextString,
 	CBOR_CONTEXT_COMMA cose_errback *perr)
 {
-	cn_cbor *pArray = NULL;
+	cn_cbor *pArray = nullptr;
 	cn_cbor_errback cbor_error;
 	size_t cbToSign;
-	byte *pbToSign = NULL;
+	byte *pbToSign = nullptr;
 	bool f = false;
-	cn_cbor *cn = NULL;
+	cn_cbor *cn = nullptr;
 
 	if (false) {
 	errorReturn:
-		if (cn != NULL) {
+		if (cn != nullptr) {
 			CN_CBOR_FREE(cn, context);
 		}
-		if (pArray != NULL) {
+		if (pArray != nullptr) {
 			CN_CBOR_FREE(pArray, context);
 		}
-		if (pbToSign != NULL) {
+		if (pbToSign != nullptr) {
 			COSE_FREE(pbToSign, context);
 		}
 		return f;		
 	}
 	pArray = cn_cbor_array_create(CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(pArray != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(pArray != nullptr, cbor_error);
 
 	cn = cn_cbor_string_create(
 		contextString, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(cn != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(cn != nullptr, cbor_error);
 	CHECK_CONDITION_CBOR(
 		cn_cbor_array_append(pArray, cn, &cbor_error), cbor_error);
-	cn = NULL;
+	cn = nullptr;
 
 	if (pcborProtected->length == 1 && (pcborProtected->v.bytes[0] == 0xa0)) {
 		cn =
-			cn_cbor_data_create(NULL, 0, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
+			cn_cbor_data_create(nullptr, 0, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
 	}
 	else {
 		cn = cn_cbor_data_create(pcborProtected->v.bytes,
 			(int)pcborProtected->length, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
 	}
-	CHECK_CONDITION_CBOR(cn != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(cn != nullptr, cbor_error);
 	CHECK_CONDITION_CBOR(
 		cn_cbor_array_append(pArray, cn, &cbor_error), cbor_error);
-	cn = NULL;
+	cn = nullptr;
 
 	if ((pcborProtectedSign->length == 1) &&
 		(pcborProtectedSign->v.bytes[0] == 0xa0)) {
 		cn =
-			cn_cbor_data_create(NULL, 0, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
+			cn_cbor_data_create(nullptr, 0, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
 	}
 	else {
 		cn = cn_cbor_data_create(pcborProtectedSign->v.bytes,
 			(int)pcborProtectedSign->length,
 			CBOR_CONTEXT_PARAM_COMMA & cbor_error);
 	}
-	CHECK_CONDITION_CBOR(cn != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(cn != nullptr, cbor_error);
 	CHECK_CONDITION_CBOR(
 		cn_cbor_array_append(pArray, cn, &cbor_error), cbor_error);
-	cn = NULL;
+	cn = nullptr;
 
 	cn = cn_cbor_data_create(
 		pbExternal, (int)cbExternal, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(cn != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(cn != nullptr, cbor_error);
 	CHECK_CONDITION_CBOR(
 		cn_cbor_array_append(pArray, cn, &cbor_error), cbor_error);
-	cn = NULL;
+	cn = nullptr;
 
 	cn = cn_cbor_data_create(pcborBody->v.bytes, (int)pcborBody->length,
 		CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(cn != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(cn != nullptr, cbor_error);
 	CHECK_CONDITION_CBOR(
 		cn_cbor_array_append(pArray, cn, &cbor_error), cbor_error);
-	cn = NULL;
+	cn = nullptr;
 
 	cbToSign = cn_cbor_encode_size(pArray);
 	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(pbToSign != nullptr, COSE_ERR_OUT_OF_MEMORY);
 	const ssize_t writtenBits =
 		cn_cbor_encoder_write(pbToSign, 0, cbToSign, pArray);
 	CHECK_CONDITION(writtenBits >= 0, COSE_ERR_CBOR);
@@ -226,7 +226,7 @@
 
 	*ppbToSign = pbToSign;
 	*pcbToSign = cbToSign;
-	pbToSign = NULL;
+	pbToSign = nullptr;
 	f = true;
 	goto errorReturn;	
 }
@@ -240,20 +240,20 @@
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context = &pSigner->m_message.m_allocContext;
 #endif
-	cn_cbor *pcborProtectedSign = NULL;
-	cn_cbor *pArray = NULL;
-	cn_cbor *cnAlgorithm = NULL;
+	cn_cbor *pcborProtectedSign = nullptr;
+	cn_cbor *pArray = nullptr;
+	cn_cbor *cnAlgorithm = nullptr;
 	size_t cbToSign;
-	byte *pbToSign = NULL;
+	byte *pbToSign = nullptr;
 	int alg;
 	bool fRet = false;
 
-	pArray = cn_cbor_array_create(CBOR_CONTEXT_PARAM_COMMA NULL);
-	CHECK_CONDITION(pArray != NULL, COSE_ERR_OUT_OF_MEMORY);
+	pArray = cn_cbor_array_create(CBOR_CONTEXT_PARAM_COMMA nullptr);
+	CHECK_CONDITION(pArray != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	cnAlgorithm = _COSE_map_get_int(
 		&pSigner->m_message, COSE_Header_Algorithm, COSE_BOTH, perr);
-	if (cnAlgorithm == NULL) {
+	if (cnAlgorithm == nullptr) {
 		goto errorReturn;
 	}
 
@@ -269,7 +269,7 @@
 	}
 
 	pcborProtectedSign = _COSE_encode_protected(&pSigner->m_message, perr);
-	if (pcborProtectedSign == NULL) {
+	if (pcborProtectedSign == nullptr) {
 		goto errorReturn;
 	}
 
@@ -322,7 +322,7 @@
 	}
 
 #if INCLUDE_COUNTERSIGNATURE
-	if (pSigner->m_message.m_counterSigners != NULL) {
+	if (pSigner->m_message.m_counterSigners != nullptr) {
 		if (!_COSE_CounterSign_Sign(
 				&pSigner->m_message, CBOR_CONTEXT_PARAM_COMMA perr)) {
 			goto errorReturn;
@@ -333,10 +333,10 @@
 	fRet = true;
 
 errorReturn:
-	if (pArray != NULL) {
+	if (pArray != nullptr) {
 		COSE_FREE(pArray, context);
 	}
-	if (pbToSign != NULL) {
+	if (pbToSign != nullptr) {
 		COSE_FREE(pbToSign, context);
 	}
 	return fRet;
@@ -356,12 +356,12 @@
 	CHECK_CONDITION(IsValidKeyHandle(pKey), COSE_ERR_INVALID_HANDLE);
 
 	p = (COSE_SignerInfo *)h;
-	if (p->m_pkey != NULL) {
+	if (p->m_pkey != nullptr) {
 		COSE_KEY_Free((HCOSE_KEY)p->m_pkey);
 	}
 	COSE_KEY *pcose = (COSE_KEY *)pKey;
 	p->m_pkey = pcose;
-	if (pcose != NULL) {
+	if (pcose != nullptr) {
 		pcose->m_refCount += 1;
 	}
 
@@ -370,21 +370,21 @@
 
 bool COSE_Signer_SetKey(HCOSE_SIGNER h, const cn_cbor *pKey, cose_errback *perr)
 {
-	HCOSE_KEY cose = NULL;
+	HCOSE_KEY cose = nullptr;
 	bool fRet = false;
 #ifdef USE_CBOR_CONTEXT
-	cn_cbor_context *context = NULL;
+	cn_cbor_context *context = nullptr;
 #endif
 
-	CHECK_CONDITION(pKey != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(pKey != nullptr, COSE_ERR_INVALID_PARAMETER);
 	cose = COSE_KEY_FromCbor((cn_cbor*) pKey, CBOR_CONTEXT_PARAM_COMMA perr);
 	
-	CHECK_CONDITION(cose != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(cose != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	fRet =COSE_Signer_SetKey2(h, cose, perr);
 
 errorReturn:
-	if (cose != NULL) {
+	if (cose != nullptr) {
 		COSE_KEY_Free(cose);
 	}
 	return fRet;
@@ -412,7 +412,7 @@
 	cose_errback *perr)
 {
 	if (!IsValidSignerHandle(hcose)) {
-		if (perr != NULL) {
+		if (perr != nullptr) {
 			perr->err = COSE_ERR_INVALID_HANDLE;
 		}
 		return false;
@@ -429,7 +429,7 @@
 	const char *const contextString,
 	cose_errback *perr)
 {
-	byte *pbToBeSigned = NULL;
+	byte *pbToBeSigned = nullptr;
 	int alg = 0;
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context = &pSigner->m_message.m_allocContext;
@@ -439,9 +439,9 @@
 
 	const cn_cbor *cn = _COSE_map_get_int(
 		&pSigner->m_message, COSE_Header_Algorithm, COSE_BOTH, perr);
-	if (cn == NULL) {
+	if (cn == nullptr) {
 	errorReturn:
-		if (pbToBeSigned != NULL) {
+		if (pbToBeSigned != nullptr) {
 			COSE_FREE(pbToBeSigned, context);
 		}
 
@@ -463,7 +463,7 @@
 	cn_cbor *cnProtected =
 		_COSE_arrayget_int(&pSigner->m_message, INDEX_PROTECTED);
 	CHECK_CONDITION(
-		(cnProtected != NULL) && (cnProtected->type == CN_CBOR_BYTES),
+		(cnProtected != nullptr) && (cnProtected->type == CN_CBOR_BYTES),
 		COSE_ERR_INVALID_PARAMETER);
 
 	//  Build authenticated data
@@ -477,7 +477,7 @@
 	cn_cbor *cnSignature =
 		_COSE_arrayget_int(&pSigner->m_message, INDEX_SIGNATURE);
 	CHECK_CONDITION(
-		(cnSignature != NULL) && (cnSignature->type == CN_CBOR_BYTES),
+		(cnSignature != nullptr) && (cnSignature->type == CN_CBOR_BYTES),
 		COSE_ERR_INVALID_PARAMETER);
 
 	switch (alg) {
@@ -533,10 +533,10 @@
 	cose_errback *perr)
 {
 	if (!IsValidSignerHandle(h)) {
-		if (perr != NULL) {
+		if (perr != nullptr) {
 			perr->err = COSE_ERR_INVALID_HANDLE;
 		}
-		return NULL;
+		return nullptr;
 	}
 
 	return _COSE_map_get_int((COSE *)h, key, flags, perr);
@@ -549,7 +549,7 @@
 	cose_errback *perr)
 {
 	CHECK_CONDITION(IsValidSignerHandle(h), COSE_ERR_INVALID_HANDLE);
-	CHECK_CONDITION(value != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(value != nullptr, COSE_ERR_INVALID_PARAMETER);
 
 	return _COSE_map_put(
 		&((COSE_SignerInfo *)h)->m_message, key, value, flags, perr);
diff --git a/src/bcrypt.cpp b/src/bcrypt.cpp
index c8f8b55..6739751 100644
--- a/src/bcrypt.cpp
+++ b/src/bcrypt.cpp
@@ -15,37 +15,37 @@
 	int cbAuthData)
 {
 	NTSTATUS err;
-	BCRYPT_ALG_HANDLE hAlg = NULL;
-	BCRYPT_KEY_DATA_BLOB_HEADER *pHdr = NULL;
-	BCRYPT_KEY_HANDLE hKey = NULL;
+	BCRYPT_ALG_HANDLE hAlg = nullptr;
+	BCRYPT_KEY_DATA_BLOB_HEADER *pHdr = nullptr;
+	BCRYPT_KEY_HANDLE hKey = nullptr;
 	BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO authInfo = {0};
 	byte rgbTag[16];
 	int cbOut;
-	byte *pbOut = NULL;
+	byte *pbOut = nullptr;
 
-	err = BCryptOpenAlgorithmProvider(&hAlg, "AES_CCM", NULL, 0);
+	err = BCryptOpenAlgorithmProvider(&hAlg, "AES_CCM", nullptr, 0);
 	if (err != 0) {
 	error:
-		if (pbOut != NULL)
+		if (pbOut != nullptr)
 			free(pbOut);
-		if (pHdr != NULL)
+		if (pHdr != nullptr)
 			free(pHdr);
-		if (hKey != NULL)
+		if (hKey != nullptr)
 			BCryptDestroyKey(hKey);
-		if (hAlg != NULL)
+		if (hAlg != nullptr)
 			BCryptCloseAlgorithmProvider(hAlg, 0);
 		return false;
 	}
 
 	pHdr = (BCRYPT_KEY_DATA_BLOB_HEADER *)malloc(sizeof(*pHdr) + KSize / 8);
-	if (pHdr == NULL)
+	if (pHdr == nullptr)
 		goto error;
 	pHdr->dwMagic = BCRYPT_KEY_DATA_BLOB_MAGIC;
 	pHdr->dwVersion = BCRYPT_KEY_DATA_BLOB_VERSION1;
 	pHdr->cbKeyData = KSize / 8;
 	memcpy(&pHdr[1], pcose->pbKey, pcose->cbKey);
 
-	err = BCryptImportKey(hAlg, NULL, BCRYPT_KEY_DATA_BLOB, &hKey, NULL, 0,
+	err = BCryptImportKey(hAlg, nullptr, BCRYPT_KEY_DATA_BLOB, &hKey, nullptr, 0,
 		pHdr, (sizeof(*pHdr) + KSize / 8), 0);
 	if (err != 0)
 		goto error;
@@ -57,22 +57,22 @@
 	authInfo.cbAuthData = cbAuthData;
 	authInfo.pbTag = rgbTag;
 	authInfo.cbTag = TSize / 8;
-	authInfo.pbMacContext = NULL;
+	authInfo.pbMacContext = nullptr;
 
 	cbOut = pcose->cbContent + TSize / 8;
 	pbOut = (byte *)malloc(cbOut);
-	if (pbOut == NULL)
+	if (pbOut == nullptr)
 		goto error;
 
 	err = BCryptEncrypt(hKey, pcose->pbContent, pcose->cbContent, &authInfo,
-		NULL, 0, pbOut, cbOut, 0, 0);
+		nullptr, 0, pbOut, cbOut, 0, 0);
 	if (err != 0)
 		goto error;
 
 	memcpy(&pbOut[pcose->cbContent], rgbTag, TSize / 8);
 
 	cn_cbor_mapput_int(pcose->m_message.m_cbor, COSE_Header_Ciphertext,
-		cn_cbor_data_create(pbOut, cbOut, NULL), NULL);
+		cn_cbor_data_create(pbOut, cbOut, nullptr), nullptr);
 
 	return true;
 }
diff --git a/src/cbor.cpp b/src/cbor.cpp
index d26c850..a28a154 100644
--- a/src/cbor.cpp
+++ b/src/cbor.cpp
@@ -60,7 +60,7 @@
 	cn_cbor *cb_temp2;
 
 	if (!cb_array || !cb_value || cb_array->type != CN_CBOR_ARRAY) {
-		if (errp != NULL) {
+		if (errp != nullptr) {
 			errp->err = CN_CBOR_ERR_INVALID_PARAMETER;
 		}
 		return false;
@@ -76,15 +76,15 @@
 				cb_array->last_child = cb_value;
 			}
 			cb_array->first_child = cb_value;
-			cb_temp->parent = NULL;
-			cb_temp->next = NULL;
+			cb_temp->parent = nullptr;
+			cb_temp->next = nullptr;
 			cn_cbor_free(cb_temp CBOR_CONTEXT_PARAM);
 			return true;
 		}
 		return cn_cbor_array_append(cb_array, cb_value, errp);
 	}
 
-	if (cb_array->first_child == NULL) {
+	if (cb_array->first_child == nullptr) {
 		INIT_CB(cb_temp2);
 		cb_array->first_child = cb_array->last_child = cb_temp2;
 		cb_temp2->parent = cb_array;
@@ -94,7 +94,7 @@
 
 	cb_temp = cb_array->first_child;
 	for (i = 1; i < index; i++) {
-		if (cb_temp->next == NULL) {
+		if (cb_temp->next == nullptr) {
 			INIT_CB(cb_temp2);
 			cb_temp2->type = CN_CBOR_INVALID;
 			cb_temp->next = cb_temp2;
@@ -106,7 +106,7 @@
 		cb_temp = cb_temp->next;
 	}
 
-	if (cb_temp->next == NULL) {
+	if (cb_temp->next == nullptr) {
 		cb_temp->next = cb_value;
 		cb_value->parent = cb_array;
 		cb_array->last_child = cb_value;
@@ -122,8 +122,8 @@
 		cb_array->last_child = cb_value;
 	}
 
-	cb_temp2->next = NULL;
-	cb_temp2->parent = NULL;
+	cb_temp2->next = nullptr;
+	cb_temp2->parent = nullptr;
 	cn_cbor_free(cb_temp2 CBOR_CONTEXT_PARAM);
 
 	return true;
@@ -132,15 +132,15 @@
 cn_cbor *cn_cbor_clone(const cn_cbor *pIn,
 	CBOR_CONTEXT_COMMA cn_cbor_errback *pcn_cbor_error)
 {
-	cn_cbor *pOut = NULL;
+	cn_cbor *pOut = nullptr;
 	char *sz;
 	unsigned char *pb;
 
 	switch (pIn->type) {
 		case CN_CBOR_TEXT:
 			sz = (char*)( CN_CBOR_CALLOC(pIn->length + 1, 1, context));
-			if (sz == NULL) {
-				return NULL;
+			if (sz == nullptr) {
+				return nullptr;
 			}
 			memcpy(sz, pIn->v.str, pIn->length);
 			sz[pIn->length] = 0;
@@ -155,8 +155,8 @@
 		case CN_CBOR_BYTES:
 			pb = static_cast<unsigned char *> (CN_CBOR_CALLOC(
 				(int)pIn->length, 1, context));
-			if (pb == NULL) {
-				return NULL;
+			if (pb == nullptr) {
+				return nullptr;
 			}
 			memcpy(pb, pIn->v.bytes, pIn->length);
 			pOut = cn_cbor_data_create2(
@@ -176,11 +176,11 @@
 	CBOR_CONTEXT_COMMA cn_cbor_errback *perr)
 {
 	cn_cbor *pcnTag = CN_CALLOC(context);
-	if (pcnTag == NULL) {
-		if (perr != NULL) {
+	if (pcnTag == nullptr) {
+		if (perr != nullptr) {
 			perr->err = CN_CBOR_ERR_OUT_OF_MEMORY;
 		}
-		return NULL;
+		return nullptr;
 	}
 
 	pcnTag->type = CN_CBOR_TAG;
@@ -195,11 +195,11 @@
 	CBOR_CONTEXT_COMMA cn_cbor_errback *errp)
 {
 	cn_cbor *pcn = CN_CALLOC(context);
-	if (pcn == NULL) {
-		if (errp != NULL) {
+	if (pcn == nullptr) {
+		if (errp != nullptr) {
 			errp->err = CN_CBOR_ERR_OUT_OF_MEMORY;
 		}
-		return NULL;
+		return nullptr;
 	}
 
 	pcn->type = CN_CBOR_FALSE + (boolValue != 0);
@@ -209,11 +209,11 @@
 cn_cbor *cn_cbor_null_create(CBOR_CONTEXT_COMMA cn_cbor_errback *errp)
 {
 	cn_cbor *pcn = CN_CALLOC(context);
-	if (pcn == NULL) {
-		if (errp != NULL) {
+	if (pcn == nullptr) {
+		if (errp != nullptr) {
 			errp->err = CN_CBOR_ERR_OUT_OF_MEMORY;
 		}
-		return NULL;
+		return nullptr;
 	}
 	pcn->type = CN_CBOR_NULL;
 	return pcn;
@@ -222,6 +222,6 @@
 
 size_t cn_cbor_encode_size(cn_cbor *object)
 {
-	ssize_t size = cn_cbor_encoder_write(NULL, 0, 0, object);
+	ssize_t size = cn_cbor_encoder_write(nullptr, 0, 0, object);
 	return size >= 0 ? size : 0;
 }
diff --git a/src/cose_int.h b/src/cose_int.h
index 802705d..2b69b48 100644
--- a/src/cose_int.h
+++ b/src/cose_int.h
@@ -128,8 +128,8 @@
 /**
  * Allocate enough space for 1 `cn_cbor` structure.
  *
- * @param[in]  ctx  The allocation context, or NULL for calloc.
- * @return          A pointer to a `cn_cbor` or NULL on failure
+ * @param[in]  ctx  The allocation context, or nullptr for calloc.
+ * @return          A pointer to a `cn_cbor` or nullptr on failure
  */
 #define CN_CALLOC(ctx)                                           \
 	((ctx) && (ctx)->calloc_func)                                \
@@ -139,7 +139,7 @@
 /**
  *  Allocate space required
  *
- * @param[in]	ctx  The allocation context, or NULL for normal calloc.
+ * @param[in]	ctx  The allocation context, or nullptr for normal calloc.
  * @param[in]	count	Number of items to allocate
  * @param[in]	size	Size of item to allocate
  * @return				A pointer to the object needed
@@ -360,7 +360,7 @@
 	{                                     \
 		if (!(condition)) {               \
 			DO_ASSERT;                    \
-			if (perr != NULL) {           \
+			if (perr != nullptr) {           \
 				perr->err = error;        \
 			}                             \
 			goto errorReturn;             \
@@ -370,7 +370,7 @@
 	{                                      \
 		if ((condition)) {                 \
 			DO_ASSERT;                     \
-			if (perr != NULL) {            \
+			if (perr != nullptr) {            \
 				perr->err = error;         \
 			}                              \
 			goto errorReturn;              \
@@ -379,7 +379,7 @@
 #define FAIL_CONDITION(error)  \
 	{                          \
 		DO_ASSERT;             \
-		if (perr != NULL) {    \
+		if (perr != nullptr) {    \
 			perr->err = error; \
 		}                      \
 		goto errorReturn;      \
@@ -388,7 +388,7 @@
 	{                                            \
 		if (!(condition)) {                      \
 			DO_ASSERT;                           \
-			if (perr != NULL) {                  \
+			if (perr != nullptr) {                  \
 				perr->err = _MapFromCBOR(error); \
 			}                                    \
 			goto errorReturn;                    \
diff --git a/src/mbedtls.cpp b/src/mbedtls.cpp
index bb87940..d22760b 100644
--- a/src/mbedtls.cpp
+++ b/src/mbedtls.cpp
@@ -38,10 +38,10 @@
 {
 	mbedtls_ccm_context ctx;
 	int cbOut = 0;
-	byte *rgbOut = NULL;
+	byte *rgbOut = nullptr;
 	size_t NSize = 15 - (LSize / 8);
 	byte rgbIV[15] = {0};
-	const cn_cbor *pIV = NULL;
+	const cn_cbor *pIV = nullptr;
 	mbedtls_cipher_id_t cipher;
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context = &pcose->m_message.m_allocContext;
@@ -50,14 +50,14 @@
 	mbedtls_ccm_init(&ctx);
 
 	//  Setup the IV/Nonce and put it into the message
-	pIV = _COSE_map_get_int(&pcose->m_message, COSE_Header_IV, COSE_BOTH, NULL);
-	if ((pIV == NULL) || (pIV->type != CN_CBOR_BYTES)) {
-		if (perr != NULL) {
+	pIV = _COSE_map_get_int(&pcose->m_message, COSE_Header_IV, COSE_BOTH, nullptr);
+	if ((pIV == nullptr) || (pIV->type != CN_CBOR_BYTES)) {
+		if (perr != nullptr) {
 			perr->err = COSE_ERR_INVALID_PARAMETER;
 		}
 
 	errorReturn:
-		if (rgbOut != NULL) {
+		if (rgbOut != nullptr) {
 			COSE_FREE(rgbOut, context);
 		}
 		mbedtls_ccm_free(&ctx);
@@ -75,7 +75,7 @@
 
 	cbOut = (int)cbCrypto - TSize;
 	rgbOut = (byte *)COSE_CALLOC(cbOut, 1, context);
-	CHECK_CONDITION(rgbOut != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(rgbOut != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	CHECK_CONDITION(
 		!mbedtls_ccm_auth_decrypt(&ctx, cbOut, rgbIV, NSize, pbAuthData,
@@ -100,17 +100,17 @@
 {
 	mbedtls_ccm_context ctx;
 	int cbOut;
-	byte *rgbOut = NULL;
+	byte *rgbOut = nullptr;
 	size_t NSize = 15 - (LSize / 8);
-	const cn_cbor *cbor_iv = NULL;
-	cn_cbor *cbor_iv_t = NULL;
+	const cn_cbor *cbor_iv = nullptr;
+	cn_cbor *cbor_iv_t = nullptr;
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context = &pcose->m_message.m_allocContext;
 #endif
-	cn_cbor *cnTmp = NULL;
+	cn_cbor *cnTmp = nullptr;
 	mbedtls_cipher_id_t cipher;
 	byte rgbIV[16];
-	byte *pbIV = NULL;
+	byte *pbIV = nullptr;
 	cn_cbor_errback cbor_error;
 
 	mbedtls_ccm_init(&ctx);
@@ -120,21 +120,21 @@
 	//  Setup the IV/Nonce and put it into the message
 	cbor_iv =
 		_COSE_map_get_int(&pcose->m_message, COSE_Header_IV, COSE_BOTH, perr);
-	if (cbor_iv == NULL) {
+	if (cbor_iv == nullptr) {
 		pbIV = (byte *) COSE_CALLOC(NSize, 1, context);
-		CHECK_CONDITION(pbIV != NULL, COSE_ERR_OUT_OF_MEMORY);
+		CHECK_CONDITION(pbIV != nullptr, COSE_ERR_OUT_OF_MEMORY);
 		rand_bytes(pbIV, NSize);
 		memcpy(rgbIV, pbIV, NSize);
 		cbor_iv_t = cn_cbor_data_create2(
 			pbIV, NSize, 0, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-		CHECK_CONDITION_CBOR(cbor_iv_t != NULL, cbor_error);
-		pbIV = NULL;
+		CHECK_CONDITION_CBOR(cbor_iv_t != nullptr, cbor_error);
+		pbIV = nullptr;
 
 		if (!_COSE_map_put(&pcose->m_message, COSE_Header_IV, cbor_iv_t,
 				COSE_UNPROTECT_ONLY, perr)) {
 			goto errorReturn;
 		}
-		cbor_iv_t = NULL;
+		cbor_iv_t = nullptr;
 	}
 	else {
 		CHECK_CONDITION(
@@ -153,7 +153,7 @@
 
 	cbOut = pcose->cbContent;  // M00BUG - This is a missing call?
 	rgbOut = (byte *)COSE_CALLOC(cbOut + TSize, 1, context);
-	CHECK_CONDITION(rgbOut != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(rgbOut != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	CHECK_CONDITION(!mbedtls_ccm_encrypt_and_tag(&ctx, pcose->cbContent, rgbIV,
 						NSize, pbAuthData, cbAuthData, pcose->pbContent, rgbOut,
@@ -161,30 +161,30 @@
 		COSE_ERR_CRYPTO_FAIL);
 
 	cnTmp = cn_cbor_data_create2(
-		rgbOut, (int)pcose->cbContent + TSize, 0, CBOR_CONTEXT_PARAM_COMMA NULL);
-	CHECK_CONDITION(cnTmp != NULL, COSE_ERR_CBOR);
-	rgbOut = NULL;
+		rgbOut, (int)pcose->cbContent + TSize, 0, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	CHECK_CONDITION(cnTmp != nullptr, COSE_ERR_CBOR);
+	rgbOut = nullptr;
 
 	CHECK_CONDITION(_COSE_array_replace(&pcose->m_message, cnTmp, INDEX_BODY,
-						CBOR_CONTEXT_PARAM_COMMA NULL),
+						CBOR_CONTEXT_PARAM_COMMA nullptr),
 		COSE_ERR_CBOR);
-	cnTmp = NULL;
+	cnTmp = nullptr;
 
 	mbedtls_ccm_free(&ctx);
 
 	return true;
 
 errorReturn:
-	if (pbIV != NULL) {
+	if (pbIV != nullptr) {
 		COSE_FREE(pbIV, context);
 	}
-	if (cbor_iv_t != NULL) {
+	if (cbor_iv_t != nullptr) {
 		COSE_FREE(cbor_iv_t, context);
 	}
-	if (rgbOut != NULL) {
+	if (rgbOut != nullptr) {
 		COSE_FREE(rgbOut, context);
 	}
-	if (cnTmp != NULL) {
+	if (cnTmp != nullptr) {
 		COSE_FREE(cnTmp, context);
 	}
 	mbedtls_ccm_free(&ctx);
@@ -204,9 +204,9 @@
 {
 	mbedtls_gcm_context ctx;
 	int cbOut;
-	byte *rgbOut = NULL;
+	byte *rgbOut = nullptr;
 	byte rgbIV[15] = {0};
-	const cn_cbor *pIV = NULL;
+	const cn_cbor *pIV = nullptr;
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context = &pcose->m_message.m_allocContext;
 #endif
@@ -217,14 +217,14 @@
 
 	//  Setup the IV/Nonce and put it into the message
 
-	pIV = _COSE_map_get_int(&pcose->m_message, COSE_Header_IV, COSE_BOTH, NULL);
-	if ((pIV == NULL) || (pIV->type != CN_CBOR_BYTES)) {
-		if (perr != NULL) {
+	pIV = _COSE_map_get_int(&pcose->m_message, COSE_Header_IV, COSE_BOTH, nullptr);
+	if ((pIV == nullptr) || (pIV->type != CN_CBOR_BYTES)) {
+		if (perr != nullptr) {
 			perr->err = COSE_ERR_INVALID_PARAMETER;
 		}
 
 	errorReturn:
-		if (rgbOut != NULL) {
+		if (rgbOut != nullptr) {
 			COSE_FREE(rgbOut, context);
 		}
 		mbedtls_gcm_free(&ctx);
@@ -257,7 +257,7 @@
 
 	cbOut = (int)cbCrypto - TSize;
 	rgbOut = (byte *)COSE_CALLOC(cbOut, 1, context);
-	CHECK_CONDITION(rgbOut != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(rgbOut != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	//  Process content
 
@@ -291,11 +291,11 @@
 	cose_errback *perr)
 {
 	mbedtls_gcm_context ctx;
-	byte *rgbOut = NULL;
+	byte *rgbOut = nullptr;
 	byte rgbIV[16] = {0};
-	byte *pbIV = NULL;
-	const cn_cbor *cbor_iv = NULL;
-	cn_cbor *cbor_iv_t = NULL;
+	byte *pbIV = nullptr;
+	const cn_cbor *cbor_iv = nullptr;
+	cn_cbor *cbor_iv_t = nullptr;
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context = &pcose->m_message.m_allocContext;
 #endif
@@ -303,13 +303,13 @@
 
 	if (false) {
 	errorReturn:
-		if (pbIV != NULL) {
+		if (pbIV != nullptr) {
 			COSE_FREE(pbIV, context);
 		}
-		if (cbor_iv_t != NULL) {
+		if (cbor_iv_t != nullptr) {
 			COSE_FREE(cbor_iv_t, context);
 		}
-		if (rgbOut != NULL) {
+		if (rgbOut != nullptr) {
 			COSE_FREE(rgbOut, context);
 		}
 		mbedtls_gcm_free(&ctx);
@@ -323,21 +323,21 @@
 
 	cbor_iv =
 		_COSE_map_get_int(&pcose->m_message, COSE_Header_IV, COSE_BOTH, perr);
-	if (cbor_iv == NULL) {
+	if (cbor_iv == nullptr) {
 		pbIV = (byte*) COSE_CALLOC(96, 1, context);
-		CHECK_CONDITION(pbIV != NULL, COSE_ERR_OUT_OF_MEMORY);
+		CHECK_CONDITION(pbIV != nullptr, COSE_ERR_OUT_OF_MEMORY);
 		rand_bytes(pbIV, 96 / 8);
 		memcpy(rgbIV, pbIV, 96 / 8);
 		cbor_iv_t = cn_cbor_data_create2(
 			pbIV, 96 / 8, 0, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-		CHECK_CONDITION_CBOR(cbor_iv_t != NULL, cbor_error);
-		pbIV = NULL;
+		CHECK_CONDITION_CBOR(cbor_iv_t != nullptr, cbor_error);
+		pbIV = nullptr;
 
 		if (!_COSE_map_put(&pcose->m_message, COSE_Header_IV, cbor_iv_t,
 				COSE_UNPROTECT_ONLY, perr)) {
 			goto errorReturn;
 		}
-		cbor_iv_t = NULL;
+		cbor_iv_t = nullptr;
 	}
 	else {
 		CHECK_CONDITION(
@@ -368,7 +368,7 @@
 		COSE_ERR_CRYPTO_FAIL);
 
 	rgbOut = (byte *)COSE_CALLOC(pcose->cbContent + 128 / 8, 1, context);
-	CHECK_CONDITION(rgbOut != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(rgbOut != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	CHECK_CONDITION0(
 		mbedtls_gcm_update(&ctx, pcose->cbContent, pcose->pbContent, rgbOut),
@@ -379,16 +379,16 @@
 		COSE_ERR_CRYPTO_FAIL);
 
 	cn_cbor *cnTmp = cn_cbor_data_create2(
-		rgbOut, (int)pcose->cbContent + 128 / 8, 0, CBOR_CONTEXT_PARAM_COMMA NULL);
-	CHECK_CONDITION(cnTmp != NULL, COSE_ERR_CBOR);
-	rgbOut = NULL;
+		rgbOut, (int)pcose->cbContent + 128 / 8, 0, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	CHECK_CONDITION(cnTmp != nullptr, COSE_ERR_CBOR);
+	rgbOut = nullptr;
 	CHECK_CONDITION(_COSE_array_replace(&pcose->m_message, cnTmp, INDEX_BODY,
-						CBOR_CONTEXT_PARAM_COMMA NULL),
+						CBOR_CONTEXT_PARAM_COMMA nullptr),
 		COSE_ERR_CBOR);
 
 	mbedtls_gcm_free(&ctx);
 	
-	if (pbIV != NULL) {
+	if (pbIV != nullptr) {
 		COSE_FREE(pbIV, context);
 	}
 	return true;
@@ -404,11 +404,11 @@
 	size_t *pcbDigest,
 	CBOR_CONTEXT_COMMA cose_errback *perr)
 {
-	const mbedtls_md_info_t *pmd = NULL;
+	const mbedtls_md_info_t *pmd = nullptr;
 	mbedtls_md_type_t mdType;
 
 	int cbSalt = 0;
-	cn_cbor *cnSalt = NULL;
+	cn_cbor *cnSalt = nullptr;
 	unsigned int cbDigest;
 
 	if (0) {
@@ -435,16 +435,16 @@
 	}
 
 	pmd = mbedtls_md_info_from_type(mdType);
-	if (pmd == NULL) {
+	if (pmd == nullptr) {
 		goto errorReturn;
 	}
 
 	cbSalt = 0;
-	const byte *pbSalt = NULL;
+	const byte *pbSalt = nullptr;
 
 	cnSalt = _COSE_map_get_int(pcose, COSE_Header_HKDF_salt, COSE_BOTH, perr);
 
-	if (cnSalt != NULL) {
+	if (cnSalt != nullptr) {
 		pbSalt = cnSalt->v.bytes;
 		cbSalt = (int)cnSalt->length;
 	}
@@ -470,7 +470,7 @@
 {
 	UNUSED(pcose);
 	mbedtls_md_type_t mdType;
-	const mbedtls_md_info_t *pmd = NULL;
+	const mbedtls_md_info_t *pmd = nullptr;
 
 	unsigned int cbDigest = 0;
 
@@ -498,7 +498,7 @@
 	}
 
 	pmd = mbedtls_md_info_from_type(mdType);
-	if (pmd == NULL) {
+	if (pmd == nullptr) {
 		goto errorReturn;
 	}
 
@@ -521,12 +521,12 @@
 	size_t cbAuthData,
 	cose_errback *perr)
 {
-	byte *rgbOut = NULL;
+	byte *rgbOut = nullptr;
 	//	unsigned int cbOut;
 	mbedtls_md_context_t contx;
 	const char *md_name;
 	const struct mbedtls_md_info_t *info;
-	cn_cbor *cbor = NULL;
+	cn_cbor *cbor = nullptr;
 
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context = &pcose->m_message.m_allocContext;
@@ -549,7 +549,7 @@
 
 	if (0) {
 	errorReturn:
-		if (cbor != NULL) {
+		if (cbor != nullptr) {
 			COSE_FREE(cbor, context);
 		}
 		COSE_FREE(rgbOut, context);
@@ -562,7 +562,7 @@
 	mbedtls_md_setup(&contx, info, 1);
 
 	rgbOut = (byte *) COSE_CALLOC(mbedtls_md_get_size(info), 1, context);
-	CHECK_CONDITION(rgbOut != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(rgbOut != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	CHECK_CONDITION(
 		!(mbedtls_md_hmac_starts(&contx, pbKey, cbKey)), COSE_ERR_CRYPTO_FAIL);
@@ -572,11 +572,11 @@
 		!(mbedtls_md_hmac_finish(&contx, rgbOut)), COSE_ERR_CRYPTO_FAIL);
 
 	cbor = cn_cbor_data_create2(
-		rgbOut, TSize / 8, 0, CBOR_CONTEXT_PARAM_COMMA NULL);
-	CHECK_CONDITION(cbor != NULL, COSE_ERR_OUT_OF_MEMORY);
-	rgbOut = NULL;
+		rgbOut, TSize / 8, 0, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	CHECK_CONDITION(cbor != nullptr, COSE_ERR_OUT_OF_MEMORY);
+	rgbOut = nullptr;
 	CHECK_CONDITION(_COSE_array_replace(&pcose->m_message, cbor, INDEX_MAC_TAG,
-						CBOR_CONTEXT_PARAM_COMMA NULL),
+						CBOR_CONTEXT_PARAM_COMMA nullptr),
 		COSE_ERR_CBOR);
 
 	mbedtls_md_free(&contx);
@@ -595,7 +595,7 @@
 	mbedtls_md_context_t contx;
 	const char *md_name;
 	const struct mbedtls_md_info_t *info;
-	byte *rgbOut = NULL;
+	byte *rgbOut = nullptr;
 	unsigned int cbOut;
 	bool f = false;
 	unsigned int i;
@@ -606,7 +606,7 @@
 
 	if (false) {
 	errorReturn:
-		if (rgbOut != NULL) {
+		if (rgbOut != nullptr) {
 			COSE_FREE(rgbOut, context);
 		}
 		mbedtls_md_free(&contx);
@@ -635,7 +635,7 @@
 
 	cbOut = mbedtls_md_get_size(info);
 	rgbOut = (byte*) COSE_CALLOC(cbOut, 1, context);
-	CHECK_CONDITION(rgbOut != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(rgbOut != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	CHECK_CONDITION(
 		!(mbedtls_md_hmac_starts(&contx, pbKey, cbKey)), COSE_ERR_CRYPTO_FAIL);
@@ -645,7 +645,7 @@
 		!(mbedtls_md_hmac_finish(&contx, rgbOut)), COSE_ERR_CRYPTO_FAIL);
 
 	cn_cbor *cn = _COSE_arrayget_int(&pcose->m_message, INDEX_MAC_TAG);
-	CHECK_CONDITION(cn != NULL, COSE_ERR_CBOR);
+	CHECK_CONDITION(cn != nullptr, COSE_ERR_CBOR);
 
 	if (cn->length > (int)cbOut) {
 		return false;
@@ -676,7 +676,7 @@
 	mbedtls_ecp_group_id groupId;
 
 	p = cn_cbor_mapget_int(pKey->m_cborKey, COSE_Key_Type);
-	CHECK_CONDITION(p != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(p != nullptr, COSE_ERR_INVALID_PARAMETER);
 	if (p->type == CN_CBOR_UINT) {
 		CHECK_CONDITION(
 			p->v.uint == COSE_Key_Type_EC2, COSE_ERR_INVALID_PARAMETER);
@@ -687,7 +687,7 @@
 
 	p = cn_cbor_mapget_int(pKey->m_cborKey, COSE_Key_EC_Curve);
 	CHECK_CONDITION(
-		(p != NULL) && (p->type == CN_CBOR_UINT), COSE_ERR_INVALID_PARAMETER);
+		(p != nullptr) && (p->type == CN_CBOR_UINT), COSE_ERR_INVALID_PARAMETER);
 
 	switch (p->v.uint) {
 		case 1:	 // P-256
@@ -711,12 +711,12 @@
 
 	p = cn_cbor_mapget_int(pKey->m_cborKey, COSE_Key_EC_X);
 	CHECK_CONDITION(
-		(p != NULL) && (p->type == CN_CBOR_BYTES), COSE_ERR_INVALID_PARAMETER);
+		(p != nullptr) && (p->type == CN_CBOR_BYTES), COSE_ERR_INVALID_PARAMETER);
 	CHECK_CONDITION(p->length == cbGroup, COSE_ERR_INVALID_PARAMETER);
 	memcpy(rgbKey + 1, p->v.str, p->length);
 
 	p = cn_cbor_mapget_int(pKey->m_cborKey, COSE_Key_EC_Y);
-	CHECK_CONDITION((p != NULL), COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION((p != nullptr), COSE_ERR_INVALID_PARAMETER);
 	if (p->type == CN_CBOR_BYTES) {
 		rgbKey[0] = 0x04;
 		cbKey = cbGroup * 2 + 1;
@@ -748,7 +748,7 @@
 		COSE_ERR_INVALID_PARAMETER);
 
 	p = cn_cbor_mapget_int(pKey->m_cborKey, COSE_Key_EC_d);
-	if (p != NULL) {
+	if (p != nullptr) {
 		CHECK_CONDITION(p->type == CN_CBOR_BYTES, COSE_ERR_INVALID_PARAMETER);
 		CHECK_CONDITION(
 			mbedtls_mpi_read_binary(&keypair->d, p->v.bytes, p->length) == 0,
@@ -770,7 +770,7 @@
 {
 #if defined(MBEDTLS_ECDSA_DETERMINISTIC)
 	byte rgbDigest[MBEDTLS_MD_MAX_SIZE];
-	uint8_t *pbSig = NULL;
+	uint8_t *pbSig = nullptr;
 	cn_cbor_errback cbor_error;
 	int cbR;
 	mbedtls_md_type_t mdType;
@@ -781,7 +781,7 @@
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context = &pSigner->m_allocContext;
 #endif
-	cn_cbor *p = NULL;
+	cn_cbor *p = nullptr;
 	bool result = false;
 
 	mbedtls_ecp_keypair_init(&keypair);
@@ -811,7 +811,7 @@
 			FAIL_CONDITION(COSE_ERR_INVALID_PARAMETER);
 	}
 	pmdInfo = mbedtls_md_info_from_type(mdType);
-	CHECK_CONDITION(pmdInfo != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(pmdInfo != nullptr, COSE_ERR_INVALID_PARAMETER);
 	CHECK_CONDITION(mbedtls_md(pmdInfo, rgbToSign, cbToSign, rgbDigest) == 0,
 		COSE_ERR_INVALID_PARAMETER);
 
@@ -822,7 +822,7 @@
 	cbR = (keypair.grp.nbits + 7) / 8;
 
 	pbSig = (byte *) COSE_CALLOC(cbR, 2, context);
-	CHECK_CONDITION(pbSig != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(pbSig != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	CHECK_CONDITION(
 		mbedtls_mpi_write_binary(&r, pbSig, cbR) == 0, COSE_ERR_INTERNAL);
@@ -831,14 +831,14 @@
 
 	p = cn_cbor_data_create(
 		pbSig, cbR * 2, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(p != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(p != nullptr, cbor_error);
 
 	CHECK_CONDITION(
-		_COSE_array_replace(pSigner, p, index, CBOR_CONTEXT_PARAM_COMMA NULL),
+		_COSE_array_replace(pSigner, p, index, CBOR_CONTEXT_PARAM_COMMA nullptr),
 		COSE_ERR_CBOR);
 
-	p = NULL;
-	pbSig = NULL;
+	p = nullptr;
+	pbSig = nullptr;
 	result = true;
 
 errorReturn:
@@ -895,12 +895,12 @@
 			FAIL_CONDITION(COSE_ERR_INVALID_PARAMETER);
 	}
 	pmdInfo = mbedtls_md_info_from_type(mdType);
-	CHECK_CONDITION(pmdInfo != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(pmdInfo != nullptr, COSE_ERR_INVALID_PARAMETER);
 	CHECK_CONDITION(mbedtls_md(pmdInfo, rgbToSign, cbToSign, rgbDigest) == 0,
 		COSE_ERR_INVALID_PARAMETER);
 
 	pSig = _COSE_arrayget_int(pSigner, index);
-	CHECK_CONDITION((pSig != NULL) && (pSig->type == CN_CBOR_BYTES),
+	CHECK_CONDITION((pSig != nullptr) && (pSig->type == CN_CBOR_BYTES),
 		COSE_ERR_INVALID_PARAMETER);
 
 	CHECK_CONDITION(
@@ -963,18 +963,18 @@
 	int cbContent,
 	cose_errback *perr)
 {
-	byte *pbOut = NULL;
+	byte *pbOut = nullptr;
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context = &pcose->m_encrypt.m_message.m_allocContext;
 #endif
-	cn_cbor *cnTmp = NULL;
+	cn_cbor *cnTmp = nullptr;
 	mbedtls_nist_kw_context ctx;
 	size_t cbOut;
 
 	mbedtls_nist_kw_init(&ctx);
 
 	pbOut = COSE_CALLOC(cbContent + 8, 1, context);
-	CHECK_CONDITION(pbOut != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(pbOut != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	CHECK_CONDITION0(mbedtls_nist_kw_setkey(
 						 &ctx, MBEDTLS_CIPHER_ID_AES, pbKeyIn, cbitKey, TRUE),
@@ -985,20 +985,20 @@
 		COSE_ERR_CRYPTO_FAIL);
 
 	cnTmp = cn_cbor_data_create(
-		pbOut, (int)cbContent + 8, CBOR_CONTEXT_PARAM_COMMA NULL);
-	CHECK_CONDITION(cnTmp != NULL, COSE_ERR_CBOR);
-	pbOut = NULL;
+		pbOut, (int)cbContent + 8, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	CHECK_CONDITION(cnTmp != nullptr, COSE_ERR_CBOR);
+	pbOut = nullptr;
 	CHECK_CONDITION(_COSE_array_replace(&pcose->m_encrypt.m_message, cnTmp,
-						INDEX_BODY, CBOR_CONTEXT_PARAM_COMMA NULL),
+						INDEX_BODY, CBOR_CONTEXT_PARAM_COMMA nullptr),
 		COSE_ERR_CBOR);
-	cnTmp = NULL;
+	cnTmp = nullptr;
 
 	mbedtls_nist_kw_free(&ctx);
 	return true;
 
 errorReturn:
 	COSE_FREE(cnTmp, context);
-	if (pbOut != NULL) {
+	if (pbOut != nullptr) {
 		COSE_FREE(pbOut, context);
 	}
 	mbedtls_nist_kw_free(&ctx);
@@ -1118,15 +1118,15 @@
 
 	int cbGroup = 0;
 	int cbsecret = 0;
-	byte *pbsecret = NULL;
+	byte *pbsecret = nullptr;
 	bool fRet = false;
 	mbedtls_ecp_group_id groupId;
 	mbedtls_ecp_keypair keypair;
 	mbedtls_ecdh_context ctx;
 	mbedtls_mpi d;
-	cn_cbor *p = NULL;
+	cn_cbor *p = nullptr;
 	mbedtls_mpi z;
-	cn_cbor *pkey = NULL;
+	cn_cbor *pkey = nullptr;
 	int cose_group = 0;
 	mbedtls_ecp_group group = {MBEDTLS_ECP_DP_NONE};
 
@@ -1137,13 +1137,13 @@
 
 	if (false) {
 	errorReturn:
-		if (pbsecret != NULL) {
+		if (pbsecret != nullptr) {
 			COSE_FREE(pbsecret, context);
 		}
-		if (pkey != NULL) {
+		if (pkey != nullptr) {
 			CN_CBOR_FREE(pkey, context);
 		}
-		if (p != NULL) {
+		if (p != nullptr) {
 			CN_CBOR_FREE(p, context);
 		}
 
@@ -1157,7 +1157,7 @@
 
 	p = cn_cbor_mapget_int(pKeyPublic->m_cborKey, COSE_Key_EC_Curve);
 	CHECK_CONDITION(
-		(p != NULL) && (p->type == CN_CBOR_UINT), COSE_ERR_INVALID_PARAMETER);
+		(p != nullptr) && (p->type == CN_CBOR_UINT), COSE_ERR_INVALID_PARAMETER);
 
 	switch (p->v.uint) {
 		case 1:	 // P-256
@@ -1181,7 +1181,7 @@
 		default:
 			FAIL_CONDITION(COSE_ERR_INVALID_PARAMETER);
 	}
-	p = NULL;
+	p = nullptr;
 
 	CHECK_CONDITION0(
 		mbedtls_ecp_group_load(&group, groupId), COSE_ERR_INVALID_PARAMETER);
@@ -1190,12 +1190,12 @@
 		goto errorReturn;
 	}
 
-	if (*ppKeyPrivate == NULL) {
+	if (*ppKeyPrivate == nullptr) {
 		mbedtls_ecp_keypair privateKeyPair;
 		mbedtls_ecp_keypair_init(&privateKeyPair);
 
 		CHECK_CONDITION0(
-			mbedtls_ecp_gen_key(groupId, &privateKeyPair, rand_bytes2, NULL),
+			mbedtls_ecp_gen_key(groupId, &privateKeyPair, rand_bytes2, nullptr),
 			COSE_ERR_CRYPTO_FAIL);
 		CHECK_CONDITION0(
 			mbedtls_mpi_copy(&d, &privateKeyPair.d), COSE_ERR_CRYPTO_FAIL);
@@ -1211,82 +1211,82 @@
 		int cbSize = (int) (olen - 1) / 2;
 
 		pkey = cn_cbor_map_create(CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-		CHECK_CONDITION_CBOR(pkey != NULL, cbor_error);
+		CHECK_CONDITION_CBOR(pkey != nullptr, cbor_error);
 
 		p = cn_cbor_int_create(
 			cose_group, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-		CHECK_CONDITION_CBOR(p != NULL, cbor_error);
+		CHECK_CONDITION_CBOR(p != nullptr, cbor_error);
 		CHECK_CONDITION_CBOR(cn_cbor_mapput_int(pkey, COSE_Key_EC_Curve, p,
 								 CBOR_CONTEXT_PARAM_COMMA &cbor_error),
 			cbor_error);
-		p = NULL;
+		p = nullptr;
 
 		pbsecret = (byte *) COSE_CALLOC(cbSize, 1, context);
-		CHECK_CONDITION(pbsecret != NULL, COSE_ERR_OUT_OF_MEMORY);
+		CHECK_CONDITION(pbsecret != nullptr, COSE_ERR_OUT_OF_MEMORY);
 		memcpy(pbsecret, buff + 1, cbSize);
 
 		p = cn_cbor_data_create2(
 			pbsecret, (int)cbSize, 0, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-		CHECK_CONDITION_CBOR(p != NULL, cbor_error);
-		pbsecret = NULL;
+		CHECK_CONDITION_CBOR(p != nullptr, cbor_error);
+		pbsecret = nullptr;
 		CHECK_CONDITION_CBOR(cn_cbor_mapput_int(pkey, COSE_Key_EC_X, p,
 								 CBOR_CONTEXT_PARAM_COMMA & cbor_error),
 			cbor_error);
-		p = NULL;
+		p = nullptr;
 
 		pbsecret = (byte *) COSE_CALLOC(cbSize, 1, context);
-		CHECK_CONDITION(pbsecret != NULL, COSE_ERR_OUT_OF_MEMORY);
+		CHECK_CONDITION(pbsecret != nullptr, COSE_ERR_OUT_OF_MEMORY);
 		memcpy(pbsecret, buff + 1 + cbSize, cbSize);
 
 		p = cn_cbor_data_create2(
 			pbsecret, cbSize, 0, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-		CHECK_CONDITION_CBOR(p != NULL, cbor_error);
-		pbsecret = NULL;
+		CHECK_CONDITION_CBOR(p != nullptr, cbor_error);
+		pbsecret = nullptr;
 		CHECK_CONDITION_CBOR(cn_cbor_mapput_int(pkey, COSE_Key_EC_Y, p,
 								 CBOR_CONTEXT_PARAM_COMMA & cbor_error),
 			cbor_error);
-		p = NULL;
+		p = nullptr;
 
 		p = cn_cbor_int_create(
 			COSE_Key_Type_EC2, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-		CHECK_CONDITION_CBOR(p != NULL, cbor_error);
+		CHECK_CONDITION_CBOR(p != nullptr, cbor_error);
 		CHECK_CONDITION_CBOR(cn_cbor_mapput_int(pkey, COSE_Key_Type, p,
 								 CBOR_CONTEXT_PARAM_COMMA & cbor_error),
 			cbor_error);
-		p = NULL;
+		p = nullptr;
 
 		COSE_KEY *coseKey = (COSE_KEY*) COSE_KEY_FromCbor(pkey, CBOR_CONTEXT_PARAM_COMMA perr);
-		if (coseKey == NULL) {
+		if (coseKey == nullptr) {
 			goto errorReturn;
 		}
 
 		*ppKeyPrivate = coseKey;
-		pkey = NULL;
+		pkey = nullptr;
 	}
 	else {
 		p = cn_cbor_mapget_int((*ppKeyPrivate)->m_cborKey, COSE_Key_EC_d);
-		CHECK_CONDITION(p != NULL, COSE_ERR_INVALID_PARAMETER);
+		CHECK_CONDITION(p != nullptr, COSE_ERR_INVALID_PARAMETER);
 
 		CHECK_CONDITION(p->type == CN_CBOR_BYTES, COSE_ERR_INVALID_PARAMETER);
 		CHECK_CONDITION0(mbedtls_mpi_read_binary(&d, p->v.bytes, p->length),
 			COSE_ERR_CRYPTO_FAIL);
-		p = NULL;
+		p = nullptr;
 	}
 
 	CHECK_CONDITION0(
-		mbedtls_ecdh_compute_shared(&group, &z, &keypair.Q, &d, NULL, NULL),
+		mbedtls_ecdh_compute_shared(&group, &z, &keypair.Q, &d, nullptr, nullptr),
 		COSE_ERR_CRYPTO_FAIL);
 
 	cbsecret = cbGroup;
 	pbsecret = (byte *) COSE_CALLOC(cbsecret, 1, context);
-	CHECK_CONDITION(pbsecret != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(pbsecret != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	CHECK_CONDITION0(
 		mbedtls_mpi_write_binary(&z, pbsecret, cbsecret), COSE_ERR_CRYPTO_FAIL);
 
 	*ppbSecret = pbsecret;
 	*pcbSecret = cbsecret;
-	pbsecret = NULL;
+	pbsecret = nullptr;
 
 	fRet = true;
 	goto errorReturn;
diff --git a/src/openssl.cpp b/src/openssl.cpp
index 129e9ec..addf8d4 100644
--- a/src/openssl.cpp
+++ b/src/openssl.cpp
@@ -29,7 +29,7 @@
 HMAC_CTX *HMAC_CTX_new()
 {
 	HMAC_CTX *foo = (HMAC_CTX *) malloc(sizeof(HMAC_CTX));
-	if (foo != NULL) {
+	if (foo != nullptr) {
 		HMAC_CTX_init(foo);
 	}
 	return foo;
@@ -37,21 +37,21 @@
 
 void HMAC_CTX_free(HMAC_CTX *foo)
 {
-	if (foo != NULL)
+	if (foo != nullptr)
 		free(foo);
 }
 
 void ECDSA_SIG_get0(const ECDSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps)
 {
-	if (pr != NULL)
+	if (pr != nullptr)
 		*pr = sig->r;
-	if (ps != NULL)
+	if (ps != nullptr)
 		*ps = sig->s;
 }
 
 int ECDSA_SIG_set0(ECDSA_SIG *sig, BIGNUM *r, BIGNUM *s)
 {
-	if (r == NULL || s == NULL)
+	if (r == nullptr || s == nullptr)
 		return 0;
 	BN_clear_free(sig->r);
 	BN_clear_free(sig->s);
@@ -74,29 +74,29 @@
 {
 	EVP_CIPHER_CTX *ctx;
 	int cbOut;
-	byte *rgbOut = NULL;
+	byte *rgbOut = nullptr;
 	size_t NSize = 15 - (LSize / 8);
 	int outl = 0;
 	byte rgbIV[15] = {0};
-	const cn_cbor *pIV = NULL;
+	const cn_cbor *pIV = nullptr;
 	const EVP_CIPHER *cipher;
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context = &pcose->m_message.m_allocContext;
 #endif
 
 	ctx = EVP_CIPHER_CTX_new();
-	CHECK_CONDITION(ctx != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(ctx != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	//  Setup the IV/Nonce and put it into the message
 
-	pIV = _COSE_map_get_int(&pcose->m_message, COSE_Header_IV, COSE_BOTH, NULL);
-	if ((pIV == NULL) || (pIV->type != CN_CBOR_BYTES)) {
-		if (perr != NULL) {
+	pIV = _COSE_map_get_int(&pcose->m_message, COSE_Header_IV, COSE_BOTH, nullptr);
+	if ((pIV == nullptr) || (pIV->type != CN_CBOR_BYTES)) {
+		if (perr != nullptr) {
 			perr->err = COSE_ERR_INVALID_PARAMETER;
 		}
 
 	errorReturn:
-		if (rgbOut != NULL) {
+		if (rgbOut != nullptr) {
 			COSE_FREE(rgbOut, context);
 		}
 		EVP_CIPHER_CTX_free(ctx);
@@ -125,7 +125,7 @@
 			FAIL_CONDITION(COSE_ERR_INVALID_PARAMETER);
 			break;
 	}
-	CHECK_CONDITION(EVP_DecryptInit_ex(ctx, cipher, NULL, NULL, NULL),
+	CHECK_CONDITION(EVP_DecryptInit_ex(ctx, cipher, nullptr, nullptr, nullptr),
 		COSE_ERR_DECRYPT_FAILED);
 
 	TSize /= 8;	 // Comes in in bits not bytes.
@@ -138,19 +138,19 @@
 						(void *)&pbCrypto[cbCrypto - TSize]),
 		COSE_ERR_DECRYPT_FAILED);
 
-	CHECK_CONDITION(EVP_DecryptInit_ex(ctx, 0, NULL, pbKey, rgbIV),
+	CHECK_CONDITION(EVP_DecryptInit_ex(ctx, 0, nullptr, pbKey, rgbIV),
 		COSE_ERR_DECRYPT_FAILED);
 
 	CHECK_CONDITION(
-		EVP_DecryptUpdate(ctx, NULL, &cbOut, NULL, (int)cbCrypto - TSize),
+		EVP_DecryptUpdate(ctx, nullptr, &cbOut, nullptr, (int)cbCrypto - TSize),
 		COSE_ERR_DECRYPT_FAILED);
 
 	cbOut = (int)cbCrypto - TSize;
 	rgbOut = (byte *)COSE_CALLOC(cbOut, 1, context);
-	CHECK_CONDITION(rgbOut != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(rgbOut != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	CHECK_CONDITION(
-		EVP_DecryptUpdate(ctx, NULL, &outl, pbAuthData, (int)cbAuthData),
+		EVP_DecryptUpdate(ctx, nullptr, &outl, pbAuthData, (int)cbAuthData),
 		COSE_ERR_DECRYPT_FAILED);
 
 	CHECK_CONDITION(
@@ -176,22 +176,22 @@
 {
 	EVP_CIPHER_CTX *ctx;
 	int cbOut;
-	byte *rgbOut = NULL;
+	byte *rgbOut = nullptr;
 	size_t NSize = 15 - (LSize / 8);
 	int outl = 0;
-	const cn_cbor *cbor_iv = NULL;
-	cn_cbor *cbor_iv_t = NULL;
+	const cn_cbor *cbor_iv = nullptr;
+	cn_cbor *cbor_iv_t = nullptr;
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context = &pcose->m_message.m_allocContext;
 #endif
-	cn_cbor *cnTmp = NULL;
+	cn_cbor *cnTmp = nullptr;
 	const EVP_CIPHER *cipher;
 	byte rgbIV[16];
-	byte *pbIV = NULL;
+	byte *pbIV = nullptr;
 	cn_cbor_errback cbor_error;
 
 	ctx = EVP_CIPHER_CTX_new();
-	CHECK_CONDITION(NULL != ctx, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(nullptr != ctx, COSE_ERR_OUT_OF_MEMORY);
 
 	switch (cbKey * 8) {
 		case 128:
@@ -214,21 +214,21 @@
 
 	cbor_iv =
 		_COSE_map_get_int(&pcose->m_message, COSE_Header_IV, COSE_BOTH, perr);
-	if (cbor_iv == NULL) {
+	if (cbor_iv == nullptr) {
 		pbIV = (byte *) COSE_CALLOC(NSize, 1, context);
-		CHECK_CONDITION(pbIV != NULL, COSE_ERR_OUT_OF_MEMORY);
+		CHECK_CONDITION(pbIV != nullptr, COSE_ERR_OUT_OF_MEMORY);
 		rand_bytes(pbIV, NSize);
 		memcpy(rgbIV, pbIV, NSize);
 		cbor_iv_t = cn_cbor_data_create2(
 			pbIV, NSize, 0, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-		CHECK_CONDITION_CBOR(cbor_iv_t != NULL, cbor_error);
-		pbIV = NULL;
+		CHECK_CONDITION_CBOR(cbor_iv_t != nullptr, cbor_error);
+		pbIV = nullptr;
 
 		if (!_COSE_map_put(&pcose->m_message, COSE_Header_IV, cbor_iv_t,
 				COSE_UNPROTECT_ONLY, perr)) {
 			goto errorReturn;
 		}
-		cbor_iv_t = NULL;
+		cbor_iv_t = nullptr;
 	}
 	else {
 		CHECK_CONDITION(
@@ -239,7 +239,7 @@
 
 	//  Setup and run the OpenSSL code
 
-	CHECK_CONDITION(EVP_EncryptInit_ex(ctx, cipher, NULL, NULL, NULL),
+	CHECK_CONDITION(EVP_EncryptInit_ex(ctx, cipher, nullptr, nullptr, nullptr),
 		COSE_ERR_CRYPTO_FAIL);
 
 	TSize /= 8;	 // Comes in in bits not bytes.
@@ -248,21 +248,21 @@
 		COSE_ERR_CRYPTO_FAIL);
 	// CHECK_CONDITION(EVP_CIPHER_CTX_ctrl(&ctx, EVP_CTRL_CCM_SET_IVLEN, NSize,
 	// 0), COSE_ERR_CRYPTO_FAIL);
-	CHECK_CONDITION(EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_CCM_SET_TAG, TSize, NULL),
+	CHECK_CONDITION(EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_CCM_SET_TAG, TSize, nullptr),
 		COSE_ERR_CRYPTO_FAIL);	// Say we are doing an 8 byte tag
 
 	CHECK_CONDITION(
-		EVP_EncryptInit_ex(ctx, 0, NULL, pbKey, rgbIV), COSE_ERR_CRYPTO_FAIL);
+		EVP_EncryptInit_ex(ctx, 0, nullptr, pbKey, rgbIV), COSE_ERR_CRYPTO_FAIL);
 
 	CHECK_CONDITION(EVP_EncryptUpdate(ctx, 0, &cbOut, 0, (int)pcose->cbContent),
 		COSE_ERR_CRYPTO_FAIL);
 
 	CHECK_CONDITION(
-		EVP_EncryptUpdate(ctx, NULL, &outl, pbAuthData, (int)cbAuthData),
+		EVP_EncryptUpdate(ctx, nullptr, &outl, pbAuthData, (int)cbAuthData),
 		COSE_ERR_CRYPTO_FAIL);
 
 	rgbOut = (byte *)COSE_CALLOC(cbOut + TSize, 1, context);
-	CHECK_CONDITION(rgbOut != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(rgbOut != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	CHECK_CONDITION(EVP_EncryptUpdate(ctx, rgbOut, &cbOut, pcose->pbContent,
 						(int)pcose->cbContent),
@@ -276,28 +276,28 @@
 		COSE_ERR_CRYPTO_FAIL);
 
 	cnTmp = cn_cbor_data_create2(
-		rgbOut, (int)pcose->cbContent + TSize, 0, CBOR_CONTEXT_PARAM_COMMA NULL);
-	CHECK_CONDITION(cnTmp != NULL, COSE_ERR_CBOR);
-	rgbOut = NULL;
+		rgbOut, (int)pcose->cbContent + TSize, 0, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	CHECK_CONDITION(cnTmp != nullptr, COSE_ERR_CBOR);
+	rgbOut = nullptr;
 
 	CHECK_CONDITION(_COSE_array_replace(&pcose->m_message, cnTmp, INDEX_BODY,
-						CBOR_CONTEXT_PARAM_COMMA NULL),
+						CBOR_CONTEXT_PARAM_COMMA nullptr),
 		COSE_ERR_CBOR);
-	cnTmp = NULL;
+	cnTmp = nullptr;
 	EVP_CIPHER_CTX_free(ctx);
 	return true;
 
 errorReturn:
-	if (pbIV != NULL) {
+	if (pbIV != nullptr) {
 		COSE_FREE(pbIV, context);
 	}
-	if (cbor_iv_t != NULL) {
+	if (cbor_iv_t != nullptr) {
 		COSE_FREE(cbor_iv_t, context);
 	}
-	if (rgbOut != NULL) {
+	if (rgbOut != nullptr) {
 		COSE_FREE(rgbOut, context);
 	}
-	if (cnTmp != NULL) {
+	if (cnTmp != nullptr) {
 		COSE_FREE(cnTmp, context);
 	}
 	EVP_CIPHER_CTX_free(ctx);
@@ -315,10 +315,10 @@
 {
 	EVP_CIPHER_CTX *ctx;
 	int cbOut;
-	byte *rgbOut = NULL;
+	byte *rgbOut = nullptr;
 	int outl = 0;
 	byte rgbIV[15] = {0};
-	const cn_cbor *pIV = NULL;
+	const cn_cbor *pIV = nullptr;
 	const EVP_CIPHER *cipher;
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context = &pcose->m_message.m_allocContext;
@@ -326,18 +326,18 @@
 	int TSize = 128 / 8;
 
 	ctx = EVP_CIPHER_CTX_new();
-	CHECK_CONDITION(NULL != ctx, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(nullptr != ctx, COSE_ERR_OUT_OF_MEMORY);
 
 	//  Setup the IV/Nonce and put it into the message
 
-	pIV = _COSE_map_get_int(&pcose->m_message, COSE_Header_IV, COSE_BOTH, NULL);
-	if ((pIV == NULL) || (pIV->type != CN_CBOR_BYTES)) {
-		if (perr != NULL) {
+	pIV = _COSE_map_get_int(&pcose->m_message, COSE_Header_IV, COSE_BOTH, nullptr);
+	if ((pIV == nullptr) || (pIV->type != CN_CBOR_BYTES)) {
+		if (perr != nullptr) {
 			perr->err = COSE_ERR_INVALID_PARAMETER;
 		}
 
 	errorReturn:
-		if (rgbOut != NULL) {
+		if (rgbOut != nullptr) {
 			COSE_FREE(rgbOut, context);
 		}
 		EVP_CIPHER_CTX_free(ctx);
@@ -369,27 +369,27 @@
 
 	//  Do the setup for OpenSSL
 
-	CHECK_CONDITION(EVP_DecryptInit_ex(ctx, cipher, NULL, NULL, NULL),
+	CHECK_CONDITION(EVP_DecryptInit_ex(ctx, cipher, nullptr, nullptr, nullptr),
 		COSE_ERR_DECRYPT_FAILED);
 
 	CHECK_CONDITION(EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_CCM_SET_TAG, TSize,
 						(void *)&pbCrypto[cbCrypto - TSize]),
 		COSE_ERR_DECRYPT_FAILED);
 
-	CHECK_CONDITION(EVP_DecryptInit_ex(ctx, 0, NULL, pbKey, rgbIV),
+	CHECK_CONDITION(EVP_DecryptInit_ex(ctx, 0, nullptr, pbKey, rgbIV),
 		COSE_ERR_DECRYPT_FAILED);
 
 	//  Pus in the AAD
 
 	CHECK_CONDITION(
-		EVP_DecryptUpdate(ctx, NULL, &outl, pbAuthData, (int)cbAuthData),
+		EVP_DecryptUpdate(ctx, nullptr, &outl, pbAuthData, (int)cbAuthData),
 		COSE_ERR_DECRYPT_FAILED);
 
 	//
 
 	cbOut = (int)cbCrypto - TSize;
 	rgbOut = (byte *)COSE_CALLOC(cbOut, 1, context);
-	CHECK_CONDITION(rgbOut != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(rgbOut != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	//  Process content
 
@@ -425,12 +425,12 @@
 {
 	EVP_CIPHER_CTX *ctx;
 	int cbOut;
-	byte *rgbOut = NULL;
+	byte *rgbOut = nullptr;
 	int outl = 0;
 	byte rgbIV[16] = {0};
-	byte *pbIV = NULL;
-	const cn_cbor *cbor_iv = NULL;
-	cn_cbor *cbor_iv_t = NULL;
+	byte *pbIV = nullptr;
+	const cn_cbor *cbor_iv = nullptr;
+	cn_cbor *cbor_iv_t = nullptr;
 	const EVP_CIPHER *cipher;
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context = &pcose->m_message.m_allocContext;
@@ -439,13 +439,13 @@
 
 	if (false) {
 	errorReturn:
-		if (pbIV != NULL) {
+		if (pbIV != nullptr) {
 			COSE_FREE(pbIV, context);
 		}
-		if (cbor_iv_t != NULL) {
+		if (cbor_iv_t != nullptr) {
 			COSE_FREE(cbor_iv_t, context);
 		}
-		if (rgbOut != NULL) {
+		if (rgbOut != nullptr) {
 			COSE_FREE(rgbOut, context);
 		}
 		EVP_CIPHER_CTX_free(ctx);
@@ -454,27 +454,27 @@
 	
 	// Make it first so we can clean it up
 	ctx = EVP_CIPHER_CTX_new();
-	CHECK_CONDITION(NULL != ctx, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(nullptr != ctx, COSE_ERR_OUT_OF_MEMORY);
 
 	//  Setup the IV/Nonce and put it into the message
 
 	cbor_iv =
 		_COSE_map_get_int(&pcose->m_message, COSE_Header_IV, COSE_BOTH, perr);
-	if (cbor_iv == NULL) {
+	if (cbor_iv == nullptr) {
 		pbIV = (byte *) COSE_CALLOC(96, 1, context);
-		CHECK_CONDITION(pbIV != NULL, COSE_ERR_OUT_OF_MEMORY);
+		CHECK_CONDITION(pbIV != nullptr, COSE_ERR_OUT_OF_MEMORY);
 		rand_bytes(pbIV, 96 / 8);
 		memcpy(rgbIV, pbIV, 96 / 8);
 		cbor_iv_t = cn_cbor_data_create2(
 			pbIV, 96 / 8, 0, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-		CHECK_CONDITION_CBOR(cbor_iv_t != NULL, cbor_error);
-		pbIV = NULL;
+		CHECK_CONDITION_CBOR(cbor_iv_t != nullptr, cbor_error);
+		pbIV = nullptr;
 
 		if (!_COSE_map_put(&pcose->m_message, COSE_Header_IV, cbor_iv_t,
 				COSE_UNPROTECT_ONLY, perr)) {
 			goto errorReturn;
 		}
-		cbor_iv_t = NULL;
+		cbor_iv_t = nullptr;
 	}
 	else {
 		CHECK_CONDITION(
@@ -503,18 +503,18 @@
 
 	//  Setup and run the OpenSSL code
 
-	CHECK_CONDITION(EVP_EncryptInit_ex(ctx, cipher, NULL, NULL, NULL),
+	CHECK_CONDITION(EVP_EncryptInit_ex(ctx, cipher, nullptr, nullptr, nullptr),
 		COSE_ERR_CRYPTO_FAIL);
 
 	CHECK_CONDITION(
-		EVP_EncryptInit_ex(ctx, 0, NULL, pbKey, rgbIV), COSE_ERR_CRYPTO_FAIL);
+		EVP_EncryptInit_ex(ctx, 0, nullptr, pbKey, rgbIV), COSE_ERR_CRYPTO_FAIL);
 
 	CHECK_CONDITION(
-		EVP_EncryptUpdate(ctx, NULL, &outl, pbAuthData, (int)cbAuthData),
+		EVP_EncryptUpdate(ctx, nullptr, &outl, pbAuthData, (int)cbAuthData),
 		COSE_ERR_CRYPTO_FAIL);
 
 	rgbOut = (byte *)COSE_CALLOC(pcose->cbContent + 128 / 8, 1, context);
-	CHECK_CONDITION(rgbOut != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(rgbOut != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	CHECK_CONDITION(EVP_EncryptUpdate(ctx, rgbOut, &cbOut, pcose->pbContent,
 						(int)pcose->cbContent),
@@ -528,16 +528,16 @@
 		COSE_ERR_CRYPTO_FAIL);
 
 	cn_cbor *cnTmp = cn_cbor_data_create2(
-		rgbOut, (int)pcose->cbContent + 128 / 8, 0, CBOR_CONTEXT_PARAM_COMMA NULL);
-	CHECK_CONDITION(cnTmp != NULL, COSE_ERR_CBOR);
-	rgbOut = NULL;
+		rgbOut, (int)pcose->cbContent + 128 / 8, 0, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	CHECK_CONDITION(cnTmp != nullptr, COSE_ERR_CBOR);
+	rgbOut = nullptr;
 	CHECK_CONDITION(_COSE_array_replace(&pcose->m_message, cnTmp, INDEX_BODY,
-						CBOR_CONTEXT_PARAM_COMMA NULL),
+						CBOR_CONTEXT_PARAM_COMMA nullptr),
 		COSE_ERR_CBOR);
 
 	EVP_CIPHER_CTX_free(ctx);
 
-	if (pbIV != NULL) {
+	if (pbIV != nullptr) {
 		COSE_FREE(pbIV, context);
 	}
 	return true;
@@ -551,23 +551,23 @@
 	size_t cbAuthData,
 	cose_errback *perr)
 {
-	const EVP_CIPHER *pcipher = NULL;
+	const EVP_CIPHER *pcipher = nullptr;
 	EVP_CIPHER_CTX *ctx;
 	int cbOut;
 	byte rgbIV[16] = {0};
-	byte *rgbOut = NULL;
+	byte *rgbOut = nullptr;
 	bool f = false;
 	unsigned int i;
-	cn_cbor *cn = NULL;
+	cn_cbor *cn = nullptr;
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context = &pcose->m_message.m_allocContext;
 #endif
 
 	ctx = EVP_CIPHER_CTX_new();
-	CHECK_CONDITION(NULL != ctx, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(nullptr != ctx, COSE_ERR_OUT_OF_MEMORY);
 
 	rgbOut = (byte *) COSE_CALLOC(16, 1, context);
-	CHECK_CONDITION(rgbOut != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(rgbOut != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	switch (cbKey * 8) {
 		case 128:
@@ -584,7 +584,7 @@
 
 	//  Setup and run the OpenSSL code
 
-	CHECK_CONDITION(EVP_EncryptInit_ex(ctx, pcipher, NULL, pbKey, rgbIV),
+	CHECK_CONDITION(EVP_EncryptInit_ex(ctx, pcipher, nullptr, pbKey, rgbIV),
 		COSE_ERR_CRYPTO_FAIL);
 
 	for (i = 0; i < (unsigned int)cbAuthData / 16; i++) {
@@ -601,23 +601,23 @@
 			COSE_ERR_CRYPTO_FAIL);
 	}
 
-	cn = cn_cbor_data_create2(rgbOut, TSize / 8, 0, CBOR_CONTEXT_PARAM_COMMA NULL);
-	CHECK_CONDITION(cn != NULL, COSE_ERR_OUT_OF_MEMORY);
-	rgbOut = NULL;
+	cn = cn_cbor_data_create2(rgbOut, TSize / 8, 0, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	CHECK_CONDITION(cn != nullptr, COSE_ERR_OUT_OF_MEMORY);
+	rgbOut = nullptr;
 
 	CHECK_CONDITION(_COSE_array_replace(&pcose->m_message, cn, INDEX_MAC_TAG,
-						CBOR_CONTEXT_PARAM_COMMA NULL),
+						CBOR_CONTEXT_PARAM_COMMA nullptr),
 		COSE_ERR_CBOR);
-	cn = NULL;
+	cn = nullptr;
 
 	EVP_CIPHER_CTX_free(ctx);
 	return !f;
 
 errorReturn:
-	if (rgbOut != NULL) {
+	if (rgbOut != nullptr) {
 		COSE_FREE(rgbOut, context);
 	}
-	if (cn != NULL) {
+	if (cn != nullptr) {
 		CN_CBOR_FREE(cn, context);
 	}
 	EVP_CIPHER_CTX_free(ctx);
@@ -632,8 +632,8 @@
 	size_t cbAuthData,
 	cose_errback *perr)
 {
-	const EVP_CIPHER *pcipher = NULL;
-	EVP_CIPHER_CTX *ctx = NULL;
+	const EVP_CIPHER *pcipher = nullptr;
+	EVP_CIPHER_CTX *ctx = nullptr;
 	int cbOut;
 	byte rgbIV[16] = {0};
 	byte rgbTag[16] = {0};
@@ -661,8 +661,8 @@
 	//  Setup and run the OpenSSL code
 
 	ctx = EVP_CIPHER_CTX_new();
-	CHECK_CONDITION(NULL != ctx, COSE_ERR_OUT_OF_MEMORY);
-	CHECK_CONDITION(EVP_EncryptInit_ex(ctx, pcipher, NULL, pbKey, rgbIV),
+	CHECK_CONDITION(nullptr != ctx, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(EVP_EncryptInit_ex(ctx, pcipher, nullptr, pbKey, rgbIV),
 		COSE_ERR_CRYPTO_FAIL);
 
 	TSize /= 8;
@@ -682,7 +682,7 @@
 	}
 
 	cn_cbor *cn = _COSE_arrayget_int(&pcose->m_message, INDEX_MAC_TAG);
-	CHECK_CONDITION(cn != NULL, COSE_ERR_CBOR);
+	CHECK_CONDITION(cn != nullptr, COSE_ERR_CBOR);
 
 	for (i = 0; i < (unsigned int)TSize; i++) {
 		f |= (cn->v.bytes[i] != rgbTag[i]);
@@ -696,9 +696,9 @@
 //  We are doing CBC-MAC not CMAC at this time
 bool AES_CMAC_Validate(COSE_MacMessage * pcose, int KeySize, int TagSize, const byte * pbAuthData, int cbAuthData, cose_errback * perr)
 {
-	CMAC_CTX * pctx = NULL;
-	const EVP_CIPHER * pcipher = NULL;
-	byte * rgbOut = NULL;
+	CMAC_CTX * pctx = nullptr;
+	const EVP_CIPHER * pcipher = nullptr;
+	byte * rgbOut = nullptr;
 	size_t cbOut;
 	bool f = false;
 	unsigned int i;
@@ -716,14 +716,14 @@
 	}
 
 	rgbOut = COSE_CALLOC(128/8, 1, context);
-	CHECK_CONDITION(rgbOut != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(rgbOut != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
-	CHECK_CONDITION(CMAC_Init(pctx, pcose->pbKey, pcose->cbKey, pcipher, NULL /*impl*/) == 1, COSE_ERR_CRYPTO_FAIL);
+	CHECK_CONDITION(CMAC_Init(pctx, pcose->pbKey, pcose->cbKey, pcipher, nullptr /*impl*/) == 1, COSE_ERR_CRYPTO_FAIL);
 	CHECK_CONDITION(CMAC_Update(pctx, pbAuthData, cbAuthData), COSE_ERR_CRYPTO_FAIL);
 	CHECK_CONDITION(CMAC_Final(pctx, rgbOut, &cbOut), COSE_ERR_CRYPTO_FAIL);
 
 	cn_cbor * cn = _COSE_arrayget_int(&pcose->m_message, INDEX_MAC_TAG);
-	CHECK_CONDITION(cn != NULL, COSE_ERR_CBOR);
+	CHECK_CONDITION(cn != nullptr, COSE_ERR_CBOR);
 
 	for (i = 0; i < (unsigned int)TagSize / 8; i++) f |= (cn->v.bytes[i] != rgbOut[i]);
 
@@ -751,7 +751,7 @@
 	size_t cbOutput,
 	cose_errback *perr)
 {
-	const EVP_CIPHER *pcipher = NULL;
+	const EVP_CIPHER *pcipher = nullptr;
 	EVP_CIPHER_CTX *ctx;
 	int cbOut;
 	byte rgbIV[16] = {0};
@@ -764,7 +764,7 @@
 	UNUSED(pcose);
 
 	ctx = EVP_CIPHER_CTX_new();
-	CHECK_CONDITION(NULL != ctx, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(nullptr != ctx, COSE_ERR_OUT_OF_MEMORY);
 
 	switch (cbitKey) {
 		case 128:
@@ -785,7 +785,7 @@
 	for (ib = 0; ib < cbOutput; ib += 16, bCount += 1) {
 		size_t ib2;
 
-		CHECK_CONDITION(EVP_EncryptInit_ex(ctx, pcipher, NULL, pbPRK, rgbIV),
+		CHECK_CONDITION(EVP_EncryptInit_ex(ctx, pcipher, nullptr, pbPRK, rgbIV),
 			COSE_ERR_CRYPTO_FAIL);
 
 		CHECK_CONDITION(
@@ -831,11 +831,11 @@
 	int cbSalt;
 	cn_cbor *cnSalt;
 	HMAC_CTX *ctx;
-	const EVP_MD *pmd = NULL;
+	const EVP_MD *pmd = nullptr;
 	unsigned int cbDigest;
 
 	ctx = HMAC_CTX_new();
-	CHECK_CONDITION(NULL != ctx, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(nullptr != ctx, COSE_ERR_OUT_OF_MEMORY);
 
 	if (0) {
 	errorReturn:
@@ -863,13 +863,13 @@
 
 	cnSalt = _COSE_map_get_int(pcose, COSE_Header_HKDF_salt, COSE_BOTH, perr);
 
-	if (cnSalt != NULL) {
+	if (cnSalt != nullptr) {
 		CHECK_CONDITION(
-			HMAC_Init_ex(ctx, cnSalt->v.bytes, (int)cnSalt->length, pmd, NULL),
+			HMAC_Init_ex(ctx, cnSalt->v.bytes, (int)cnSalt->length, pmd, nullptr),
 			COSE_ERR_CRYPTO_FAIL);
 	}
 	else {
-		CHECK_CONDITION(HMAC_Init_ex(ctx, rgbSalt, cbSalt, pmd, NULL),
+		CHECK_CONDITION(HMAC_Init_ex(ctx, rgbSalt, cbSalt, pmd, nullptr),
 			COSE_ERR_CRYPTO_FAIL);
 	}
 	CHECK_CONDITION(HMAC_Update(ctx, pbKey, (int)cbKey), COSE_ERR_CRYPTO_FAIL);
@@ -891,7 +891,7 @@
 	cose_errback *perr)
 {
 	HMAC_CTX *ctx;
-	const EVP_MD *pmd = NULL;
+	const EVP_MD *pmd = nullptr;
 	size_t ib;
 	unsigned int cbDigest = 0;
 	byte rgbDigest[EVP_MAX_MD_SIZE];
@@ -900,7 +900,7 @@
 	UNUSED(pcose);
 
 	ctx = HMAC_CTX_new();
-	CHECK_CONDITION(ctx != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(ctx != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	if (0) {
 	errorReturn:
@@ -924,7 +924,7 @@
 	}
 
 	for (ib = 0; ib < cbOutput; ib += cbDigest, bCount += 1) {
-		CHECK_CONDITION(HMAC_Init_ex(ctx, pbPRK, (int)cbPRK, pmd, NULL),
+		CHECK_CONDITION(HMAC_Init_ex(ctx, pbPRK, (int)cbPRK, pmd, nullptr),
 			COSE_ERR_CRYPTO_FAIL);
 		CHECK_CONDITION(
 			HMAC_Update(ctx, rgbDigest, cbDigest), COSE_ERR_CRYPTO_FAIL);
@@ -950,21 +950,21 @@
 	cose_errback *perr)
 {
 	HMAC_CTX *ctx;
-	const EVP_MD *pmd = NULL;
-	byte *rgbOut = NULL;
+	const EVP_MD *pmd = nullptr;
+	byte *rgbOut = nullptr;
 	unsigned int cbOut;
-	cn_cbor *cbor = NULL;
+	cn_cbor *cbor = nullptr;
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context = &pcose->m_message.m_allocContext;
 #endif
 
 	ctx = HMAC_CTX_new();
-	CHECK_CONDITION(NULL != ctx, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(nullptr != ctx, COSE_ERR_OUT_OF_MEMORY);
 
 	if (0) {
 	errorReturn:
 		COSE_FREE(rgbOut, context);
-		if (cbor != NULL) {
+		if (cbor != nullptr) {
 			COSE_FREE(cbor, context);
 		}
 		HMAC_CTX_free(ctx);
@@ -987,19 +987,19 @@
 	}
 
 	rgbOut = (byte *) COSE_CALLOC(EVP_MAX_MD_SIZE, 1, context);
-	CHECK_CONDITION(rgbOut != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(rgbOut != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	CHECK_CONDITION(
-		HMAC_Init_ex(ctx, pbKey, (int)cbKey, pmd, NULL), COSE_ERR_CRYPTO_FAIL);
+		HMAC_Init_ex(ctx, pbKey, (int)cbKey, pmd, nullptr), COSE_ERR_CRYPTO_FAIL);
 	CHECK_CONDITION(
 		HMAC_Update(ctx, pbAuthData, cbAuthData), COSE_ERR_CRYPTO_FAIL);
 	CHECK_CONDITION(HMAC_Final(ctx, rgbOut, &cbOut), COSE_ERR_CRYPTO_FAIL);
 
-cbor =							cn_cbor_data_create2(rgbOut, TSize / 8, 0, CBOR_CONTEXT_PARAM_COMMA NULL);
-	CHECK_CONDITION(cbor != NULL, COSE_ERR_OUT_OF_MEMORY);
+cbor =							cn_cbor_data_create2(rgbOut, TSize / 8, 0, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	CHECK_CONDITION(cbor != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	CHECK_CONDITION(_COSE_array_replace(&pcose->m_message, cbor,
-						INDEX_MAC_TAG, CBOR_CONTEXT_PARAM_COMMA NULL),
+						INDEX_MAC_TAG, CBOR_CONTEXT_PARAM_COMMA nullptr),
 		COSE_ERR_CBOR);
 
 	HMAC_CTX_free(ctx);
@@ -1015,9 +1015,9 @@
 	size_t cbAuthData,
 	cose_errback *perr)
 {
-	HMAC_CTX *ctx = NULL;
-	const EVP_MD *pmd = NULL;
-	byte *rgbOut = NULL;
+	HMAC_CTX *ctx = nullptr;
+	const EVP_MD *pmd = nullptr;
+	byte *rgbOut = nullptr;
 	unsigned int cbOut = 0 ;
 	bool f = false;
 #ifdef USE_CBOR_CONTEXT
@@ -1026,14 +1026,14 @@
 
 	if (false) {
 	errorReturn:
-		if (rgbOut != NULL) {
+		if (rgbOut != nullptr) {
 			COSE_FREE(rgbOut, context);
 		}
 		HMAC_CTX_free(ctx);
 		return false;		
 	}
 	ctx = HMAC_CTX_new();
-	CHECK_CONDITION(ctx != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(ctx != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	switch (HSize) {
 		case 256:
@@ -1051,16 +1051,16 @@
 	}
 
 	rgbOut = (byte *) COSE_CALLOC(EVP_MAX_MD_SIZE, 1, context);
-	CHECK_CONDITION(rgbOut != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(rgbOut != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	CHECK_CONDITION(
-		HMAC_Init_ex(ctx, pbKey, (int)cbKey, pmd, NULL), COSE_ERR_CRYPTO_FAIL);
+		HMAC_Init_ex(ctx, pbKey, (int)cbKey, pmd, nullptr), COSE_ERR_CRYPTO_FAIL);
 	CHECK_CONDITION(
 		HMAC_Update(ctx, pbAuthData, cbAuthData), COSE_ERR_CRYPTO_FAIL);
 	CHECK_CONDITION(HMAC_Final(ctx, rgbOut, &cbOut), COSE_ERR_CRYPTO_FAIL);
 
 	cn_cbor *cn = _COSE_arrayget_int(&pcose->m_message, INDEX_MAC_TAG);
-	CHECK_CONDITION(cn != NULL, COSE_ERR_CBOR);
+	CHECK_CONDITION(cn != nullptr, COSE_ERR_CBOR);
 
 	if (cn->length > cbOut) {
 		return false;
@@ -1081,19 +1081,19 @@
 
 EC_KEY *ECKey_From(COSE_KEY *pKey, int *cbGroup, cose_errback *perr)
 {
-	EC_KEY *pNewKey = NULL;
+	EC_KEY *pNewKey = nullptr;
 
 	if (false) {
 	errorReturn:
-		if (pNewKey != NULL) {
+		if (pNewKey != nullptr) {
 			EC_KEY_free(pNewKey);
 		}
-		return NULL;		
+		return nullptr;		
 	}
 
-	if (pKey->m_opensslKey != NULL) {
+	if (pKey->m_opensslKey != nullptr) {
 		EC_KEY *pKeyNew = EVP_PKEY_get1_EC_KEY(pKey->m_opensslKey);
-		CHECK_CONDITION(pKeyNew != NULL, COSE_ERR_INVALID_PARAMETER);
+		CHECK_CONDITION(pKeyNew != nullptr, COSE_ERR_INVALID_PARAMETER);
 		return pKeyNew;
 	}
 	
@@ -1101,13 +1101,13 @@
 	int cbKey;
 	const cn_cbor *p;
 	int nidGroup = -1;
-	EC_POINT *pPoint = NULL;
+	EC_POINT *pPoint = nullptr;
 
 	pNewKey = EC_KEY_new();
-	CHECK_CONDITION(pNewKey != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(pNewKey != nullptr, COSE_ERR_OUT_OF_MEMORY);
 	
 	p = cn_cbor_mapget_int(pKey->m_cborKey, COSE_Key_EC_Curve);
-	CHECK_CONDITION(p != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(p != nullptr, COSE_ERR_INVALID_PARAMETER);
 
 	switch (p->v.sint) {
 		case 1:	 // P-256
@@ -1130,18 +1130,18 @@
 	}
 
 	EC_GROUP *ecgroup = EC_GROUP_new_by_curve_name(nidGroup);
-	CHECK_CONDITION(ecgroup != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(ecgroup != nullptr, COSE_ERR_INVALID_PARAMETER);
 	CHECK_CONDITION(
 		EC_KEY_set_group(pNewKey, ecgroup) == 1, COSE_ERR_CRYPTO_FAIL);
 
 	p = cn_cbor_mapget_int(pKey->m_cborKey, COSE_Key_EC_X);
 	CHECK_CONDITION(
-		(p != NULL) && (p->type == CN_CBOR_BYTES), COSE_ERR_INVALID_PARAMETER);
+		(p != nullptr) && (p->type == CN_CBOR_BYTES), COSE_ERR_INVALID_PARAMETER);
 	CHECK_CONDITION(p->length == (size_t)*cbGroup, COSE_ERR_INVALID_PARAMETER);
 	memcpy(rgbKey + 1, p->v.str, p->length);
 
 	p = cn_cbor_mapget_int(pKey->m_cborKey, COSE_Key_EC_Y);
-	CHECK_CONDITION((p != NULL), COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION((p != nullptr), COSE_ERR_INVALID_PARAMETER);
 	if (p->type == CN_CBOR_BYTES) {
 		rgbKey[0] = POINT_CONVERSION_UNCOMPRESSED;
 		cbKey = (*cbGroup * 2) + 1;
@@ -1160,25 +1160,25 @@
 		FAIL_CONDITION(COSE_ERR_INVALID_PARAMETER);
 
 	pPoint = EC_POINT_new(ecgroup);
-	CHECK_CONDITION(pPoint != NULL, COSE_ERR_CRYPTO_FAIL);
+	CHECK_CONDITION(pPoint != nullptr, COSE_ERR_CRYPTO_FAIL);
 	CHECK_CONDITION(
-		EC_POINT_oct2point(ecgroup, pPoint, rgbKey, cbKey, NULL) == 1,
+		EC_POINT_oct2point(ecgroup, pPoint, rgbKey, cbKey, nullptr) == 1,
 		COSE_ERR_CRYPTO_FAIL);
 	CHECK_CONDITION(
 		EC_KEY_set_public_key(pNewKey, pPoint) == 1, COSE_ERR_CRYPTO_FAIL);
 
 	p = cn_cbor_mapget_int(pKey->m_cborKey, COSE_Key_EC_d);
-	if (p != NULL) {
+	if (p != nullptr) {
 		BIGNUM *pbn;
 
-		pbn = BN_bin2bn(p->v.bytes, (int)p->length, NULL);
-		CHECK_CONDITION(pbn != NULL, COSE_ERR_CRYPTO_FAIL);
+		pbn = BN_bin2bn(p->v.bytes, (int)p->length, nullptr);
+		CHECK_CONDITION(pbn != nullptr, COSE_ERR_CRYPTO_FAIL);
 		CHECK_CONDITION(
 			EC_KEY_set_private_key(pNewKey, pbn) == 1, COSE_ERR_CRYPTO_FAIL);
 	}
 
 	pKey->m_opensslKey = EVP_PKEY_new();
-	CHECK_CONDITION(pKey->m_opensslKey != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(pKey->m_opensslKey != nullptr, COSE_ERR_OUT_OF_MEMORY);
 	
 	CHECK_CONDITION(EVP_PKEY_set1_EC_KEY(pKey->m_opensslKey, pNewKey) == 1, COSE_ERR_CRYPTO_FAIL);
 
@@ -1187,19 +1187,19 @@
 
 COSE_KEY *EC_FromKey(const EC_KEY *pKey, CBOR_CONTEXT_COMMA cose_errback *perr)
 {
-	cn_cbor *pkey = NULL;
+	cn_cbor *pkey = nullptr;
 	const EC_GROUP *pgroup;
 	int cose_group;
-	cn_cbor *p = NULL;
+	cn_cbor *p = nullptr;
 	cn_cbor_errback cbor_error;
 	const EC_POINT *pPoint;
-	byte *pbPoint = NULL;
+	byte *pbPoint = nullptr;
 	size_t cbSize;
-	byte *pbOut = NULL;
-	COSE_KEY *coseKey = NULL;
+	byte *pbOut = nullptr;
+	COSE_KEY *coseKey = nullptr;
 
 	pgroup = EC_KEY_get0_group(pKey);
-	CHECK_CONDITION(pgroup != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(pgroup != nullptr, COSE_ERR_INVALID_PARAMETER);
 
 	switch (EC_GROUP_get_curve_name(pgroup)) {
 		case NID_X9_62_prime256v1:
@@ -1217,110 +1217,110 @@
 	}
 
 	pkey = cn_cbor_map_create(CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(pkey != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(pkey != nullptr, cbor_error);
 
 	p = cn_cbor_int_create(cose_group, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(p != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(p != nullptr, cbor_error);
 	CHECK_CONDITION_CBOR(cn_cbor_mapput_int(pkey, COSE_Key_EC_Curve, p,
 							 CBOR_CONTEXT_PARAM_COMMA & cbor_error),
 		cbor_error);
-	p = NULL;
+	p = nullptr;
 
 	pPoint = EC_KEY_get0_public_key(pKey);
-	CHECK_CONDITION(pPoint != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(pPoint != nullptr, COSE_ERR_INVALID_PARAMETER);
 
 	if (FUseCompressed) {
 		cbSize = EC_POINT_point2oct(
-			pgroup, pPoint, POINT_CONVERSION_COMPRESSED, NULL, 0, NULL);
+			pgroup, pPoint, POINT_CONVERSION_COMPRESSED, nullptr, 0, nullptr);
 		CHECK_CONDITION(cbSize > 0, COSE_ERR_CRYPTO_FAIL);
 		pbPoint = (byte *) COSE_CALLOC(cbSize, 1, context);
-		CHECK_CONDITION(pbPoint != NULL, COSE_ERR_OUT_OF_MEMORY);
+		CHECK_CONDITION(pbPoint != nullptr, COSE_ERR_OUT_OF_MEMORY);
 		CHECK_CONDITION(
 			EC_POINT_point2oct(pgroup, pPoint, POINT_CONVERSION_COMPRESSED,
-				pbPoint, cbSize, NULL) == cbSize,
+				pbPoint, cbSize, nullptr) == cbSize,
 			COSE_ERR_CRYPTO_FAIL);
 	}
 	else {
 		cbSize = EC_POINT_point2oct(
-			pgroup, pPoint, POINT_CONVERSION_UNCOMPRESSED, NULL, 0, NULL);
+			pgroup, pPoint, POINT_CONVERSION_UNCOMPRESSED, nullptr, 0, nullptr);
 		CHECK_CONDITION(cbSize > 0, COSE_ERR_CRYPTO_FAIL);
 		pbPoint = (byte *) COSE_CALLOC(cbSize, 1, context);
-		CHECK_CONDITION(pbPoint != NULL, COSE_ERR_OUT_OF_MEMORY);
+		CHECK_CONDITION(pbPoint != nullptr, COSE_ERR_OUT_OF_MEMORY);
 		CHECK_CONDITION(
 			EC_POINT_point2oct(pgroup, pPoint, POINT_CONVERSION_UNCOMPRESSED,
-				pbPoint, cbSize, NULL) == cbSize,
+				pbPoint, cbSize, nullptr) == cbSize,
 			COSE_ERR_CRYPTO_FAIL);
 	}
 
 	pbOut = (byte *) COSE_CALLOC((int)(cbSize / 2), 1, context);
-	CHECK_CONDITION(pbOut != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(pbOut != nullptr, COSE_ERR_OUT_OF_MEMORY);
 	memcpy(pbOut, pbPoint + 1, (int)(cbSize / 2));
 	p = cn_cbor_data_create2(
 		pbOut, (int)(cbSize / 2), 0, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(p != NULL, cbor_error);
-	pbOut = NULL;
+	CHECK_CONDITION_CBOR(p != nullptr, cbor_error);
+	pbOut = nullptr;
 	CHECK_CONDITION_CBOR(cn_cbor_mapput_int(pkey, COSE_Key_EC_X, p,
 							 CBOR_CONTEXT_PARAM_COMMA & cbor_error),
 		cbor_error);
-	p = NULL;
+	p = nullptr;
 
 	if (FUseCompressed) {
 		p = cn_cbor_bool_create(
 			pbPoint[0] & 1, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-		CHECK_CONDITION_CBOR(p != NULL, cbor_error);
+		CHECK_CONDITION_CBOR(p != nullptr, cbor_error);
 		CHECK_CONDITION_CBOR(cn_cbor_mapput_int(pkey, COSE_Key_EC_Y, p,
 								 CBOR_CONTEXT_PARAM_COMMA & cbor_error),
 			cbor_error);
-		p = NULL;
+		p = nullptr;
 	}
 	else {
 		pbOut = (byte *) COSE_CALLOC((int)(cbSize / 2), 1, context);
-		CHECK_CONDITION(pbOut != NULL, COSE_ERR_OUT_OF_MEMORY);
+		CHECK_CONDITION(pbOut != nullptr, COSE_ERR_OUT_OF_MEMORY);
 		memcpy(pbOut, pbPoint + cbSize / 2 + 1, (int)(cbSize / 2));
 		p = cn_cbor_data_create2(pbOut, (int)(cbSize / 2), 0,
 			CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-		CHECK_CONDITION_CBOR(p != NULL, cbor_error);
-		pbOut = NULL; 
+		CHECK_CONDITION_CBOR(p != nullptr, cbor_error);
+		pbOut = nullptr; 
 		CHECK_CONDITION_CBOR(cn_cbor_mapput_int(pkey, COSE_Key_EC_Y, p,
 								 CBOR_CONTEXT_PARAM_COMMA & cbor_error),
 			cbor_error);
-		p = NULL;
+		p = nullptr;
 	}
 
 	p = cn_cbor_int_create(
 		COSE_Key_Type_EC2, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(p != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(p != nullptr, cbor_error);
 	CHECK_CONDITION_CBOR(cn_cbor_mapput_int(pkey, COSE_Key_Type, p,
 							 CBOR_CONTEXT_PARAM_COMMA & cbor_error),
 		cbor_error);
-	p = NULL;
+	p = nullptr;
 
 	coseKey = (COSE_KEY*) COSE_KEY_FromCbor(pkey, CBOR_CONTEXT_PARAM_COMMA perr);
-	CHECK_CONDITION(coseKey != NULL, COSE_ERR_OUT_OF_MEMORY);
-	pkey = NULL;
+	CHECK_CONDITION(coseKey != nullptr, COSE_ERR_OUT_OF_MEMORY);
+	pkey = nullptr;
 
 returnHere:
-	if (pbPoint != NULL) {
+	if (pbPoint != nullptr) {
 		COSE_FREE(pbPoint, context);
 	}
-	if (pbOut != NULL) {
+	if (pbOut != nullptr) {
 		COSE_FREE(pbOut, context);
 	}
-	if (p != NULL) {
+	if (p != nullptr) {
 		CN_CBOR_FREE(p, context);
 	}
 	return coseKey;
 
 errorReturn:
 	CN_CBOR_FREE(pkey, context);
-	pkey = NULL;
+	pkey = nullptr;
 	goto returnHere;
 }
 
 /*
 bool ECDSA_Sign(const cn_cbor * pKey)
 {
-	byte * digest = NULL;
+	byte * digest = nullptr;
 	int digestLen = 0;
 	ECDSA_SIG * sig;
 
@@ -1340,31 +1340,31 @@
 	size_t cbToSign,
 	cose_errback *perr)
 {
-	EC_KEY *eckey = NULL;
+	EC_KEY *eckey = nullptr;
 	byte rgbDigest[EVP_MAX_MD_SIZE];
 	unsigned int cbDigest = sizeof(rgbDigest);
-	byte *pbSig = NULL;
+	byte *pbSig = nullptr;
 	const EVP_MD *digest;
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context = &pSigner->m_allocContext;
 #endif
-	cn_cbor *p = NULL;
-	ECDSA_SIG *psig = NULL;
+	cn_cbor *p = nullptr;
+	ECDSA_SIG *psig = nullptr;
 	cn_cbor_errback cbor_error;
 	int cbR;
 	byte rgbSig[66];
 	int cb;
 
 	eckey = ECKey_From(pKey, &cbR, perr);
-	if (eckey == NULL) {
+	if (eckey == nullptr) {
 	errorReturn:
-		if (pbSig != NULL) {
+		if (pbSig != nullptr) {
 			COSE_FREE(pbSig, context);
 		}
-		if (p != NULL) {
+		if (p != nullptr) {
 			CN_CBOR_FREE(p, context);
 		}
-		if (eckey != NULL) {
+		if (eckey != nullptr) {
 			EC_KEY_free(eckey);
 		}
 		return false;
@@ -1384,13 +1384,13 @@
 			FAIL_CONDITION(COSE_ERR_INVALID_PARAMETER);
 	}
 
-	EVP_Digest(rgbToSign, cbToSign, rgbDigest, &cbDigest, digest, NULL);
+	EVP_Digest(rgbToSign, cbToSign, rgbDigest, &cbDigest, digest, nullptr);
 
 	psig = ECDSA_do_sign(rgbDigest, cbDigest, eckey);
-	CHECK_CONDITION(psig != NULL, COSE_ERR_CRYPTO_FAIL);
+	CHECK_CONDITION(psig != nullptr, COSE_ERR_CRYPTO_FAIL);
 
 	pbSig = (byte *) COSE_CALLOC(cbR, 2, context);
-	CHECK_CONDITION(pbSig != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(pbSig != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	const BIGNUM *r;
 	const BIGNUM *s;
@@ -1405,15 +1405,15 @@
 
 	p = cn_cbor_data_create2(
 		pbSig, cbR * 2, 0, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION_CBOR(p != NULL, cbor_error);
+	CHECK_CONDITION_CBOR(p != nullptr, cbor_error);
 
 	CHECK_CONDITION(
-		_COSE_array_replace(pSigner, p, index, CBOR_CONTEXT_PARAM_COMMA NULL),
+		_COSE_array_replace(pSigner, p, index, CBOR_CONTEXT_PARAM_COMMA nullptr),
 		COSE_ERR_CBOR);
 
-	pbSig = NULL;
+	pbSig = nullptr;
 
-	if (eckey != NULL) {
+	if (eckey != nullptr) {
 		EC_KEY_free(eckey);
 	}
 
@@ -1428,15 +1428,15 @@
 	size_t cbToSign,
 	cose_errback *perr)
 {
-	EC_KEY *eckey = NULL;
+	EC_KEY *eckey = nullptr;
 	byte rgbDigest[EVP_MAX_MD_SIZE];
 	unsigned int cbDigest = sizeof(rgbDigest);
 	const EVP_MD *digest;
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context = &pSigner->m_allocContext;
 #endif
-	cn_cbor *p = NULL;
-	ECDSA_SIG *sig = NULL;
+	cn_cbor *p = nullptr;
+	ECDSA_SIG *sig = nullptr;
 	int cbR;
 	cn_cbor *pSig;
 	size_t cbSignature;
@@ -1444,15 +1444,15 @@
 	BIGNUM *r, *s;
 
 	eckey = ECKey_From(pKey, &cbR, perr);
-	if (eckey == NULL) {
+	if (eckey == nullptr) {
 	errorReturn:
-		if (p != NULL) {
+		if (p != nullptr) {
 			CN_CBOR_FREE(p, context);
 		}
-		if (eckey != NULL) {
+		if (eckey != nullptr) {
 			EC_KEY_free(eckey);
 		}
-		if (sig != NULL) {
+		if (sig != nullptr) {
 			ECDSA_SIG_free(sig);
 		}
 		return false;
@@ -1471,30 +1471,30 @@
 		default:
 			FAIL_CONDITION(COSE_ERR_INVALID_PARAMETER);
 	}
-	EVP_Digest(rgbToSign, cbToSign, rgbDigest, &cbDigest, digest, NULL);
+	EVP_Digest(rgbToSign, cbToSign, rgbDigest, &cbDigest, digest, nullptr);
 
 	pSig = _COSE_arrayget_int(pSigner, index);
-	CHECK_CONDITION(pSig != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(pSig != nullptr, COSE_ERR_INVALID_PARAMETER);
 	cbSignature = pSig->length;
 
 	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);
-	CHECK_CONDITION(NULL != s, COSE_ERR_OUT_OF_MEMORY);
+	r = BN_bin2bn(pSig->v.bytes, (int)cbSignature / 2, nullptr);
+	CHECK_CONDITION(nullptr != r, COSE_ERR_OUT_OF_MEMORY);
+	s = BN_bin2bn(pSig->v.bytes + cbSignature / 2, (int)cbSignature / 2, nullptr);
+	CHECK_CONDITION(nullptr != s, COSE_ERR_OUT_OF_MEMORY);
 
 	sig = ECDSA_SIG_new();
-	CHECK_CONDITION(sig != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(sig != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	ECDSA_SIG_set0(sig, r, s);
 
 	CHECK_CONDITION(ECDSA_do_verify(rgbDigest, cbDigest, sig, eckey) == 1,
 		COSE_ERR_CRYPTO_FAIL);
 
-	if (eckey != NULL) {
+	if (eckey != nullptr) {
 		EC_KEY_free(eckey);
 	}
-	if (sig != NULL) {
+	if (sig != nullptr) {
 		ECDSA_SIG_free(sig);
 	}
 
@@ -1514,25 +1514,25 @@
 #endif
 	cn_cbor *p;
 	cn_cbor_errback cbor_error;
-	EVP_PKEY_CTX *keyCtx = NULL;
-	EVP_MD_CTX *mdCtx = NULL;
-	EVP_PKEY *pkey = NULL;
-	byte *pbSig = NULL;
+	EVP_PKEY_CTX *keyCtx = nullptr;
+	EVP_MD_CTX *mdCtx = nullptr;
+	EVP_PKEY *pkey = nullptr;
+	byte *pbSig = nullptr;
 	int cbSig;
 
 	p = cn_cbor_mapget_int(pKeyIn->m_cborKey, COSE_Key_OPK_Curve);
-	if (p == NULL) {
+	if (p == nullptr) {
 	errorReturn:
-		if (mdCtx != NULL) {
+		if (mdCtx != nullptr) {
 			EVP_MD_CTX_free(mdCtx);
 		}
-		if (keyCtx != NULL) {
+		if (keyCtx != nullptr) {
 			EVP_PKEY_CTX_free(keyCtx);
 		}
-		if (pkey != NULL) {
+		if (pkey != nullptr) {
 			EVP_PKEY_free(pkey);
 		}
-		if (pbSig != NULL) {
+		if (pbSig != nullptr) {
 			COSE_FREE(pbSig, context);
 		}
 		return false;
@@ -1556,23 +1556,23 @@
 	}
 
 	p = cn_cbor_mapget_int(pKeyIn->m_cborKey, COSE_Key_EC_d);
-	CHECK_CONDITION(p != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(p != nullptr, COSE_ERR_INVALID_PARAMETER);
 
-	pkey = EVP_PKEY_new_raw_private_key(type, NULL, p->v.bytes, p->length);
-	CHECK_CONDITION(pkey != NULL, COSE_ERR_CRYPTO_FAIL);
+	pkey = EVP_PKEY_new_raw_private_key(type, nullptr, p->v.bytes, p->length);
+	CHECK_CONDITION(pkey != nullptr, COSE_ERR_CRYPTO_FAIL);
 
-	keyCtx = EVP_PKEY_CTX_new_id(type, NULL);
-	CHECK_CONDITION(keyCtx != NULL, COSE_ERR_OUT_OF_MEMORY);
+	keyCtx = EVP_PKEY_CTX_new_id(type, nullptr);
+	CHECK_CONDITION(keyCtx != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	mdCtx = EVP_MD_CTX_new();
-	CHECK_CONDITION(mdCtx != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(mdCtx != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
-	CHECK_CONDITION(EVP_DigestSignInit(mdCtx, &keyCtx, NULL, NULL, pkey) == 1,
+	CHECK_CONDITION(EVP_DigestSignInit(mdCtx, &keyCtx, nullptr, nullptr, pkey) == 1,
 		COSE_ERR_CRYPTO_FAIL);
-	keyCtx = NULL;
+	keyCtx = nullptr;
 
 	pbSig = (byte *) COSE_CALLOC(cbSig, 1, context);
-	CHECK_CONDITION(pbSig != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(pbSig != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	size_t cb2 = cbSig;
 	CHECK_CONDITION(
@@ -1581,23 +1581,23 @@
 
 	p = cn_cbor_data_create2(
 		pbSig, (int)cb2, 0, CBOR_CONTEXT_PARAM_COMMA & cbor_error);
-	CHECK_CONDITION(p != NULL, COSE_ERR_OUT_OF_MEMORY);
-	pbSig = NULL;
+	CHECK_CONDITION(p != nullptr, COSE_ERR_OUT_OF_MEMORY);
+	pbSig = nullptr;
 
 	CHECK_CONDITION(
-		_COSE_array_replace(pSigner, p, index, CBOR_CONTEXT_PARAM_COMMA NULL),
+		_COSE_array_replace(pSigner, p, index, CBOR_CONTEXT_PARAM_COMMA nullptr),
 		COSE_ERR_CBOR);
 
-	if (mdCtx != NULL) {
+	if (mdCtx != nullptr) {
 		EVP_MD_CTX_free(mdCtx);
 	}
-	if (keyCtx != NULL) {
+	if (keyCtx != nullptr) {
 		EVP_PKEY_CTX_free(keyCtx);
 	}
-	if (pkey != NULL) {
+	if (pkey != nullptr) {
 		EVP_PKEY_free(pkey);
 	}
-	if (pbSig != NULL) {
+	if (pbSig != nullptr) {
 		COSE_FREE(pbSig, context);
 	}
 
@@ -1612,12 +1612,12 @@
 	cose_errback *perr)
 {
 	cn_cbor *pSig;
-	EVP_PKEY *pkey = NULL;
+	EVP_PKEY *pkey = nullptr;
 
 	cn_cbor *p = cn_cbor_mapget_int(pKey->m_cborKey, COSE_Key_OPK_Curve);
-	if (p == NULL) {
+	if (p == nullptr) {
 	errorReturn:
-		if (pkey != NULL) {
+		if (pkey != nullptr) {
 			EVP_PKEY_free(pkey);
 		}
 		return false;
@@ -1639,29 +1639,29 @@
 	}
 
 	p = cn_cbor_mapget_int(pKey->m_cborKey, COSE_Key_OPK_X);
-	CHECK_CONDITION(p != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(p != nullptr, COSE_ERR_INVALID_PARAMETER);
 
-	pkey = EVP_PKEY_new_raw_public_key(type, NULL, p->v.bytes, p->length);
-	CHECK_CONDITION(pkey != NULL, COSE_ERR_CBOR);
+	pkey = EVP_PKEY_new_raw_public_key(type, nullptr, p->v.bytes, p->length);
+	CHECK_CONDITION(pkey != nullptr, COSE_ERR_CBOR);
 
 	pSig = _COSE_arrayget_int(pSigner, index);
-	CHECK_CONDITION(pSig != NULL, COSE_ERR_INVALID_PARAMETER);
+	CHECK_CONDITION(pSig != nullptr, COSE_ERR_INVALID_PARAMETER);
 
 	EVP_MD_CTX *pmdCtx = EVP_MD_CTX_new();
-	EVP_PKEY_CTX *keyCtx = EVP_PKEY_CTX_new_id(type, NULL);
+	EVP_PKEY_CTX *keyCtx = EVP_PKEY_CTX_new_id(type, nullptr);
 
 	CHECK_CONDITION(
-		EVP_DigestVerifyInit(pmdCtx, &keyCtx, NULL, NULL, pkey) == 1,
+		EVP_DigestVerifyInit(pmdCtx, &keyCtx, nullptr, nullptr, pkey) == 1,
 		COSE_ERR_CRYPTO_FAIL);
 
 	CHECK_CONDITION(EVP_DigestVerify(pmdCtx, pSig->v.bytes, pSig->length,
 						rgbToSign, cbToSign) == 1,
 		COSE_ERR_CRYPTO_FAIL);
 
-	if (pmdCtx != NULL) {
+	if (pmdCtx != nullptr) {
 		EVP_MD_CTX_free(pmdCtx);
 	}
-	if (pkey != NULL) {
+	if (pkey != nullptr) {
 		EVP_PKEY_free(pkey);
 	}
 
@@ -1687,7 +1687,7 @@
 		COSE_ERR_CRYPTO_FAIL);
 
 	CHECK_CONDITION(
-		AES_unwrap_key(&key, NULL, rgbOut, pbCipherText, (int)cbCipherText),
+		AES_unwrap_key(&key, nullptr, rgbOut, pbCipherText, (int)cbCipherText),
 		COSE_ERR_CRYPTO_FAIL);
 
 	memcpy(pbKeyOut, rgbOut, cbCipherText - 8);
@@ -1705,36 +1705,36 @@
 	int cbContent,
 	cose_errback *perr)
 {
-	byte *pbOut = NULL;
+	byte *pbOut = nullptr;
 	AES_KEY key;
 #ifdef USE_CBOR_CONTEXT
 	cn_cbor_context *context = &pcose->m_encrypt.m_message.m_allocContext;
 #endif
-	cn_cbor *cnTmp = NULL;
+	cn_cbor *cnTmp = nullptr;
 
 	pbOut = (byte *) COSE_CALLOC(cbContent + 8, 1, context);
-	CHECK_CONDITION(pbOut != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(pbOut != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	CHECK_CONDITION(
 		AES_set_encrypt_key(pbKeyIn, cbitKey, &key) == 0, COSE_ERR_CRYPTO_FAIL);
 
-	CHECK_CONDITION(AES_wrap_key(&key, NULL, pbOut, pbContent, cbContent),
+	CHECK_CONDITION(AES_wrap_key(&key, nullptr, pbOut, pbContent, cbContent),
 		COSE_ERR_CRYPTO_FAIL);
 
 	cnTmp = cn_cbor_data_create2(
-		pbOut, (int)cbContent + 8, 0, CBOR_CONTEXT_PARAM_COMMA NULL);
-	CHECK_CONDITION(cnTmp != NULL, COSE_ERR_CBOR);
-	pbOut = NULL;
+		pbOut, (int)cbContent + 8, 0, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	CHECK_CONDITION(cnTmp != nullptr, COSE_ERR_CBOR);
+	pbOut = nullptr;
 	CHECK_CONDITION(_COSE_array_replace(&pcose->m_encrypt.m_message, cnTmp,
-						INDEX_BODY, CBOR_CONTEXT_PARAM_COMMA NULL),
+						INDEX_BODY, CBOR_CONTEXT_PARAM_COMMA nullptr),
 		COSE_ERR_CBOR);
-	cnTmp = NULL;
+	cnTmp = nullptr;
 
 	return true;
 
 errorReturn:
 	COSE_FREE(cnTmp, context);
-	if (pbOut != NULL) {
+	if (pbOut != nullptr) {
 		COSE_FREE(pbOut, context);
 	}
 	return false;
@@ -1764,23 +1764,23 @@
 	size_t *pcbSecret,
 	CBOR_CONTEXT_COMMA cose_errback *perr)
 {
-	EC_KEY *peckeyPrivate = NULL;
-	EC_KEY *peckeyPublic = NULL;
+	EC_KEY *peckeyPrivate = nullptr;
+	EC_KEY *peckeyPublic = nullptr;
 	int cbGroup;
 	int cbsecret;
-	byte *pbsecret = NULL;
+	byte *pbsecret = nullptr;
 	bool fRet = false;
 
 	peckeyPublic = ECKey_From(pKeyPublic, &cbGroup, perr);
-	if (peckeyPublic == NULL) {
+	if (peckeyPublic == nullptr) {
 		goto errorReturn;
 	}
 
-	if (*ppKeyPrivate == NULL) {
+	if (*ppKeyPrivate == nullptr) {
 		{
 			cn_cbor *pCompress = _COSE_map_get_int(
 				pRecipient, COSE_Header_UseCompressedECDH, COSE_BOTH, perr);
-			if (pCompress == NULL) {
+			if (pCompress == nullptr) {
 				FUseCompressed = false;
 			}
 			else {
@@ -1793,38 +1793,38 @@
 			EC_KEY_generate_key(peckeyPrivate) == 1, COSE_ERR_CRYPTO_FAIL);
 		*ppKeyPrivate =
 			EC_FromKey(peckeyPrivate, CBOR_CONTEXT_PARAM_COMMA perr);
-		if (*ppKeyPrivate == NULL) {
+		if (*ppKeyPrivate == nullptr) {
 			goto errorReturn;
 		}
 	}
 	else {
 		peckeyPrivate = ECKey_From(*ppKeyPrivate, &cbGroup, perr);
-		if (peckeyPrivate == NULL) {
+		if (peckeyPrivate == nullptr) {
 			goto errorReturn;
 		}
 	}
 
 	pbsecret = (byte *) COSE_CALLOC(cbGroup, 1, context);
-	CHECK_CONDITION(pbsecret != NULL, COSE_ERR_OUT_OF_MEMORY);
+	CHECK_CONDITION(pbsecret != nullptr, COSE_ERR_OUT_OF_MEMORY);
 
 	cbsecret = ECDH_compute_key(pbsecret, cbGroup,
-		EC_KEY_get0_public_key(peckeyPublic), peckeyPrivate, NULL);
+		EC_KEY_get0_public_key(peckeyPublic), peckeyPrivate, nullptr);
 	CHECK_CONDITION(cbsecret > 0, COSE_ERR_CRYPTO_FAIL);
 
 	*ppbSecret = pbsecret;
 	*pcbSecret = cbsecret;
-	pbsecret = NULL;
+	pbsecret = nullptr;
 
 	fRet = true;
 
 errorReturn:
-	if (pbsecret != NULL) {
+	if (pbsecret != nullptr) {
 		COSE_FREE(pbsecret, context);
 	}
-	if (peckeyPublic != NULL) {
+	if (peckeyPublic != nullptr) {
 		EC_KEY_free(peckeyPublic);
 	}
-	if (peckeyPrivate != NULL) {
+	if (peckeyPrivate != nullptr) {
 		EC_KEY_free(peckeyPrivate);
 	}
 
diff --git a/test/CounterSign_test.cpp b/test/CounterSign_test.cpp
index c3dfb2b..aeb9536 100644
--- a/test/CounterSign_test.cpp
+++ b/test/CounterSign_test.cpp
@@ -16,15 +16,15 @@
 
 void CounterSign_Corners()
 {
-	HCOSE_COUNTERSIGN hCounterSign = NULL;
-	HCOSE_COUNTERSIGN hBadHandle = NULL;
-	HCOSE_COUNTERSIGN hNULL = NULL;
+	HCOSE_COUNTERSIGN hCounterSign = nullptr;
+	HCOSE_COUNTERSIGN hBadHandle = nullptr;
+	HCOSE_COUNTERSIGN hNULL = nullptr;
 	cose_errback cose_error;
 	byte rgb[10];
 
-	cn_cbor *cn = cn_cbor_int_create(5, CBOR_CONTEXT_PARAM_COMMA NULL);
+	cn_cbor *cn = cn_cbor_int_create(5, CBOR_CONTEXT_PARAM_COMMA nullptr);
 
-	hCounterSign = COSE_CounterSign_Init(CBOR_CONTEXT_PARAM_COMMA NULL);
+	hCounterSign = COSE_CounterSign_Init(CBOR_CONTEXT_PARAM_COMMA nullptr);
 	hBadHandle = (HCOSE_COUNTERSIGN)COSE_CALLOC(1, sizeof(COSE), context);
 #if INCLUDE_SIGN1
 	HCOSE_SIGN1 hSign1 = COSE_Sign1_Init(
@@ -52,7 +52,7 @@
 					  hNULL, 1, cn, COSE_PROTECT_ONLY, &cose_error),
 		COSE_ERR_INVALID_HANDLE, CFails++);
 	CHECK_FAILURE(COSE_CounterSign_map_put_int(
-					  hNULL, 1, NULL, COSE_PROTECT_ONLY, &cose_error),
+					  hNULL, 1, nullptr, COSE_PROTECT_ONLY, &cose_error),
 		COSE_ERR_INVALID_HANDLE, CFails++);
 	CHECK_FAILURE(COSE_CounterSign_map_put_int(hCounterSign, 1, cn,
 					  COSE_PROTECT_ONLY | COSE_UNPROTECT_ONLY, &cose_error),
@@ -68,7 +68,7 @@
 		COSE_ERR_INVALID_PARAMETER, CFails++);
 	CHECK_FAILURE(COSE_Sign1_get_countersignature(hSign1, 3, &cose_error),
 		COSE_ERR_INVALID_PARAMETER, CFails++);
-	((COSE_CounterSign *)hCounterSign)->m_next = NULL;
+	((COSE_CounterSign *)hCounterSign)->m_next = nullptr;
 	COSE_Sign1_add_countersignature(hSign1, hCounterSign, &cose_error);
 	CHECK_FAILURE(COSE_Sign1_get_countersignature(hSign1, 3, &cose_error),
 		COSE_ERR_INVALID_PARAMETER, CFails++);
diff --git a/test/Encrypt_test.cpp b/test/Encrypt_test.cpp
index 312a33e..878e943 100644
--- a/test/Encrypt_test.cpp
+++ b/test/Encrypt_test.cpp
@@ -32,25 +32,25 @@
 	const cn_cbor *pRecipient2,
 	int iRecipient2)
 {
-	HCOSE_ENVELOPED hEnc = NULL;
-	HCOSE_RECIPIENT hRecip = NULL;
-	HCOSE_RECIPIENT hRecip1 = NULL;
-	HCOSE_RECIPIENT hRecip2 = NULL;
+	HCOSE_ENVELOPED hEnc = nullptr;
+	HCOSE_RECIPIENT hRecip = nullptr;
+	HCOSE_RECIPIENT hRecip1 = nullptr;
+	HCOSE_RECIPIENT hRecip2 = nullptr;
 	bool fRet = false;
 	int type = 0;
 	cose_errback cose_err;
-	cn_cbor *pkey = NULL;
+	cn_cbor *pkey = nullptr;
 	bool fNoSupport = false;
 
 	if (false) {
 	errorReturn:
-		if (hEnc != NULL) {
+		if (hEnc != nullptr) {
 			COSE_Enveloped_Free(hEnc);
 		}
-		if (hRecip1 != NULL) {
+		if (hRecip1 != nullptr) {
 			COSE_Recipient_Free(hRecip1);
 		}
-		if (hRecip2 != NULL) {
+		if (hRecip2 != nullptr) {
 			COSE_Recipient_Free(hRecip2);
 		}
 
@@ -59,7 +59,7 @@
 
 	hEnc = (HCOSE_ENVELOPED)COSE_Decode(pbEncoded, cbEncoded, &type,
 		COSE_enveloped_object, CBOR_CONTEXT_PARAM_COMMA & cose_err);
-	if (hEnc == NULL) {
+	if (hEnc == nullptr) {
 		if (fFailBody && (cose_err.err == COSE_ERR_INVALID_PARAMETER)) {
 			return true;
 		}
@@ -72,13 +72,13 @@
 	}
 
 	cn_cbor *alg = COSE_Enveloped_map_get_int(
-		hEnc, COSE_Header_Algorithm, COSE_BOTH, NULL);
+		hEnc, COSE_Header_Algorithm, COSE_BOTH, nullptr);
 	if (!IsAlgorithmSupported(alg)) {
 		fNoSupport = true;
 	}
 
-	hRecip1 = COSE_Enveloped_GetRecipient(hEnc, iRecipient1, NULL);
-	if (hRecip1 == NULL) {
+	hRecip1 = COSE_Enveloped_GetRecipient(hEnc, iRecipient1, nullptr);
+	if (hRecip1 == nullptr) {
 		goto errorReturn;
 	}
 	if (!SetReceivingAttributes(
@@ -86,14 +86,14 @@
 		goto errorReturn;
 	}
 
-	if (pRecipient2 != NULL) {
+	if (pRecipient2 != nullptr) {
 		pkey = BuildKey(cn_cbor_mapget_string(pRecipient2, "key"), false);
-		if (pkey == NULL) {
+		if (pkey == nullptr) {
 			goto errorReturn;
 		}
 
-		hRecip2 = COSE_Recipient_GetRecipient(hRecip1, iRecipient2, NULL);
-		if (hRecip2 == NULL) {
+		hRecip2 = COSE_Recipient_GetRecipient(hRecip1, iRecipient2, nullptr);
+		if (hRecip2 == nullptr) {
 			goto errorReturn;
 		}
 
@@ -101,16 +101,16 @@
 				(HCOSE)hRecip2, pRecipient2, Attributes_Recipient_protected)) {
 			goto errorReturn;
 		}
-		if (!COSE_Recipient_SetKey(hRecip2, pkey, NULL)) {
+		if (!COSE_Recipient_SetKey(hRecip2, pkey, nullptr)) {
 			goto errorReturn;
 		}
 
 		cn_cbor *cnStatic = cn_cbor_mapget_string(pRecipient2, "sender_key");
-		if (cnStatic != NULL) {
+		if (cnStatic != nullptr) {
 			if (COSE_Recipient_map_get_int(
-					hRecip2, COSE_Header_ECDH_SPK, COSE_BOTH, NULL) == 0) {
+					hRecip2, COSE_Header_ECDH_SPK, COSE_BOTH, nullptr) == 0) {
 				COSE_Recipient_map_put_int(hRecip2, COSE_Header_ECDH_SPK,
-					BuildKey(cnStatic, true), COSE_DONT_SEND, NULL);
+					BuildKey(cnStatic, true), COSE_DONT_SEND, nullptr);
 			}
 		}
 
@@ -118,19 +118,19 @@
 	}
 	else {
 		pkey = BuildKey(cn_cbor_mapget_string(pRecipient1, "key"), false);
-		if (pkey == NULL) {
+		if (pkey == nullptr) {
 			goto errorReturn;
 		}
-		if (!COSE_Recipient_SetKey(hRecip1, pkey, NULL)) {
+		if (!COSE_Recipient_SetKey(hRecip1, pkey, nullptr)) {
 			goto errorReturn;
 		}
 
 		cn_cbor *cnStatic = cn_cbor_mapget_string(pRecipient1, "sender_key");
-		if (cnStatic != NULL) {
+		if (cnStatic != nullptr) {
 			if (COSE_Recipient_map_get_int(
-					hRecip1, COSE_Header_ECDH_SPK, COSE_BOTH, NULL) == 0) {
+					hRecip1, COSE_Header_ECDH_SPK, COSE_BOTH, nullptr) == 0) {
 				COSE_Recipient_map_put_int(hRecip1, COSE_Header_ECDH_SPK,
-					BuildKey(cnStatic, true), COSE_DONT_SEND, NULL);
+					BuildKey(cnStatic, true), COSE_DONT_SEND, nullptr);
 			}
 		}
 
@@ -139,25 +139,25 @@
 
 	if (!fFailBody) {
 		cn_cbor *cn = cn_cbor_mapget_string(pRecipient1, "fail");
-		if (cn != NULL && (cn->type == CN_CBOR_TRUE)) {
+		if (cn != nullptr && (cn->type == CN_CBOR_TRUE)) {
 			fFailBody = true;
 		}
-		if (fFailBody && (pRecipient2 != NULL)) {
+		if (fFailBody && (pRecipient2 != nullptr)) {
 			cn = cn_cbor_mapget_string(pRecipient2, "fail");
-			if (cn != NULL && (cn->type == CN_CBOR_TRUE)) {
+			if (cn != nullptr && (cn->type == CN_CBOR_TRUE)) {
 				fFailBody = true;
 			}
 		}
 
-		if (hRecip2 != NULL) {
+		if (hRecip2 != nullptr) {
 			alg = COSE_Recipient_map_get_int(
-				hRecip2, COSE_Header_Algorithm, COSE_BOTH, NULL);
+				hRecip2, COSE_Header_Algorithm, COSE_BOTH, nullptr);
 			if (!IsAlgorithmSupported(alg)) {
 				fNoSupport = true;
 			}
 		}
 		alg = COSE_Recipient_map_get_int(
-			hRecip1, COSE_Header_Algorithm, COSE_BOTH, NULL);
+			hRecip1, COSE_Header_Algorithm, COSE_BOTH, nullptr);
 		if (!IsAlgorithmSupported(alg)) {
 			fNoSupport = true;
 		}
@@ -186,10 +186,10 @@
 	//  Validate counter signatures on signers
 	cn_cbor *countersignList =
 		cn_cbor_mapget_string(pRecipient1, "countersign");
-	if (countersignList != NULL) {
+	if (countersignList != nullptr) {
 		cn_cbor *countersigners =
 			cn_cbor_mapget_string(countersignList, "signers");
-		if (countersigners == NULL) {
+		if (countersigners == nullptr) {
 			fRet = false;
 			goto errorReturn;
 		}
@@ -197,7 +197,7 @@
 		bool forward = true;
 
 		if (COSE_Recipient_map_get_int(hRecip1, COSE_Header_CounterSign,
-				COSE_UNPROTECT_ONLY, 0) == NULL) {
+				COSE_UNPROTECT_ONLY, 0) == nullptr) {
 			goto errorReturn;
 		}
 
@@ -206,7 +206,7 @@
 
 			HCOSE_COUNTERSIGN h =
 				COSE_Recipient_get_countersignature(hRecip1, counterNo, 0);
-			if (h == NULL) {
+			if (h == nullptr) {
 				fRet = false;
 				continue;
 			}
@@ -216,7 +216,7 @@
 
 			cn_cbor *pkeyCountersign =
 				BuildKey(cn_cbor_mapget_string(counterSigner, "key"), false);
-			if (pkeyCountersign == NULL) {
+			if (pkeyCountersign == nullptr) {
 				fRet = false;
 				COSE_CounterSign_Free(h);
 				continue;
@@ -230,7 +230,7 @@
 			}
 
 			alg = COSE_CounterSign_map_get_int(
-				h, COSE_Header_Algorithm, COSE_BOTH, NULL);
+				h, COSE_Header_Algorithm, COSE_BOTH, nullptr);
 			if (!IsAlgorithmSupported(alg)) {
 				noSupportSign = true;
 				fNoSupport = true;
@@ -259,10 +259,10 @@
 
 	//  Validate counter signatures on signers
 	countersignList = cn_cbor_mapget_string(pEnveloped, "countersign");
-	if (countersignList != NULL) {
+	if (countersignList != nullptr) {
 		cn_cbor *countersigners =
 			cn_cbor_mapget_string(countersignList, "signers");
-		if (countersigners == NULL) {
+		if (countersigners == nullptr) {
 			fRet = false;
 			goto errorReturn;
 		}
@@ -270,7 +270,7 @@
 		bool forward = true;
 
 		if (COSE_Enveloped_map_get_int(hEnc, COSE_Header_CounterSign,
-				COSE_UNPROTECT_ONLY, 0) == NULL) {
+				COSE_UNPROTECT_ONLY, 0) == nullptr) {
 			fRet = false;
 			goto errorReturn;
 		}
@@ -279,7 +279,7 @@
 			bool noSupportSign = false;
 			HCOSE_COUNTERSIGN h =
 				COSE_Enveloped_get_countersignature(hEnc, counterNo, 0);
-			if (h == NULL) {
+			if (h == nullptr) {
 				fRet = false;
 				continue;
 			}
@@ -289,7 +289,7 @@
 
 			cn_cbor *pkeyCountersign =
 				BuildKey(cn_cbor_mapget_string(counterSigner, "key"), false);
-			if (pkeyCountersign == NULL) {
+			if (pkeyCountersign == nullptr) {
 				fRet = false;
 				COSE_CounterSign_Free(h);
 				continue;
@@ -303,7 +303,7 @@
 			}
 
 			alg = COSE_CounterSign_map_get_int(
-				h, COSE_Header_Algorithm, COSE_BOTH, NULL);
+				h, COSE_Header_Algorithm, COSE_BOTH, nullptr);
 			if (!IsAlgorithmSupported(alg)) {
 				noSupportSign = true;
 				fNoSupport = true;
@@ -346,37 +346,37 @@
 	int passCount = 0;
 
 	pFail = cn_cbor_mapget_string(pControl, "fail");
-	if ((pFail != NULL) && (pFail->type == CN_CBOR_TRUE)) {
+	if ((pFail != nullptr) && (pFail->type == CN_CBOR_TRUE)) {
 		fFailBody = true;
 	}
 
-	if ((pInput == NULL) || (pInput->type != CN_CBOR_MAP)) {
+	if ((pInput == nullptr) || (pInput->type != CN_CBOR_MAP)) {
 		goto errorReturn;
 	}
 	pEnveloped = cn_cbor_mapget_string(pInput, "enveloped");
-	if ((pEnveloped == NULL) || (pEnveloped->type != CN_CBOR_MAP)) {
+	if ((pEnveloped == nullptr) || (pEnveloped->type != CN_CBOR_MAP)) {
 		goto errorReturn;
 	}
 
 	pRecipients = cn_cbor_mapget_string(pEnveloped, "recipients");
-	if ((pRecipients == NULL) || (pRecipients->type != CN_CBOR_ARRAY)) {
+	if ((pRecipients == nullptr) || (pRecipients->type != CN_CBOR_ARRAY)) {
 		goto errorReturn;
 	}
 
 	iRecipient = (int)pRecipients->length - 1;
 	pRecipients = pRecipients->first_child;
-	for (; pRecipients != NULL; iRecipient--, pRecipients = pRecipients->next) {
+	for (; pRecipients != nullptr; iRecipient--, pRecipients = pRecipients->next) {
 		cn_cbor *pRecip2 = cn_cbor_mapget_string(pRecipients, "recipients");
-		if (pRecip2 == NULL) {
+		if (pRecip2 == nullptr) {
 			if (DecryptMessage(pbEncoded, cbEncoded, fFailBody, pEnveloped,
-					pRecipients, iRecipient, NULL, 0)) {
+					pRecipients, iRecipient, nullptr, 0)) {
 				passCount++;
 			}
 		}
 		else {
 			int iRecipient2 = (int)(pRecip2->length - 1);
 			pRecip2 = pRecip2->first_child;
-			for (; pRecip2 != NULL; pRecip2 = pRecip2->next, iRecipient2--) {
+			for (; pRecip2 != nullptr; pRecip2 = pRecip2->next, iRecipient2--) {
 				if (DecryptMessage(pbEncoded, cbEncoded, fFailBody, pEnveloped,
 						pRecipients, iRecipient, pRecip2, iRecipient2)) {
 					passCount++;
@@ -402,11 +402,11 @@
 HCOSE_RECIPIENT BuildRecipient(const cn_cbor *pRecipient)
 {
 	HCOSE_RECIPIENT hRecip = COSE_Recipient_Init(
-		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
-	if (hRecip == NULL) {
+		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	if (hRecip == nullptr) {
 	returnError:
 		COSE_Recipient_Free(hRecip);
-		return NULL;
+		return nullptr;
 	}
 
 	if (!SetSendingAttributes(
@@ -415,25 +415,25 @@
 	}
 
 	cn_cbor *cnKey = cn_cbor_mapget_string(pRecipient, "key");
-	if (cnKey != NULL) {
+	if (cnKey != nullptr) {
 		cn_cbor *pkey = BuildKey(cnKey, true);
-		if (pkey == NULL) {
+		if (pkey == nullptr) {
 			goto returnError;
 		}
 
-		if (!COSE_Recipient_SetKey(hRecip, pkey, NULL)) {
+		if (!COSE_Recipient_SetKey(hRecip, pkey, nullptr)) {
 			goto returnError;
 		}
 	}
 
 	cnKey = cn_cbor_mapget_string(pRecipient, "recipients");
-	if (cnKey != NULL) {
-		for (cnKey = cnKey->first_child; cnKey != NULL; cnKey = cnKey->next) {
+	if (cnKey != nullptr) {
+		for (cnKey = cnKey->first_child; cnKey != nullptr; cnKey = cnKey->next) {
 			HCOSE_RECIPIENT hRecip2 = BuildRecipient(cnKey);
-			if (hRecip2 == NULL) {
+			if (hRecip2 == nullptr) {
 				goto returnError;
 			}
-			if (!COSE_Recipient_AddRecipient(hRecip, hRecip2, NULL)) {
+			if (!COSE_Recipient_AddRecipient(hRecip, hRecip2, nullptr)) {
 				goto returnError;
 			}
 			COSE_Recipient_Free(hRecip2);
@@ -441,11 +441,11 @@
 	}
 
 	cn_cbor *pSenderKey = cn_cbor_mapget_string(pRecipient, "sender_key");
-	if (pSenderKey != NULL) {
+	if (pSenderKey != nullptr) {
 		cn_cbor *pSendKey = BuildKey(pSenderKey, false);
 		cn_cbor *pKid = cn_cbor_mapget_string(pSenderKey, "kid");
 		if (!COSE_Recipient_SetSenderKey(
-				hRecip, pSendKey, (pKid == NULL) ? 2 : 1, NULL)) {
+				hRecip, pSendKey, (pKid == nullptr) ? 2 : 1, nullptr)) {
 			goto returnError;
 		}
 	}
@@ -453,20 +453,20 @@
 #if INCLUDE_COUNTERSIGNATURE
 	// On the Recipient
 	cn_cbor *countersigns1 = cn_cbor_mapget_string(pRecipient, "countersign");
-	if (countersigns1 != NULL) {
+	if (countersigns1 != nullptr) {
 		countersigns1 = cn_cbor_mapget_string(countersigns1, "signers");
 		cn_cbor *countersign = countersigns1->first_child;
 
-		for (; countersign != NULL; countersign = countersign->next) {
+		for (; countersign != nullptr; countersign = countersign->next) {
 			cn_cbor *pkeyCountersign =
 				BuildKey(cn_cbor_mapget_string(countersign, "key"), false);
-			if (pkeyCountersign == NULL) {
+			if (pkeyCountersign == nullptr) {
 				goto returnError;
 			}
 
 			HCOSE_COUNTERSIGN hCountersign =
-				COSE_CounterSign_Init(CBOR_CONTEXT_PARAM_COMMA NULL);
-			if (hCountersign == NULL) {
+				COSE_CounterSign_Init(CBOR_CONTEXT_PARAM_COMMA nullptr);
+			if (hCountersign == nullptr) {
 				goto returnError;
 			}
 
@@ -475,12 +475,12 @@
 				goto returnError;
 			}
 
-			if (!COSE_CounterSign_SetKey(hCountersign, pkeyCountersign, NULL)) {
+			if (!COSE_CounterSign_SetKey(hCountersign, pkeyCountersign, nullptr)) {
 				goto returnError;
 			}
 
 			if (!COSE_Recipient_add_countersignature(
-					hRecip, hCountersign, NULL)) {
+					hRecip, hCountersign, nullptr)) {
 				goto returnError;
 			}
 
@@ -502,17 +502,17 @@
 	//
 
 	const cn_cbor *pFail = cn_cbor_mapget_string(pControl, "fail");
-	if ((pFail != NULL) && (pFail->type == CN_CBOR_TRUE)) {
+	if ((pFail != nullptr) && (pFail->type == CN_CBOR_TRUE)) {
 		return 0;
 	}
 
 	HCOSE_ENVELOPED hEncObj = COSE_Enveloped_Init(
-		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
+		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
 
 	const cn_cbor *pInputs = cn_cbor_mapget_string(pControl, "input");
-	if (pInputs == NULL) {
+	if (pInputs == nullptr) {
 	returnError:
-		if (hEncObj != NULL) {
+		if (hEncObj != nullptr) {
 			COSE_Enveloped_Free(hEncObj);
 		}
 
@@ -520,13 +520,13 @@
 		return 0;
 	}
 	const cn_cbor *pEnveloped = cn_cbor_mapget_string(pInputs, "enveloped");
-	if (pEnveloped == NULL) {
+	if (pEnveloped == nullptr) {
 		goto returnError;
 	}
 
 	const cn_cbor *pContent = cn_cbor_mapget_string(pInputs, "plaintext");
 	if (!COSE_Enveloped_SetContent(
-			hEncObj, pContent->v.bytes, pContent->length, NULL)) {
+			hEncObj, pContent->v.bytes, pContent->length, nullptr)) {
 		goto returnError;
 	}
 
@@ -536,26 +536,26 @@
 	}
 
 	const cn_cbor *pAlg =
-		COSE_Enveloped_map_get_int(hEncObj, 1, COSE_BOTH, NULL);
-	if (pAlg == NULL) {
+		COSE_Enveloped_map_get_int(hEncObj, 1, COSE_BOTH, nullptr);
+	if (pAlg == nullptr) {
 		goto returnError;
 	}
 
 	const cn_cbor *pRecipients =
 		cn_cbor_mapget_string(pEnveloped, "recipients");
-	if ((pRecipients == NULL) || (pRecipients->type != CN_CBOR_ARRAY)) {
+	if ((pRecipients == nullptr) || (pRecipients->type != CN_CBOR_ARRAY)) {
 		goto returnError;
 	}
 
 	pRecipients = pRecipients->first_child;
-	for (iRecipient = 0; pRecipients != NULL;
+	for (iRecipient = 0; pRecipients != nullptr;
 		 iRecipient++, pRecipients = pRecipients->next) {
 		HCOSE_RECIPIENT hRecip = BuildRecipient(pRecipients);
-		if (hRecip == NULL) {
+		if (hRecip == nullptr) {
 			goto returnError;
 		}
 
-		if (!COSE_Enveloped_AddRecipient(hEncObj, hRecip, NULL)) {
+		if (!COSE_Enveloped_AddRecipient(hEncObj, hRecip, nullptr)) {
 			COSE_Recipient_Free(hRecip);
 			goto returnError;
 		}
@@ -566,20 +566,20 @@
 #if INCLUDE_COUNTERSIGNATURE
 	// On the Evneloped body
 	cn_cbor *countersigns1 = cn_cbor_mapget_string(pEnveloped, "countersign");
-	if (countersigns1 != NULL) {
+	if (countersigns1 != nullptr) {
 		countersigns1 = cn_cbor_mapget_string(countersigns1, "signers");
 		cn_cbor *countersign = countersigns1->first_child;
 
-		for (; countersign != NULL; countersign = countersign->next) {
+		for (; countersign != nullptr; countersign = countersign->next) {
 			cn_cbor *pkeyCountersign =
 				BuildKey(cn_cbor_mapget_string(countersign, "key"), false);
-			if (pkeyCountersign == NULL) {
+			if (pkeyCountersign == nullptr) {
 				goto returnError;
 			}
 
 			HCOSE_COUNTERSIGN hCountersign =
-				COSE_CounterSign_Init(CBOR_CONTEXT_PARAM_COMMA NULL);
-			if (hCountersign == NULL) {
+				COSE_CounterSign_Init(CBOR_CONTEXT_PARAM_COMMA nullptr);
+			if (hCountersign == nullptr) {
 				goto returnError;
 			}
 
@@ -589,13 +589,13 @@
 				goto returnError;
 			}
 
-			if (!COSE_CounterSign_SetKey(hCountersign, pkeyCountersign, NULL)) {
+			if (!COSE_CounterSign_SetKey(hCountersign, pkeyCountersign, nullptr)) {
 				COSE_CounterSign_Free(hCountersign);
 				goto returnError;
 			}
 
 			if (!COSE_Enveloped_add_countersignature(
-					hEncObj, hCountersign, NULL)) {
+					hEncObj, hCountersign, nullptr)) {
 				COSE_CounterSign_Free(hCountersign);
 				goto returnError;
 			}
@@ -606,13 +606,12 @@
 
 #endif
 
-	if (!COSE_Enveloped_encrypt(hEncObj, NULL)) {
+	if (!COSE_Enveloped_encrypt(hEncObj, nullptr)) {
 		goto returnError;
 	}
 
-	size_t cb = COSE_Encode((HCOSE)hEncObj, NULL, 0, 0) + 1;
+	size_t cb = COSE_Encode((HCOSE)hEncObj, nullptr, 0, 0) + 1;
 	std::shared_ptr<byte> rgb = make_managed_array<byte>(cb);
-
 	cb = COSE_Encode((HCOSE)hEncObj, rgb.get(), 0, cb);
 
 	COSE_Enveloped_Free(hEncObj);
@@ -624,7 +623,7 @@
 int EncryptMessage()
 {
 	HCOSE_ENVELOPED hEncObj = COSE_Enveloped_Init(
-		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
+		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
 	byte rgbSecret[128 / 8] = {'a', 'b', 'c'};
 	int cbSecret = 128 / 8;
 	byte rgbKid[15] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'l',
@@ -633,14 +632,14 @@
 	size_t cb;
 	byte *rgb;
 	const char *sz = "This is the content to be used";
-	HCOSE_RECIPIENT hRecip = NULL;
+	HCOSE_RECIPIENT hRecip = nullptr;
 
-	if (hEncObj == NULL) {
+	if (hEncObj == nullptr) {
 	errorReturn:
-		if (hEncObj != NULL) {
+		if (hEncObj != nullptr) {
 			COSE_Enveloped_Free(hEncObj);
 		}
-		if (hRecip != NULL) {
+		if (hRecip != nullptr) {
 			COSE_Recipient_Free(hRecip);
 		}
 		CFails++;
@@ -648,38 +647,38 @@
 	}
 	if (!COSE_Enveloped_map_put_int(hEncObj, COSE_Header_Algorithm,
 			cn_cbor_int_create(COSE_Algorithm_AES_CCM_16_64_128,
-				CBOR_CONTEXT_PARAM_COMMA NULL),
-			COSE_PROTECT_ONLY, NULL)) {
+				CBOR_CONTEXT_PARAM_COMMA nullptr),
+			COSE_PROTECT_ONLY, nullptr)) {
 		goto errorReturn;
 	}
-	if (!COSE_Enveloped_SetContent(hEncObj, (byte *)sz, strlen(sz), NULL)) {
+	if (!COSE_Enveloped_SetContent(hEncObj, (byte *)sz, strlen(sz), nullptr)) {
 		goto errorReturn;
 	}
 	if (!COSE_Enveloped_map_put_int(hEncObj, COSE_Header_IV,
-			cn_cbor_data_create(rgbKid, 13, CBOR_CONTEXT_PARAM_COMMA NULL),
-			COSE_UNPROTECT_ONLY, NULL)) {
+			cn_cbor_data_create(rgbKid, 13, CBOR_CONTEXT_PARAM_COMMA nullptr),
+			COSE_UNPROTECT_ONLY, nullptr)) {
 		goto errorReturn;
 	}
 
 	hRecip = COSE_Recipient_from_shared_secret(
-		rgbSecret, cbSecret, rgbKid, cbKid, CBOR_CONTEXT_PARAM_COMMA NULL);
-	if (hRecip == NULL) {
+		rgbSecret, cbSecret, rgbKid, cbKid, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	if (hRecip == nullptr) {
 		goto errorReturn;
 	}
-	if (!COSE_Enveloped_AddRecipient(hEncObj, hRecip, NULL)) {
+	if (!COSE_Enveloped_AddRecipient(hEncObj, hRecip, nullptr)) {
 		goto errorReturn;
 	}
 
-	if (!COSE_Enveloped_encrypt(hEncObj, NULL)) {
+	if (!COSE_Enveloped_encrypt(hEncObj, nullptr)) {
 		goto errorReturn;
 	}
 
-	cb = COSE_Encode((HCOSE)hEncObj, NULL, 0, 0);
+	cb = COSE_Encode((HCOSE)hEncObj, nullptr, 0, 0);
 	if (cb < 1) {
 		goto errorReturn;
 	}
 	rgb = (byte *)malloc(cb);
-	if (rgb == NULL) {
+	if (rgb == nullptr) {
 		goto errorReturn;
 	}
 	cb = COSE_Encode((HCOSE)hEncObj, rgb, 0, cb);
@@ -688,7 +687,7 @@
 	}
 
 	COSE_Recipient_Free(hRecip);
-	hRecip = NULL;
+	hRecip = nullptr;
 
 	FILE *fp = fopen("test.cbor", "wb");
 	fwrite(rgb, cb, 1, fp);
@@ -698,7 +697,7 @@
 	char * szX;
 	int cbPrint = 0;
 	cn_cbor * cbor = COSE_get_cbor((HCOSE) hEncObj);
-	cbPrint = cn_cbor_printer_write(NULL, 0, cbor, "  ", "\r\n");
+	cbPrint = cn_cbor_printer_write(nullptr, 0, cbor, "  ", "\r\n");
 	szX = malloc(cbPrint);
 	cn_cbor_printer_write(szX, cbPrint, cbor, "  ", "\r\n");
 	fprintf(stdout, "%s", szX);
@@ -706,35 +705,35 @@
 #endif
 
 	COSE_Enveloped_Free(hEncObj);
-	hEncObj = NULL;
+	hEncObj = nullptr;
 
 	/* */
 
 	int typ;
 	hEncObj = (HCOSE_ENVELOPED)COSE_Decode(rgb, (int)cb, &typ,
-		COSE_enveloped_object, CBOR_CONTEXT_PARAM_COMMA NULL);
-	if (hEncObj == NULL) {
+		COSE_enveloped_object, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	if (hEncObj == nullptr) {
 		goto errorReturn;
 	}
 
 	int iRecipient = 0;
 	do {
-		hRecip = COSE_Enveloped_GetRecipient(hEncObj, iRecipient, NULL);
-		if (hRecip == NULL) {
+		hRecip = COSE_Enveloped_GetRecipient(hEncObj, iRecipient, nullptr);
+		if (hRecip == nullptr) {
 			break;
 		}
 
 		if (!COSE_Recipient_SetKey_secret(
-				hRecip, rgbSecret, cbSecret, NULL, 0, NULL)) {
+				hRecip, rgbSecret, cbSecret, nullptr, 0, nullptr)) {
 			goto errorReturn;
 		}
 
-		if (!COSE_Enveloped_decrypt(hEncObj, hRecip, NULL)) {
+		if (!COSE_Enveloped_decrypt(hEncObj, hRecip, nullptr)) {
 			goto errorReturn;
 		}
 
 		COSE_Recipient_Free(hRecip);
-		hRecip = NULL;
+		hRecip = nullptr;
 
 		iRecipient += 1;
 
@@ -754,11 +753,11 @@
 	cn_cbor *pcnEncoded)
 {
 	const cn_cbor *pInput = cn_cbor_mapget_string(pControl, "input");
-	const cn_cbor *pFail = NULL;
-	const cn_cbor *pEncrypt = NULL;
-	const cn_cbor *pRecipients = NULL;
-	cn_cbor *pkey = NULL;
-	HCOSE_ENCRYPT hEnc = NULL;
+	const cn_cbor *pFail = nullptr;
+	const cn_cbor *pEncrypt = nullptr;
+	const cn_cbor *pRecipients = nullptr;
+	cn_cbor *pkey = nullptr;	
+	HCOSE_ENCRYPT hEnc = nullptr;
 	int type;
 	bool fFail = false;
 	bool fFailBody = false;
@@ -766,10 +765,10 @@
 
 	if (false) {
 	exitHere:
-		if (hEnc != NULL) {
+		if (hEnc != nullptr) {
 			COSE_Encrypt_Free(hEnc);
 		}
-		if (pkey != NULL) {
+		if (pkey != nullptr) {
 			CN_CBOR_FREE(pkey, context);
 		}
 
@@ -793,7 +792,7 @@
 		return fAlgSupport ? 1 : 0;
 
 	returnError:
-		if (hEnc != NULL) {
+		if (hEnc != nullptr) {
 			COSE_Encrypt_Free(hEnc);
 		}
 
@@ -802,29 +801,29 @@
 	}
 
 	pFail = cn_cbor_mapget_string(pControl, "fail");
-	if ((pFail != NULL) && (pFail->type == CN_CBOR_TRUE)) {
+	if ((pFail != nullptr) && (pFail->type == CN_CBOR_TRUE)) {
 		fFailBody = true;
 	}
 
-	if ((pInput == NULL) || (pInput->type != CN_CBOR_MAP)) {
+	if ((pInput == nullptr) || (pInput->type != CN_CBOR_MAP)) {
 		goto returnError;
 	}
 	pEncrypt = cn_cbor_mapget_string(pInput, "encrypted");
-	if ((pEncrypt == NULL) || (pEncrypt->type != CN_CBOR_MAP)) {
+	if ((pEncrypt == nullptr) || (pEncrypt->type != CN_CBOR_MAP)) {
 		goto returnError;
 	}
 
 	pRecipients = cn_cbor_mapget_string(pEncrypt, "recipients");
-	if ((pRecipients == NULL) || (pRecipients->type != CN_CBOR_ARRAY)) {
+	if ((pRecipients == nullptr) || (pRecipients->type != CN_CBOR_ARRAY)) {
 		goto returnError;
 	}
 
 	pRecipients = pRecipients->first_child;
 
-	if (pcnEncoded == NULL) {
+	if (pcnEncoded == nullptr) {
 		hEnc = (HCOSE_ENCRYPT)COSE_Decode(pbEncoded, cbEncoded, &type,
-			COSE_encrypt_object, CBOR_CONTEXT_PARAM_COMMA NULL);
-		if (hEnc == NULL) {
+			COSE_encrypt_object, CBOR_CONTEXT_PARAM_COMMA nullptr);
+		if (hEnc == nullptr) {
 			if (fFailBody) {
 				return 0;
 			}
@@ -835,8 +834,8 @@
 	}
 	else {
 		hEnc = COSE_Encrypt_Init_From_Object(
-			pcnEncoded, CBOR_CONTEXT_PARAM_COMMA NULL);
-		if (hEnc == NULL) {
+			pcnEncoded, CBOR_CONTEXT_PARAM_COMMA nullptr);
+		if (hEnc == nullptr) {
 			if (fFailBody) {
 				return 0;
 			}
@@ -852,18 +851,18 @@
 	}
 
 	pkey = BuildKey(cn_cbor_mapget_string(pRecipients, "key"), true);
-	if (pkey == NULL) {
+	if (pkey == nullptr) {
 		goto returnError;
 	}
 
 	cn_cbor *k = cn_cbor_mapget_int(pkey, -1);
-	if (k == NULL) {
+	if (k == nullptr) {
 		fFail = true;
 		goto exitHere;
 	}
 
 	cn_cbor *alg =
-		COSE_Encrypt_map_get_int(hEnc, COSE_Header_Algorithm, COSE_BOTH, NULL);
+		COSE_Encrypt_map_get_int(hEnc, COSE_Header_Algorithm, COSE_BOTH, nullptr);
 	if (!IsAlgorithmSupported(alg)) {
 		fAlgSupport = false;
 		fFail = false;
@@ -871,25 +870,25 @@
 	}
 
 	pFail = cn_cbor_mapget_string(pRecipients, "fail");
-	if (COSE_Encrypt_decrypt(hEnc, k->v.bytes, k->length, NULL)) {
+	if (COSE_Encrypt_decrypt(hEnc, k->v.bytes, k->length, nullptr)) {
 		if (!fAlgSupport) {
 			fFail = true;
 			fAlgSupport = false;
 		}
-		else if ((pFail != NULL) && (pFail->type != CN_CBOR_TRUE)) {
+		else if ((pFail != nullptr) && (pFail->type != CN_CBOR_TRUE)) {
 			fFail = true;
 		}
 
 		size_t cb;
 		const byte *pb;
-		pb = COSE_Encrypt_GetContent(hEnc, &cb, NULL);
+		pb = COSE_Encrypt_GetContent(hEnc, &cb, nullptr);
 	}
 	else {
 		if (fAlgSupport) {
 			fFail = true;
 			fAlgSupport = false;
 		}
-		else if ((pFail == NULL) || (pFail->type == CN_CBOR_FALSE)) {
+		else if ((pFail == nullptr) || (pFail->type == CN_CBOR_FALSE)) {
 			fFail = true;
 		}
 	}
@@ -899,10 +898,10 @@
 
 	//  Validate counter signatures on signers
 	cn_cbor *countersignList = cn_cbor_mapget_string(pEncrypt, "countersign");
-	if (countersignList != NULL) {
+	if (countersignList != nullptr) {
 		cn_cbor *countersigners =
 			cn_cbor_mapget_string(countersignList, "signers");
-		if (countersigners == NULL) {
+		if (countersigners == nullptr) {
 			fFail = true;
 			goto exitHere;
 		}
@@ -910,7 +909,7 @@
 		bool forward = true;
 
 		if (COSE_Encrypt_map_get_int(hEnc, COSE_Header_CounterSign,
-				COSE_UNPROTECT_ONLY, 0) == NULL) {
+				COSE_UNPROTECT_ONLY, 0) == nullptr) {
 			goto returnError;
 		}
 
@@ -920,7 +919,7 @@
 
 			HCOSE_COUNTERSIGN h =
 				COSE_Encrypt0_get_countersignature(hEnc, counterNo, 0);
-			if (h == NULL) {
+			if (h == nullptr) {
 				fFail = true;
 				continue;
 			}
@@ -930,7 +929,7 @@
 
 			cn_cbor *pkeyCountersign =
 				BuildKey(cn_cbor_mapget_string(counterSigner, "key"), false);
-			if (pkeyCountersign == NULL) {
+			if (pkeyCountersign == nullptr) {
 				fFail = true;
 				COSE_CounterSign_Free(h);
 				continue;
@@ -944,7 +943,7 @@
 			}
 
 			alg = COSE_CounterSign_map_get_int(
-				h, COSE_Header_Algorithm, COSE_BOTH, NULL);
+				h, COSE_Header_Algorithm, COSE_BOTH, nullptr);
 			if (!IsAlgorithmSupported(alg)) {
 				noSupportSign = true;
 				fAlgSupport = false;
@@ -977,43 +976,43 @@
 	byte *pbEncoded = GetCBOREncoding(pControl, &cbEncoded);
 	int fRet;
 
-	fRet = _ValidateEncrypt(pControl, pbEncoded, cbEncoded, NULL);
+	fRet = _ValidateEncrypt(pControl, pbEncoded, cbEncoded, nullptr);
 	if (!fRet) {
 		return fRet;
 	}
 
 	cn_cbor *cbor =
-		cn_cbor_decode(pbEncoded, cbEncoded, CBOR_CONTEXT_PARAM_COMMA NULL);
-	if (cbor == NULL) {
+		cn_cbor_decode(pbEncoded, cbEncoded, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	if (cbor == nullptr) {
 		return false;
 	}
 
-	return _ValidateEncrypt(pControl, NULL, 0, cbor);
+	return _ValidateEncrypt(pControl, nullptr, 0, cbor);
 }
 
 int BuildEncryptMessage(const cn_cbor *pControl)
 {
-	cn_cbor *pkey = NULL;
+	cn_cbor *pkey = nullptr;
 	//
 	//  We don't run this for all control sequences - skip those marked fail.
 	//
 
 	const cn_cbor *pFail = cn_cbor_mapget_string(pControl, "fail");
-	if ((pFail != NULL) && (pFail->type == CN_CBOR_TRUE)) {
+	if ((pFail != nullptr) && (pFail->type == CN_CBOR_TRUE)) {
 		return 0;
 	}
 
 	HCOSE_ENCRYPT hEncObj =
-		COSE_Encrypt_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
+		COSE_Encrypt_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
 
 	const cn_cbor *pInputs = cn_cbor_mapget_string(pControl, "input");
-	if (pInputs == NULL) {
+	if (pInputs == nullptr) {
 	returnError:
-		if (hEncObj != NULL) {
+		if (hEncObj != nullptr) {
 			COSE_Encrypt_Free(hEncObj);
 		}
 
-		if (pkey != NULL) {
+		if (pkey != nullptr) {
 			CN_CBOR_FREE(pkey, context);
 		}
 
@@ -1021,13 +1020,13 @@
 		return 1;
 	}
 	const cn_cbor *pEncrypt = cn_cbor_mapget_string(pInputs, "encrypted");
-	if (pEncrypt == NULL) {
+	if (pEncrypt == nullptr) {
 		goto returnError;
 	}
 
 	const cn_cbor *pContent = cn_cbor_mapget_string(pInputs, "plaintext");
 	if (!COSE_Encrypt_SetContent(
-			hEncObj, pContent->v.bytes, pContent->length, NULL)) {
+			hEncObj, pContent->v.bytes, pContent->length, nullptr)) {
 		goto returnError;
 	}
 
@@ -1036,19 +1035,19 @@
 		goto returnError;
 	}
 
-	const cn_cbor *pAlg = COSE_Encrypt_map_get_int(hEncObj, 1, COSE_BOTH, NULL);
-	if (pAlg == NULL) {
+	const cn_cbor *pAlg = COSE_Encrypt_map_get_int(hEncObj, 1, COSE_BOTH, nullptr);
+	if (pAlg == nullptr) {
 		goto returnError;
 	}
 
 	const cn_cbor *pRecipients = cn_cbor_mapget_string(pEncrypt, "recipients");
-	if ((pRecipients == NULL) || (pRecipients->type != CN_CBOR_ARRAY)) {
+	if ((pRecipients == nullptr) || (pRecipients->type != CN_CBOR_ARRAY)) {
 		goto returnError;
 	}
 
 	pRecipients = pRecipients->first_child;
 	pkey = BuildKey(cn_cbor_mapget_string(pRecipients, "key"), false);
-	if (pkey == NULL) {
+	if (pkey == nullptr) {
 		goto returnError;
 	}
 
@@ -1057,20 +1056,20 @@
 #if INCLUDE_COUNTERSIGNATURE
 	// On the Encrypt0 body
 	cn_cbor *countersigns = cn_cbor_mapget_string(pEncrypt, "countersign");
-	if (countersigns != NULL) {
+	if (countersigns != nullptr) {
 		countersigns = cn_cbor_mapget_string(countersigns, "signers");
 		cn_cbor *countersign = countersigns->first_child;
 
-		for (; countersign != NULL; countersign = countersign->next) {
+		for (; countersign != nullptr; countersign = countersign->next) {
 			cn_cbor *pkeyCountersign =
 				BuildKey(cn_cbor_mapget_string(countersign, "key"), false);
-			if (pkeyCountersign == NULL) {
+			if (pkeyCountersign == nullptr) {
 				goto returnError;
 			}
 
 			HCOSE_COUNTERSIGN hCountersign =
-				COSE_CounterSign_Init(CBOR_CONTEXT_PARAM_COMMA NULL);
-			if (hCountersign == NULL) {
+				COSE_CounterSign_Init(CBOR_CONTEXT_PARAM_COMMA nullptr);
+			if (hCountersign == nullptr) {
 				goto returnError;
 			}
 
@@ -1080,13 +1079,13 @@
 				goto returnError;
 			}
 
-			if (!COSE_CounterSign_SetKey(hCountersign, pkeyCountersign, NULL)) {
+			if (!COSE_CounterSign_SetKey(hCountersign, pkeyCountersign, nullptr)) {
 				COSE_CounterSign_Free(hCountersign);
 				goto returnError;
 			}
 
 			if (!COSE_Encrypt0_add_countersignature(
-					hEncObj, hCountersign, NULL)) {
+					hEncObj, hCountersign, nullptr)) {
 				COSE_CounterSign_Free(hCountersign);
 				goto returnError;
 			}
@@ -1097,19 +1096,19 @@
 
 #endif
 
-	if (!COSE_Encrypt_encrypt(hEncObj, k->v.bytes, k->length, NULL)) {
+	if (!COSE_Encrypt_encrypt(hEncObj, k->v.bytes, k->length, nullptr)) {
 		goto returnError;
 	}
 
-	size_t cb = COSE_Encode((HCOSE)hEncObj, NULL, 0, 0) + 1;
+	size_t cb = COSE_Encode((HCOSE)hEncObj, nullptr, 0, 0) + 1;
 	byte *rgb = (byte *)malloc(cb);
 	cb = COSE_Encode((HCOSE)hEncObj, rgb, 0, cb);
 
 	COSE_Encrypt_Free(hEncObj);
 
-	int f = _ValidateEncrypt(pControl, rgb, cb, NULL);
+	int f = _ValidateEncrypt(pControl, rgb, cb, nullptr);
 
-	if (pkey != NULL) {
+	if (pkey != nullptr) {
 		CN_CBOR_FREE(pkey, context);
 	}
 
@@ -1121,29 +1120,29 @@
 #if INCLUDE_ENCRYPT
 void Enveloped_Corners()
 {
-	HCOSE_ENVELOPED hEncryptNULL = NULL;
-	HCOSE_ENVELOPED hEncrypt = NULL;
-	HCOSE_ENVELOPED hEncryptBad = NULL;
-	HCOSE_RECIPIENT hRecipientNULL = NULL;
-	HCOSE_RECIPIENT hRecipient = NULL;
-	HCOSE_RECIPIENT hRecipientBad = NULL;
+	HCOSE_ENVELOPED hEncryptNULL = nullptr;
+	HCOSE_ENVELOPED hEncrypt = nullptr;
+	HCOSE_ENVELOPED hEncryptBad = nullptr;
+	HCOSE_RECIPIENT hRecipientNULL = nullptr;
+	HCOSE_RECIPIENT hRecipient = nullptr;
+	HCOSE_RECIPIENT hRecipientBad = nullptr;
 	byte rgb[10];
-	cn_cbor *cn = cn_cbor_int_create(5, CBOR_CONTEXT_PARAM_COMMA NULL);
+	cn_cbor *cn = cn_cbor_int_create(5, CBOR_CONTEXT_PARAM_COMMA nullptr);
 	cose_errback cose_error;
 
 	hEncrypt = COSE_Enveloped_Init(
-		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
+		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
 #if INCLUDE_MAC
 	hEncryptBad = (HCOSE_ENVELOPED)COSE_Mac_Init(
-		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
+		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
 #else
 	hEncryptBad = (HCOSE_ENVELOPED)COSE_CALLOC(1, sizeof(COSE), context);
 #endif
 	hRecipient = COSE_Recipient_Init(
-		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
+		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
 #if INCLUDE_MAC
 	hRecipientBad = (HCOSE_RECIPIENT)COSE_Mac_Init(
-		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
+		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
 #else
 	hRecipientBad = (HCOSE_RECIPIENT)COSE_CALLOC(1, sizeof(COSE), context);
 #endif
@@ -1152,16 +1151,16 @@
 
 	//
 	//  Do parameter checks
-	//      - NULL handle
+	//      - nullptr handle
 	//      - Incorrect handle
-	//      - NULL pointer
+	//      - nullptr pointer
 	//
 
 	CHECK_FAILURE(COSE_Enveloped_SetContent(hEncryptNULL, rgb, 10, &cose_error),
 		COSE_ERR_INVALID_HANDLE, CFails++);
 	CHECK_FAILURE(COSE_Enveloped_SetContent(hEncryptBad, rgb, 10, &cose_error),
 		COSE_ERR_INVALID_HANDLE, CFails++);
-	CHECK_FAILURE(COSE_Enveloped_SetContent(hEncrypt, NULL, 10, &cose_error),
+	CHECK_FAILURE(COSE_Enveloped_SetContent(hEncrypt, nullptr, 10, &cose_error),
 		COSE_ERR_INVALID_PARAMETER, CFails++);
 
 	CHECK_FAILURE(COSE_Enveloped_map_put_int(
@@ -1174,7 +1173,7 @@
 					  COSE_PROTECT_ONLY | COSE_UNPROTECT_ONLY, &cose_error),
 		COSE_ERR_INVALID_PARAMETER, CFails++);
 	CHECK_FAILURE(COSE_Enveloped_map_put_int(
-					  hEncrypt, 1, NULL, COSE_PROTECT_ONLY, &cose_error),
+					  hEncrypt, 1, nullptr, COSE_PROTECT_ONLY, &cose_error),
 		COSE_ERR_INVALID_PARAMETER, CFails++);
 
 	CHECK_FAILURE(
@@ -1221,7 +1220,7 @@
 		COSE_ERR_INVALID_HANDLE, CFails++);
 	CHECK_FAILURE(COSE_Enveloped_SetExternal(hEncryptBad, rgb, 10, &cose_error),
 		COSE_ERR_INVALID_HANDLE, CFails++);
-	CHECK_FAILURE(COSE_Enveloped_SetExternal(hEncrypt, NULL, 10, &cose_error),
+	CHECK_FAILURE(COSE_Enveloped_SetExternal(hEncrypt, nullptr, 10, &cose_error),
 		COSE_ERR_INVALID_PARAMETER, CFails++);
 
 	if (!COSE_Enveloped_Free(hEncrypt)) {
@@ -1237,20 +1236,20 @@
 	//  Bad Int algorithm
 
 	hEncrypt = COSE_Enveloped_Init(
-		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
-	if (hEncrypt == NULL) {
+		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	if (hEncrypt == nullptr) {
 		CFails++;
 	}
 	CHECK_RETURN(
 		COSE_Enveloped_SetContent(hEncrypt, (byte *)"Message", 7, &cose_error),
 		COSE_ERR_NONE, CFails++);
 	CHECK_RETURN(COSE_Enveloped_map_put_int(hEncrypt, COSE_Header_Algorithm,
-					 cn_cbor_int_create(-99, CBOR_CONTEXT_PARAM_COMMA NULL),
+					 cn_cbor_int_create(-99, CBOR_CONTEXT_PARAM_COMMA nullptr),
 					 COSE_PROTECT_ONLY, &cose_error),
 		COSE_ERR_NONE, CFails++);
 	hRecipient = COSE_Recipient_from_shared_secret(
-		rgb, sizeof(rgb), rgb, sizeof(rgb), CBOR_CONTEXT_PARAM_COMMA NULL);
-	if (hRecipient == NULL) {
+		rgb, sizeof(rgb), rgb, sizeof(rgb), CBOR_CONTEXT_PARAM_COMMA nullptr);
+	if (hRecipient == nullptr) {
 		CFails++;
 	}
 	CHECK_RETURN(COSE_Enveloped_AddRecipient(hEncrypt, hRecipient, &cose_error),
@@ -1261,8 +1260,8 @@
 	COSE_Enveloped_Free(hEncrypt);
 
 	hEncrypt = COSE_Enveloped_Init(
-		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
-	if (hEncrypt == NULL) {
+		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	if (hEncrypt == nullptr) {
 		CFails++;
 	}
 	CHECK_RETURN(
@@ -1270,12 +1269,12 @@
 		COSE_ERR_NONE, CFails++);
 	CHECK_RETURN(
 		COSE_Enveloped_map_put_int(hEncrypt, COSE_Header_Algorithm,
-			cn_cbor_string_create("hmac", CBOR_CONTEXT_PARAM_COMMA NULL),
+			cn_cbor_string_create("hmac", CBOR_CONTEXT_PARAM_COMMA nullptr),
 			COSE_PROTECT_ONLY, &cose_error),
 		COE_ERR_NONE, CFails++);
 	hRecipient = COSE_Recipient_from_shared_secret(
-		rgb, sizeof(rgb), rgb, sizeof(rgb), CBOR_CONTEXT_PARAM_COMMA NULL);
-	if (hRecipient == NULL) {
+		rgb, sizeof(rgb), rgb, sizeof(rgb), CBOR_CONTEXT_PARAM_COMMA nullptr);
+	if (hRecipient == nullptr) {
 		CFails++;
 	}
 	CHECK_RETURN(COSE_Enveloped_AddRecipient(hEncrypt, hRecipient, &cose_error),
@@ -1299,31 +1298,31 @@
 #if INCLUDE_ENCRYPT0
 void Encrypt_Corners()
 {
-	HCOSE_ENCRYPT hEncrypt = NULL;
+	HCOSE_ENCRYPT hEncrypt = nullptr;
 	byte rgb[10];
-	cn_cbor *cn = cn_cbor_int_create(5, CBOR_CONTEXT_PARAM_COMMA NULL);
+	cn_cbor *cn = cn_cbor_int_create(5, CBOR_CONTEXT_PARAM_COMMA nullptr);
 	cose_errback cose_error;
 
 	//  Missing case - addref then release on item
 
-	//  NULL Handle checks
+	//  nullptr Handle checks
 
-	if (COSE_Encrypt_SetContent(hEncrypt, rgb, 10, NULL)) {
+	if (COSE_Encrypt_SetContent(hEncrypt, rgb, 10, nullptr)) {
 		CFails++;
 	}
-	if (COSE_Encrypt_map_get_int(hEncrypt, 1, COSE_BOTH, NULL)) {
+	if (COSE_Encrypt_map_get_int(hEncrypt, 1, COSE_BOTH, nullptr)) {
 		CFails++;
 	}
-	if (COSE_Encrypt_map_put_int(hEncrypt, 1, cn, COSE_PROTECT_ONLY, NULL)) {
+	if (COSE_Encrypt_map_put_int(hEncrypt, 1, cn, COSE_PROTECT_ONLY, nullptr)) {
 		CFails++;
 	}
-	if (COSE_Encrypt_SetExternal(hEncrypt, rgb, 10, NULL)) {
+	if (COSE_Encrypt_SetExternal(hEncrypt, rgb, 10, nullptr)) {
 		CFails++;
 	}
-	if (COSE_Encrypt_encrypt(hEncrypt, rgb, sizeof(rgb), NULL)) {
+	if (COSE_Encrypt_encrypt(hEncrypt, rgb, sizeof(rgb), nullptr)) {
 		CFails++;
 	}
-	if (COSE_Encrypt_decrypt(hEncrypt, rgb, sizeof(rgb), NULL)) {
+	if (COSE_Encrypt_decrypt(hEncrypt, rgb, sizeof(rgb), nullptr)) {
 		CFails++;
 	}
 	if (COSE_Encrypt_Free((HCOSE_ENCRYPT)hEncrypt)) {
@@ -1334,27 +1333,27 @@
 
 #if INCLUDE_MAC
 	hEncrypt = (HCOSE_ENCRYPT)COSE_Mac_Init(
-		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
+		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
 #else
 	hEncrypt = (HCOSE_ENCRYPT)COSE_CALLOC(1, sizeof(COSE), context);
 #endif
 
-	if (COSE_Encrypt_SetContent(hEncrypt, rgb, 10, NULL)) {
+	if (COSE_Encrypt_SetContent(hEncrypt, rgb, 10, nullptr)) {
 		CFails++;
 	}
-	if (COSE_Encrypt_map_get_int(hEncrypt, 1, COSE_BOTH, NULL)) {
+	if (COSE_Encrypt_map_get_int(hEncrypt, 1, COSE_BOTH, nullptr)) {
 		CFails++;
 	}
-	if (COSE_Encrypt_map_put_int(hEncrypt, 1, cn, COSE_PROTECT_ONLY, NULL)) {
+	if (COSE_Encrypt_map_put_int(hEncrypt, 1, cn, COSE_PROTECT_ONLY, nullptr)) {
 		CFails++;
 	}
-	if (COSE_Encrypt_encrypt(hEncrypt, rgb, sizeof(rgb), NULL)) {
+	if (COSE_Encrypt_encrypt(hEncrypt, rgb, sizeof(rgb), nullptr)) {
 		CFails++;
 	}
-	if (COSE_Encrypt_SetExternal(hEncrypt, rgb, 10, NULL)) {
+	if (COSE_Encrypt_SetExternal(hEncrypt, rgb, 10, nullptr)) {
 		CFails++;
 	}
-	if (COSE_Encrypt_decrypt(hEncrypt, rgb, sizeof(rgb), NULL)) {
+	if (COSE_Encrypt_decrypt(hEncrypt, rgb, sizeof(rgb), nullptr)) {
 		CFails++;
 	}
 	if (COSE_Encrypt_Free(hEncrypt)) {
@@ -1365,16 +1364,16 @@
 	//  Unsupported algorithm
 
 	hEncrypt =
-		COSE_Encrypt_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
-	if (hEncrypt == NULL) {
+		COSE_Encrypt_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	if (hEncrypt == nullptr) {
 		CFails++;
 	}
-	if (!COSE_Encrypt_SetContent(hEncrypt, (byte *)"Message", 7, NULL)) {
+	if (!COSE_Encrypt_SetContent(hEncrypt, (byte *)"Message", 7, nullptr)) {
 		CFails++;
 	}
 	if (!COSE_Encrypt_map_put_int(hEncrypt, COSE_Header_Algorithm,
-			cn_cbor_int_create(-99, CBOR_CONTEXT_PARAM_COMMA NULL),
-			COSE_PROTECT_ONLY, NULL)) {
+			cn_cbor_int_create(-99, CBOR_CONTEXT_PARAM_COMMA nullptr),
+			COSE_PROTECT_ONLY, nullptr)) {
 		CFails++;
 	}
 	CHECK_FAILURE(COSE_Encrypt_encrypt(hEncrypt, rgb, sizeof(rgb), &cose_error),
@@ -1382,16 +1381,16 @@
 	COSE_Encrypt_Free(hEncrypt);
 
 	hEncrypt =
-		COSE_Encrypt_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
-	if (hEncrypt == NULL) {
+		COSE_Encrypt_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	if (hEncrypt == nullptr) {
 		CFails++;
 	}
-	if (!COSE_Encrypt_SetContent(hEncrypt, (byte *)"Message", 7, NULL)) {
+	if (!COSE_Encrypt_SetContent(hEncrypt, (byte *)"Message", 7, nullptr)) {
 		CFails++;
 	}
 	if (!COSE_Encrypt_map_put_int(hEncrypt, COSE_Header_Algorithm,
-			cn_cbor_int_create(-99, CBOR_CONTEXT_PARAM_COMMA NULL),
-			COSE_PROTECT_ONLY, NULL)) {
+			cn_cbor_int_create(-99, CBOR_CONTEXT_PARAM_COMMA nullptr),
+			COSE_PROTECT_ONLY, nullptr)) {
 		CFails++;
 	}
 	CHECK_FAILURE(COSE_Encrypt_encrypt(hEncrypt, rgb, sizeof(rgb), &cose_error),
@@ -1404,11 +1403,11 @@
 void Recipient_Corners()
 {
 	HCOSE_RECIPIENT hRecip;
-	HCOSE_RECIPIENT hRecipNULL = NULL;
+	HCOSE_RECIPIENT hRecipNULL = nullptr;
 	HCOSE_RECIPIENT hRecipBad;
 	cose_errback cose_error;
 	byte rgb[10];
-	cn_cbor *cn = cn_cbor_int_create(1, CBOR_CONTEXT_PARAM_COMMA NULL);
+	cn_cbor *cn = cn_cbor_int_create(1, CBOR_CONTEXT_PARAM_COMMA nullptr);
 
 	hRecip = COSE_Recipient_Init(
 		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA & cose_error);
@@ -1421,32 +1420,32 @@
 
 	//  Check for invalid parameters
 
-	CHECK_FAILURE_PTR(COSE_Recipient_from_shared_secret(NULL, 0, NULL, 0,
+	CHECK_FAILURE_PTR(COSE_Recipient_from_shared_secret(nullptr, 0, nullptr, 0,
 						  CBOR_CONTEXT_PARAM_COMMA & cose_error),
 		COSE_ERR_INVALID_PARAMETER, CFails++);
 
 	CHECK_FAILURE(COSE_Recipient_SetKey_secret(
-					  hRecipNULL, rgb, sizeof(rgb), NULL, 0, &cose_error),
+					  hRecipNULL, rgb, sizeof(rgb), nullptr, 0, &cose_error),
 		COSE_ERR_INVALID_HANDLE, CFails++);
 	CHECK_FAILURE(COSE_Recipient_SetKey_secret(
-					  hRecipBad, rgb, sizeof(rgb), NULL, 0, &cose_error),
+					  hRecipBad, rgb, sizeof(rgb), nullptr, 0, &cose_error),
 		COSE_ERR_INVALID_HANDLE, CFails++);
 	CHECK_FAILURE(COSE_Recipient_SetKey_secret(
-					  hRecip, NULL, sizeof(rgb), NULL, 0, &cose_error),
+					  hRecip, nullptr, sizeof(rgb), nullptr, 0, &cose_error),
 		COSE_ERR_INVALID_PARAMETER, CFails++);
 
 	CHECK_FAILURE(COSE_Recipient_SetKey(hRecipNULL, cn, &cose_error),
 		COSE_ERR_INVALID_HANDLE, CFails++);
 	CHECK_FAILURE(COSE_Recipient_SetKey(hRecipBad, cn, &cose_error),
 		COSE_ERR_INVALID_HANDLE, CFails++);
-	CHECK_FAILURE(COSE_Recipient_SetKey(hRecip, NULL, &cose_error),
+	CHECK_FAILURE(COSE_Recipient_SetKey(hRecip, nullptr, &cose_error),
 		COSE_ERR_INVALID_PARAMETER, CFails++);
 
 	CHECK_FAILURE(COSE_Recipient_SetSenderKey(hRecipNULL, cn, 0, &cose_error),
 		COSE_ERR_INVALID_HANDLE, CFails++);
 	CHECK_FAILURE(COSE_Recipient_SetSenderKey(hRecipBad, cn, 0, &cose_error),
 		COSE_ERR_INVALID_HANDLE, CFails++);
-	CHECK_FAILURE(COSE_Recipient_SetSenderKey(hRecip, NULL, 0, &cose_error),
+	CHECK_FAILURE(COSE_Recipient_SetSenderKey(hRecip, nullptr, 0, &cose_error),
 		COSE_ERR_INVALID_PARAMETER, CFails++);
 	CHECK_FAILURE(COSE_Recipient_SetSenderKey(hRecip, cn, 3, &cose_error),
 		COSE_ERR_INVALID_PARAMETER, CFails++);
@@ -1474,7 +1473,7 @@
 					  hRecipBad, 1, cn, COSE_PROTECT_ONLY, &cose_error),
 		COSE_ERR_INVALID_HANDLE, CFails++);
 	CHECK_FAILURE(COSE_Recipient_map_put_int(
-					  hRecip, 1, NULL, COSE_PROTECT_ONLY, &cose_error),
+					  hRecip, 1, nullptr, COSE_PROTECT_ONLY, &cose_error),
 		COSE_ERR_INVALID_PARAMETER, CFails++);
 	CHECK_FAILURE(COSE_Recipient_map_put_int(hRecip, 1, cn,
 					  COSE_PROTECT_ONLY | COSE_UNPROTECT_ONLY, &cose_error),
@@ -1494,20 +1493,20 @@
 	//  Unknown algorithms
 #if INCLUDE_ENCRYPT
 	HCOSE_ENVELOPED hEnv = COSE_Enveloped_Init(
-		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
+		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
 	hRecip = COSE_Recipient_Init(
-		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
+		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
 
 	CHECK_RETURN(COSE_Enveloped_map_put_int(hEnv, COSE_Header_Algorithm,
 					 cn_cbor_int_create(COSE_Algorithm_AES_GCM_128,
-						 CBOR_CONTEXT_PARAM_COMMA NULL),
+						 CBOR_CONTEXT_PARAM_COMMA nullptr),
 					 COSE_PROTECT_ONLY, &cose_error),
 		COSE_ERR_NONE, CFails++);
 	CHECK_RETURN(COSE_Enveloped_SetContent(
 					 hEnv, (byte *)"This the body", 13, &cose_error),
 		COSE_ERR_NONE, CFails++);
 	CHECK_RETURN(COSE_Recipient_map_put_int(hRecip, COSE_Header_Algorithm,
-					 cn_cbor_int_create(-99, CBOR_CONTEXT_PARAM_COMMA NULL),
+					 cn_cbor_int_create(-99, CBOR_CONTEXT_PARAM_COMMA nullptr),
 					 COSE_UNPROTECT_ONLY, &cose_error),
 		COSE_ERR_NONE, CFails++);
 	CHECK_RETURN(COSE_Enveloped_AddRecipient(hEnv, hRecip, &cose_error),
@@ -1519,13 +1518,13 @@
 	COSE_Recipient_Free(hRecip);
 
 	hEnv = COSE_Enveloped_Init(
-		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
+		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
 	hRecip = COSE_Recipient_Init(
-		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
+		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
 
 	CHECK_RETURN(COSE_Enveloped_map_put_int(hEnv, COSE_Header_Algorithm,
 					 cn_cbor_int_create(COSE_Algorithm_AES_GCM_128,
-						 CBOR_CONTEXT_PARAM_COMMA NULL),
+						 CBOR_CONTEXT_PARAM_COMMA nullptr),
 					 COSE_PROTECT_ONLY, &cose_error),
 		COSE_ERR_NONE, CFails++);
 	CHECK_RETURN(COSE_Enveloped_SetContent(
@@ -1533,7 +1532,7 @@
 		COSE_ERR_NONE, CFails++);
 	CHECK_RETURN(
 		COSE_Recipient_map_put_int(hRecip, COSE_Header_Algorithm,
-			cn_cbor_string_create("Unknown", CBOR_CONTEXT_PARAM_COMMA NULL),
+			cn_cbor_string_create("Unknown", CBOR_CONTEXT_PARAM_COMMA nullptr),
 			COSE_UNPROTECT_ONLY, &cose_error),
 		COSE_ERR_NONE, CFails++);
 	CHECK_RETURN(COSE_Enveloped_AddRecipient(hEnv, hRecip, &cose_error),
diff --git a/test/Mac_test.cpp b/test/Mac_test.cpp
index c6fdc57..d3968a5 100644
--- a/test/Mac_test.cpp
+++ b/test/Mac_test.cpp
@@ -35,13 +35,13 @@
 	cose_errback error;
 
 	pFail = cn_cbor_mapget_string(pControl, "fail");
-	if ((pFail != NULL) && (pFail->type == CN_CBOR_TRUE)) {
+	if ((pFail != nullptr) && (pFail->type == CN_CBOR_TRUE)) {
 		fFailBody = true;
 	}
 
 	hMAC = (HCOSE_MAC)COSE_Decode(pbEncoded, cbEncoded, &type, COSE_mac_object,
-		CBOR_CONTEXT_PARAM_COMMA NULL);
-	if (hMAC == NULL) {
+		CBOR_CONTEXT_PARAM_COMMA nullptr);
+	if (hMAC == nullptr) {
 		if (fFailBody) {
 			return 0;
 		}
@@ -51,11 +51,11 @@
 		return 0;
 	}
 
-	if ((pInput == NULL) || (pInput->type != CN_CBOR_MAP)) {
+	if ((pInput == nullptr) || (pInput->type != CN_CBOR_MAP)) {
 		goto failTest;
 	}
 	pMac = cn_cbor_mapget_string(pInput, "mac");
-	if ((pMac == NULL) || (pMac->type != CN_CBOR_MAP)) {
+	if ((pMac == nullptr) || (pMac->type != CN_CBOR_MAP)) {
 		goto failTest;
 	}
 
@@ -64,23 +64,23 @@
 	}
 
 	pRecipients = cn_cbor_mapget_string(pMac, "recipients");
-	if ((pRecipients == NULL) || (pRecipients->type != CN_CBOR_ARRAY)) {
+	if ((pRecipients == nullptr) || (pRecipients->type != CN_CBOR_ARRAY)) {
 		goto failTest;
 	}
 
 	iRecipient = (int)pRecipients->length - 1;
 	pRecipients = pRecipients->first_child;
-	for (; pRecipients != NULL; iRecipient--, pRecipients = pRecipients->next) {
+	for (; pRecipients != nullptr; iRecipient--, pRecipients = pRecipients->next) {
 		fAlgNoSupport = false;
 		cn_cbor *pkey =
 			BuildKey(cn_cbor_mapget_string(pRecipients, "key"), false);
-		if (pkey == NULL) {
+		if (pkey == nullptr) {
 			fFail = true;
 			continue;
 		}
 
-		HCOSE_RECIPIENT hRecip = COSE_Mac_GetRecipient(hMAC, iRecipient, NULL);
-		if (hRecip == NULL) {
+		HCOSE_RECIPIENT hRecip = COSE_Mac_GetRecipient(hMAC, iRecipient, nullptr);
+		if (hRecip == nullptr) {
 			fFail = true;
 			continue;
 		}
@@ -91,31 +91,31 @@
 			goto failTest;
 		}
 
-		if (!COSE_Recipient_SetKey(hRecip, pkey, NULL)) {
+		if (!COSE_Recipient_SetKey(hRecip, pkey, nullptr)) {
 			fFail = true;
 			COSE_Recipient_Free(hRecip);
 			continue;
 		}
 
 		cn_cbor *cnStatic = cn_cbor_mapget_string(pRecipients, "sender_key");
-		if (cnStatic != NULL) {
+		if (cnStatic != nullptr) {
 			if (COSE_Recipient_map_get_int(
-					hRecip, COSE_Header_ECDH_SPK, COSE_BOTH, NULL) == 0) {
+					hRecip, COSE_Header_ECDH_SPK, COSE_BOTH, nullptr) == 0) {
 				COSE_Recipient_map_put_int(hRecip, COSE_Header_ECDH_SPK,
-					BuildKey(cnStatic, true), COSE_DONT_SEND, NULL);
+					BuildKey(cnStatic, true), COSE_DONT_SEND, nullptr);
 			}
 		}
 
 		pFail = cn_cbor_mapget_string(pRecipients, "fail");
 
 		cn_cbor *alg =
-			COSE_Mac_map_get_int(hMAC, COSE_Header_Algorithm, COSE_BOTH, NULL);
+			COSE_Mac_map_get_int(hMAC, COSE_Header_Algorithm, COSE_BOTH, nullptr);
 		if (!IsAlgorithmSupported(alg)) {
 			fAlgNoSupport = true;
 		}
 
 		alg = COSE_Recipient_map_get_int(
-			hRecip, COSE_Header_Algorithm, COSE_BOTH, NULL);
+			hRecip, COSE_Header_Algorithm, COSE_BOTH, nullptr);
 		if (!IsAlgorithmSupported(alg)) {
 			fAlgNoSupport = true;
 		}
@@ -124,7 +124,7 @@
 			if (fAlgNoSupport) {
 				fFail = true;
 			}
-			else if ((pFail != NULL) && (pFail->type != CN_CBOR_TRUE)) {
+			else if ((pFail != nullptr) && (pFail->type != CN_CBOR_TRUE)) {
 				fFail = true;
 			}
 		}
@@ -137,7 +137,7 @@
 			else if (fAlgNoSupport) {
 				returnCode = 0;
 			}
-			else if ((pFail == NULL) || (pFail->type == CN_CBOR_FALSE)) {
+			else if ((pFail == nullptr) || (pFail->type == CN_CBOR_FALSE)) {
 				fFail = true;
 			}
 		}
@@ -148,10 +148,10 @@
 		//  Validate counter signatures on signers
 		cn_cbor *countersignList =
 			cn_cbor_mapget_string(pRecipients, "countersign");
-		if (countersignList != NULL) {
+		if (countersignList != nullptr) {
 			cn_cbor *countersigners =
 				cn_cbor_mapget_string(countersignList, "signers");
-			if (countersigners == NULL) {
+			if (countersigners == nullptr) {
 				COSE_Recipient_Free(hRecip);
 				goto failTest;
 			}
@@ -159,7 +159,7 @@
 			bool forward = true;
 
 			if (COSE_Recipient_map_get_int(hRecip, COSE_Header_CounterSign,
-					COSE_UNPROTECT_ONLY, 0) == NULL) {
+					COSE_UNPROTECT_ONLY, 0) == nullptr) {
 				COSE_Recipient_Free(hRecip);
 				goto failTest;
 			}
@@ -168,12 +168,12 @@
 				bool noSignSupport = false;
 				HCOSE_COUNTERSIGN h =
 					COSE_Recipient_get_countersignature(hRecip, counterNo, 0);
-				if (h == NULL) {
+				if (h == nullptr) {
 					continue;
 				}
 
 				alg = COSE_CounterSign_map_get_int(
-					h, COSE_Header_Algorithm, COSE_BOTH, NULL);
+					h, COSE_Header_Algorithm, COSE_BOTH, nullptr);
 				if (!IsAlgorithmSupported(alg)) {
 					fAlgNoSupport = true;
 					noSignSupport = true;
@@ -185,7 +185,7 @@
 
 				cn_cbor *pkeyCountersign = BuildKey(
 					cn_cbor_mapget_string(counterSigner, "key"), false);
-				if (pkeyCountersign == NULL) {
+				if (pkeyCountersign == nullptr) {
 					fFail = true;
 					COSE_CounterSign_Free(h);
 					continue;
@@ -224,17 +224,17 @@
 
 	//  Validate counter signatures on signers
 	cn_cbor *countersignList = cn_cbor_mapget_string(pMac, "countersign");
-	if (countersignList != NULL) {
+	if (countersignList != nullptr) {
 		cn_cbor *countersigners =
 			cn_cbor_mapget_string(countersignList, "signers");
-		if (countersigners == NULL) {
+		if (countersigners == nullptr) {
 			goto failTest;
 		}
 		int count = countersigners->length;
 		bool forward = true;
 
 		if (COSE_Mac_map_get_int(hMAC, COSE_Header_CounterSign,
-				COSE_UNPROTECT_ONLY, 0) == NULL) {
+				COSE_UNPROTECT_ONLY, 0) == nullptr) {
 			goto failTest;
 		}
 
@@ -243,7 +243,7 @@
 
 			HCOSE_COUNTERSIGN h =
 				COSE_Mac_get_countersignature(hMAC, counterNo, 0);
-			if (h == NULL) {
+			if (h == nullptr) {
 				fFail = true;
 				continue;
 			}
@@ -253,7 +253,7 @@
 
 			cn_cbor *pkeyCountersign =
 				BuildKey(cn_cbor_mapget_string(counterSigner, "key"), false);
-			if (pkeyCountersign == NULL) {
+			if (pkeyCountersign == nullptr) {
 				fFail = true;
 				COSE_CounterSign_Free(h);
 				continue;
@@ -267,7 +267,7 @@
 			}
 
 			cn_cbor *alg = COSE_CounterSign_map_get_int(
-				h, COSE_Header_Algorithm, COSE_BOTH, NULL);
+				h, COSE_Header_Algorithm, COSE_BOTH, nullptr);
 			if (!IsAlgorithmSupported(alg)) {
 				fAlgNoSupport = true;
 				noSignSupport = true;
@@ -320,40 +320,40 @@
 int BuildMacMessage(const cn_cbor *pControl)
 {
 	int iRecipient = 0;
-	HCOSE_RECIPIENT hRecip = NULL;
+	HCOSE_RECIPIENT hRecip = nullptr;
 
 	//
 	//  We don't run this for all control sequences - skip those marked fail.
 	//
 
 	const cn_cbor *pFail = cn_cbor_mapget_string(pControl, "fail");
-	if ((pFail != NULL) && (pFail->type == CN_CBOR_TRUE)) {
+	if ((pFail != nullptr) && (pFail->type == CN_CBOR_TRUE)) {
 		return 0;
 	}
 
 	HCOSE_MAC hMacObj =
-		COSE_Mac_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
+		COSE_Mac_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
 
 	const cn_cbor *pInputs = cn_cbor_mapget_string(pControl, "input");
-	if (pInputs == NULL) {
+	if (pInputs == nullptr) {
 	returnError:
-		if (hMacObj != NULL) {
+		if (hMacObj != nullptr) {
 			COSE_Mac_Free(hMacObj);
 		}
-		if (hRecip != NULL) {
+		if (hRecip != nullptr) {
 			COSE_Recipient_Free(hRecip);
 		}
 		CFails += 1;
 		return 1;
 	}
 	const cn_cbor *pMac = cn_cbor_mapget_string(pInputs, "mac");
-	if (pMac == NULL) {
+	if (pMac == nullptr) {
 		goto returnError;
 	}
 
 	const cn_cbor *pContent = cn_cbor_mapget_string(pInputs, "plaintext");
 	if (!COSE_Mac_SetContent(
-			hMacObj, pContent->v.bytes, pContent->length, NULL)) {
+			hMacObj, pContent->v.bytes, pContent->length, nullptr)) {
 		goto returnError;
 	}
 
@@ -362,22 +362,22 @@
 	}
 
 	const cn_cbor *pRecipients = cn_cbor_mapget_string(pMac, "recipients");
-	if ((pRecipients == NULL) || (pRecipients->type != CN_CBOR_ARRAY)) {
+	if ((pRecipients == nullptr) || (pRecipients->type != CN_CBOR_ARRAY)) {
 		goto returnError;
 	}
 
 	pRecipients = pRecipients->first_child;
-	for (iRecipient = 0; pRecipients != NULL;
+	for (iRecipient = 0; pRecipients != nullptr;
 		 iRecipient++, pRecipients = pRecipients->next) {
 		cn_cbor *pkey =
 			BuildKey(cn_cbor_mapget_string(pRecipients, "key"), true);
-		if (pkey == NULL) {
+		if (pkey == nullptr) {
 			goto returnError;
 		}
 
 		hRecip = COSE_Recipient_Init(
-			COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
-		if (hRecip == NULL) {
+			COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
+		if (hRecip == nullptr) {
 			goto returnError;
 		}
 
@@ -386,19 +386,19 @@
 			goto returnError;
 		}
 
-		if (!COSE_Recipient_SetKey(hRecip, pkey, NULL)) {
+		if (!COSE_Recipient_SetKey(hRecip, pkey, nullptr)) {
 			goto returnError;
 		}
 
 		cn_cbor *pSenderKey = cn_cbor_mapget_string(pRecipients, "sender_key");
-		if (pSenderKey != NULL) {
+		if (pSenderKey != nullptr) {
 			cn_cbor *pSendKey = BuildKey(pSenderKey, false);
-			if (!COSE_Recipient_SetSenderKey(hRecip, pSendKey, 2, NULL)) {
+			if (!COSE_Recipient_SetSenderKey(hRecip, pSendKey, 2, nullptr)) {
 				goto returnError;
 			}
 		}
 
-		if (!COSE_Mac_AddRecipient(hMacObj, hRecip, NULL)) {
+		if (!COSE_Mac_AddRecipient(hMacObj, hRecip, nullptr)) {
 			goto returnError;
 		}
 
@@ -406,20 +406,20 @@
 		// On the Recipient
 		cn_cbor *countersigns1 =
 			cn_cbor_mapget_string(pRecipients, "countersign");
-		if (countersigns1 != NULL) {
+		if (countersigns1 != nullptr) {
 			countersigns1 = cn_cbor_mapget_string(countersigns1, "signers");
 			cn_cbor *countersign = countersigns1->first_child;
 
-			for (; countersign != NULL; countersign = countersign->next) {
+			for (; countersign != nullptr; countersign = countersign->next) {
 				cn_cbor *pkeyCountersign =
 					BuildKey(cn_cbor_mapget_string(countersign, "key"), false);
-				if (pkeyCountersign == NULL) {
+				if (pkeyCountersign == nullptr) {
 					goto returnError;
 				}
 
 				HCOSE_COUNTERSIGN hCountersign =
-					COSE_CounterSign_Init(CBOR_CONTEXT_PARAM_COMMA NULL);
-				if (hCountersign == NULL) {
+					COSE_CounterSign_Init(CBOR_CONTEXT_PARAM_COMMA nullptr);
+				if (hCountersign == nullptr) {
 					goto returnError;
 				}
 
@@ -429,12 +429,12 @@
 				}
 
 				if (!COSE_CounterSign_SetKey(
-						hCountersign, pkeyCountersign, NULL)) {
+						hCountersign, pkeyCountersign, nullptr)) {
 					goto returnError;
 				}
 
 				if (!COSE_Recipient_add_countersignature(
-						hRecip, hCountersign, NULL)) {
+						hRecip, hCountersign, nullptr)) {
 					goto returnError;
 				}
 
@@ -445,26 +445,26 @@
 #endif
 
 		COSE_Recipient_Free(hRecip);
-		hRecip = NULL;
+		hRecip = nullptr;
 	}
 
 #if INCLUDE_COUNTERSIGNATURE
 	// On the Evneloped body
 	cn_cbor *countersigns1 = cn_cbor_mapget_string(pMac, "countersign");
-	if (countersigns1 != NULL) {
+	if (countersigns1 != nullptr) {
 		countersigns1 = cn_cbor_mapget_string(countersigns1, "signers");
 		cn_cbor *countersign = countersigns1->first_child;
 
-		for (; countersign != NULL; countersign = countersign->next) {
+		for (; countersign != nullptr; countersign = countersign->next) {
 			cn_cbor *pkeyCountersign =
 				BuildKey(cn_cbor_mapget_string(countersign, "key"), false);
-			if (pkeyCountersign == NULL) {
+			if (pkeyCountersign == nullptr) {
 				goto returnError;
 			}
 
 			HCOSE_COUNTERSIGN hCountersign =
-				COSE_CounterSign_Init(CBOR_CONTEXT_PARAM_COMMA NULL);
-			if (hCountersign == NULL) {
+				COSE_CounterSign_Init(CBOR_CONTEXT_PARAM_COMMA nullptr);
+			if (hCountersign == nullptr) {
 				goto returnError;
 			}
 
@@ -474,12 +474,12 @@
 				goto returnError;
 			}
 
-			if (!COSE_CounterSign_SetKey(hCountersign, pkeyCountersign, NULL)) {
+			if (!COSE_CounterSign_SetKey(hCountersign, pkeyCountersign, nullptr)) {
 				COSE_CounterSign_Free(hCountersign);
 				goto returnError;
 			}
 
-			if (!COSE_Mac_add_countersignature(hMacObj, hCountersign, NULL)) {
+			if (!COSE_Mac_add_countersignature(hMacObj, hCountersign, nullptr)) {
 				COSE_CounterSign_Free(hCountersign);
 				goto returnError;
 			}
@@ -490,11 +490,11 @@
 
 #endif
 
-	if (!COSE_Mac_encrypt(hMacObj, NULL)) {
+	if (!COSE_Mac_encrypt(hMacObj, nullptr)) {
 		goto returnError;
 	}
 
-	size_t cb = COSE_Encode((HCOSE)hMacObj, NULL, 0, 0) + 1;
+	size_t cb = COSE_Encode((HCOSE)hMacObj, nullptr, 0, 0) + 1;
 	byte *rgb = (byte *)malloc(cb);
 	cb = COSE_Encode((HCOSE)hMacObj, rgb, 0, cb);
 
@@ -509,17 +509,17 @@
 int MacMessage()
 {
 	HCOSE_MAC hEncObj =
-		COSE_Mac_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
+		COSE_Mac_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
 	const char *sz = "This is the content to be used";
 	byte rgbSecret[256 / 8] = {'a', 'b', 'c'};
 	byte rgbKid[6] = {'a', 'b', 'c', 'd', 'e', 'f'};
 	int cbKid = 6;
 	size_t cb = 0;
-	byte *rgb = NULL;
+	byte *rgb = nullptr;
 
-	if (hEncObj == NULL) {
-	errorReturn:
-		if (hEncObj != NULL) {
+	if (hEncObj == nullptr) {
+		errorReturn:
+		if (hEncObj != nullptr) {
 			COSE_Mac_Free(hEncObj);
 		}
 		CFails++;
@@ -528,34 +528,34 @@
 
 	if (!COSE_Mac_map_put_int(hEncObj, COSE_Header_Algorithm,
 			cn_cbor_int_create(
-				COSE_Algorithm_HMAC_256_256, CBOR_CONTEXT_PARAM_COMMA NULL),
-			COSE_PROTECT_ONLY, NULL)) {
+				COSE_Algorithm_HMAC_256_256, CBOR_CONTEXT_PARAM_COMMA nullptr),
+			COSE_PROTECT_ONLY, nullptr)) {
 		goto errorReturn;
 	}
-	if (!COSE_Mac_SetContent(hEncObj, (byte *)sz, strlen(sz), NULL)) {
+	if (!COSE_Mac_SetContent(hEncObj, (byte *)sz, strlen(sz), nullptr)) {
 		goto errorReturn;
 	}
 
 	HCOSE_RECIPIENT hRecip = COSE_Recipient_from_shared_secret(rgbSecret,
-		sizeof(rgbSecret), rgbKid, cbKid, CBOR_CONTEXT_PARAM_COMMA NULL);
-	if (hRecip == NULL) {
+		sizeof(rgbSecret), rgbKid, cbKid, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	if (hRecip == nullptr) {
 		goto errorReturn;
 	}
-	if (!COSE_Mac_AddRecipient(hEncObj, hRecip, NULL)) {
+	if (!COSE_Mac_AddRecipient(hEncObj, hRecip, nullptr)) {
 		goto errorReturn;
 	}
 
-	if (!COSE_Mac_encrypt(hEncObj, NULL)) {
+	if (!COSE_Mac_encrypt(hEncObj, nullptr)) {
 		goto errorReturn;
 	}
 
-	cb = COSE_Encode((HCOSE)hEncObj, NULL, 0, 0);
+	cb = COSE_Encode((HCOSE)hEncObj, nullptr, 0, 0);
 	if (cb == 0) {
 		goto errorReturn;
 	}
 
 	rgb = (byte *)malloc(cb);
-	if (rgb == NULL) {
+	if (rgb == nullptr) {
 		goto errorReturn;
 	}
 	cb = COSE_Encode((HCOSE)hEncObj, rgb, 0, cb);
@@ -573,7 +573,7 @@
 	char * szX;
 	int cbPrint = 0;
 	cn_cbor * cbor = COSE_get_cbor((HCOSE)hEncObj);
-	cbPrint = cn_cbor_printer_write(NULL, 0, cbor, "  ", "\r\n");
+	cbPrint = cn_cbor_printer_write(nullptr, 0, cbor, "  ", "\r\n");
 	szX = malloc(cbPrint);
 	cn_cbor_printer_write(szX, cbPrint, cbor, "  ", "\r\n");
 	fprintf(stdout, "%s", szX);
@@ -582,8 +582,8 @@
 
 	int typ;
 	hEncObj = (HCOSE_MAC)COSE_Decode(
-		rgb, (int)cb, &typ, COSE_mac_object, CBOR_CONTEXT_PARAM_COMMA NULL);
-	if (hEncObj == NULL) {
+		rgb, (int)cb, &typ, COSE_mac_object, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	if (hEncObj == nullptr) {
 		goto errorReturn;
 	}
 
@@ -591,17 +591,17 @@
 	do {
 		HCOSE_RECIPIENT hRecip2;
 
-		hRecip2 = COSE_Mac_GetRecipient(hEncObj, iRecipient, NULL);
-		if (hRecip2 == NULL) {
+		hRecip2 = COSE_Mac_GetRecipient(hEncObj, iRecipient, nullptr);
+		if (hRecip2 == nullptr) {
 			break;
 		}
 
 		if (!COSE_Recipient_SetKey_secret(
-				hRecip2, rgbSecret, sizeof(rgbSecret), NULL, 0, NULL)) {
+				hRecip2, rgbSecret, sizeof(rgbSecret), nullptr, 0, nullptr)) {
 			goto errorReturn;
 		}
 
-		if (!COSE_Mac_validate(hEncObj, hRecip2, NULL)) {
+		if (!COSE_Mac_validate(hEncObj, hRecip2, nullptr)) {
 			goto errorReturn;
 		}
 
@@ -623,11 +623,11 @@
 	size_t cbEncoded)
 {
 	const cn_cbor *pInput = cn_cbor_mapget_string(pControl, "input");
-	const cn_cbor *pFail = NULL;
-	const cn_cbor *pMac = NULL;
-	const cn_cbor *pRecipients = NULL;
-	cn_cbor *pkey = NULL;
-	HCOSE_MAC0 hMAC = NULL;
+	const cn_cbor *pFail = nullptr;
+	const cn_cbor *pMac = nullptr;
+	const cn_cbor *pRecipients = nullptr;
+	cn_cbor *pkey = nullptr;	
+	HCOSE_MAC0 hMAC = nullptr;
 	int type;
 	bool fFail = false;
 	bool fFailBody = false;
@@ -635,10 +635,10 @@
 
 	if (false) {
 	exitHere:
-		if (pkey != NULL) {
+		if (pkey != nullptr) {
 			CN_CBOR_FREE(pkey, context);
 		}
-		if (hMAC != NULL) {
+		if (hMAC != nullptr) {
 			COSE_Mac0_Free(hMAC);
 		}
 
@@ -648,7 +648,7 @@
 		return fUnsuportedAlg ? 0 : 1;
 
 	errorReturn:
-		if (hMAC != NULL) {
+		if (hMAC != nullptr) {
 			COSE_Mac0_Free(hMAC);
 		}
 		CFails += 1;
@@ -656,13 +656,13 @@
 	}
 
 	pFail = cn_cbor_mapget_string(pControl, "fail");
-	if ((pFail != NULL) && (pFail->type == CN_CBOR_TRUE)) {
+	if ((pFail != nullptr) && (pFail->type == CN_CBOR_TRUE)) {
 		fFailBody = true;
 	}
 
 	hMAC = (HCOSE_MAC0)COSE_Decode(pbEncoded, cbEncoded, &type,
-		COSE_mac0_object, CBOR_CONTEXT_PARAM_COMMA NULL);
-	if (hMAC == NULL) {
+		COSE_mac0_object, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	if (hMAC == nullptr) {
 		if (fFailBody) {
 			return 0;
 		}
@@ -671,11 +671,11 @@
 		}
 	}
 
-	if ((pInput == NULL) || (pInput->type != CN_CBOR_MAP)) {
+	if ((pInput == nullptr) || (pInput->type != CN_CBOR_MAP)) {
 		goto errorReturn;
 	}
 	pMac = cn_cbor_mapget_string(pInput, "mac0");
-	if ((pMac == NULL) || (pMac->type != CN_CBOR_MAP)) {
+	if ((pMac == nullptr) || (pMac->type != CN_CBOR_MAP)) {
 		goto errorReturn;
 	}
 
@@ -684,14 +684,14 @@
 	}
 
 	pRecipients = cn_cbor_mapget_string(pMac, "recipients");
-	if ((pRecipients == NULL) || (pRecipients->type != CN_CBOR_ARRAY)) {
+	if ((pRecipients == nullptr) || (pRecipients->type != CN_CBOR_ARRAY)) {
 		goto errorReturn;
 	}
 
 	pRecipients = pRecipients->first_child;
 
 	pkey = BuildKey(cn_cbor_mapget_string(pRecipients, "key"), true);
-	if (pkey == NULL) {
+	if (pkey == nullptr) {
 		fFail = true;
 		goto exitHere;
 	}
@@ -699,23 +699,23 @@
 	cn_cbor *k = cn_cbor_mapget_int(pkey, -1);
 
 	cn_cbor *alg =
-		COSE_Mac0_map_get_int(hMAC, COSE_Header_Algorithm, COSE_BOTH, NULL);
+		COSE_Mac0_map_get_int(hMAC, COSE_Header_Algorithm, COSE_BOTH, nullptr);
 	if (!IsAlgorithmSupported(alg)) {
 		fUnsuportedAlg = true;
 	}
 
 	pFail = cn_cbor_mapget_string(pRecipients, "fail");
-	if (COSE_Mac0_validate(hMAC, k->v.bytes, k->length, NULL)) {
+	if (COSE_Mac0_validate(hMAC, k->v.bytes, k->length, nullptr)) {
 		if (fUnsuportedAlg) {
 			fFail = true;
 			fUnsuportedAlg = false;
 		}
-		else if ((pFail != NULL) && (pFail->type != CN_CBOR_TRUE)) {
+		else if ((pFail != nullptr) && (pFail->type != CN_CBOR_TRUE)) {
 			fFail = true;
 		}
 	}
 	else {
-		if ((pFail == NULL) || (pFail->type == CN_CBOR_FALSE)) {
+		if ((pFail == nullptr) || (pFail->type == CN_CBOR_FALSE)) {
 			fFail = true;
 		}
 		if (fUnsuportedAlg) {
@@ -728,10 +728,10 @@
 
 	//  Validate counter signatures on signers
 	cn_cbor *countersignList = cn_cbor_mapget_string(pMac, "countersign");
-	if (countersignList != NULL) {
+	if (countersignList != nullptr) {
 		cn_cbor *countersigners =
 			cn_cbor_mapget_string(countersignList, "signers");
-		if (countersigners == NULL) {
+		if (countersigners == nullptr) {
 			fFail = true;
 			goto exitHere;
 		}
@@ -739,7 +739,7 @@
 		bool forward = true;
 
 		if (COSE_Mac0_map_get_int(hMAC, COSE_Header_CounterSign,
-				COSE_UNPROTECT_ONLY, 0) == NULL) {
+				COSE_UNPROTECT_ONLY, 0) == nullptr) {
 			fFail = true;
 			goto exitHere;
 		}
@@ -749,7 +749,7 @@
 
 			HCOSE_COUNTERSIGN h =
 				COSE_Mac0_get_countersignature(hMAC, counterNo, 0);
-			if (h == NULL) {
+			if (h == nullptr) {
 				fFail = true;
 				continue;
 			}
@@ -759,7 +759,7 @@
 
 			cn_cbor *pkeyCountersign =
 				BuildKey(cn_cbor_mapget_string(counterSigner, "key"), false);
-			if (pkeyCountersign == NULL) {
+			if (pkeyCountersign == nullptr) {
 				fFail = true;
 				COSE_CounterSign_Free(h);
 				continue;
@@ -773,7 +773,7 @@
 			}
 
 			alg = COSE_CounterSign_map_get_int(
-				h, COSE_Header_Algorithm, COSE_BOTH, NULL);
+				h, COSE_Header_Algorithm, COSE_BOTH, nullptr);
 			if (!IsAlgorithmSupported(alg)) {
 				fUnsuportedAlg = true;
 				noSignAlg = true;
@@ -818,24 +818,24 @@
 
 int BuildMac0Message(const cn_cbor *pControl)
 {
-	cn_cbor *pkey = NULL;
+	cn_cbor *pkey = nullptr;
 
 	//
 	//  We don't run this for all control sequences - skip those marked fail.
 	//
 
 	const cn_cbor *pFail = cn_cbor_mapget_string(pControl, "fail");
-	if ((pFail != NULL) && (pFail->type == CN_CBOR_TRUE)) {
+	if ((pFail != nullptr) && (pFail->type == CN_CBOR_TRUE)) {
 		return 0;
 	}
 
 	HCOSE_MAC0 hMacObj =
-		COSE_Mac0_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
+		COSE_Mac0_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
 
 	const cn_cbor *pInputs = cn_cbor_mapget_string(pControl, "input");
-	if (pInputs == NULL) {
+	if (pInputs == nullptr) {
 	returnError:
-		if (pkey != NULL) {
+		if (pkey != nullptr) {
 			CN_CBOR_FREE(pkey, context);
 		}
 		COSE_Mac0_Free(hMacObj);
@@ -843,13 +843,13 @@
 		return 1;
 	}
 	const cn_cbor *pMac = cn_cbor_mapget_string(pInputs, "mac0");
-	if (pMac == NULL) {
+	if (pMac == nullptr) {
 		goto returnError;
 	}
 
 	const cn_cbor *pContent = cn_cbor_mapget_string(pInputs, "plaintext");
 	if (!COSE_Mac0_SetContent(
-			hMacObj, pContent->v.bytes, pContent->length, NULL)) {
+			hMacObj, pContent->v.bytes, pContent->length, nullptr)) {
 		goto returnError;
 	}
 
@@ -859,14 +859,14 @@
 	}
 
 	const cn_cbor *pRecipients = cn_cbor_mapget_string(pMac, "recipients");
-	if ((pRecipients == NULL) || (pRecipients->type != CN_CBOR_ARRAY)) {
+	if ((pRecipients == nullptr) || (pRecipients->type != CN_CBOR_ARRAY)) {
 		goto returnError;
 	}
 
 	pRecipients = pRecipients->first_child;
 
 	pkey = BuildKey(cn_cbor_mapget_string(pRecipients, "key"), false);
-	if (pkey == NULL) {
+	if (pkey == nullptr) {
 		goto returnError;
 	}
 
@@ -875,20 +875,20 @@
 #if INCLUDE_COUNTERSIGNATURE
 	// On the sign body
 	cn_cbor *countersigns = cn_cbor_mapget_string(pMac, "countersign");
-	if (countersigns != NULL) {
+	if (countersigns != nullptr) {
 		countersigns = cn_cbor_mapget_string(countersigns, "signers");
 		cn_cbor *countersign = countersigns->first_child;
 
-		for (; countersign != NULL; countersign = countersign->next) {
+		for (; countersign != nullptr; countersign = countersign->next) {
 			cn_cbor *pkeyCountersign =
 				BuildKey(cn_cbor_mapget_string(countersign, "key"), false);
-			if (pkeyCountersign == NULL) {
+			if (pkeyCountersign == nullptr) {
 				goto returnError;
 			}
 
 			HCOSE_COUNTERSIGN hCountersign =
-				COSE_CounterSign_Init(CBOR_CONTEXT_PARAM_COMMA NULL);
-			if (hCountersign == NULL) {
+				COSE_CounterSign_Init(CBOR_CONTEXT_PARAM_COMMA nullptr);
+			if (hCountersign == nullptr) {
 				goto returnError;
 			}
 
@@ -898,12 +898,12 @@
 				goto returnError;
 			}
 
-			if (!COSE_CounterSign_SetKey(hCountersign, pkeyCountersign, NULL)) {
+			if (!COSE_CounterSign_SetKey(hCountersign, pkeyCountersign, nullptr)) {
 				COSE_CounterSign_Free(hCountersign);
 				goto returnError;
 			}
 
-			if (!COSE_Mac0_add_countersignature(hMacObj, hCountersign, NULL)) {
+			if (!COSE_Mac0_add_countersignature(hMacObj, hCountersign, nullptr)) {
 				COSE_CounterSign_Free(hCountersign);
 				goto returnError;
 			}
@@ -914,11 +914,11 @@
 
 #endif
 
-	if (!COSE_Mac0_encrypt(hMacObj, k->v.bytes, k->length, NULL)) {
+	if (!COSE_Mac0_encrypt(hMacObj, k->v.bytes, k->length, nullptr)) {
 		goto returnError;
 	}
 
-	size_t cb = COSE_Encode((HCOSE)hMacObj, NULL, 0, 0) + 1;
+	size_t cb = COSE_Encode((HCOSE)hMacObj, nullptr, 0, 0) + 1;
 	byte *rgb = (byte *)malloc(cb);
 	cb = COSE_Encode((HCOSE)hMacObj, rgb, 0, cb);
 
@@ -935,11 +935,11 @@
 #if INCLUDE_MAC
 void MAC_Corners()
 {
-	HCOSE_MAC hMAC = NULL;
-	HCOSE_ENCRYPT hEncrypt = NULL;
-	HCOSE_RECIPIENT hRecipient = NULL;
+	HCOSE_MAC hMAC = nullptr;
+	HCOSE_ENCRYPT hEncrypt = nullptr;
+	HCOSE_RECIPIENT hRecipient = nullptr;
 	byte rgb[10];
-	cn_cbor *cn = cn_cbor_int_create(5, CBOR_CONTEXT_PARAM_COMMA NULL);
+	cn_cbor *cn = cn_cbor_int_create(5, CBOR_CONTEXT_PARAM_COMMA nullptr);
 	cose_errback cose_error;
 
 	//  Missing case - addref then release on item
@@ -947,34 +947,34 @@
 	//  Incorrect algorithm
 
 	hMAC = (HCOSE_MAC)COSE_Mac_Init(
-		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
+		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
 
 	//  Invalid Handle checks
 
-	if (COSE_Mac_SetContent((HCOSE_MAC)hEncrypt, rgb, 10, NULL)) {
+	if (COSE_Mac_SetContent((HCOSE_MAC)hEncrypt, rgb, 10, nullptr)) {
 		CFails++;
 	}
-	if (COSE_Mac_map_get_int((HCOSE_MAC)hEncrypt, 1, COSE_BOTH, NULL)) {
+	if (COSE_Mac_map_get_int((HCOSE_MAC)hEncrypt, 1, COSE_BOTH, nullptr)) {
 		CFails++;
 	}
 	if (COSE_Mac_map_put_int(
-			(HCOSE_MAC)hEncrypt, 1, cn, COSE_PROTECT_ONLY, NULL)) {
+			(HCOSE_MAC)hEncrypt, 1, cn, COSE_PROTECT_ONLY, nullptr)) {
 		CFails++;
 	}
-	if (COSE_Mac_encrypt((HCOSE_MAC)hEncrypt, NULL)) {
+	if (COSE_Mac_encrypt((HCOSE_MAC)hEncrypt, nullptr)) {
 		CFails++;
 	}
-	if (COSE_Mac_validate((HCOSE_MAC)hEncrypt, (HCOSE_RECIPIENT)hMAC, NULL)) {
+	if (COSE_Mac_validate((HCOSE_MAC)hEncrypt, (HCOSE_RECIPIENT)hMAC, nullptr)) {
 		CFails++;
 	}
 	if (COSE_Mac_AddRecipient(
-			(HCOSE_MAC)hEncrypt, (HCOSE_RECIPIENT)hMAC, NULL)) {
+			(HCOSE_MAC)hEncrypt, (HCOSE_RECIPIENT)hMAC, nullptr)) {
 		CFails++;
 	}
-	if (COSE_Mac_GetRecipient((HCOSE_MAC)hEncrypt, 0, NULL)) {
+	if (COSE_Mac_GetRecipient((HCOSE_MAC)hEncrypt, 0, nullptr)) {
 		CFails++;
 	}
-	if (COSE_Mac_SetExternal((HCOSE_MAC)hEncrypt, rgb, 0, NULL)) {
+	if (COSE_Mac_SetExternal((HCOSE_MAC)hEncrypt, rgb, 0, nullptr)) {
 		CFails++;
 	}
 	if (COSE_Mac_Free((HCOSE_MAC)hEncrypt)) {
@@ -983,35 +983,35 @@
 
 #if INCLUDE_ENCRYPT0
 	hEncrypt =
-		COSE_Encrypt_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
+		COSE_Encrypt_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
 #else
 	hEncrypt = (HCOSE_ENCRYPT)COSE_CALLOC(1, sizeof(COSE), context);
 #endif
 
-	if (COSE_Mac_SetContent((HCOSE_MAC)hEncrypt, rgb, 10, NULL)) {
+	if (COSE_Mac_SetContent((HCOSE_MAC)hEncrypt, rgb, 10, nullptr)) {
 		CFails++;
 	}
-	if (COSE_Mac_map_get_int((HCOSE_MAC)hEncrypt, 1, COSE_BOTH, NULL)) {
+	if (COSE_Mac_map_get_int((HCOSE_MAC)hEncrypt, 1, COSE_BOTH, nullptr)) {
 		CFails++;
 	}
 	if (COSE_Mac_map_put_int(
-			(HCOSE_MAC)hEncrypt, 1, cn, COSE_PROTECT_ONLY, NULL)) {
+			(HCOSE_MAC)hEncrypt, 1, cn, COSE_PROTECT_ONLY, nullptr)) {
 		CFails++;
 	}
-	if (COSE_Mac_encrypt((HCOSE_MAC)hEncrypt, NULL)) {
+	if (COSE_Mac_encrypt((HCOSE_MAC)hEncrypt, nullptr)) {
 		CFails++;
 	}
-	if (COSE_Mac_validate((HCOSE_MAC)hEncrypt, (HCOSE_RECIPIENT)hMAC, NULL)) {
+	if (COSE_Mac_validate((HCOSE_MAC)hEncrypt, (HCOSE_RECIPIENT)hMAC, nullptr)) {
 		CFails++;
 	}
 	if (COSE_Mac_AddRecipient(
-			(HCOSE_MAC)hEncrypt, (HCOSE_RECIPIENT)hMAC, NULL)) {
+			(HCOSE_MAC)hEncrypt, (HCOSE_RECIPIENT)hMAC, nullptr)) {
 		CFails++;
 	}
-	if (COSE_Mac_GetRecipient((HCOSE_MAC)hEncrypt, 0, NULL)) {
+	if (COSE_Mac_GetRecipient((HCOSE_MAC)hEncrypt, 0, nullptr)) {
 		CFails++;
 	}
-	if (COSE_Mac_SetExternal((HCOSE_MAC)hEncrypt, rgb, 0, NULL)) {
+	if (COSE_Mac_SetExternal((HCOSE_MAC)hEncrypt, rgb, 0, nullptr)) {
 		CFails++;
 	}
 	if (COSE_Mac_Free((HCOSE_MAC)hEncrypt)) {
@@ -1021,24 +1021,24 @@
 	//
 	//  Unsupported algorithm
 
-	hMAC = COSE_Mac_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
-	if (hMAC == NULL) {
+	hMAC = COSE_Mac_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	if (hMAC == nullptr) {
 		CFails++;
 	}
-	if (!COSE_Mac_SetContent(hMAC, (byte *)"Message", 7, NULL)) {
+	if (!COSE_Mac_SetContent(hMAC, (byte *)"Message", 7, nullptr)) {
 		CFails++;
 	}
 	if (!COSE_Mac_map_put_int(hMAC, COSE_Header_Algorithm,
-			cn_cbor_int_create(-99, CBOR_CONTEXT_PARAM_COMMA NULL),
-			COSE_PROTECT_ONLY, NULL)) {
+			cn_cbor_int_create(-99, CBOR_CONTEXT_PARAM_COMMA nullptr),
+			COSE_PROTECT_ONLY, nullptr)) {
 		CFails++;
 	}
 	hRecipient = COSE_Recipient_from_shared_secret(
-		rgb, sizeof(rgb), rgb, sizeof(rgb), CBOR_CONTEXT_PARAM_COMMA NULL);
-	if (hRecipient == NULL) {
+		rgb, sizeof(rgb), rgb, sizeof(rgb), CBOR_CONTEXT_PARAM_COMMA nullptr);
+	if (hRecipient == nullptr) {
 		CFails++;
 	}
-	if (!COSE_Mac_AddRecipient(hMAC, hRecipient, NULL)) {
+	if (!COSE_Mac_AddRecipient(hMAC, hRecipient, nullptr)) {
 		CFails++;
 	}
 	CHECK_FAILURE(COSE_Mac_encrypt(hMAC, &cose_error),
@@ -1046,24 +1046,24 @@
 	COSE_Mac_Free(hMAC);
 	COSE_Recipient_Free(hRecipient);
 
-	hMAC = COSE_Mac_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
-	if (hMAC == NULL) {
+	hMAC = COSE_Mac_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	if (hMAC == nullptr) {
 		CFails++;
 	}
-	if (!COSE_Mac_SetContent(hMAC, (byte *)"Message", 7, NULL)) {
+	if (!COSE_Mac_SetContent(hMAC, (byte *)"Message", 7, nullptr)) {
 		CFails++;
 	}
 	if (!COSE_Mac_map_put_int(hMAC, COSE_Header_Algorithm,
-			cn_cbor_string_create("hmac", CBOR_CONTEXT_PARAM_COMMA NULL),
-			COSE_PROTECT_ONLY, NULL)) {
+			cn_cbor_string_create("hmac", CBOR_CONTEXT_PARAM_COMMA nullptr),
+			COSE_PROTECT_ONLY, nullptr)) {
 		CFails++;
 	}
 	hRecipient = COSE_Recipient_from_shared_secret(
-		rgb, sizeof(rgb), rgb, sizeof(rgb), CBOR_CONTEXT_PARAM_COMMA NULL);
-	if (hRecipient == NULL) {
+		rgb, sizeof(rgb), rgb, sizeof(rgb), CBOR_CONTEXT_PARAM_COMMA nullptr);
+	if (hRecipient == nullptr) {
 		CFails++;
 	}
-	if (!COSE_Mac_AddRecipient(hMAC, hRecipient, NULL)) {
+	if (!COSE_Mac_AddRecipient(hMAC, hRecipient, nullptr)) {
 		CFails++;
 	}
 	CHECK_FAILURE(COSE_Mac_encrypt(hMAC, &cose_error),
@@ -1071,7 +1071,7 @@
 	COSE_Recipient_Free(hRecipient);
 	COSE_Mac_Free(hMAC);
 
-	if (COSE_Mac_GetRecipient(hMAC, 9, NULL)) {
+	if (COSE_Mac_GetRecipient(hMAC, 9, nullptr)) {
 		CFails++;
 	}
 }
@@ -1080,36 +1080,36 @@
 #if INCLUDE_MAC0
 void MAC0_Corners()
 {
-	HCOSE_ENCRYPT hEncrypt = NULL;
-	HCOSE_MAC0 hMAC = NULL;
+	HCOSE_ENCRYPT hEncrypt = nullptr;
+	HCOSE_MAC0 hMAC = nullptr;
 	byte rgb[10];
-	cn_cbor *cn = cn_cbor_int_create(5, CBOR_CONTEXT_PARAM_COMMA NULL);
+	cn_cbor *cn = cn_cbor_int_create(5, CBOR_CONTEXT_PARAM_COMMA nullptr);
 	cose_errback cose_error;
 
 	hEncrypt =
-		COSE_Encrypt_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
+		COSE_Encrypt_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
 
 	//  Missing case - addref then release on item
 
 	//  Invalid Handle checks
 
-	if (COSE_Mac0_SetContent((HCOSE_MAC0)hEncrypt, rgb, 10, NULL)) {
+	if (COSE_Mac0_SetContent((HCOSE_MAC0)hEncrypt, rgb, 10, nullptr)) {
 		CFails++;
 	}
-	if (COSE_Mac0_map_get_int((HCOSE_MAC0)hEncrypt, 1, COSE_BOTH, NULL)) {
+	if (COSE_Mac0_map_get_int((HCOSE_MAC0)hEncrypt, 1, COSE_BOTH, nullptr)) {
 		CFails++;
 	}
 	if (COSE_Mac0_map_put_int(
-			(HCOSE_MAC0)hEncrypt, 1, cn, COSE_PROTECT_ONLY, NULL)) {
+			(HCOSE_MAC0)hEncrypt, 1, cn, COSE_PROTECT_ONLY, nullptr)) {
 		CFails++;
 	}
-	if (COSE_Mac0_encrypt((HCOSE_MAC0)hEncrypt, rgb, 10, NULL)) {
+	if (COSE_Mac0_encrypt((HCOSE_MAC0)hEncrypt, rgb, 10, nullptr)) {
 		CFails++;
 	}
-	if (COSE_Mac0_validate((HCOSE_MAC0)hEncrypt, rgb, 10, NULL)) {
+	if (COSE_Mac0_validate((HCOSE_MAC0)hEncrypt, rgb, 10, nullptr)) {
 		CFails++;
 	}
-	if (COSE_Mac0_SetExternal((HCOSE_MAC0)hEncrypt, rgb, 0, NULL)) {
+	if (COSE_Mac0_SetExternal((HCOSE_MAC0)hEncrypt, rgb, 0, nullptr)) {
 		CFails++;
 	}
 	if (COSE_Mac0_Free((HCOSE_MAC0)hEncrypt)) {
@@ -1117,25 +1117,25 @@
 	}
 
 	hEncrypt =
-		COSE_Encrypt_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
+		COSE_Encrypt_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
 
-	if (COSE_Mac0_SetContent((HCOSE_MAC0)hEncrypt, rgb, 10, NULL)) {
+	if (COSE_Mac0_SetContent((HCOSE_MAC0)hEncrypt, rgb, 10, nullptr)) {
 		CFails++;
 	}
-	if (COSE_Mac0_map_get_int((HCOSE_MAC0)hEncrypt, 1, COSE_BOTH, NULL)) {
+	if (COSE_Mac0_map_get_int((HCOSE_MAC0)hEncrypt, 1, COSE_BOTH, nullptr)) {
 		CFails++;
 	}
 	if (COSE_Mac0_map_put_int(
-			(HCOSE_MAC0)hEncrypt, 1, cn, COSE_PROTECT_ONLY, NULL)) {
+			(HCOSE_MAC0)hEncrypt, 1, cn, COSE_PROTECT_ONLY, nullptr)) {
 		CFails++;
 	}
-	if (COSE_Mac0_encrypt((HCOSE_MAC0)hEncrypt, rgb, 10, NULL)) {
+	if (COSE_Mac0_encrypt((HCOSE_MAC0)hEncrypt, rgb, 10, nullptr)) {
 		CFails++;
 	}
-	if (COSE_Mac0_validate((HCOSE_MAC0)hEncrypt, rgb, 10, NULL)) {
+	if (COSE_Mac0_validate((HCOSE_MAC0)hEncrypt, rgb, 10, nullptr)) {
 		CFails++;
 	}
-	if (COSE_Mac0_SetExternal((HCOSE_MAC0)hEncrypt, rgb, 0, NULL)) {
+	if (COSE_Mac0_SetExternal((HCOSE_MAC0)hEncrypt, rgb, 0, nullptr)) {
 		CFails++;
 	}
 
@@ -1146,32 +1146,32 @@
 	//
 	//  Unsupported algorithm
 
-	hMAC = COSE_Mac0_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
-	if (hMAC == NULL) {
+	hMAC = COSE_Mac0_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	if (hMAC == nullptr) {
 		CFails++;
 	}
-	if (!COSE_Mac0_SetContent(hMAC, (byte *)"Message", 7, NULL)) {
+	if (!COSE_Mac0_SetContent(hMAC, (byte *)"Message", 7, nullptr)) {
 		CFails++;
 	}
 	if (!COSE_Mac0_map_put_int(hMAC, COSE_Header_Algorithm,
-			cn_cbor_int_create(-99, CBOR_CONTEXT_PARAM_COMMA NULL),
-			COSE_PROTECT_ONLY, NULL)) {
+			cn_cbor_int_create(-99, CBOR_CONTEXT_PARAM_COMMA nullptr),
+			COSE_PROTECT_ONLY, nullptr)) {
 		CFails++;
 	}
 	CHECK_FAILURE(COSE_Mac0_encrypt(hMAC, rgb, sizeof(rgb), &cose_error),
 		COSE_ERR_UNKNOWN_ALGORITHM, CFails++);
 	COSE_Mac0_Free(hMAC);
 
-	hMAC = COSE_Mac0_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
-	if (hMAC == NULL) {
+	hMAC = COSE_Mac0_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	if (hMAC == nullptr) {
 		CFails++;
 	}
-	if (!COSE_Mac0_SetContent(hMAC, (byte *)"Message", 7, NULL)) {
+	if (!COSE_Mac0_SetContent(hMAC, (byte *)"Message", 7, nullptr)) {
 		CFails++;
 	}
 	if (!COSE_Mac0_map_put_int(hMAC, COSE_Header_Algorithm,
-			cn_cbor_string_create("hmac", CBOR_CONTEXT_PARAM_COMMA NULL),
-			COSE_PROTECT_ONLY, NULL)) {
+			cn_cbor_string_create("hmac", CBOR_CONTEXT_PARAM_COMMA nullptr),
+			COSE_PROTECT_ONLY, nullptr)) {
 		CFails++;
 	}
 	CHECK_FAILURE(COSE_Mac0_encrypt(hMAC, rgb, sizeof(rgb), &cose_error),
diff --git a/test/Sign_test.cpp b/test/Sign_test.cpp
index 72765d1..14c5a87 100644
--- a/test/Sign_test.cpp
+++ b/test/Sign_test.cpp
@@ -31,39 +31,39 @@
 	const cn_cbor *pFail;
 	const cn_cbor *pSign;
 	const cn_cbor *pSigners;
-	HCOSE_SIGN hSig = NULL;
-	HCOSE_SIGNER hSigner = NULL;
+	HCOSE_SIGN hSig = nullptr;
+	HCOSE_SIGNER hSigner = nullptr;
 	int type;
 	int iSigner;
 	bool fFail = false;
 	bool fFailBody = false;
 	bool fNoSupportAlg = false;
-	HCOSE_COUNTERSIGN h = NULL;
+	HCOSE_COUNTERSIGN h = nullptr;
 
 	pFail = cn_cbor_mapget_string(pControl, "fail");
-	if ((pFail != NULL) && (pFail->type == CN_CBOR_TRUE)) {
+	if ((pFail != nullptr) && (pFail->type == CN_CBOR_TRUE)) {
 		fFailBody = true;
 	}
 
-	if ((pInput == NULL) || (pInput->type != CN_CBOR_MAP)) {
+	if ((pInput == nullptr) || (pInput->type != CN_CBOR_MAP)) {
 		goto returnError;
 	}
 	pSign = cn_cbor_mapget_string(pInput, "sign");
-	if ((pSign == NULL) || (pSign->type != CN_CBOR_MAP)) {
+	if ((pSign == nullptr) || (pSign->type != CN_CBOR_MAP)) {
 		goto returnError;
 	}
 
 	pSigners = cn_cbor_mapget_string(pSign, "signers");
-	if ((pSigners == NULL) || (pSigners->type != CN_CBOR_ARRAY)) {
+	if ((pSigners == nullptr) || (pSigners->type != CN_CBOR_ARRAY)) {
 		goto returnError;
 	}
 
 	iSigner = (int)pSigners->length - 1;
 	pSigners = pSigners->first_child;
-	for (; pSigners != NULL; iSigner--, pSigners = pSigners->next) {
+	for (; pSigners != nullptr; iSigner--, pSigners = pSigners->next) {
 		hSig = (HCOSE_SIGN)COSE_Decode(pbEncoded, cbEncoded, &type,
-			COSE_sign_object, CBOR_CONTEXT_PARAM_COMMA NULL);
-		if (hSig == NULL) {
+			COSE_sign_object, CBOR_CONTEXT_PARAM_COMMA nullptr);
+		if (hSig == nullptr) {
 			if (fFailBody) {
 				return 0;
 			}
@@ -77,12 +77,12 @@
 		}
 
 		cn_cbor *pkey = BuildKey(cn_cbor_mapget_string(pSigners, "key"), false);
-		if (pkey == NULL) {
+		if (pkey == nullptr) {
 			goto returnError;
 		}
 
-		HCOSE_SIGNER hSigner = COSE_Sign_GetSigner(hSig, iSigner, NULL);
-		if (hSigner == NULL) {
+		HCOSE_SIGNER hSigner = COSE_Sign_GetSigner(hSig, iSigner, nullptr);
+		if (hSigner == nullptr) {
 			goto returnError;
 		}
 		if (!SetReceivingAttributes(
@@ -90,7 +90,7 @@
 			goto returnError;
 		}
 
-		if (!COSE_Signer_SetKey(hSigner, pkey, NULL)) {
+		if (!COSE_Signer_SetKey(hSigner, pkey, nullptr)) {
 			goto returnError;
 		}
 
@@ -101,11 +101,11 @@
 		}
 
 		pFail = cn_cbor_mapget_string(pSigners, "fail");
-		if (COSE_Sign_validate(hSig, hSigner, NULL)) {
+		if (COSE_Sign_validate(hSig, hSigner, nullptr)) {
 			if (fNoSupportAlg) {
 				fFail = true;
 			}
-			else if ((pFail != NULL) && (pFail->type != CN_CBOR_TRUE)) {
+			else if ((pFail != nullptr) && (pFail->type != CN_CBOR_TRUE)) {
 				fFail = true;
 			}
 		}
@@ -114,7 +114,7 @@
 				fFailBody = false;
 				fFail = false;
 			}
-			else if ((pFail == NULL) || (pFail->type == CN_CBOR_FALSE)) {
+			else if ((pFail == nullptr) || (pFail->type == CN_CBOR_FALSE)) {
 				fFail = true;
 			}
 		}
@@ -123,10 +123,10 @@
 		//  Validate counter signatures on signers
 		cn_cbor *countersignList =
 			cn_cbor_mapget_string(pSigners, "countersign");
-		if (countersignList != NULL) {
+		if (countersignList != nullptr) {
 			cn_cbor *countersigners =
 				cn_cbor_mapget_string(countersignList, "signers");
-			if (countersigners == NULL) {
+			if (countersigners == nullptr) {
 				fFail = true;
 				continue;
 			}
@@ -134,7 +134,7 @@
 			bool forward = true;
 
 			if (COSE_Signer_map_get_int(hSigner, COSE_Header_CounterSign,
-					COSE_UNPROTECT_ONLY, 0) == NULL) {
+					COSE_UNPROTECT_ONLY, 0) == nullptr) {
 				goto returnError;
 			}
 
@@ -142,7 +142,7 @@
 				bool noSignAlg = false;
 
 				h = COSE_Signer_get_countersignature(hSigner, counterNo, 0);
-				if (h == NULL) {
+				if (h == nullptr) {
 					fFail = true;
 					continue;
 				}
@@ -152,7 +152,7 @@
 
 				cn_cbor *pkeyCountersign = BuildKey(
 					cn_cbor_mapget_string(counterSigner, "key"), false);
-				if (pkeyCountersign == NULL) {
+				if (pkeyCountersign == nullptr) {
 					fFail = true;
 					COSE_CounterSign_Free(h);
 					continue;
@@ -196,10 +196,10 @@
 		if (iSigner == 0) {
 			//  Validate counter signatures on signers
 			countersignList = cn_cbor_mapget_string(pSign, "countersign");
-			if (countersignList != NULL) {
+			if (countersignList != nullptr) {
 				cn_cbor *countersigners =
 					cn_cbor_mapget_string(countersignList, "signers");
-				if (countersigners == NULL) {
+				if (countersigners == nullptr) {
 					fFail = true;
 					continue;
 				}
@@ -207,7 +207,7 @@
 				bool forward = true;
 
 				if (COSE_Sign_map_get_int(hSig, COSE_Header_CounterSign,
-						COSE_UNPROTECT_ONLY, 0) == NULL) {
+						COSE_UNPROTECT_ONLY, 0) == nullptr) {
 					goto returnError;
 				}
 
@@ -216,7 +216,7 @@
 
 					HCOSE_COUNTERSIGN h =
 						COSE_Sign_get_countersignature(hSig, counterNo, 0);
-					if (h == NULL) {
+					if (h == nullptr) {
 						fFail = true;
 						continue;
 					}
@@ -226,7 +226,7 @@
 
 					cn_cbor *pkeyCountersign = BuildKey(
 						cn_cbor_mapget_string(counterSigner, "key"), false);
-					if (pkeyCountersign == NULL) {
+					if (pkeyCountersign == nullptr) {
 						fFail = true;
 						COSE_CounterSign_Free(h);
 						continue;
@@ -284,10 +284,10 @@
 	return fNoSupportAlg ? 0 : 1;
 
 returnError:
-	if (hSigner != NULL) {
+	if (hSigner != nullptr) {
 		COSE_Signer_Free(hSigner);
 	}
-	if (hSig != NULL) {
+	if (hSig != nullptr) {
 		COSE_Sign_Free(hSig);
 	}
 
@@ -306,27 +306,27 @@
 int BuildSignedMessage(const cn_cbor *pControl)
 {
 	int iSigner;
-	HCOSE_SIGNER hSigner = NULL;
+	HCOSE_SIGNER hSigner = nullptr;
 
 	//
 	//  We don't run this for all control sequences - skip those marked fail.
 	//
 
 	const cn_cbor *pFail = cn_cbor_mapget_string(pControl, "fail");
-	if ((pFail != NULL) && (pFail->type == CN_CBOR_TRUE)) {
+	if ((pFail != nullptr) && (pFail->type == CN_CBOR_TRUE)) {
 		return 0;
 	}
 
 	HCOSE_SIGN hSignObj =
-		COSE_Sign_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
+		COSE_Sign_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
 
 	const cn_cbor *pInputs = cn_cbor_mapget_string(pControl, "input");
-	if (pInputs == NULL) {
+	if (pInputs == nullptr) {
 	returnError:
-		if (hSignObj != NULL) {
+		if (hSignObj != nullptr) {
 			COSE_Sign_Free(hSignObj);
 		}
-		if (hSigner != NULL) {
+		if (hSigner != nullptr) {
 			COSE_Signer_Free(hSigner);
 		}
 
@@ -334,13 +334,13 @@
 		return 1;
 	}
 	const cn_cbor *pSign = cn_cbor_mapget_string(pInputs, "sign");
-	if (pSign == NULL) {
+	if (pSign == nullptr) {
 		goto returnError;
 	}
 
 	const cn_cbor *pContent = cn_cbor_mapget_string(pInputs, "plaintext");
 	if (!COSE_Sign_SetContent(
-			hSignObj, pContent->v.bytes, pContent->length, NULL)) {
+			hSignObj, pContent->v.bytes, pContent->length, nullptr)) {
 		goto returnError;
 	}
 
@@ -350,19 +350,19 @@
 	}
 
 	const cn_cbor *pSigners = cn_cbor_mapget_string(pSign, "signers");
-	if ((pSigners == NULL) || (pSigners->type != CN_CBOR_ARRAY)) {
+	if ((pSigners == nullptr) || (pSigners->type != CN_CBOR_ARRAY)) {
 		goto returnError;
 	}
 
 	pSigners = pSigners->first_child;
-	for (iSigner = 0; pSigners != NULL; iSigner++, pSigners = pSigners->next) {
+	for (iSigner = 0; pSigners != nullptr; iSigner++, pSigners = pSigners->next) {
 		cn_cbor *pkey = BuildKey(cn_cbor_mapget_string(pSigners, "key"), false);
-		if (pkey == NULL) {
+		if (pkey == nullptr) {
 			goto returnError;
 		}
 
-		hSigner = COSE_Signer_Init(CBOR_CONTEXT_PARAM_COMMA NULL);
-		if (hSigner == NULL) {
+		hSigner = COSE_Signer_Init(CBOR_CONTEXT_PARAM_COMMA nullptr);
+		if (hSigner == nullptr) {
 			goto returnError;
 		}
 
@@ -371,31 +371,31 @@
 			goto returnError;
 		}
 
-		if (!COSE_Signer_SetKey(hSigner, pkey, NULL)) {
+		if (!COSE_Signer_SetKey(hSigner, pkey, nullptr)) {
 			goto returnError;
 		}
 
-		if (!COSE_Sign_AddSigner(hSignObj, hSigner, NULL)) {
+		if (!COSE_Sign_AddSigner(hSignObj, hSigner, nullptr)) {
 			goto returnError;
 		}
 
 #if INCLUDE_COUNTERSIGNATURE
 		//  On the signer object
 		cn_cbor *countersigns = cn_cbor_mapget_string(pSigners, "countersign");
-		if (countersigns != NULL) {
+		if (countersigns != nullptr) {
 			countersigns = cn_cbor_mapget_string(countersigns, "signers");
 			cn_cbor *countersign = countersigns->first_child;
 
-			for (; countersign != NULL; countersign = countersign->next) {
+			for (; countersign != nullptr; countersign = countersign->next) {
 				cn_cbor *pkeyCountersign =
 					BuildKey(cn_cbor_mapget_string(countersign, "key"), false);
-				if (pkeyCountersign == NULL) {
+				if (pkeyCountersign == nullptr) {
 					goto returnError;
 				}
 
 				HCOSE_COUNTERSIGN hCountersign =
-					COSE_CounterSign_Init(CBOR_CONTEXT_PARAM_COMMA NULL);
-				if (hCountersign == NULL) {
+					COSE_CounterSign_Init(CBOR_CONTEXT_PARAM_COMMA nullptr);
+				if (hCountersign == nullptr) {
 					goto returnError;
 				}
 
@@ -406,13 +406,13 @@
 				}
 
 				if (!COSE_CounterSign_SetKey(
-						hCountersign, pkeyCountersign, NULL)) {
+						hCountersign, pkeyCountersign, nullptr)) {
 					COSE_CounterSign_Free(hCountersign);
 					goto returnError;
 				}
 
 				if (!COSE_Signer_add_countersignature(
-						hSigner, hCountersign, NULL)) {
+						hSigner, hCountersign, nullptr)) {
 					COSE_CounterSign_Free(hCountersign);
 					goto returnError;
 				}
@@ -426,20 +426,20 @@
 #if INCLUDE_COUNTERSIGNATURE
 	// On the sign body
 	cn_cbor *countersigns1 = cn_cbor_mapget_string(pSign, "countersign");
-	if (countersigns1 != NULL) {
+	if (countersigns1 != nullptr) {
 		countersigns1 = cn_cbor_mapget_string(countersigns1, "signers");
 		cn_cbor *countersign = countersigns1->first_child;
 
-		for (; countersign != NULL; countersign = countersign->next) {
+		for (; countersign != nullptr; countersign = countersign->next) {
 			cn_cbor *pkeyCountersign =
 				BuildKey(cn_cbor_mapget_string(countersign, "key"), false);
-			if (pkeyCountersign == NULL) {
+			if (pkeyCountersign == nullptr) {
 				goto returnError;
 			}
 
 			HCOSE_COUNTERSIGN hCountersign =
-				COSE_CounterSign_Init(CBOR_CONTEXT_PARAM_COMMA NULL);
-			if (hCountersign == NULL) {
+				COSE_CounterSign_Init(CBOR_CONTEXT_PARAM_COMMA nullptr);
+			if (hCountersign == nullptr) {
 				goto returnError;
 			}
 
@@ -449,12 +449,12 @@
 				goto returnError;
 			}
 
-			if (!COSE_CounterSign_SetKey(hCountersign, pkeyCountersign, NULL)) {
+			if (!COSE_CounterSign_SetKey(hCountersign, pkeyCountersign, nullptr)) {
 				COSE_CounterSign_Free(hCountersign);
 				goto returnError;
 			}
 
-			if (!COSE_Sign_add_countersignature(hSignObj, hCountersign, NULL)) {
+			if (!COSE_Sign_add_countersignature(hSignObj, hCountersign, nullptr)) {
 				COSE_CounterSign_Free(hCountersign);
 				goto returnError;
 			}
@@ -465,11 +465,11 @@
 
 #endif
 
-	if (!COSE_Sign_Sign(hSignObj, NULL)) {
+	if (!COSE_Sign_Sign(hSignObj, nullptr)) {
 		goto returnError;
 	}
 
-	size_t cb = COSE_Encode((HCOSE)hSignObj, NULL, 0, 0) + 1;
+	size_t cb = COSE_Encode((HCOSE)hSignObj, nullptr, 0, 0) + 1;
 	byte *rgb = (byte *)malloc(cb);
 	cb = COSE_Encode((HCOSE)hSignObj, rgb, 0, cb);
 
@@ -484,7 +484,7 @@
 int SignMessage()
 {
 	HCOSE_SIGN hEncObj =
-		COSE_Sign_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
+		COSE_Sign_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
 	const char *sz = "This is the content to be used";
 	size_t cb;
 	byte *rgb;
@@ -503,33 +503,33 @@
 		0xcd, 0xf2, 0x11, 0x22, 0xbc, 0xe2, 0xbd, 0x68, 0xb5, 0x28, 0x3e, 0x69,
 		0x07, 0x15, 0x4a, 0xd9, 0x11, 0x84, 0x0f, 0xa2, 0x08, 0xcf};
 
-	cn_cbor *pkey = cn_cbor_map_create(CBOR_CONTEXT_PARAM_COMMA NULL);
+	cn_cbor *pkey = cn_cbor_map_create(CBOR_CONTEXT_PARAM_COMMA nullptr);
 	cn_cbor_mapput_int(pkey, COSE_Key_Type,
-		cn_cbor_int_create(COSE_Key_Type_EC2, CBOR_CONTEXT_PARAM_COMMA NULL),
-		CBOR_CONTEXT_PARAM_COMMA NULL);
+		cn_cbor_int_create(COSE_Key_Type_EC2, CBOR_CONTEXT_PARAM_COMMA nullptr),
+		CBOR_CONTEXT_PARAM_COMMA nullptr);
 	cn_cbor_mapput_int(pkey, -1,
-		cn_cbor_int_create(1, CBOR_CONTEXT_PARAM_COMMA NULL),
-		CBOR_CONTEXT_PARAM_COMMA NULL);
+		cn_cbor_int_create(1, CBOR_CONTEXT_PARAM_COMMA nullptr),
+		CBOR_CONTEXT_PARAM_COMMA nullptr);
 	cn_cbor_mapput_int(pkey, -2,
-		cn_cbor_data_create(rgbX, sizeof(rgbX), CBOR_CONTEXT_PARAM_COMMA NULL),
-		CBOR_CONTEXT_PARAM_COMMA NULL);
+		cn_cbor_data_create(rgbX, sizeof(rgbX), CBOR_CONTEXT_PARAM_COMMA nullptr),
+		CBOR_CONTEXT_PARAM_COMMA nullptr);
 	cn_cbor_mapput_int(pkey, -3,
-		cn_cbor_data_create(rgbY, sizeof(rgbY), CBOR_CONTEXT_PARAM_COMMA NULL),
-		CBOR_CONTEXT_PARAM_COMMA NULL);
+		cn_cbor_data_create(rgbY, sizeof(rgbY), CBOR_CONTEXT_PARAM_COMMA nullptr),
+		CBOR_CONTEXT_PARAM_COMMA nullptr);
 	cn_cbor_mapput_int(pkey, COSE_Key_ID,
-		cn_cbor_data_create(kid, sizeof(kid), CBOR_CONTEXT_PARAM_COMMA NULL),
-		CBOR_CONTEXT_PARAM_COMMA NULL);
+		cn_cbor_data_create(kid, sizeof(kid), CBOR_CONTEXT_PARAM_COMMA nullptr),
+		CBOR_CONTEXT_PARAM_COMMA nullptr);
 	cn_cbor_mapput_int(pkey, -4,
-		cn_cbor_data_create(rgbD, sizeof(rgbD), CBOR_CONTEXT_PARAM_COMMA NULL),
-		CBOR_CONTEXT_PARAM_COMMA NULL);
+		cn_cbor_data_create(rgbD, sizeof(rgbD), CBOR_CONTEXT_PARAM_COMMA nullptr),
+		CBOR_CONTEXT_PARAM_COMMA nullptr);
 
-	COSE_Sign_SetContent(hEncObj, (byte *)sz, strlen(sz), NULL);
+	COSE_Sign_SetContent(hEncObj, (byte *)sz, strlen(sz), nullptr);
 	COSE_Signer_Free(COSE_Sign_add_signer(
-		hEncObj, pkey, COSE_Algorithm_ECDSA_SHA_256, NULL));
+		hEncObj, pkey, COSE_Algorithm_ECDSA_SHA_256, nullptr));
 
-	COSE_Sign_Sign(hEncObj, NULL);
+	COSE_Sign_Sign(hEncObj, nullptr);
 
-	cb = COSE_Encode((HCOSE)hEncObj, NULL, 0, 0) + 1;
+	cb = COSE_Encode((HCOSE)hEncObj, nullptr, 0, 0) + 1;
 	rgb = (byte *)malloc(cb);
 	cb = COSE_Encode((HCOSE)hEncObj, rgb, 0, cb);
 
@@ -543,7 +543,7 @@
 	char * szX;
 	int cbPrint = 0;
 	cn_cbor * cbor = COSE_get_cbor((HCOSE)hEncObj);
-	cbPrint = cn_cbor_printer_write(NULL, 0, cbor, "  ", "\r\n");
+	cbPrint = cn_cbor_printer_write(nullptr, 0, cbor, "  ", "\r\n");
 	szX = malloc(cbPrint);
 	cn_cbor_printer_write(szX, cbPrint, cbor, "  ", "\r\n");
 	fprintf(stdout, "%s", szX);
@@ -554,19 +554,19 @@
 
 	int typ;
 	hEncObj = (HCOSE_SIGN)COSE_Decode(
-		rgb, (int)cb, &typ, COSE_sign_object, CBOR_CONTEXT_PARAM_COMMA NULL);
+		rgb, (int)cb, &typ, COSE_sign_object, CBOR_CONTEXT_PARAM_COMMA nullptr);
 
 #if 0
 	int iSigner = 0;
 	do {
 		HCOSE_RECIPIENT hSigner;
 
-		hSigner = COSE_Encrypt_GetRecipient(hEncObj, iSigner, NULL);
-		if (hSigner == NULL) break;
+		hSigner = COSE_Encrypt_GetRecipient(hEncObj, iSigner, nullptr);
+		if (hSigner == nullptr) break;
 
-		COSE_Recipient_SetKey(hSigner, rgbSecret, cbSecret, NULL);
+		COSE_Recipient_SetKey(hSigner, rgbSecret, cbSecret, nullptr);
 
-		COSE_Encrypt_decrypt(hEncObj, hSigner, NULL);
+		COSE_Encrypt_decrypt(hEncObj, hSigner, nullptr);
 
 		iSigner += 1;
 
@@ -587,8 +587,8 @@
 	const cn_cbor *pInput = cn_cbor_mapget_string(pControl, "input");
 	const cn_cbor *pFail;
 	const cn_cbor *pSign;
-	HCOSE_SIGN1 hSig = NULL;
-	cn_cbor *pkey = NULL;
+	HCOSE_SIGN1 hSig = nullptr;
+	cn_cbor *pkey = nullptr;
 	int type;
 	bool fFail = false;
 	bool fFailBody = false;
@@ -596,20 +596,20 @@
 
 	if (false) {
 	exitHere:
-		if (hSig != NULL) {
+		if (hSig != nullptr) {
 			COSE_Sign1_Free(hSig);
 		}
 
 		if (fFail) {
 			CFails += 1;
 		}
-		if (pkey != NULL) {
+		if (pkey != nullptr) {
 			CN_CBOR_FREE(pkey, context);
 		}
 		return fNoAlgSupport ? 0 : 1;
 
 	returnError:
-		if (hSig != NULL) {
+		if (hSig != nullptr) {
 			COSE_Sign1_Free(hSig);
 		}
 
@@ -618,21 +618,21 @@
 	}
 
 	pFail = cn_cbor_mapget_string(pControl, "fail");
-	if ((pFail != NULL) && (pFail->type == CN_CBOR_TRUE)) {
+	if ((pFail != nullptr) && (pFail->type == CN_CBOR_TRUE)) {
 		fFailBody = true;
 	}
 
-	if ((pInput == NULL) || (pInput->type != CN_CBOR_MAP)) {
+	if ((pInput == nullptr) || (pInput->type != CN_CBOR_MAP)) {
 		goto returnError;
 	}
 	pSign = cn_cbor_mapget_string(pInput, "sign0");
-	if ((pSign == NULL) || (pSign->type != CN_CBOR_MAP)) {
+	if ((pSign == nullptr) || (pSign->type != CN_CBOR_MAP)) {
 		goto returnError;
 	}
 
 	hSig = (HCOSE_SIGN1)COSE_Decode(pbEncoded, cbEncoded, &type,
-		COSE_sign1_object, CBOR_CONTEXT_PARAM_COMMA NULL);
-	if (hSig == NULL) {
+		COSE_sign1_object, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	if (hSig == nullptr) {
 		if (fFailBody) {
 			return 0;
 		}
@@ -647,23 +647,23 @@
 	}
 
 	pkey = BuildKey(cn_cbor_mapget_string(pSign, "key"), false);
-	if (pkey == NULL) {
+	if (pkey == nullptr) {
 		fFail = true;
 		goto exitHere;
 	}
 
 	cn_cbor *alg =
-		COSE_Sign1_map_get_int(hSig, COSE_Header_Algorithm, COSE_BOTH, NULL);
+		COSE_Sign1_map_get_int(hSig, COSE_Header_Algorithm, COSE_BOTH, nullptr);
 	if (!IsAlgorithmSupported(alg)) {
 		fNoAlgSupport = true;
 	}
 
 	pFail = cn_cbor_mapget_string(pInput, "fail");
-	if (COSE_Sign1_validate(hSig, pkey, NULL)) {
+	if (COSE_Sign1_validate(hSig, pkey, nullptr)) {
 		if (fNoAlgSupport) {
 			fFail = true;
 		}
-		else if ((pFail != NULL) && (pFail->type != CN_CBOR_TRUE)) {
+		else if ((pFail != nullptr) && (pFail->type != CN_CBOR_TRUE)) {
 			fFail = true;
 		}
 	}
@@ -672,7 +672,7 @@
 			fFailBody = false;
 			fFail = false;
 		}
-		else if ((pFail == NULL) || (pFail->type == CN_CBOR_FALSE)) {
+		else if ((pFail == nullptr) || (pFail->type == CN_CBOR_FALSE)) {
 			fFail = true;
 		}
 	}
@@ -682,10 +682,10 @@
 
 	//  Validate counter signatures on signers
 	cn_cbor *countersignList = cn_cbor_mapget_string(pSign, "countersign");
-	if (countersignList != NULL) {
+	if (countersignList != nullptr) {
 		cn_cbor *countersigners =
 			cn_cbor_mapget_string(countersignList, "signers");
-		if (countersigners == NULL) {
+		if (countersigners == nullptr) {
 			fFail = true;
 			goto exitHere;
 		}
@@ -693,7 +693,7 @@
 		bool forward = true;
 
 		if (COSE_Sign1_map_get_int(hSig, COSE_Header_CounterSign,
-				COSE_UNPROTECT_ONLY, 0) == NULL) {
+				COSE_UNPROTECT_ONLY, 0) == nullptr) {
 			goto returnError;
 		}
 
@@ -702,7 +702,7 @@
 
 			HCOSE_COUNTERSIGN h =
 				COSE_Sign1_get_countersignature(hSig, counterNo, 0);
-			if (h == NULL) {
+			if (h == nullptr) {
 				fFail = true;
 				continue;
 			}
@@ -712,7 +712,7 @@
 
 			cn_cbor *pkeyCountersign =
 				BuildKey(cn_cbor_mapget_string(counterSigner, "key"), false);
-			if (pkeyCountersign == NULL) {
+			if (pkeyCountersign == nullptr) {
 				fFail = true;
 				COSE_CounterSign_Free(h);
 				continue;
@@ -726,7 +726,7 @@
 			}
 
 			alg = COSE_Sign1_map_get_int(
-				hSig, COSE_Header_Algorithm, COSE_BOTH, NULL);
+				hSig, COSE_Header_Algorithm, COSE_BOTH, nullptr);
 			if (!IsAlgorithmSupported(alg)) {
 				fNoAlgSupport = true;
 				noSignAlg = true;
@@ -771,39 +771,39 @@
 
 int BuildSign1Message(const cn_cbor *pControl)
 {
-	cn_cbor *pkey = NULL;	
+	cn_cbor *pkey = nullptr;	
 	//
 	//  We don't run this for all control sequences - skip those marked fail.
 	//
 
 	const cn_cbor *pFail = cn_cbor_mapget_string(pControl, "fail");
-	if ((pFail != NULL) && (pFail->type == CN_CBOR_TRUE)) {
+	if ((pFail != nullptr) && (pFail->type == CN_CBOR_TRUE)) {
 		return 0;
 	}
 
 	HCOSE_SIGN1 hSignObj =
-		COSE_Sign1_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
+		COSE_Sign1_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
 
 	const cn_cbor *pInputs = cn_cbor_mapget_string(pControl, "input");
-	if (pInputs == NULL) {
+	if (pInputs == nullptr) {
 	returnError:
-		if (hSignObj != NULL) {
+		if (hSignObj != nullptr) {
 			COSE_Sign1_Free(hSignObj);
 		}
-		if (pkey != NULL) {
+		if (pkey != nullptr) {
 			CN_CBOR_FREE(pkey, context);
 		}
 		CFails += 1;
 		return 1;
 	}
 	const cn_cbor *pSign = cn_cbor_mapget_string(pInputs, "sign0");
-	if (pSign == NULL) {
+	if (pSign == nullptr) {
 		goto returnError;
 	}
 
 	const cn_cbor *pContent = cn_cbor_mapget_string(pInputs, "plaintext");
 	if (!COSE_Sign1_SetContent(
-			hSignObj, pContent->v.bytes, pContent->length, NULL)) {
+			hSignObj, pContent->v.bytes, pContent->length, nullptr)) {
 		goto returnError;
 	}
 
@@ -813,27 +813,27 @@
 	}
 
 	pkey = BuildKey(cn_cbor_mapget_string(pSign, "key"), false);
-	if (pkey == NULL) {
+	if (pkey == nullptr) {
 		goto returnError;
 	}
 
 #if INCLUDE_COUNTERSIGNATURE
 	// On the sign body
 	cn_cbor *countersigns = cn_cbor_mapget_string(pSign, "countersign");
-	if (countersigns != NULL) {
+	if (countersigns != nullptr) {
 		countersigns = cn_cbor_mapget_string(countersigns, "signers");
 		cn_cbor *countersign = countersigns->first_child;
 
-		for (; countersign != NULL; countersign = countersign->next) {
+		for (; countersign != nullptr; countersign = countersign->next) {
 			cn_cbor *pkeyCountersign =
 				BuildKey(cn_cbor_mapget_string(countersign, "key"), false);
-			if (pkeyCountersign == NULL) {
+			if (pkeyCountersign == nullptr) {
 				goto returnError;
 			}
 
 			HCOSE_COUNTERSIGN hCountersign =
-				COSE_CounterSign_Init(CBOR_CONTEXT_PARAM_COMMA NULL);
-			if (hCountersign == NULL) {
+				COSE_CounterSign_Init(CBOR_CONTEXT_PARAM_COMMA nullptr);
+			if (hCountersign == nullptr) {
 				goto returnError;
 			}
 
@@ -843,13 +843,13 @@
 				goto returnError;
 			}
 
-			if (!COSE_CounterSign_SetKey(hCountersign, pkeyCountersign, NULL)) {
+			if (!COSE_CounterSign_SetKey(hCountersign, pkeyCountersign, nullptr)) {
 				COSE_CounterSign_Free(hCountersign);
 				goto returnError;
 			}
 
 			if (!COSE_Sign1_add_countersignature(
-					hSignObj, hCountersign, NULL)) {
+					hSignObj, hCountersign, nullptr)) {
 				COSE_CounterSign_Free(hCountersign);
 				goto returnError;
 			}
@@ -860,16 +860,16 @@
 
 #endif
 
-	if (!COSE_Sign1_Sign(hSignObj, pkey, NULL)) {
+	if (!COSE_Sign1_Sign(hSignObj, pkey, nullptr)) {
 		goto returnError;
 	}
 
-	size_t cb = COSE_Encode((HCOSE)hSignObj, NULL, 0, 0) + 1;
+	size_t cb = COSE_Encode((HCOSE)hSignObj, nullptr, 0, 0) + 1;
 	byte *rgb = (byte *)malloc(cb);
 	cb = COSE_Encode((HCOSE)hSignObj, rgb, 0, cb);
 
 	COSE_Sign1_Free(hSignObj);
-	if (pkey != NULL) {
+	if (pkey != nullptr) {
 		CN_CBOR_FREE(pkey, context);
 	}
 
@@ -883,28 +883,28 @@
 #if INCLUDE_SIGN
 void Sign_Corners()
 {
-	HCOSE_SIGN hSign = NULL;
+	HCOSE_SIGN hSign = nullptr;
 	HCOSE_SIGN hSignBad;
-	HCOSE_SIGN hSignNULL = NULL;
-	HCOSE_SIGNER hSigner = NULL;
+	HCOSE_SIGN hSignNULL = nullptr;
+	HCOSE_SIGNER hSigner = nullptr;
 	HCOSE_SIGNER hSignerBad;
-	HCOSE_SIGNER hSignerNULL = NULL;
+	HCOSE_SIGNER hSignerNULL = nullptr;
 	byte rgb[10];
-	cn_cbor *cn = cn_cbor_int_create(5, CBOR_CONTEXT_PARAM_COMMA NULL);
+	cn_cbor *cn = cn_cbor_int_create(5, CBOR_CONTEXT_PARAM_COMMA nullptr);
 	cose_errback cose_error;
 
-	hSign = COSE_Sign_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
+	hSign = COSE_Sign_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
 #if INCLUDE_SIGN1
 	hSignBad = (HCOSE_SIGN)COSE_Sign1_Init(
-		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
+		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
 #else
 	hSignBad = (HCOSE_SIGN)COSE_CALLOC(1, sizeof(COSE), context);
 #endif
 
-	hSigner = COSE_Signer_Init(CBOR_CONTEXT_PARAM_COMMA NULL);
+	hSigner = COSE_Signer_Init(CBOR_CONTEXT_PARAM_COMMA nullptr);
 #if INCLUDE_ENCRYPT || INCLUDE_MAC
 	hSignerBad = (HCOSE_SIGNER)COSE_Recipient_Init(
-		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
+		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
 #else
 	hSignerBad = (HCOSE_SIGNER)COSE_CALLOC(1, sizeof(COSE), context);
 #endif
@@ -922,7 +922,7 @@
 		COSE_ERR_INVALID_HANDLE, CFails++);
 	CHECK_FAILURE(COSE_Sign_SetContent(hSignBad, rgb, sizeof(rgb), &cose_error),
 		COSE_ERR_INVALID_HANDLE, CFails++);
-	CHECK_FAILURE(COSE_Sign_SetContent(hSign, NULL, sizeof(rgb), &cose_error),
+	CHECK_FAILURE(COSE_Sign_SetContent(hSign, nullptr, sizeof(rgb), &cose_error),
 		COSE_ERR_INVALID_PARAMETER, CFails++);
 
 	CHECK_FAILURE(COSE_Sign_map_get_int(hSignNULL, 1, COSE_BOTH, &cose_error),
@@ -939,7 +939,7 @@
 		COSE_Sign_map_put_int(hSignBad, 1, cn, COSE_PROTECT_ONLY, &cose_error),
 		COSE_ERR_INVALID_HANDLE, CFails++);
 	CHECK_FAILURE(
-		COSE_Sign_map_put_int(hSign, 1, NULL, COSE_PROTECT_ONLY, &cose_error),
+		COSE_Sign_map_put_int(hSign, 1, nullptr, COSE_PROTECT_ONLY, &cose_error),
 		COSE_ERR_INVALID_PARAMETER, CFails++);
 	CHECK_FAILURE(COSE_Sign_map_put_int(hSign, 1, cn,
 					  COSE_PROTECT_ONLY | COSE_UNPROTECT_ONLY, &cose_error),
@@ -960,7 +960,7 @@
 		COSE_ERR_INVALID_HANDLE, CFails++);
 	CHECK_FAILURE(COSE_Sign_add_signer(hSignBad, cn, 0, &cose_error),
 		COSE_ERR_INVALID_HANDLE, CFails++);
-	CHECK_FAILURE(COSE_Sign_add_signer(hSign, NULL, 0, &cose_error),
+	CHECK_FAILURE(COSE_Sign_add_signer(hSign, nullptr, 0, &cose_error),
 		COSE_ERR_INVALID_PARAMETER, CFails++);
 
 	CHECK_FAILURE(COSE_Sign_GetSigner(hSignNULL, 1, &cose_error),
@@ -988,7 +988,7 @@
 		COSE_ERR_INVALID_HANDLE, CFails++);
 	CHECK_FAILURE(COSE_Signer_SetKey(hSignerBad, cn, &cose_error),
 		COSE_ERR_INVALID_HANDLE, CFails++);
-	CHECK_FAILURE(COSE_Signer_SetKey(hSigner, NULL, &cose_error),
+	CHECK_FAILURE(COSE_Signer_SetKey(hSigner, nullptr, &cose_error),
 		COSE_ERR_INVALID_PARAMETER, CFails++);
 
 	CHECK_FAILURE(
@@ -1007,7 +1007,7 @@
 					  hSignerBad, 1, cn, COSE_PROTECT_ONLY, &cose_error),
 		COSE_ERR_INVALID_HANDLE, CFails++);
 	CHECK_FAILURE(COSE_Signer_map_put_int(
-					  hSigner, 1, NULL, COSE_PROTECT_ONLY, &cose_error),
+					  hSigner, 1, nullptr, COSE_PROTECT_ONLY, &cose_error),
 		COSE_ERR_INVALID_PARAMETER, CFails++);
 	CHECK_FAILURE(COSE_Signer_map_put_int(hSigner, 1, cn,
 					  COSE_PROTECT_ONLY | COSE_UNPROTECT_ONLY, &cose_error),
@@ -1025,63 +1025,63 @@
 	//
 	//  Unsupported algorithm
 
-	hSign = COSE_Sign_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
-	if (hSign == NULL) {
+	hSign = COSE_Sign_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	if (hSign == nullptr) {
 		CFails++;
 	}
-	hSigner = COSE_Signer_Init(CBOR_CONTEXT_PARAM_COMMA NULL);
-	if (hSigner == NULL) {
+	hSigner = COSE_Signer_Init(CBOR_CONTEXT_PARAM_COMMA nullptr);
+	if (hSigner == nullptr) {
 		CFails++;
 	}
 
-	if (!COSE_Sign_SetContent(hSign, (byte *)"Message", 7, NULL)) {
+	if (!COSE_Sign_SetContent(hSign, (byte *)"Message", 7, nullptr)) {
 		CFails++;
 	}
 	if (!COSE_Signer_map_put_int(hSigner, COSE_Header_Algorithm,
-			cn_cbor_int_create(-99, CBOR_CONTEXT_PARAM_COMMA NULL),
-			COSE_PROTECT_ONLY, NULL)) {
+			cn_cbor_int_create(-99, CBOR_CONTEXT_PARAM_COMMA nullptr),
+			COSE_PROTECT_ONLY, nullptr)) {
 		CFails++;
 	}
-	if (!COSE_Sign_AddSigner(hSign, hSigner, NULL)) {
+	if (!COSE_Sign_AddSigner(hSign, hSigner, nullptr)) {
 		CFails++;
 	}
 	CHECK_FAILURE(COSE_Sign_Sign(hSign, &cose_error),
 		COSE_ERR_UNKNOWN_ALGORITHM, CFails++);
-	if (COSE_Sign_GetSigner(hSign, 9, NULL)) {
+	if (COSE_Sign_GetSigner(hSign, 9, nullptr)) {
 		CFails++;
 	}
 	COSE_Sign_Free(hSign);
 	COSE_Signer_Free(hSigner);
 
-	hSign = COSE_Sign_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
-	if (hSign == NULL) {
+	hSign = COSE_Sign_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	if (hSign == nullptr) {
 		CFails++;
 	}
-	hSigner = COSE_Signer_Init(CBOR_CONTEXT_PARAM_COMMA NULL);
-	if (hSigner == NULL) {
+	hSigner = COSE_Signer_Init(CBOR_CONTEXT_PARAM_COMMA nullptr);
+	if (hSigner == nullptr) {
 		CFails++;
 	}
 
-	if (!COSE_Sign_SetContent(hSign, (byte *)"Message", 7, NULL)) {
+	if (!COSE_Sign_SetContent(hSign, (byte *)"Message", 7, nullptr)) {
 		CFails++;
 	}
 	if (!COSE_Signer_map_put_int(hSigner, COSE_Header_Algorithm,
-			cn_cbor_string_create("hmac", CBOR_CONTEXT_PARAM_COMMA NULL),
-			COSE_PROTECT_ONLY, NULL)) {
+			cn_cbor_string_create("hmac", CBOR_CONTEXT_PARAM_COMMA nullptr),
+			COSE_PROTECT_ONLY, nullptr)) {
 		CFails++;
 	}
-	if (!COSE_Sign_AddSigner(hSign, hSigner, NULL)) {
+	if (!COSE_Sign_AddSigner(hSign, hSigner, nullptr)) {
 		CFails++;
 	}
 	CHECK_FAILURE(COSE_Sign_Sign(hSign, &cose_error),
 		COSE_ERR_UNKNOWN_ALGORITHM, CFails++);
-	if (COSE_Sign_GetSigner(hSign, 9, NULL)) {
+	if (COSE_Sign_GetSigner(hSign, 9, nullptr)) {
 		CFails++;
 	}
 
 	cn = COSE_Signer_map_get_int(
 		hSigner, COSE_Header_Algorithm, COSE_BOTH, &cose_error);
-	if (cn != NULL) {
+	if (cn != nullptr) {
 		if (cn->type != CN_CBOR_TEXT) {
 			CFails++;
 		}
@@ -1095,19 +1095,19 @@
 #if INCLUDE_SIGN1
 void Sign1_Corners()
 {
-	HCOSE_SIGN1 hSign = NULL;
-	HCOSE_SIGN1 hSignNULL = NULL;
+	HCOSE_SIGN1 hSign = nullptr;
+	HCOSE_SIGN1 hSignNULL = nullptr;
 	HCOSE_SIGN1 hSignBad;
 
 	byte rgb[10];
-	cn_cbor *cn = cn_cbor_int_create(5, CBOR_CONTEXT_PARAM_COMMA NULL);
+	cn_cbor *cn = cn_cbor_int_create(5, CBOR_CONTEXT_PARAM_COMMA nullptr);
 	cose_errback cose_error;
 
 	hSign =
-		COSE_Sign1_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
+		COSE_Sign1_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
 #if INCLUDE_SIGN
 	hSignBad = (HCOSE_SIGN1)COSE_Sign_Init(
-		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
+		COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
 #else
 	hSignBad = (HCOSE_SIGN1)COSE_CALLOC(1, sizeof(COSE), context);
 #endif
@@ -1121,7 +1121,7 @@
 		COSE_ERR_INVALID_HANDLE, CFails++);
 	CHECK_FAILURE(COSE_Sign1_SetContent(hSignBad, rgb, 10, &cose_error),
 		COSE_ERR_INVALID_HANDLE, CFails++);
-	CHECK_FAILURE(COSE_Sign1_SetContent(hSign, NULL, 10, &cose_error),
+	CHECK_FAILURE(COSE_Sign1_SetContent(hSign, nullptr, 10, &cose_error),
 		COSE_ERR_INVALID_PARAMETER, CFails++);
 
 	CHECK_FAILURE(COSE_Sign1_map_get_int(hSignNULL, 1, COSE_BOTH, &cose_error),
@@ -1138,7 +1138,7 @@
 		COSE_Sign1_map_put_int(hSignBad, 1, cn, COSE_PROTECT_ONLY, &cose_error),
 		COSE_ERR_INVALID_HANDLE, CFails++);
 	CHECK_FAILURE(
-		COSE_Sign1_map_put_int(hSign, 1, NULL, COSE_PROTECT_ONLY, &cose_error),
+		COSE_Sign1_map_put_int(hSign, 1, nullptr, COSE_PROTECT_ONLY, &cose_error),
 		COSE_ERR_INVALID_PARAMETER, CFails++);
 	CHECK_FAILURE(COSE_Sign1_map_put_int(hSign, 1, cn,
 					  COSE_PROTECT_ONLY | COSE_UNPROTECT_ONLY, &cose_error),
@@ -1148,14 +1148,14 @@
 		COSE_ERR_INVALID_HANDLE, CFails++);
 	CHECK_FAILURE(COSE_Sign1_Sign(hSignBad, cn, &cose_error),
 		COSE_ERR_INVALID_HANDLE, CFails++);
-	CHECK_FAILURE(COSE_Sign1_Sign(hSign, NULL, &cose_error),
+	CHECK_FAILURE(COSE_Sign1_Sign(hSign, nullptr, &cose_error),
 		COSE_ERR_INVALID_PARAMETER, CFails++);
 
 	CHECK_FAILURE(COSE_Sign1_validate(hSignNULL, cn, &cose_error),
 		COSE_ERR_INVALID_HANDLE, CFails++);
 	CHECK_FAILURE(COSE_Sign1_validate(hSignBad, cn, &cose_error),
 		COSE_ERR_INVALID_HANDLE, CFails++);
-	CHECK_FAILURE(COSE_Sign1_validate(hSign, NULL, &cose_error),
+	CHECK_FAILURE(COSE_Sign1_validate(hSign, nullptr, &cose_error),
 		COSE_ERR_INVALID_PARAMETER, CFails++);
 
 	CHECK_FAILURE(
@@ -1171,18 +1171,18 @@
 	//  Unsupported algorithm
 
 	hSign =
-		COSE_Sign1_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
-	if (hSign == NULL) {
+		COSE_Sign1_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	if (hSign == nullptr) {
 		CFails++;
 	}
 
-	cn = cn_cbor_int_create(15, CBOR_CONTEXT_PARAM_COMMA NULL);
-	if (!COSE_Sign1_SetContent(hSign, (byte *)"Message", 7, NULL)) {
+	cn = cn_cbor_int_create(15, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	if (!COSE_Sign1_SetContent(hSign, (byte *)"Message", 7, nullptr)) {
 		CFails++;
 	}
 	if (!COSE_Sign1_map_put_int(hSign, COSE_Header_Algorithm,
-			cn_cbor_int_create(-99, CBOR_CONTEXT_PARAM_COMMA NULL),
-			COSE_PROTECT_ONLY, NULL)) {
+			cn_cbor_int_create(-99, CBOR_CONTEXT_PARAM_COMMA nullptr),
+			COSE_PROTECT_ONLY, nullptr)) {
 		CFails++;
 	}
 	CHECK_FAILURE(COSE_Sign1_Sign(hSign, cn, &cose_error),
@@ -1190,18 +1190,18 @@
 	COSE_Sign1_Free(hSign);
 
 	hSign =
-		COSE_Sign1_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA NULL);
-	if (hSign == NULL) {
+		COSE_Sign1_Init(COSE_INIT_FLAGS_NONE, CBOR_CONTEXT_PARAM_COMMA nullptr);
+	if (hSign == nullptr) {
 		CFails++;
 	}
 
-	if (!COSE_Sign1_SetContent(hSign, (byte *)"Message", 7, NULL)) {
+	if (!COSE_Sign1_SetContent(hSign, (byte *)"Message", 7, nullptr)) {
 		CFails++;
 	}
 
 	if (!COSE_Sign1_map_put_int(hSign, COSE_Header_Algorithm,
-			cn_cbor_string_create("hmac", CBOR_CONTEXT_PARAM_COMMA NULL),
-			COSE_PROTECT_ONLY, NULL)) {
+			cn_cbor_string_create("hmac", CBOR_CONTEXT_PARAM_COMMA nullptr),
+			COSE_PROTECT_ONLY, nullptr)) {
 		CFails++;
 	}
 	CHECK_FAILURE(COSE_Sign1_Sign(hSign, cn, &cose_error),