Add extern apis mbedtls_ticket_get_psk.
Signed-off-by: Xiaokang Qian <xiaokang.qian@arm.com>
diff --git a/library/ssl_misc.h b/library/ssl_misc.h
index 146dae0..baef741 100644
--- a/library/ssl_misc.h
+++ b/library/ssl_misc.h
@@ -2629,6 +2629,13 @@
return 0;
}
+#ifdef MBEDTLS_SSL_SESSION_TICKETS
+int mbedtls_ssl_tls13_ticket_get_psk(mbedtls_ssl_context *ssl,
+ psa_algorithm_t *hash_alg,
+ const unsigned char **psk,
+ size_t *psk_len);
+#endif
+
/**
* \brief Validate cipher suite against config in SSL context.
*
diff --git a/library/ssl_tls13_generic.c b/library/ssl_tls13_generic.c
index 513937e..3de164c 100644
--- a/library/ssl_tls13_generic.c
+++ b/library/ssl_tls13_generic.c
@@ -1574,4 +1574,31 @@
return MBEDTLS_ERR_SSL_UNSUPPORTED_EXTENSION;
}
+#ifdef MBEDTLS_SSL_SESSION_TICKETS
+int mbedtls_ssl_tls13_ticket_get_psk(mbedtls_ssl_context *ssl,
+ psa_algorithm_t *hash_alg,
+ const unsigned char **psk,
+ size_t *psk_len)
+{
+
+ mbedtls_ssl_session *session = ssl->session_negotiate;
+ const mbedtls_ssl_ciphersuite_t *ciphersuite_info = NULL;
+
+ if (ssl->handshake->resume == 0 || session == NULL ||
+ session->ticket == NULL) {
+ return -1;
+ }
+
+ ciphersuite_info = mbedtls_ssl_ciphersuite_from_id(session->ciphersuite);
+ if (ciphersuite_info != NULL) {
+ *hash_alg = mbedtls_psa_translate_md(ciphersuite_info->mac);
+ }
+
+ *psk = session->resumption_key;
+ *psk_len = session->resumption_key_len;
+
+ return 0;
+}
+#endif /* MBEDTLS_SSL_SESSION_TICKETS */
+
#endif /* MBEDTLS_SSL_TLS_C && MBEDTLS_SSL_PROTO_TLS1_3 */