xref: /aosp_15_r20/external/vboot_reference/host/lib/include/signature_digest.h (revision 8617a60d3594060b7ecbd21bc622a7c14f3cf2bc)
1 /* Copyright 2010 The ChromiumOS Authors
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(enum vb2_hash_algorithm hash_alg, 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