blob: 39fdc5acb1e9d7a4d7a538a1aabe0b15367ab89d [file] [log] [blame]
Gaurav Shah431b9882010-02-12 15:54:37 -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 * Utility functions for file and key handling.
6 */
7
8#ifndef VBOOT_REFERENCE_FILE_KEYS_H_
9#define VBOOT_REFERENCE_FILE_KEYS_H_
10
Gaurav Shah5411c7a2010-03-31 10:56:49 -070011#include "cryptolib.h"
Gaurav Shah431b9882010-02-12 15:54:37 -080012
13/* Read file named [input_file] into a buffer and stores the length into
14 * [len].
15 *
16 * Returns a pointer to the buffer. Caller owns the returned pointer and
17 * must free it.
18 */
Gaurav Shah456678b2010-03-10 18:38:45 -080019uint8_t* BufferFromFile(const char* input_file, uint64_t* len);
Gaurav Shah431b9882010-02-12 15:54:37 -080020
21/* Read a pre-processed RSA Public Key from file [input_file].
22 *
23 * Returns a pointer to the read key. Caller owns the returned pointer and
24 * must free it.
25 */
Gaurav Shah23a2f3a2010-02-26 15:09:43 -080026RSAPublicKey* RSAPublicKeyFromFile(const char* input_file);
Gaurav Shah431b9882010-02-12 15:54:37 -080027
Gaurav Shah5411c7a2010-03-31 10:56:49 -070028/* Returns the appropriate digest for the data in [input_file]
29 * based on the signature [algorithm].
30 * Caller owns the returned digest and must free it.
31 */
32uint8_t* DigestFile(char* input_file, int sig_algorithm);
33
Gaurav Shah08df9b82010-02-23 16:16:23 -080034/* Helper function to invoke external program to calculate signature on
35 * [input_file] using private key [key_file] and signature algorithm
36 * [algorithm].
37 *
38 * Returns the signature. Caller owns the buffer and must Free() it.
39 */
Randall Spangler620c38c2010-06-17 14:45:22 -070040uint8_t* SignatureFile(const char* input_file, const char* key_file,
Gaurav Shah47b593d2010-08-17 15:48:22 -070041 unsigned int algorithm);
Gaurav Shah08df9b82010-02-23 16:16:23 -080042
Gaurav Shah431b9882010-02-12 15:54:37 -080043#endif /* VBOOT_REFERENCE_FILE_KEYS_H_ */