/* 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. * * Common functions between firmware and kernel verified boot. * (Firmware portion) */ #include "2sysincludes.h" #include "2common.h" #include "sysincludes.h" #include "vboot_api.h" #include "vboot_common.h" #include "utility.h" vb2_error_t VbSharedDataInit(VbSharedDataHeader *header, uint64_t size) { VB2_DEBUG("VbSharedDataInit, %d bytes, header %d bytes\n", (int)size, (int)sizeof(VbSharedDataHeader)); if (size < sizeof(VbSharedDataHeader)) { VB2_DEBUG("Not enough data for header.\n"); return VBOOT_SHARED_DATA_INVALID; } if (size < VB_SHARED_DATA_MIN_SIZE) { VB2_DEBUG("Shared data buffer too small.\n"); return VBOOT_SHARED_DATA_INVALID; } if (!header) return VBOOT_SHARED_DATA_INVALID; /* Zero the header */ memset(header, 0, sizeof(VbSharedDataHeader)); /* Initialize fields */ header->magic = VB_SHARED_DATA_MAGIC; header->struct_version = VB_SHARED_DATA_VERSION; header->struct_size = sizeof(VbSharedDataHeader); header->data_size = size; header->data_used = sizeof(VbSharedDataHeader); header->firmware_index = 0xFF; /* Success */ return VBOOT_SUCCESS; }