summaryrefslogtreecommitdiffstats
path: root/openpgp/src/armor.rs
AgeCommit message (Collapse)Author
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-10-28net, openpgp: Fix private documentation.Nora Widdecke
2021-09-30Use strip_{prefix,suffix} for code that's easier to followLars Wirzenius
Instead of: if text.starts_with(prefix) { &text[prefix.len()..] } else { &text } use this: if let Some(rest) = text.strip_prefix(prefix) { rest } else { &text } The strip_prefix is easier to understand, and also removes the dependency between the if condition and the computation to get the slice after the prefix. The dependency is reasonably clear, but the compiler does not understand it so it's plausible that a future change might change the condition but not the slice. The approach using strip_prefix avoids that. This was found by the clippy lint manual_strip: https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip
2021-09-30Use .sort_unstable for speedLars Wirzenius
A stable sort is one where values that compare equal are in the same order relative to each other in the output as they were in the input. Thus, if input has values a0, b, and a1, with a0==a1, a0<b, a1<b, then the output of a stable sort is guaranteed to be be [a0, a1, b]. For an unstable sort, the output may also be [a1, a0, b]. This can matter if, for example, the values are structs and only one field is used for comparison. On data where an unstable sort (.sort_unstable) works, it's bad to use a stable sort (.sort), because it uses more CPU without affecting the end result. If the types of values in a vector are primitive types, as they are in the cases changed by this commit, an unstable sort will do just fine. Found by clippy lint stable_sort_primitive: https://rust-lang.github.io/rust-clippy/master/index.html#stable_sort_primitive
2021-09-30Annotate function so that clippy accepts nonminimal_boolLars Wirzenius
Found by clippy lint nonminimal_bool: https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool
2021-09-21Avoid matching on &Foo, when a plain Foo pattern worksLars Wirzenius
The extra & in a pattern (match arm or if let) is unnecessary and only makes the code harder to read. In most places it's enough to just remove the & from the pattern, but in a few places a dereference (*) needs to be added where the value captured in the pattern is used, as removing the & changes the type of the captured value to be a reference. Overall, the changes are almost mechanical. Although the diff is huge, it should be easy to read. The clippy lint match_ref_pats warns about this. See: https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats
2021-04-09Lint: Use char for single characters.Nora Widdecke
- https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern - https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str
2021-04-09Lint: Remove unecessary imports.Nora Widdecke
- https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports
2021-04-09Lint: Use is_empty().Nora Widdecke
- https://rust-lang.github.io/rust-clippy/master/index.html#len_zero - https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty
2021-04-09Lint: Remove redundant returns.Nora Widdecke
- https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
2021-04-09Lint: Use matches! macro.Nora Widdecke
- https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro
2021-04-09Lint: Use byte literals.Nora Widdecke
- https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8
2021-04-09Lint: Remove unnecessary conversions.Nora Widdecke
- https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion
2021-04-09Lint: Use lazy evaluation.Nora Widdecke
- https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call
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: 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-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
2020-12-11openpgp: Standardize fn main() in doctests.Azul
- Avoid the additional `fn f()`.
2020-12-11openpgp: Replace `.unwrap()` in doctests with `?`Azul
- See #480.
2020-12-10openpgp: Add remaining assert_send_and_sync! calls.Azul
- See #615.
2020-12-10buffered-reader: Require Cookies to be Send and Sync.Azul
- This way the entire `BufferedReader<C>` will be `Send` and `Sync`. - Modify all other crates accordingly. - See #615.
2020-12-08openpgp: Tweak the assert_send_and_sync macro.Justus Winter
- Declare trait bounds using a where clause. It looks a bit odd if there is no bound, but not worse than before.
2020-12-08openpgp: Add assert_send_and_sync! for more types.Azul
- All types that are `Send` and `Sync` are checked now. - Fixes #627.
2020-12-08openpgp: Use parens for assert_send_and_sync!.Azul
2020-12-08openpgp: Add assert_send_and_sync! for more types.Azul
- With !928 merged more types are `Send` and `Sync` now. - See #627.
2020-12-08openpgp: Allow generic types in assert_send_and_sync!.Azul
- Use generics and the anonmymous lifetime in `assert_send_and_sync!`. - See 627.
2020-12-08openpgp: Ensure public types are Send and Sync.Azul
- See #627.
2020-11-24openpgp: Accept any number of (unicode) dashes in armor framing.Justus Winter
- Fixes #610.
2020-11-24openpgp: Improve tests.Justus Winter
2020-11-24openpgp: Rework footer detection.Justus Winter
2020-11-24openpgp: Return header length in armor::Kind::detect.Justus Winter
2020-11-24openpgp: Handle truncated armor prefixes.Justus Winter
- Fixes #618.
2020-10-20openpgp: Pop the armor filter off the stack after parsing.Justus Winter
2020-10-20openpgp: Implement BufferedReader<Cookie> for armor::Reader.Justus Winter
- Fixes #441.
2020-10-20openpgp: Harmonize the BufferedReader type.Justus Winter
2020-10-19openpgp: Avoid buffering.Justus Winter
2020-10-14Replace most 'extern crate' directives with 'use'.Justus Winter
- See #480.
2020-09-23openpgp: Typos.Nora Widdecke
2020-09-22openpgp: Remove `quickcheck` feature.Wiktor Kwapisiewicz
- Adjust code to test for `cfg(test)` only, - Remove `quickcheck` and `rand` from dependencies so that they stay only in dev-dependencies, - Remove mention of `x-quickcheck` feature from the documentation, - Fixes #545.
2020-09-17openpgp: Marker packets must be ignored, adapt heuristics.Justus Winter
- Marker packets must be ignored everywhere. Add them to the heuristics detecting base64 encoded OpenPGP data in the armor decoder, and to the packet parser's resyncing code. - Fixes #546.
2020-08-18openpgp: Clean up code in Examples sections.Wiktor Kwapisiewicz
2020-08-18openpgp: Remove unit test that is redundant.Wiktor Kwapisiewicz
2020-08-18openpgp: Add link references to test cases.Wiktor Kwapisiewicz