Skip to content

Commit a6b3d33

Browse files
committed
mbedtls4
1 parent eb5ee93 commit a6b3d33

27 files changed

Lines changed: 1417 additions & 34 deletions

File tree

cmake/lws_config.h.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@
216216
#cmakedefine LWS_WITH_LWSAC
217217
#cmakedefine LWS_LOGS_TIMESTAMP
218218
#cmakedefine LWS_WITH_MBEDTLS
219+
#cmakedefine LWS_HAVE_MBEDTLS_V4
219220
#cmakedefine LWS_WITH_BEARSSL
220221
#cmakedefine LWS_WITH_SCHANNEL
221222
#cmakedefine LWS_WITH_GNUTLS

include/libwebsockets.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -411,8 +411,10 @@ typedef void X509_VERIFY_PARAM;
411411

412412
#if defined(LWS_WITH_TLS)
413413
#include <mbedtls/ssl.h>
414+
#if !defined(LWS_HAVE_MBEDTLS_V4)
414415
#include <mbedtls/entropy.h>
415416
#include <mbedtls/ctr_drbg.h>
417+
#endif
416418
#include <mbedtls/version.h>
417419

418420
#if !defined(MBEDTLS_PRIVATE)
@@ -907,10 +909,14 @@ lws_fx_string(const lws_fx_t *a, char *buf, size_t size);
907909
#include <libwebsockets/lws-quic.h>
908910

909911
#if defined(LWS_WITH_MBEDTLS)
912+
#if !defined(LWS_HAVE_MBEDTLS_V4)
910913
#include <mbedtls/md5.h>
911914
#include <mbedtls/sha1.h>
912915
#include <mbedtls/sha256.h>
913916
#include <mbedtls/sha512.h>
917+
#else
918+
#include <psa/crypto.h>
919+
#endif
914920
#endif
915921
#if defined(LWS_WITH_BEARSSL)
916922
#include <bearssl.h>

include/libwebsockets/lws-genaes.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,12 @@
3434
///@{
3535

3636
#if defined(LWS_WITH_MBEDTLS)
37+
#if !defined(LWS_HAVE_MBEDTLS_V4)
3738
#include <mbedtls/aes.h>
3839
#include <mbedtls/gcm.h>
40+
#else
41+
#include <psa/crypto.h>
42+
#endif
3943
#endif
4044

