security: Move KeyChain to security::v1 namespace and deprecated it
Change-Id: Ic4b6915ca15998a83b410f3f8fac027f797ee7ca
Refs: #3098
diff --git a/src/security/v1/sec-public-info-sqlite3.hpp b/src/security/v1/sec-public-info-sqlite3.hpp
new file mode 100644
index 0000000..6e9dfd7
--- /dev/null
+++ b/src/security/v1/sec-public-info-sqlite3.hpp
@@ -0,0 +1,171 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/**
+ * Copyright (c) 2013-2017 Regents of the University of California.
+ *
+ * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
+ *
+ * ndn-cxx library is free software: you can redistribute it and/or modify it under the
+ * terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * ndn-cxx library 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 Lesser General Public License for more details.
+ *
+ * You should have received copies of the GNU General Public License and GNU Lesser
+ * General Public License along with ndn-cxx, e.g., in COPYING.md file. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
+ *
+ * @author Yingdi Yu <http://irl.cs.ucla.edu/~yingdi/>
+ * @author Jeff Thompson <jefft0@remap.ucla.edu>
+ */
+
+#ifndef NDN_SECURITY_V1_SEC_PUBLIC_INFO_SQLITE3_HPP
+#define NDN_SECURITY_V1_SEC_PUBLIC_INFO_SQLITE3_HPP
+
+#include "../../common.hpp"
+#include "sec-public-info.hpp"
+
+struct sqlite3;
+
+namespace ndn {
+namespace security {
+namespace v1 {
+
+class SecPublicInfoSqlite3 : public SecPublicInfo
+{
+public:
+ class Error : public SecPublicInfo::Error
+ {
+ public:
+ explicit
+ Error(const std::string& what)
+ : SecPublicInfo::Error(what)
+ {
+ }
+ };
+
+ explicit
+ SecPublicInfoSqlite3(const std::string& dir = "");
+
+ virtual
+ ~SecPublicInfoSqlite3();
+
+ /**********************
+ * from SecPublicInfo *
+ **********************/
+
+ virtual void
+ setTpmLocator(const std::string& tpmLocator);
+
+ virtual std::string
+ getTpmLocator();
+
+ virtual std::string
+ getPibLocator();
+
+ virtual bool
+ doesIdentityExist(const Name& identityName);
+
+ virtual void
+ addIdentity(const Name& identityName);
+
+ virtual bool
+ revokeIdentity();
+
+ virtual bool
+ doesPublicKeyExist(const Name& keyName);
+
+ virtual void
+ addKey(const Name& keyName, const PublicKey& publicKeyDer);
+
+ virtual shared_ptr<PublicKey>
+ getPublicKey(const Name& keyName);
+
+ virtual KeyType
+ getPublicKeyType(const Name& keyName);
+
+ virtual bool
+ doesCertificateExist(const Name& certificateName);
+
+ virtual void
+ addCertificate(const IdentityCertificate& certificate);
+
+ virtual shared_ptr<IdentityCertificate>
+ getCertificate(const Name& certificateName);
+
+
+
+ virtual Name
+ getDefaultIdentity();
+
+ virtual Name
+ getDefaultKeyNameForIdentity(const Name& identityName);
+
+ virtual Name
+ getDefaultCertificateNameForKey(const Name& keyName);
+
+ virtual void
+ getAllIdentities(std::vector<Name>& nameList, bool isDefault);
+
+ virtual void
+ getAllKeyNames(std::vector<Name>& nameList, bool isDefault);
+
+ virtual void
+ getAllKeyNamesOfIdentity(const Name& identity, std::vector<Name>& nameList, bool isDefault);
+
+ virtual void
+ getAllCertificateNames(std::vector<Name>& nameList, bool isDefault);
+
+ virtual void
+ getAllCertificateNamesOfKey(const Name& keyName, std::vector<Name>& nameList, bool isDefault);
+
+ virtual void
+ deleteCertificateInfo(const Name& certificateName);
+
+ virtual void
+ deletePublicKeyInfo(const Name& keyName);
+
+ virtual void
+ deleteIdentityInfo(const Name& identity);
+
+private:
+ bool
+ initializeTable(const std::string& tableName, const std::string& initCommand);
+
+ void
+ deleteTable(const std::string& tableName);
+
+ void
+ setTpmLocatorInternal(const std::string& tpmLocator, bool needReset);
+
+ void
+ setDefaultIdentityInternal(const Name& identityName);
+
+ void
+ setDefaultKeyNameForIdentityInternal(const Name& keyName);
+
+ void
+ setDefaultCertificateNameForKeyInternal(const Name& certificateName);
+
+ std::string
+ getScheme();
+
+NDN_CXX_PUBLIC_WITH_TESTS_ELSE_PRIVATE:
+ bool
+ doesTableExist(const std::string& tableName);
+
+public:
+ static const std::string SCHEME;
+
+private:
+ sqlite3* m_database;
+};
+
+} // namespace v1
+} // namespace security
+} // namespace ndn
+
+#endif // NDN_SECURITY_V1_SEC_PUBLIC_INFO_SQLITE3_HPP