diff --git a/library/psa_crypto.c b/library/psa_crypto.c
index 4d2f8d0..5609f42 100644
--- a/library/psa_crypto.c
+++ b/library/psa_crypto.c
@@ -2462,6 +2462,28 @@
 
 
 /****************************************************************/
+/* Key generation */
+/****************************************************************/
+
+psa_status_t psa_generate_random( uint8_t *output,
+                                  size_t output_size )
+{
+    int ret = mbedtls_ctr_drbg_random( &global_data.ctr_drbg,
+                                       output, output_size );
+    return( mbedtls_to_psa_error( ret ) );
+}
+
+psa_status_t psa_generate_key( psa_key_slot_t key,
+                               psa_key_type_t type,
+                               size_t bits,
+                               const void *parameters,
+                               size_t parameters_size )
+{
+    return( PSA_ERROR_NOT_SUPPORTED );
+}
+
+
+/****************************************************************/
 /* Module setup */
 /****************************************************************/
 
diff --git a/tests/suites/test_suite_psa_crypto.data b/tests/suites/test_suite_psa_crypto.data
index 00add7d..4b6085c 100644
--- a/tests/suites/test_suite_psa_crypto.data
+++ b/tests/suites/test_suite_psa_crypto.data
@@ -456,3 +456,18 @@
 PSA decrypt: RSA PKCS#1 v1.5, input too large
 depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15
 asymmetric_decrypt_fail:PSA_KEY_TYPE_RSA_KEYPAIR:"3082025e02010002818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3020301000102818100874bf0ffc2f2a71d14671ddd0171c954d7fdbf50281e4f6d99ea0e1ebcf82faa58e7b595ffb293d1abe17f110b37c48cc0f36c37e84d876621d327f64bbe08457d3ec4098ba2fa0a319fba411c2841ed7be83196a8cdf9daa5d00694bc335fc4c32217fe0488bce9cb7202e59468b1ead119000477db2ca797fac19eda3f58c1024100e2ab760841bb9d30a81d222de1eb7381d82214407f1b975cbbfe4e1a9467fd98adbd78f607836ca5be1928b9d160d97fd45c12d6b52e2c9871a174c66b488113024100c5ab27602159ae7d6f20c3c2ee851e46dc112e689e28d5fcbbf990a99ef8a90b8bb44fd36467e7fc1789ceb663abda338652c3c73f111774902e840565927091024100b6cdbd354f7df579a63b48b3643e353b84898777b48b15f94e0bfc0567a6ae5911d57ad6409cf7647bf96264e9bd87eb95e263b7110b9a1f9f94acced0fafa4d024071195eec37e8d257decfc672b07ae639f10cbb9b0c739d0c809968d644a94e3fd6ed9287077a14583f379058f76a8aecd43c62dc8c0f41766650d725275ac4a1024100bb32d133edc2e048d463388b7be9cb4be29f4b6250be603e70e3647501c97ddde20a4e71be95fd5e71784e25aca4baf25be5738aae59bbfe1c997781447a2b24":PSA_ALG_RSA_PKCS1V15_CRYPT:"0099ffde2fcc00c9cc01972ebfa7779b298dbbaf7f50707a7405296dd2783456fc792002f462e760500e02afa25a859ace8701cb5d3b0262116431c43af8eb08f5a88301057cf1c156a2a5193c143e7a5b03fac132b7e89e6dcd8f4c82c9b28452329c260d30bc39b3816b7c46b41b37b4850d2ae74e729f99c6621fbbe2e46872":PSA_ERROR_INVALID_ARGUMENT
+
+PSA generate random: 0 bytes
+generate_random:0:0
+
+PSA generate random: 1 byte
+generate_random:1:8
+
+PSA generate random: 4 bytes
+generate_random:1:2
+
+PSA generate random: 16 bytes
+generate_random:16:0
+
+PSA generate random: 19 bytes
+generate_random:19:0
diff --git a/tests/suites/test_suite_psa_crypto.function b/tests/suites/test_suite_psa_crypto.function
index 9dbf034..c1d0e14 100644
--- a/tests/suites/test_suite_psa_crypto.function
+++ b/tests/suites/test_suite_psa_crypto.function
@@ -1520,3 +1520,44 @@
     mbedtls_psa_crypto_free( );
 }
 /* END_CASE */
+
+/* BEGIN_CASE */
+void generate_random( int bytes, int retries )
+{
+    const unsigned char trail[] = "foobar";
+    unsigned char *buffer1 = mbedtls_calloc( 1, bytes + sizeof( trail ) );
+    unsigned char *buffer2 = mbedtls_calloc( 1, bytes );
+
+    TEST_ASSERT( buffer1 != NULL );
+    TEST_ASSERT( buffer2 != NULL );
+    memcpy( buffer1 + bytes, trail, sizeof( trail ) );
+
+    TEST_ASSERT( psa_crypto_init( ) == PSA_SUCCESS );
+
+    TEST_ASSERT( psa_generate_random( buffer1, bytes ) == PSA_SUCCESS );
+
+    /* Check that no more than bytes have been overwritten */
+    TEST_ASSERT( memcmp( buffer1 + bytes, trail, sizeof( trail ) ) == 0 );
+
+    if( bytes == 0 )
+        goto exit;
+
+    /* We can't validate that the data is really random, but we can
+     * validate that it doesn't repeat between calls. There's a
+     * 1/256^bytes chance that it does repeat, of course, so allow
+     * a few retries. */
+    ++retries; /* The first time isn't a REtry */
+    do
+    {
+        --retries;
+        TEST_ASSERT( psa_generate_random( buffer2, bytes ) == PSA_SUCCESS );
+    }
+    while( memcmp( buffer1, buffer2, bytes ) == 0 && retries >= -1 );
+    TEST_ASSERT( retries >= 0 );
+
+exit:
+    mbedtls_psa_crypto_free( );
+    mbedtls_free( buffer1 );
+    mbedtls_free( buffer2 );
+}
+/* END_CASE */
