diff options
Diffstat (limited to 'firmware/bdb/nvm.h')
-rw-r--r-- | firmware/bdb/nvm.h | 139 |
1 files changed, 0 insertions, 139 deletions
diff --git a/firmware/bdb/nvm.h b/firmware/bdb/nvm.h deleted file mode 100644 index c0a55402..00000000 --- a/firmware/bdb/nvm.h +++ /dev/null @@ -1,139 +0,0 @@ -/* Copyright 2016 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_BDB_NVM_H_ -#define VBOOT_REFERENCE_BDB_NVM_H_ - -#include <stdint.h> -#include "bdb_struct.h" -#include "bdb_api.h" - -enum nvm_type { - NVM_TYPE_WP_PRIMARY, - NVM_TYPE_WP_SECONDARY, - NVM_TYPE_RW_PRIMARY, - NVM_TYPE_RW_SECONDARY, -}; - -#define NVM_RW_MAGIC 0x3052766e - -/* Size in bytes of encrypted BUC (Boot Unlock Code) */ -#define BUC_ENC_DIGEST_SIZE 32 -/* Size in bytes of HMAC of struct NVM-RW */ -#define NVM_HMAC_SIZE BDB_SHA256_DIGEST_SIZE - -#define NVM_RW_FLAG_BUC_PRESENT (1 << 0) -#define NVM_RW_FLAG_DFM_DISABLE (1 << 1) -#define NVM_RW_FLAG_DOSM (1 << 2) - -/* This is the minimum size of the data needed to learn the actual size */ -#define NVM_MIN_STRUCT_SIZE 8 - -#define NVM_HEADER_VERSION_MAJOR 1 -#define NVM_HEADER_VERSION_MINOR 1 - -/* Maximum number of retries for writing NVM */ -#define NVM_MAX_WRITE_RETRY 2 - -struct nvmrw { - /* Magic number to identify struct */ - uint32_t struct_magic; - - /* Structure version */ - uint8_t struct_major_version; - uint8_t struct_minor_version; - - /* Size of struct in bytes. 96 for version 1.0 */ - uint16_t struct_size; - - /* Number of updates to structure contents */ - uint32_t update_count; - - /* Flags: NVM_RW_FLAG_* */ - uint32_t flags; - - /* Minimum valid kernel data key version */ - uint32_t min_kernel_data_key_version; - - /* Minimum valid kernel version */ - uint32_t min_kernel_version; - - /* Type of BUC */ - uint8_t buc_type; - - uint8_t reserved0[7]; - - /* Encrypted BUC */ - uint8_t buc_enc_digest[BUC_ENC_DIGEST_SIZE]; - - /* SHA-256 HMAC of the struct contents. Add new fields before this. */ - uint8_t hmac[NVM_HMAC_SIZE]; -} __attribute__((packed)); - -/* - * List of variables stored in NVM-RW. This should be exported and used by - * firmware and futility to access data in NVM-RW. - */ -enum nvmrw_var { - NVMRW_VAR_UPDATE_COUNT, - NVMRW_VAR_FLAGS, - NVMRW_VAR_MIN_KERNEL_DATA_KEY_VERSION, - NVMRW_VAR_MIN_KERNEL_VERSION, - NVMRW_VAR_BUC_TYPE, - NVMRW_VAR_FLAG_BUC_PRESENT, - NVMRW_VAR_FLAG_DFM_DISABLE, - NVMRW_VAR_FLAG_DOSM, -}; - -/* Size of the version 1.0 */ -#define NVM_RW_MIN_STRUCT_SIZE 96 -/* 4 Kbit EEPROM divided by 4 regions (RO,RW) x (1st,2nd) = 128 KB */ -#define NVM_RW_MAX_STRUCT_SIZE 128 - -/* For nvm_rw_read and nvm_write */ -struct vba_context; - -/** - * Read NVM-RW contents into the context - * - * @param ctx struct vba_context - * @return BDB_SUCCESS or BDB_ERROR_NVM_* - */ -int nvmrw_read(struct vba_context *ctx); - -/** - * Write to NVM-RW from the context - * - * @param ctx struct vba_context - * @param type NVM_TYPE_RW_* - * @return BDB_SUCCESS or BDB_ERROR_NVM_* - */ -int nvmrw_write(struct vba_context *ctx, enum nvm_type type); - -/** - * Get a value of NVM-RW variable - * - * Callers are responsible for init and verify of ctx->nvmrw. - * - * @param ctx struct vba_context - * @param var Index of the variable - * @param val Destination where the value is stored - * @return BDB_SUCCESS or BDB_ERROR_NVM_* - */ -int nvmrw_get(struct vba_context *ctx, enum nvmrw_var var, uint32_t *val); - -/** - * Set a value in NVM-RW variable - * - * Callers are responsible for init and verify of ctx->nvmrw. - * - * @param ctx struct vba_context - * @param var Index of the variable - * @param val Value to be set - * @return BDB_SUCCESS or BDB_ERROR_NVM_* - */ -int nvmrw_set(struct vba_context *ctx, enum nvmrw_var var, uint32_t val); - -#endif |