diff options
Diffstat (limited to 'host/lib/include/host_signature.h')
-rw-r--r-- | host/lib/include/host_signature.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/host/lib/include/host_signature.h b/host/lib/include/host_signature.h new file mode 100644 index 00000000..fb03c6c5 --- /dev/null +++ b/host/lib/include/host_signature.h @@ -0,0 +1,63 @@ +/* Copyright (c) 2010 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. + */ + +#ifndef VBOOT_REFERENCE_HOST_SIGNATURE_H_ +#define VBOOT_REFERENCE_HOST_SIGNATURE_H_ + +#include "cryptolib.h" +#include "host_key.h" +#include "utility.h" +#include "vboot_struct.h" + + +/* Initialize a signature struct. */ +void SignatureInit(VbSignature* sig, uint8_t* sig_data, + uint64_t sig_size, uint64_t data_size); + + +/* Allocate a new signature with space for a [sig_size] byte signature. */ +VbSignature* SignatureAlloc(uint64_t sig_size, uint64_t data_size); + + +/* Copy a signature key from [src] to [dest]. + * + * Returns 0 if success, non-zero if error. */ +int SignatureCopy(VbSignature* dest, const VbSignature* src); + + +/* Calculates a SHA-512 checksum. + * Caller owns the returned pointer, and must free it with Free(). + * + * Returns NULL on error. */ +VbSignature* CalculateChecksum(const uint8_t* data, uint64_t size); + + +/* Calculates a hash of the data using the algorithm from the specified key. + * Caller owns the returned pointer, and must free it with Free(). + * + * Returns NULL on error. */ +VbSignature* CalculateHash(const uint8_t* data, uint64_t size, + const VbPrivateKey* key); + +/* Calculates a signature for the data using the specified key. + * Caller owns the returned pointer, and must free it with Free(). + * + * Returns NULL on error. */ +VbSignature* CalculateSignature(const uint8_t* data, uint64_t size, + const VbPrivateKey* key); + +/* Calculates a signature for the data using the specified key and + * an external program. + * Caller owns the returned pointer, and must free it with Free(). + * + * Returns NULL on error. */ +VbSignature* CalculateSignature_external(const uint8_t* data, uint64_t size, + const char* key_file, + uint64_t key_algorithm, + const char* external_signer); + +#endif /* VBOOT_REFERENCE_HOST_SIGNATURE_H_ */ |