Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 309903 Details for
Bug 380257
>=dev-vcs/monotone-1.0-r1 tests fail with >=dev-libs/botan-1.10
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Upstream merge f4feb3fd
monotone-1.0-botan-1.10.patch (text/plain), 25.67 KB, created by
Martin von Gagern
on 2012-04-24 08:37:24 UTC
(
hide
)
Description:
Upstream merge f4feb3fd
Filename:
MIME Type:
Creator:
Martin von Gagern
Created:
2012-04-24 08:37:24 UTC
Size:
25.67 KB
patch
obsolete
>Make monotone work with botan 1.10. > >Patch generated using the following command: >mtn diff -r 972ee5c3eab3fb5ba0b80684193293d18438a9d0 \ > -r f4feb3fdc68e4f955909450b2dcb3ff9312dbc9e > >Authors: Martin von Gagern, Markus Wanner > >References: >https://bugs.gentoo.org/380257 >https://code.monotone.ca/p/monotone/issues/182/ >https://code.monotone.ca/p/monotone/source/commit/f4feb3fd > >============================================================ >--- src/database.cc 4c259f963c440fc95564dfec99b2f832f0bad643 >+++ src/database.cc 87efeeff2d3263ba98af684a4022f1897434ed2d >@@ -3425,9 +3425,8 @@ database::encrypt_rsa(key_id const & pub > rsa_pub_key pub; > get_key(pub_id, pub); > >- SecureVector<Botan::byte> pub_block; >- pub_block.set(reinterpret_cast<Botan::byte const *>(pub().data()), >- pub().size()); >+ SecureVector<Botan::byte> pub_block >+ (reinterpret_cast<Botan::byte const *>(pub().data()), pub().size()); > > shared_ptr<X509_PublicKey> x509_key(Botan::X509::load_key(pub_block)); > shared_ptr<RSA_PublicKey> pub_key >@@ -3471,14 +3470,13 @@ database::check_signature(key_id const & > else > { > rsa_pub_key pub; >- SecureVector<Botan::byte> pub_block; > > if (!public_key_exists(id)) > return cert_unknown; > > get_key(id, pub); >- pub_block.set(reinterpret_cast<Botan::byte const *>(pub().data()), >- pub().size()); >+ SecureVector<Botan::byte> pub_block >+ (reinterpret_cast<Botan::byte const *>(pub().data()), pub().size()); > > L(FL("building verifier for %d-byte pub key") % pub_block.size()); > shared_ptr<X509_PublicKey> x509_key(Botan::X509::load_key(pub_block)); >============================================================ >--- src/gzip.cc e7c19bee910e3d421fd073933810ec52092b1d9b >+++ src/gzip.cc 9da41f6820cdf39707b22c716e3682e0fa0fd745 >@@ -110,7 +110,7 @@ Gzip_Compression::Gzip_Compression(u32bi > if(deflateInit2(&(zlib->stream), level, Z_DEFLATED, -15, 8, Z_DEFAULT_STRATEGY) != Z_OK) > { > delete zlib; zlib = 0; >- throw Exception("Gzip_Compression: Memory allocation error"); >+ throw Memory_Exhaustion(); > } > } > >@@ -137,7 +137,7 @@ void Gzip_Compression::start_msg() > /************************************************* > * Compress Input with Gzip * > *************************************************/ >-void Gzip_Compression::write(const byte input[], u32bit length) >+void Gzip_Compression::write(const byte input[], filter_length_t length) > { > > count += length; >@@ -152,7 +152,7 @@ void Gzip_Compression::write(const byte > zlib->stream.avail_out = buffer.size(); > int rc = deflate(&(zlib->stream), Z_NO_FLUSH); > if (rc != Z_OK && rc != Z_STREAM_END) >- throw Exception("Internal error in Gzip_Compression deflate."); >+ throw Invalid_State("Internal error in Gzip_Compression deflate."); > send(buffer.begin(), buffer.size() - zlib->stream.avail_out); > } > } >@@ -172,7 +172,7 @@ void Gzip_Compression::end_msg() > zlib->stream.avail_out = buffer.size(); > rc = deflate(&(zlib->stream), Z_FINISH); > if (rc != Z_OK && rc != Z_STREAM_END) >- throw Exception("Internal error in Gzip_Compression finishing deflate."); >+ throw Invalid_State("Internal error in Gzip_Compression finishing deflate."); > send(buffer.begin(), buffer.size() - zlib->stream.avail_out); > } > >@@ -228,7 +228,7 @@ Gzip_Decompression::Gzip_Decompression() > no_writes(true), pipe(new Hash_Filter("CRC32")), footer(0) > { > if (DEFAULT_BUFFERSIZE < sizeof(GZIP::GZIP_HEADER)) >- throw Exception("DEFAULT_BUFFERSIZE is too small"); >+ throw Decoding_Error("DEFAULT_BUFFERSIZE is too small"); > > zlib = new Zlib_Stream; > >@@ -237,7 +237,7 @@ Gzip_Decompression::Gzip_Decompression() > if(inflateInit2(&(zlib->stream), -15) != Z_OK) > { > delete zlib; zlib = 0; >- throw Exception("Gzip_Decompression: Memory allocation error"); >+ throw Memory_Exhaustion(); > } > } > >@@ -256,7 +256,7 @@ void Gzip_Decompression::start_msg() > void Gzip_Decompression::start_msg() > { > if (!no_writes) >- throw Exception("Gzip_Decompression: start_msg after already writing"); >+ throw Decoding_Error("Gzip_Decompression: start_msg after already writing"); > > pipe.start_msg(); > datacount = 0; >@@ -267,7 +267,7 @@ void Gzip_Decompression::start_msg() > /************************************************* > * Decompress Input with Gzip * > *************************************************/ >-void Gzip_Decompression::write(const byte input[], u32bit length) >+void Gzip_Decompression::write(const byte input[], filter_length_t length) > { > if(length) no_writes = false; > >@@ -277,15 +277,16 @@ void Gzip_Decompression::write(const byt > u32bit eat_len = eat_footer(input, length); > input += eat_len; > length -= eat_len; >- if (length == 0) >- return; > } > >+ if (length == 0) >+ return; >+ > // Check the gzip header > if (pos < sizeof(GZIP::GZIP_HEADER)) > { >- u32bit len = std::min((u32bit)sizeof(GZIP::GZIP_HEADER)-pos, length); >- u32bit cmplen = len; >+ filter_length_t len = std::min((filter_length_t)sizeof(GZIP::GZIP_HEADER)-pos, length); >+ filter_length_t cmplen = len; > // The last byte is the OS flag - we don't care about that > if (pos + len - 1 >= GZIP::HEADER_POS_OS) > cmplen--; >@@ -317,8 +318,8 @@ void Gzip_Decompression::write(const byt > if(rc == Z_NEED_DICT) > throw Decoding_Error("Gzip_Decompression: Need preset dictionary"); > if(rc == Z_MEM_ERROR) >- throw Exception("Gzip_Decompression: Memory allocation error"); >- throw Exception("Gzip_Decompression: Unknown decompress error"); >+ throw Memory_Exhaustion(); >+ throw Decoding_Error("Gzip_Decompression: Unknown decompress error"); > } > send(buffer.begin(), buffer.size() - zlib->stream.avail_out); > pipe.write(buffer.begin(), buffer.size() - zlib->stream.avail_out); >@@ -346,8 +347,14 @@ u32bit Gzip_Decompression::eat_footer(co > if (footer.size() >= GZIP::FOOTER_LENGTH) > throw Decoding_Error("Gzip_Decompression: Data integrity error in footer"); > >+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11) >+ size_t eat_len = std::min(GZIP::FOOTER_LENGTH-footer.size(), >+ static_cast<size_t>(length)); >+ footer += std::make_pair(input, eat_len); >+#else > u32bit eat_len = std::min(GZIP::FOOTER_LENGTH-footer.size(), length); > footer.append(input, eat_len); >+#endif > > if (footer.size() == GZIP::FOOTER_LENGTH) > { >@@ -364,7 +371,7 @@ void Gzip_Decompression::check_footer() > void Gzip_Decompression::check_footer() > { > if (footer.size() != GZIP::FOOTER_LENGTH) >- throw Exception("Gzip_Decompression: Error finalizing decompression"); >+ throw Decoding_Error("Gzip_Decompression: Error finalizing decompression"); > > pipe.end_msg(); > >@@ -377,7 +384,12 @@ void Gzip_Decompression::check_footer() > for (int i = 0; i < 4; i++) > buf[3-i] = tmpbuf[i]; > >+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11) >+ tmpbuf.resize(4); >+ tmpbuf.copy(footer.begin(), 4); >+#else > tmpbuf.set(footer.begin(), 4); >+#endif > if (buf != tmpbuf) > throw Decoding_Error("Gzip_Decompression: Data integrity error - CRC32 error"); > >@@ -400,7 +412,7 @@ void Gzip_Decompression::end_msg() > // read, clear() will reset no_writes > if(no_writes) return; > >- throw Exception("Gzip_Decompression: didn't find footer"); >+ throw Decoding_Error("Gzip_Decompression: didn't find footer"); > > } > >@@ -412,7 +424,11 @@ void Gzip_Decompression::clear() > no_writes = true; > inflateReset(&(zlib->stream)); > >+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11) >+ footer.clear(); >+#else > footer.destroy(); >+#endif > pos = 0; > datacount = 0; > } >============================================================ >--- src/gzip.hh 649dfc0b250954f39c0f73870f8bec3f32f7fa43 >+++ src/gzip.hh aff9da63bb22366bccf69c2d75ee7790406d2455 >@@ -7,11 +7,18 @@ > #ifndef BOTAN_EXT_GZIP_H__ > #define BOTAN_EXT_GZIP_H__ > >+#include <botan/version.h> > #include <botan/filter.h> > #include <botan/pipe.h> > > namespace Botan { > >+#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,9,4) >+// Only 1.9.4 and newer export the Memory_Exception. Give this gzip >+// implementation something compatible to work with. >+typedef std::bad_alloc Memory_Exhaustion; >+#endif >+ > namespace GZIP { > > /* A basic header - we only need to set the IDs and compression method */ >@@ -30,13 +37,19 @@ namespace GZIP { > > } > >+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11) >+typedef size_t filter_length_t; >+#else >+typedef u32bit filter_length_t; >+#endif >+ > /************************************************* > * Gzip Compression Filter * > *************************************************/ > class Gzip_Compression : public Filter > { > public: >- void write(const byte input[], u32bit length); >+ void write(const byte input[], filter_length_t length); > void start_msg(); > void end_msg(); > std::string name() const { return "Gzip_Compression"; } >@@ -60,7 +73,7 @@ class Gzip_Decompression : public Filter > class Gzip_Decompression : public Filter > { > public: >- void write(const byte input[], u32bit length); >+ void write(const byte input[], filter_length_t length); > void start_msg(); > void end_msg(); > std::string name() const { return "Gzip_Decompression"; } >============================================================ >--- src/key_packet.cc d1306df89dd684badac02c03744cd446381c07d3 >+++ src/key_packet.cc c97262d161b23c9640972188979669b3e95afe7b >@@ -106,8 +106,8 @@ namespace > void validate_public_key_data(string const & name, string const & keydata) const > { > string decoded = decode_base64_as<string>(keydata, origin::user); >- Botan::SecureVector<Botan::byte> key_block; >- key_block.set(reinterpret_cast<Botan::byte const *>(decoded.c_str()), decoded.size()); >+ Botan::SecureVector<Botan::byte> key_block >+ (reinterpret_cast<Botan::byte const *>(decoded.c_str()), decoded.size()); > try > { > Botan::X509::load_key(key_block); >============================================================ >--- src/key_store.cc 64c4c4bed1fadc26b51207b9f61343f9dd7d3c6e >+++ src/key_store.cc b7859345f7c665914d16357409bdff24a48b7996 >@@ -572,13 +572,21 @@ key_store_state::decrypt_private_key(key > try // with empty passphrase > { > Botan::DataSource_Memory ds(kp.priv()); >-#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,7,7) >+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11) >+ pkcs8_key.reset(Botan::PKCS8::load_key(ds, lazy_rng::get(), Dummy_UI())); >+#elif BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,7,7) > pkcs8_key.reset(Botan::PKCS8::load_key(ds, lazy_rng::get(), "")); > #else > pkcs8_key.reset(Botan::PKCS8::load_key(ds, "")); > #endif > } >+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11) >+ catch (Passphrase_Required & e) >+#elif BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,4) >+ catch (Botan::Invalid_Argument & e) >+#else > catch (Botan::Exception & e) >+#endif > { > L(FL("failed to load key with no passphrase: %s") % e.what()); > >@@ -605,13 +613,18 @@ key_store_state::decrypt_private_key(key > { > Botan::DataSource_Memory ds(kp.priv()); > #if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,7,7) >- pkcs8_key.reset(Botan::PKCS8::load_key(ds, lazy_rng::get(), phrase())); >+ pkcs8_key.reset(Botan::PKCS8::load_key(ds, lazy_rng::get(), >+ phrase())); > #else > pkcs8_key.reset(Botan::PKCS8::load_key(ds, phrase())); > #endif > break; > } >+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,4) >+ catch (Botan::Invalid_Argument) >+#else > catch (Botan::Exception & e) >+#endif > { > cycles++; > L(FL("decrypt_private_key: failure %d to load encrypted key: %s") >@@ -822,10 +835,14 @@ key_store::decrypt_rsa(key_id const & id > plaintext = string(reinterpret_cast<char const*>(plain.begin()), > plain.size()); > } >- catch (Botan::Exception & ex) >+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,4) >+ catch (std::exception & e) >+#else >+ catch (Botan::Exception & e) >+#endif > { > E(false, ciphertext.made_from, >- F("Botan error decrypting data: '%s'") % ex.what()); >+ F("Botan error decrypting data: '%s'") % e.what()); > } > } > >@@ -856,9 +873,9 @@ key_store::make_signature(database & db, > { > if (agent.connected()) { > //grab the monotone public key as an RSA_PublicKey >- SecureVector<Botan::byte> pub_block; >- pub_block.set(reinterpret_cast<Botan::byte const *>(key.pub().data()), >- key.pub().size()); >+ SecureVector<Botan::byte> pub_block >+ (reinterpret_cast<Botan::byte const *>(key.pub().data()), >+ key.pub().size()); > L(FL("make_signature: building %d-byte pub key") % pub_block.size()); > shared_ptr<X509_PublicKey> x509_key = > shared_ptr<X509_PublicKey>(Botan::X509::load_key(pub_block)); >@@ -1031,8 +1048,14 @@ key_store_state::migrate_old_key_pair > for (;;) > try > { >+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11) >+ arc4_key.resize(phrase().size()); >+ arc4_key.copy(reinterpret_cast<Botan::byte const *>(phrase().data()), >+ phrase().size()); >+#else > arc4_key.set(reinterpret_cast<Botan::byte const *>(phrase().data()), > phrase().size()); >+#endif > > Pipe arc4_decryptor(get_cipher("ARC4", arc4_key, Botan::DECRYPTION)); > >@@ -1051,7 +1074,11 @@ key_store_state::migrate_old_key_pair > #endif > break; > } >+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,4) >+ catch (Botan::Invalid_Argument & e) >+#else > catch (Botan::Exception & e) >+#endif > { > L(FL("migrate_old_key_pair: failure %d to load old private key: %s") > % cycles % e.what()); >============================================================ >--- src/monotone.cc a25ecdd170a601db798b63a60add7681609a34c4 >+++ src/monotone.cc 764bc9ca406b41d21efd552a0d810bc2849e0588 >@@ -156,27 +156,53 @@ cpp_main(int argc, char ** argv) > E(linked_botan_version != BOTAN_VERSION_CODE_FOR(1,7,14), origin::system, > F("monotone does not support Botan 1.7.14")); > >-#if BOTAN_VERSION_CODE <= BOTAN_VERSION_CODE_FOR(1,7,6) >+ // In Botan 1.9.9, the DataSink_Stream cannot be instantiated per >+ // se. As 1.10.1 is already out, let's simply disable support for >+ // that specific (testing) version of botan. >+ E(linked_botan_version != BOTAN_VERSION_CODE_FOR(1,9,9), origin::system, >+ F("monotone does not support Botan 1.9.9")); >+ >+#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,7,7) >+ // motonote binary compiled against botan younger than 1.7.7 > E(linked_botan_version >= BOTAN_VERSION_CODE_FOR(1,6,3), origin::system, > F("this monotone binary requires Botan 1.6.3 or newer")); >- E(linked_botan_version <= BOTAN_VERSION_CODE_FOR(1,7,6), origin::system, >- F("this monotone binary does not work with Botan newer than 1.7.6")); >-#elif BOTAN_VERSION_CODE <= BOTAN_VERSION_CODE_FOR(1,7,22) >- E(linked_botan_version > BOTAN_VERSION_CODE_FOR(1,7,6), origin::system, >+ E(linked_botan_version < BOTAN_VERSION_CODE_FOR(1,7,7), origin::system, >+ F("this monotone binary does not work with Botan 1.7.7 or newer")); >+ >+#elif BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,7,22) >+ // motonote binary compiled against botan 1.7.7 - 1.7.21 >+ E(linked_botan_version >= BOTAN_VERSION_CODE_FOR(1,7,7), origin::system, > F("this monotone binary requires Botan 1.7.7 or newer")); >- // While compiling against 1.7.22 or newer is recommended, because >- // it enables new features of Botan, the monotone binary compiled >- // against Botan 1.7.21 and before should still work with newer Botan >- // versions, including all of the stable branch 1.8.x. >- E(linked_botan_version < BOTAN_VERSION_CODE_FOR(1,9,0), origin::system, >- F("this monotone binary does not work with Botan 1.9.x")); >-#else >- E(linked_botan_version > BOTAN_VERSION_CODE_FOR(1,7,22), origin::system, >+ // While compiling against 1.7.22 or newer is recommended, because it >+ // enables new features of Botan, the monotone binary compiled against >+ // Botan 1.7.21 and before should still work with newer Botan version, >+ // including all of the stable branch 1.8.x, up to and including >+ // 1.9.3. >+ E(linked_botan_version < BOTAN_VERSION_CODE_FOR(1,9,4), origin::system, >+ F("this monotone binary does not work with Botan 1.9.4 or newer")); >+ >+#elif BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,9,4) >+ // motonote binary compiled against botan 1.7.22 - 1.9.3 >+ E(linked_botan_version >= BOTAN_VERSION_CODE_FOR(1,7,22), origin::system, > F("this monotone binary requires Botan 1.7.22 or newer")); >- E(linked_botan_version < BOTAN_VERSION_CODE_FOR(1,9,0), origin::system, >- F("this monotone binary does not work with Botan 1.9.x")); >+ E(linked_botan_version < BOTAN_VERSION_CODE_FOR(1,9,4), origin::system, >+ F("this monotone binary does not work with Botan 1.9.4 or newer")); >+ >+#elif BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,9,11) >+ // motonote binary compiled against botan 1.9.4 - 1.9.10 >+#pragma message ( "The resulting monotone binary won't be able to run with any stable release of botan." ) >+ E(linked_botan_version >= BOTAN_VERSION_CODE_FOR(1,9,4), origin::system, >+ F("this monotone binary requires Botan 1.9.4 or newer")); >+ E(linked_botan_version < BOTAN_VERSION_CODE_FOR(1,9,11), origin::system, >+ F("this monotone binary does not work with Botan 1.9.11 or newer")); >+ >+#else >+ // motonote binary compiled against botan 1.9.11 and newer >+ E(linked_botan_version >= BOTAN_VERSION_CODE_FOR(1,9,11), origin::system, >+ F("this monotone binary requires Botan 1.9.11 or newer")); > #endif > >+ > app_state app; > try > { >============================================================ >--- src/packet.cc f61360ed2524fdf53411bd24d022a2a3c9e6e9c7 >+++ src/packet.cc 571ff6eae1d269a146da74f2730b70376957d3bb >@@ -156,8 +156,8 @@ namespace > void validate_public_key_data(string const & name, string const & keydata) const > { > string decoded = decode_base64_as<string>(keydata, origin::user); >- Botan::SecureVector<Botan::byte> key_block; >- key_block.set(reinterpret_cast<Botan::byte const *>(decoded.c_str()), decoded.size()); >+ Botan::SecureVector<Botan::byte> key_block >+ (reinterpret_cast<Botan::byte const *>(decoded.c_str()), decoded.size()); > try > { > Botan::X509::load_key(key_block); >@@ -175,7 +175,9 @@ namespace > Botan::DataSource_Memory ds(decoded); > try > { >-#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,7,7) >+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11) >+ Botan::PKCS8::load_key(ds, lazy_rng::get(), Dummy_UI()); >+#elif BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,7,7) > Botan::PKCS8::load_key(ds, lazy_rng::get(), string()); > #else > Botan::PKCS8::load_key(ds, string()); >@@ -189,7 +191,11 @@ namespace > } > // since we do not want to prompt for a password to decode it finally, > // we ignore all other exceptions >+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11) >+ catch (Passphrase_Required) {} >+#else > catch (Botan::Invalid_Argument) {} >+#endif > } > void validate_certname(string const & cn) const > { >@@ -460,8 +466,16 @@ read_packets(istream & in, packet_consum > return count; > } > >+// Dummy User_Interface implementation for Botan >+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11) >+std::string >+Dummy_UI::get_passphrase(const std::string &, const std::string &, >+ Botan::User_Interface::UI_Result&) const >+{ >+ throw Passphrase_Required("Passphrase required"); >+} >+#endif > >- > // Local Variables: > // mode: C++ > // fill-column: 76 >============================================================ >--- src/packet.hh 0a224e6e92f244e2c3e9a5cdb935eb8613d7e85b >+++ src/packet.hh 9c43d30145f0292d6ceda5e717e366fdead5a4d6 >@@ -10,6 +10,10 @@ > #ifndef __PACKET_HH__ > #define __PACKET_HH__ > >+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11) >+#include <botan/ui.h> >+#endif >+ > #include "vocab.hh" > > struct cert; >@@ -84,8 +88,23 @@ size_t read_packets(std::istream & in, p > > size_t read_packets(std::istream & in, packet_consumer & cons); > >+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11) >+// A helper class implementing Botan::User_Interface - which doesn't really >+// interface with the user, but provides the necessary plumbing for Botan. >+// >+// See Botan commit 2d09d7d0cd4bd0e7155d001dd65a4f29103b158c >+typedef std::runtime_error Passphrase_Required; >+ >+class Dummy_UI : public Botan::User_Interface >+{ >+public: >+ virtual std::string get_passphrase(const std::string &, const std::string &, >+ Botan::User_Interface::UI_Result &) const; >+}; > #endif > >+#endif >+ > // Local Variables: > // mode: C++ > // fill-column: 76 >============================================================ >--- src/sha1.cc 5e1aa972d7c7d66e06320b039989652b830dcd75 >+++ src/sha1.cc 42e48b22fd88b25e0d38d4f91e1f13f8a83c7120 >@@ -50,9 +50,12 @@ CMD_HIDDEN(benchmark_sha1, "benchmark_sh > Botan::Default_Benchmark_Timer timer; > std::map<std::string, double> results = > Botan::algorithm_benchmark("SHA-1", milliseconds, timer, rng, af); >+#elif BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,9,11) >+ std::map<std::string, double> results = >+ Botan::algorithm_benchmark("SHA-1", milliseconds, rng, af); > #else > std::map<std::string, double> results = >- Botan::algorithm_benchmark("SHA-1", milliseconds, rng, af); >+ Botan::algorithm_benchmark("SHA-1", af, rng, milliseconds, 16); > #endif > > for(std::map<std::string, double>::const_iterator i = results.begin(); >============================================================ >--- src/ssh_agent.cc 6d188e7012a0b82f782563b09bbd7adf3f70cf75 >+++ src/ssh_agent.cc 4a0dcab873559e934e41c5f220b5434d35600d9b >@@ -385,9 +385,9 @@ ssh_agent::has_key(const keypair & key) > ssh_agent::has_key(const keypair & key) > { > //grab the monotone public key as an RSA_PublicKey >- SecureVector<Botan::byte> pub_block; >- pub_block.set(reinterpret_cast<Botan::byte const *>((key.pub)().data()), >- (key.pub)().size()); >+ SecureVector<Botan::byte> pub_block >+ (reinterpret_cast<Botan::byte const *>((key.pub)().data()), >+ (key.pub)().size()); > L(FL("has_key: building %d-byte pub key") % pub_block.size()); > shared_ptr<X509_PublicKey> x509_key = > shared_ptr<X509_PublicKey>(Botan::X509::load_key(pub_block)); >============================================================ >--- src/transforms.cc cdfb6854ef4992faba21074145f3c8269b845b11 >+++ src/transforms.cc b99278ffe95c0081bf4986bc74d3699c37a52948 >@@ -53,15 +53,16 @@ using Botan::Hash_Filter; > // paradigm "must" be used. this program is intended for source code > // control and I make no bones about it. > >-NORETURN(static inline void error_in_transform(Botan::Exception & e)); >+NORETURN(static inline void error_in_transform(std::exception & e)); > > static inline void >-error_in_transform(Botan::Exception & e, origin::type caused_by) >+error_in_transform(std::exception & e, origin::type caused_by) > { > // these classes can all indicate data corruption > if (typeid(e) == typeid(Botan::Encoding_Error) > || typeid(e) == typeid(Botan::Decoding_Error) > || typeid(e) == typeid(Botan::Stream_IO_Error) >+ || typeid(e) == typeid(Botan::Invalid_Argument) > || typeid(e) == typeid(Botan::Integrity_Failure)) > { > // clean up the what() string a little: throw away the >@@ -107,7 +108,7 @@ error_in_transform(Botan::Exception & e, > pipe->process_msg(in); \ > out = pipe->read_all_as_string(Pipe::LAST_MESSAGE); \ > } \ >- catch (Botan::Exception & e) \ >+ catch (std::exception & e) \ > { \ > pipe.reset(new Pipe(new T(carg))); \ > error_in_transform(e, made_from); \ >@@ -173,7 +174,7 @@ template<> string xform<Botan::Hex_Decod > { > throw Botan::Decoding_Error(string("invalid hex character '") + (char)c + "'"); > } >- catch(Botan::Exception & e) >+ catch(std::exception & e) > { > error_in_transform(e, made_from); > } >@@ -219,7 +220,7 @@ void pack(T const & in, base64< gzip<T> > tmp = pipe->read_all_as_string(Pipe::LAST_MESSAGE); > out = base64< gzip<T> >(tmp, in.made_from); > } >- catch (Botan::Exception & e) >+ catch (std::exception & e) > { > pipe.reset(new Pipe(new Gzip_Compression, > new Base64_Encoder)); >@@ -237,7 +238,7 @@ void unpack(base64< gzip<T> > const & in > pipe->process_msg(in()); > out = T(pipe->read_all_as_string(Pipe::LAST_MESSAGE), in.made_from); > } >- catch (Botan::Exception & e) >+ catch (std::exception & e) > { > pipe.reset(new Pipe(new Base64_Decoder, > new Gzip_Decompression)); >@@ -264,7 +265,7 @@ calculate_ident(data const & dat, > p->process_msg(dat()); > ident = id(p->read_all_as_string(Pipe::LAST_MESSAGE), dat.made_from); > } >- catch (Botan::Exception & e) >+ catch (std::exception & e) > { > p.reset(new Pipe(new Hash_Filter("SHA-160"))); > error_in_transform(e, dat.made_from);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 380257
:
284233
|
285793
|
285811
|
285847
|
286213
| 309903