Home | History | Annotate | Download | only in lib
      1 /* Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
      2  * Use of this source code is governed by a BSD-style license that can be
      3  * found in the LICENSE file.
      4  *
      5  * Common functions between firmware and kernel verified boot.
      6  * (Firmware portion)
      7  */
      8 
      9 #include "sysincludes.h"
     10 
     11 #include "vboot_api.h"
     12 #include "vboot_common.h"
     13 #include "utility.h"
     14 
     15 int VbSharedDataInit(VbSharedDataHeader *header, uint64_t size)
     16 {
     17 	VBDEBUG(("VbSharedDataInit, %d bytes, header %d bytes\n", (int)size,
     18 		 (int)sizeof(VbSharedDataHeader)));
     19 
     20 	if (size < sizeof(VbSharedDataHeader)) {
     21 		VBDEBUG(("Not enough data for header.\n"));
     22 		return VBOOT_SHARED_DATA_INVALID;
     23 	}
     24 	if (size < VB_SHARED_DATA_MIN_SIZE) {
     25 		VBDEBUG(("Shared data buffer too small.\n"));
     26 		return VBOOT_SHARED_DATA_INVALID;
     27 	}
     28 
     29 	if (!header)
     30 		return VBOOT_SHARED_DATA_INVALID;
     31 
     32 	/* Zero the header */
     33 	Memset(header, 0, sizeof(VbSharedDataHeader));
     34 
     35 	/* Initialize fields */
     36 	header->magic = VB_SHARED_DATA_MAGIC;
     37 	header->struct_version = VB_SHARED_DATA_VERSION;
     38 	header->struct_size = sizeof(VbSharedDataHeader);
     39 	header->data_size = size;
     40 	header->data_used = sizeof(VbSharedDataHeader);
     41 	header->firmware_index = 0xFF;
     42 
     43 	/* Success */
     44 	return VBOOT_SUCCESS;
     45 }
     46