Properly handle .mft files as intended by the RFC. Instead of always
authorclaudio <claudio@openbsd.org>
Fri, 28 Jan 2022 15:30:23 +0000 (15:30 +0000)
committerclaudio <claudio@openbsd.org>
Fri, 28 Jan 2022 15:30:23 +0000 (15:30 +0000)
commitdf512fbc9f7bf359604d874a35d110818aab11b4
treed73dab2333530ff01222e759a39c19089cdd4f71
parenta8481ad3532fe4a3535724e65b1cbc6bee441010
Properly handle .mft files as intended by the RFC. Instead of always
selecting the newest file this opens both the new (from rrdp or rsync)
and old (valid) MFT. It then compares the manifest number and based on
that the 'newer' MFT is selected.
The MFT file and hash check is also changed to always try both locations
and selecting whatever matches up with the hash. The selction is passed
back to the the main process and used later on to open exactly the same
file as was checked against the hash.
The MFT parsing code has been split up into multiple steps so that the
files can be parsed, compared and then fully validated.
In most cases this makes no difference but it prevents replay attacks
using old but still valid files.
With and OK tb@
usr.sbin/rpki-client/extern.h
usr.sbin/rpki-client/main.c
usr.sbin/rpki-client/mft.c
usr.sbin/rpki-client/parser.c