diff --git a/ndn-cxx/metadata-object.hpp b/ndn-cxx/metadata-object.hpp
index 0403d3e..7946e7f 100644
--- a/ndn-cxx/metadata-object.hpp
+++ b/ndn-cxx/metadata-object.hpp
@@ -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-2020 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -79,7 +79,7 @@
   NDN_CXX_NODISCARD Data
   makeData(Name discoveryInterestName,
            KeyChain& keyChain,
-           const ndn::security::SigningInfo& si = KeyChain::getDefaultSigningInfo(),
+           const ndn::security::SigningInfo& si = security::SigningInfo(),
            optional<uint64_t> version = nullopt,
            time::milliseconds freshnessPeriod = 10_ms) const;
 
diff --git a/ndn-cxx/prefix-announcement.hpp b/ndn-cxx/prefix-announcement.hpp
index 7f6168f..4ff1291 100644
--- a/ndn-cxx/prefix-announcement.hpp
+++ b/ndn-cxx/prefix-announcement.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-2020 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -70,7 +70,7 @@
    */
   const Data&
   toData(KeyChain& keyChain,
-         const ndn::security::SigningInfo& si = KeyChain::getDefaultSigningInfo(),
+         const ndn::security::SigningInfo& si = security::SigningInfo(),
          optional<uint64_t> version = nullopt) const;
 
   /** \brief Return announced name.
diff --git a/ndn-cxx/security/command-interest-signer.hpp b/ndn-cxx/security/command-interest-signer.hpp
index ab719ec..f6cb644 100644
--- a/ndn-cxx/security/command-interest-signer.hpp
+++ b/ndn-cxx/security/command-interest-signer.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-2020 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -82,7 +82,7 @@
    * @sa https://redmine.named-data.net/projects/ndn-cxx/wiki/CommandInterest
    */
   Interest
-  makeCommandInterest(const Name& name, const SigningInfo& params = KeyChain::getDefaultSigningInfo());
+  makeCommandInterest(const Name& name, const SigningInfo& params = SigningInfo());
 
 private:
   KeyChain& m_keyChain;
diff --git a/ndn-cxx/security/signing-info.hpp b/ndn-cxx/security/signing-info.hpp
index 9089429..847978c 100644
--- a/ndn-cxx/security/signing-info.hpp
+++ b/ndn-cxx/security/signing-info.hpp
@@ -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-2020 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -67,15 +67,15 @@
    * @brief Constructor.
    *
    * @param signerType The type of signer
-   * @param signerName The name of signer; interpretation differs per signerType
-   * @param signatureInfo A semi-prepared SignatureInfo which contains other information except
-   *                      SignatureType and KeyLocator.  If SignatureType and KeyLocator are
-   *                      specified, they may be overwritten by KeyChain.
+   * @param signerName The name of the signer; interpretation differs with the type of signer
+   * @param signatureInfo A semi-prepared SignatureInfo that contains all necessary information
+   *                      except SignatureType and KeyLocator. If SignatureType and/or KeyLocator
+   *                      is set, they will be overwritten by KeyChain::sign().
    */
   explicit
   SigningInfo(SignerType signerType = SIGNER_TYPE_NULL,
-              const Name& signerName = getEmptyName(),
-              const SignatureInfo& signatureInfo = getEmptySignatureInfo());
+              const Name& signerName = Name(),
+              const SignatureInfo& signatureInfo = SignatureInfo());
 
   /**
    * @brief Construct from a PIB identity.
@@ -222,7 +222,7 @@
   }
 
   /**
-   * @brief Set a semi-prepared SignatureInfo;
+   * @brief Set a semi-prepared SignatureInfo
    */
   SigningInfo&
   setSignatureInfo(const SignatureInfo& signatureInfo);
@@ -237,9 +237,18 @@
   }
 
 public:
