diff options
Diffstat (limited to 'bdb/host.h')
-rw-r--r-- | bdb/host.h | 171 |
1 files changed, 0 insertions, 171 deletions
diff --git a/bdb/host.h b/bdb/host.h deleted file mode 100644 index 9334680b..00000000 --- a/bdb/host.h +++ /dev/null @@ -1,171 +0,0 @@ -/* Copyright (c) 2015 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. - * - * Boot descriptor block host functions - */ - -#ifndef VBOOT_REFERENCE_BDB_HOST_H_ -#define VBOOT_REFERENCE_BDB_HOST_H_ - -#include <stdlib.h> -#include <openssl/pem.h> -#include "bdb_struct.h" - -/*****************************************************************************/ -/* -Expected calling sequence: - -Load and check just the header -bdb_check_header(buf, size); - -Load and verify the entire BDB -bdb_verify(buf, size, bdb_key_hash, dev_mode_flag); - - bdb_check_header() again - paranoia against bad storage devices - - bdb_check_key() on BDB key - bdb_sha256() on BDB key - Compare with appropriate root key hash - If dev_mode_flag(), mismatch is not fatal - - bdb_check_sig() on BDB header sig - bdb_sha256() on OEM area 1, RW subkey - bdb_rsa_verify() on digest using BDB key - - bdb_check_key() on RW subkey - - bdb_check_data() on RW data - bdb_check_sig() on data sig - bdb_sha256() on data, OEM area 1, hashes - bdb_rsa_verify() on digest using RW subkey - -Check RW subkey version. If normal boot from primary BDB, roll forward -Check data version. If normal boot from primary BDB, roll forward -*/ - -/*****************************************************************************/ -/* Codes for functions returning numeric error codes */ - -enum bdb_host_return_code { - /* All/any of bdb_return_code, and the following... */ - - /* Other errors */ - BDB_ERROR_HOST = 200, -}; - -/*****************************************************************************/ -/* Functions */ - -/** - * Like strncpy, but guaranteeing null termination - */ -char *strzcpy(char *dest, const char *src, size_t size); - -/** - * Read a file. - * - * Caller must free() the returned buffer. - * - * @param filename Path to file - * @param size_ptr Destination for size of buffer - * @return A newly allocated buffer containing the data, or NULL if error. - */ -uint8_t *read_file(const char *filename, uint32_t *size_ptr); - -/** - * Write a file. - * - * @param buf Data to write - * @param size Size of data in bytes - * @return 0 if success, non-zero error code if error. - */ -int write_file(const char *filename, const void *buf, uint32_t size); - -/** - * Read a PEM from a file. - * - * Caller must free the PEM with RSA_free(). - * - * @param filename Path to file - * @return A newly allocated PEM object, or NULL if error. - */ -struct rsa_st *read_pem(const char *filename); - -/** - * Create a BDB public key object. - * - * Caller must free() the returned key. - * - * @param filename Path to file containing public key (.keyb) - * @param key_version Version for key - * @param desc Description. Optional; may be NULL. - * @return A newly allocated public key, or NULL if error. - */ -struct bdb_key *bdb_create_key(const char *filename, - uint32_t key_version, - const char *desc); - -/** - * Create a BDB signature object. - * - * Caller must free() the returned signature. - * - * @param data Data to sign - * @param size Size of data in bytes - * @param key PEM key - * @param sig_alg Signature algorithm - * @param desc Description. Optional; may be NULL. - * @return A newly allocated signature, or NULL if error. - */ -struct bdb_sig *bdb_create_sig(const void *data, - size_t size, - struct rsa_st *key, - uint32_t sig_alg, - const char *desc); - -struct bdb_create_params -{ - /* Load address */ - uint64_t bdb_load_address; - - /* OEM areas. Size may be 0, in which case the buffer is ignored */ - uint8_t *oem_area_0; - uint32_t oem_area_0_size; - uint8_t *oem_area_1; - uint32_t oem_area_1_size; - - /* Public BDB key and subkey */ - struct bdb_key *bdbkey; - struct bdb_key *subkey; - - /* Private BDB key and subkey */ - struct rsa_st *private_bdbkey; - struct rsa_st *private_subkey; - - /* Descriptions for header and data signatures */ - char *header_sig_description; - char *data_sig_description; - - /* Data description and version */ - char *data_description; - uint32_t data_version; - - /* Data hashes and count */ - struct bdb_hash *hash; - uint32_t num_hashes; -}; - -/** - * Create a new BDB - * - * Caller must free() returned object. - * - * @param p Creation parameters - * @return A newly allocated BDB, or NULL if error. - */ -struct bdb_header *bdb_create(struct bdb_create_params *p); - -/*****************************************************************************/ - -#endif /* VBOOT_REFERENCE_BDB_HOST_H_ */ |