Age | Commit message (Collapse) | Author |
|
- Add `CipherSuite::variants`, which returns an iterator over all
cipher suite variants.
|
|
|
|
- The Rust Crypto crates are *very* slow when compiled without any
optimizations. Turn on some optimizations when using the dev
profile.
|
|
- Currently, the reference time is not set, hence evaluated to the
current time on demand. If `now` is at the end of a whole
second (OpenPGP's time resolution), it may be that we are off by
one second. Explicitly set the reference time to avoid this.
- See #998.
|
|
|
|
|
|
|
|
|
|
- See #638.
|
|
|
|
- Instead of splitting them again. Filing them into the correct
bucket is a bit faster, and avoids us to make parser::split_sigs
pub(crate).
|
|
- Unknown::hash_algo_security returns CollisionResistance, and that
is what we use for UnknownBundles elsewhere in the grammar. We
should hold all UnknownBundles to the higher bar of requiring
CollisionResistance.
|
|
|
|
- This is a variant of Key::take_secret that doesn't change the type
and only requires a mutable reference.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- When we discover issuer information not yet recorded in the
signature, we insert this information when we get the chance.
However, previously this failed to set the authenticated flag
because it was cleared in SubpacketArea::add. Fix that.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- Previously, we rejected v3 signatures after 2007 by default.
However, Panu Matilainen observed:
GnuPG appears to have only switched to v4 by default in version
1.4.8, released on 2007-12-20. Before that was in the hands of
users would've been many more months, and in case of users of
enterprise distro users, years. For example, RHEL 5 (initially
released in early 2007) had 1.4.5 still at it's end-of-life in
2017 (and extended life end at 2020) so users on that would've
still been merrily (and probably unknowingly) producing v3
signatures at 2017.
- RHEL 5 support ended 2020-11-30. Cryptographically, there is
nothing wrong with them. Reject v3 signatures only after
2021-02-01.
- Fixes #948.
|
|
- Fixes f9e15b3974b71aed87871999014b901a5aee03a8 by also applying
the change to the low-level cert parser.
- Fixes #1084.
|
|
- For historical reasons, if the S2K usage octet is not a known S2K
mechanism, the octet denotes a symmetric algorithm used to
encrypt the key material with. In this case, the symmetric key is
the MD5 sum over the password. See section 5.5.3. Secret-Key
Packet Formats of RFC4880.While this is obviously not a great
choice, it is no worse than `S2K::Simple { hash: MD5 }`, since
it is equivalent to that.
- Model this by adding a new S2K variant.
- Notably, this fixes handling of packets with unknown S2K
mechanisms. Under the model of RFC4880, which we implement, any
unknown S2K mechanism is an implicit S2K, where the usage octet
denotes an unsupported symmetric algorithm. Using this will fail,
but we now can parse and serialize it correctly, and with them the
secret key packets they come in.
- Fixes #1095.
|
|
|
|
- There is no `Curve::Private`.
|
|
- Similar to Signature::verify, but doesn't constrain to document
signatures. This allows for faster verification of third-party
signatures on certs, taking advantage of the fact that we computed
the digest during certificate canonicalization.
|
|
- We have done the hashing, and the cert structure provides enough
context to do the verification without doing the hashing again.
|
|
|
|
- Introduce a new function, Signature::verify_digest_internal, that
only uses concrete types to reduce monomorphization, handles the
stashed computed digest, and takes an optionally owned signature
digest.
|
|
- During parsing, we parse the primary key. Keep that around for
later instead of caching only the fingerprint. Simplify accessors
accordingly.
|
|
|
|
|
|
- Notably, this is done during certificate canonicalization. This
is expensive as-is, let's keep the allocator out of it.
|
|
- Notably, this is done during certificate canonicalization. This
is expensive as-is, let's keep the allocator out of it.
|
|
|
|
- Fixes #1091.
|
|
|
|
|
|
|
|
|
|
|
|
- OpenPGP uses the uncompressed representation. Previously, the
OpenSSL backend used the compressed representation by mistake.
|