diff --git a/tests/unit-tests/challenge-credential.t.cpp b/tests/unit-tests/challenge-credential.t.cpp
index 3472687..7b101d7 100644
--- a/tests/unit-tests/challenge-credential.t.cpp
+++ b/tests/unit-tests/challenge-credential.t.cpp
@@ -91,7 +91,7 @@
   params.push_back(makeStringBlock(tlv_selected_challenge, "Credential"));
   params.push_back(makeStringBlock(tlv_parameter_key, ChallengeCredential::JSON_CREDENTIAL_CERT));
   params.push_back(makeStringBlock(tlv_parameter_value, credentialStr));
-  params.push_back(makeStringBlock(tlv_parameter_key, ChallengeCredential::JSON_CREDENTIAL_SELF));
+  params.push_back(makeStringBlock(tlv_parameter_key, ChallengeCredential::JSON_PROOF_OF_PRIVATE_KEY));
   params.push_back(makeStringBlock(tlv_parameter_value, selfSignedStr));
   params.encode();
 
diff --git a/tests/unit-tests/challenge-private-key.t.cpp b/tests/unit-tests/challenge-private-key.t.cpp
new file mode 100644
index 0000000..6c26d41
--- /dev/null
+++ b/tests/unit-tests/challenge-private-key.t.cpp
@@ -0,0 +1,75 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/**
+ * Copyright (c) 2017-2020, 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.
+ */
+
+#include "challenge-module/challenge-private-key.hpp"
+#include "test-common.hpp"
+#include <ndn-cxx/security/signing-helpers.hpp>
+#include <ndn-cxx/util/io.hpp>
+
+namespace ndn {
+namespace ndncert {
+namespace tests {
+
+BOOST_FIXTURE_TEST_SUITE(TestChallengeCredential, IdentityManagementFixture)
+
+BOOST_AUTO_TEST_CASE(HandlePrivateKeyChallengeRequest)
+{
+  // create trust anchor
+  ChallengePrivateKey challenge;
+
+  // create certificate request
+  auto identityA = addIdentity(Name("/example"));
+  auto keyA = identityA.getDefaultKey();
+  auto certA = keyA.getDefaultCertificate();
+  CertificateRequest request(Name("/example"), "123", REQUEST_TYPE_REVOKE, STATUS_BEFORE_CHALLENGE, certA);
+
+  security::v2::Certificate privateKeyProof;
+  privateKeyProof.setName(Name(keyA.getName()).append("proof-of-private-key").appendVersion());
+  privateKeyProof.setContent(makeStringBlock(tlv::Content, "123"));
+  m_keyChain.sign(privateKeyProof, signingByKey(keyA));
+
+  std::stringstream ss;
+  io::save<security::v2::Certificate>(privateKeyProof, ss);
+  auto checkCert = *(io::load<security::v2::Certificate>(ss));
+  BOOST_CHECK_EQUAL(checkCert, privateKeyProof);
+  ss.str("");
+  ss.clear();
+
+  io::save<security::v2::Certificate>(privateKeyProof, ss);
+  std::string selfSignedStr = ss.str();
+  ss.str("");
+  ss.clear();
+
+  Block params = makeEmptyBlock(tlv_encrypted_payload);
+  params.push_back(makeStringBlock(tlv_selected_challenge, "Private Key"));
+  params.push_back(makeStringBlock(tlv_parameter_key, ChallengePrivateKey::JSON_PROOF_OF_PRIVATE_KEY));
+  params.push_back(makeStringBlock(tlv_parameter_value, selfSignedStr));
+  params.encode();
+
+  challenge.handleChallengeRequest(params, request);
+  BOOST_CHECK_EQUAL(request.m_status, STATUS_PENDING);
+  BOOST_CHECK_EQUAL(request.m_challengeStatus, CHALLENGE_STATUS_SUCCESS);
+}
+
+BOOST_AUTO_TEST_SUITE_END()
+
+}  // namespace tests
+}  // namespace ndncert
+}  // namespace ndn