+  /**
+   * @deprecated Use default constructor for Name
+   */
+  [[deprecated("use default constructor for Name")]]
   static const Name&
   getEmptyName();
 
+  /**
+   * @brief Get a SignatureInfo constructed with default values.
+   * @deprecated Use default constructor for SignatureInfo
+   */
+  [[deprecated("use default constructor for SignatureInfo")]]
   static const SignatureInfo&
   getEmptySignatureInfo();
 
diff --git a/ndn-cxx/security/v2/key-chain.hpp b/ndn-cxx/security/v2/key-chain.hpp
index 1021e8b..1524a1b 100644
--- a/ndn-cxx/security/v2/key-chain.hpp
+++ b/ndn-cxx/security/v2/key-chain.hpp
@@ -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-2020 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -237,71 +237,69 @@
 
 public: // signing
   /**
-   * @brief Sign data according to the supplied signing information.
+   * @brief Sign a Data packet according to the supplied signing information
    *
-   * This method uses the supplied signing information @p params to create the SignatureInfo block:
-   * - it selects a private key and its certificate to sign the packet
-   * - sets the KeyLocator field with the certificate name, and
-   * - adds other requested information to the SignatureInfo block.
-   *
-   * After that, the method assigns the created SignatureInfo to the data packets, generate a
-   * signature and sets as part of the SignatureValue block.
-   *
-   * @note The exception throwing semantics has changed from v1::KeyChain.
-   *       If the requested identity/key/certificate does not exist, it will **not** be created
-   *       and exception will be thrown.
+   * This method uses the supplied signing information in @p params to sign @p data as follows:
+   * - It selects a private key and its associated certificate to sign the packet.
+   * - It generates a KeyLocator based upon the certificate name.
+   * - Using the SignatureInfo in @p params as a base, it generates the final SignatureInfo block
+   *   for @p data.
+   * - It adds the generated SignatureInfo block to @p data.
+   * - It generates a signature for @p data and adds it as the SignatureValue block of @p data.
    *
    * @param data The data to sign
-   * @param params The signing parameters.
-   * @throw Error signing fails
-   * @throw InvalidSigningInfoError invalid @p params is specified or specified identity, key,
+   * @param params The signing parameters
+   * @throw Error Signing failed
+   * @throw InvalidSigningInfoError Invalid @p params was specified or the specified identity, key,
    *                                or certificate does not exist
    * @see SigningInfo
+   * @see SignatureInfo
    */
   void
-  sign(Data& data, const SigningInfo& params = getDefaultSigningInfo());
+  sign(Data& data, const SigningInfo& params = SigningInfo());
 
   /**
-   * @brief Sign interest according to the supplied signing information
+   * @brief Sign an Interest according to the supplied signing information
    *
-   * This method uses the supplied signing information @p params to create the SignatureInfo block:
-   * - it selects a private key and its certificate to sign the packet
-   * - sets the KeyLocator field with the certificate name, and
-   * - adds other requested information to the SignatureInfo block.
-   *
-   * After that, the method appends the created SignatureInfo to the interest name, generate a
-   * signature and appends it as part of the SignatureValue block to the interest name.
-   *
-   * @note The exception throwing semantics has changed from v1::KeyChain.  If the requested
-   *       identity/key/certificate does not exist, it will **not** be created and exception
-   *       will be thrown.
+   * This method uses the supplied signing information in @p params to sign @p interest as follows:
+   * - It selects a private key and its associated certificate to sign the packet.
+   * - It generates a KeyLocator based upon the certificate name.
+   * - Using the SignatureInfo in @p params as a base, it generates the final SignatureInfo block
+   *   for @p interest.
+   * - It appends the generated SignatureInfo block to the end of the Name of @p interest.
+   * - It generates a signature for @p interest and appends it to the end of the Name of
+   *   @p interest as a SignatureValue block.
    *
    * @param interest The interest to sign
-   * @param params The signing parameters.
-   * @throw Error signing fails
-   * @throw InvalidSigningInfoError invalid @p params is specified or specified identity, key,
+   * @param params The signing parameters
+   * @throw Error Signing failed
+   * @throw InvalidSigningInfoError Invalid @p params was specified or the specified identity, key,
    *                                or certificate does not exist
    * @see SigningInfo
+   * @see SignatureInfo
    * @see docs/specs/signed-interest.rst
    */
   void
