security: remove deprecated HmacFilter

Change-Id: I27e37724efe83e161ce5b012d83f8f6165a9c7d0
diff --git a/ndn-cxx/security/transform.hpp b/ndn-cxx/security/transform.hpp
index c3d41a3..91fda3b 100644
--- a/ndn-cxx/security/transform.hpp
+++ b/ndn-cxx/security/transform.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-2019 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -37,7 +37,6 @@
 
 #include "ndn-cxx/security/transform/block-cipher.hpp"
 #include "ndn-cxx/security/transform/digest-filter.hpp"
-#include "ndn-cxx/security/transform/hmac-filter.hpp"
 #include "ndn-cxx/security/transform/private-key.hpp"
 #include "ndn-cxx/security/transform/public-key.hpp"
 #include "ndn-cxx/security/transform/signer-filter.hpp"
diff --git a/ndn-cxx/security/transform/hmac-filter.cpp b/ndn-cxx/security/transform/hmac-filter.cpp
deleted file mode 100644
index 205b480..0000000
--- a/ndn-cxx/security/transform/hmac-filter.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2013-2019 Regents of the University of California.
- *
- * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
- *
- * ndn-cxx library is free software: you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free Software
- * Foundation, either version 3 of the License, or (at your option) any later version.
- *
- * ndn-cxx library 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 Lesser General Public License for more details.
- *
- * You should have received copies of the GNU General Public License and GNU Lesser
- * General Public License along with ndn-cxx, e.g., in COPYING.md file.  If not, see
- * <http://www.gnu.org/licenses/>.
- *
- * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
- */
-
-#include "ndn-cxx/security/transform/hmac-filter.hpp"
-#include "ndn-cxx/security/impl/openssl-helper.hpp"
-
-#include <boost/lexical_cast.hpp>
-
-namespace ndn {
-namespace security {
-namespace transform {
-
-class HmacFilter::Impl
-{
-public:
-  Impl()
-    : key(nullptr)
-  {
-  }
-
-  ~Impl()
-  {
-    EVP_PKEY_free(key);
-  }
-
-public:
-  detail::EvpMdCtx ctx;
-  EVP_PKEY* key;
-};
-
-
-HmacFilter::HmacFilter(DigestAlgorithm algo, const uint8_t* key, size_t keyLen)
-  : m_impl(make_unique<Impl>())
-{
-  BOOST_ASSERT(key != nullptr);
-  BOOST_ASSERT(keyLen > 0);
-
-  const EVP_MD* md = detail::digestAlgorithmToEvpMd(algo);
-  if (md == nullptr)
-    NDN_THROW(Error(getIndex(), "Unsupported digest algorithm " + boost::lexical_cast<std::string>(algo)));
-
-  m_impl->key = EVP_PKEY_new_mac_key(EVP_PKEY_HMAC, nullptr, key, static_cast<int>(keyLen));
-  if (m_impl->key == nullptr)
-    NDN_THROW(Error(getIndex(), "Failed to create HMAC key"));
-
-  if (EVP_DigestSignInit(m_impl->ctx, nullptr, md, nullptr, m_impl->key) != 1)
-    NDN_THROW(Error(getIndex(), "Failed to initialize HMAC context with " +
-                    boost::lexical_cast<std::string>(algo) + " digest"));
-}
-
-HmacFilter::~HmacFilter() = default;
-
-size_t
-HmacFilter::convert(const uint8_t* buf, size_t size)
-{
-  if (EVP_DigestSignUpdate(m_impl->ctx, buf, size) != 1)
-    NDN_THROW(Error(getIndex(), "Failed to accept more input"));
-
-  return size;
-}
-
-void
-HmacFilter::finalize()
-{
-  auto buffer = make_unique<OBuffer>(EVP_MAX_MD_SIZE);
-  size_t hmacLen = 0;
-
-  if (EVP_DigestSignFinal(m_impl->ctx, buffer->data(), &hmacLen) != 1)
-    NDN_THROW(Error(getIndex(), "Failed to finalize HMAC"));
-
-  buffer->erase(buffer->begin() + hmacLen, buffer->end());
-  setOutputBuffer(std::move(buffer));
-
-  flushAllOutput();
-}
-
-unique_ptr<Transform>
-hmacFilter(DigestAlgorithm algo, const uint8_t* key, size_t keyLen)
-{
-  return make_unique<HmacFilter>(algo, key, keyLen);
-}
-
-} // namespace transform
-} // namespace security
-} // namespace ndn
diff --git a/ndn-cxx/security/transform/hmac-filter.hpp b/ndn-cxx/security/transform/hmac-filter.hpp
deleted file mode 100644
index 2254ba7..0000000
--- a/ndn-cxx/security/transform/hmac-filter.hpp
+++ /dev/null
@@ -1,76 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2013-2019 Regents of the University of California.
- *
- * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
- *
- * ndn-cxx library is free software: you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free Software
- * Foundation, either version 3 of the License, or (at your option) any later version.
- *
- * ndn-cxx library 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 Lesser General Public License for more details.
- *
- * You should have received copies of the GNU General Public License and GNU Lesser
- * General Public License along with ndn-cxx, e.g., in COPYING.md file.  If not, see
- * <http://www.gnu.org/licenses/>.
- *
- * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
- */
-
-#ifndef NDN_CXX_SECURITY_TRANSFORM_HMAC_FILTER_HPP
-#define NDN_CXX_SECURITY_TRANSFORM_HMAC_FILTER_HPP
-
-#include "ndn-cxx/security/transform/transform-base.hpp"
-#include "ndn-cxx/security/security-common.hpp"
-
-namespace ndn {
-namespace security {
-namespace transform {
-
-/**
- * @brief The module to generate HMAC for input data.
- *
- * @deprecated Use SignerFilter and VerifierFilter.
- */
-class HmacFilter : public Transform
-{
-public:
-  /**
-   * @brief Create a module to generate HMAC using digest algorithm @p algo and key @p key
-   * @pre @p key must not be nullptr, and @p size must be a positive integer.
-   */
-  HmacFilter(DigestAlgorithm algo, const uint8_t* key, size_t keyLen);
-
-  ~HmacFilter();
-
-private:
-  /**
-   * @brief Write data @p buf into HMAC signer
-   *
-   * @return The number of bytes that are actually accepted
-   */
-  size_t
-  convert(const uint8_t* buf, size_t size) final;
-
-  /**
-   * @brief Finalize HMAC calculation and write the HMAC into next module.
-   */
-  void
-  finalize() final;
-
-private:
-  class Impl;
-  const unique_ptr<Impl> m_impl;
-};
-
-[[deprecated("use signerFilter and verifierFilter")]]
-unique_ptr<Transform>
-hmacFilter(DigestAlgorithm algo, const uint8_t* key, size_t keyLen);
-
-} // namespace transform
-} // namespace security
-} // namespace ndn
-
-#endif // NDN_CXX_SECURITY_TRANSFORM_HMAC_FILTER_HPP
diff --git a/tests/unit/security/transform.t.cpp b/tests/unit/security/transform.t.cpp
index 07958cd..901839b 100644
--- a/tests/unit/security/transform.t.cpp
+++ b/tests/unit/security/transform.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-2019 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -65,9 +65,6 @@
   transform::DigestFilter* digestFilter = nullptr;
   BOOST_CHECK(digestFilter == nullptr);
 
