diff --git a/tests/suites/test_suite_lmots.function b/tests/suites/test_suite_lmots.function
index 85e1da7..de1cf2c6 100644
--- a/tests/suites/test_suite_lmots.function
+++ b/tests/suites/test_suite_lmots.function
@@ -36,8 +36,8 @@
     mbedtls_lmots_private_t priv_ctx;
     unsigned char sig[MBEDTLS_LMOTS_SIG_LEN(MBEDTLS_LMOTS_SHA256_N32_W8)];
 
-    mbedtls_lmots_init_public( &pub_ctx );
-    mbedtls_lmots_init_private( &priv_ctx );
+    mbedtls_lmots_public_init( &pub_ctx );
+    mbedtls_lmots_private_init( &priv_ctx );
 
     TEST_ASSERT( mbedtls_lmots_generate_private_key(&priv_ctx, MBEDTLS_LMOTS_SHA256_N32_W8,
                  key_id->x, leaf_id, seed->x, seed->len ) == 0 );
@@ -47,8 +47,8 @@
     TEST_ASSERT( mbedtls_lmots_verify(&pub_ctx, msg->x, msg->len, sig, sizeof(sig)) == 0 );
 
 exit:
-    mbedtls_lmots_free_public( &pub_ctx );
-    mbedtls_lmots_free_private( &priv_ctx );
+    mbedtls_lmots_public_free( &pub_ctx );
+    mbedtls_lmots_private_free( &priv_ctx );
 }
 /* END_CASE */
 
@@ -59,8 +59,8 @@
     mbedtls_lmots_private_t priv_ctx;
     unsigned char sig[MBEDTLS_LMOTS_SIG_LEN(MBEDTLS_LMOTS_SHA256_N32_W8)];
 
-    mbedtls_lmots_init_public( &pub_ctx );
-    mbedtls_lmots_init_private( &priv_ctx );
+    mbedtls_lmots_public_init( &pub_ctx );
+    mbedtls_lmots_private_init( &priv_ctx );
 
     TEST_ASSERT( mbedtls_lmots_generate_private_key(&priv_ctx, MBEDTLS_LMOTS_SHA256_N32_W8,
                  key_id->x, leaf_id, seed->x, seed->len ) == 0 );
@@ -70,8 +70,8 @@
     TEST_ASSERT( mbedtls_lmots_verify(&pub_ctx, NULL, 0, sig, sizeof(sig)) == 0 );
 
 exit:
-    mbedtls_lmots_free_public( &pub_ctx );
-    mbedtls_lmots_free_private( &priv_ctx );
+    mbedtls_lmots_public_free( &pub_ctx );
+    mbedtls_lmots_private_free( &priv_ctx );
 }
 /* END_CASE */
 
@@ -81,14 +81,14 @@
 {
     mbedtls_lmots_public_t ctx;
 
-    mbedtls_lmots_init_public( &ctx );
+    mbedtls_lmots_public_init( &ctx );
 
     mbedtls_lmots_import_public_key( &ctx, pub_key->x, pub_key->len );
 
     TEST_ASSERT(mbedtls_lmots_verify( &ctx, msg->x, msg->len, sig->x, sig->len ) == expected_rc );
 
 exit:
-    mbedtls_lmots_free_public( &ctx );
+    mbedtls_lmots_public_free( &ctx );
 }
 /* END_CASE */
 
@@ -99,7 +99,7 @@
     uint8_t exported_pub_key[MBEDTLS_LMOTS_PUBLIC_KEY_LEN(MBEDTLS_LMOTS_SHA256_N32_W8)];
     size_t exported_pub_key_len;
 
-    mbedtls_lmots_init_public( &ctx );
+    mbedtls_lmots_public_init( &ctx );
     TEST_ASSERT( mbedtls_lmots_import_public_key( &ctx, pub_key->x, pub_key->len ) == 0 );
     TEST_ASSERT( mbedtls_lmots_export_public_key( &ctx, exported_pub_key,
                                                   sizeof( exported_pub_key ),
@@ -109,7 +109,7 @@
                     exported_pub_key, exported_pub_key_len );
 
 exit:
-    mbedtls_lmots_free_public( &ctx );
+    mbedtls_lmots_public_free( &ctx );
 }
 /* END_CASE */
 
@@ -119,7 +119,7 @@
     mbedtls_lmots_private_t ctx;
     unsigned char sig[MBEDTLS_LMOTS_SIG_LEN(MBEDTLS_LMOTS_SHA256_N32_W8)];
 
-    mbedtls_lmots_init_private( &ctx );
+    mbedtls_lmots_private_init( &ctx );
     TEST_ASSERT( mbedtls_lmots_generate_private_key(&ctx, MBEDTLS_LMOTS_SHA256_N32_W8,
                                                     key_id->x, leaf_id, seed->x,
                                                     seed->len ) == 0 );
@@ -133,7 +133,7 @@
                                     msg->x, msg->len, sig, sizeof( sig ), NULL ) != 0 );
 
 exit:
