From 9df731a176aab8e03b984b681b1bea01ccff6644 Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Mon, 06 Nov 2023 07:23:06 +0000 Subject: [PATCH] rk3568 rt uboot init --- u-boot/lib/avb/libavb/avb_sha512.c | 59 +++++++++++++++++++++++++++++++---------------------------- 1 files changed, 31 insertions(+), 28 deletions(-) diff --git a/u-boot/lib/avb/libavb/avb_sha512.c b/u-boot/lib/avb/libavb/avb_sha512.c index d3e437b..2cdd6ca 100644 --- a/u-boot/lib/avb/libavb/avb_sha512.c +++ b/u-boot/lib/avb/libavb/avb_sha512.c @@ -38,33 +38,6 @@ #include <android_avb/avb_sha.h> #include <android_avb/avb_util.h> -/* Crypto-v1 is not support sha512 */ -#ifdef CONFIG_ROCKCHIP_CRYPTO_V2 -void avb_sha512_init(AvbSHA512Ctx* ctx) { - ctx->crypto_ctx.algo = CRYPTO_SHA512; - ctx->crypto_ctx.length = ctx->tot_len; - memset(ctx->buf, 0, sizeof(ctx->buf)); - - ctx->crypto_dev = crypto_get_device(ctx->crypto_ctx.algo); - if (!ctx->crypto_dev) - avb_error("Can't get sha512 crypto device\n"); - else - crypto_sha_init(ctx->crypto_dev, &ctx->crypto_ctx); -} - -void avb_sha512_update(AvbSHA512Ctx* ctx, const uint8_t* data, size_t len) { - if (ctx->crypto_dev) - crypto_sha_update(ctx->crypto_dev, (u32 *)data, len); -} - -uint8_t* avb_sha512_final(AvbSHA512Ctx* ctx) { - if (ctx->crypto_dev) - crypto_sha_final(ctx->crypto_dev, &ctx->crypto_ctx, ctx->buf); - - return ctx->buf; -} - -#else #define SHFR(x, n) (x >> n) #define ROTR(x, n) ((x >> n) | (x << ((sizeof(x) << 3) - n))) #define ROTL(x, n) ((x << n) | (x >> ((sizeof(x) << 3) - n))) @@ -160,6 +133,19 @@ /* SHA-512 implementation */ void avb_sha512_init(AvbSHA512Ctx* ctx) { +/* Crypto-v1 is not support sha512 */ +#ifdef CONFIG_ROCKCHIP_CRYPTO_V2 + ctx->crypto_ctx.algo = CRYPTO_SHA512; + ctx->crypto_ctx.length = ctx->tot_len; + memset(ctx->buf, 0, sizeof(ctx->buf)); + + ctx->crypto_dev = crypto_get_device(ctx->crypto_ctx.algo); + /* If there is no available crypto device, calculate in software instead. */ + if (ctx->crypto_dev) { + crypto_sha_init(ctx->crypto_dev, &ctx->crypto_ctx); + return; + } +#endif #ifdef UNROLL_LOOPS_SHA512 ctx->h[0] = sha512_h0[0]; ctx->h[1] = sha512_h0[1]; @@ -347,6 +333,15 @@ } void avb_sha512_update(AvbSHA512Ctx* ctx, const uint8_t* data, size_t len) { +/* Crypto-v1 is not support sha512 */ +#ifdef CONFIG_ROCKCHIP_CRYPTO_V2 + /* If there is no available crypto device, calculate in software instead. */ + if (ctx->crypto_dev) { + crypto_sha_update(ctx->crypto_dev, (u32 *)data, len); + return; + } +#endif + size_t block_nb; size_t new_len, rem_len, tmp_len; const uint8_t* shifted_data; @@ -378,6 +373,15 @@ } uint8_t* avb_sha512_final(AvbSHA512Ctx* ctx) { +/* Crypto-v1 is not support sha512 */ +#ifdef CONFIG_ROCKCHIP_CRYPTO_V2 + /* If there is no available crypto device, calculate in software instead. */ + if (ctx->crypto_dev) { + crypto_sha_final(ctx->crypto_dev, &ctx->crypto_ctx, ctx->buf); + return ctx->buf; + } +#endif + size_t block_nb; size_t pm_len; uint64_t len_b; @@ -414,4 +418,3 @@ return ctx->buf; } -#endif -- Gitblit v1.6.2