diff --git a/uECC.c b/uECC.c
index c7d759a..4d4ee8f 100644
--- a/uECC.c
+++ b/uECC.c
@@ -814,8 +814,7 @@
 
 uECC_VLI_API void uECC_vli_nativeToBytes(uint8_t *bytes,
                                          int num_bytes,
-                                         const uint8_t *native,
-                                         uECC_Curve curve) {
+                                         const uint8_t *native) {
     wordcount_t i;
     for (i = 0; i < num_bytes; ++i) {
         bytes[i] = native[(num_bytes - 1) - i];
@@ -824,17 +823,15 @@
 
 uECC_VLI_API void uECC_vli_bytesToNative(uint8_t *native,
                                          const uint8_t *bytes,
-                                         int num_bytes,
-                                         uECC_Curve curve) {
-    uECC_vli_nativeToBytes(native, num_bytes, bytes, curve);
+                                         int num_bytes) {
+    uECC_vli_nativeToBytes(native, num_bytes, bytes);
 }
 
 #else
 
 uECC_VLI_API void uECC_vli_nativeToBytes(uint8_t *bytes,
                                          int num_bytes,
-                                         const uECC_word_t *native,
-                                         uECC_Curve curve) {
+                                         const uECC_word_t *native) {
     wordcount_t i;
     for (i = 0; i < num_bytes; ++i) {
         unsigned b = num_bytes - 1 - i;
@@ -844,8 +841,7 @@
 
 uECC_VLI_API void uECC_vli_bytesToNative(uECC_word_t *native,
                                          const uint8_t *bytes,
-                                         int num_bytes,
-                                         uECC_Curve curve) {
+                                         int num_bytes) {
     wordcount_t i;
     uECC_vli_clear(native, (num_bytes + (uECC_WORD_SIZE - 1)) / uECC_WORD_SIZE);
     for (i = 0; i < num_bytes; ++i) {
@@ -885,10 +881,10 @@
         }
 
         if (EccPoint_compute_public_key(public, private, curve)) {
-            uECC_vli_nativeToBytes(private_key, BITS_TO_BYTES(curve->num_n_bits), private, curve);
-            uECC_vli_nativeToBytes(public_key, curve->num_bytes, public, curve);
+            uECC_vli_nativeToBytes(private_key, BITS_TO_BYTES(curve->num_n_bits), private);
+            uECC_vli_nativeToBytes(public_key, curve->num_bytes, public);
             uECC_vli_nativeToBytes(
-                public_key + curve->num_bytes, curve->num_bytes, public + curve->num_words, curve);
+                public_key + curve->num_bytes, curve->num_bytes, public + curve->num_words);
             return 1;
         }
     }
@@ -908,10 +904,10 @@
     uECC_word_t carry;
     wordcount_t num_words = curve->num_words;
     
-    uECC_vli_bytesToNative(private, private_key, BITS_TO_BYTES(curve->num_n_bits), curve);
-    uECC_vli_bytesToNative(public, public_key, curve->num_bytes, curve);
+    uECC_vli_bytesToNative(private, private_key, BITS_TO_BYTES(curve->num_n_bits));
+    uECC_vli_bytesToNative(public, public_key, curve->num_bytes);
     uECC_vli_bytesToNative(
-        public + num_words, public_key + curve->num_bytes, curve->num_bytes, curve);
+        public + num_words, public_key + curve->num_bytes, curve->num_bytes);
     
     /* Regularize the bitcount for the private key so that attackers cannot use a side channel
        attack to learn the number of leading zeros. */
@@ -934,7 +930,7 @@
     }
     
     EccPoint_mult(public, public, p2[!carry], initial_Z, curve->num_n_bits + 1, curve);
-    uECC_vli_nativeToBytes(secret, curve->num_bytes, public, curve);
+    uECC_vli_nativeToBytes(secret, curve->num_bytes, public);
     return !EccPoint_isZero(public, curve);
 }
 
@@ -950,7 +946,7 @@
 void uECC_decompress(const uint8_t *compressed, uint8_t *public_key, uECC_Curve curve) {
     uECC_word_t point[uECC_MAX_WORDS * 2];
     uECC_word_t *y = point + curve->num_words;
-    uECC_vli_bytesToNative(point, compressed + 1, curve->num_bytes, curve);
+    uECC_vli_bytesToNative(point, compressed + 1, curve->num_bytes);
     curve->x_side(y, point, curve);
     curve->mod_sqrt(y, curve);
     
@@ -958,8 +954,8 @@
         uECC_vli_sub(y, curve->p, y, curve->num_words);
     }
     
-    uECC_vli_nativeToBytes(public_key, curve->num_bytes, point, curve);
-    uECC_vli_nativeToBytes(public_key + curve->num_bytes, curve->num_bytes, y, curve);
+    uECC_vli_nativeToBytes(public_key, curve->num_bytes, point);
+    uECC_vli_nativeToBytes(public_key + curve->num_bytes, curve->num_bytes, y);
 }
 #endif /* uECC_SUPPORT_COMPRESSED_POINT */
 
