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 
      6 #ifndef VBOOT_REFERENCE_SIGNATURE_DIGEST_H_
      7 #define VBOOT_REFERENCE_SIGNATURE_DIGEST_H_
      8 
      9 #include <stdint.h>
     10 
     11 /* Returns a buffer with DigestInfo (which depends on [algorithm])
     12  * prepended to [digest].
     13  */
     14 uint8_t* PrependDigestInfo(unsigned int algorithm, uint8_t* digest);
     15 
     16 /* Function that outputs the message digest of the contents of a buffer in a
     17  * format that can be used as input to OpenSSL for an RSA signature.
     18  * Needed until the stable OpenSSL release supports SHA-256/512 digests for
     19  * RSA signatures.
     20  *
     21  * Returns DigestInfo || Digest where DigestInfo is the OID depending on the
     22  * choice of the hash algorithm (see padding.c). Caller owns the returned
     23  * pointer and must Free() it.
     24  */
     25 uint8_t* SignatureDigest(const uint8_t* buf, uint64_t len,
     26                          unsigned int algorithm);
     27 
     28 /* Calculates the signature on a buffer [buf] of length [len] using
     29  * the private RSA key file from [key_file] and signature algorithm
     30  * [algorithm].
     31  *
     32  * Returns the signature. Caller owns the buffer and must Free() it.
     33  */
     34 uint8_t* SignatureBuf(const uint8_t* buf, uint64_t len, const char* key_file,
     35                       unsigned int algorithm);
     36 #endif  /* VBOOT_REFERENCE_SIGNATURE_DIGEST_H_ */
     37