相关疑难解决方法(0)

将 Crypto++ 对象保存到 std::vector

我想将 Crypto++ 密钥保存到std::vector<uint8_t>. 不幸的是,只有CryptoPP::StringSink, that 需要std::string参考,但没有CryptoPP::VectorSink那个会参考std::vector.

以下代码工作正常

std::string spki;
CryptoPP::StringSink ss(spki);

CryptoPP::RSA::PublicKey publicKey(...);
publicKey.Save(ss);
Run Code Online (Sandbox Code Playgroud)

但我想要这个

std::vector<uint8_t> spki;
CryptoPP::VectorSink vs(spki);

CryptoPP::RSA::PublicKey publicKey(...);
publicKey.Save(vs);
Run Code Online (Sandbox Code Playgroud)

问题

VectorSink不能仅通过使用 typedef 来创建,因为 traits_type::char_typeinside 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 …
Run Code Online (Sandbox Code Playgroud)

c++ stdvector crypto++

2
推荐指数
1
解决办法
680
查看次数

标签 统计

c++ ×1

crypto++ ×1

stdvector ×1