| /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ |
| /* |
| * Copyright (c) 2017-2024, Regents of the University of California. |
| * |
| * This file is part of ndncert, a certificate management system based on NDN. |
| * |
| * ndncert is free software: you can redistribute it and/or modify it under the terms |
| * of the GNU General Public License as published by the Free Software Foundation, either |
| * version 3 of the License, or (at your option) any later version. |
| * |
| * ndncert is distributed in the hope that it will be useful, but WITHOUT ANY |
| * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A |
| * PARTICULAR PURPOSE. See the GNU General Public License for more details. |
| * |
| * You should have received copies of the GNU General Public License along with |
| * ndncert, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>. |
| * |
| * See AUTHORS.md for complete list of ndncert authors and contributors. |
| */ |
| |
| #ifndef NDNCERT_DETAIL_NDNCERT_COMMON_HPP |
| #define NDNCERT_DETAIL_NDNCERT_COMMON_HPP |
| |
| #include "detail/ndncert-config.hpp" |
| |
| #ifdef NDNCERT_WITH_TESTS |
| #define NDNCERT_VIRTUAL_WITH_TESTS virtual |
| #define NDNCERT_PUBLIC_WITH_TESTS_ELSE_PROTECTED public |
| #define NDNCERT_PUBLIC_WITH_TESTS_ELSE_PRIVATE public |
| #define NDNCERT_PROTECTED_WITH_TESTS_ELSE_PRIVATE protected |
| #else |
| #define NDNCERT_VIRTUAL_WITH_TESTS |
| #define NDNCERT_PUBLIC_WITH_TESTS_ELSE_PROTECTED protected |
| #define NDNCERT_PUBLIC_WITH_TESTS_ELSE_PRIVATE private |
| #define NDNCERT_PROTECTED_WITH_TESTS_ELSE_PRIVATE private |
| #endif |
| |
| #include <cstddef> |
| #include <cstdint> |
| #include <memory> |
| #include <stdexcept> |
| #include <string> |
| #include <vector> |
| |
| #include <ndn-cxx/data.hpp> |
| #include <ndn-cxx/encoding/block.hpp> |
| #include <ndn-cxx/encoding/block-helpers.hpp> |
| #include <ndn-cxx/interest.hpp> |
| #include <ndn-cxx/name.hpp> |
| #include <ndn-cxx/security/certificate.hpp> |
| #include <ndn-cxx/util/exception.hpp> |
| #include <ndn-cxx/util/time.hpp> |
| |
| #include <boost/assert.hpp> |
| #include <boost/core/noncopyable.hpp> |
| #include <boost/property_tree/ptree.hpp> |
| |
| namespace ndncert { |
| |
| using ndn::Block; |
| using ndn::Data; |
| using ndn::Interest; |
| using ndn::Name; |
| using ndn::SignatureInfo; |
| using ndn::security::Certificate; |
| |
| namespace time = ndn::time; |
| using namespace ndn::time_literals; |
| using namespace std::string_literals; |
| |
| namespace tlv { |
| |
| enum : uint32_t { |
| CaPrefix = 129, |
| CaInfo = 131, |
| ParameterKey = 133, |
| ParameterValue = 135, |
| CaCertificate = 137, |
| MaxValidityPeriod = 139, |
| ProbeResponse = 141, |
| MaxSuffixLength = 143, |
| EcdhPub = 145, |
| CertRequest = 147, |
| Salt = 149, |
| RequestId = 151, |
| Challenge = 153, |
| Status = 155, |
| InitializationVector = 157, |
| EncryptedPayload = 159, |
| SelectedChallenge = 161, |
| ChallengeStatus = 163, |
| RemainingTries = 165, |
| RemainingTime = 167, |
| IssuedCertName = 169, |
| ErrorCode = 171, |
| ErrorInfo = 173, |
| AuthenticationTag = 175, |
| CertToRevoke = 177, |
| ProbeRedirect = 179, |
| }; |
| |
| } // namespace tlv |
| |
| using JsonSection = boost::property_tree::ptree; |
| |
| // NDNCERT error code |
| enum class ErrorCode : uint64_t { |
| NO_ERROR = 0, |
| BAD_INTEREST_FORMAT = 1, |
| BAD_PARAMETER_FORMAT = 2, |
| BAD_SIGNATURE = 3, |
| INVALID_PARAMETER = 4, |
| NAME_NOT_ALLOWED = 5, |
| BAD_VALIDITY_PERIOD = 6, |
| OUT_OF_TRIES = 7, |
| OUT_OF_TIME = 8, |
| NO_AVAILABLE_NAMES = 9, |
| }; |
| |
| // Convert error code to string |
| std::ostream& |
| operator<<(std::ostream& os, ErrorCode code); |
| |
| // NDNCERT request type |
| enum class RequestType : uint64_t { |
| NOTINITIALIZED = 0, |
| NEW = 1, |
| RENEW = 2, |
| REVOKE = 3, |
| }; |
| |
| // Convert request type to string |
| std::ostream& |
| operator<<(std::ostream& out, RequestType type); |
| |
| } // namespace ndncert |
| |
| #endif // NDNCERT_DETAIL_NDNCERT_COMMON_HPP |