diff options
Diffstat (limited to 'lib/mbedtls/port')
-rw-r--r-- | lib/mbedtls/port/assert.h | 12 | ||||
-rw-r--r-- | lib/mbedtls/port/mbedtls_options.h | 23 | ||||
-rw-r--r-- | lib/mbedtls/port/md5_alt.h | 57 | ||||
-rw-r--r-- | lib/mbedtls/port/sha1_alt.h | 57 | ||||
-rw-r--r-- | lib/mbedtls/port/sha256_alt.h | 64 | ||||
-rw-r--r-- | lib/mbedtls/port/sha512_alt.h | 78 |
6 files changed, 291 insertions, 0 deletions
diff --git a/lib/mbedtls/port/assert.h b/lib/mbedtls/port/assert.h new file mode 100644 index 00000000000..490701aa9d0 --- /dev/null +++ b/lib/mbedtls/port/assert.h @@ -0,0 +1,12 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Dummy file to allow mbedtls linked with U-Boot to include assert.h + * + * Copyright (c) 2023 Linaro Limited + * Author: Raymond Mao <raymond.mao@linaro.org> + */ + +#ifndef _MBEDTLS_ASSERT_H +#define _MBEDTLS_ASSERT_H + +#endif /* _MBEDTLS_ASSERT_H */ diff --git a/lib/mbedtls/port/mbedtls_options.h b/lib/mbedtls/port/mbedtls_options.h new file mode 100644 index 00000000000..885ed6990b6 --- /dev/null +++ b/lib/mbedtls/port/mbedtls_options.h @@ -0,0 +1,23 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Internal build options for MbedTLS + * + * Copyright (c) 2025 Linaro Limited + * Author: Raymond Mao <raymond.mao@linaro.org> + */ + +#ifndef _MBEDTLS_OPT_H +#define _MBEDTLS_OPT_H + +/* + * FIXME: + * U-Boot/MbedTLS port requires to access a few of members which are defined + * as private in MbedTLS context. + * E.g: x509_internal.h, mbedtls_sha256_context and mbedtls_sha1_context. + * MBEDTLS_ALLOW_PRIVATE_ACCESS needs to be enabled to allow the external + * access, but directly including <external/mbedtls/library/common.h> is not + * allowed, since this will include <malloc.h> and break the sandbox test. + */ +#define MBEDTLS_ALLOW_PRIVATE_ACCESS + +#endif /* _MBEDTLS_OPT_H */ diff --git a/lib/mbedtls/port/md5_alt.h b/lib/mbedtls/port/md5_alt.h new file mode 100644 index 00000000000..c6e8eabf68a --- /dev/null +++ b/lib/mbedtls/port/md5_alt.h @@ -0,0 +1,57 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright (c) 2024 Linaro Limited + * Author: Raymond Mao <raymond.mao@linaro.org> + */ +#ifndef MD5_ALT_H +#define MD5_ALT_H + +#include <image.h> +#include <u-boot/md5.h> + +typedef MD5Context mbedtls_md5_context; + +static inline void mbedtls_md5_init(mbedtls_md5_context *ctx) +{ +} + +static inline void mbedtls_md5_free(mbedtls_md5_context *ctx) +{ +} + +static inline void +mbedtls_md5_clone(mbedtls_md5_context *dst, const mbedtls_md5_context *src) +{ + *dst = *src; +} + +static inline int mbedtls_md5_starts(mbedtls_md5_context *ctx) +{ + MD5Init(ctx); + return 0; +} + +static inline int mbedtls_md5_update(mbedtls_md5_context *ctx, + const unsigned char *input, + size_t ilen) +{ + MD5Update(ctx, input, ilen); + return 0; +} + +static inline int mbedtls_md5_finish(mbedtls_md5_context *ctx, + unsigned char output[16]) +{ + MD5Final(output, ctx); + return 0; +} + +static inline int mbedtls_md5(const unsigned char *input, + size_t ilen, + unsigned char output[16]) +{ + md5_wd(input, ilen, output, CHUNKSZ_MD5); + return 0; +} + +#endif /* md5_alt.h */ diff --git a/lib/mbedtls/port/sha1_alt.h b/lib/mbedtls/port/sha1_alt.h new file mode 100644 index 00000000000..cbfe0ddc478 --- /dev/null +++ b/lib/mbedtls/port/sha1_alt.h @@ -0,0 +1,57 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright (c) 2024 Linaro Limited + * Author: Raymond Mao <raymond.mao@linaro.org> + */ +#ifndef SHA1_ALT_H +#define SHA1_ALT_H + +#include <image.h> +#include <u-boot/sha1.h> + +typedef sha1_context mbedtls_sha1_context; + +static inline void mbedtls_sha1_init(mbedtls_sha1_context *ctx) +{ +} + +static inline void mbedtls_sha1_free(mbedtls_sha1_context *ctx) +{ +} + +static inline void mbedtls_sha1_clone(mbedtls_sha1_context *dst, + const mbedtls_sha1_context *src) +{ + *dst = *src; +} + +static inline int mbedtls_sha1_starts(mbedtls_sha1_context *ctx) +{ + sha1_starts(ctx); + return 0; +} + +static inline int mbedtls_sha1_update(mbedtls_sha1_context *ctx, + const unsigned char *input, + size_t ilen) +{ + sha1_update(ctx, input, ilen); + return 0; +} + +static inline int mbedtls_sha1_finish(mbedtls_sha1_context *ctx, + unsigned char output[20]) +{ + sha1_finish(ctx, output); + return 0; +} + +static inline int mbedtls_sha1(const unsigned char *input, + size_t ilen, + unsigned char output[20]) +{ + sha1_csum_wd(input, ilen, output, CHUNKSZ_SHA1); + return 0; +} + +#endif /* sha1_alt.h */ diff --git a/lib/mbedtls/port/sha256_alt.h b/lib/mbedtls/port/sha256_alt.h new file mode 100644 index 00000000000..80be94b0a06 --- /dev/null +++ b/lib/mbedtls/port/sha256_alt.h @@ -0,0 +1,64 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright (c) 2024 Linaro Limited + * Author: Raymond Mao <raymond.mao@linaro.org> + */ +#ifndef SHA256_ALT_H +#define SHA256_ALT_H + +#include <image.h> +#include <u-boot/sha256.h> + +typedef sha256_context mbedtls_sha256_context; + +static inline void mbedtls_sha256_init(mbedtls_sha256_context *ctx) +{ +} + +static inline void mbedtls_sha256_free(mbedtls_sha256_context *ctx) +{ +} + +static inline void mbedtls_sha256_clone(mbedtls_sha256_context *dst, + const mbedtls_sha256_context *src) +{ + *dst = *src; +} + +static inline int mbedtls_sha256_starts(mbedtls_sha256_context *ctx, int is224) +{ + if (is224) + return -EOPNOTSUPP; + + sha256_starts(ctx); + return 0; +} + +static inline int mbedtls_sha256_update(mbedtls_sha256_context *ctx, + const unsigned char *input, + size_t ilen) +{ + sha256_update(ctx, input, ilen); + return 0; +} + +static inline int mbedtls_sha256_finish(mbedtls_sha256_context *ctx, + unsigned char *output) +{ + sha256_finish(ctx, output); + return 0; +} + +static inline int mbedtls_sha256(const unsigned char *input, + size_t ilen, + unsigned char *output, + int is224) +{ + if (is224) + return -EOPNOTSUPP; + + sha256_csum_wd(input, ilen, output, CHUNKSZ_SHA256); + return 0; +} + +#endif /* sha256_alt.h */ diff --git a/lib/mbedtls/port/sha512_alt.h b/lib/mbedtls/port/sha512_alt.h new file mode 100644 index 00000000000..596f17ae4da --- /dev/null +++ b/lib/mbedtls/port/sha512_alt.h @@ -0,0 +1,78 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright (c) 2024 Linaro Limited + * Author: Raymond Mao <raymond.mao@linaro.org> + */ +#ifndef SHA512_ALT_H +#define SHA512_ALT_H + +#include <image.h> +#include <u-boot/sha512.h> + +typedef struct mbedtls_sha512_context { + sha512_context *ubctx; + bool is384; +} mbedtls_sha512_context; + +static inline void mbedtls_sha512_init(mbedtls_sha512_context *ctx) +{ +} + +static inline void mbedtls_sha512_free(mbedtls_sha512_context *ctx) +{ +} + +static inline void mbedtls_sha512_clone(mbedtls_sha512_context *dst, + const mbedtls_sha512_context *src) +{ + *dst = *src; +} + +static inline int mbedtls_sha512_starts(mbedtls_sha512_context *ctx, int is384) +{ + if (is384) + sha384_starts(ctx->ubctx); + else + sha512_starts(ctx->ubctx); + + ctx->is384 = is384; + return 0; +} + +static inline int mbedtls_sha512_update(mbedtls_sha512_context *ctx, + const unsigned char *input, + size_t ilen) +{ + if (ctx->is384) + sha384_update(ctx->ubctx, input, ilen); + else + sha512_update(ctx->ubctx, input, ilen); + + return 0; +} + +static inline int mbedtls_sha512_finish(mbedtls_sha512_context *ctx, + unsigned char *output) +{ + if (ctx->is384) + sha384_finish(ctx->ubctx, output); + else + sha512_finish(ctx->ubctx, output); + + return 0; +} + +static inline int mbedtls_sha512(const unsigned char *input, + size_t ilen, + unsigned char *output, + int is384) +{ + if (is384) + sha384_csum_wd(input, ilen, output, CHUNKSZ_SHA512); + else + sha512_csum_wd(input, ilen, output, CHUNKSZ_SHA512); + + return 0; +} + +#endif /* sha512_alt.h */ |