blob: 40c27036463687f830b9a1aa2a7a235f307cd947 [file] [log] [blame]
Gaurav Shah8bf29d82010-01-28 19:43:24 -08001/* 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
Gaurav Shah47b593d2010-08-17 15:48:22 -07009#include <stdint.h>
Gaurav Shah8bf29d82010-01-28 19:43:24 -080010
11/* Returns a buffer with DigestInfo (which depends on [algorithm])
12 * prepended to [digest].
13 */
Gaurav Shah47b593d2010-08-17 15:48:22 -070014uint8_t* PrependDigestInfo(unsigned int algorithm, uint8_t* digest);
Gaurav Shah8bf29d82010-01-28 19:43:24 -080015
Gaurav Shahf5564fa2010-03-02 15:40:01 -080016/* 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 */
Gaurav Shah47b593d2010-08-17 15:48:22 -070025uint8_t* SignatureDigest(const uint8_t* buf, uint64_t len,
26 unsigned int algorithm);
Gaurav Shahf5564fa2010-03-02 15:40:01 -080027
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 */
Gaurav Shah456678b2010-03-10 18:38:45 -080034uint8_t* SignatureBuf(const uint8_t* buf, uint64_t len, const char* key_file,
Gaurav Shah47b593d2010-08-17 15:48:22 -070035 unsigned int algorithm);
Gaurav Shah8bf29d82010-01-28 19:43:24 -080036#endif /* VBOOT_REFERENCE_SIGNATURE_DIGEST_H_ */