/* Copyright (c) 2010 The Chromium OS Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef VBOOT_REFERENCE_SIGNATURE_DIGEST_H_ #define VBOOT_REFERENCE_SIGNATURE_DIGEST_H_ #include <stdint.h> /* Returns a buffer with DigestInfo (which depends on [algorithm]) * prepended to [digest]. */ uint8_t* PrependDigestInfo(unsigned int algorithm, uint8_t* digest); /* Function that outputs the message digest of the contents of a buffer in a * format that can be used as input to OpenSSL for an RSA signature. * Needed until the stable OpenSSL release supports SHA-256/512 digests for * RSA signatures. * * Returns DigestInfo || Digest where DigestInfo is the OID depending on the * choice of the hash algorithm (see padding.c). Caller owns the returned * pointer and must Free() it. */ uint8_t* SignatureDigest(const uint8_t* buf, uint64_t len, unsigned int algorithm); /* Calculates the signature on a buffer [buf] of length [len] using * the private RSA key file from [key_file] and signature algorithm * [algorithm]. * * Returns the signature. Caller owns the buffer and must Free() it. */ uint8_t* SignatureBuf(const uint8_t* buf, uint64_t len, const char* key_file, unsigned int algorithm); #endif /* VBOOT_REFERENCE_SIGNATURE_DIGEST_H_ */