blob: 8b458925504c50d5ab2ca0e866fa631e09e5ab52 [file] [log] [blame]
Alexander Afanasyev574aa862017-01-10 19:53:28 -08001/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/**
3 * Copyright (c) 2013-2017 Regents of the University of California.
4 *
5 * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
6 *
7 * ndn-cxx library is free software: you can redistribute it and/or modify it under the
8 * terms of the GNU Lesser General Public License as published by the Free Software
9 * Foundation, either version 3 of the License, or (at your option) any later version.
10 *
11 * ndn-cxx library is distributed in the hope that it will be useful, but WITHOUT ANY
12 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
13 * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
14 *
15 * You should have received copies of the GNU General Public License and GNU Lesser
16 * General Public License along with ndn-cxx, e.g., in COPYING.md file. If not, see
17 * <http://www.gnu.org/licenses/>.
18 *
19 * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
20 */
21
22#ifndef NDN_SECURITY_VERIFICATION_HELPERS_HPP
23#define NDN_SECURITY_VERIFICATION_HELPERS_HPP
24
25#include "security-common.hpp"
26
27namespace ndn {
28
29class Interest;
30class Data;
31
32namespace security {
33
34namespace pib {
35class Key;
36} // namespace pib
37
38namespace v2 {
39class Certificate;
40} // namespace v2
41
42/**
43 * @brief Verify @p blob using @p key against @p sig.
44 *
45 * This is the core function, all other verifySignature overloads are implemented in terms
46 * of this function.
47 */
48bool
49verifySignature(const uint8_t* blob, size_t blobLen, const uint8_t* sig, size_t sigLen,
50 const v2::PublicKey& pKey);
51
52/**
53 * @brief Verify @p blob using @p key against @p sig.
54 */
55bool
56verifySignature(const uint8_t* blob, size_t blobLen, const uint8_t* sig, size_t sigLen,
57 const uint8_t* key, size_t keyLen);
58
59/**
60 * @brief Verify @p data using @p key.
61 */
62bool
63verifySignature(const Data& data, const uint8_t* key, size_t keyLen);
64
65/**
66 * @brief Verify @p interest using @p key.
67 * @note This method verifies only signature of the signed interest
68 * @sa docs/specs/signed-interest.rst
69 */
70bool
71verifySignature(const Interest& interest, const uint8_t* key, size_t keyLen);
72
73/**
74 * @brief Verify @p data using @p key.
75 */
76bool
77verifySignature(const Data& data, const v2::PublicKey& key);
78
79/**
80 * @brief Verify @p interest using @p key.
81 * @note This method verifies only signature of the signed interest
82 * @sa docs/specs/signed-interest.rst
83 */
84bool
85verifySignature(const Interest& interest, const v2::PublicKey& key);
86
87/**
88 * @brief Verify @p data using @p key.
89 */
90bool
91verifySignature(const Data& data, const pib::Key& key);
92
93/**
94 * @brief Verify @p interest using @p key.
95 * @note This method verifies only signature of the signed interest
96 * @sa docs/specs/signed-interest.rst
97 */
98bool
99verifySignature(const Interest& interest, const pib::Key& key);
100
101/**
102 * @brief Verify @p data using @p cert.
103 */
104bool
105verifySignature(const Data& data, const v2::Certificate& cert);
106
107/**
108 * @brief Verify @p interest using @p cert.
109 * @note This method verifies only signature of the signed interest
110 * @sa docs/specs/signed-interest.rst
111 */
112bool
113verifySignature(const Interest& interest, const v2::Certificate& cert);
114
115//////////////////////////////////////////////////////////////////
116
117/**
118 * @brief Verify @p blob against @p digest using @p algorithm.
119 *
120 * This is the core function, all other verifyDigest overloads are implemented in terms
121 * of this function.
122 */
123bool
124verifyDigest(const uint8_t* blob, size_t blobLen, const uint8_t* digest, size_t digestLen,
125 DigestAlgorithm algorithm);
126
127/**
128 * @brief Verify @p data against digest @p algorithm.
129 */
130bool
131verifyDigest(const Data& data, DigestAlgorithm algorithm);
132
133/**
134 * @brief Verify @p interest against digest @p algorithm.
135 * @note This method verifies only signature of the signed interest
136 * @sa docs/specs/signed-interest.rst
137 */
138bool
139verifyDigest(const Interest& interest, DigestAlgorithm algorithm);
140
141} // namespace security
142} // namespace ndn
143
144#endif // NDN_SECURITY_VERIFICATION_HELPERS_HPP