diff --git a/include/psa/crypto_extra.h b/include/psa/crypto_extra.h
index 1313492..880e09c 100644
--- a/include/psa/crypto_extra.h
+++ b/include/psa/crypto_extra.h
@@ -35,7 +35,7 @@
 #endif
 
 /* UID for secure storage seed */
-#define MBED_RANDOM_SEED_ITS_UID 0xFFFFFF52
+#define MBEDTLS_RANDOM_SEED_ITS_UID 0xFFFFFF52
 
 /**
  * \brief Library deinitialization.
@@ -91,11 +91,11 @@
  *
  * \param seed[in]      Buffer containing the seed value to inject.
  * \param seed_size     Size of the \p seed buffer.
- *                      The size of the seed must be equal or larger than any
- *                      of the values defined both in
- *                      #MBEDTLS_ENTROPY_MIN_PLATFORM
- *                      and in the #MBEDTLS_ENTROPY_BLOCK_SIZE defines
- *                      and at most #MBEDTLS_ENTROPY_MAX_SEED_SIZE bytes.
+ *                      The size of the seed in bytes must be greater
+ *                      or equal to both #MBEDTLS_ENTROPY_MIN_PLATFORM
+ *                      and #MBEDTLS_ENTROPY_BLOCK_SIZE.
+ *                      It must be less or equal to
+ *                      #MBEDTLS_ENTROPY_MAX_SEED_SIZE.
  *
  * \retval #PSA_SUCCESS
  *         The seed value was injected successfully. The random generator
diff --git a/library/psa_crypto.c b/library/psa_crypto.c
index 26bea19..fe73d1d 100644
--- a/library/psa_crypto.c
+++ b/library/psa_crypto.c
@@ -4240,10 +4240,10 @@
           ( seed_size > MBEDTLS_ENTROPY_MAX_SEED_SIZE ) )
             return( PSA_ERROR_INVALID_ARGUMENT );
 
-    status = psa_its_get_info( MBED_RANDOM_SEED_ITS_UID, &p_info );
+    status = psa_its_get_info( MBEDTLS_RANDOM_SEED_ITS_UID, &p_info );
     if( PSA_ITS_ERROR_KEY_NOT_FOUND == status ) /* No seed exists */
     {
-        status = psa_its_set( MBED_RANDOM_SEED_ITS_UID, seed_size, seed, 0 );
+        status = psa_its_set( MBEDTLS_RANDOM_SEED_ITS_UID, seed_size, seed, 0 );
     }
     else if( PSA_ITS_SUCCESS == status )
     {
diff --git a/tests/suites/test_suite_psa_crypto_entropy.function b/tests/suites/test_suite_psa_crypto_entropy.function
index 1cb58b9..4be2c5a 100644
--- a/tests/suites/test_suite_psa_crypto_entropy.function
+++ b/tests/suites/test_suite_psa_crypto_entropy.function
@@ -40,7 +40,7 @@
     {
         seed[i] = i;
     }
-    its_status =  psa_its_remove(MBED_RANDOM_SEED_ITS_UID);
+    its_status =  psa_its_remove(MBEDTLS_RANDOM_SEED_ITS_UID);
     TEST_ASSERT( (its_status == PSA_ITS_SUCCESS) || (its_status == PSA_ITS_ERROR_KEY_NOT_FOUND) );
     status = mbedtls_psa_inject_entropy( seed, seed_length_a );
     TEST_ASSERT( status == expected_status_a );
@@ -51,7 +51,7 @@
     TEST_ASSERT( memcmp( output , zeros, sizeof( output ) ) != 0 );
 exit:
     mbedtls_free( seed );
-    psa_its_remove(MBED_RANDOM_SEED_ITS_UID);
+    psa_its_remove(MBEDTLS_RANDOM_SEED_ITS_UID);
     mbedtls_psa_crypto_free( );
 }
 /* END_CASE */
@@ -68,11 +68,11 @@
     {
         seed[i] = i;
     }
-    its_status =  psa_its_remove(MBED_RANDOM_SEED_ITS_UID);
+    its_status =  psa_its_remove(MBEDTLS_RANDOM_SEED_ITS_UID);
     TEST_ASSERT( (its_status == PSA_ITS_SUCCESS) || (its_status == PSA_ITS_ERROR_KEY_NOT_FOUND) );
     status = mbedtls_psa_inject_entropy( seed, MBEDTLS_ENTROPY_BLOCK_SIZE );
     TEST_ASSERT( status == PSA_SUCCESS );
-    its_status =  psa_its_remove(MBED_RANDOM_SEED_ITS_UID);
+    its_status =  psa_its_remove(MBEDTLS_RANDOM_SEED_ITS_UID);
     TEST_ASSERT( its_status == PSA_ITS_SUCCESS );
     TEST_ASSERT( psa_crypto_init( ) == PSA_SUCCESS );
     status = mbedtls_psa_inject_entropy( seed, MBEDTLS_ENTROPY_BLOCK_SIZE );
@@ -82,7 +82,7 @@
     status = mbedtls_psa_inject_entropy( seed, MBEDTLS_ENTROPY_BLOCK_SIZE );
     TEST_ASSERT( status == PSA_ERROR_NOT_PERMITTED );
 exit:
-    psa_its_remove(MBED_RANDOM_SEED_ITS_UID);
+    psa_its_remove(MBEDTLS_RANDOM_SEED_ITS_UID);
     mbedtls_psa_crypto_free( );
 }
 /* END_CASE */
