Salvando objetos Crypto ++ em std :: vector
Quero salvar chaves Crypto ++ emstd::vector<uint8_t>
. Infelizmente existe apenasCryptoPP::StringSink
, isso levastd::string
referência mas nãoCryptoPP::VectorSink
que levaria uma referência astd::vector
.
O código a seguir funciona bem
std::string spki;
CryptoPP::StringSink ss(spki);
CryptoPP::RSA::PublicKey publicKey(...);
publicKey.Save(ss);
Mas eu quero isso
std::vector<uint8_t> spki;
CryptoPP::VectorSink vs(spki);
CryptoPP::RSA::PublicKey publicKey(...);
publicKey.Save(vs);
O problema
VectorSink
não pode ser criado apenas usando um typedef por causa detraits_type::char_type
dentroStringSinkTemplate
:
using CryptoPP::StringSinkTemplate;
typedef StringSinkTemplate< std::vector<byte> > VectorSink;
In file included from cryptopp-test.cpp:65:
In file included from /usr/local/include/cryptopp/files.h:5:
/usr/local/include/cryptopp/filters.h:590:22: error: no member named
'traits_type' in 'std::vector<unsigned char, std::allocator<unsigned char>
>'
typedef typename T::traits_type::char_type char_type;
~~~^
cryptopp-test.cpp:243:20: note: in instantiation of template class
'CryptoPP::StringSinkTemplate<std::vector<unsigned char,
std::allocator<unsigned char> > >' requested here
VectorSink vs(spki);
Como posso criar umVectorSink
?