ndn-cxx: NDN C++ Library 0.9.0-33-g832ea91d
Loading...
Searching...
No Matches
key-handle.hpp
Go to the documentation of this file.
1/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/*
3 * Copyright (c) 2013-2023 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_CXX_SECURITY_TPM_KEY_HANDLE_HPP
23#define NDN_CXX_SECURITY_TPM_KEY_HANDLE_HPP
24
25#include "ndn-cxx/name.hpp"
27
28namespace ndn::security::tpm {
29
35class KeyHandle : noncopyable
36{
37public:
38 class Error : public std::runtime_error
39 {
40 public:
41 using std::runtime_error::runtime_error;
42 };
43
44public:
45 virtual
47
52 sign(DigestAlgorithm digestAlgorithm, const InputBuffers& bufs) const;
53
57 bool
58 verify(DigestAlgorithm digestAlgorithm, const InputBuffers& bufs, span<const uint8_t> sig) const;
59
64 decrypt(span<const uint8_t> cipherText) const;
65
70 derivePublicKey() const;
71
72 Name
73 getKeyName() const
74 {
75 return m_keyName;
76 }
77
78 void
79 setKeyName(const Name& keyName)
80 {
81 m_keyName = keyName;
82 }
83
84private:
85 virtual ConstBufferPtr
86 doSign(DigestAlgorithm digestAlgo, const InputBuffers& bufs) const = 0;
87
88 virtual bool
89 doVerify(DigestAlgorithm digestAlgo, const InputBuffers& bufs, span<const uint8_t> sig) const = 0;
90
91 virtual ConstBufferPtr
92 doDecrypt(span<const uint8_t> cipherText) const = 0;
93
94 virtual ConstBufferPtr
95 doDerivePublicKey() const = 0;
96
97private:
98 Name m_keyName;
99};
100
101} // namespace ndn::security::tpm
102
103#endif // NDN_CXX_SECURITY_TPM_KEY_HANDLE_HPP
Represents an absolute name.
Definition name.hpp:45
Abstraction of TPM key handle.
void setKeyName(const Name &keyName)
ConstBufferPtr derivePublicKey() const
ConstBufferPtr decrypt(span< const uint8_t > cipherText) const
Return plain text content decrypted from cipherText using this key.
bool verify(DigestAlgorithm digestAlgorithm, const InputBuffers &bufs, span< const uint8_t > sig) const
Verify the signature sig over bufs using this key and digestAlgorithm.
ConstBufferPtr sign(DigestAlgorithm digestAlgorithm, const InputBuffers &bufs) const
Generate a digital signature for bufs using this key with digestAlgorithm.
std::shared_ptr< const Buffer > ConstBufferPtr
Definition buffer.hpp:140
InputBuffers bufs
span< const uint8_t > sig