diff --git a/src/Encrypt.c b/src/Encrypt.c
index 57a25b4..dd253c7 100644
--- a/src/Encrypt.c
+++ b/src/Encrypt.c
@@ -101,6 +101,11 @@
 
 	if (!IsValidEnvelopedHandle(h)) return false;
 
+	if (p->m_message.m_refCount > 1) {
+		p->m_message.m_refCount--;
+		return true;
+	}
+
 #ifdef USE_CBOR_CONTEXT
 	context = ((COSE_Enveloped *)h)->m_message.m_allocContext;
 #endif
diff --git a/test/mac_test.c b/test/mac_test.c
index f14879a..630698e 100644
--- a/test/mac_test.c
+++ b/test/mac_test.c
@@ -383,6 +383,7 @@
 	if (COSE_Mac_validate((HCOSE_MAC)hEncrypt, (HCOSE_RECIPIENT)hMAC, NULL)) CFails++;
 	if (COSE_Mac_AddRecipient((HCOSE_MAC)hEncrypt, (HCOSE_RECIPIENT)hMAC, NULL)) CFails++;
 	if (COSE_Mac_GetRecipient((HCOSE_MAC)hEncrypt, 0, NULL)) CFails++;
+	if (COSE_Mac_SetExternal((HCOSE_MAC)hEncrypt, rgb, 0, NULL)) CFails++;
 	if (COSE_Mac_Free((HCOSE_MAC)hEncrypt)) CFails++;
 
     hEncrypt = COSE_Encrypt_Init(CBOR_CONTEXT_PARAM_COMMA NULL);
@@ -394,6 +395,7 @@
 	if (COSE_Mac_validate((HCOSE_MAC)hEncrypt, (HCOSE_RECIPIENT)hMAC, NULL)) CFails++;
 	if (COSE_Mac_AddRecipient((HCOSE_MAC)hEncrypt, (HCOSE_RECIPIENT)hMAC, NULL)) CFails++;
 	if (COSE_Mac_GetRecipient((HCOSE_MAC)hEncrypt, 0, NULL)) CFails++;
+	if (COSE_Mac_SetExternal((HCOSE_MAC)hEncrypt, rgb, 0, NULL)) CFails++;
 	if (COSE_Mac_Free((HCOSE_MAC)hEncrypt)) CFails++;
 
     //
@@ -433,6 +435,7 @@
 	if (COSE_Mac0_map_put_int((HCOSE_MAC0)hEncrypt, 1, cn, COSE_PROTECT_ONLY, NULL)) CFails++;
 	if (COSE_Mac0_encrypt((HCOSE_MAC0)hEncrypt, rgb, 10, NULL)) CFails++;
 	if (COSE_Mac0_validate((HCOSE_MAC0)hEncrypt, rgb, 10, NULL)) CFails++;
+	if (COSE_Mac0_SetExternal((HCOSE_MAC0)hEncrypt, rgb, 0, NULL)) CFails++;
 	if (COSE_Mac0_Free((HCOSE_MAC0)hEncrypt)) CFails++;
 
 	hEncrypt = COSE_Encrypt_Init(CBOR_CONTEXT_PARAM_COMMA NULL);
@@ -442,6 +445,7 @@
 	if (COSE_Mac0_map_put_int((HCOSE_MAC0)hEncrypt, 1, cn, COSE_PROTECT_ONLY, NULL)) CFails++;
 	if (COSE_Mac0_encrypt((HCOSE_MAC0)hEncrypt, rgb, 10, NULL)) CFails++;
 	if (COSE_Mac0_validate((HCOSE_MAC0)hEncrypt, rgb, 10, NULL)) CFails++;
+	if (COSE_Mac0_SetExternal((HCOSE_MAC0)hEncrypt, rgb, 0, NULL)) CFails++;
 
 	if (COSE_Mac0_Free((HCOSE_MAC0)hEncrypt)) CFails++;
 
diff --git a/test/sign.c b/test/sign.c
index 9c4838d..0cd4183 100644
--- a/test/sign.c
+++ b/test/sign.c
@@ -415,3 +415,51 @@
 
 	return;
 }