4145
enum enum_aes_modes {
@@ -67,13 +71,20 @@ enum enum_aes_padding {
6771

6872
struct lws_genaes_ctx {
6973
#if defined(LWS_WITH_MBEDTLS)
74+
#if !defined(LWS_HAVE_MBEDTLS_V4)
7075
union {
7176
mbedtls_aes_context ctx;
7277
#if defined(MBEDTLS_CIPHER_MODE_XTS)
7378
mbedtls_aes_xts_context ctx_xts;
7479
#endif
7580
mbedtls_gcm_context ctx_gcm;
7681
} u;
82+
#else
83+
psa_key_id_t key_id;
84+
psa_algorithm_t alg;
85+
psa_cipher_operation_t cipher_ctx;
86+
psa_aead_operation_t aead_ctx;
87+
#endif
7788
#elif defined(LWS_WITH_SCHANNEL)
7889
struct {
7990
void *hAlg;

include/libwebsockets/lws-genchacha.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,11 @@
2828
#include <stdint.h>
2929

3030
#if defined(LWS_WITH_MBEDTLS)
31+
#if !defined(LWS_HAVE_MBEDTLS_V4)
3132
#include <mbedtls/chachapoly.h>
33+
#else
34+
#include <psa/crypto.h>
35+
#endif
3236
#endif
3337

3438
/*! \defgroup generic chacha

include/libwebsockets/lws-gendtls.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,10 @@
3737

3838
#if defined(LWS_WITH_MBEDTLS)
3939
#include <mbedtls/ssl.h>
40+
#if !defined(LWS_HAVE_MBEDTLS_V4)
4041
#include <mbedtls/entropy.h>
4142
#include <mbedtls/ctr_drbg.h>
43+
#endif
4244
#include <mbedtls/ssl_cookie.h>
4345
#elif defined(LWS_WITH_GNUTLS)
4446
#include <gnutls/gnutls.h>

include/libwebsockets/lws-genec.h

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,17 @@ enum enum_genec_alg {
3232

3333
struct lws_genec_ctx {
3434
#if defined(LWS_WITH_MBEDTLS)
35+
#if !defined(LWS_HAVE_MBEDTLS_V4)
3536
union {
3637
mbedtls_ecdh_context *ctx_ecdh;
3738
mbedtls_ecdsa_context *ctx_ecdsa;
3839
} u;
40+
#else
41+
psa_key_id_t key_id;
42+
psa_algorithm_t alg;
43+
uint8_t *peer_key;
44+
size_t peer_key_len;
45+
#endif
3946
#elif defined(LWS_WITH_SCHANNEL)
4047
struct {
4148
void *hAlg;
@@ -60,7 +67,7 @@ struct lws_genec_ctx {
6067
char has_private;
6168
};
6269

63-
#if defined(LWS_WITH_MBEDTLS)
70+
#if defined(LWS_WITH_MBEDTLS) && !defined(LWS_HAVE_MBEDTLS_V4)
6471
enum enum_lws_dh_side {
6572
LDHS_OURS = MBEDTLS_ECDH_OURS,
6673
LDHS_THEIRS = MBEDTLS_ECDH_THEIRS

include/libwebsockets/lws-genhash.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@
4040
#include <openssl/hmac.h>
4141
#endif
4242

43+
#if defined(LWS_HAVE_MBEDTLS_V4)
44+
#include <psa/crypto.h>
45+
#endif
46+
4347

4448
enum lws_genhash_types {
4549
LWS_GENHASH_TYPE_UNKNOWN,
@@ -65,13 +69,17 @@ enum lws_genhmac_types {
6569
struct lws_genhash_ctx {
6670
uint8_t type;
6771
#if defined(LWS_WITH_MBEDTLS)
72+
#if defined(LWS_HAVE_MBEDTLS_V4)
73+
psa_hash_operation_t hash_ctx;
74+
#else
6875
union {
6976
mbedtls_md5_context md5;
7077
mbedtls_sha1_context sha1;
7178
mbedtls_sha256_context sha256;
7279
mbedtls_sha512_context sha512; /* 384 also uses this */
7380
const mbedtls_md_info_t *hmac;
7481
} u;
82+
#endif
7583
#elif defined(LWS_WITH_SCHANNEL)
7684
struct {
7785
void *hAlg;
@@ -98,8 +106,13 @@ struct lws_genhash_ctx {
98106
struct lws_genhmac_ctx {
99107
uint8_t type;
100108
#if defined(LWS_WITH_MBEDTLS)
109+
#if defined(LWS_HAVE_MBEDTLS_V4)
110+
psa_mac_operation_t mac_ctx;
111+
psa_key_id_t key_id;
112+
#else
101113
const mbedtls_md_info_t *hmac;
102114
mbedtls_md_context_t ctx;
115+
#endif
103116
#elif defined(LWS_WITH_SCHANNEL)
104117
struct {
105118
void *hAlg;

include/libwebsockets/lws-genrsa.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,11 @@ enum enum_genrsa_mode {
4444

4545
struct lws_genrsa_ctx {
4646
#if defined(LWS_WITH_MBEDTLS)
47+
#if !defined(LWS_HAVE_MBEDTLS_V4)
4748
mbedtls_rsa_context *ctx;
49+
#else
50+
psa_key_id_t key_id;
51+
#endif
4852
#elif defined(LWS_WITH_SCHANNEL)
4953
struct {
5054
void *hAlg;

lib/core/context.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -855,7 +855,11 @@ lws_create_context(const struct lws_context_creation_info *info)
855855
char mbedtls_version[32];
856856

857857
#if defined(MBEDTLS_VERSION_C)
858+
#if defined(LWS_HAVE_MBEDTLS_V4)
859+
lws_snprintf(mbedtls_version, sizeof(mbedtls_version), "%s", mbedtls_version_get_string());
860+
#else
858861
mbedtls_version_get_string(mbedtls_version);
862+
#endif
859863
#else
860864
lws_snprintf(mbedtls_version, sizeof(mbedtls_version), "%s", MBEDTLS_VERSION_STRING);
861865
#endif

lib/core/private-lib-core.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -693,7 +693,7 @@ struct lws_context {
693693
const char *username, *groupname;
694694
#endif
695695

696-
#if defined(LWS_WITH_MBEDTLS)
696+
#if defined(LWS_WITH_MBEDTLS) && !defined(LWS_HAVE_MBEDTLS_V4)
697697
mbedtls_entropy_context mec;
698698
mbedtls_ctr_drbg_context mcdc;
699699
#endif

0 commit comments

Comments
 (0)