Botan 1.10.9 SecureVector到std :: vector bad_alloc

时间:2015-03-31 20:52:26

标签: c++11 vector botan

我在botan 1.10.9中有这个奇怪的错误。 当我想存储私钥字节向量和公共密钥字节向量时,我得到一个std :: bad_alloc错误。可能是不可能从botan的SecureVector初始化std :: vector吗?

Botan::LibraryInitializer init;

Botan::AutoSeeded_RNG rng;
rng.reseed(10096);

Botan::RSA_PrivateKey rsaPrivate(rng, 1024);

std::vector<unsigned char> privateArray(rsaPrivate.pkcs8_private_key().begin(), rsaPrivate.pkcs8_private_key().end());
std::vector<unsigned char> publicArray(rsaPrivate.x509_subject_public_key().begin(), rsaPrivate.x509_subject_public_key().end());

如果我对键进行编码,则操作正常:

Botan::SecureVector<Botan::byte> publicBytes  = std::move(Botan::X509::BER_encode(rsaPrivate));
Botan::SecureVector<Botan::byte> privateBytes = std::move(Botan::PKCS8::BER_encode(rsaPrivate, rng, info.passphrase()));

std::vector<unsigned char> publicArray(publicBytes.begin(), publicBytes.end());
std::vector<unsigned char> privateArray(privateBytes.begin(), privateBytes.end());

为什么会发生这种情况的任何想法?奇怪的是,如果我删除其中一个向量初始化,soooooometimes它可以工作,但大多数时间我得到崩溃。

1 个答案:

答案 0 :(得分:0)

答复有点陈旧,但对于Botan,unlock函数将Botan::secure_vector<T>变成了std::vector<T>