diff --git a/include/mbedtls/psa_util.h b/include/mbedtls/psa_util.h
index b7b710f..06732d8 100644
--- a/include/mbedtls/psa_util.h
+++ b/include/mbedtls/psa_util.h
@@ -186,6 +186,7 @@
 
 /** Convert an ECDSA signature from raw format to DER ASN.1 format.
  *
+ * \param       bits        Size of each coordinate in bits.
  * \param       raw         Buffer that contains the signature in raw format.
  * \param       raw_len     Length of \p raw in bytes.
  * \param[out]  der         Buffer that will be filled with the converted DER
@@ -194,14 +195,13 @@
  * \param[out]  der_len     On success it contains the amount of valid data
  *                          (in bytes) written to \p der. It's undefined
  *                          in case of failure.
- * \param       bits        Size of each coordinate in bits.
  */
-int mbedtls_ecdsa_raw_to_der(const unsigned char *raw, size_t raw_len,
-                             unsigned char *der, size_t der_size, size_t *der_len,
-                             size_t bits);
+int mbedtls_ecdsa_raw_to_der(size_t bits, const unsigned char *raw, size_t raw_len,
+                             unsigned char *der, size_t der_size, size_t *der_len);
 
 /** Convert an ECDSA signature from DER ASN.1 format to raw format.
  *
+ * \param       bits        Size of each coordinate in bits.
  * \param       der         Buffer that contains the signature in DER format.
  * \param       der_len     Size of \p der in bytes.
  * \param[out]  raw         Buffer that will be filled with the converted raw
@@ -210,11 +210,9 @@
  * \param[out]  raw_len     On success it is updated with the amount of valid
  *                          data (in bytes) written to \p raw. It's undefined
  *                          in case of failure.
- * \param       bits        Size of each coordinate in bits.
  */
-int mbedtls_ecdsa_der_to_raw(const unsigned char *der, size_t der_len,
-                             unsigned char *raw, size_t raw_size, size_t *raw_len,
-                             size_t bits);
+int mbedtls_ecdsa_der_to_raw(size_t bits, const unsigned char *der, size_t der_len,
+                             unsigned char *raw, size_t raw_size, size_t *raw_len);
 
 #endif /* MBEDTLS_PSA_UTIL_HAVE_ECDSA */
 
diff --git a/library/pk_wrap.c b/library/pk_wrap.c
index 9a29d92..c45fbd4 100644
--- a/library/pk_wrap.c
+++ b/library/pk_wrap.c
@@ -573,9 +573,8 @@
     }
 
     p = (unsigned char *) sig;
-    ret = mbedtls_ecdsa_der_to_raw(p, sig_len, extracted_sig,
-                                   sizeof(extracted_sig), &converted_sig_len,
-                                   curve_bits);
+    ret = mbedtls_ecdsa_der_to_raw(curve_bits, p, sig_len, extracted_sig,
+                                   sizeof(extracted_sig), &converted_sig_len);
     if (ret != 0) {
         goto cleanup;
     }
@@ -730,7 +729,7 @@
     }
 
 done:
-    ret = mbedtls_ecdsa_raw_to_der(sig, sig_size, sig, sig_size, sig_len, key_bits);
+    ret = mbedtls_ecdsa_raw_to_der(key_bits, sig, sig_size, sig, sig_size, sig_len);
 
     return ret;
 }
diff --git a/library/psa_util.c b/library/psa_util.c
index b13d83d..2491f2e 100644
--- a/library/psa_util.c
+++ b/library/psa_util.c
@@ -402,9 +402,8 @@
     return len;
 }
 
-int mbedtls_ecdsa_raw_to_der(const unsigned char *raw, size_t raw_len,
-                             unsigned char *der, size_t der_size, size_t *der_len,
-                             size_t bits)
+int mbedtls_ecdsa_raw_to_der(size_t bits, const unsigned char *raw, size_t raw_len,
+                             unsigned char *der, size_t der_size, size_t *der_len)
 {
     unsigned char r[PSA_BITS_TO_BYTES(PSA_VENDOR_ECC_MAX_CURVE_BITS)];
     unsigned char s[PSA_BITS_TO_BYTES(PSA_VENDOR_ECC_MAX_CURVE_BITS)];
@@ -511,9 +510,8 @@
     return (int) (p - der);
 }
 
-int mbedtls_ecdsa_der_to_raw(const unsigned char *der, size_t der_len,
-                             unsigned char *raw, size_t raw_size, size_t *raw_len,
-                             size_t bits)
+int mbedtls_ecdsa_der_to_raw(size_t bits, const unsigned char *der, size_t der_len,
+                             unsigned char *raw, size_t raw_size, size_t *raw_len)
 {
     unsigned char raw_tmp[PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE];
     unsigned char *p = (unsigned char *) der;
diff --git a/tests/suites/test_suite_psa_crypto_util.function b/tests/suites/test_suite_psa_crypto_util.function
index 9dc95b6..c102b07 100644
--- a/tests/suites/test_suite_psa_crypto_util.function
+++ b/tests/suites/test_suite_psa_crypto_util.function
@@ -12,9 +12,8 @@
 
     TEST_CALLOC(tmp_buf, tmp_buf_len);
 
-    TEST_EQUAL(mbedtls_ecdsa_raw_to_der(input->x, input->len,
-                                        tmp_buf, tmp_buf_len, &ret_len,
-                                        key_bits), exp_ret);
+    TEST_EQUAL(mbedtls_ecdsa_raw_to_der(key_bits, input->x, input->len,
+                                        tmp_buf, tmp_buf_len, &ret_len), exp_ret);
 
     if (exp_ret == 0) {
         ASSERT_COMPARE(exp_result->x, exp_result->len, tmp_buf, ret_len);
@@ -35,17 +34,15 @@
 
     for (i = 1; i < tmp_buf_len; i++) {
         TEST_CALLOC(tmp_buf, i);
-        TEST_ASSERT(mbedtls_ecdsa_raw_to_der(input->x, input->len,
-                                             tmp_buf, i, &ret_len,
-                                             key_bits) != 0);
+        TEST_ASSERT(mbedtls_ecdsa_raw_to_der(key_bits, input->x, input->len,
+                                             tmp_buf, i, &ret_len) != 0);
         mbedtls_free(tmp_buf);
         tmp_buf = NULL;
     }
 
     TEST_CALLOC(tmp_buf, i);
-    TEST_EQUAL(mbedtls_ecdsa_raw_to_der(input->x, input->len,
-                                        tmp_buf, i, &ret_len,
-                                        key_bits), 0);
+    TEST_EQUAL(mbedtls_ecdsa_raw_to_der(key_bits, input->x, input->len,
+                                        tmp_buf, i, &ret_len), 0);
 exit:
     mbedtls_free(tmp_buf);
 }
@@ -60,9 +57,8 @@
 
     TEST_CALLOC(tmp_buf, tmp_buf_len);
 
-    TEST_EQUAL(mbedtls_ecdsa_der_to_raw(input->x, input->len,
-                                        tmp_buf, tmp_buf_len, &ret_len,
-                                        key_bits), exp_ret);
+    TEST_EQUAL(mbedtls_ecdsa_der_to_raw(key_bits, input->x, input->len,
+                                        tmp_buf, tmp_buf_len, &ret_len), exp_ret);
 
     if (exp_ret == 0) {
         ASSERT_COMPARE(exp_result->x, exp_result->len, tmp_buf, ret_len);
