From af3bf0e15ef098faa7403e726a17eb10e61d22d4 Mon Sep 17 00:00:00 2001 From: Thomas Perale Date: Mon, 7 Jul 2025 17:47:05 +0200 Subject: [PATCH] package/shairport-sync: fix build w/ mbedtls v3.6 Since [1] when trying to build this package with mbedtls v3.6 the following error is happening: ``` player.h:12:10: fatal error: mbedtls/havege.h: No such file or directory 12 | #include | ^~~~~~~~~~~~~~~~~~ compilation terminated. ``` This error can be reproduced with the following config: ``` cat <.config BR2_arm=y BR2_cortex_a7=y BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y BR2_PACKAGE_MBEDTLS=y BR2_PACKAGE_SHAIRPORT_SYNC=y EOF make olddefconfig make ``` This patch backport the upstream commit [2] that add support for mbedtls v3. [1] 3481a9643f package/mbedtls: bump to version 3.6.3.1 [2] https://github.com/mikebrady/shairport-sync/commit/d73b585c6f6d9136ae7a04243a54d734fa57d779 Signed-off-by: Thomas Perale Signed-off-by: Julien Olivain (cherry picked from commit d53f8f26910df2f75e0f4a053fd6ef0c65e639c1) Signed-off-by: Titouan Christophe --- ...0002-mbedtls-add-support-to-mbedtls3.patch | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 package/shairport-sync/0002-mbedtls-add-support-to-mbedtls3.patch diff --git a/package/shairport-sync/0002-mbedtls-add-support-to-mbedtls3.patch b/package/shairport-sync/0002-mbedtls-add-support-to-mbedtls3.patch new file mode 100644 index 0000000000..e0e8ea53de --- /dev/null +++ b/package/shairport-sync/0002-mbedtls-add-support-to-mbedtls3.patch @@ -0,0 +1,105 @@ +From d73b585c6f6d9136ae7a04243a54d734fa57d779 Mon Sep 17 00:00:00 2001 +From: Seo Suchan +Date: Thu, 9 May 2024 19:10:59 +0900 +Subject: [PATCH] mbedtls: add support to mbedtls3 + +Signed-off-by: Seo Suchan +Upstream: https://github.com/mikebrady/shairport-sync/commit/d73b585c6f6d9136ae7a04243a54d734fa57d779 +[thomas: backport the line numbers] +Signed-off-by: Thomas Perale +--- + common.c | 30 ++++++++++++++++++++++++++---- + player.c | 1 - + player.h | 1 - + 3 files changed, 26 insertions(+), 6 deletions(-) + +diff --git a/common.c b/common.c +index 4dc75bc7f..0e2a07243 100644 +--- a/common.c ++++ b/common.c +@@ -77,6 +77,12 @@ + #include + #include + #include ++ ++#if MBEDTLS_VERSION_MAJOR == 3 ++#define MBEDTLS_PRIVATE_V3_ONLY(_q) MBEDTLS_PRIVATE(_q) ++#else ++#define MBEDTLS_PRIVATE_V3_ONLY(_q) _q ++#endif + #endif + + #ifdef CONFIG_LIBDAEMON +@@ -691,8 +697,14 @@ uint8_t *rsa_apply(uint8_t *input, int inlen, int *outlen, int mode) { + + mbedtls_pk_init(&pkctx); + ++#if MBEDTLS_VERSION_MAJOR == 3 + rc = mbedtls_pk_parse_key(&pkctx, (unsigned char *)super_secret_key, sizeof(super_secret_key), ++ NULL, 0, mbedtls_ctr_drbg_random, &ctr_drbg); ++#else ++ rc = mbedtls_pk_parse_key(&pkctx, (unsigned char *)super_secret_key, sizeof(super_secret_key), + NULL, 0); ++ ++#endif + if (rc != 0) + debug(1, "Error %d reading the private key.", rc); + +@@ -701,19 +713,29 @@ uint8_t *rsa_apply(uint8_t *input, int inlen, int *outlen, int mode) { + + switch (mode) { + case RSA_MODE_AUTH: +- mbedtls_rsa_set_padding(trsa, MBEDTLS_RSA_PKCS_V15, MBEDTLS_MD_NONE); +- outbuf = malloc(trsa->len); ++ mbedtls_rsa_set_padding(trsa, MBEDTLS_RSA_PKCS_V15, MBEDTLS_MD_NONE); ++ outbuf = malloc(trsa->MBEDTLS_PRIVATE_V3_ONLY(len)); ++#if MBEDTLS_VERSION_MAJOR == 3 ++ rc = mbedtls_rsa_pkcs1_encrypt(trsa, mbedtls_ctr_drbg_random, &ctr_drbg, ++ inlen, input, outbuf); ++#else + rc = mbedtls_rsa_pkcs1_encrypt(trsa, mbedtls_ctr_drbg_random, &ctr_drbg, MBEDTLS_RSA_PRIVATE, + inlen, input, outbuf); ++#endif + if (rc != 0) + debug(1, "mbedtls_pk_encrypt error %d.", rc); +- *outlen = trsa->len; ++ *outlen = trsa->MBEDTLS_PRIVATE_V3_ONLY(len); + break; + case RSA_MODE_KEY: + mbedtls_rsa_set_padding(trsa, MBEDTLS_RSA_PKCS_V21, MBEDTLS_MD_SHA1); +- outbuf = malloc(trsa->len); ++ outbuf = malloc(trsa->MBEDTLS_PRIVATE_V3_ONLY(len)); ++#if MBEDTLS_VERSION_MAJOR == 3 ++ rc = mbedtls_rsa_pkcs1_decrypt(trsa, mbedtls_ctr_drbg_random, &ctr_drbg, ++ &olen, input, outbuf, trsa->MBEDTLS_PRIVATE_V3_ONLY(len)); ++#else + rc = mbedtls_rsa_pkcs1_decrypt(trsa, mbedtls_ctr_drbg_random, &ctr_drbg, MBEDTLS_RSA_PRIVATE, + &olen, input, outbuf, trsa->len); ++#endif + if (rc != 0) + debug(1, "mbedtls_pk_decrypt error %d.", rc); + *outlen = olen; +diff --git a/player.c b/player.c +index 8c1752722..d023d269c 100644 +--- a/player.c ++++ b/player.c +@@ -47,7 +47,6 @@ + + #ifdef CONFIG_MBEDTLS + #include +-#include + #endif + + #ifdef CONFIG_POLARSSL +diff --git a/player.h b/player.h +index 11435bf91..b35eb7652 100644 +--- a/player.h ++++ b/player.h +@@ -9,7 +9,6 @@ + + #ifdef CONFIG_MBEDTLS + #include +-#include + #endif + + #ifdef CONFIG_POLARSSL