23 #include "../../encoding/buffer.hpp"
24 #include "../detail/openssl.hpp"
43 BIO_set_mem_eof_return(
m_source, -1);
64 if (!expectNewlineEvery64Bytes)
65 BIO_set_flags(m_impl->m_base64, BIO_FLAGS_BASE64_NO_NL);
69 Base64Decode::preTransform()
81 Base64Decode::convert(
const uint8_t* buf,
size_t size)
83 int wLen = BIO_write(m_impl->m_source, buf, size);
86 if (!BIO_should_retry(m_impl->m_source)) {
88 BOOST_THROW_EXCEPTION(Error(
getIndex(),
"Failed to accept more input"));
98 Base64Decode::finalize()
100 BIO_set_mem_eof_return(m_impl->m_source, 0);
112 Base64Decode::fillOutputBuffer()
117 int rLen = BIO_read(m_impl->m_base64, &(*buffer)[0], buffer->size());
121 if (static_cast<size_t>(rLen) < buffer->size())
122 buffer->erase(buffer->begin() + rLen, buffer->end());
127 unique_ptr<Transform>
130 return make_unique<Base64Decode>(expectNewlineEvery64Bytes);
Copyright (c) 2013-2016 Regents of the University of California.