diff --git a/src/security/v1/key-chain.cpp b/src/security/v1/key-chain.cpp
index 1916532..9efcb4a 100644
--- a/src/security/v1/key-chain.cpp
+++ b/src/security/v1/key-chain.cpp
@@ -1,5 +1,5 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
+/*
  * Copyright (c) 2013-2017 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
@@ -24,8 +24,8 @@
 #include "key-chain.hpp"
 #include "../signing-helpers.hpp"
 
-#include "../../util/random.hpp"
 #include "../../util/config-file.hpp"
+#include "../../util/digest.hpp"
 
 #include "sec-public-info-sqlite3.hpp"
 
@@ -755,7 +755,7 @@
                    const Name& keyName, DigestAlgorithm digestAlgorithm) const
 {
   if (keyName == SigningInfo::getDigestSha256Identity())
-    return Block(tlv::SignatureValue, crypto::computeSha256Digest(buf, size));
+    return Block(tlv::SignatureValue, util::Sha256::computeDigest(buf, size));
 
   return m_tpm->signInTpm(buf, size, keyName, digestAlgorithm);
 }
@@ -790,7 +790,7 @@
     .append(sig.getInfo());                                        // signatureInfo
 
   Block sigValue(tlv::SignatureValue,
-                 crypto::computeSha256Digest(signedName.wireEncode().value(),
+                 util::Sha256::computeDigest(signedName.wireEncode().value(),
                                              signedName.wireEncode().value_size()));
 
   sigValue.encode();
diff --git a/src/security/v1/key-chain.hpp b/src/security/v1/key-chain.hpp
index 65821fa..3a84a47 100644
--- a/src/security/v1/key-chain.hpp
+++ b/src/security/v1/key-chain.hpp
@@ -1,5 +1,5 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
+/*
  * Copyright (c) 2013-2017 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
@@ -32,9 +32,7 @@
 #include "../signature-sha256-with-ecdsa.hpp"
 #include "../digest-sha256.hpp"
 #include "../signing-info.hpp"
-
 #include "../../interest.hpp"
-#include "../../util/crypto.hpp"
 #include "../../util/random.hpp"
 #include <initializer_list>
 
@@ -132,7 +130,7 @@
   /**
    * @brief KeyChain constructor
    *
-   * @sa  http://redmine.named-data.net/issues/2260
+   * @sa  https://redmine.named-data.net/issues/2260
    *
    * @param pibLocator PIB locator
    * @param tpmLocator TPM locator
diff --git a/src/security/v1/public-key.cpp b/src/security/v1/public-key.cpp
index cef7295..7ada249 100644
--- a/src/security/v1/public-key.cpp
+++ b/src/security/v1/public-key.cpp
@@ -1,5 +1,5 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
+/*
  * Copyright (c) 2013-2017 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
@@ -25,7 +25,7 @@
 #include "public-key.hpp"
 
 #include "../../encoding/oid.hpp"
-#include "../../util/crypto.hpp"
+#include "../../util/digest.hpp"
 #include "cryptopp.hpp"
 
 namespace ndn {
@@ -53,7 +53,7 @@
   if (m_digest.hasWire())
     return m_digest;
   else {
-    m_digest = Block(tlv::KeyDigest, crypto::computeSha256Digest(m_key.buf(), m_key.size()));
+    m_digest = Block(tlv::KeyDigest, util::Sha256::computeDigest(m_key.buf(), m_key.size()));
     m_digest.encode();
     return m_digest;
   }
@@ -119,7 +119,7 @@
 
       m_key.assign(out.begin(), out.end());
     }
-  catch (CryptoPP::BERDecodeErr& err)
+  catch (const CryptoPP::BERDecodeErr& err)
     {
       m_type = KeyType::NONE;
       BOOST_THROW_EXCEPTION(Error("PublicKey decoding error"));
