summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2021-03-01ci: Use ASAN with the unit tests.nora/asan_sequoiaNora Widdecke
2021-02-24sq: Improve --signatures defaults, document error handling.Justus Winter
- Require at least one valid signature for `sq verify`. For `sq decrypt`, require one if at least one signer cert is given. - Document what happens if signature verification fails, or message tampering is detected using the SEIP packet. - Fixes #677.
2021-02-24sq: Improve hint to use "--force".Justus Winter
- Fixes #273.
2021-02-24sq: Improve output.Justus Winter
- Add 'Note:' and fix alignment.
2021-02-24sq: Fix warning.Justus Winter
- The conditional was inverted by mistake. - Fixes 4df9befdb10cc336a9df49b65fdfef659296aa61. - Fixes #662.
2021-02-24sq: Improve wording.Justus Winter
- See #677.
2021-02-24openpgp: Improve example.Justus Winter
2021-02-24openpgp: Fix links.Justus Winter
2021-02-24openpgp: Verify messages using the Cleartext Signature Framework.Justus Winter
- Implement verification of messages using the Cleartext Signature Framework by detecting them in the armor reader, and transforming them on the fly to inline signed messages. - The transformation is not perfect. We need to synthesize one-pass-signatures, but we only know the hash algorithm(s) used. Luckily, this is the only information the packet parser needs. - We only enable the transformation when using stream::Verifier. The transformation is transparent to the caller. Currently, there is no way to disable this. In the next major revision, we may add ways to control this behavior. - Fixes #151.
2021-02-24openpgp: Rework certificate lookup in the streaming decryptor.Justus Winter
- Previously, we called VerificationHelper::get_certs once we saw the literal data packet. The classic OpenPGP rationale for having the signer's keyid in the OPS packet is so that consuming implementations can avoid hashing the body if they don't have the certificate to verify the signature with. - However, there is a better opportunity to do that: Just in time before doing the actual verification when we have seen all the signatures. This has the advantage that we may know fingerprints instead of mere keyids. - This is crucial for verifying messages using the Cleartext Signature Framework where we do not know the issuers before encountering the signatures. - Also, deduplicate aliasing key handles, preferring fingerprints.
2021-02-24sq: Implement creation of cleartext signatures.Justus Winter
- See #151.
2021-02-24openpgp: Sign messages using the Cleartext Signature Framework.Justus Winter
- See #151.
2021-02-24openpgp: Inline buffered_reader::Generic.Justus Winter
- Previously, armor::Reader implemented BufferedReader using the Generic reader on top of IoReader's io::Read implementation. However, that is no longer good enough, because we need to access the cookie from (Io)Reader::initialize. - The real fix is to directly implement the BufferedReader protocol. That would have been the right thing to do from the beginning, instead of using buffered_reader::Generic. This may actually simplify the code and reduce buffering. However, implementing the BufferedReader protocol is a bit error-prone, so we defer it once again! - Instead, manually inline the code from the Generic reader. - In the following commits, we will take advantage of that and access the cookie.
2021-02-22openpgp: Rename field.Justus Winter
- In the next commit, we will inline buffered_reader::Generic, which also hash a field called 'buffer'. To avoid changing any code copied from the generic reader, rename this field first.
2021-02-22openpgp: Simplify CRC24 generator polynomial.Justus Winter
- Anything beyond 24 bits is masked off anyway, so this doesn't change the result of the checksum.
2021-02-20readme: List python dependency pip.Nora Widdecke
- setuptools 52.0.0, which is not in Debian bullseye, requires pip. Thus, transitively, we do to.
2021-02-19openpgp: Simplify code.Justus Winter
2021-02-19openpgp: Use high-level interface to create direct key signature.Justus Winter
2021-02-17Revert "openpgp: Only drop unread data from the top buffered reader."Justus Winter
- Previously, Sequoia did not properly consume excess bytes in a compression container that were not part of the compressed data. This resulted in the parser erroneously trying to parse the excess data into packets. Fix this by dropping any excess data. - We do this by reverting a previous change that made dropping excess data conditional. However, the reason for that change is unclear, and reverting it does not seem to have adverse effects. - This reverts commit c0f3de2e7fecc12717313900fdf4348e40ffb1f4. - Fixes #675.
2021-02-17buffered-reader: Reorder fields.Justus Winter
- Reorder fields so that the inner reader comes last. When looking at the derived debug output, it is easier to see the fields belonging to the current reader. With the inner reader coming last, it also resembles walking up the stack.
2021-02-17openpgp: Improve tracing.Justus Winter
2021-02-17openpgp: Generalize test.Justus Winter
2021-02-12openpgp: Split armor::Reader::initialize into two functions.Justus Winter
2021-02-12openpgp: Keep track of the prefix, not just the prefix length.Justus Winter
2021-02-12openpgp: Move base64 utilities to their own module.Justus Winter
2021-02-12openpgp: Turn comment into documentation comment.Justus Winter
2021-02-12openpgp: Prepare armored reader for a different mode of operation.Justus Winter
2021-02-11sq: Fix setting signature creation times.Justus Winter
2021-02-10Update smallvec to 1.6.1.Nora Widdecke
- smallvec < 1.6.1 has a vulnerability in SmallVec::insert_many. Our two dependencies that use smallvec, rusqlite 0.24.2 and num-bigint-dig 0.6.1, do not seem to use that specific function. Bumping the dependency to be safe. - https://rustsec.org/advisories/RUSTSEC-2021-0003 - https://github.com/servo/rust-smallvec/issues/252 - Fixes #661
2021-02-10openpgp: Add HashAlgorithm::text_name.Justus Winter
2021-02-10openpgp: Make HashAlgorithm::from_str ignore case.Justus Winter
2021-02-10openpgp: Generalize streaming Signer modes.Justus Winter
2021-02-09make: Pass on exit codes in test task so it can fail.Azul
2021-02-09ci: Use make test instead of cargo test.Nora Widdecke
2021-02-09ci: Use prebuild rust-stable image.Azul
- It comes with preinstalled debian packages and /target.
2021-02-09ci: Split bullseye, valgrind and build-bullseye jobsAzul
2021-02-09ci: use bullseye image with prebuild dependenciesAzul
2021-02-09openpgp: Fix crash on malformed input.Justus Winter
- Fixes a crash in Decryptor::verify_detached when verifying detached signatures by rejecting any non-signature packets when parsing the alleged signatures.
2021-02-08ffi: Move NetworkPolicy into net for python.Azul
- See #665. - Also add test for keyserver to make sure the fix is correct.
2021-02-04openpgp: Set critical to false in SignatureBuilder::set_signers_user_id().Heiko
- GnuPG (tested with 2.2.25) doesn't handle certifications with critical SignersUserID Subpacket.
2021-02-04openpgp: Fix subkye->subkey typo.Wiktor Kwapisiewicz
2021-01-28sq: Release 0.24.0.sq/v0.24.0Justus Winter
2021-01-28sq: Add key extract-cert.Justus Winter
- Fixes #383.
2021-01-28sq: Refactor.Justus Winter
2021-01-28sq: Rename --to-certificate to --to-cert.Justus Winter
2021-01-28sq: Improve non-interactive use warning.Justus Winter
- Add a simple heuristic for bash. - See #653.
2021-01-28sq: Align example usage with synopsis.Daniel Kahn Gillmor
The synopsis clearly places TARGET-KEY *after* the options. But the example places it haphazardly within the options, which is harder to read and understand. Even if the original example works, the goal of the example should be to make it easy to see what is happening in a standard usage, not to show off the flexibility of the parser.
2021-01-28sq: Fix examples.Justus Winter
- Fixes #652.
2021-01-28sq: Fix reference.Justus Winter
- Fixes #655.
2021-01-28sq: Use " instead of ' as quoting character.Justus Winter
- We generate manpages from the cli definition. It turns out that ' is special character in troff, and the man crate doesn't take care of escaping it correctly. As a pragmatic workaround, switch to " instead.