-  sign(Interest& interest, const SigningInfo& params = getDefaultSigningInfo());
+  sign(Interest& interest, const SigningInfo& params = SigningInfo());
 
   /**
    * @brief Sign buffer according to the supplied signing information @p params
+   * @deprecated Sign Interests and Data directly
    *
    * If @p params refers to an identity, the method selects the default key of the identity.
    * If @p params refers to a key or certificate, the method select the corresponding key.
    *
    * @param buffer The buffer to sign
    * @param bufferLength The buffer size
-   * @param params The signing parameters.
-   * @return a SignatureValue TLV block
-   * @throw Error signing fails
+   * @param params The signing parameters
+   * @return SignatureValue TLV block
+   * @throw Error Signing failed
    * @see SigningInfo
+   * @see SignatureInfo
    */
+  [[deprecated("sign Interests and Data directly")]]
   Block
-  sign(const uint8_t* buffer, size_t bufferLength, const SigningInfo& params = getDefaultSigningInfo());
+  sign(const uint8_t* buffer, size_t bufferLength, const SigningInfo& params = SigningInfo());
 
 public: // export & import
   /**
@@ -422,9 +420,9 @@
    * @brief Prepare a SignatureInfo TLV according to signing information and return the signing
    *        key name.
    *
-   * @param params The signing parameters.
-   * @return The signing key name and prepared SignatureInfo.
-   * @throw InvalidSigningInfoError when the requested signing method cannot be satisfied.
+   * @param params The signing parameters
+   * @return The signing key name and prepared SignatureInfo
+   * @throw InvalidSigningInfoError The requested signing method cannot be satisfied
    */
   std::tuple<Name, SignatureInfo>
   prepareSignatureInfo(const SigningInfo& params);
@@ -437,6 +435,10 @@
   sign(const uint8_t* buf, size_t size, const Name& keyName, DigestAlgorithm digestAlgorithm) const;
 
 public:
+  /**
+   * @deprecated Use default constructor for SigningInfo
+   */
+  [[deprecated("use default constructor for SigningInfo")]]
   static const SigningInfo&
   getDefaultSigningInfo();
 
diff --git a/tests/unit/metadata-object.t.cpp b/tests/unit/metadata-object.t.cpp
index 6074c59..364600e 100644
--- a/tests/unit/metadata-object.t.cpp
+++ b/tests/unit/metadata-object.t.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-2020 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -62,7 +62,7 @@
 
   // pass metadata version number
   const Data data1 = metadata1.makeData(metadataFullName.getPrefix(-2), m_keyChain,
-                                        KeyChain::getDefaultSigningInfo(), metadataVerNo);
+                                        security::SigningInfo(), metadataVerNo);
 
   BOOST_CHECK_EQUAL(metadata1.getVersionedName(), versionedContentName);
   BOOST_CHECK_EQUAL(data1.getName(), metadataFullName);
diff --git a/tests/unit/security/signing-helpers.t.cpp b/tests/unit/security/signing-helpers.t.cpp
index f9a51b2..f4493fe 100644
--- a/tests/unit/security/signing-helpers.t.cpp
+++ b/tests/unit/security/signing-helpers.t.cpp
@@ -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-2020 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -60,7 +60,7 @@
 {
   SigningInfo info = signingWithSha256();
   BOOST_CHECK_EQUAL(info.getSignerType(), SigningInfo::SIGNER_TYPE_SHA256);
-  BOOST_CHECK_EQUAL(info.getSignerName(), SigningInfo::getEmptyName());
+  BOOST_CHECK_EQUAL(info.getSignerName(), Name());
 }
 
 BOOST_AUTO_TEST_SUITE_END() // TestSigningHelpers
