mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-11-24 02:05:01 +00:00
Refactor futility to use only vboot 2.0 APIs to create signatures. BUG=chromium:611535 BRANCH=none TEST=make runtests Change-Id: I176e7f424fa556d34d8fe691df5681f1e43210ce Signed-off-by: Randall Spangler <rspangler@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/356128 Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
102 lines
3.2 KiB
C
102 lines
3.2 KiB
C
/* Copyright (c) 2014 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.
|
|
*
|
|
* Host-side functions for verified boot key structures
|
|
*/
|
|
|
|
#ifndef VBOOT_REFERENCE_HOST_SIGNATURE2_H_
|
|
#define VBOOT_REFERENCE_HOST_SIGNATURE2_H_
|
|
|
|
#include "2struct.h"
|
|
|
|
struct vb2_private_key;
|
|
struct vb21_signature;
|
|
|
|
/**
|
|
* Get the digest info for a hash algorithm
|
|
*
|
|
* @param hash_alg Hash algorithm
|
|
* @param buf_ptr On success, points to the digest info
|
|
* @param size_ptr On success, contains the info size in bytes
|
|
* @return VB2_SUCCESS, or non-zero error code on failure.
|
|
*/
|
|
int vb2_digest_info(enum vb2_hash_algorithm hash_alg,
|
|
const uint8_t **buf_ptr,
|
|
uint32_t *size_ptr);
|
|
|
|
/**
|
|
* Sign data buffer
|
|
*
|
|
* @param sig_ptr On success, points to a newly allocated signature.
|
|
* Caller is responsible for calling free() on this.
|
|
* @param data Pointer to data to sign
|
|
* @param size Size of data to sign in bytes
|
|
* @param key Private key to use to sign data
|
|
* @param desc Optional description for signature. If NULL, the
|
|
* key description will be used.
|
|
* @return VB2_SUCCESS, or non-zero error code on failure.
|
|
*/
|
|
int vb21_sign_data(struct vb21_signature **sig_ptr,
|
|
const uint8_t *data,
|
|
uint32_t size,
|
|
const struct vb2_private_key *key,
|
|
const char *desc);
|
|
|
|
/**
|
|
* Calculate the signature size for a private key.
|
|
*
|
|
* @param size_ptr On success, contains the signature size in bytes.
|
|
* @param key Key to calculate signature length from.
|
|
* @param desc Optional description for signature. If NULL, the
|
|
* key description will be used.
|
|
* @return VB2_SUCCESS, or non-zero error code on failure.
|
|
*/
|
|
int vb21_sig_size_for_key(uint32_t *size_ptr,
|
|
const struct vb2_private_key *key,
|
|
const char *desc);
|
|
|
|
/**
|
|
* Calculate the total signature size for a list of keys.
|
|
*
|
|
* @param size_ptr On success, contains the signature size in bytes.
|
|
* @param key_list List of keys to calculate signature length from.
|
|
* @param key_count Number of keys.
|
|
* @return VB2_SUCCESS, or non-zero error code on failure.
|
|
*/
|
|
int vb21_sig_size_for_keys(uint32_t *size_ptr,
|
|
const struct vb2_private_key **key_list,
|
|
uint32_t key_count);
|
|
|
|
/**
|
|
* Sign object with a key.
|
|
*
|
|
* @param buf Buffer containing object to sign, starting with
|
|
* common header
|
|
* @param sig_offset Offset in buffer at which to store signature. All
|
|
* data before this in the buffer will be signed.
|
|
* @param key Key to sign object with
|
|
* @param desc If non-null, description to use for signature
|
|
*/
|
|
int vb21_sign_object(uint8_t *buf,
|
|
uint32_t sig_offset,
|
|
const struct vb2_private_key *key,
|
|
const char *desc);
|
|
|
|
/**
|
|
* Sign object with list of keys.
|
|
*
|
|
* @param buf Buffer containing object to sign, starting with
|
|
* common header
|
|
* @param sig_offset Offset to start signatures. All data before this
|
|
* in the buffer will be signed.
|
|
* @param key_list List of keys to sign object with
|
|
* @param key_count Number of keys in list
|
|
*/
|
|
int vb21_sign_object_multiple(uint8_t *buf,
|
|
uint32_t sig_offset,
|
|
const struct vb2_private_key **key_list,
|
|
uint32_t key_count);
|
|
|
|
#endif /* VBOOT_REFERENCE_HOST_SIGNATURE2_H_ */
|