Botan 1.10.9 SecureVector для std::vector bad_alloc

У меня есть эта странная ошибка в ботане 1.10.9. Когда я хочу сохранить байтовый вектор закрытого ключа и байтовый вектор открытого ключа, я получаю ошибку std:: bad_alloc. Может ли быть так, что невозможно инициализировать std:: vector из SecureVector из ботана?

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());

Есть идеи, почему это может происходить? Странно то, что если я удаляю одну из инициализаций векторов, то она работает, но в большинстве случаев происходит сбой.

0 ответов

Немного староват ответа, но для Botan функция разблокировки превращается в Botan::secure_vector<T> в std::vector<T>.

Другие вопросы по тегам