diff --git a/ndn-cxx/encoding/block.cpp b/ndn-cxx/encoding/block.cpp
index b4bbd02..6b14d87 100644
--- a/ndn-cxx/encoding/block.cpp
+++ b/ndn-cxx/encoding/block.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2022 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -37,7 +37,7 @@
 
 BOOST_CONCEPT_ASSERT((boost::EqualityComparable<Block>));
 
-const size_t MAX_SIZE_OF_BLOCK_FROM_STREAM = MAX_NDN_PACKET_SIZE;
+constexpr size_t MAX_SIZE_OF_BLOCK_FROM_STREAM = MAX_NDN_PACKET_SIZE;
 
 // ---- constructor, creation, assignment ----
 
diff --git a/ndn-cxx/encoding/nfd-constants.hpp b/ndn-cxx/encoding/nfd-constants.hpp
index 6b3389f..55f1b7b 100644
--- a/ndn-cxx/encoding/nfd-constants.hpp
+++ b/ndn-cxx/encoding/nfd-constants.hpp
@@ -29,7 +29,7 @@
 namespace ndn {
 namespace nfd {
 
-const uint64_t INVALID_FACE_ID = 0;
+inline constexpr uint64_t INVALID_FACE_ID = 0;
 
 /** \ingroup management
  */
diff --git a/ndn-cxx/encoding/tlv.hpp b/ndn-cxx/encoding/tlv.hpp
index 4513d13..be0fbfa 100644
--- a/ndn-cxx/encoding/tlv.hpp
+++ b/ndn-cxx/encoding/tlv.hpp
@@ -39,7 +39,7 @@
  *
  * If a packet is longer than this size, library and application MAY drop it.
  */
-const size_t MAX_NDN_PACKET_SIZE = 8800;
+inline constexpr size_t MAX_NDN_PACKET_SIZE = 8800;
 
 /**
  * @brief Contains constants and low-level functions related to the NDN packet format.
diff --git a/ndn-cxx/ims/in-memory-storage.cpp b/ndn-cxx/ims/in-memory-storage.cpp
index 64624a7..401e84c 100644
--- a/ndn-cxx/ims/in-memory-storage.cpp
+++ b/ndn-cxx/ims/in-memory-storage.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2019 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -24,8 +24,8 @@
 
 namespace ndn {
 
-const time::milliseconds InMemoryStorage::INFINITE_WINDOW(-1);
-const time::milliseconds InMemoryStorage::ZERO_WINDOW(0);
+constexpr size_t MIN_CAPACITY = 16;
+constexpr time::milliseconds ZERO_WINDOW = 0_ms;
 
 InMemoryStorage::const_iterator::const_iterator(const Data* ptr, const Cache* cache,
                                                 Cache::index<byFullName>::type::iterator it)
@@ -100,7 +100,7 @@
 InMemoryStorage::init()
 {
   // TODO consider a more suitable initial value
-  m_capacity = m_initCapacity;
+  m_capacity = MIN_CAPACITY;
 
   if (m_limit != std::numeric_limits<size_t>::max() && m_capacity > m_limit) {
     m_capacity = m_limit;
@@ -131,7 +131,7 @@
 InMemoryStorage::setCapacity(size_t capacity)
 {
   size_t oldCapacity = m_capacity;
-  m_capacity = std::max(capacity, m_initCapacity);
+  m_capacity = std::max(capacity, MIN_CAPACITY);
 
   if (size() > m_capacity) {
     ssize_t nAllowedFailures = size() - m_capacity;
@@ -367,17 +367,17 @@
 }
 
 void
-InMemoryStorage::afterInsert(InMemoryStorageEntry* entry)
+InMemoryStorage::afterInsert(InMemoryStorageEntry*)
 {
 }
 
 void
-InMemoryStorage::beforeErase(InMemoryStorageEntry* entry)
+InMemoryStorage::beforeErase(InMemoryStorageEntry*)
 {
 }
 
 void
-InMemoryStorage::afterAccess(InMemoryStorageEntry* entry)
+InMemoryStorage::afterAccess(InMemoryStorageEntry*)
 {
 }
 
diff --git a/ndn-cxx/ims/in-memory-storage.hpp b/ndn-cxx/ims/in-memory-storage.hpp
index 67fd76d..4694e31 100644
--- a/ndn-cxx/ims/in-memory-storage.hpp
+++ b/ndn-cxx/ims/in-memory-storage.hpp
@@ -326,17 +326,12 @@
   init();
 
 public:
-  static const time::milliseconds INFINITE_WINDOW;
-
-private:
-  static const time::milliseconds ZERO_WINDOW;
+  static constexpr time::milliseconds INFINITE_WINDOW = -1_ms;
 
 private:
   Cache m_cache;
   /// user defined maximum capacity of the in-memory storage in packets
   size_t m_limit;
-  /// initial capacity, used as minimum capacity
-  const size_t m_initCapacity = 16;
   /// current capacity of the in-memory storage in packets
   size_t m_capacity;
   /// current number of packets in in-memory storage
diff --git a/ndn-cxx/interest.hpp b/ndn-cxx/interest.hpp
index d8ef0ea..4bf8e51 100644
--- a/ndn-cxx/interest.hpp
+++ b/ndn-cxx/interest.hpp
@@ -40,7 +40,7 @@
 /**
  * @brief Default value of `InterestLifetime`.
  */
-const time::milliseconds DEFAULT_INTEREST_LIFETIME = 4_s;
+inline constexpr time::milliseconds DEFAULT_INTEREST_LIFETIME = 4_s;
 
 /**
  * @brief Represents an %Interest packet.
diff --git a/ndn-cxx/key-locator.cpp b/ndn-cxx/key-locator.cpp
index 989a2e4..28ca7fe 100644
--- a/ndn-cxx/key-locator.cpp
+++ b/ndn-cxx/key-locator.cpp
@@ -34,7 +34,7 @@
 static_assert(std::is_base_of<tlv::Error, KeyLocator::Error>::value,
               "KeyLocator::Error must inherit from tlv::Error");
 
-const size_t MAX_KEY_DIGEST_OCTETS_TO_SHOW = 8;
+constexpr size_t MAX_KEY_DIGEST_OCTETS_TO_SHOW = 8;
 
 KeyLocator::KeyLocator() = default;
 
diff --git a/ndn-cxx/lp/pit-token.cpp b/ndn-cxx/lp/pit-token.cpp
index 2448579..f232814 100644
--- a/ndn-cxx/lp/pit-token.cpp
+++ b/ndn-cxx/lp/pit-token.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2019 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -26,8 +26,8 @@
 namespace ndn {
 namespace lp {
 
-static constexpr size_t LENGTH_MIN = 1;
-static constexpr size_t LENGTH_MAX = 32;
+constexpr size_t LENGTH_MIN = 1;
+constexpr size_t LENGTH_MAX = 32;
 
 void
 PitToken::validate() const
diff --git a/ndn-cxx/meta-info.hpp b/ndn-cxx/meta-info.hpp
index f2dd699..e504c5c 100644
--- a/ndn-cxx/meta-info.hpp
+++ b/ndn-cxx/meta-info.hpp
@@ -35,7 +35,7 @@
 /**
  * @brief Default value of `FreshnessPeriod`.
  */
-const time::milliseconds DEFAULT_FRESHNESS_PERIOD{0};
+inline constexpr time::milliseconds DEFAULT_FRESHNESS_PERIOD = 0_ms;
 
 /**
  * @brief A MetaInfo holds the meta info which is signed inside the Data packet.
diff --git a/ndn-cxx/mgmt/nfd/command-options.cpp b/ndn-cxx/mgmt/nfd/command-options.cpp
index beeac16..36faba2 100644
--- a/ndn-cxx/mgmt/nfd/command-options.cpp
+++ b/ndn-cxx/mgmt/nfd/command-options.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2019 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -24,37 +24,27 @@
 namespace ndn {
 namespace nfd {
 
-const time::milliseconds CommandOptions::DEFAULT_TIMEOUT(10000);
-const Name CommandOptions::DEFAULT_PREFIX("ndn:/localhost/nfd");
-
-CommandOptions::CommandOptions()
-  : m_timeout(DEFAULT_TIMEOUT)
-  , m_prefix(DEFAULT_PREFIX)
-{
-}
-
 CommandOptions&
-CommandOptions::setTimeout(const time::milliseconds& timeout)
+CommandOptions::setTimeout(time::milliseconds timeout)
 {
-  if (timeout <= time::milliseconds::zero()) {
+  if (timeout <= 0_ms) {
     NDN_THROW(std::out_of_range("Timeout must be positive"));
   }
-
   m_timeout = timeout;
   return *this;
 }
 
 CommandOptions&
-CommandOptions::setPrefix(const Name& prefix)
+CommandOptions::setPrefix(Name prefix)
 {
-  m_prefix = prefix;
+  m_prefix = std::move(prefix);
   return *this;
 }
 
 CommandOptions&
-CommandOptions::setSigningInfo(const security::SigningInfo& signingInfo)
+CommandOptions::setSigningInfo(security::SigningInfo signingInfo)
 {
-  m_signingInfo = signingInfo;
+  m_signingInfo = std::move(signingInfo);
   return *this;
 }
 
diff --git a/ndn-cxx/mgmt/nfd/command-options.hpp b/ndn-cxx/mgmt/nfd/command-options.hpp
index 5101294..5a341fe 100644
--- a/ndn-cxx/mgmt/nfd/command-options.hpp
+++ b/ndn-cxx/mgmt/nfd/command-options.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2022 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -27,19 +27,21 @@
 namespace ndn {
 namespace nfd {
 
-/** \ingroup management
- *  \brief Contains options for ControlCommand execution.
- *  \note This type is intentionally copyable
+/**
+ * \ingroup management
+ * \brief Contains options for ControlCommand execution.
+ * \note This type is intentionally copyable.
  */
 class CommandOptions
 {
 public:
-  /** \brief Constructs CommandOptions.
-   *  \post getTimeout() == DEFAULT_TIMEOUT
-   *  \post getPrefix() == DEFAULT_PREFIX
-   *  \post getSigningInfo().getSignerType() == SIGNER_TYPE_NULL
+  /**
+   * \brief Constructs CommandOptions.
+   * \post getTimeout() == DEFAULT_TIMEOUT
+   * \post getPrefix() == DEFAULT_PREFIX
+   * \post getSigningInfo().getSignerType() == SIGNER_TYPE_NULL
    */
-  CommandOptions();
+  CommandOptions() = default;
 
   /**
    * \brief Returns the command timeout.
@@ -50,13 +52,14 @@
     return m_timeout;
   }
 
-  /** \brief Sets the command timeout.
-   *  \param timeout the new command timeout, must be positive
-   *  \throw std::out_of_range if timeout is non-positive
-   *  \return self
+  /**
+   * \brief Sets the command timeout.
+   * \param timeout the new command timeout, must be positive
+   * \return self
+   * \throw std::out_of_range if timeout is non-positive
    */
   CommandOptions&
-  setTimeout(const time::milliseconds& timeout);
+  setTimeout(time::milliseconds timeout);
 
   /**
    * \brief Returns the command prefix.
@@ -67,11 +70,12 @@
     return m_prefix;
   }
 
-  /** \brief Sets the command prefix.
-   *  \return self
+  /**
+   * \brief Sets the command prefix.
+   * \return self
    */
   CommandOptions&
-  setPrefix(const Name& prefix);
+  setPrefix(Name prefix);
 
   /**
    * \brief Returns the signing parameters.
@@ -82,22 +86,23 @@
     return m_signingInfo;
   }
 
-  /** \brief Sets the signing parameters.
-   *  \return self
+  /**
+   * \brief Sets the signing parameters.
+   * \return self
    */
   CommandOptions&
-  setSigningInfo(const security::SigningInfo& signingInfo);
+  setSigningInfo(security::SigningInfo signingInfo);
 
 public:
   /// The default command timeout: 10 seconds.
-  static const time::milliseconds DEFAULT_TIMEOUT;
+  static constexpr time::milliseconds DEFAULT_TIMEOUT = 10_s;
 
   /// The default command prefix: `/localhost/nfd`.
-  static const Name DEFAULT_PREFIX;
+  static inline const Name DEFAULT_PREFIX{"/localhost/nfd"};
 
 private:
-  time::milliseconds m_timeout;
-  Name m_prefix;
+  time::milliseconds m_timeout = DEFAULT_TIMEOUT;
+  Name m_prefix = DEFAULT_PREFIX;
   security::SigningInfo m_signingInfo;
 };
 
diff --git a/ndn-cxx/mgmt/nfd/control-parameters.hpp b/ndn-cxx/mgmt/nfd/control-parameters.hpp
index 2d1a3ea..682c590 100644
--- a/ndn-cxx/mgmt/nfd/control-parameters.hpp
+++ b/ndn-cxx/mgmt/nfd/control-parameters.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2022 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -53,7 +53,7 @@
   CONTROL_PARAMETER_UBOUND
 };
 
-const std::string CONTROL_PARAMETER_FIELD[CONTROL_PARAMETER_UBOUND] = {
+inline const std::string CONTROL_PARAMETER_FIELD[CONTROL_PARAMETER_UBOUND] = {
   "Name",
   "FaceId",
   "Uri",
diff --git a/ndn-cxx/mgmt/nfd/controller.cpp b/ndn-cxx/mgmt/nfd/controller.cpp
index 6f0f74c..d1c2489 100644
--- a/ndn-cxx/mgmt/nfd/controller.cpp
+++ b/ndn-cxx/mgmt/nfd/controller.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2022 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -30,12 +30,6 @@
 
 using ndn::util::SegmentFetcher;
 
-const uint32_t Controller::ERROR_TIMEOUT = 10060; // WinSock ESAETIMEDOUT
-const uint32_t Controller::ERROR_NACK = 10800; // 10000 + TLV-TYPE of Nack header
-const uint32_t Controller::ERROR_VALIDATION = 10021; // 10000 + TLS1_ALERT_DECRYPTION_FAILED
-const uint32_t Controller::ERROR_SERVER = 500;
-const uint32_t Controller::ERROR_LBOUND = 400;
-
 Controller::Controller(Face& face, KeyChain& keyChain, security::Validator& validator)
   : m_face(face)
   , m_keyChain(keyChain)
diff --git a/ndn-cxx/mgmt/nfd/controller.hpp b/ndn-cxx/mgmt/nfd/controller.hpp
index 3cb2c0d..1d56b56 100644
--- a/ndn-cxx/mgmt/nfd/controller.hpp
+++ b/ndn-cxx/mgmt/nfd/controller.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2022 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -25,7 +25,6 @@
 #include "ndn-cxx/mgmt/nfd/command-options.hpp"
 #include "ndn-cxx/mgmt/nfd/control-command.hpp"
 #include "ndn-cxx/mgmt/nfd/control-response.hpp"
-#include "ndn-cxx/mgmt/nfd/status-dataset.hpp"
 #include "ndn-cxx/security/interest-signer.hpp"
 #include "ndn-cxx/security/key-chain.hpp"
 #include "ndn-cxx/security/validator-null.hpp"
@@ -74,7 +73,8 @@
 
   ~Controller();
 
-  /** \brief Start command execution.
+  /**
+   * \brief Start command execution.
    */
   template<typename Command>
   void
@@ -86,7 +86,8 @@
     startCommand(make_shared<Command>(), parameters, onSuccess, onFailure, options);
   }
 
-  /** \brief Start dataset fetching.
+  /**
+   * \brief Start dataset fetching.
    */
   template<typename Dataset>
   std::enable_if_t<std::is_default_constructible<Dataset>::value>
@@ -97,7 +98,8 @@
     fetchDataset(make_shared<Dataset>(), onSuccess, onFailure, options);
   }
 
-  /** \brief Start dataset fetching.
+  /**
+   * \brief Start dataset fetching.
    */
   template<typename Dataset, typename ParamType = typename Dataset::ParamType>
   void
@@ -154,19 +156,19 @@
 
 public:
   /// Error code for timeout.
-  static const uint32_t ERROR_TIMEOUT;
+  static constexpr uint32_t ERROR_TIMEOUT = 10060;
 
   /// Error code for network %Nack.
-  static const uint32_t ERROR_NACK;
+  static constexpr uint32_t ERROR_NACK = 10800;
 
   /// Error code for response validation failure.
-  static const uint32_t ERROR_VALIDATION;
+  static constexpr uint32_t ERROR_VALIDATION = 10021;
 
   /// Error code for server error.
-  static const uint32_t ERROR_SERVER;
+  static constexpr uint32_t ERROR_SERVER = 500;
 
   /// Inclusive lower bound of error codes.
-  static const uint32_t ERROR_LBOUND;
+  static constexpr uint32_t ERROR_LBOUND = 400;
 
 protected:
   Face& m_face;
diff --git a/ndn-cxx/mgmt/status-dataset-context.cpp b/ndn-cxx/mgmt/status-dataset-context.cpp
index ebb505b..0848a05 100644
--- a/ndn-cxx/mgmt/status-dataset-context.cpp
+++ b/ndn-cxx/mgmt/status-dataset-context.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2022 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -24,7 +24,7 @@
 namespace ndn {
 namespace mgmt {
 
-const size_t MAX_PAYLOAD_LENGTH = MAX_NDN_PACKET_SIZE - 800;
+constexpr size_t MAX_PAYLOAD_LENGTH = MAX_NDN_PACKET_SIZE - 800;
 
 StatusDatasetContext::StatusDatasetContext(const Interest& interest,
                                            DataSender dataSender, NackSender nackSender)
diff --git a/ndn-cxx/name.cpp b/ndn-cxx/name.cpp
index a72bd8a..50fd40c 100644
--- a/ndn-cxx/name.cpp
+++ b/ndn-cxx/name.cpp
@@ -47,8 +47,6 @@
 static_assert(std::is_base_of<tlv::Error, Name::Error>::value,
               "Name::Error must inherit from tlv::Error");
 
-const size_t Name::npos = std::numeric_limits<size_t>::max();
-
 // ---- constructors, encoding, decoding ----
 
 Name::Name()
diff --git a/ndn-cxx/name.hpp b/ndn-cxx/name.hpp
index 4786bc7..98ecb97 100644
--- a/ndn-cxx/name.hpp
+++ b/ndn-cxx/name.hpp
@@ -25,6 +25,7 @@
 #include "ndn-cxx/name-component.hpp"
 
 #include <iterator>
+#include <limits>
 #include <optional>
 
 namespace ndn {
@@ -704,7 +705,7 @@
   /**
    * @brief Indicates "until the end" in getSubName() and compare().
    */
-  static const size_t npos;
+  static constexpr size_t npos = std::numeric_limits<size_t>::max();
 
 private:
   mutable Block m_wire;
diff --git a/ndn-cxx/net/ethernet.hpp b/ndn-cxx/net/ethernet.hpp
index ad79187..ed25834 100644
--- a/ndn-cxx/net/ethernet.hpp
+++ b/ndn-cxx/net/ethernet.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2022 Regents of the University of California,
+ * Copyright (c) 2014-2023 Regents of the University of California,
  *                         Arizona Board of Regents,
  *                         Colorado State University,
  *                         University Pierre & Marie Curie, Sorbonne University,
@@ -36,15 +36,15 @@
 namespace ndn {
 namespace ethernet {
 
-const uint16_t ETHERTYPE_NDN = 0x8624;
+inline constexpr uint16_t ETHERTYPE_NDN = 0x8624; ///< The NDN Ethertype
 
-const size_t ADDR_LEN     = 6;      ///< Octets in one Ethernet address
-const size_t TYPE_LEN     = 2;      ///< Octets in Ethertype field
-const size_t HDR_LEN      = 14;     ///< Total octets in Ethernet header (without 802.1Q tag)
-const size_t TAG_LEN      = 4;      ///< Octets in 802.1Q tag (TPID + priority + VLAN)
-const size_t MIN_DATA_LEN = 46;     ///< Min octets in Ethernet payload (assuming no 802.1Q tag)
-const size_t MAX_DATA_LEN = 1500;   ///< Max octets in Ethernet payload
-const size_t CRC_LEN      = 4;      ///< Octets in Ethernet frame check sequence
+inline constexpr size_t ADDR_LEN     = 6;    ///< Octets in one Ethernet address
+inline constexpr size_t TYPE_LEN     = 2;    ///< Octets in Ethertype field
+inline constexpr size_t HDR_LEN      = 14;   ///< Total octets in Ethernet header (without 802.1Q tag)
+inline constexpr size_t TAG_LEN      = 4;    ///< Octets in 802.1Q tag (TPID + priority + VLAN)
+inline constexpr size_t MIN_DATA_LEN = 46;   ///< Min octets in Ethernet payload (assuming no 802.1Q tag)
+inline constexpr size_t MAX_DATA_LEN = 1500; ///< Max octets in Ethernet payload
+inline constexpr size_t CRC_LEN      = 4;    ///< Octets in Ethernet frame check sequence
 
 /**
  * \brief Represents an Ethernet hardware address.
diff --git a/ndn-cxx/security/additional-description.cpp b/ndn-cxx/security/additional-description.cpp
index 2b332f4..25cde15 100644
--- a/ndn-cxx/security/additional-description.cpp
+++ b/ndn-cxx/security/additional-description.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2020 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -35,8 +35,8 @@
 static_assert(std::is_base_of<tlv::Error, AdditionalDescription::Error>::value,
               "AdditionalDescription::Error must inherit from tlv::Error");
 
-static const size_t KEY_OFFSET = 0;
-static const size_t VALUE_OFFSET = 1;
+constexpr size_t KEY_OFFSET = 0;
+constexpr size_t VALUE_OFFSET = 1;
 
 AdditionalDescription::AdditionalDescription(const Block& block)
 {
diff --git a/ndn-cxx/security/certificate.cpp b/ndn-cxx/security/certificate.cpp
index fdce8ad..f912b4a 100644
--- a/ndn-cxx/security/certificate.cpp
+++ b/ndn-cxx/security/certificate.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2022 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -36,16 +36,6 @@
 static_assert(std::is_base_of<Data::Error, Certificate::Error>::value,
               "Certificate::Error must inherit from Data::Error");
 
-// /<IdentityName>/KEY/<KeyId>/<IssuerId>/<Version>
-const ssize_t Certificate::VERSION_OFFSET = -1;
-const ssize_t Certificate::ISSUER_ID_OFFSET = -2;
-const ssize_t Certificate::KEY_ID_OFFSET = -3;
-const ssize_t Certificate::KEY_COMPONENT_OFFSET = -4;
-const size_t Certificate::MIN_CERT_NAME_LENGTH = 4;
-const size_t Certificate::MIN_KEY_NAME_LENGTH = 2;
-const name::Component Certificate::KEY_COMPONENT("KEY");
-const name::Component Certificate::DEFAULT_ISSUER_ID("NA");
-
 Certificate::Certificate()
 {
   setContentType(tlv::ContentType_Key);
diff --git a/ndn-cxx/security/certificate.hpp b/ndn-cxx/security/certificate.hpp
index 0578cd5..b533494 100644
--- a/ndn-cxx/security/certificate.hpp
+++ b/ndn-cxx/security/certificate.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2022 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -141,23 +141,24 @@
   Block
   getExtension(uint32_t type) const;
 
-  // @TODO Implement extension enumeration (Issue #3907)
-public:
+  // TODO: Implement extension enumeration (Issue #3907)
+
   /**
-   * @brief Check if the specified name follows the naming convention for the certificate
+   * @brief Check if the specified name respects the naming conventions for certificates.
    */
   static bool
   isValidName(const Name& certName);
 
 public:
-  static const ssize_t VERSION_OFFSET;
-  static const ssize_t ISSUER_ID_OFFSET;
-  static const ssize_t KEY_COMPONENT_OFFSET;
-  static const ssize_t KEY_ID_OFFSET;
-  static const size_t MIN_CERT_NAME_LENGTH;
-  static const size_t MIN_KEY_NAME_LENGTH;
-  static const name::Component KEY_COMPONENT;
-  static const name::Component DEFAULT_ISSUER_ID;
+  // Certificate name structure: /<IdentityName>/KEY/<KeyId>/<IssuerId>/<Version>
+  static constexpr ssize_t VERSION_OFFSET = -1;
+  static constexpr ssize_t ISSUER_ID_OFFSET = -2;
+  static constexpr ssize_t KEY_ID_OFFSET = -3;
+  static constexpr ssize_t KEY_COMPONENT_OFFSET = -4;
+  static constexpr size_t MIN_CERT_NAME_LENGTH = 4;
+  static constexpr size_t MIN_KEY_NAME_LENGTH = 2;
+  static inline const name::Component KEY_COMPONENT{"KEY"};
+  static inline const name::Component DEFAULT_ISSUER_ID{"NA"};
 };
 
 std::ostream&
diff --git a/ndn-cxx/security/key-chain.cpp b/ndn-cxx/security/key-chain.cpp
index 98b7080..20e522d 100644
--- a/ndn-cxx/security/key-chain.cpp
+++ b/ndn-cxx/security/key-chain.cpp
@@ -70,7 +70,7 @@
 
 NDN_LOG_INIT(ndn.security.KeyChain);
 
-const name::Component SELF("self");
+const name::Component SELF{"self"};
 
 KeyChain::PibFactories&
 KeyChain::getPibFactories()
diff --git a/ndn-cxx/security/key-params.cpp b/ndn-cxx/security/key-params.cpp
index 817e780..c2bf0a7 100644
--- a/ndn-cxx/security/key-params.cpp
+++ b/ndn-cxx/security/key-params.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2022 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -42,14 +42,14 @@
 
 namespace detail {
 
-const uint32_t MIN_RSA_KEY_SIZE = 2048;
-const uint32_t MAX_RSA_KEY_SIZE = 16384;
-const uint32_t DEFAULT_RSA_KEY_SIZE = 2048;
-const uint32_t EC_KEY_SIZES[] = {224, 256, 384, 521};
-const uint32_t DEFAULT_EC_KEY_SIZE = 256;
-const uint32_t AES_KEY_SIZES[] = {128, 192, 256};
-const uint32_t DEFAULT_AES_KEY_SIZE = 128;
-const uint32_t DEFAULT_HMAC_KEY_SIZE = 256;
+constexpr uint32_t MIN_RSA_KEY_SIZE = 2048;
+constexpr uint32_t MAX_RSA_KEY_SIZE = 16384;
+constexpr uint32_t DEFAULT_RSA_KEY_SIZE = 2048;
+constexpr uint32_t EC_KEY_SIZES[] = {224, 256, 384, 521};
+constexpr uint32_t DEFAULT_EC_KEY_SIZE = 256;
+constexpr uint32_t AES_KEY_SIZES[] = {128, 192, 256};
+constexpr uint32_t DEFAULT_AES_KEY_SIZE = 128;
+constexpr uint32_t DEFAULT_HMAC_KEY_SIZE = 256;
 
 uint32_t
 RsaKeyParamsInfo::checkKeySize(uint32_t size)
diff --git a/ndn-cxx/security/security-common.hpp b/ndn-cxx/security/security-common.hpp
index b193746..aedee38 100644
--- a/ndn-cxx/security/security-common.hpp
+++ b/ndn-cxx/security/security-common.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2022 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -31,13 +31,13 @@
 
 namespace signed_interest {
 
-const ssize_t POS_SIG_VALUE = -1;
-const ssize_t POS_SIG_INFO = -2;
+inline constexpr ssize_t POS_SIG_VALUE = -1;
+inline constexpr ssize_t POS_SIG_INFO = -2;
 
 /** \brief Minimum number of name components for an old-style Signed %Interest.
  *  \sa https://redmine.named-data.net/projects/ndn-cxx/wiki/SignedInterest
  */
-const size_t MIN_SIZE = 2;
+inline constexpr size_t MIN_SIZE = 2;
 
 } // namespace signed_interest
 
@@ -45,13 +45,13 @@
 
 using signed_interest::POS_SIG_VALUE;
 using signed_interest::POS_SIG_INFO;
-const ssize_t POS_RANDOM_VAL = -3;
-const ssize_t POS_TIMESTAMP = -4;
+inline constexpr ssize_t POS_RANDOM_VAL = -3;
+inline constexpr ssize_t POS_TIMESTAMP = -4;
 
 /** \brief Minimum number of name components for a Command %Interest.
  *  \sa https://redmine.named-data.net/projects/ndn-cxx/wiki/CommandInterest
  */
-const size_t MIN_SIZE = 4;
+inline constexpr size_t MIN_SIZE = 4;
 
 } // namespace command_interest
 
diff --git a/ndn-cxx/security/transform/stream-source.cpp b/ndn-cxx/security/transform/stream-source.cpp
index 8acf41e..10e5fa6 100644
--- a/ndn-cxx/security/transform/stream-source.cpp
+++ b/ndn-cxx/security/transform/stream-source.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2021 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -28,8 +28,6 @@
 namespace security {
 namespace transform {
 
-const std::size_t StreamSource::DEFAULT_BUFFER_LEN = 1024;
-
 StreamSource::StreamSource(std::istream& is, size_t bufferSize)
   : Source()
   , m_is(is)
diff --git a/ndn-cxx/security/transform/stream-source.hpp b/ndn-cxx/security/transform/stream-source.hpp
index 2e022ff..886066b 100644
--- a/ndn-cxx/security/transform/stream-source.hpp
+++ b/ndn-cxx/security/transform/stream-source.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2018 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -52,7 +52,7 @@
   doPump() final;
 
 public:
-  static const std::size_t DEFAULT_BUFFER_LEN;
+  static constexpr std::size_t DEFAULT_BUFFER_LEN = 1024;
 
 private:
   std::istream& m_is;
diff --git a/ndn-cxx/security/validity-period.cpp b/ndn-cxx/security/validity-period.cpp
index 385c895..22e53dd 100644
--- a/ndn-cxx/security/validity-period.cpp
+++ b/ndn-cxx/security/validity-period.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2022 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -33,9 +33,9 @@
 static_assert(std::is_base_of<tlv::Error, ValidityPeriod::Error>::value,
               "ValidityPeriod::Error must inherit from tlv::Error");
 
-static const size_t ISO_DATETIME_SIZE = 15;
-static const size_t NOT_BEFORE_OFFSET = 0;
-static const size_t NOT_AFTER_OFFSET = 1;
+constexpr size_t ISO_DATETIME_SIZE = 15;
+constexpr size_t NOT_BEFORE_OFFSET = 0;
+constexpr size_t NOT_AFTER_OFFSET = 1;
 
 using boost::chrono::time_point_cast;
 
diff --git a/ndn-cxx/util/logging.cpp b/ndn-cxx/util/logging.cpp
index ba20396..d88a1a8 100644
--- a/ndn-cxx/util/logging.cpp
+++ b/ndn-cxx/util/logging.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2022 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -75,7 +75,7 @@
 
 } // namespace log
 
-static const LogLevel INITIAL_DEFAULT_LEVEL = LogLevel::NONE;
+constexpr LogLevel INITIAL_DEFAULT_LEVEL = LogLevel::NONE;
 
 Logging&
 Logging::get()
diff --git a/ndn-cxx/util/segment-fetcher.cpp b/ndn-cxx/util/segment-fetcher.cpp
index 60fdc2a..02d566f 100644
--- a/ndn-cxx/util/segment-fetcher.cpp
+++ b/ndn-cxx/util/segment-fetcher.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2021 Regents of the University of California,
+ * Copyright (c) 2013-2023 Regents of the University of California,
  *                         Colorado State University,
  *                         University Pierre & Marie Curie, Sorbonne University.
  *
@@ -36,8 +36,6 @@
 namespace ndn {
 namespace util {
 
-constexpr double SegmentFetcher::MIN_SSTHRESH;
-
 void
 SegmentFetcher::Options::validate()
 {
diff --git a/ndn-cxx/util/sha256.cpp b/ndn-cxx/util/sha256.cpp
index 1874b1e..c789a7e 100644
--- a/ndn-cxx/util/sha256.cpp
+++ b/ndn-cxx/util/sha256.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2022 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -30,8 +30,6 @@
 namespace ndn {
 namespace util {
 
-const size_t Sha256::DIGEST_SIZE;
-
 Sha256::Sha256()
 {
   reset();
diff --git a/ndn-cxx/util/sha256.hpp b/ndn-cxx/util/sha256.hpp
index d776d30..76a094e 100644
--- a/ndn-cxx/util/sha256.hpp
+++ b/ndn-cxx/util/sha256.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2022 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -22,7 +22,6 @@
 #ifndef NDN_CXX_UTIL_SHA256_HPP
 #define NDN_CXX_UTIL_SHA256_HPP
 
-#include "ndn-cxx/encoding/block.hpp"
 #include "ndn-cxx/encoding/buffer-stream.hpp"
 #include "ndn-cxx/security/transform/step-source.hpp"
 
@@ -53,7 +52,7 @@
   /**
    * @brief Length in bytes of a SHA-256 digest.
    */
-  static const size_t DIGEST_SIZE = 32;
+  static constexpr size_t DIGEST_SIZE = 32;
 
   /**
    * @brief Create an empty SHA-256 digest.
diff --git a/tests/unit/data.t.cpp b/tests/unit/data.t.cpp
index 9b530d6..5162f4d 100644
--- a/tests/unit/data.t.cpp
+++ b/tests/unit/data.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2022 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -26,7 +26,6 @@
 #include "ndn-cxx/security/transform/signer-filter.hpp"
 #include "ndn-cxx/security/transform/step-source.hpp"
 #include "ndn-cxx/security/transform/stream-sink.hpp"
-#include "ndn-cxx/security/verification-helpers.hpp"
 #include "ndn-cxx/util/sha256.hpp"
 #include "ndn-cxx/util/string-helper.hpp"
 
@@ -113,50 +112,48 @@
   security::transform::PublicKey m_pubKey;
 
 private:
-  static const uint8_t PRIVATE_KEY_DER[632];
-};
-
-const uint8_t DataSigningKeyFixture::PRIVATE_KEY_DER[] = {
-  0x30, 0x82, 0x02, 0x74, 0x02, 0x01, 0x00, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
-  0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, 0x02, 0x5e, 0x30, 0x82, 0x02, 0x5a, 0x02, 0x01,
-  0x00, 0x02, 0x81, 0x81, 0x00, 0x9e, 0x06, 0x3e, 0x47, 0x85, 0xb2, 0x34, 0x37, 0xaa, 0x85, 0x47,
-  0xac, 0x03, 0x24, 0x83, 0xb5, 0x9c, 0xa8, 0x05, 0x3a, 0x24, 0x1e, 0xeb, 0x89, 0x01, 0xbb, 0xe9,
-  0x9b, 0xb2, 0xc3, 0x22, 0xac, 0x68, 0xe3, 0xf0, 0x6c, 0x02, 0xce, 0x68, 0xa6, 0xc4, 0xd0, 0xa7,
-  0x06, 0x90, 0x9c, 0xaa, 0x1b, 0x08, 0x1d, 0x8b, 0x43, 0x9a, 0x33, 0x67, 0x44, 0x6d, 0x21, 0xa3,
-  0x1b, 0x88, 0x9a, 0x97, 0x5e, 0x59, 0xc4, 0x15, 0x0b, 0xd9, 0x2c, 0xbd, 0x51, 0x07, 0x61, 0x82,
-  0xad, 0xc1, 0xb8, 0xd7, 0xbf, 0x9b, 0xcf, 0x7d, 0x24, 0xc2, 0x63, 0xf3, 0x97, 0x17, 0xeb, 0xfe,
-  0x62, 0x25, 0xba, 0x5b, 0x4d, 0x8a, 0xc2, 0x7a, 0xbd, 0x43, 0x8a, 0x8f, 0xb8, 0xf2, 0xf1, 0xc5,
-  0x6a, 0x30, 0xd3, 0x50, 0x8c, 0xc8, 0x9a, 0xdf, 0xef, 0xed, 0x35, 0xe7, 0x7a, 0x62, 0xea, 0x76,
-  0x7c, 0xbb, 0x08, 0x26, 0xc7, 0x02, 0x01, 0x11, 0x02, 0x81, 0x80, 0x04, 0xa5, 0xd4, 0xa7, 0xc0,
-  0x2a, 0xe3, 0x6b, 0x0c, 0x8b, 0x73, 0x0c, 0x96, 0xae, 0x40, 0x1b, 0xee, 0x04, 0xf1, 0x18, 0x4c,
-  0x5b, 0x43, 0x29, 0xad, 0x3a, 0x3b, 0x93, 0xa3, 0x60, 0x17, 0x9b, 0xa8, 0xbb, 0x68, 0xf4, 0x1e,
-  0x33, 0x3f, 0x50, 0x32, 0xf7, 0x13, 0xf8, 0xa9, 0xe6, 0x7d, 0x79, 0x44, 0x00, 0xde, 0x72, 0xed,
-  0xf2, 0x73, 0xfa, 0x7b, 0xae, 0x2a, 0x71, 0xc0, 0x40, 0xc8, 0x37, 0x6f, 0x38, 0xb2, 0x69, 0x1f,
-  0xa8, 0x83, 0x7b, 0x42, 0x00, 0x73, 0x46, 0xe6, 0x4c, 0x91, 0x7f, 0x13, 0x06, 0x69, 0x06, 0xd8,
-  0x3f, 0x22, 0x15, 0x75, 0xf6, 0xde, 0xcd, 0xb0, 0xbc, 0x66, 0x61, 0x91, 0x08, 0x9b, 0x2b, 0xb2,
-  0x00, 0xa9, 0x67, 0x05, 0x39, 0x40, 0xb9, 0x37, 0x85, 0x88, 0x4f, 0x76, 0x79, 0x63, 0xc0, 0x88,
-  0x3c, 0x86, 0xa8, 0x12, 0x94, 0x5f, 0xe4, 0x36, 0x3d, 0xea, 0xb9, 0x02, 0x41, 0x00, 0xb6, 0x2e,
-  0xbb, 0xcd, 0x2f, 0x3a, 0x99, 0xe0, 0xa1, 0xa5, 0x44, 0x77, 0xea, 0x0b, 0xbe, 0x16, 0x95, 0x0e,
-  0x64, 0xa7, 0x68, 0xd7, 0x4b, 0x15, 0x15, 0x23, 0xe2, 0x1e, 0x4e, 0x00, 0x2c, 0x22, 0x97, 0xae,
-  0xb0, 0x74, 0xa6, 0x99, 0xd0, 0x5d, 0xb7, 0x1b, 0x10, 0x34, 0x13, 0xd2, 0x5f, 0x6e, 0x56, 0xad,
-  0x85, 0x4a, 0xdb, 0xf0, 0x78, 0xbd, 0xf4, 0x8c, 0xb7, 0x9a, 0x3e, 0x99, 0xef, 0xb9, 0x02, 0x41,
-  0x00, 0xde, 0x0d, 0xa7, 0x48, 0x75, 0x90, 0xad, 0x11, 0xa1, 0xac, 0xee, 0xcb, 0x41, 0x81, 0xc6,
-  0xc8, 0x7f, 0xe7, 0x25, 0x94, 0xa1, 0x2a, 0x21, 0xa8, 0x57, 0xfe, 0x84, 0xf2, 0x5e, 0xb4, 0x96,
-  0x35, 0xaf, 0xef, 0x2e, 0x7a, 0xf8, 0xda, 0x3f, 0xac, 0x8a, 0x3c, 0x1c, 0x9c, 0xbd, 0x44, 0xd6,
-  0x90, 0xb5, 0xce, 0x1b, 0x12, 0xf9, 0x3b, 0x8c, 0x69, 0xf6, 0xa9, 0x02, 0x93, 0x48, 0x35, 0x0a,
-  0x7f, 0x02, 0x40, 0x6b, 0x2a, 0x8c, 0x96, 0xd0, 0x7c, 0xd2, 0xfc, 0x9b, 0x52, 0x28, 0x46, 0x89,
-  0xac, 0x8d, 0xef, 0x2a, 0x80, 0xef, 0xea, 0x01, 0x6f, 0x95, 0x93, 0xee, 0x51, 0x57, 0xd5, 0x97,
-  0x4b, 0x65, 0x41, 0x86, 0x66, 0xc2, 0x26, 0x80, 0x1e, 0x3e, 0x55, 0x3e, 0x88, 0x63, 0xe2, 0x66,
-  0x03, 0x47, 0x31, 0xd8, 0xa2, 0x4e, 0x68, 0x45, 0x24, 0x0a, 0xca, 0x17, 0x61, 0xd5, 0x69, 0xca,
-  0x78, 0xab, 0x21, 0x02, 0x41, 0x00, 0x8f, 0xae, 0x7b, 0x4d, 0x00, 0xc7, 0x06, 0x92, 0xf0, 0x24,
-  0x9a, 0x83, 0x84, 0xbd, 0x62, 0x81, 0xbc, 0x2c, 0x27, 0x60, 0x2c, 0x0c, 0x33, 0xe5, 0x66, 0x1d,
-  0x28, 0xd9, 0x10, 0x1a, 0x7f, 0x4f, 0xea, 0x4f, 0x78, 0x6d, 0xb0, 0x14, 0xbf, 0xc9, 0xff, 0x17,
-  0xd6, 0x47, 0x4d, 0x4a, 0xa8, 0xf4, 0x39, 0x67, 0x3e, 0xb1, 0xec, 0x8f, 0xf1, 0x71, 0xbd, 0xb8,
-  0xa7, 0x50, 0x3d, 0xc7, 0xf7, 0xbb, 0x02, 0x40, 0x0d, 0x85, 0x32, 0x73, 0x9f, 0x0a, 0x33, 0x2f,
-  0x4b, 0xa2, 0xbd, 0xd1, 0xb1, 0x42, 0xf0, 0x72, 0xa8, 0x7a, 0xc8, 0x15, 0x37, 0x1b, 0xde, 0x76,
-  0x70, 0xce, 0xfd, 0x69, 0x20, 0x00, 0x4d, 0xc9, 0x4f, 0x35, 0x6f, 0xd1, 0x35, 0xa1, 0x04, 0x95,
-  0x30, 0xe8, 0x3b, 0xd5, 0x03, 0x5a, 0x50, 0x21, 0x6d, 0xa0, 0x84, 0x39, 0xe9, 0x2e, 0x1e, 0xfc,
-  0xe4, 0x82, 0x43, 0x20, 0x46, 0x7d, 0x0a, 0xb6
+  static constexpr uint8_t PRIVATE_KEY_DER[] = {
+    0x30, 0x82, 0x02, 0x74, 0x02, 0x01, 0x00, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
+    0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, 0x02, 0x5e, 0x30, 0x82, 0x02, 0x5a, 0x02, 0x01,
+    0x00, 0x02, 0x81, 0x81, 0x00, 0x9e, 0x06, 0x3e, 0x47, 0x85, 0xb2, 0x34, 0x37, 0xaa, 0x85, 0x47,
+    0xac, 0x03, 0x24, 0x83, 0xb5, 0x9c, 0xa8, 0x05, 0x3a, 0x24, 0x1e, 0xeb, 0x89, 0x01, 0xbb, 0xe9,
+    0x9b, 0xb2, 0xc3, 0x22, 0xac, 0x68, 0xe3, 0xf0, 0x6c, 0x02, 0xce, 0x68, 0xa6, 0xc4, 0xd0, 0xa7,
+    0x06, 0x90, 0x9c, 0xaa, 0x1b, 0x08, 0x1d, 0x8b, 0x43, 0x9a, 0x33, 0x67, 0x44, 0x6d, 0x21, 0xa3,
+    0x1b, 0x88, 0x9a, 0x97, 0x5e, 0x59, 0xc4, 0x15, 0x0b, 0xd9, 0x2c, 0xbd, 0x51, 0x07, 0x61, 0x82,
+    0xad, 0xc1, 0xb8, 0xd7, 0xbf, 0x9b, 0xcf, 0x7d, 0x24, 0xc2, 0x63, 0xf3, 0x97, 0x17, 0xeb, 0xfe,
+    0x62, 0x25, 0xba, 0x5b, 0x4d, 0x8a, 0xc2, 0x7a, 0xbd, 0x43, 0x8a, 0x8f, 0xb8, 0xf2, 0xf1, 0xc5,
+    0x6a, 0x30, 0xd3, 0x50, 0x8c, 0xc8, 0x9a, 0xdf, 0xef, 0xed, 0x35, 0xe7, 0x7a, 0x62, 0xea, 0x76,
+    0x7c, 0xbb, 0x08, 0x26, 0xc7, 0x02, 0x01, 0x11, 0x02, 0x81, 0x80, 0x04, 0xa5, 0xd4, 0xa7, 0xc0,
+    0x2a, 0xe3, 0x6b, 0x0c, 0x8b, 0x73, 0x0c, 0x96, 0xae, 0x40, 0x1b, 0xee, 0x04, 0xf1, 0x18, 0x4c,
+    0x5b, 0x43, 0x29, 0xad, 0x3a, 0x3b, 0x93, 0xa3, 0x60, 0x17, 0x9b, 0xa8, 0xbb, 0x68, 0xf4, 0x1e,
+    0x33, 0x3f, 0x50, 0x32, 0xf7, 0x13, 0xf8, 0xa9, 0xe6, 0x7d, 0x79, 0x44, 0x00, 0xde, 0x72, 0xed,
+    0xf2, 0x73, 0xfa, 0x7b, 0xae, 0x2a, 0x71, 0xc0, 0x40, 0xc8, 0x37, 0x6f, 0x38, 0xb2, 0x69, 0x1f,
+    0xa8, 0x83, 0x7b, 0x42, 0x00, 0x73, 0x46, 0xe6, 0x4c, 0x91, 0x7f, 0x13, 0x06, 0x69, 0x06, 0xd8,
+    0x3f, 0x22, 0x15, 0x75, 0xf6, 0xde, 0xcd, 0xb0, 0xbc, 0x66, 0x61, 0x91, 0x08, 0x9b, 0x2b, 0xb2,
+    0x00, 0xa9, 0x67, 0x05, 0x39, 0x40, 0xb9, 0x37, 0x85, 0x88, 0x4f, 0x76, 0x79, 0x63, 0xc0, 0x88,
+    0x3c, 0x86, 0xa8, 0x12, 0x94, 0x5f, 0xe4, 0x36, 0x3d, 0xea, 0xb9, 0x02, 0x41, 0x00, 0xb6, 0x2e,
+    0xbb, 0xcd, 0x2f, 0x3a, 0x99, 0xe0, 0xa1, 0xa5, 0x44, 0x77, 0xea, 0x0b, 0xbe, 0x16, 0x95, 0x0e,
+    0x64, 0xa7, 0x68, 0xd7, 0x4b, 0x15, 0x15, 0x23, 0xe2, 0x1e, 0x4e, 0x00, 0x2c, 0x22, 0x97, 0xae,
+    0xb0, 0x74, 0xa6, 0x99, 0xd0, 0x5d, 0xb7, 0x1b, 0x10, 0x34, 0x13, 0xd2, 0x5f, 0x6e, 0x56, 0xad,
+    0x85, 0x4a, 0xdb, 0xf0, 0x78, 0xbd, 0xf4, 0x8c, 0xb7, 0x9a, 0x3e, 0x99, 0xef, 0xb9, 0x02, 0x41,
+    0x00, 0xde, 0x0d, 0xa7, 0x48, 0x75, 0x90, 0xad, 0x11, 0xa1, 0xac, 0xee, 0xcb, 0x41, 0x81, 0xc6,
+    0xc8, 0x7f, 0xe7, 0x25, 0x94, 0xa1, 0x2a, 0x21, 0xa8, 0x57, 0xfe, 0x84, 0xf2, 0x5e, 0xb4, 0x96,
+    0x35, 0xaf, 0xef, 0x2e, 0x7a, 0xf8, 0xda, 0x3f, 0xac, 0x8a, 0x3c, 0x1c, 0x9c, 0xbd, 0x44, 0xd6,
+    0x90, 0xb5, 0xce, 0x1b, 0x12, 0xf9, 0x3b, 0x8c, 0x69, 0xf6, 0xa9, 0x02, 0x93, 0x48, 0x35, 0x0a,
+    0x7f, 0x02, 0x40, 0x6b, 0x2a, 0x8c, 0x96, 0xd0, 0x7c, 0xd2, 0xfc, 0x9b, 0x52, 0x28, 0x46, 0x89,
+    0xac, 0x8d, 0xef, 0x2a, 0x80, 0xef, 0xea, 0x01, 0x6f, 0x95, 0x93, 0xee, 0x51, 0x57, 0xd5, 0x97,
+    0x4b, 0x65, 0x41, 0x86, 0x66, 0xc2, 0x26, 0x80, 0x1e, 0x3e, 0x55, 0x3e, 0x88, 0x63, 0xe2, 0x66,
+    0x03, 0x47, 0x31, 0xd8, 0xa2, 0x4e, 0x68, 0x45, 0x24, 0x0a, 0xca, 0x17, 0x61, 0xd5, 0x69, 0xca,
+    0x78, 0xab, 0x21, 0x02, 0x41, 0x00, 0x8f, 0xae, 0x7b, 0x4d, 0x00, 0xc7, 0x06, 0x92, 0xf0, 0x24,
+    0x9a, 0x83, 0x84, 0xbd, 0x62, 0x81, 0xbc, 0x2c, 0x27, 0x60, 0x2c, 0x0c, 0x33, 0xe5, 0x66, 0x1d,
+    0x28, 0xd9, 0x10, 0x1a, 0x7f, 0x4f, 0xea, 0x4f, 0x78, 0x6d, 0xb0, 0x14, 0xbf, 0xc9, 0xff, 0x17,
+    0xd6, 0x47, 0x4d, 0x4a, 0xa8, 0xf4, 0x39, 0x67, 0x3e, 0xb1, 0xec, 0x8f, 0xf1, 0x71, 0xbd, 0xb8,
+    0xa7, 0x50, 0x3d, 0xc7, 0xf7, 0xbb, 0x02, 0x40, 0x0d, 0x85, 0x32, 0x73, 0x9f, 0x0a, 0x33, 0x2f,
+    0x4b, 0xa2, 0xbd, 0xd1, 0xb1, 0x42, 0xf0, 0x72, 0xa8, 0x7a, 0xc8, 0x15, 0x37, 0x1b, 0xde, 0x76,
+    0x70, 0xce, 0xfd, 0x69, 0x20, 0x00, 0x4d, 0xc9, 0x4f, 0x35, 0x6f, 0xd1, 0x35, 0xa1, 0x04, 0x95,
+    0x30, 0xe8, 0x3b, 0xd5, 0x03, 0x5a, 0x50, 0x21, 0x6d, 0xa0, 0x84, 0x39, 0xe9, 0x2e, 0x1e, 0xfc,
+    0xe4, 0x82, 0x43, 0x20, 0x46, 0x7d, 0x0a, 0xb6,
+  };
 };
 
 BOOST_AUTO_TEST_SUITE(Encode)
diff --git a/tests/unit/security/transform/public-key.t.cpp b/tests/unit/security/transform/public-key.t.cpp
index e37cda5..655811c 100644
--- a/tests/unit/security/transform/public-key.t.cpp
+++ b/tests/unit/security/transform/public-key.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2022 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -54,8 +54,6 @@
       "9rH58ynaAix0tcR/nBMRLUX+e3rURHg6UbSjJbdb9qmKM1fTGHKUzL/5pMG6uBU0\n"
       "ywIDAQAB\n";
 };
-constexpr KeyType RsaKeyTestData::type;
-constexpr size_t RsaKeyTestData::size;
 
 struct EcKeyTestData
 {
@@ -70,8 +68,6 @@
       "//////////+85vqtpxeehPO5ysL8YyVRAgEBA0IABGhuFibgwLdEJBDOLdvSg1Hc\n"
       "5EJTDxq6ls5FoYLfThp8HOjuwGSz0qw8ocMqyku1y0V5peQ4rEPd0bwcpZd9svA=\n";
 };
-constexpr KeyType EcKeyTestData::type;
-constexpr size_t EcKeyTestData::size;
 
 using KeyTestDataSets = boost::mpl::vector<RsaKeyTestData, EcKeyTestData>;
 
diff --git a/tests/unit/security/validator-fixture.cpp b/tests/unit/security/validator-fixture.cpp
index 8579fc8..0e780b4 100644
--- a/tests/unit/security/validator-fixture.cpp
+++ b/tests/unit/security/validator-fixture.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2022 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -28,9 +28,6 @@
 inline namespace v2 {
 namespace tests {
 
-const time::milliseconds ValidatorFixtureBase::s_mockPeriod{250};
-const int ValidatorFixtureBase::s_mockTimes = 200;
-
 ValidatorFixtureBase::ValidatorFixtureBase()
 {
   processInterest = [this] (const Interest& interest) {
diff --git a/tests/unit/security/validator-fixture.hpp b/tests/unit/security/validator-fixture.hpp
index 7e1e0b5..39e4ed3 100644
--- a/tests/unit/security/validator-fixture.hpp
+++ b/tests/unit/security/validator-fixture.hpp
@@ -69,8 +69,8 @@
   ValidationError lastError{ValidationError::NO_ERROR};
 
 private:
-  static const time::milliseconds s_mockPeriod;
-  static const int s_mockTimes;
+  static constexpr time::milliseconds s_mockPeriod{250};
+  static constexpr int s_mockTimes{200};
 };
 
 template<class ValidationPolicyT, class CertificateFetcherT = CertificateFetcherFromNetwork>
