uboot/include/avb_verify.h
<<
>>
Prefs
   1
   2/*
   3 * (C) Copyright 2018, Linaro Limited
   4 *
   5 * SPDX-License-Identifier:     GPL-2.0+
   6 */
   7
   8#ifndef _AVB_VERIFY_H
   9#define _AVB_VERIFY_H
  10
  11#include <../lib/libavb/libavb.h>
  12#include <mmc.h>
  13
  14#define AVB_MAX_ARGS                    1024
  15#define VERITY_TABLE_OPT_RESTART        "restart_on_corruption"
  16#define VERITY_TABLE_OPT_LOGGING        "ignore_corruption"
  17#define ALLOWED_BUF_ALIGN               8
  18
  19enum avb_boot_state {
  20        AVB_GREEN,
  21        AVB_YELLOW,
  22        AVB_ORANGE,
  23        AVB_RED,
  24};
  25
  26struct AvbOpsData {
  27        struct AvbOps ops;
  28        int mmc_dev;
  29        enum avb_boot_state boot_state;
  30};
  31
  32struct mmc_part {
  33        int dev_num;
  34        struct mmc *mmc;
  35        struct blk_desc *mmc_blk;
  36        disk_partition_t info;
  37};
  38
  39enum mmc_io_type {
  40        IO_READ,
  41        IO_WRITE
  42};
  43
  44AvbOps *avb_ops_alloc(int boot_device);
  45void avb_ops_free(AvbOps *ops);
  46
  47char *avb_set_state(AvbOps *ops, enum avb_boot_state boot_state);
  48char *avb_set_enforce_verity(const char *cmdline);
  49char *avb_set_ignore_corruption(const char *cmdline);
  50
  51char *append_cmd_line(char *cmdline_orig, char *cmdline_new);
  52
  53/**
  54 * ============================================================================
  55 * I/O helper inline functions
  56 * ============================================================================
  57 */
  58static inline uint64_t calc_offset(struct mmc_part *part, int64_t offset)
  59{
  60        u64 part_size = part->info.size * part->info.blksz;
  61
  62        if (offset < 0)
  63                return part_size + offset;
  64
  65        return offset;
  66}
  67
  68static inline size_t get_sector_buf_size(void)
  69{
  70        return (size_t)CONFIG_FASTBOOT_BUF_SIZE;
  71}
  72
  73static inline void *get_sector_buf(void)
  74{
  75        return (void *)CONFIG_FASTBOOT_BUF_ADDR;
  76}
  77
  78static inline bool is_buf_unaligned(void *buffer)
  79{
  80        return (bool)((uintptr_t)buffer % ALLOWED_BUF_ALIGN);
  81}
  82
  83static inline int get_boot_device(AvbOps *ops)
  84{
  85        struct AvbOpsData *data;
  86
  87        if (ops) {
  88                data = ops->user_data;
  89                if (data)
  90                        return data->mmc_dev;
  91        }
  92
  93        return -1;
  94}
  95
  96#endif /* _AVB_VERIFY_H */
  97