-    mbedtls_lmots_free_private( &ctx );
+    mbedtls_lmots_private_free( &ctx );
 }
 /* END_CASE */
 
@@ -149,7 +149,7 @@
     /* Fill with recognisable pattern */
     memset( sig, 0x7E, sizeof( sig ) );
 
-    mbedtls_lmots_init_private( &ctx );
+    mbedtls_lmots_private_init( &ctx );
     TEST_ASSERT( mbedtls_lmots_generate_private_key(&ctx, MBEDTLS_LMOTS_SHA256_N32_W8,
                                                     key_id->x, leaf_id, seed->x,
                                                     seed->len ) == 0 );
@@ -157,7 +157,7 @@
                                     msg->x, msg->len, sig, sizeof( sig ), NULL ) == 0 );
 
 exit:
-    mbedtls_lmots_free_private( &ctx );
+    mbedtls_lmots_private_free( &ctx );
     mbedtls_lmots_sign_private_key_invalidated_hook = NULL;
 }
 /* END_CASE */
diff --git a/tests/suites/test_suite_lms.function b/tests/suites/test_suite_lms.function
index 3c23b3b..425e994 100644
--- a/tests/suites/test_suite_lms.function
+++ b/tests/suites/test_suite_lms.function
@@ -16,8 +16,8 @@
     unsigned char sig[MBEDTLS_LMS_SIG_LEN(MBEDTLS_LMS_SHA256_M32_H10, MBEDTLS_LMOTS_SHA256_N32_W8)];
     int rc;
 
-    mbedtls_lms_init_public( &pub_ctx );
-    mbedtls_lms_init_private( &priv_ctx );
+    mbedtls_lms_public_init( &pub_ctx );
+    mbedtls_lms_private_init( &priv_ctx );
 
     /* Allocation failure isn't a test failure, since it likely just means
      * there's not enough memory to run the test.
@@ -39,8 +39,8 @@
                                      sizeof( sig ) ) == 0 );
 
 exit:
-    mbedtls_lms_free_public( &pub_ctx );
-    mbedtls_lms_free_private( &priv_ctx );
+    mbedtls_lms_public_free( &pub_ctx );
+    mbedtls_lms_private_free( &priv_ctx );
 }
 /* END_CASE */
 
@@ -52,8 +52,8 @@
     unsigned char sig[MBEDTLS_LMS_SIG_LEN(MBEDTLS_LMS_SHA256_M32_H10, MBEDTLS_LMOTS_SHA256_N32_W8)];
     int rc;
 
-    mbedtls_lms_init_public( &pub_ctx );
-    mbedtls_lms_init_private( &priv_ctx );
+    mbedtls_lms_public_init( &pub_ctx );
+    mbedtls_lms_private_init( &priv_ctx );
 
     /* Allocation failure isn't a test failure, since it likely just means
      * there's not enough memory to run the test.
@@ -75,8 +75,8 @@
                                      sizeof( sig ) ) == 0 );
 
 exit:
-    mbedtls_lms_free_public( &pub_ctx );
-    mbedtls_lms_free_private( &priv_ctx );
+    mbedtls_lms_public_free( &pub_ctx );
+    mbedtls_lms_private_free( &priv_ctx );
 }
 /* END_CASE */
 
@@ -86,14 +86,14 @@
 {
     mbedtls_lms_public_t ctx;
 
-    mbedtls_lms_init_public( &ctx);
+    mbedtls_lms_public_init( &ctx);
 
     mbedtls_lms_import_public_key( &ctx, pub_key->x, pub_key->len );
 
     TEST_ASSERT( mbedtls_lms_verify( &ctx, msg->x, msg->len, sig->x, sig->len ) == expected_rc );
 
 exit:
-    mbedtls_lms_free_public( &ctx );
+    mbedtls_lms_public_free( &ctx );
 }
 /* END_CASE */
 
@@ -103,7 +103,7 @@
     mbedtls_lms_public_t ctx;
     uint8_t exported_pub_key[MBEDTLS_LMS_PUBLIC_KEY_LEN(MBEDTLS_LMS_SHA256_M32_H10)];
 
-    mbedtls_lms_init_public(&ctx);
+    mbedtls_lms_public_init(&ctx);
     TEST_ASSERT( mbedtls_lms_import_public_key( &ctx, pub_key->x, pub_key->len ) == 0 );
     TEST_ASSERT( mbedtls_lms_export_public_key( &ctx, exported_pub_key,
                                                 sizeof(exported_pub_key), NULL ) == 0 );
@@ -112,7 +112,7 @@
                     exported_pub_key, MBEDTLS_LMS_PUBLIC_KEY_LEN(MBEDTLS_LMS_SHA256_M32_H10) );
 
 exit:
-    mbedtls_lms_free_public( &ctx );
+    mbedtls_lms_public_free( &ctx );
 }
 /* END_CASE */
 
