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