blob: 8741790e0940a0d85fa17cc8a87a3ca7fb6e521b [file] [log] [blame]
Tom Rini897a1d92018-06-19 11:21:44 -04001/* SPDX-License-Identifier: MIT OR BSD-3-Clause */
Igor Opaniukd8f9d2a2018-06-03 21:56:36 +03002/*
3 * Copyright (C) 2016 The Android Open Source Project
Igor Opaniukd8f9d2a2018-06-03 21:56:36 +03004 */
5
6/* Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
7 * Use of this source code is governed by a BSD-style license that can be
8 * found in the LICENSE file.
9 */
10
11#ifdef AVB_INSIDE_LIBAVB_H
12#error "You can't include avb_rsa.h in the public header libavb.h."
13#endif
14
15#ifndef AVB_COMPILATION
16#error "Never include this file, it may only be used from internal avb code."
17#endif
18
19#ifndef AVB_RSA_H_
20#define AVB_RSA_H_
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
26#include "avb_crypto.h"
27#include "avb_sysdeps.h"
28
29/* Using the key given by |key|, verify a RSA signature |sig| of
30 * length |sig_num_bytes| against an expected |hash| of length
31 * |hash_num_bytes|. The padding to expect must be passed in using
32 * |padding| of length |padding_num_bytes|.
33 *
34 * The data in |key| must match the format defined in
35 * |AvbRSAPublicKeyHeader|, including the two large numbers
36 * following. The |key_num_bytes| must be the size of the entire
37 * serialized key.
38 *
39 * Returns false if verification fails, true otherwise.
40 */
41bool avb_rsa_verify(const uint8_t* key,
42 size_t key_num_bytes,
43 const uint8_t* sig,
44 size_t sig_num_bytes,
45 const uint8_t* hash,
46 size_t hash_num_bytes,
47 const uint8_t* padding,
48 size_t padding_num_bytes) AVB_ATTR_WARN_UNUSED_RESULT;
49
50#ifdef __cplusplus
51}
52#endif
53
54#endif /* AVB_RSA_H_ */