diff options
Diffstat (limited to 'common/vboot/vb21_lib.c')
-rw-r--r-- | common/vboot/vb21_lib.c | 108 |
1 files changed, 0 insertions, 108 deletions
diff --git a/common/vboot/vb21_lib.c b/common/vboot/vb21_lib.c deleted file mode 100644 index 4e215c14e5..0000000000 --- a/common/vboot/vb21_lib.c +++ /dev/null @@ -1,108 +0,0 @@ -/* Copyright 2017 The Chromium OS Authors. All rights reserved. - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -/* - * Common utility APIs for vboot 2.1 - */ - -#include "common.h" -#include "host_command.h" -#include "rsa.h" -#include "rwsig.h" -#include "system.h" -#include "vb21_struct.h" -#include "vboot.h" - -int vb21_is_packed_key_valid(const struct vb21_packed_key *key) -{ - if (key->c.magic != VB21_MAGIC_PACKED_KEY) - return EC_ERROR_VBOOT_KEY_MAGIC; - if (key->key_size != sizeof(struct rsa_public_key)) - return EC_ERROR_VBOOT_KEY_SIZE; - return EC_SUCCESS; -} - -int vb21_is_signature_valid(const struct vb21_signature *sig, - const struct vb21_packed_key *key) -{ - if (sig->c.magic != VB21_MAGIC_SIGNATURE) - return EC_ERROR_VBOOT_SIG_MAGIC; - if (sig->sig_size != RSANUMBYTES) - return EC_ERROR_VBOOT_SIG_SIZE; - if (key->sig_alg != sig->sig_alg) - return EC_ERROR_VBOOT_SIG_ALGORITHM; - if (key->hash_alg != sig->hash_alg) - return EC_ERROR_VBOOT_HASH_ALGORITHM; - /* Validity check signature offset and data size. */ - if (sig->sig_offset < sizeof(*sig)) - return EC_ERROR_VBOOT_SIG_OFFSET; - if (sig->sig_offset + RSANUMBYTES > CONFIG_RW_SIG_SIZE) - return EC_ERROR_VBOOT_SIG_OFFSET; - if (sig->data_size > CONFIG_RW_SIZE - CONFIG_RW_SIG_SIZE) - return EC_ERROR_VBOOT_DATA_SIZE; - return EC_SUCCESS; -} - -const struct vb21_packed_key *vb21_get_packed_key(void) -{ - return (const struct vb21_packed_key *)(CONFIG_RO_PUBKEY_ADDR); -} - -static void read_rwsig_info(struct ec_response_rwsig_info *r) -{ - - const struct vb21_packed_key *vb21_key; - int rv; - - vb21_key = vb21_get_packed_key(); - - r->sig_alg = vb21_key->sig_alg; - r->hash_alg = vb21_key->hash_alg; - r->key_version = vb21_key->key_version; - { BUILD_ASSERT(sizeof(r->key_id) == sizeof(vb21_key->id), - "key ID sizes must match"); } - { BUILD_ASSERT(sizeof(vb21_key->id) == sizeof(vb21_key->id.raw), - "key ID sizes must match"); } - memcpy(r->key_id, vb21_key->id.raw, sizeof(r->key_id)); - - rv = vb21_is_packed_key_valid(vb21_key); - r->key_is_valid = (rv == EC_SUCCESS); -} - -static int command_rwsig_info(int argc, char **argv) -{ - int i; - struct ec_response_rwsig_info r; - - read_rwsig_info(&r); - - ccprintf("sig_alg: %d\n", r.sig_alg); - ccprintf("key_version: %d\n", r.key_version); - ccprintf("hash_alg: %d\n", r.hash_alg); - ccprintf("key_is_valid: %d\n", r.key_is_valid); - - ccprintf("key_id: "); - for (i = 0; i < sizeof(r.key_id); i++) - ccprintf("%x", r.key_id[i]); - ccprintf("\n"); - - return EC_SUCCESS; -} -DECLARE_CONSOLE_COMMAND(rwsiginfo, command_rwsig_info, NULL, - "Display rwsig info on console."); - -static enum ec_status -host_command_rwsig_info(struct host_cmd_handler_args *args) -{ - struct ec_response_rwsig_info *r = args->response; - - read_rwsig_info(r); - args->response_size = sizeof(*r); - - return EC_RES_SUCCESS; -} - -DECLARE_HOST_COMMAND(EC_CMD_RWSIG_INFO, host_command_rwsig_info, - EC_VER_MASK(EC_VER_RWSIG_INFO)); |