blob: e010177414ae6500d2830051bda0790f51ec14bc [file] [log] [blame]
Yingdi Yu151b5572015-04-27 11:07:37 -07001/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/**
3 * Copyright (c) 2013-2015 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_PIB_HPP
23#define NDN_SECURITY_PIB_HPP
24
25#include "../common.hpp"
26
27namespace ndn {
28namespace security {
29
30/**
31 * @brief represents the PIB
32 *
33 * The PIB (Public Information Base) stores the public portion of a user's cryptography keys.
34 * The format and location of stored information is indicated by the PibLocator.
35 * The PIB is designed to work with a TPM (Trusted Platform Module) which stores private keys.
36 * There is a one-to-one association between PIB and TPM, and therefore the TpmLocator is recorded
37 * by the PIB to enforce this association and prevent one from operating on mismatched PIB and TPM.
38 *
39 * Information in the PIB is organized in a hierarchy of Identity-Key-Certificate. At the top level,
40 * the Pib class provides access to identities, and allows setting a default identity. Properties of
41 * an identity can be accessed after obtaining an Identity object.
42 *
43 * @throw PibImpl::Error when underlying implementation has non-semantic error.
44 */
45class Pib : noncopyable
46{
47public:
48 /// @brief represents a semantic error
49 class Error : public std::runtime_error
50 {
51 public:
52 explicit
53 Error(const std::string& what)
54 : std::runtime_error(what)
55 {
56 }
57 };
58
59 //TODO: Add Pib interfaces
60};
61
62} // namespace security
63} // namespace ndn
64
65#endif // NDN_SECURITY_PIB_HPP