aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/services/hostapd/patches/130-mbedtls-annotate-with-TEST_FAIL-for-hwsim-tests.patch
diff options
context:
space:
mode:
authorRosen Penev <rosenp@gmail.com>2022-09-15 00:48:45 -0700
committerDaniel Golle <daniel@makrotopia.org>2022-12-19 12:27:35 +0000
commit6d1df35747d7f02f52973ba5604642dcc17ddf5f (patch)
tree0430ce5e7a1c39f00b07354d8fad59df39c06fdf /package/network/services/hostapd/patches/130-mbedtls-annotate-with-TEST_FAIL-for-hwsim-tests.patch
parent17c6fb1054e3dde8fa573195acaac42a5edf0942 (diff)
downloadupstream-6d1df35747d7f02f52973ba5604642dcc17ddf5f.tar.gz
upstream-6d1df35747d7f02f52973ba5604642dcc17ddf5f.tar.bz2
upstream-6d1df35747d7f02f52973ba5604642dcc17ddf5f.zip
hostapd: add mbedtls variant
This adds the current WIP mbedtls patches for hostapd. The motivation here is to reduce size. Signed-off-by: Rosen Penev <rosenp@gmail.com>
Diffstat (limited to 'package/network/services/hostapd/patches/130-mbedtls-annotate-with-TEST_FAIL-for-hwsim-tests.patch')
-rw-r--r--package/network/services/hostapd/patches/130-mbedtls-annotate-with-TEST_FAIL-for-hwsim-tests.patch421
1 files changed, 421 insertions, 0 deletions
diff --git a/package/network/services/hostapd/patches/130-mbedtls-annotate-with-TEST_FAIL-for-hwsim-tests.patch b/package/network/services/hostapd/patches/130-mbedtls-annotate-with-TEST_FAIL-for-hwsim-tests.patch
new file mode 100644
index 0000000000..ae7620b90c
--- /dev/null
+++ b/package/network/services/hostapd/patches/130-mbedtls-annotate-with-TEST_FAIL-for-hwsim-tests.patch
@@ -0,0 +1,421 @@
+From 31bd19e0e0254b910cccfd3ddc6a6a9222bbcfc0 Mon Sep 17 00:00:00 2001
+From: Glenn Strauss <gstrauss@gluelogic.com>
+Date: Sun, 9 Oct 2022 05:12:17 -0400
+Subject: [PATCH 3/7] mbedtls: annotate with TEST_FAIL() for hwsim tests
+
+Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
+---
+ src/crypto/crypto_mbedtls.c | 124 ++++++++++++++++++++++++++++++++++++
+ 1 file changed, 124 insertions(+)
+
+--- a/src/crypto/crypto_mbedtls.c
++++ b/src/crypto/crypto_mbedtls.c
+@@ -280,6 +280,9 @@ __attribute_noinline__
+ static int md_vector(size_t num_elem, const u8 *addr[], const size_t *len,
+ u8 *mac, mbedtls_md_type_t md_type)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ mbedtls_md_context_t ctx;
+ mbedtls_md_init(&ctx);
+ if (mbedtls_md_setup(&ctx, mbedtls_md_info_from_type(md_type), 0) != 0){
+@@ -343,6 +346,9 @@ __attribute_noinline__
+ static int sha384_512_vector(size_t num_elem, const u8 *addr[],
+ const size_t *len, u8 *mac, int is384)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ struct mbedtls_sha512_context ctx;
+ mbedtls_sha512_init(&ctx);
+ #if MBEDTLS_VERSION_MAJOR >= 3
+@@ -375,6 +381,9 @@ int sha384_vector(size_t num_elem, const
+ #include <mbedtls/sha256.h>
+ int sha256_vector(size_t num_elem, const u8 *addr[], const size_t *len, u8 *mac)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ struct mbedtls_sha256_context ctx;
+ mbedtls_sha256_init(&ctx);
+ #if MBEDTLS_VERSION_MAJOR >= 3
+@@ -397,6 +406,9 @@ int sha256_vector(size_t num_elem, const
+ #include <mbedtls/sha1.h>
+ int sha1_vector(size_t num_elem, const u8 *addr[], const size_t *len, u8 *mac)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ struct mbedtls_sha1_context ctx;
+ mbedtls_sha1_init(&ctx);
+ #if MBEDTLS_VERSION_MAJOR >= 3
+@@ -419,6 +431,9 @@ int sha1_vector(size_t num_elem, const u
+ #include <mbedtls/md5.h>
+ int md5_vector(size_t num_elem, const u8 *addr[], const size_t *len, u8 *mac)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ struct mbedtls_md5_context ctx;
+ mbedtls_md5_init(&ctx);
+ #if MBEDTLS_VERSION_MAJOR >= 3
+@@ -441,6 +456,9 @@ int md5_vector(size_t num_elem, const u8
+ #include <mbedtls/md4.h>
+ int md4_vector(size_t num_elem, const u8 *addr[], const size_t *len, u8 *mac)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ struct mbedtls_md4_context ctx;
+ mbedtls_md4_init(&ctx);
+ mbedtls_md4_starts_ret(&ctx);
+@@ -460,6 +478,9 @@ static int hmac_vector(const u8 *key, si
+ const u8 *addr[], const size_t *len, u8 *mac,
+ mbedtls_md_type_t md_type)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ mbedtls_md_context_t ctx;
+ mbedtls_md_init(&ctx);
+ if (mbedtls_md_setup(&ctx, mbedtls_md_info_from_type(md_type), 1) != 0){
+@@ -571,6 +592,9 @@ static int hmac_kdf_expand(const u8 *prk
+ const char *label, const u8 *info, size_t info_len,
+ u8 *okm, size_t okm_len, mbedtls_md_type_t md_type)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ const mbedtls_md_info_t *md_info = mbedtls_md_info_from_type(md_type);
+ #ifdef MBEDTLS_HKDF_C
+ if (label == NULL) /* RFC 5869 HKDF-Expand when (label == NULL) */
+@@ -663,6 +687,9 @@ static int hmac_prf_bits(const u8 *key,
+ const u8 *data, size_t data_len, u8 *buf,
+ size_t buf_len_bits, mbedtls_md_type_t md_type)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ mbedtls_md_context_t ctx;
+ mbedtls_md_init(&ctx);
+ const mbedtls_md_info_t *md_info = mbedtls_md_info_from_type(md_type);
+@@ -938,6 +965,9 @@ int pbkdf2_sha1(const char *passphrase,
+
+ static void *aes_crypt_init_mode(const u8 *key, size_t len, int mode)
+ {
++ if (TEST_FAIL())
++ return NULL;
++
+ mbedtls_aes_context *aes = os_malloc(sizeof(*aes));
+ if (!aes)
+ return NULL;
+@@ -996,6 +1026,9 @@ void aes_decrypt_deinit(void *ctx)
+ /* aes-wrap.c */
+ int aes_wrap(const u8 *kek, size_t kek_len, int n, const u8 *plain, u8 *cipher)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ mbedtls_nist_kw_context ctx;
+ mbedtls_nist_kw_init(&ctx);
+ size_t olen;
+@@ -1010,6 +1043,9 @@ int aes_wrap(const u8 *kek, size_t kek_l
+ /* aes-unwrap.c */
+ int aes_unwrap(const u8 *kek, size_t kek_len, int n, const u8 *cipher, u8 *plain)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ mbedtls_nist_kw_context ctx;
+ mbedtls_nist_kw_init(&ctx);
+ size_t olen;
+@@ -1041,6 +1077,9 @@ int omac1_aes_vector(
+ const u8 *key, size_t key_len, size_t num_elem, const u8 *addr[],
+ const size_t *len, u8 *mac)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ mbedtls_cipher_type_t cipher_type;
+ switch (key_len) {
+ case 16: cipher_type = MBEDTLS_CIPHER_AES_128_ECB; break;
+@@ -1103,6 +1142,9 @@ int omac1_aes_256(const u8 *key, const u
+ /* aes-encblock.c */
+ int aes_128_encrypt_block(const u8 *key, const u8 *in, u8 *out)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ mbedtls_aes_context aes;
+ mbedtls_aes_init(&aes);
+ int ret = mbedtls_aes_setkey_enc(&aes, key, 128)
+@@ -1118,6 +1160,9 @@ int aes_128_encrypt_block(const u8 *key,
+ int aes_ctr_encrypt(const u8 *key, size_t key_len, const u8 *nonce,
+ u8 *data, size_t data_len)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ unsigned char counter[MBEDTLS_AES_BLOCK_SIZE];
+ unsigned char stream_block[MBEDTLS_AES_BLOCK_SIZE];
+ os_memcpy(counter, nonce, MBEDTLS_AES_BLOCK_SIZE);/*(must be writable)*/
+@@ -1160,11 +1205,17 @@ static int aes_128_cbc_oper(const u8 *ke
+
+ int aes_128_cbc_encrypt(const u8 *key, const u8 *iv, u8 *data, size_t data_len)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ return aes_128_cbc_oper(key, iv, data, data_len, MBEDTLS_AES_ENCRYPT);
+ }
+
+ int aes_128_cbc_decrypt(const u8 *key, const u8 *iv, u8 *data, size_t data_len)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ return aes_128_cbc_oper(key, iv, data, data_len, MBEDTLS_AES_DECRYPT);
+ }
+
+@@ -1407,6 +1458,10 @@ int crypto_hash_finish(struct crypto_has
+ }
+ mbedtls_md_free(mctx);
+ os_free(mctx);
++
++ if (TEST_FAIL())
++ return -1;
++
+ return 0;
+ }
+
+@@ -1421,6 +1476,9 @@ int crypto_hash_finish(struct crypto_has
+
+ struct crypto_bignum *crypto_bignum_init(void)
+ {
++ if (TEST_FAIL())
++ return NULL;
++
+ mbedtls_mpi *bn = os_malloc(sizeof(*bn));
+ if (bn)
+ mbedtls_mpi_init(bn);
+@@ -1429,6 +1487,9 @@ struct crypto_bignum *crypto_bignum_init
+
+ struct crypto_bignum *crypto_bignum_init_set(const u8 *buf, size_t len)
+ {
++ if (TEST_FAIL())
++ return NULL;
++
+ mbedtls_mpi *bn = os_malloc(sizeof(*bn));
+ if (bn) {
+ mbedtls_mpi_init(bn);
+@@ -1442,6 +1503,9 @@ struct crypto_bignum *crypto_bignum_init
+
+ struct crypto_bignum *crypto_bignum_init_uint(unsigned int val)
+ {
++ if (TEST_FAIL())
++ return NULL;
++
+ #if 0 /*(hostap use of this interface passes int, not uint)*/
+ val = host_to_be32(val);
+ return crypto_bignum_init_set((const u8 *)&val, sizeof(val));
+@@ -1467,6 +1531,9 @@ void crypto_bignum_deinit(struct crypto_
+ int crypto_bignum_to_bin(const struct crypto_bignum *a,
+ u8 *buf, size_t buflen, size_t padlen)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ size_t n = mbedtls_mpi_size((mbedtls_mpi *)a);
+ if (n < padlen)
+ n = padlen;
+@@ -1477,6 +1544,9 @@ int crypto_bignum_to_bin(const struct cr
+
+ int crypto_bignum_rand(struct crypto_bignum *r, const struct crypto_bignum *m)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ /*assert(r != m);*//* r must not be same as m for mbedtls_mpi_random()*/
+ #if MBEDTLS_VERSION_NUMBER >= 0x021B0000 /* mbedtls 2.27.0 */
+ return mbedtls_mpi_random((mbedtls_mpi *)r, 0, (mbedtls_mpi *)m,
+@@ -1513,6 +1583,9 @@ int crypto_bignum_exptmod(const struct c
+ const struct crypto_bignum *c,
+ struct crypto_bignum *d)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ /* (check if input params match d; d is the result) */
+ /* (a == d) is ok in current mbedtls implementation */
+ if (b == d || c == d) { /*(not ok; store result in intermediate)*/
+@@ -1540,6 +1613,9 @@ int crypto_bignum_inverse(const struct c
+ const struct crypto_bignum *b,
+ struct crypto_bignum *c)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ return mbedtls_mpi_inv_mod((mbedtls_mpi *)c,
+ (const mbedtls_mpi *)a,
+ (const mbedtls_mpi *)b) ? -1 : 0;
+@@ -1549,6 +1625,9 @@ int crypto_bignum_sub(const struct crypt
+ const struct crypto_bignum *b,
+ struct crypto_bignum *c)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ return mbedtls_mpi_sub_mpi((mbedtls_mpi *)c,
+ (const mbedtls_mpi *)a,
+ (const mbedtls_mpi *)b) ? -1 : 0;
+@@ -1558,6 +1637,9 @@ int crypto_bignum_div(const struct crypt
+ const struct crypto_bignum *b,
+ struct crypto_bignum *c)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ /*(most current use of this crypto.h interface has a == c (result),
+ * so store result in an intermediate to avoid overwritten input)*/
+ mbedtls_mpi R;
+@@ -1575,6 +1657,9 @@ int crypto_bignum_addmod(const struct cr
+ const struct crypto_bignum *c,
+ struct crypto_bignum *d)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ return mbedtls_mpi_add_mpi((mbedtls_mpi *)d,
+ (const mbedtls_mpi *)a,
+ (const mbedtls_mpi *)b)
+@@ -1588,6 +1673,9 @@ int crypto_bignum_mulmod(const struct cr
+ const struct crypto_bignum *c,
+ struct crypto_bignum *d)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ return mbedtls_mpi_mul_mpi((mbedtls_mpi *)d,
+ (const mbedtls_mpi *)a,
+ (const mbedtls_mpi *)b)
+@@ -1600,6 +1688,9 @@ int crypto_bignum_sqrmod(const struct cr
+ const struct crypto_bignum *b,
+ struct crypto_bignum *c)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ #if 1
+ return crypto_bignum_mulmod(a, a, b, c);
+ #else
+@@ -1650,6 +1741,9 @@ int crypto_bignum_is_odd(const struct cr
+ int crypto_bignum_legendre(const struct crypto_bignum *a,
+ const struct crypto_bignum *p)
+ {
++ if (TEST_FAIL())
++ return -2;
++
+ /* Security Note:
+ * mbedtls_mpi_exp_mod() is not documented to run in constant time,
+ * though mbedtls/library/bignum.c uses constant_time_internal.h funcs.
+@@ -1702,6 +1796,9 @@ int crypto_mod_exp(const u8 *base, size_
+ const u8 *modulus, size_t modulus_len,
+ u8 *result, size_t *result_len)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ mbedtls_mpi bn_base, bn_exp, bn_modulus, bn_result;
+ mbedtls_mpi_init(&bn_base);
+ mbedtls_mpi_init(&bn_exp);
+@@ -1769,6 +1866,9 @@ static int crypto_mbedtls_dh_init_public
+ int crypto_dh_init(u8 generator, const u8 *prime, size_t prime_len, u8 *privkey,
+ u8 *pubkey)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ #if 0 /*(crypto_dh_init() duplicated (and identical) in crypto_*.c modules)*/
+ size_t pubkey_len, pad;
+
+@@ -1810,6 +1910,9 @@ int crypto_dh_derive_secret(u8 generator
+ const u8 *pubkey, size_t pubkey_len,
+ u8 *secret, size_t *len)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ #if 0
+ if (pubkey_len > prime_len ||
+ (pubkey_len == prime_len &&
+@@ -2512,6 +2615,9 @@ const struct crypto_ec_point * crypto_ec
+
+ struct crypto_ec_point *crypto_ec_point_init(struct crypto_ec *e)
+ {
++ if (TEST_FAIL())
++ return NULL;
++
+ mbedtls_ecp_point *p = os_malloc(sizeof(*p));
+ if (p != NULL)
+ mbedtls_ecp_point_init(p);
+@@ -2536,6 +2642,9 @@ int crypto_ec_point_x(struct crypto_ec *
+ int crypto_ec_point_to_bin(struct crypto_ec *e,
+ const struct crypto_ec_point *point, u8 *x, u8 *y)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ /* crypto.h documents crypto_ec_point_to_bin() output is big-endian */
+ size_t len = CRYPTO_EC_plen(e);
+ if (x) {
+@@ -2563,6 +2672,9 @@ int crypto_ec_point_to_bin(struct crypto
+ struct crypto_ec_point * crypto_ec_point_from_bin(struct crypto_ec *e,
+ const u8 *val)
+ {
++ if (TEST_FAIL())
++ return NULL;
++
+ size_t len = CRYPTO_EC_plen(e);
+ mbedtls_ecp_point *p = os_malloc(sizeof(*p));
+ u8 buf[1+MBEDTLS_MPI_MAX_SIZE*2];
+@@ -2615,6 +2727,9 @@ int crypto_ec_point_add(struct crypto_ec
+ const struct crypto_ec_point *b,
+ struct crypto_ec_point *c)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ /* mbedtls does not provide an mbedtls_ecp_point add function */
+ mbedtls_mpi one;
+ mbedtls_mpi_init(&one);
+@@ -2631,6 +2746,9 @@ int crypto_ec_point_mul(struct crypto_ec
+ const struct crypto_bignum *b,
+ struct crypto_ec_point *res)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ return mbedtls_ecp_mul(
+ (mbedtls_ecp_group *)e, (mbedtls_ecp_point *)res,
+ (const mbedtls_mpi *)b, (const mbedtls_ecp_point *)p,
+@@ -2639,6 +2757,9 @@ int crypto_ec_point_mul(struct crypto_ec
+
+ int crypto_ec_point_invert(struct crypto_ec *e, struct crypto_ec_point *p)
+ {
++ if (TEST_FAIL())
++ return -1;
++
+ if (mbedtls_ecp_get_type((mbedtls_ecp_group *)e)
+ == MBEDTLS_ECP_TYPE_MONTGOMERY) {
+ /* e.g. MBEDTLS_ECP_DP_CURVE25519 and MBEDTLS_ECP_DP_CURVE448 */
+@@ -2751,6 +2872,9 @@ struct crypto_bignum *
+ crypto_ec_point_compute_y_sqr(struct crypto_ec *e,
+ const struct crypto_bignum *x)
+ {
++ if (TEST_FAIL())
++ return NULL;
++
+ mbedtls_mpi *y2 = os_malloc(sizeof(*y2));
+ if (y2 == NULL)
+ return NULL;