-  transform::HmacFilter* hmacFilter = nullptr;
-  BOOST_CHECK(hmacFilter == nullptr);
-
   transform::BlockCipher* blockCipher = nullptr;
   BOOST_CHECK(blockCipher == nullptr);
 
diff --git a/tests/unit/security/transform/hmac-filter.t.cpp b/tests/unit/security/transform/hmac-filter.t.cpp
deleted file mode 100644
index 650c024..0000000
--- a/tests/unit/security/transform/hmac-filter.t.cpp
+++ /dev/null
@@ -1,111 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2013-2018 Regents of the University of California.
- *
- * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
- *
- * ndn-cxx library is free software: you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free Software
- * Foundation, either version 3 of the License, or (at your option) any later version.
- *
- * ndn-cxx library 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 Lesser General Public License for more details.
- *
- * You should have received copies of the GNU General Public License and GNU Lesser
- * General Public License along with ndn-cxx, e.g., in COPYING.md file.  If not, see
- * <http://www.gnu.org/licenses/>.
- *
- * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
- */
-
-#include "ndn-cxx/security/transform/hmac-filter.hpp"
-
-#include "ndn-cxx/encoding/buffer-stream.hpp"
-#include "ndn-cxx/security/transform/buffer-source.hpp"
-#include "ndn-cxx/security/transform/step-source.hpp"
-#include "ndn-cxx/security/transform/stream-sink.hpp"
-
-#include "tests/boost-test.hpp"
-
-namespace ndn {
-namespace security {
-namespace transform {
-namespace tests {
-
-BOOST_AUTO_TEST_SUITE(Security)
-BOOST_AUTO_TEST_SUITE(Transform)
-BOOST_AUTO_TEST_SUITE(TestHmacFilter)
-
-static const uint8_t key[] = {
-  0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
-  0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f
-};
-static const uint8_t data[] = {
-  0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
-  0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f
-};
-static const uint8_t digest[] = {
-  0x9f, 0x3a, 0xa2, 0x88, 0x26, 0xb3, 0x74, 0x85,
-  0xca, 0x05, 0x01, 0x4d, 0x71, 0x42, 0xb3, 0xea,
-  0x3f, 0xfb, 0xda, 0x5a, 0x35, 0xbf, 0xd2, 0x0f,
-  0x2f, 0x9c, 0x8f, 0xcc, 0x6d, 0x30, 0x48, 0x54
-};
-
-BOOST_AUTO_TEST_CASE(Basic)
-{
-  OBufferStream os;
-  bufferSource(data, sizeof(data)) >> hmacFilter(DigestAlgorithm::SHA256, key, sizeof(key)) >> streamSink(os);
-
-  ConstBufferPtr buf = os.buf();
-  BOOST_CHECK_EQUAL_COLLECTIONS(digest, digest + sizeof(digest), buf->begin(), buf->end());
-}
-
-BOOST_AUTO_TEST_CASE(StepByStep)
-{
-  OBufferStream os;
-  StepSource source;
-  source >> hmacFilter(DigestAlgorithm::SHA256, key, sizeof(key)) >> streamSink(os);
-  source.write(data, 1);
-  source.write(data + 1, 2);
-  source.write(data + 3, 3);
-  source.write(data + 6, 4);
-  source.write(data + 10, 5);
-  source.write(data + 15, 1);
-  source.end();
-
-  ConstBufferPtr buf = os.buf();
-  BOOST_CHECK_EQUAL_COLLECTIONS(digest, digest + sizeof(digest), buf->begin(), buf->end());
-}
-
-BOOST_AUTO_TEST_CASE(EmptyInput)
-{
-  const uint8_t digest[] = {
-    0x07, 0xEF, 0xF8, 0xB3, 0x26, 0xB7, 0x79, 0x8C,
-    0x9C, 0xCF, 0xCB, 0xDB, 0xE5, 0x79, 0x48, 0x9A,
-    0xC7, 0x85, 0xA7, 0x99, 0x5A, 0x04, 0x61, 0x8B,
-    0x1A, 0x28, 0x13, 0xC2, 0x67, 0x44, 0x77, 0x7D
-  };
-
-  OBufferStream os;
-  StepSource source;
-  source >> hmacFilter(DigestAlgorithm::SHA256, key, sizeof(key)) >> streamSink(os);
-  source.end();
-
-  ConstBufferPtr buf = os.buf();
-  BOOST_CHECK_EQUAL_COLLECTIONS(digest, digest + sizeof(digest), buf->begin(), buf->end());
-}
-
-BOOST_AUTO_TEST_CASE(InvalidAlgorithm)
-{
-  BOOST_CHECK_THROW(HmacFilter(DigestAlgorithm::NONE, key, sizeof(key)), Error);
-}
-
-BOOST_AUTO_TEST_SUITE_END() // TestHmacFilter
-BOOST_AUTO_TEST_SUITE_END() // Transform
-BOOST_AUTO_TEST_SUITE_END() // Security
-
-} // namespace tests
-} // namespace transform
-} // namespace security
-} // namespace ndn