diff options
Diffstat (limited to 'firmware/bdb/bdb_struct.h')
-rw-r--r-- | firmware/bdb/bdb_struct.h | 268 |
1 files changed, 0 insertions, 268 deletions
diff --git a/firmware/bdb/bdb_struct.h b/firmware/bdb/bdb_struct.h deleted file mode 100644 index b9b4b852..00000000 --- a/firmware/bdb/bdb_struct.h +++ /dev/null @@ -1,268 +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 structures - */ - -#ifndef VBOOT_REFERENCE_BDB_STRUCT_H_ -#define VBOOT_REFERENCE_BDB_STRUCT_H_ - -#include <stdint.h> - -/* Size of SHA256 digest in bytes */ -#define BDB_SHA256_DIGEST_SIZE 32 - -/* Size of RSA4096 key data in bytes */ -#define BDB_RSA4096_KEY_DATA_SIZE 1032 - -/* Size of RSA4096 signature in bytes */ -#define BDB_RSA4096_SIG_SIZE 512 - -/* Size of ECDSA521 key data in bytes = ceil(521/8) * 2 */ -#define BDB_ECDSA521_KEY_DATA_SIZE 132 - -/* Size of ECDSA521 signature in bytes = ceil(521/8) * 2 */ -#define BDB_ECDSA521_SIG_SIZE 132 - -/* Size of RSA3072B key data in bytes */ -#define BDB_RSA3072B_KEY_DATA_SIZE 776 - -/* Size of RSA3072B signature in bytes */ -#define BDB_RSA3072B_SIG_SIZE 384 - -/*****************************************************************************/ -/* Header for BDB */ - -/* Magic number for bdb_header.struct_magic */ -#define BDB_HEADER_MAGIC 0x30426442 - -/* Current version of bdb_header struct */ -#define BDB_HEADER_VERSION_MAJOR 1 -#define BDB_HEADER_VERSION_MINOR 0 - -/* Expected size of bdb_header struct in bytes */ -#define BDB_HEADER_EXPECTED_SIZE 32 - -struct bdb_header { - /* Magic number to identify struct = BDB_HEADER_MAGIC. */ - uint32_t struct_magic; - - /* Structure version = BDB_HEADER_VERSION{MAJOR,MINOR} */ - uint8_t struct_major_version; - uint8_t struct_minor_version; - - /* Size of structure in bytes */ - uint16_t struct_size; - - /* Recommended address in SP SRAM to load BDB. Set to -1 to use - * default address. */ - uint64_t bdb_load_address; - - /* Size of the entire BDB in bytes */ - uint32_t bdb_size; - - /* Number of bytes following the BDB key which are signed by the BDB - * header signature. */ - uint32_t signed_size; - - /* Size of OEM area 0 in bytes, or 0 if not present */ - uint32_t oem_area_0_size; - - /* Reserved; set 0 */ - uint8_t reserved0[8]; -} __attribute__((packed)); - -/*****************************************************************************/ -/* Public key structure for BDB */ - -/* Magic number for bdb_key.struct_magic */ -#define BDB_KEY_MAGIC 0x73334256 - -/* Current version of bdb_key struct */ -#define BDB_KEY_VERSION_MAJOR 1 -#define BDB_KEY_VERSION_MINOR 0 - -/* Supported hash algorithms */ -enum bdb_hash_alg { - BDB_HASH_ALG_INVALID = 0, /* Not used; invalid */ - BDB_HASH_ALG_SHA256 = 2, /* SHA-256 */ -}; - -/* Supported signature algorithms */ -enum bdb_sig_alg { - BDB_SIG_ALG_INVALID = 0, /* Not used; invalid */ - BDB_SIG_ALG_RSA4096 = 3, /* RSA-4096, exponent 65537 */ - BDB_SIG_ALG_ECSDSA521 = 5, /* ECDSA-521 */ - BDB_SIG_ALG_RSA3072B = 7, /* RSA_3072, exponent 3 */ -}; - -/* - * Expected size of bdb_key struct in bytes, not counting variable-length key - * data at end. - */ -#define BDB_KEY_EXPECTED_SIZE 80 - -struct bdb_key { - /* Magic number to identify struct = BDB_KEY_MAGIC. */ - uint32_t struct_magic; - - /* Structure version = BDB_KEY_VERSION{MAJOR,MINOR} */ - uint8_t struct_major_version; - uint8_t struct_minor_version; - - /* Size of structure in bytes, including variable-length key data */ - uint16_t struct_size; - - /* Hash algorithm (enum bdb_hash_alg) */ - uint8_t hash_alg; - - /* Signature algorithm (enum bdb_sig_alg) */ - uint8_t sig_alg; - - /* Reserved; set 0 */ - uint8_t reserved0[2]; - - /* Key version */ - uint32_t key_version; - - /* Description; null-terminated ASCII */ - char description[128]; - - /* - * Key data. Variable-length; size is struct_size - - * offset_of(bdb_key, key_data). - */ - uint8_t key_data[0]; -} __attribute__((packed)); - -/*****************************************************************************/ -/* Signature structure for BDB */ - -/* Magic number for bdb_sig.struct_magic */ -#define BDB_SIG_MAGIC 0x6b334256 - -/* Current version of bdb_sig struct */ -#define BDB_SIG_VERSION_MAJOR 1 -#define BDB_SIG_VERSION_MINOR 0 - -struct bdb_sig { - /* Magic number to identify struct = BDB_SIG_MAGIC. */ - uint32_t struct_magic; - - /* Structure version = BDB_SIG_VERSION{MAJOR,MINOR} */ - uint8_t struct_major_version; - uint8_t struct_minor_version; - - /* Size of structure in bytes, including variable-length signature - * data. */ - uint16_t struct_size; - - /* Hash algorithm used for this signature (enum bdb_hash_alg) */ - uint8_t hash_alg; - - /* Signature algorithm (enum bdb_sig_alg) */ - uint8_t sig_alg; - - /* Reserved; set 0 */ - uint8_t reserved0[2]; - - /* Number of bytes of data signed by this signature */ - uint32_t signed_size; - - /* Description; null-terminated ASCII */ - char description[128]; - - /* Signature data. Variable-length; size is struct_size - - * offset_of(bdb_sig, sig_data). */ - uint8_t sig_data[0]; -} __attribute__((packed)); - -/*****************************************************************************/ -/* Data structure for BDB */ - -/* Magic number for bdb_data.struct_magic */ -#define BDB_DATA_MAGIC 0x31426442 - -/* Current version of bdb_sig struct */ -#define BDB_DATA_VERSION_MAJOR 1 -#define BDB_DATA_VERSION_MINOR 0 - -struct bdb_data { - /* Magic number to identify struct = BDB_DATA_MAGIC. */ - uint32_t struct_magic; - - /* Structure version = BDB_DATA_VERSION{MAJOR,MINOR} */ - uint8_t struct_major_version; - uint8_t struct_minor_version; - - /* Size of structure in bytes, NOT including hashes which follow. */ - uint16_t struct_size; - - /* Version of data (RW firmware) contained */ - uint32_t data_version; - - /* Size of OEM area 1 in bytes, or 0 if not present */ - uint32_t oem_area_1_size; - - /* Number of hashes which follow */ - uint8_t num_hashes; - - /* Size of each hash entry in bytes */ - uint8_t hash_entry_size; - - /* Reserved; set 0 */ - uint8_t reserved0[2]; - - /* Number of bytes of data signed by the datakey, including this - * header */ - uint32_t signed_size; - - /* Reserved; set 0 */ - uint8_t reserved1[8]; - - /* Description; null-terminated ASCII */ - char description[128]; -} __attribute__((packed)); - -/* Type of data for bdb_hash.type */ -enum bdb_data_type { - /* Types of data for boot descriptor blocks */ - BDB_DATA_SP_RW = 1, /* SP-RW firmware */ - BDB_DATA_AP_RW = 2, /* AP-RW firmware */ - BDB_DATA_MCU = 3, /* MCU firmware */ - - /* Types of data for kernel descriptor blocks */ - BDB_DATA_KERNEL = 128, /* Kernel */ - BDB_DATA_CMD_LINE = 129, /* Command line */ - BDB_DATA_HEADER16 = 130, /* 16-bit vmlinuz header */ -}; - -/* Hash entries which follow the structure */ -struct bdb_hash { - /* Offset of data from start of partition */ - uint64_t offset; - - /* Size of data in bytes */ - uint32_t size; - - /* Partition number containing data */ - uint8_t partition; - - /* Type of data; enum bdb_data_type */ - uint8_t type; - - /* Reserved; set 0 */ - uint8_t reserved0[2]; - - /* Address in RAM to load data. -1 means use default. */ - uint64_t load_address; - - /* SHA-256 hash digest */ - uint8_t digest[BDB_SHA256_DIGEST_SIZE]; -} __attribute__((packed)); - -/*****************************************************************************/ - -#endif /* VBOOT_REFERENCE_BDB_STRUCT_H_ */ - |