24 #include "ndn-cxx/security/impl/openssl-helper.hpp" 
   26 #include <boost/lexical_cast.hpp> 
   32 class SignerFilter::Impl
 
   40   : m_impl(make_unique<Impl>())
 
   42   const EVP_MD* md = detail::digestAlgorithmToEvpMd(algo);
 
   45                     boost::lexical_cast<std::string>(algo)));
 
   47   if (EVP_DigestSignInit(m_impl->ctx, 
nullptr, md, 
nullptr,
 
   48                          reinterpret_cast<EVP_PKEY*
>(key.getEvpPkey())) != 1)
 
   50                     boost::lexical_cast<std::string>(algo) + 
" digest and " +
 
   51                     boost::lexical_cast<std::string>(key.
getKeyType()) + 
" key"));
 
   57 SignerFilter::convert(span<const uint8_t> buf)
 
   59   if (EVP_DigestSignUpdate(m_impl->ctx, buf.data(), buf.size()) != 1)
 
   66 SignerFilter::finalize()
 
   69   if (EVP_DigestSignFinal(m_impl->ctx, 
nullptr, &sigLen) != 1)
 
   72   auto buffer = make_unique<OBuffer>(sigLen);
 
   73   if (EVP_DigestSignFinal(m_impl->ctx, buffer->data(), &sigLen) != 1)
 
   76   buffer->erase(buffer->begin() + sigLen, buffer->end());
 
   85   return make_unique<SignerFilter>(algo, key);