diff --git a/src/Cose.c b/src/Cose.c
index 930f42e..a30dc10 100644
--- a/src/Cose.c
+++ b/src/Cose.c
@@ -203,11 +203,10 @@
 	return NULL;
 }
 
-byte RgbDontUse[8 * 1024];   //  Remove this array when we can compute the size of a cbor serialization without this hack.
 
 size_t COSE_Encode(HCOSE msg, byte * rgb, size_t ib, size_t cb)
 {
-	if (rgb == NULL) return cn_cbor_encoder_write(RgbDontUse, 0, sizeof(RgbDontUse), ((COSE *)msg)->m_cbor) + ib;
+	if (rgb == NULL) return cn_cbor_encode_size(((COSE *)msg)->m_cbor) + ib;
 	return cn_cbor_encoder_write(rgb, ib, cb, ((COSE*)msg)->m_cbor);
 }
 
@@ -313,8 +312,6 @@
 	return f;
 }
 
-byte RgbDontUse3[1024];
-
 cn_cbor * _COSE_encode_protected(COSE * pMessage, cose_errback * perr)
 {
 	cn_cbor * pProtected;
@@ -332,7 +329,7 @@
 	}
 
 	if (pMessage->m_protectedMap->length > 0) {
-		cbProtected = cn_cbor_encoder_write(RgbDontUse3, 0, sizeof(RgbDontUse3), pMessage->m_protectedMap);
+		cbProtected = cn_cbor_encode_size(pMessage->m_protectedMap);
 		pbProtected = (byte *)COSE_CALLOC(cbProtected, 1, context);
 		CHECK_CONDITION(pbProtected != NULL, COSE_ERR_OUT_OF_MEMORY);
 
diff --git a/src/Encrypt0.c b/src/Encrypt0.c
index 4103292..1a031d1 100644
--- a/src/Encrypt0.c
+++ b/src/Encrypt0.c
@@ -12,8 +12,6 @@
 #include "configure.h"
 #include "crypto.h"
 
-byte RgbDontUse[8 * 1024];   //  Remove this array when we can compute the size of a cbor serialization without this hack.
-
 void _COSE_Encrypt_Release(COSE_Encrypt * p);
 
 COSE * EncryptRoot = NULL;
diff --git a/src/Recipient.c b/src/Recipient.c
index 1ba5f2c..92a7a08 100644
--- a/src/Recipient.c
+++ b/src/Recipient.c
@@ -1203,8 +1203,6 @@
 }
 
 
-byte RgbDontUse4[8 * 1024];
-
 bool BuildContextBytes(COSE * pcose, int algID, size_t cbitKey, byte ** ppbContext, size_t * pcbContext, CBOR_CONTEXT_COMMA cose_errback * perr)
 {
 	cn_cbor * pArray;
@@ -1335,7 +1333,7 @@
 		cnParam = NULL;
 	}
 
-	cbContext = cn_cbor_encoder_write(RgbDontUse4, 0, sizeof(RgbDontUse4), pArray);
+	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);
diff --git a/src/SignerInfo.c b/src/SignerInfo.c
index 55dc346..f1a340e 100644
--- a/src/SignerInfo.c
+++ b/src/SignerInfo.c
@@ -106,8 +106,6 @@
 	return NULL;
 }
 
-byte RgbDontUse4[1024];
-
 bool BuildToBeSigned(byte ** ppbToSign, size_t * pcbToSign, const cn_cbor * pcborBody, const cn_cbor * pcborProtected, const cn_cbor * pcborProtectedSign, const byte * pbExternal, size_t cbExternal, CBOR_CONTEXT_COMMA cose_errback * perr)
 {
 	cn_cbor * pArray = NULL;
@@ -147,7 +145,7 @@
 	CHECK_CONDITION_CBOR(cn_cbor_array_append(pArray, cn, &cbor_error), cbor_error);
 	cn = NULL;
 
-	cbToSign = cn_cbor_encoder_write(RgbDontUse4, 0, sizeof(RgbDontUse4), pArray);
+	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);
diff --git a/src/cbor.c b/src/cbor.c
index a229b0f..73546d6 100644
--- a/src/cbor.c
+++ b/src/cbor.c
@@ -183,3 +183,11 @@
 	pcn->type = CN_CBOR_NULL;
 	return pcn;
 }
+
+
+byte RgbDontUse4[8 * 1024];
+
+size_t cn_cbor_encode_size(cn_cbor * object)
+{
+	return cn_cbor_encoder_write(RgbDontUse4, 0, sizeof(RgbDontUse4), object);
+}
diff --git a/src/cose_int.h b/src/cose_int.h
index 8eeb483..e9149af 100644
--- a/src/cose_int.h
+++ b/src/cose_int.h
@@ -270,6 +270,7 @@
 bool cn_cbor_array_replace(cn_cbor * cb_array, cn_cbor * cb_value, int index, CBOR_CONTEXT_COMMA cn_cbor_errback *errp);
 cn_cbor * cn_cbor_bool_create(int boolValue, CBOR_CONTEXT_COMMA cn_cbor_errback * errp);
 
+extern size_t cn_cbor_encode_size(cn_cbor * object);
 
 enum {
 	COSE_Int_Alg_AES_CBC_MAC_256_64 = -22
