gnutls_datum_t username = {NULL, 0};
gnutls_datum_t key;
gnutls_psk_client_credentials_t cred;
+ psk_auth_info_t info;
cred = (gnutls_psk_client_credentials_t)
_gnutls_get_cred(session, GNUTLS_CRD_PSK);
return GNUTLS_E_INSUFFICIENT_CREDENTIALS;
}
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK);
+ if (info == NULL) {
+ gnutls_assert();
+ return GNUTLS_E_INTERNAL_ERROR;
+ }
+
ret = _gnutls_find_psk_key(session, cred, &username, &key, &free);
if (ret < 0)
return gnutls_assert_val(ret);
gnutls_assert();
}
+ if (username.size > sizeof(info->username)-1) {
+ gnutls_assert();
+ ret = GNUTLS_E_ILLEGAL_SRP_USERNAME;
+ goto cleanup;
+ }
+
+ memcpy(info->username, username.data, username.size);
+ info->username[username.size] = 0;
+
+
cleanup:
if (free) {
gnutls_free(username.data);
return GNUTLS_E_INTERNAL_ERROR;
}
- if (hint.size > MAX_USERNAME_SIZE) {
+ if (hint.size > sizeof(info->hint)-1) {
gnutls_assert();
return GNUTLS_E_ILLEGAL_SRP_USERNAME;
}