summaryrefslogtreecommitdiffstats
path: root/openpgp
AgeCommit message (Collapse)Author
2020-12-16Release 1.0.0.v1.0.0Justus Winter
- Release buffered-reader 1.0.0, sequoia-openpgp 1.0.0, and sequoia-sqv 1.0.0. - Also release sequoia-sop 0.22.0.
2020-12-16openpgp: Bump sha1collisiondetection to 0.2.3.Justus Winter
- Fixes build on architectures with unsigned chars.
2020-12-15Relax dependency lalrpop-util.Nora Widdecke
- Fixes #630.
2020-12-15openpgp: Use Feb. 1st instead of Jan. 1st as the cutoff day.Neal H. Walfield
- January 1st is a holiday in much of the world. - When we disable an algorithm, things will almost certainly break somewhere. - Reduce the chance that things break when people are on vacation by using February 1st as the cutoff day instead of January 1st.
2020-12-15openpgp: Extend StandardPolicy's hash policy API.Neal H. Walfield
- A `Policy` now knows whether the use of a hash requires collision resistance or only second pre-image resistance. - Extend `StandardPolicy`'s hash policy API to allow a user to express a more nuanced policy that takes this information into account. - See #595.
2020-12-15openpgp: Use hash_algo_security for self signatures and revocations.Wiktor Kwapisiewicz
- This uses calculated hash algorithm security instead of a hard-coded value.
2020-12-15openpgp: Make ComponentAmalgamation return iterator for signatures.Wiktor Kwapisiewicz
- Adjust `self_signatures`, `certifications`, `self_revocations` and `other_revocations` to return `impl Iterator` over the signatures. - Adjust all call-sites including doc tests. - Adjust downstream projects (sq, autocrypt).
2020-12-14openpgp: Simplify hash policies.Neal H. Walfield
- The standard policy currently has two policies related to hash algorithms: when a hash algorithm should be rejected for normal signatures, and when a hash algorithm should be rejected for revocation sigantures. - If we distinguish two security contexts, then we'll have four policies (the cross product). - If the currently state is not already unmanageable, then this certainly is. - Simplify this by using a single scalar to represent how long a revocation certificate using a broken hash should continue to be accepted. - This is probably sufficiently expressive in practice as this is a largely inexact science. And, if a more nuanced policy is required, it is always possible to wrap `StandardPolicy`.
2020-12-14openpgp: Add Duration::years.Neal H. Walfield
- Add `Duration::years`. - This function assumes that there are 365.2425 days in a year, which is the average number of days in a year in the Gregorian calendar.
2020-12-14openpgp: Make Duration::seconds a const fn.Neal H. Walfield
- Make `Duration::seconds` a const fn.
2020-12-14openpgp: Change general purpose keys to have a signing subkey.Justus Winter
- Certificates with a primary key that is not signing capable, and a subkey that is, are strictly more secure than ones that combine signing and certification capabilities in the primary key. - If the owner of a certificate with a signing-capable primary key can be tricked into creating a binary signature over carefully chosen attacker-controlled data, this signature can be repurposed to bind arbitrary attacker-controlled components to the certificate using a chosen-prefix collision attack on the hash function (see e.g. "SHA-1 is a Shambles" for a similar attack). - Having a separate signing-subkey mitigates the attack, because signatures by the signing subkey cannot bind components to the certificate.
2020-12-14openpgp: Add custom logo and favicon to the documentation.Justus Winter
2020-12-14openpgp: Drop the doc-hack in favor of doc(inline).Justus Winter
2020-12-14openpgp: Typos.Justus Winter
2020-12-14openpgp: Fix crash in the packet parser.Justus Winter
- If no data has been read, that may indicate an error. In this case, even requesting no data may fail.
2020-12-11Release 0.21.0.v0.21.0Justus Winter
2020-12-11openpgp: Remove ComponentAmalgamation::revocation_keys.Wiktor Kwapisiewicz
- Remove the function. - Remove associated tests. - Cert::revocation_keys does examine all live self-signatures. - Fixes #629.
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-11openpgp: Suggest StandardPolicy in NullPolicy docs.Wiktor Kwapisiewicz
- Fixes #473.
2020-12-11openpgp: Add an example of building a custom policy.Wiktor Kwapisiewicz
2020-12-11openpgp: Add functions that only return valid signatures.Wiktor Kwapisiewicz
- Fixes #622.
2020-12-11openpgp: Change Policy trait default to reject.Wiktor Kwapisiewicz
2020-12-11Relax minimum dependencies.Nora Widdecke
- Relaxes those dependencies that were unnecessarily strict and patched by debian.
2020-12-11Correct minimal versions.Nora Widdecke
- Versions required by feature or API usage: - anyhow 1.0.18. - policy::test::reject_seip_packet and policy::test::reject_cipher' fail - We use `impl From<anyhow::Error> for Box<dyn std::error::Error + Send + Sync + 'static>`, introduced in 1.0.5. - tokio 0.2.19 - We use `tokio::net::tcp::OwnedReadHalf`, introduced in 0.2.19. - chrono 0.4.10 - We use the `std` feature, introduced in 0.4.10. - thiserror 1.0.2 - futures and futures-util 0.3.5 - tempfile 3.1 - c_doctests require the same version of rand both as direct dependency and through tempfile. - Yanked versions: - structopt 0.3.11. 0.3.8 to 0.3.10 were yanked. - socket2 0.3.16. 0.3.0 to 0.3.15 were yanked. - Update our dependencies to the package versions required by other dependencies, e.g. structopt requires lazy_static 1.4.0. - clap 2.33 - lazy_static to 1.4.0 - libc to 0.2.66 - proc-macro2 to 1.0.7 - syn to 1.0.5. - winapi 0.3.8
2020-12-11openpgp: Fix example.Justus Winter
2020-12-11openpgp: Fix documentation.Justus Winter
2020-12-11openpgp: Pass the hash algo's security reqs to Policy::signature.Neal H. Walfield
- If the signer controls the data that is being signed, then the hash algorithm only needs second pre-image resistance. - This observation can be used to extend the life of hash algorithms that have been weakened, as is the case for SHA-1. - Introduces a new `enum HashAlgoSecurity`, which is now passed to `Policy::signature`. - See #595.
2020-12-11openpgp: Make Cert::CertParser Send and Sync.Azul
- See #615.
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: Make cert::IntoIter Send + Sync.Justus Winter
- See #615.
2020-12-08openpgp: Make unnamed iterators Send + Sync.Justus Winter
- See #615.
2020-12-08openpgp: Allow dangling `,` in assert_send_and_sync! calls.Azul
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: Require Policies to be Send and Sync.Azul
- This ensures that all types with Policies (`Valid*`) are `Send` and `Sync`.
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-12-07openpgp: Include a random salt when creating signatures.Justus Winter
- This makes it harder for an attacker to convince a victim to sign a predetermined text. See Leurent, G. and Peyrin, T., 2020. SHA-1 is a Shambles, Section 7.2: > [...] if the serial number is unpredictable then the [chosen > prefix] collision attack is thwarted as a crucial part of the > hashed input is not controlled by the attacker. - We use 32 bytes of randomness, which provides plenty of entropy, yet is way smaller than the block size of the average hash function. Adding random data that is included in the signature provides an opportunity to mutate this data to attack the hash function. Limiting the amount to less than the block size is should avoid this concern. - We use a notation to include the data, because this is the least intrusive way to add it. It is also self-describing. - Fixes #597.
2020-12-07openpgp: Drop hash::Context in favor of a pub trait hash::Digest.Justus Winter
2020-12-07openpgp: Require Write for impl Digest.Justus Winter
2020-12-07openpgp: Add Digeset::algo.Justus Winter
2020-12-07openpgp: Make digest computation more robust.Justus Winter
2020-12-07openpgp: Make serialize::stream::Message Send + Sync.Justus Winter
- See #615.
2020-12-07openpgp: Make Digest Send + Sync.Justus Winter
2020-12-07openpgp: Require Mode to be Send + Sync.Justus Winter
2020-12-04openpgp: Use pure Rust EAX implementation under CNG backendIgor Matuszewski
- Fixes #556.