summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2021-11-29xxxjustus/tokio10-debuggingJustus Winter
2021-11-24remove me: test tokioNora Widdecke
- individual jobs for sequoia-ipc, sequoia-store, as they are the interesing ones
2021-11-23draft ipc: Update assuan to tokio 1.0.Nora Widdecke
2021-11-23ipc: Update to tokio 1.0.Nora Widdecke
2021-11-23store: Update to tokio 1.0.Nora Widdecke
2021-11-22sq: Fix argument parsing.Nora Widdecke
- sq keyserver get expects a fingerprint or keyid, but only ever used the keyhandle parsed as a fingerprint. Fix this by parsing as a KeyHandle, instead. - Found with clippy lint if_same_then_else: https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else
2021-11-21a missed negation flips the meaning of the documentation for ↵Alexander Kjäll
KeyHandle::is_invalid
2021-11-18openpgp: Hint at WASM support in the README.md.Justus Winter
- Fixes #570.
2021-11-18openpgp: Enable feature wasm-bindgen for rand.Justus Winter
- This is used by the Rust Crypto crates.
2021-11-18openpgp: Enable js feature for getrandom.Justus Winter
2021-11-18Bump sha1collisiondetection.Justus Winter
2021-11-18openpgp: Use a WASM-friendly SystemTime::now wrapper.Justus Winter
- Fixes #769.
2021-11-17Bump subplot and subplotlib.Justus Winter
- Fixes a bug where subplot picks up the wrong binary by mistake.
2021-11-16openpgp: Release 1.6.0.openpgp/v1.6.0Justus Winter
2021-11-16buffered-reader: Release 1.1.1.buffered-reader/v1.1.1Justus Winter
2021-11-09openpgp: Fix documentation, add missing KeyFlags::clear_group_key.Justus Winter
2021-11-05openpgp: Implement CRC24 using a precomputed table.Justus Winter
- With this patch, Sequoia's armor encoding and decoding performance roughly matches GnuPG's. - Fixes #772.
2021-11-05openpgp: Move CRC computation to its own module.Justus Winter
2021-11-05openpgp: Change armor encoder to work on larger chunks.Justus Winter
2021-11-05openpgp: Improve performance of symmetric::Encryptor.Justus Winter
- Instead of encrypting and emitting ciphertext block-wise, encrypt all whole blocks at once and emit the resulting ciphertext. This saves invocations of the cipher (which may traverse language boundaries), and reduces the overhead later in the writer stack by writing larger chunks.
2021-11-04openpgp: Use XXH3 to hash packet bodies.Justus Winter
- When we stream packet bodies, we hash their contents so that we can compare them later on, even if we no longer have the data. Previously, we used the fasted hash from the SHA2 family, either SHA256 or SHA512 depending on the architecture. - That, however, turned out to be a major performance problem. When decrypting a non-compressed, binary file on amd64, we spent roughly a third of the time just to compute the hash. - Using the non-cryptographic hash function XXH3, we can greatly improve the performance. On my system, it is 30x as fast as SHA3, and reduces the overhead of computing the body hash considerably: % time ./sq-sha512 decrypt --recipient-key juliet.key.pgp 3g-for-juliet.binary.pgp >/dev/null 2>&1 13.931 total % time ./sq-xxh3 decrypt --recipient-key juliet.key.pgp 3g-for-juliet.binary.pgp >/dev/null 2>&1 9.264 total - See #771.
2021-11-04openpgp: Improve the streaming Decryptor's buffer strategy.Justus Winter
- Previously, for a read of X bytes, we'd request X + buffer_size from the underlying buffered reader, then satisfy the read request, after which we'd request the next X + buffer_size bytes for the next read. This requires the underlying reader to copy buffer_size bytes for each read. In a typical scenario, we'd copy 25 megabytes (the default buffer size) for every 8 kilobytes read (std::io::copy's default buffer size). This incurs a linear cost with a very high factor. - Improve this by requesting 2 * buffer_size, then satisfying the reads from the first half of that buffer, only consuming the first half once we have exhausted the first half. Then, we'd request the next 2 * buffer_size, at which point the underlying buffered reader has to copy the data to a new buffer. - See #771.
2021-11-04openpgp: Improve tracing.Justus Winter
2021-11-04openpgp: Don't try to fill the buffer if we reached the end.Justus Winter
- Previously, when the read exceeded the buffered data, we tried to fill the buffer even if we reached the last chunk. Then, we would allocate a new buffer and copy the data over, only to later realize that we reached the last chunk and the current chunk is exhausted.
2021-11-03openpgp: Try to get back on the happy path.Justus Winter
- If the opportunity arises, i.e. we have a buffer but previous reads exhausted it, we can drop the buffer and serve the requests from the next buffered reader without copying them first.
2021-11-03openpgp: Recycle buffers.Justus Winter
- Previously, we spent a considerable amount of time callocing new buffers.
2021-11-03buffered-reader: Recycle buffers.Justus Winter
- Previously, we spent a considerable amount of time callocing new buffers.
2021-11-03openpgp: Avoid double buffering in symmetric::Decryptor.Justus Winter
- Fixes #773.
2021-11-03openpgp: Avoid wrapping the reader again.Justus Winter
2021-11-03openpgp: Use dynamically dispatched buffered reader in Decryptor.Justus Winter
2021-11-03openpgp: Reuse crypto::symmetric::Decryptor's ciphertext buffer.Justus Winter
2021-11-03sq: Delegate crypto operations to private key store if set.Wiktor Kwapisiewicz
- If certificates contain secret keys try to decrypt the in place. - If certificates contain only public bits and the private key store has been set try to decrypt it using the sequoia_net::pks functions.
2021-11-03sq: Add parameter for specifying private key storeWiktor Kwapisiewicz
- Extend the decrypt and sign operations with private-key-store parameter. - Reduce the number of parameters by using wrapper structs.
2021-11-03net: Implement Signer and Decryptor for remote keys.Wiktor Kwapisiewicz
- Add sequoia_net::pks::unlock_signer. - Add sequoia_net::pks::unlock_decryptor.
2021-10-28net, openpgp: Fix private documentation.Nora Widdecke
2021-10-28ci: Use stable compiler for doc job.Nora Widdecke
2021-10-27sq: add scaffolding for an integration/acceptance test suiteLars Wirzenius
Add support for an integration and acceptance test suite using the Subplot tool (https://subplot.liw.fi/). There are the initial, very simple test scenarios, to get us started. The goal is to introduce the scaffolding for integration tests, so that further tests can be added with ease later. The tests are documented and defined in sq-subplot.md. In build.rs, we call Subplot to generate test code from the markdown file. The tests are run via "cargo test", as usual. Subplot can also generate a typeset test document from sq-subplot.md, but we don't do that here.
2021-10-25ffi, net, sq: Update to tokio 1.0.Nora Widdecke
- net: hyper has two vulnerabilities: - RUSTSEC-2021-0079: "Integer overflow in `hyper`'s parsing of the `Transfer-Encoding` header leads to data loss" (vulnerability) - RUSTSEC-2021-0078: "Lenient `hyper` header parsing of `Content-Length` could allow request smuggling" (vulnerability) Both are fixed in hyper 0.14.10., which depends on tokio 1. tokio 0.2 is incompatible to tokio 1, so we need to update that too, also in the dependents sq and ffi. hyper-tls 0.4 is incompatible to hyper 0.14., update to hyper-tls 0.5.
2021-10-25openpgp: Fix trailing semicolon in macro warning.Nora Widdecke
- The new 1.56.0 compiler has started issuing a new warning: "trailing semicolon in macro used in expression position", which will be an error in a future release. - For more information, see https://github.com/rust-lang/rust/issues/79813
2021-10-25openpgp: Add notation setters to RevocationBuilders.Nora Widdecke
- Closes #476.
2021-10-18openpgp: Release 1.5.0.openpgp/v1.5.0Justus Winter
2021-10-18buffered-reader: Release 1.1.0.buffered-reader/v1.1.0Justus Winter
2021-10-18Relicense to LGPL 2.0 or later.Neal H. Walfield
- Change Sequoia's license from GPL 2.0 or later to LGPL 2.0 or later as unanimously decided on October 18, 2021 by: - Christof Wahl <cw@pep.security> (pEp security CEO) - Heiko Schaefer <heiko.schaefer@posteo.de> (pEp Foundation employee, Sequoia developer) - Justus Winter <justus@sequoia-pgp.org> (pEp Foundation employee, Sequoia Founder) - Neal H. Walfield <neal@pep.foundation> (pEp Foundation employee, Sequoia Founder) - Patrick Meier <pm@pep.security> (pEp security Chief Product and Service Officer) - Rudolf Bohli <rb@pep.security> (pEp security Chairman of the Board) - Volker Birk <vb@pep.security> (pEp security Founder, pEp Foundation Council)
2021-10-15sq: When merging keyrings, produce output in a reproducible orderLars Wirzenius
The output keyring now has keys in fingerprint order. Closes #762
2021-10-14Add clippy to CILars Wirzenius
This amends the "rust-stable" pipeline to build with stable rust (from rustup), then unset the override to use stable, which means the rust-toolchain file is obeyed. It then installs clippy, and runs it.
2021-10-14Allow clippy::unnecessary_lazy_evaluationsLars Wirzenius
Replacing the closure with just the value it returns would be simpler, but it would result in more computation happening at runtime if the result is Ok. See https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations This clippy warning wasn't caught by CI, because we don't yet have clippy in CI.
2021-10-11openpgp: Fix link.Nora Widdecke
2021-10-11openpgp: Fix links to SignatureBuilder.Nora Widdecke
2021-10-11Update dependency tracing to 0.1.29.Nora Widdecke
2021-10-11openpgp: Correct link.Nora Widdecke