summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2024-02-27openpgp: Add generic forwards for Policy data structures.neal/policy-forwardersNeal H. Walfield
- Implement `Policy` for `&dyn Policy`, `Box<T> where T: Policy`, `&StandardPolicy` and `&NullPolicy` by implementing a generic forwarder.
2024-02-26ci: make msvc jobs print env varsDevan Carpenter
2024-02-25openpgp: Handle header lines in the cleartext signature framework.Justus Winter
- Fixes #1091.
2024-02-25openpgp: Improve tracing.Justus Winter
2024-02-23ci: use our CI/CD components from common-ci.gitDevan Carpenter
2024-02-20openpgp: Release 1.19.0.openpgp/v1.19.0Justus Winter
2024-02-20openpgp: Add test making sure junk pseudo-packets have a map.Justus Winter
2024-02-20openpgp: Improve tracing.Justus Winter
2024-02-20openpgp: Add test for curve point representations.Justus Winter
2024-02-20openpgp: Fix serialized points on Weierstrass curves with OpenSSL.Justus Winter
- OpenPGP uses the uncompressed representation. Previously, the OpenSSL backend used the compressed representation by mistake.
2024-02-20openpgp: Test ECC key creation and operations.Justus Winter
2024-02-20openpgp: New function Curve::variants.Justus Winter
2024-02-20openpgp: Fix creating Brainpool keys with OpenSSL.Justus Winter
2024-02-20openpgp: Fix creating Brainpool keys with Botan.Justus Winter
2024-02-20openpgp: Fix building the tests with the fuzzing backend.Justus Winter
2024-02-20ipc: Release 0.33.0.ipc/v0.33.0Neal H. Walfield
2024-02-20Update dependencies.Neal H. Walfield
- Keep `anyhow` at 1.0.76; the latest version (1.0.80) still exhibits the performance problem on Windows. - See https://github.com/dtolnay/anyhow/issues/347 .
2024-02-20ipc: Ensure server's socket is in non-blocking mode.Neal H. Walfield
- According to the documentation for [`TcpListener::from_std`] the passed socket must be in non-blocking mode: > The caller is responsible for ensuring that the listener is in > non-blocking mode. Otherwise all I/O operations on the listener > will block the thread, which will cause unexpected > behavior. Non-blocking mode can be set using set_nonblocking. [`TcpListener::from_std`]: https://docs.rs/tokio/1.36.0/tokio/net/struct.TcpListener.html - Make sure that is the case for any socket we pass to `TcpListener::from_std`.
2024-02-13openpgp: Remove superfluous clamping.Justus Winter
- Asymmetric::x25519_generate_key generates an X25519 key. Clamping is not necessary here: X25519 mandates implicit clamping when decrypting.
2024-02-13openpgp: Refactor Key4::generate_ecc.Justus Winter
- Move common code into a common frontend function.
2024-02-13openpgp: Clamp the secret key in Key4::import_secret_cv25519.Justus Winter
- Fixes #1087.
2024-02-13openpgp: Fix markup.Justus Winter
2024-01-26ipc: Release 0.32.0.ipc/v0.32.0Neal H. Walfield
2024-01-26ipc: Upgrade capnp-rpc.Neal H. Walfield
2024-01-26Update p≡p contact information and p≡p Engine URL.Luca Saiu
Signed-off-by: Luca Saiu <positron@pep-project.org>
2024-01-26openpgp: Release 1.18.0.openpgp/v1.18.0Neal H. Walfield
2024-01-26openpgp: Upgrade idna.Neal H. Walfield
2024-01-26Downgrade anyhow to 1.0.76.Neal H. Walfield
- There appears to be a performance regression in version 1.0.77, version 1.0.78, and version 1.0.79 of anyhow on Windows. - Downgrade to 1.0.76. - See https://github.com/dtolnay/anyhow/issues/347
2024-01-25Update dependencies.Neal H. Walfield
2024-01-25openpgp: Implement Arbitrary for KeyHandle, add tests.Justus Winter
2024-01-25openpgp: Make KeyHandle::partial_cmp transitive.Justus Winter
- Previously, KeyHandle::partial_cmp tried to sort aliasing handles together. However, this made the function not transitive, which is required by implementations of PartialOrd. - Fix this by simply comparing the byte representations, and computing aliasing in KeyHandle::aliases. - Note: This makes PartialOrd (and PartialEq) total, but we still don't implement Ord (and Eq) to prevent naive comparisons.
2024-01-25openpgp: Improve deprecation note.Justus Winter
2024-01-25openpgp: Deprecate Cert::into_packets.Justus Winter
2024-01-25openpgp: Add Cert::into_packets2, TSK::into_packets.Justus Winter
- Cert::into_packet is problematic because it does not protect from accidentally leaking secret key material. The documentation even warns about that, but it still happened. Hence, this is a violation of our safe-by-default principle guiding the API, and we should fix it. - The replacement, Cert::into_packets2, strips secret key material just as serializing a cert does. To convert to a sequence of packets while keeping the secret key material, a new function is added: TSK::into_packets, analogous to how TSK serializes secret key material.
2024-01-25openpgp: Factor out code adding a secret key stub.Justus Winter
2024-01-25openpgp: Make TSK optionally own the Cert.Justus Winter
2024-01-25openpgp: Tweak lifetime of filter function's argument.Justus Winter
- Previously, the filter operated on references with the lifetime 'a only, which is the lifetime associated with the Cert the TSK object references. Change the signature to take a reference with an anonymous lifetime instead. - This makes the filter more general, but it can no longer rely on the fact that the references are live for 'a. However, the function is a Fn, not a FnMut, and returns a bool, so the function cannot store the reference anywhere, so this shouldn't make a difference in practice. - Annoyingly, there is a wrinkle. If a closure bound to an identifier is given to TSK::set_filter, the Rust compiler incorrectly (or over eagerly?) specializes the function in a way that it doesn't match the callback's prototype: error[E0308]: mismatched types --> openpgp/src/serialize/cert.rs:946:16 | 946 | check!(tsk_0.as_tsk().set_filter(no_secrets), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ one type is more general than the other | = note: expected trait `for<'a> Fn<(&'a packet::Key<packet::key::SecretParts, packet::key::UnspecifiedRole>,)>` found trait `Fn<(&packet::Key<packet::key::SecretParts, packet::key::UnspecifiedRole>,)>` note: this closure does not fulfill the lifetime requirements --> openpgp/src/serialize/cert.rs:940:26 | 940 | let no_secrets = |_| false; | ^^^ note: the lifetime requirement is introduced here --> openpgp/src/serialize/cert.rs:318:23 | 318 | where P: 'a + Fn(&key::UnspecifiedSecret) -> bool | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: implementation of `FnOnce` is not general enough --> openpgp/src/serialize/cert.rs:946:16 | 946 | check!(tsk_0.as_tsk().set_filter(no_secrets), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ implementation of `FnOnce` is not general enough | = note: closure with signature `fn(&'2 packet::Key<packet::key::SecretParts, packet::key::UnspecifiedRole>) -> bool` must implement `FnOnce<(&'1 packet::Key<packet::key::SecretParts, packet::key::UnspecifiedRole>,)>`, for any lifetime `'1`... = note: ...but it actually implements `FnOnce<(&'2 packet::Key<packet::key::SecretParts, packet::key::UnspecifiedRole>,)>`, for some specific lifetime `'2` This is easily fixed by providing a partial type for the callback's argument. This commit includes a tweak for our test.
2024-01-25net: Derive Clone for KeyServer.Justus Winter
2024-01-25openpgp: Reject short key IDs.Neal H. Walfield
- When parsing a key ID string, reject short key IDs. - Note: we can't reject short key IDs in `KeyID::from_bytes`, because that function in infallible. But, that function does return `KeyID::Invalid` when presented with a short key ID. - Fixes #388.
2024-01-24openpgp: Improve example.Neal H. Walfield
- Simplify initialization. - Use `KeyHandle::aliases` to compare two `KeyHandle`s.
2024-01-24openpgp: Improve documentation.Neal H. Walfield
- Add references to related functions.
2024-01-24openpgp: Use SubpacketAreas::issuers to get issuer subpackets.Neal H. Walfield
- When checking for an issuer subpacket, `SubpacketAreas::issuers`, not `SubpacketAreas::get_issuers`.
2024-01-24openpgp: Use KeyHandle::aliases to check for a fingerprint.Neal H. Walfield
- When checking of a list of issuers contains a fingerprint, use `KeyHandle::aliases`, don't search for the fingerprint, and then the key ID.
2024-01-24openpgp: Add UserID::from_static_bytes, which is constant.Neal H. Walfield
- Add `UserID::from_static_bytes`, which is equivalent to `UserID::from` for a byte slice, but is a constant function.
2024-01-23openpgp: Avoid unnecessary heap allocations when creating UserIDs.Neal H. Walfield
- When creating a `UserID`, avoid unnecessary heap allocations by making better use of what we have. For example, we can directly convert a `String` to a `Vec<u8>` without allocating a `Vec<u8>`, and copying the contents.
2024-01-23openpgp: Fix comparing SKESK5 objects.Justus Winter
- See !1592.
2024-01-23Fix example.Justus Winter
- Previously, the if let was infallible, and rightfully flagged by rustc.
2024-01-23buffered-reader: Implement BufferedReader for &mut BufferedReader.Neal H. Walfield
- Implement `BufferedReader` for `&mut T` where `T: BufferedReader`. - Implementing `BufferedReader` for `&mut T` where `T: BufferedReader` means that we can pass a mutable reference to a buffered reader where a buffered reader is required, and when the reference is dropped, we can continue to use the buffered reader.
2024-01-23openpgp: Only export a certificate if it is exportable.Neal H. Walfield
- Currently, we are careful to not export components (user IDs, and subkeys) if they don't have any exportable self signatures, however, we still export the primary key. Further, the primary user ID is leaked when the output is armored. - When exporting a certificate, correctly check if the certificate is exportable. If it isn't, don't export anything.
2024-01-23openpgp: Add Cert::exportable.Neal H. Walfield
- Add `Cert::exportable` to return whether a certificate is exportable or not. - A certificate should only be exported if it has at least one exportable direct key signature, or there is at least one user ID or user attribute with at least one exportable self-signature.