diff --git a/include/tinycrypt/ecc.h b/include/tinycrypt/ecc.h
index d7ad318..0cb47d4 100644
--- a/include/tinycrypt/ecc.h
+++ b/include/tinycrypt/ecc.h
@@ -124,7 +124,6 @@
 struct uECC_Curve_t;
 typedef const struct uECC_Curve_t * uECC_Curve;
 struct uECC_Curve_t {
-  wordcount_t num_bytes;
   bitcount_t num_n_bits;
   uECC_word_t p[NUM_ECC_WORDS];
   uECC_word_t n[NUM_ECC_WORDS];
@@ -159,7 +158,6 @@
 
 /* definition of curve NIST p-256: */
 static const struct uECC_Curve_t curve_secp256r1 = {
-	NUM_ECC_BYTES,
 	256, /* num_n_bits */ {
 		BYTES_TO_WORDS_8(FF, FF, FF, FF, FF, FF, FF, FF),
 		BYTES_TO_WORDS_8(FF, FF, FF, FF, 00, 00, 00, 00),
diff --git a/tinycrypt/ecc.c b/tinycrypt/ecc.c
index 9a28b18..cfdbc4b 100644
--- a/tinycrypt/ecc.c
+++ b/tinycrypt/ecc.c
@@ -93,7 +93,8 @@
 
 int uECC_curve_public_key_size(uECC_Curve curve)
 {
-	return 2 * curve->num_bytes;
+	(void) curve;
+	return 2 * NUM_ECC_BYTES;
 }
 
 void uECC_vli_clear(uECC_word_t *vli)
@@ -1070,11 +1071,11 @@
 
 	uECC_word_t _public[NUM_ECC_WORDS * 2];
 
-	uECC_vli_bytesToNative(_public, public_key, curve->num_bytes);
+	uECC_vli_bytesToNative(_public, public_key, NUM_ECC_BYTES);
 	uECC_vli_bytesToNative(
 	_public + NUM_ECC_WORDS,
-	public_key + curve->num_bytes,
-	curve->num_bytes);
+	public_key + NUM_ECC_BYTES,
+	NUM_ECC_BYTES);
 
 	if (memcmp(_public, curve->G, NUM_ECC_WORDS * 2) == 0) {
 		return -4;
@@ -1109,10 +1110,10 @@
 		return 0;
 	}
 
-	uECC_vli_nativeToBytes(public_key, curve->num_bytes, _public);
+	uECC_vli_nativeToBytes(public_key, NUM_ECC_BYTES, _public);
 	uECC_vli_nativeToBytes(
 	public_key +
-	curve->num_bytes, curve->num_bytes, _public + NUM_ECC_WORDS);
+	NUM_ECC_BYTES, NUM_ECC_BYTES, _public + NUM_ECC_WORDS);
 	return 1;
 }
 #else
diff --git a/tinycrypt/ecc_dh.c b/tinycrypt/ecc_dh.c
index b3f8f71..a1d7483 100644
--- a/tinycrypt/ecc_dh.c
+++ b/tinycrypt/ecc_dh.c
@@ -92,10 +92,10 @@
 				       BITS_TO_BYTES(curve->num_n_bits),
 				       _private);
 		uECC_vli_nativeToBytes(public_key,
-				       curve->num_bytes,
+				       NUM_ECC_BYTES,
 				       _public);
-		uECC_vli_nativeToBytes(public_key + curve->num_bytes,
-				       curve->num_bytes,
+		uECC_vli_nativeToBytes(public_key + NUM_ECC_BYTES,
+				       NUM_ECC_BYTES,
 				       _public + NUM_ECC_WORDS);
 
 		/* erasing temporary buffer used to store secret: */
@@ -133,10 +133,10 @@
 					       BITS_TO_BYTES(curve->num_n_bits),
 					       _private);
 			uECC_vli_nativeToBytes(public_key,
-					       curve->num_bytes,
+					       NUM_ECC_BYTES,
 					       _public);
-			uECC_vli_nativeToBytes(public_key + curve->num_bytes,
- 					       curve->num_bytes,
+			uECC_vli_nativeToBytes(public_key + NUM_ECC_BYTES,
+ 					       NUM_ECC_BYTES,
 					       _public + NUM_ECC_WORDS);
 
 			/* erasing temporary buffer that stored secret: */
@@ -155,7 +155,7 @@
 	uECC_word_t _public[NUM_ECC_WORDS * 2];
 	uECC_word_t _private[NUM_ECC_WORDS];
 	wordcount_t num_words = NUM_ECC_WORDS;
-	wordcount_t num_bytes = curve->num_bytes;
+	wordcount_t num_bytes = NUM_ECC_BYTES;
 	int r;
 
 	/* Converting buffers to correct bit order: */
diff --git a/tinycrypt/ecc_dsa.c b/tinycrypt/ecc_dsa.c
index f4af4b6..5c4ca15 100644
--- a/tinycrypt/ecc_dsa.c
+++ b/tinycrypt/ecc_dsa.c
@@ -147,7 +147,7 @@
 	uECC_vli_modInv(k, k, curve->n);       /* k = 1 / k' */
 	uECC_vli_modMult(k, k, tmp, curve->n); /* k = 1 / k */
 
-	uECC_vli_nativeToBytes(signature, curve->num_bytes, p); /* store r */
+	uECC_vli_nativeToBytes(signature, NUM_ECC_BYTES, p); /* store r */
 
 	/* tmp = d: */
 	uECC_vli_bytesToNative(tmp, private_key, BITS_TO_BYTES(curve->num_n_bits));
@@ -159,11 +159,11 @@
 	bits2int(tmp, message_hash, hash_size, curve);
 	uECC_vli_modAdd(s, tmp, s, curve->n); /* s = e + r*d */
 	uECC_vli_modMult(s, s, k, curve->n);  /* s = (e + r*d) / k */
-	if (uECC_vli_numBits(s) > (bitcount_t)curve->num_bytes * 8) {
+	if (uECC_vli_numBits(s) > (bitcount_t)NUM_ECC_BYTES * 8) {
 		return 0;
 	}
 
-	uECC_vli_nativeToBytes(signature + curve->num_bytes, curve->num_bytes, s);
+	uECC_vli_nativeToBytes(signature + NUM_ECC_BYTES, NUM_ECC_BYTES, s);
 	return 1;
 }
 
@@ -229,11 +229,11 @@
 	r[num_n_words - 1] = 0;
 	s[num_n_words - 1] = 0;
 
-	uECC_vli_bytesToNative(_public, public_key, curve->num_bytes);
-	uECC_vli_bytesToNative(_public + num_words, public_key + curve->num_bytes,
-			       curve->num_bytes);
-	uECC_vli_bytesToNative(r, signature, curve->num_bytes);
-	uECC_vli_bytesToNative(s, signature + curve->num_bytes, curve->num_bytes);
+	uECC_vli_bytesToNative(_public, public_key, NUM_ECC_BYTES);
+	uECC_vli_bytesToNative(_public + num_words, public_key + NUM_ECC_BYTES,
+			       NUM_ECC_BYTES);
+	uECC_vli_bytesToNative(r, signature, NUM_ECC_BYTES);
+	uECC_vli_bytesToNative(s, signature + NUM_ECC_BYTES, NUM_ECC_BYTES);
 
 	/* r, s must not be 0. */
 	if (uECC_vli_isZero(r) || uECC_vli_isZero(s)) {
