summaryrefslogtreecommitdiff
path: root/lib/auth/psk.c
diff options
context:
space:
mode:
authorDaiki Ueno <ueno@gnu.org>2023-05-02 08:41:08 +0900
committerDaiki Ueno <ueno@gnu.org>2023-05-04 18:47:56 +0900
commit4fe788cc172e6c06f40a42ba516a60f21369018c (patch)
tree1e84b4e61a611894f264ceb5e9e2ef9a51dacfd0 /lib/auth/psk.c
parent643342325a15e652fedac27b7bcb4614a242ab0d (diff)
downloadgnutls-4fe788cc172e6c06f40a42ba516a60f21369018c.tar.gz
psk: Add basic support for RFC 9258 external PSK importer interface
This adds a minimal, callback-based API to import external PSK, following RFC 9258. The client and the server importing external PSK are supposed to set a callback to retrieve PSK, which returns flags that may indicate the PSK is imported, along with the key: typedef int gnutls_psk_client_credentials_function3( gnutls_session_t session, gnutls_datum_t *username, gnutls_datum_t *key, gnutls_psk_key_flags *flags); typedef int gnutls_psk_server_credentials_function3( gnutls_session_t session, const gnutls_datum_t *username, gnutls_datum_t *key, gnutls_psk_key_flags *flags); Those callbacks are responsible to call gnutls_psk_format_imported_identity() for external PSKs to build a serialized PSK identity, and set GNUTLS_PSK_KEY_EXT in flags if the identity is an imported one. Signed-off-by: Daiki Ueno <ueno@gnu.org>
Diffstat (limited to 'lib/auth/psk.c')
-rw-r--r--lib/auth/psk.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/auth/psk.c b/lib/auth/psk.c
index 17206f69c5..8ddb239823 100644
--- a/lib/auth/psk.c
+++ b/lib/auth/psk.c
@@ -136,7 +136,7 @@ int _gnutls_gen_psk_client_kx(gnutls_session_t session, gnutls_buffer_st *data)
return GNUTLS_E_INTERNAL_ERROR;
}
- ret = _gnutls_find_psk_key(session, cred, &username, &key, &free);
+ ret = _gnutls_find_psk_key(session, cred, &username, &key, NULL, &free);
if (ret < 0)
return gnutls_assert_val(ret);
@@ -224,7 +224,7 @@ static int _gnutls_proc_psk_client_kx(gnutls_session_t session, uint8_t *data,
return gnutls_assert_val(ret);
ret = _gnutls_psk_pwd_find_entry(session, info->username,
- info->username_len, &psk_key);
+ info->username_len, &psk_key, NULL);
if (ret < 0)
return gnutls_assert_val(ret);