+
+void Sign0_Corners()
+{
+	HCOSE_SIGN0 hSign = NULL;
+	HCOSE_SIGN0 hSign2;
+	byte rgb[10];
+	cn_cbor * cn = cn_cbor_int_create(5, CBOR_CONTEXT_PARAM_COMMA NULL);
+
+	hSign2 = COSE_Sign0_Init(CBOR_CONTEXT_PARAM_COMMA NULL);
+	//  Missing case - addref then release on item
+
+	//  Incorrect algorithm
+
+	//  Null handle checks
+
+	if (COSE_Sign0_SetContent(hSign, rgb, 10, NULL)) CFails++;
+	if (COSE_Sign0_map_get_int(hSign, 1, COSE_BOTH, NULL)) CFails++;
+	if (COSE_Sign0_map_put_int(hSign, 1, cn, COSE_PROTECT_ONLY, NULL)) CFails++;
+	if (COSE_Sign0_Sign(hSign, cn, NULL)) CFails++;
+	if (COSE_Sign0_Sign(hSign2, NULL, NULL)) CFails++;
+	if (COSE_Sign0_validate(hSign, cn, NULL)) CFails++;
+	if (COSE_Sign0_validate(hSign2, NULL, NULL)) CFails++;
+	if (COSE_Sign0_SetExternal(hSign, rgb, sizeof(rgb), NULL)) CFails++;
+
+	hSign = (HCOSE_SIGN0)COSE_Encrypt_Init(CBOR_CONTEXT_PARAM_COMMA NULL);
+
+	if (COSE_Sign0_SetContent(hSign, rgb, 10, NULL)) CFails++;
+	if (COSE_Sign0_map_get_int(hSign, 1, COSE_BOTH, NULL)) CFails++;
+	if (COSE_Sign0_map_put_int(hSign, 1, cn, COSE_PROTECT_ONLY, NULL)) CFails++;
+	if (COSE_Sign0_Sign(hSign, cn, NULL)) CFails++;
+	if (COSE_Sign0_validate(hSign, cn, NULL)) CFails++;
+	if (COSE_Sign0_SetExternal(hSign, rgb, sizeof(rgb), NULL)) CFails++;
+
+	//
+	//  Unsupported algorithm
+
+	hSign = COSE_Sign0_Init(CBOR_CONTEXT_PARAM_COMMA NULL);
+	if (hSign == NULL) CFails++;
+
+	if (!COSE_Sign0_SetContent(hSign, (byte *) "Message", 7, NULL)) CFails++;
+	if (!COSE_Sign0_map_put_int(hSign, COSE_Header_Algorithm, cn_cbor_int_create(-99, CBOR_CONTEXT_PARAM_COMMA NULL), COSE_PROTECT_ONLY, NULL)) CFails++;
+	if (COSE_Sign0_Sign(hSign, cn, NULL)) CFails++;
+
+	if (!COSE_Sign0_map_put_int(hSign, COSE_Header_Algorithm, cn_cbor_string_create("hmac", CBOR_CONTEXT_PARAM_COMMA NULL), COSE_PROTECT_ONLY, NULL)) CFails++;
+	if (COSE_Sign0_Sign(hSign, cn, NULL)) CFails++;
+
+	return;
+}
diff --git a/test/test.c b/test/test.c
index baf54a8..60f6014 100644
--- a/test/test.c
+++ b/test/test.c
@@ -466,12 +466,13 @@
 
 void RunCorners()
 {
-    	Test_cn_cbor_array_replace();
-        MAC_Corners();
-		MAC0_Corners();
-		Encrypt_Corners();
-		Enveloped_Corners();
-		Sign_Corners();
+	Test_cn_cbor_array_replace();
+	MAC_Corners();
+	MAC0_Corners();
+	Encrypt_Corners();
+	Enveloped_Corners();
+	Sign_Corners();
+	Sign0_Corners();
 }
 
 void RunMemoryTest(const char * szFileName)
diff --git a/test/test.h b/test/test.h
index 2837ab2..967bd48 100644
--- a/test/test.h
+++ b/test/test.h
@@ -30,6 +30,7 @@
 int ValidateSign0(const cn_cbor * pControl);
 int BuildSign0Message(const cn_cbor * pControl);
 void Sign_Corners();
+void Sign0_Corners();
 
 
 // mac_testc
