Home | History | Annotate | Download | only in include
      1 /* Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
      2  * Use of this source code is governed by a BSD-style license that can be
      3  * found in the LICENSE file.
      4  *
      5  * Host-side functions for verified boot.
      6  */
      7 
      8 #ifndef VBOOT_REFERENCE_HOST_SIGNATURE_H_
      9 #define VBOOT_REFERENCE_HOST_SIGNATURE_H_
     10 
     11 #include "cryptolib.h"
     12 #include "host_key.h"
     13 #include "utility.h"
     14 #include "vboot_struct.h"
     15 
     16 
     17 /* Initialize a signature struct. */
     18 void SignatureInit(VbSignature* sig, uint8_t* sig_data,
     19                    uint64_t sig_size, uint64_t data_size);
     20 
     21 
     22 /* Allocate a new signature with space for a [sig_size] byte signature. */
     23 VbSignature* SignatureAlloc(uint64_t sig_size, uint64_t data_size);
     24 
     25 
     26 /* Copy a signature key from [src] to [dest].
     27  *
     28  * Returns 0 if success, non-zero if error. */
     29 int SignatureCopy(VbSignature* dest, const VbSignature* src);
     30 
     31 
     32 /* Calculates a SHA-512 checksum.
     33  * Caller owns the returned pointer, and must free it with Free().
     34  *
     35  * Returns NULL on error. */
     36 VbSignature* CalculateChecksum(const uint8_t* data, uint64_t size);
     37 
     38 
     39 /* Calculates a hash of the data using the algorithm from the specified key.
     40  * Caller owns the returned pointer, and must free it with Free().
     41  *
     42  * Returns NULL on error. */
     43 VbSignature* CalculateHash(const uint8_t* data, uint64_t size,
     44                            const VbPrivateKey* key);
     45 
     46 /* Calculates a signature for the data using the specified key.
     47  * Caller owns the returned pointer, and must free it with Free().
     48  *
     49  * Returns NULL on error. */
     50 VbSignature* CalculateSignature(const uint8_t* data, uint64_t size,
     51                                 const VbPrivateKey* key);
     52 
     53 /* Calculates a signature for the data using the specified key and
     54  * an external program.
     55  * Caller owns the returned pointer, and must free it with Free().
     56  *
     57  * Returns NULL on error. */
     58 VbSignature* CalculateSignature_external(const uint8_t* data, uint64_t size,
     59                                          const char* key_file,
     60                                          uint64_t key_algorithm,
     61                                          const char* external_signer);
     62 
     63 #endif  /* VBOOT_REFERENCE_HOST_SIGNATURE_H_ */
     64