@@ -989,9 +985,9 @@
 int uECC_valid_public_key(const uint8_t *public_key, uECC_Curve curve) {
     uECC_word_t public[uECC_MAX_WORDS * 2];
 
-    uECC_vli_bytesToNative(public, public_key, curve->num_bytes, curve);
+    uECC_vli_bytesToNative(public, public_key, curve->num_bytes);
     uECC_vli_bytesToNative(
-        public + curve->num_words, public_key + curve->num_bytes, curve->num_bytes, curve);
+        public + curve->num_words, public_key + curve->num_bytes, curve->num_bytes);
     return uECC_valid_point(public, curve);
 }
 
@@ -999,15 +995,15 @@
     uECC_word_t private[uECC_MAX_WORDS];
     uECC_word_t public[uECC_MAX_WORDS * 2];
 
-    uECC_vli_bytesToNative(private, private_key, BITS_TO_BYTES(curve->num_n_bits), curve);
+    uECC_vli_bytesToNative(private, private_key, BITS_TO_BYTES(curve->num_n_bits));
 
     if (!EccPoint_compute_public_key(public, private, curve)) {
         return 0;
     }
 
-    uECC_vli_nativeToBytes(public_key, curve->num_bytes, public, curve);
+    uECC_vli_nativeToBytes(public_key, curve->num_bytes, public);
     uECC_vli_nativeToBytes(
-        public_key + curve->num_bytes, curve->num_bytes, public + curve->num_words, curve);
+        public_key + curve->num_bytes, curve->num_bytes, public + curve->num_words);
     return 1;
 }
 
@@ -1024,7 +1020,7 @@
         bits_size = num_n_bytes;
     }
     uECC_vli_clear(native, num_n_words);
-    uECC_vli_bytesToNative(native, bits, bits_size, curve);
+    uECC_vli_bytesToNative(native, bits, bits_size);
     if (bits_size * 8 <= (unsigned)curve->num_n_bits) {
         return;
     }
@@ -1094,9 +1090,9 @@
     uECC_vli_modInv(k, k, curve->n, num_n_words);       /* k = 1 / k' */
     uECC_vli_modMult(k, k, tmp, curve->n, num_n_words); /* k = 1 / k */
     
-    uECC_vli_nativeToBytes(signature, curve->num_bytes, p, curve); /* store r */
+    uECC_vli_nativeToBytes(signature, curve->num_bytes, p); /* store r */
     
-    uECC_vli_bytesToNative(tmp, private_key, BITS_TO_BYTES(curve->num_n_bits), curve); /* tmp = d */
+    uECC_vli_bytesToNative(tmp, private_key, BITS_TO_BYTES(curve->num_n_bits)); /* tmp = d */
     s[num_n_words - 1] = 0;
     uECC_vli_set(s, p, num_words);
     uECC_vli_modMult(s, tmp, s, curve->n, num_n_words); /* s = r*d */
@@ -1107,7 +1103,7 @@
     if (uECC_vli_numBits(s, num_n_words) > (bitcount_t)curve->num_bytes * 8) {
         return 0;
     }
-    uECC_vli_nativeToBytes(signature + curve->num_bytes, curve->num_bytes, s, curve);
+    uECC_vli_nativeToBytes(signature + curve->num_bytes, curve->num_bytes, s);
     return 1;
 }
 
@@ -1285,11 +1281,11 @@
     r[num_n_words - 1] = 0;
     s[num_n_words - 1] = 0;
 
-    uECC_vli_bytesToNative(public, public_key, curve->num_bytes, curve);
+    uECC_vli_bytesToNative(public, public_key, curve->num_bytes);
     uECC_vli_bytesToNative(
-        public + num_words, public_key + curve->num_bytes, curve->num_bytes, curve);
-    uECC_vli_bytesToNative(r, signature, curve->num_bytes, curve);
-    uECC_vli_bytesToNative(s, signature + curve->num_bytes, curve->num_bytes, curve);
+        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);
     
     /* r, s must not be 0. */
     if (uECC_vli_isZero(r, num_words) || uECC_vli_isZero(s, num_words)) {
diff --git a/uECC_vli.h b/uECC_vli.h
index 21df281..55bb385 100644
--- a/uECC_vli.h
+++ b/uECC_vli.h
@@ -131,9 +131,9 @@
 #endif
 
 /* Converts an integer in uECC native format to big-endian bytes. */
-void uECC_vli_nativeToBytes(uint8_t *bytes, int num_bytes, const uECC_word_t *native, uECC_Curve curve);
+void uECC_vli_nativeToBytes(uint8_t *bytes, int num_bytes, const uECC_word_t *native);
 /* Converts big-endian bytes to an integer in uECC native format. */
-void uECC_vli_bytesToNative(uECC_word_t *native, const uint8_t *bytes, int num_bytes, uECC_Curve curve);
+void uECC_vli_bytesToNative(uECC_word_t *native, const uint8_t *bytes, int num_bytes);
 
 unsigned uECC_curve_num_words(uECC_Curve curve);
 unsigned uECC_curve_num_bits(uECC_Curve curve);
