Commit Graph

18 Commits

Author SHA1 Message Date
8689995b69 feature(keyringctl): yell and abort if processing private key data 2021-11-30 22:54:16 +01:00
5a83a7b6c1 feature(keyringctl): skip user attribute packets as none relevant 2021-11-30 22:54:16 +01:00
bce5bc550e feature(keyringctl): rework str simplification for printable uids 2021-11-30 22:54:16 +01:00
9741ada9ef fix(keyringctl): put subkey revocations into the correct subkey dirs 2021-11-30 22:54:15 +01:00
e55042e45b feature(keyringctl): verify file structure integrity and packets
This moves all verify code to an own module and adds support to check
all packet files in the structure for integrity. This is done by parsing
assumptions like packet kind, type, issuer and location etc.
2021-11-30 22:54:15 +01:00
d9e9453d84 feature(keyringctl): write all packet files with full issuer fingerprint
This avoids collision between same issuer using key-id and full
fingerprint in different versions of a packet, like signature.
2021-11-30 22:54:15 +01:00
cd585f4be2 chore(keyringctl): increase test coverage and fix trust expectations 2021-11-30 22:54:14 +01:00
86eb172ac3 chore(keyringctl): add missing type annotations for tests 2021-11-30 22:54:14 +01:00
0ca74e243b feature(keyringctl): adding basic infrastructure for running tests 2021-11-30 22:54:13 +01:00
8ba7dc1dc9 feature(keyringctl): acquire trust status from key assumptions
Rework the whole trust handling by acquiring the trust status from
actual assumptions related to the amount of ownertrust signatures and
revocations.
2021-11-30 22:54:13 +01:00
26c7027660 feature(keyringctl): support importing from a piped fd
This feature allows to import from a piped fd like:
> ./keyringctl import --name foobar <(gpg --export foo@bar)

We achieve this even with hidepid by taking the naive approach of
copying the processes fd source to a tempfile and pass around latter.
2021-11-30 22:54:13 +01:00
2384d0337b fix(keyringctl): resolve cert dir per fingerprint and not parent user 2021-11-30 22:54:13 +01:00
03d5899f87 fix(keyring): use a single applied revocation to declare a key revoked
Otherwise the PGP trust and revocation status file will not match our
expectations. A single applied revocation to this directory structure
should be checked either way.

We can later create TODO's to have at least two revocations for the keys
that would otherwise be still trusted and then change this value.
2021-11-30 22:54:13 +01:00
878752dc13 fix(keyringctl): avoid leaking unclosed file descriptors 2021-11-30 22:54:13 +01:00
a9e63edfa8 feature(keyringctl): adding ci command to verify newly added certs
Currently only newly added certificates will be checked against the
expectations as existing keys are not all fully compatible with those
assumptions.  New certificates are determined by using
$CI_MERGE_REQUEST_DIFF_BASE_SHA as the base,
2021-11-30 22:54:12 +01:00
9733fbafd8 feature(keyringctl): add verify command to check certificate expectation
This command checks certain expectations using sq and hokey, prints the
results to stdout and potentially exists non successfully.
2021-11-30 22:54:12 +01:00
94c3b4c8e9 fix(keyrinctl): yield file not found errors instead of blocking on stdin
Handle missing or wrong certificate paths in a way that does not lead to
a blocking command by reading from stdin. Instead throw either file not
found errors or expect optional outputs.
2021-11-30 22:54:12 +01:00
58307c629d chore(keyringctl): modularize the code for overview and testing 2021-11-30 22:54:12 +01:00