use ndn::optional instead of boost::optional

Change-Id: If4db620ac410ddf5d8a082b26bdc8fef0b4c1b46
diff --git a/src/detail/ca-state.hpp b/src/detail/ca-state.hpp
index 23ad6db..994d185 100644
--- a/src/detail/ca-state.hpp
+++ b/src/detail/ca-state.hpp
@@ -135,7 +135,7 @@
   /**
    * @brief The challenge state.
    */
-  boost::optional<ChallengeState> m_challengeState;
+  optional<ChallengeState> m_challengeState;
 };
 
 std::ostream&
diff --git a/src/detail/ndncert-common.hpp b/src/detail/ndncert-common.hpp
index 77f6ca2..0e1b392 100644
--- a/src/detail/ndncert-common.hpp
+++ b/src/detail/ndncert-common.hpp
@@ -48,6 +48,7 @@
 #include <ndn-cxx/security/certificate.hpp>
 #include <ndn-cxx/security/key-chain.hpp>
 #include <ndn-cxx/util/logger.hpp>
+#include <ndn-cxx/util/nonstd/optional.hpp>
 #include <tuple>
 #include <boost/algorithm/string.hpp>
 #include <boost/assert.hpp>
diff --git a/src/detail/probe-encoder.cpp b/src/detail/probe-encoder.cpp
index 2908922..5141ba1 100644
--- a/src/detail/probe-encoder.cpp
+++ b/src/detail/probe-encoder.cpp
@@ -49,8 +49,8 @@
 }
 
 Block
-ProbeEncoder::encodeDataContent(const std::vector<Name>& identifiers, boost::optional<size_t> maxSuffixLength,
-                         boost::optional<std::vector<std::shared_ptr<security::Certificate>>> redirectionItems)
+ProbeEncoder::encodeDataContent(const std::vector<Name>& identifiers, optional<size_t> maxSuffixLength,
+                         optional<std::vector<std::shared_ptr<security::Certificate>>> redirectionItems)
 {
   Block content = makeEmptyBlock(ndn::tlv::Content);
   for (const auto& name : identifiers) {
diff --git a/src/detail/probe-encoder.hpp b/src/detail/probe-encoder.hpp
index 2e47e76..0a991c3 100644
--- a/src/detail/probe-encoder.hpp
+++ b/src/detail/probe-encoder.hpp
@@ -40,8 +40,8 @@
   // For CA use
   static Block
   encodeDataContent(const std::vector<Name>& identifiers,
-                    boost::optional<size_t> maxSuffixLength = boost::none,
-                    boost::optional<std::vector<std::shared_ptr<security::Certificate>>> redirectionItems = boost::none);
+                    optional<size_t> maxSuffixLength = nullopt,
+                    optional<std::vector<std::shared_ptr<security::Certificate>>> redirectionItems = nullopt);
 
   static std::vector<std::tuple<std::string, std::string>>
   decodeApplicationParameters(const Block& block);