diff --git a/src/security/security-common.hpp b/src/security/security-common.hpp
index 8594581..542e169 100644
--- a/src/security/security-common.hpp
+++ b/src/security/security-common.hpp
@@ -33,8 +33,16 @@
 const ssize_t POS_RANDOM_VAL = -3;
 const ssize_t POS_TIMESTAMP = -4;
 
+/** \brief minimal number of components for Command Interest
+ *  \sa https://redmine.named-data.net/projects/ndn-cxx/wiki/CommandInterest
+ */
 const size_t MIN_LENGTH = 4;
 
+/** \brief minimal number of components for Signed Interest
+ *  \sa https://redmine.named-data.net/projects/ndn-cxx/wiki/SignedInterest
+ */
+const size_t MIN_LENGTH_SIG_ONLY = 2;
+
 } // namespace signed_interest
 
 enum class KeyType {
diff --git a/src/security/validator.cpp b/src/security/validator.cpp
index 488d0d7..1ef7a05 100644
--- a/src/security/validator.cpp
+++ b/src/security/validator.cpp
@@ -22,8 +22,6 @@
  * @author Jeff Thompson <jefft0@remap.ucla.edu>
  */
 
-#include "common.hpp"
-
 #include "validator.hpp"
 #include "../util/crypto.hpp"
 
@@ -115,27 +113,27 @@
 bool
 Validator::verifySignature(const Interest& interest, const PublicKey& key)
 {
-  const Name& interestName = interest.getName();
+  const Name& name = interest.getName();
 
-  if (interestName.size() < 2)
+  if (name.size() < signed_interest::MIN_LENGTH_SIG_ONLY)
     return false;
 
+  Signature sig;
   try {
-    const Block& nameBlock = interestName.wireEncode();
-
-    Signature sig(interestName[signed_interest::POS_SIG_INFO].blockFromValue(),
-                  interestName[signed_interest::POS_SIG_VALUE].blockFromValue());
-
-    if (!sig.hasKeyLocator())
-      return false;
-
-    return verifySignature(nameBlock.value(),
-                           nameBlock.value_size() - interestName[signed_interest::POS_SIG_VALUE].size(),
-                           sig, key);
+    sig.setInfo(name[signed_interest::POS_SIG_INFO].blockFromValue());
+    sig.setValue(name[signed_interest::POS_SIG_VALUE].blockFromValue());
   }
-  catch (const Block::Error& e) {
+  catch (const tlv::Error&) {
     return false;
   }
+
+  if (!sig.hasKeyLocator())
+    return false;
+
+  const Block& nameWire = name.wireEncode();
+  return verifySignature(nameWire.value(),
+                         nameWire.value_size() - name[signed_interest::POS_SIG_VALUE].size(),
+                         sig, key);
 }
 
 bool
diff --git a/src/security/validator.hpp b/src/security/validator.hpp
index bf8e1ca..1f06c83 100644
--- a/src/security/validator.hpp
+++ b/src/security/validator.hpp
@@ -25,9 +25,6 @@
 #ifndef NDN_SECURITY_VALIDATOR_HPP
 #define NDN_SECURITY_VALIDATOR_HPP
 
-#include "../common.hpp"
-
-#include "../data.hpp"
 #include "../face.hpp"
 #include "public-key.hpp"
 #include "signature-sha256-with-rsa.hpp"
@@ -39,9 +36,7 @@
 namespace ndn {
 
 /**
- * @brief Validator is one of the main classes of the security library.
- *
- * The Validator class provides the interfaces for packet validation.
+ * @brief provides the interfaces for packet validation.
  */
 class Validator
 {
