2
Я хочу сохранить ключи Crypto ++ до std::vector<uint8_t>
. К сожалению, есть только CryptoPP::StringSink
, который принимает std::string
ссылку, но не CryptoPP::VectorSink
, которая будет ссылаться на std::vector
.Сохранение объектов Crypto ++ для std :: vector
следующий код работает отлично
std::string spki;
CryptoPP::StringSink ss(spki);
CryptoPP::RSA::PublicKey publicKey(...);
publicKey.Save(ss);
Но я хочу эту
std::vector<uint8_t> spki;
CryptoPP::VectorSink vs(spki);
CryptoPP::RSA::PublicKey publicKey(...);
publicKey.Save(vs);
Проблема
VectorSink
не может быть создан только с помощью ЬурейеЕ из-за traits_type::char_type
внутри StringSinkTemplate
:
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);
Как я могу создать VectorSink
?
Вы можете объяснить, почему * * Вы хотите использовать вектор вместо строки? В противном случае этот вопрос является лишь примером [проблемы XY] (http://xyproblem.info/). –
Это красиво и чисто. Вы можете добавить его на страницу [Патч] (http://www.cryptopp.com/wiki/Category:Patch) в вики Crypto ++. Чтобы претендовать на эту страницу, вы должны назначить авторские права на проект Crypto ++. Вот пример того, как это может выглядеть: [Написано и помещено в Public Domain by Roman. Авторское право назначено для Crypto ++ Project] (http://github.com/weidai11/cryptopp/blob/master/blake2.cpp). – jww
Если вы не хотите назначать авторские права, то это нормально. Проект требует, чтобы авторские права (1) гарантировали, что пользователи получают единый лицензионный термин (Public Domain или Boost), и (2) Вэй Дай имеет необходимый контроль для соблюдения экспортных правил. Вэй копирует библиотеку в целом из-за экспортных правил и средств контроля. – jww