我在 botan 1.10.9 中有这个奇怪的错误。当我想存储私钥字节向量和公钥字节向量时,我得到一个 std::bad_alloc 错误。难道不可能从植物的 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());
任何想法为什么会发生这种情况?奇怪的是,如果我删除了其中一个向量初始化,那么它有时会起作用,但大多数时候我都会崩溃。