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