diff --git a/tests/unit/security/signing-info.t.cpp b/tests/unit/security/signing-info.t.cpp
index e32d5b1..9b59a13 100644
--- a/tests/unit/security/signing-info.t.cpp
+++ b/tests/unit/security/signing-info.t.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-2020 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -42,7 +42,7 @@
   SigningInfo info;
 
   BOOST_CHECK_EQUAL(info.getSignerType(), SigningInfo::SIGNER_TYPE_NULL);
-  BOOST_CHECK_EQUAL(info.getSignerName(), SigningInfo::getEmptyName());
+  BOOST_CHECK_EQUAL(info.getSignerName(), Name());
   BOOST_CHECK_EQUAL(info.getDigestAlgorithm(), DigestAlgorithm::SHA256);
 
   const SignatureInfo& sigInfo = info.getSignatureInfo();
@@ -81,12 +81,12 @@
 
   info.setSha256Signing();
   BOOST_CHECK_EQUAL(info.getSignerType(), SigningInfo::SIGNER_TYPE_SHA256);
-  BOOST_CHECK_EQUAL(info.getSignerName(), SigningInfo::getEmptyName());
+  BOOST_CHECK_EQUAL(info.getSignerName(), Name());
   BOOST_CHECK_EQUAL(info.getDigestAlgorithm(), DigestAlgorithm::SHA256);
 
   SigningInfo infoSha(SigningInfo::SIGNER_TYPE_SHA256);
   BOOST_CHECK_EQUAL(infoSha.getSignerType(), SigningInfo::SIGNER_TYPE_SHA256);
-  BOOST_CHECK_EQUAL(infoSha.getSignerName(), SigningInfo::getEmptyName());
+  BOOST_CHECK_EQUAL(infoSha.getSignerName(), Name());
   BOOST_CHECK_EQUAL(infoSha.getDigestAlgorithm(), DigestAlgorithm::SHA256);
 
   std::string encodedKey("QjM3NEEyNkE3MTQ5MDQzN0FBMDI0RTRGQURENUI0OTdGRE"
@@ -111,7 +111,7 @@
 
   BOOST_CHECK_EQUAL(info1.getSignatureInfo(), si);
 
-  SigningInfo info2(SigningInfo::SIGNER_TYPE_NULL, SigningInfo::getEmptyName(), si);
+  SigningInfo info2(SigningInfo::SIGNER_TYPE_NULL, Name(), si);
   BOOST_CHECK_EQUAL(info2.getSignatureInfo(), si);
 }
 
@@ -119,7 +119,7 @@
 {
   SigningInfo infoDefault("");
   BOOST_CHECK_EQUAL(infoDefault.getSignerType(), SigningInfo::SIGNER_TYPE_NULL);
-  BOOST_CHECK_EQUAL(infoDefault.getSignerName(), SigningInfo::getEmptyName());
+  BOOST_CHECK_EQUAL(infoDefault.getSignerName(), Name());
   BOOST_CHECK_EQUAL(infoDefault.getDigestAlgorithm(), DigestAlgorithm::SHA256);
 
   SigningInfo infoId("id:/my-identity");
@@ -145,7 +145,7 @@
 
   SigningInfo infoSha("id:/localhost/identity/digest-sha256");
   BOOST_CHECK_EQUAL(infoSha.getSignerType(), SigningInfo::SIGNER_TYPE_SHA256);
-  BOOST_CHECK_EQUAL(infoSha.getSignerName(), SigningInfo::getEmptyName());
+  BOOST_CHECK_EQUAL(infoSha.getSignerName(), Name());
   BOOST_CHECK_EQUAL(infoSha.getDigestAlgorithm(), DigestAlgorithm::SHA256);
 }
 
