I believe hex.h should be modifed as follows (it does not pass the
terminator to IsolatedInitialize()):
----------- current --------
//! Converts given data to base 16
class CRYPTOPP_DLL HexEncoder : public SimpleProxyFilter
{
public:
HexEncoder(BufferedTransformation *attachment = NULL, bool uppercase =
true, int outputGroupSize = 0, const std::string &separator = ":", const
std::string &terminator = "")
: SimpleProxyFilter(new BaseN_Encoder(new Grouper), attachment)
{
IsolatedInitialize(MakeParameters(Name::Uppercase(),
uppercase)(Name::GroupSize(), outputGroupSize)(Name::Separator(),
ConstByteArrayParameter(separator)));
}
void IsolatedInitialize(const NameValuePairs ¶meters);
};
----------- fixed -----------
//! Converts given data to base 16
class CRYPTOPP_DLL HexEncoder : public SimpleProxyFilter
{
public:
HexEncoder(BufferedTransformation *attachment = NULL, bool uppercase =
true, int outputGroupSize = 0, const std::string &separator = ":", const
std::string &terminator = "")
: SimpleProxyFilter(new BaseN_Encoder(new Grouper), attachment)
{
IsolatedInitialize(MakeParameters(Name::Uppercase(), uppercase)
(Name::GroupSize(),
outputGroupSize)
(Name::Separator(),
ConstByteArrayParameter(separator))
(Name::Terminator(),
ConstByteArrayParameter(terminator)));
}
void IsolatedInitialize(const NameValuePairs ¶meters);
};