summaryrefslogtreecommitdiff
path: root/firmware/lib20
diff options
context:
space:
mode:
authorJoel Kitching <kitching@google.com>2019-09-04 15:52:25 +0800
committerCommit Bot <commit-bot@chromium.org>2019-10-29 21:27:35 +0000
commit3d8dcc853a98bb8aae91d9a30862541a38581b2d (patch)
tree934ad41cc209cc3161e2fa3581e8f20298107329 /firmware/lib20
parent6d43a1925a3f88b4fb8ac3fc9dcfc42ccd934063 (diff)
downloadvboot-3d8dcc853a98bb8aae91d9a30862541a38581b2d.tar.gz
vboot: keep const and non-const signature and key accessors
Keep const (default) and non-const (_mutable suffix) versions of `data` field accessors for vb2_signature and vb2_packed_key. No need for separate 2packed_key.c file -- just static inline the functions. vb2_verify_packed_key_inside should return type vb2_error_t. BUG=b:124141368, chromium:968464 TEST=make clean && make runtests BRANCH=none Change-Id: I96722a746f26abbb6e19a365ce74f0bfda0da381 Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/1786386 Tested-by: Joel Kitching <kitching@chromium.org> Commit-Queue: Joel Kitching <kitching@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
Diffstat (limited to 'firmware/lib20')
-rw-r--r--firmware/lib20/common.c3
-rw-r--r--firmware/lib20/kernel.c7
2 files changed, 3 insertions, 7 deletions
diff --git a/firmware/lib20/common.c b/firmware/lib20/common.c
index f1364c7a..6a6eff32 100644
--- a/firmware/lib20/common.c
+++ b/firmware/lib20/common.c
@@ -15,7 +15,8 @@ vb2_error_t vb2_verify_digest(const struct vb2_public_key *key,
struct vb2_signature *sig, const uint8_t *digest,
const struct vb2_workbuf *wb)
{
- uint8_t *sig_data = vb2_signature_data(sig);
+ /* A signature is destroyed in the process of being verified. */
+ uint8_t *sig_data = vb2_signature_data_mutable(sig);
if (sig->sig_size != vb2_rsa_sig_size(key->sig_alg)) {
VB2_DEBUG("Wrong data signature size for algorithm, "
diff --git a/firmware/lib20/kernel.c b/firmware/lib20/kernel.c
index 172f7ffb..eff35bc4 100644
--- a/firmware/lib20/kernel.c
+++ b/firmware/lib20/kernel.c
@@ -14,11 +14,6 @@
#include "2sysincludes.h"
#include "vb2_common.h"
-static const uint8_t *vb2_signature_data_const(const struct vb2_signature *sig)
-{
- return (uint8_t *)sig + sig->sig_offset;
-}
-
/**
* Returns non-zero if the kernel needs to have a valid signature, instead of
* just a valid hash.
@@ -81,7 +76,7 @@ vb2_error_t vb2_verify_keyblock_hash(const struct vb2_keyblock *block,
if (rv)
return rv;
- if (vb2_safe_memcmp(vb2_signature_data_const(sig), digest,
+ if (vb2_safe_memcmp(vb2_signature_data(sig), digest,
digest_size) != 0) {
VB2_DEBUG("Invalid keyblock hash.\n");
return VB2_ERROR_KEYBLOCK_SIG_INVALID;