mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-11-27 03:33:50 +00:00
We use the .pem files to generate our public and private key files. Since we display the sha1sums of those files to help keep track of them, we might as well also display the same information about the RSA .pem files, too. BUG=chromium:231574 BRANCH=none TEST=make runtests futility show tests/testkeys/*.pem Change-Id: Ibfd1e016d65981d477ed7d117d23dedf48b95873 Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/246769 Reviewed-by: Randall Spangler <rspangler@chromium.org>
104 lines
3.3 KiB
C
104 lines
3.3 KiB
C
/*
|
|
* Copyright (c) 2013 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.
|
|
*/
|
|
#ifndef VBOOT_REFERENCE_FUTILITY_TRAVERSAL_H_
|
|
#define VBOOT_REFERENCE_FUTILITY_TRAVERSAL_H_
|
|
#include <stdint.h>
|
|
|
|
|
|
/* What are we trying to accomplish? */
|
|
enum futil_op_type {
|
|
FUTIL_OP_SHOW,
|
|
FUTIL_OP_SIGN,
|
|
|
|
NUM_FUTIL_OPS
|
|
};
|
|
|
|
/* What component are we currently handling in the callback routine? */
|
|
enum futil_cb_component {
|
|
/* entire input buffer */
|
|
CB_BEGIN_TRAVERSAL,
|
|
CB_END_TRAVERSAL,
|
|
/* fmap areas within a bios image */
|
|
CB_FMAP_GBB,
|
|
CB_FMAP_VBLOCK_A,
|
|
CB_FMAP_VBLOCK_B,
|
|
CB_FMAP_FW_MAIN_A,
|
|
CB_FMAP_FW_MAIN_B,
|
|
/* individual files (extracted from a bios, for example) */
|
|
CB_PUBKEY,
|
|
CB_KEYBLOCK,
|
|
CB_GBB,
|
|
CB_FW_PREAMBLE,
|
|
CB_KERN_PREAMBLE,
|
|
CB_RAW_FIRMWARE,
|
|
CB_RAW_KERNEL,
|
|
CB_PRIVKEY,
|
|
CB_VB2_PUBKEY,
|
|
CB_VB2_PRIVKEY,
|
|
CB_PEM,
|
|
|
|
NUM_CB_COMPONENTS
|
|
};
|
|
|
|
/* Where is the component we're poking at? */
|
|
struct cb_area_s {
|
|
uint32_t offset; /* to avoid pointer math */
|
|
uint8_t *buf;
|
|
uint32_t len;
|
|
uint32_t _flags; /* for callback use */
|
|
};
|
|
|
|
/* What do we know at this point in time? */
|
|
struct futil_traverse_state_s {
|
|
/* These two should be initialized by the caller as needed */
|
|
const char *in_filename;
|
|
enum futil_op_type op;
|
|
/* Current activity during traversal */
|
|
enum futil_cb_component component;
|
|
struct cb_area_s *my_area;
|
|
const char *name;
|
|
/* Other activites, possibly before or after the current one */
|
|
struct cb_area_s cb_area[NUM_CB_COMPONENTS];
|
|
struct cb_area_s recovery_key;
|
|
struct cb_area_s rootkey;
|
|
enum futil_file_type in_type;
|
|
int errors;
|
|
};
|
|
|
|
|
|
/*
|
|
* Traverse the buffer using the provided state, which should be initialized
|
|
* before calling. Returns nonzero (but no details) if there were any errors.
|
|
*/
|
|
int futil_traverse(uint8_t *buf, uint32_t len,
|
|
struct futil_traverse_state_s *state,
|
|
enum futil_file_type type_hint);
|
|
|
|
/* These are invoked by the traversal. They also return nonzero on error. */
|
|
int futil_cb_show_begin(struct futil_traverse_state_s *state);
|
|
int futil_cb_show_pubkey(struct futil_traverse_state_s *state);
|
|
int futil_cb_show_gbb(struct futil_traverse_state_s *state);
|
|
int futil_cb_show_keyblock(struct futil_traverse_state_s *state);
|
|
int futil_cb_show_fw_main(struct futil_traverse_state_s *state);
|
|
int futil_cb_show_fw_preamble(struct futil_traverse_state_s *state);
|
|
int futil_cb_show_kernel_preamble(struct futil_traverse_state_s *state);
|
|
int futil_cb_show_privkey(struct futil_traverse_state_s *state);
|
|
int futil_cb_show_vb2_pubkey(struct futil_traverse_state_s *state);
|
|
int futil_cb_show_vb2_privkey(struct futil_traverse_state_s *state);
|
|
int futil_cb_show_pem(struct futil_traverse_state_s *state);
|
|
|
|
int futil_cb_sign_pubkey(struct futil_traverse_state_s *state);
|
|
int futil_cb_sign_fw_main(struct futil_traverse_state_s *state);
|
|
int futil_cb_sign_fw_vblock(struct futil_traverse_state_s *state);
|
|
int futil_cb_sign_raw_firmware(struct futil_traverse_state_s *state);
|
|
int futil_cb_resign_kernel_part(struct futil_traverse_state_s *state);
|
|
int futil_cb_create_kernel_part(struct futil_traverse_state_s *state);
|
|
int futil_cb_sign_begin(struct futil_traverse_state_s *state);
|
|
int futil_cb_sign_end(struct futil_traverse_state_s *state);
|
|
|
|
|
|
#endif /* VBOOT_REFERENCE_FUTILITY_TRAVERSAL_H_ */
|