summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2018-06-28openpgp: Improve error handling.Justus Winter
- Return an Error::InvalidArgument when trying to parse a ciphertext with a signature algorithm specifier, or a signature with an encryption one.
2018-06-28openpgp: Add `MPIs::Unknown` for parameters of unknown algorithms.Justus Winter
- Fixes #8.
2018-06-28openpgp: Parse MPIs of ElGamal signatures.Justus Winter
2018-06-28openpgp: Typo.Justus Winter
2018-06-28tool: Add a test for the bug fixed in 1d63e71.Neal H. Walfield
2018-06-27tools: Make sqv check that a validated TPK is really wanted.Neal H. Walfield
- sqv only checked whether an *unvalidated* TPK was wanted; it needs to double-check that this is really the case after validating the TPK. Consider the case where key X is needed to validate a signature and the keyring contains two keys: Mallory's and Alice's, and both have key X as a subkey, but the back-sig is only valid for Alice's key. The current code will use Mallory's key, and the signature validation will fail. If we had double checked, then we'd have discarded Mallory's key, and correctly used Alice's. - To fix this problem, this commit changes the code to use the new TPKParser::unvalidated_tpk_filter, which is not only simpler to use, but takes care of this double checking.
2018-06-27openpgp: Add an interface to filter unvalidated TPKs.Neal H. Walfield
- Validating self-signatures is computationally expensive. When searching a keyring, it would be faster to filter, validate and then recheck, than to validate and filter. - Because handing out unvalidated TPKs will inevitably result in an unvalidated TPK being used in a context where it should have been validated, we provide this new interface, `TPKParser::unvalidated_tpk_filter`, which is similar to Rust's `Iterator::filter` method. Using a callback means that the user has to go out of their way to propagate the unvalidated TPK, which will hopefully prevents the unvalidated TPK from being used in a context where a validated TPK is required.
2018-06-27openpgp: Add some convenience constructors to TPKParser.Neal H. Walfield
2018-06-27openpgp: Make footer detection more robust.Justus Winter
- Also, make armor::Reader use a buffered reader. This allows us to peek into the buffer to find the footer, even if we didn't request enough data to see it. - Fixes #7.
2018-06-27openpgp: Tune TPK-abbreviation acrobatics.Justus Winter
- Previously, we joined two Strings. Now we just use the &'static str.
2018-06-27openpgp: Make armored header detection more robust.Justus Winter
- Previously, the detection code confused the header of a cleartext signature with that of a detached signature.
2018-06-27openpgp: Make reading the CRC more robust.Justus Winter
- Check that we feed no whitespace to the base64 decoder. If all four bytes are from the base64 character set, we get exactly three bytes out.
2018-06-25openpgp: Drop superfluous identity-conversion.Justus Winter
2018-06-25openpgp: Do not make the ecdh module public.Justus Winter
2018-06-25openpgp: Fix off-by-one error in the armor detection.Justus Winter
- Also, add an test that demonstrates this problem.
2018-06-25openpgp: Drop the alias for Kind::SecretKey.Justus Winter
- Having an alias in the enum seems not worth the trouble, e.g. it complicates equality.
2018-06-25openpgp: Move the subpacket module to the crate root.Justus Winter
2018-06-25openpgp: Generalize `hash_file`.Justus Winter
- Instead of giving it a path, just give it a reader. Adjust call site.
2018-06-25openpgp: Add support for parsing Autocrypt headers.Neal H. Walfield
- Also implement 'sq autocrypt decode' to convert an autocrypt header to an OpenPGP key.
2018-06-21Add a license.Neal H. Walfield
2018-06-20openpgp: Make KeyID parsing more robust by accepting fingerprints.Justus Winter
- A fingerprint contains more information than a keyid, I see no reason not to parsing it to a keyid, other than to annoy any users.
2018-06-20openpgp: Ignore garbage in front of armored data.Justus Winter
2018-06-20openpgp: Rename functions to make their intention clear.Justus Winter
2018-06-20openpgp: Simplify and fix function.Justus Winter
2018-06-20openpgp: Use u8::is_ascii_whitespace().Justus Winter
2018-06-20Warn about public functions without documentation, add missing docs.Justus Winter
2018-06-20store: Restrict the visibility of the backend to the crate.Justus Winter
2018-06-20store: Rename the key store binary and rendezvous point.Justus Winter
2018-06-20Make sure there is always a whitespace after every comma.Justus Winter
- This is the result of executing find . \( -type f -and \( -name '*.rs' -or -name '*.h' \) \) \ -exec sed -i -e 's/,\([^[:space:]]\)/, \1/g' {} \; with one manual tweak in 'parse.rs'.
2018-06-20Consistently call passwords password, not passwd or passphrase.Justus Winter
2018-06-20openpgp: Don't export HashesFor.Neal H. Walfield
2018-06-20openpgp: Improve whitespace, minor comment editing.Neal H. Walfield
2018-06-20openpgp: Fix 99d0dbe486e0fdd1e1b9cf266f93a726abcf2444.Justus Winter
2018-06-20openpgp: Typo.Justus Winter
2018-06-19openpgp: make missing docs a warning.Kai Michaelis
Missing doc comments on public functions and types now procude a warning. Also adds all missing comments.
2018-06-19openpgp: Implement decryption using ECDH/Curve25519.Justus Winter
2018-06-19openpgp: Simplify checksum computation.Justus Winter
2018-06-19openpgp: Refactor `PKESK::decrypt(..)` in preparation for ECDH.Justus Winter
2018-06-19openpgp: Fix check for key size.Justus Winter
2018-06-19openpgp: Refactor computation of KDF inputs.Justus Winter
2018-06-19openpgp: Add a function to remove PKCS5 padding.Justus Winter
2018-06-19openpgp: Make `MPI::decode_point()` grok Curve25519 keys.Justus Winter
2018-06-19openpgp: Make `PKESK::decrypt` take a &Key for the public key.Justus Winter
- We need the key's fingerprint for the ECDH algorithm.
2018-06-19openpgp: Rename test case and remove unused variable.Justus Winter
2018-06-19openpgp: Move MPIs parsing into own file.Kai Michaelis
It's a lot boilerplate. As a side effect we are forced to make the PacketHeaderParser crate-public :(. Closes #3.
2018-06-19openpgp: Express log2 using the `u32::leading_zeros()` intrinsic.Justus Winter
2018-06-19openpgp: PKESK decryption.Kai Michaelis
Implements PKESK::decrypt(). Supports onlt RSA for now.
2018-06-19openpgp: simple secret key handling.Kai Michaelis
Adds a SecretKey type for holding (optionally encrypted) secret keys. For now, secret keys are handled as TPKs.
2018-06-19openpgp, buffered-reader: Make compression an optional feature.Justus Winter
- This helps to reduce the trusted computing base if compression is not needed. - This makes it easier to fuzz Sequoia, previously the fuzzer was doing a great job creating compression bombs that triggered the fuzzers timeout. - Currently, the cargo workspace feature does not propagate --no-default-features, but it is possible to depend on the openpgp crate with `default-features = false`. - Unfortunately, a lot of test cases include compressed packages. This change conditionally disables these tests.
2018-06-18openpgp: Simplify test.Justus Winter