Add PSA PAKE wrappers

Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
diff --git a/library/psa_crypto_driver_wrappers.h b/library/psa_crypto_driver_wrappers.h
index e3edec7..e011594 100644
--- a/library/psa_crypto_driver_wrappers.h
+++ b/library/psa_crypto_driver_wrappers.h
@@ -412,6 +412,51 @@
     size_t shared_secret_size,
     size_t *shared_secret_length);
 
+/*
+ * PAKE functions.
+ */
+psa_status_t psa_driver_wrapper_pake_setup(
+    psa_pake_operation_t *operation,
+    const psa_pake_cipher_suite_t *cipher_suite);
+
+psa_status_t psa_driver_wrapper_pake_set_password_key(
+    psa_pake_operation_t *operation,
+    mbedtls_svc_key_id_t password);
+
+psa_status_t psa_driver_wrapper_pake_set_user(
+    psa_pake_operation_t *operation,
+    const uint8_t *user_id,
+    size_t user_id_len);
+
+psa_status_t psa_driver_wrapper_pake_set_peer(
+    psa_pake_operation_t *operation,
+    const uint8_t *peer_id,
+    size_t peer_id_len);
+
+psa_status_t psa_driver_wrapper_pake_set_role(
+    psa_pake_operation_t *operation,
+    psa_pake_role_t role);
+
+psa_status_t psa_driver_wrapper_pake_output(
+    psa_pake_operation_t *operation,
+    psa_pake_step_t step,
+    uint8_t *output,
+    size_t output_size,
+    size_t *output_length);
+
+psa_status_t psa_driver_wrapper_pake_input(
+    psa_pake_operation_t *operation,
+    psa_pake_step_t step,
+    const uint8_t *input,
+    size_t input_length);
+
+psa_status_t psa_driver_wrapper_pake_get_implicit_key(
+    psa_pake_operation_t *operation,
+    psa_key_derivation_operation_t *output);
+
+psa_status_t psa_driver_wrapper_pake_abort(
+    psa_pake_operation_t *operation);
+
 #endif /* PSA_CRYPTO_DRIVER_WRAPPERS_H */
 
 /* End of automatically generated file. */
diff --git a/scripts/data_files/driver_templates/psa_crypto_driver_wrappers.c.jinja b/scripts/data_files/driver_templates/psa_crypto_driver_wrappers.c.jinja
index b35e726..8f9ff73 100644
--- a/scripts/data_files/driver_templates/psa_crypto_driver_wrappers.c.jinja
+++ b/scripts/data_files/driver_templates/psa_crypto_driver_wrappers.c.jinja
@@ -28,6 +28,7 @@
 #include "psa_crypto_driver_wrappers.h"
 #include "psa_crypto_hash.h"
 #include "psa_crypto_mac.h"
+#include "psa_crypto_pake.h"
 #include "psa_crypto_rsa.h"
 
 #include "mbedtls/platform.h"
@@ -2808,4 +2809,76 @@
     }
  }
 
+#if defined(MBEDTLS_PSA_BUILTIN_PAKE)
+psa_status_t psa_driver_wrapper_pake_setup(
+    psa_pake_operation_t *operation,
+    const psa_pake_cipher_suite_t *cipher_suite )
+{
+    return( mbedtls_psa_pake_setup( operation, cipher_suite ) );
+}
+
+psa_status_t psa_driver_wrapper_pake_set_password_key(
+    psa_pake_operation_t *operation,
+    mbedtls_svc_key_id_t password )
+{
+    return( mbedtls_psa_pake_set_password_key( operation, password ) );
+}
+
+psa_status_t psa_driver_wrapper_pake_set_user(
+    psa_pake_operation_t *operation,
+    const uint8_t *user_id,
+    size_t user_id_len )
+{
+    return( mbedtls_psa_pake_set_user( operation, user_id, user_id_len ) );
+}
+
+psa_status_t psa_driver_wrapper_pake_set_peer(
+    psa_pake_operation_t *operation,
+    const uint8_t *peer_id,
+    size_t peer_id_len )
+{
+    return( mbedtls_psa_pake_set_peer( operation, peer_id, peer_id_len ) );
+}
+
+psa_status_t psa_driver_wrapper_pake_set_role(
+    psa_pake_operation_t *operation,
+    psa_pake_role_t role )
+{
+    return( mbedtls_psa_pake_set_role( operation, role ) );
+}
+
+psa_status_t psa_driver_wrapper_pake_output(
+    psa_pake_operation_t *operation,
+    psa_pake_step_t step,
+    uint8_t *output,
+    size_t output_size,
+    size_t *output_length )
+{
+    return( mbedtls_psa_pake_output( operation, step, output,
+                                     output_size, output_length ) );
+}
+
+psa_status_t psa_driver_wrapper_pake_input(
+    psa_pake_operation_t *operation,
+    psa_pake_step_t step,
+    const uint8_t *input,
+    size_t input_length )
+{
+    return( mbedtls_psa_pake_input( operation, step, input, input_length ) );
+}
+
+psa_status_t psa_driver_wrapper_pake_get_implicit_key(
+    psa_pake_operation_t *operation,
+    psa_key_derivation_operation_t *output )
+{
+    return( mbedtls_psa_pake_get_implicit_key( operation, output ) );
+}
+
+psa_status_t psa_driver_wrapper_pake_abort(
+    psa_pake_operation_t * operation )
+{
+    return( mbedtls_psa_pake_abort( operation ) );
+}
+#endif /* MBEDTLS_PSA_BUILTIN_PAKE */
+
 #endif /* MBEDTLS_PSA_CRYPTO_C */