blob: 246fbdacf3906e6030f352544b9179c3dadb897a [file] [log] [blame]
Tom Rini421a5d02018-06-19 11:21:44 -04001/* SPDX-License-Identifier: MIT */
Igor Opaniuk8b23ae22018-06-03 21:56:36 +03002/*
3 * Copyright (C) 2016 The Android Open Source Project
Igor Opaniuk8b23ae22018-06-03 21:56:36 +03004 */
5
6#if !defined(AVB_INSIDE_LIBAVB_H) && !defined(AVB_COMPILATION)
7#error "Never include this file directly, include libavb.h instead."
8#endif
9
10#ifndef AVB_KERNEL_CMDLINE_DESCRIPTOR_H_
11#define AVB_KERNEL_CMDLINE_DESCRIPTOR_H_
12
13#include "avb_descriptor.h"
14
15#ifdef __cplusplus
16extern "C" {
17#endif
18
19/* Flags for kernel command-line descriptors.
20 *
21 * AVB_KERNEL_CMDLINE_FLAGS_USE_ONLY_IF_HASHTREE_NOT_DISABLED: The
22 * cmdline will only be applied if hashtree verification is not
23 * disabled (cf. AVB_VBMETA_IMAGE_FLAGS_HASHTREE_DISABLED).
24 *
25 * AVB_KERNEL_CMDLINE_FLAGS_USE_ONLY_IF_HASHTREE_DISABLED: The cmdline
26 * will only be applied if hashtree verification is disabled
27 * (cf. AVB_VBMETA_IMAGE_FLAGS_HASHTREE_DISABLED).
28 */
29typedef enum {
30 AVB_KERNEL_CMDLINE_FLAGS_USE_ONLY_IF_HASHTREE_NOT_DISABLED = (1 << 0),
31 AVB_KERNEL_CMDLINE_FLAGS_USE_ONLY_IF_HASHTREE_DISABLED = (1 << 1)
32} AvbKernelCmdlineFlags;
33
34/* A descriptor containing information to be appended to the kernel
35 * command-line.
36 *
37 * The |flags| field contains flags from the AvbKernelCmdlineFlags
38 * enumeration.
39 *
40 * Following this struct are |kernel_cmdline_len| bytes with the
41 * kernel command-line (UTF-8 encoded).
42 */
43typedef struct AvbKernelCmdlineDescriptor {
44 AvbDescriptor parent_descriptor;
45 uint32_t flags;
46 uint32_t kernel_cmdline_length;
47} AVB_ATTR_PACKED AvbKernelCmdlineDescriptor;
48
49/* Copies |src| to |dest| and validates, byte-swapping fields in the
50 * process if needed. Returns true if valid, false if invalid.
51 *
52 * Data following the struct is not validated nor copied.
53 */
54bool avb_kernel_cmdline_descriptor_validate_and_byteswap(
55 const AvbKernelCmdlineDescriptor* src,
56 AvbKernelCmdlineDescriptor* dest) AVB_ATTR_WARN_UNUSED_RESULT;
57
58#ifdef __cplusplus
59}
60#endif
61
62#endif /* AVB_KERNEL_CMDLINE_DESCRIPTOR_H_ */