123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- /* 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_ */
|