]> git.ipfire.org Git - thirdparty/FORT-validator.git/log
thirdparty/FORT-validator.git
5 weeks agoDoc: Add installation steps for Rocky 9 main
Alberto Leiva Popper [Fri, 30 May 2025 20:17:07 +0000 (14:17 -0600)] 
Doc: Add installation steps for Rocky 9

7 weeks agoAdd character check in certificate subjects and issuers issue159
Alberto Leiva Popper [Wed, 14 May 2025 19:25:50 +0000 (13:25 -0600)] 
Add character check in certificate subjects and issuers

Fixes #159.

4 months agoProtocolary updates for release 1.6.6 1.6.6
Alberto Leiva Popper [Wed, 5 Feb 2025 22:29:48 +0000 (16:29 -0600)] 
Protocolary updates for release 1.6.6

4 months agoIncrease http.max-file-size's default
Alberto Leiva Popper [Wed, 5 Feb 2025 19:14:42 +0000 (13:14 -0600)] 
Increase http.max-file-size's default

We got a 530 mB snapshot nowadays. Since these tend to double during
key rollover, the old default of 1 gB no longer makes sense.

5 months agoRRDP: Mirror rsync extension filters
Alberto Leiva Popper [Wed, 22 Jan 2025 23:26:39 +0000 (17:26 -0600)] 
RRDP: Mirror rsync extension filters

We've agreed extension filters are useful, and the manifest code no
longer drops RPPs due to unknown file-not-founds.

So prevent unknown file extensions from contaminating the RRDP side of
the cache as well.

Complements #155.

5 months agoStop rejecting RPPs if unrecognizable absent files are fileListed
Alberto Leiva Popper [Wed, 22 Jan 2025 22:38:37 +0000 (16:38 -0600)] 
Stop rejecting RPPs if unrecognizable absent files are fileListed

RFC 9286:

> The RP MUST acquire all of the files enumerated in the manifest
> (fileList) from the publication point. If there are files listed in
> the manifest that cannot be retrieved from the publication point,
> the RP MUST treat this as a failed fetch.

This was clashing with Fort's default rsync filters because they were
preventing unknown extensions from being downloaded:

> rsync (...) --include=*.cer --include=*.crl --include=*.gbr \
> --include=*.mft --include=*.roa --exclude=* (...)

Which will be a problem whenever the IETF defines new legal repository
extensions, such as .asa.

Therefore, ignore unknown manifest fileList extensions. This technically
violates RFC 9286, but it's necessary evil given that we can't trust
repositories to always only serve proper RPKI content.

Fixes #155.

6 months agoName CVE-2024-56375
Alberto Leiva Popper [Thu, 2 Jan 2025 22:42:17 +0000 (16:42 -0600)] 
Name CVE-2024-56375

6 months agoAdd new CVE sketch
Alberto Leiva Popper [Fri, 20 Dec 2024 22:12:21 +0000 (16:12 -0600)] 
Add new CVE sketch

6 months agoProtocolary updates for release 1.6.5 1.6.5
Alberto Leiva Popper [Wed, 18 Dec 2024 22:57:58 +0000 (16:57 -0600)] 
Protocolary updates for release 1.6.5

6 months agoCheck manifest fileList emptiness before shuffling
Alberto Leiva Popper [Wed, 18 Dec 2024 21:58:54 +0000 (15:58 -0600)] 
Check manifest fileList emptiness before shuffling

Prevents the loop iterating indefinitely trying to shuffle an array
that's not actually there.

Fixes #154 and new CVE.

6 months agoName CVE-2024-56169 and CVE-2024-56170
Alberto Leiva Popper [Wed, 18 Dec 2024 18:57:46 +0000 (12:57 -0600)] 
Name CVE-2024-56169 and CVE-2024-56170

7 months agoAdd new CVE sketches
Alberto Leiva Popper [Tue, 26 Nov 2024 23:58:19 +0000 (17:58 -0600)] 
Add new CVE sketches

8 months agoName CVE-2024-48943
Alberto Leiva Popper [Mon, 14 Oct 2024 17:32:22 +0000 (11:32 -0600)] 
Name CVE-2024-48943

9 months agoEnclose each test sandbox in a dedicated directory
Alberto Leiva Popper [Mon, 30 Sep 2024 18:06:17 +0000 (12:06 -0600)] 
Enclose each test sandbox in a dedicated directory

Prevents them from interfering with each other.

Fixes #148.

9 months agoUpdate Docker
Alberto Leiva Popper [Tue, 24 Sep 2024 16:51:02 +0000 (10:51 -0600)] 
Update Docker

9 months agoAdd 1.6.4 CVE
Alberto Leiva Popper [Tue, 24 Sep 2024 00:19:58 +0000 (18:19 -0600)] 
Add 1.6.4 CVE

9 months agoProtocolary updates for release 1.6.4 1.6.4
Alberto Leiva Popper [Mon, 23 Sep 2024 19:34:19 +0000 (13:34 -0600)] 
Protocolary updates for release 1.6.4

10 months agoMisc log review
Alberto Leiva Popper [Thu, 5 Sep 2024 20:39:11 +0000 (14:39 -0600)] 
Misc log review

- Print dependency versions during startup
- Print date ranges for certificates and CRLs

10 months agoFix default values in the documentation
Alberto Leiva Popper [Tue, 3 Sep 2024 22:22:29 +0000 (16:22 -0600)] 
Fix default values in the documentation

The retry counts and intervals were wrong.

10 months agoMerge branch 'job-rsync_timeout_poll'
Alberto Leiva Popper [Tue, 3 Sep 2024 21:45:50 +0000 (15:45 -0600)] 
Merge branch 'job-rsync_timeout_poll'

10 months agoAdd more unit tests to the rsync timeout
Alberto Leiva Popper [Tue, 3 Sep 2024 20:25:41 +0000 (14:25 -0600)] 
Add more unit tests to the rsync timeout

Aight, think I'm done testing this.

10 months agoExhaust rsync's stderr and stdout at the same time
Alberto Leiva Popper [Fri, 30 Aug 2024 02:48:54 +0000 (20:48 -0600)] 
Exhaust rsync's stderr and stdout at the same time

I'm assuming this consumes less RAM, as stdout no longer has to buffer
completely until stderr is done.

10 months agoRefactor exhaust_read_fd()'s return value
Alberto Leiva Popper [Thu, 29 Aug 2024 22:49:55 +0000 (16:49 -0600)] 
Refactor exhaust_read_fd()'s return value

Allows the unit test to tell the difference between timeout and error.

10 months agoSeparate POLLERR and POLLNVAL for rsync poll
Alberto Leiva Popper [Thu, 29 Aug 2024 22:33:40 +0000 (16:33 -0600)] 
Separate POLLERR and POLLNVAL for rsync poll

POLLERR must induce close(), POLLNVAL must not.

10 months agoRename the exhaust stream functions, simplify arg list
Alberto Leiva Popper [Thu, 29 Aug 2024 22:27:23 +0000 (16:27 -0600)] 
Rename the exhaust stream functions, simplify arg list

10 months agoUpdate timeout during every rsync poll
Alberto Leiva Popper [Thu, 29 Aug 2024 21:19:02 +0000 (15:19 -0600)] 
Update timeout during every rsync poll

Ensures the timeout is absolute even when poll() returns repeatedly.

10 months agoIntroduce a rsync transfer timeout 147/head
Job Snijders [Thu, 22 Aug 2024 16:33:59 +0000 (16:33 +0000)] 
Introduce a rsync transfer timeout

Default set to 900 (same as rpki-client)

Fixes https://github.com/NICMx/FORT-validator/issues/74

10 months agoFill up CVE numbers in documentation
Alberto Leiva Popper [Tue, 27 Aug 2024 14:52:00 +0000 (08:52 -0600)] 
Fill up CVE numbers in documentation

10 months agoMerge branch 'job-pr146'
Alberto Leiva Popper [Fri, 23 Aug 2024 20:07:50 +0000 (14:07 -0600)] 
Merge branch 'job-pr146'

10 months agoMerge branch 'job-pr144'
Alberto Leiva Popper [Thu, 22 Aug 2024 20:14:42 +0000 (14:14 -0600)] 
Merge branch 'job-pr144'

10 months agoImprove Key Usage validation more
Alberto Leiva Popper [Thu, 22 Aug 2024 18:40:48 +0000 (12:40 -0600)] 
Improve Key Usage validation more

- Was not checking the decipherOnly bit
- Was not using the buffer meant to ease checking the decipherOnly bit

Again, thanks to Niklas Vogel and Haya Schulmann for reporting this.

10 months agoSet default HTTP transfer timeout to 900 146/head
Job Snijders [Thu, 22 Aug 2024 16:40:42 +0000 (16:40 +0000)] 
Set default HTTP transfer timeout to 900

10 months agoCredit Haya Schulmann for her contributions to the CVEs
Alberto Leiva Popper [Thu, 22 Aug 2024 16:27:23 +0000 (10:27 -0600)] 
Credit Haya Schulmann for her contributions to the CVEs

10 months agoImprove compliance with RFC 9589 144/head
Job Snijders [Thu, 22 Aug 2024 11:15:37 +0000 (11:15 +0000)] 
Improve compliance with RFC 9589

As of 9589, the CMS SigningTime attribute is mandatory and the
CMS BinarySigningTime attribute is forbidden.

10 months agoUpdate Docker
Alberto Leiva Popper [Thu, 22 Aug 2024 03:19:50 +0000 (21:19 -0600)] 
Update Docker

10 months agoAdd CVE "reference" sketch
Alberto Leiva Popper [Thu, 22 Aug 2024 02:46:03 +0000 (20:46 -0600)] 
Add CVE "reference" sketch

10 months agoProtocolary updates for release 1.6.3 1.6.3
Alberto Leiva Popper [Mon, 19 Aug 2024 19:11:44 +0000 (13:11 -0600)] 
Protocolary updates for release 1.6.3

10 months agoReview of #includes
Alberto Leiva Popper [Thu, 15 Aug 2024 23:48:25 +0000 (17:48 -0600)] 
Review of #includes

Now featuring local includes too.

10 months agoRemove redundant forward declarations in ASN1
Alberto Leiva Popper [Thu, 15 Aug 2024 23:41:55 +0000 (17:41 -0600)] 
Remove redundant forward declarations in ASN1

11 months agoPrevent crash on BER-encoded signedAttrs
Alberto Leiva Popper [Tue, 6 Aug 2024 16:35:59 +0000 (10:35 -0600)] 
Prevent crash on BER-encoded signedAttrs

The code was assuming the object was DER-encoded, and the relevant
integer was therefore in short form.

Because I postponed the DER enforcement in
deef7b7823f21914b17838f152a8bd510a348f54, the code should not make
reckless assumptions about the signedAttrs encoding.

Thanks to Niklas Vogel for reporting this.

11 months agoPrevent crash on missing eContent
Alberto Leiva Popper [Tue, 6 Aug 2024 16:35:24 +0000 (10:35 -0600)] 
Prevent crash on missing eContent

Applies to the RouteOriginAttestation and Manifest octet strings.

Thanks to Niklas Vogel for reporting this.

11 months agoPrevent crash on missing signedAttrs
Alberto Leiva Popper [Tue, 6 Aug 2024 16:35:14 +0000 (10:35 -0600)] 
Prevent crash on missing signedAttrs

Though RPKI enforces the presence of this field, it is very much
optional in CMS.
Also adds missing validation messages in relevant error paths.

Thanks to Niklas Vogel for reporting this.

11 months agoPrevent crash on missing Authority Key Identifier
Alberto Leiva Popper [Tue, 6 Aug 2024 16:29:44 +0000 (10:29 -0600)] 
Prevent crash on missing Authority Key Identifier

Another missing NULL check.

Thanks to Niklas Vogel for reporting this.

11 months agoPrevent crash on malformed Key Usage
Alberto Leiva Popper [Tue, 6 Aug 2024 16:29:16 +0000 (10:29 -0600)] 
Prevent crash on malformed Key Usage

Key Usage bit strings longer than 2 bytes were inducing buffer overflow.

Thanks to Niklas Vogel for reporting this.

11 months agoPrevent crash on malformed subjectPublicKey
Alberto Leiva Popper [Tue, 6 Aug 2024 16:28:57 +0000 (10:28 -0600)] 
Prevent crash on malformed subjectPublicKey

A malformed subjectPublicKey causes X509_PUBKEY_get0() to return NULL.
Fort wasn't catching this when linked specifically to OpenSSL < 3.

Thanks to Niklas Vogel for reporting this.

11 months agoUse HTTP compressed encoding when available 143/head
Job Snijders [Sat, 3 Aug 2024 13:30:53 +0000 (15:30 +0200)] 
Use HTTP compressed encoding when available

This reduces network traffic by about 50%.

11 months agoClarify why CRL Number extensions do not need to be processed 142/head
Job Snijders [Wed, 24 Jul 2024 19:54:50 +0000 (19:54 +0000)] 
Clarify why CRL Number extensions do not need to be processed

12 months agorand_r(): Separate seed and random number
Alberto Leiva Popper [Wed, 3 Jul 2024 18:26:59 +0000 (12:26 -0600)] 
rand_r(): Separate seed and random number

Enforces originally intended usage of rand_r()'s API.
Mostly just paranoia, maybe.

12 months agoUse thread-safe PRNG 141/head
Job Snijders [Tue, 25 Jun 2024 07:24:04 +0000 (07:24 +0000)] 
Use thread-safe PRNG

rand() isn't thread-safe on all platforms (musl libc for example)
use rand_r() instead

12 months agoGenerate all permutations of the list with equal probability
Job Snijders [Tue, 25 Jun 2024 05:21:39 +0000 (05:21 +0000)] 
Generate all permutations of the list with equal probability

@botovq was kind enough to point out that although my earlier
implementation produced random-ish ordering, it strictly speaking
wasn't Fisher-Yates.

We need to ensure `j` is a random number between `i` and `list.count`
see the second example in the 'Modern Algorithm'
https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle

12 months agoShuffle the order in which Manifest entries are processed 139/head
Job Snijders [Thu, 13 Jun 2024 18:21:36 +0000 (18:21 +0000)] 
Shuffle the order in which Manifest entries are processed

Previously work items were enqueued in the order the CA intended them
to appear on a Manifest. However, there is no obvious benefit to letting
third parties decide the order in which objects are processed.

Instead, randomize the list of FileAndHashes, its ordering has no meaning
anyway. As they say, a fox is not taken twice in the same snare

12 months agoVerify the signature on a self-signed TA cert against it's own pubkey 138/head
Job Snijders [Fri, 7 Jun 2024 17:09:44 +0000 (17:09 +0000)] 
Verify the signature on a self-signed TA cert against it's own pubkey

X509_verify_cert() doesn't check the purported root certificate itself
unless X509_V_FLAG_CHECK_SS_SIGNATURE is set.

The pubkey was compared against the TAL, so check that the signature is
right as required by RFC 6487, section 7, additional condition 1,
applied to self-issued certs.

The error check looks weird, but OpenSSL 3 broke yet another API.

With help from Theo Buehler and Claudio Jeker

13 months agoFix relax_ng_log_str_err() signature for old libxml2 versions
Alberto Leiva Popper [Mon, 3 Jun 2024 22:48:15 +0000 (16:48 -0600)] 
Fix relax_ng_log_str_err() signature for old libxml2 versions

Pull request #137 fixes relax_ng_log_str_err()'s argument list for
libxml2 2.12 and above, but breaks it for libxml2 2.11 and below.

13 months agoSimplify XML reader error handler 137/head
Lucio Sauer [Sun, 2 Jun 2024 23:28:35 +0000 (01:28 +0200)] 
Simplify XML reader error handler

No need to check if ptr[strlen(ptr) - 1] is '\n' because because C
strings always end with a null-byte.

13 months agoFix build failure with GCC 14 due to -Wincompatible-pointer-types
Lucio Sauer [Sun, 2 Jun 2024 23:26:31 +0000 (01:26 +0200)] 
Fix build failure with GCC 14 due to -Wincompatible-pointer-types

Reported downstream at https://bugs.gentoo.org/928331

13 months agoUpdate APNIC TALs
Alberto Leiva Popper [Thu, 30 May 2024 18:11:27 +0000 (12:11 -0600)] 
Update APNIC TALs

Their "current" TALs are not the ideal ones. Switch to the ones that
feature HTTP.

Spawned by #133.

13 months agoUpdate Docker
Alberto Leiva Popper [Sat, 25 May 2024 16:15:10 +0000 (10:15 -0600)] 
Update Docker

13 months agoFinal protocolary updates for release 1.6.2 1.6.2
Alberto Leiva Popper [Fri, 24 May 2024 20:19:48 +0000 (14:19 -0600)] 
Final protocolary updates for release 1.6.2

13 months agoFix unit tests
Alberto Leiva Popper [Fri, 24 May 2024 18:59:15 +0000 (12:59 -0600)] 
Fix unit tests

13 months agoRestore the "now you can connect your routers" WRN
Alberto Leiva Popper [Fri, 24 May 2024 18:46:41 +0000 (12:46 -0600)] 
Restore the "now you can connect your routers" WRN

Requested by #133. Temporal fix.

13 months agoFix most of the -Wnon-pointer-null violations
Alberto Leiva Popper [Thu, 23 May 2024 22:16:15 +0000 (16:16 -0600)] 
Fix most of the -Wnon-pointer-null violations

The cgcc review no longer needs -Wno-non-pointer-null.

13 months agoMirror 1165270e73508b9fb3dfdc0294a5926d56679c75 in other d2i's
Alberto Leiva Popper [Thu, 23 May 2024 22:15:37 +0000 (16:15 -0600)] 
Mirror 1165270e73508b9fb3dfdc0294a5926d56679c75 in other d2i's

Also, fix memory leak in signed_data.c.

13 months agoAdd documentation for --mode=print
Alberto Leiva Popper [Thu, 23 May 2024 20:28:58 +0000 (14:28 -0600)] 
Add documentation for --mode=print

13 months agoChange --server.address default
Alberto Leiva Popper [Thu, 23 May 2024 19:05:32 +0000 (13:05 -0600)] 
Change --server.address default

The old default had been causing mayhem on Linux since
202e0fe34dc3c8dcb1a0ad12faa7f4d5a7c91b2d.

The new default is OS-sensitive, and binds the socket to all available
IPv4 and IPv6 addresses.

13 months agoStop using BIO_read_ex()
Alberto Leiva Popper [Wed, 22 May 2024 01:50:57 +0000 (19:50 -0600)] 
Stop using BIO_read_ex()

It's not LibreSSL-compatible.

13 months agoStraighten up #includes
Alberto Leiva Popper [Wed, 22 May 2024 01:25:33 +0000 (19:25 -0600)] 
Straighten up #includes

Also, remove cyclical #includes, to further automate this.

13 months agoAdd roadmap to the site
Alberto Leiva Popper [Fri, 17 May 2024 19:04:22 +0000 (13:04 -0600)] 
Add roadmap to the site

Still not referenced by the index; needs discussion still.

13 months agoMerge branch 'carlosm3011-main'
Alberto Leiva Popper [Thu, 16 May 2024 23:09:15 +0000 (17:09 -0600)] 
Merge branch 'carlosm3011-main'

13 months agoMerge some duplicate code
Alberto Leiva Popper [Thu, 16 May 2024 18:42:31 +0000 (12:42 -0600)] 
Merge some duplicate code

New rule: BIOs no longer allowed in ASN1 JSON functions outside of
libcrypto_util.c.

13 months agoFIX TODO: not validating @alg
Alberto Leiva Popper [Thu, 16 May 2024 18:42:12 +0000 (12:42 -0600)] 
FIX TODO: not validating @alg

False alarm; the getter was just redundant. @alg was beind validated at
validate_certificate_public_key_algorithm().

13 months agoFix TODO: Use extension_metadata.destructor more
Alberto Leiva Popper [Wed, 15 May 2024 23:23:46 +0000 (17:23 -0600)] 
Fix TODO: Use extension_metadata.destructor more

This frees the extension callbacks from having to decode and free the
extensions themselves.

13 months agoFix TODO: Choose a X509V3_EXT_print() flag
Alberto Leiva Popper [Wed, 15 May 2024 23:22:41 +0000 (17:22 -0600)] 
Fix TODO: Choose a X509V3_EXT_print() flag

X509V3_EXT_print() was being summoned to print extensions unrelated to
RPKI. The TODO wanted me to pick a suitable flag for extensions unknown
even to libcrypto.

For reference, this is how X509V3_EXT_print() prints an AIA, as a known
extension:

    CA Issuers - URI:rsync://rpki.ripe.net/repository/aca/KpSo3VVK5wEHIJnHC2QHVV3d5mk.cer

This is how X509V3_EXT_print() prints the same AIA, as an unknown
extension, X509V3_EXT_PARSE_UNKNOWN enabled:

        0:d=0  hl=2 l=  82 cons: SEQUENCE
        2:d=1  hl=2 l=  80 cons: SEQUENCE
        4:d=2  hl=2 l=   8 prim: OBJECT            :CA Issuers
       14:d=2  hl=2 l=  68 prim: cont [ 6 ]

This is how X509V3_EXT_print() prints the same AIA, as an unknown
extension, X509V3_EXT_DUMP_UNKNOWN enabled:

    0000 - 30 52 30 50 06 08 2b 06-01 05 05 07 30 02 86 44   0R0P..+.....0..D
    0010 - 72 73 79 6e 63 3a 2f 2f-72 70 6b 69 2e 72 69 70   rsync://rpki.rip
    0020 - 65 2e 6e 65 74 2f 72 65-70 6f 73 69 74 6f 72 79   e.net/repository
    0030 - 2f 61 63 61 2f 4b 70 53-6f 33 56 56 4b 35 77 45   /aca/KpSo3VVK5wE
    0040 - 48 49 4a 6e 48 43 32 51-48 56 56 33 64 35 6d 6b   HIJnHC2QHVV3d5mk
    0050 - 2e 63 65 72                                       .cer

Eh. These are good and all, but they mess up the JSON, so I decided to
dump these as octet strings instead:

        3052305006082b0601050507300286447273796e633a2f2f72706b692e726970
        652e6e65742f7265706f7369746f72792f6163612f4b70536f3356564b357745
        48494a6e484332514856563364356d6b2e636572

13 months agoMerge some duplicate code
Alberto Leiva Popper [Wed, 15 May 2024 21:08:56 +0000 (15:08 -0600)] 
Merge some duplicate code

13 months agoPrivatize the asn_codec_ctx_t into the ASN.1 code
Alberto Leiva Popper [Wed, 15 May 2024 18:05:11 +0000 (12:05 -0600)] 
Privatize the asn_codec_ctx_t into the ASN.1 code

Fort has `--asn1-decode-max-stack`, a global configuration option for
the maximum stack usage. So there's no need to pass this as an argument.

13 months agoRemove the DER validator
Alberto Leiva Popper [Wed, 15 May 2024 01:11:19 +0000 (19:11 -0600)] 
Remove the DER validator

rfc6488#3.1.l states we need to check "the signed object is DER
encoded." But that's not what this code was doing.

First, the validation was only kicking in specifically during the
decoding of the ContentInfo, which is just the outermost layer of the
signed object.

Second, the validation was incorrect. This seems to be the intended
algorithm in pseudocode:

boolean is_der_encoded(original_bytes):
der_bytes = der_encode(ber_decode(original_bytes));
return (original_bytes equal der_bytes);

This is what the code was actually doing:

boolean is_der_encoded(original_bytes):
der_bytes = der_encode(ber_decode(original_bytes));
return (original_bytes.length equals der_bytes.length);

These two quirks made the validation mostly a no-op.

There's also the issue that this implementation seems inefficient,
especially since Fort doesn't need to DER-encode anywhere else. By
checking the encoding while parsing, I would save a lot of memory
in addition to being able to delete that mess of encoding functions.

But I'm going to have to push that to the future. This is growing more
ambitious than I can afford during a release review, and given that the
code wasn't really doing anything productive in the first place, I'm not
losing much by simply axing it for now.

13 months agoGeneral pre-release review and testing
Alberto Leiva Popper [Tue, 14 May 2024 23:51:59 +0000 (17:51 -0600)] 
General pre-release review and testing

- Employ libssl's OID parsing rather than implement it from scratch.
- Rename `struct signed_object_args` to `struct ee_cert`, since it's
  just a bunch of EE certificate data.
- Remove `struct signed_data`, because it wasn't actually contributing
  anything.

13 months agoSpread error messages in --mode=print's failure paths
Alberto Leiva Popper [Fri, 10 May 2024 23:44:36 +0000 (17:44 -0600)] 
Spread error messages in --mode=print's failure paths

They're probably not very helpful themselves, but the stack traces
might serve as an admittedly inelegant way to infer the xpath to the
problem.

Otherwise, this could only be fixed by switching to a different JSON
library. But that's a problem for another decade.

13 months agoAutomatically download if file is an rsync URL
Alberto Leiva Popper [Fri, 10 May 2024 21:05:30 +0000 (15:05 -0600)] 
Automatically download if file is an rsync URL

rsync cannot download into standard output... which means rsync'd files
cannot be elegantly piped as standard output to --mode=print. So either
the rsync has to be done manually by the user... or --mode=print has to
do it internally by itself.

And looking at the code that resulted... I now wish I had gone with the
former option. Because of the long overdue cache refactors, the user
needs to include --tal for this rsync to be compatible with the cache.
This sucks.

As a workaround, Fort will rsync into /tmp if --tal and/or --local-cache
aren't supplied:

$ fort --mode=print \
--validation-log.enabled \
--validation-log.level debug \
rsync://a.b.c/d/CRL.crl
...
May 10 13:32:44 DBG [Validation]: Executing rsync:
May 10 13:32:44 DBG [Validation]:     rsync
May 10 13:32:44 DBG [Validation]:     ...
May 10 13:32:44 DBG [Validation]:     rsync://a.b.c/d/CRL.crl
May 10 13:32:44 DBG [Validation]:     /tmp/fort-Q7tMhz/CRL.crl
...
{
"tbsCertList": {
"version": 1,
...

13 months agoPatch TODO: Stop accessing GENERAL_NAME attributes directly
Alberto Leiva Popper [Thu, 9 May 2024 23:49:10 +0000 (17:49 -0600)] 
Patch TODO: Stop accessing GENERAL_NAME attributes directly

13 months agoPatch TODO: Always release decoded BER, even on error
Alberto Leiva Popper [Thu, 9 May 2024 23:48:42 +0000 (17:48 -0600)] 
Patch TODO: Always release decoded BER, even on error

13 months agoReindent
Alberto Leiva Popper [Thu, 9 May 2024 23:44:03 +0000 (17:44 -0600)] 
Reindent

Reduce 80 column limit violations in the ASN1 code.

13 months agoPatch bad array indexing
Alberto Leiva Popper [Thu, 9 May 2024 18:25:32 +0000 (12:25 -0600)] 
Patch bad array indexing

13 months agoReview jsonification
Alberto Leiva Popper [Thu, 9 May 2024 18:18:22 +0000 (12:18 -0600)] 
Review jsonification

They want Fort to jsonify more faithfully to the ASN1 grammar,
rather than human-friendlier.

A --human-readable flag wouldn't go amiss, but I should probably waint
until someone requests it.

13 months agoAdd sequence BIO
Alberto Leiva Popper [Wed, 8 May 2024 16:48:09 +0000 (10:48 -0600)] 
Add sequence BIO

It's a BIO that concatenates two other BIOs when reading.
Needed so the file parser can read the file header twice, without using
rewind(3).

(Which can't be used while piping, as it turns out.)

This allows printing a subfile from a delta or snapshot:

$ xmlstarlet sel -t -v "//_:publish[2]" delta.xml |
base64 --decode |
fort --mode=print

13 months agoPatch memory leaks and bad memory accesses
Alberto Leiva Popper [Wed, 8 May 2024 15:42:53 +0000 (09:42 -0600)] 
Patch memory leaks and bad memory accesses

14 months agoAllow --mode=print to read file from stdin
Alberto Leiva Popper [Mon, 6 May 2024 22:10:14 +0000 (16:10 -0600)] 
Allow --mode=print to read file from stdin

Either works:

$ fort --mode=print   < cert.cer
$ fort --mode=print - < cert.cer

Progress for #122.

14 months agoFix compilation in OpenSSL < 3 and LibreSSL
Alberto Leiva Popper [Mon, 6 May 2024 21:54:16 +0000 (15:54 -0600)] 
Fix compilation in OpenSSL < 3 and LibreSSL

14 months agoPurge early output files writability validations
Alberto Leiva Popper [Mon, 6 May 2024 19:24:22 +0000 (13:24 -0600)] 
Purge early output files writability validations

Fort used to clear the --output.roa and --output.bgpsec files to make
sure they were writable, during early validations.

So this is why the files spent so much time being empty! This was not
acceptable. It didn't even guarantee the files would still remain
writable by the time Fort needed to properly populate them.

Adjacent progress for #124.

14 months agoRemove file mode hardcode from file_write
Alberto Leiva Popper [Mon, 6 May 2024 19:19:18 +0000 (13:19 -0600)] 
Remove file mode hardcode from file_write

This function was always including the binary flag ("b") during
fopen(2), which seems to be inappropriate for the --output.roa and
--output.bgpsec files.

Well, the Unixes don't do anything with this flag, so this is more of a
semantic fine-tune than a bugfix.

14 months agoAdd --file-type
Alberto Leiva Popper [Tue, 30 Apr 2024 21:43:41 +0000 (15:43 -0600)] 
Add --file-type

Allows the user to bypass the file type guesser. For example, to force
the ROA parser:

$ fort --mode=print --file-type roa abcd.bin

Progress for #122.

14 months agoImprove the file type detector for --mode=print
Alberto Leiva Popper [Mon, 29 Apr 2024 21:52:45 +0000 (15:52 -0600)] 
Improve the file type detector for --mode=print

Guesses the file type from the ASN1 shape.

Progress for #122.

14 months agoAdd CRLs and their extensions to --mode=print
Alberto Leiva Popper [Mon, 29 Apr 2024 20:56:22 +0000 (14:56 -0600)] 
Add CRLs and their extensions to --mode=print

Progress for #122.

14 months agoAdd certificate extensions to --mode=print
Alberto Leiva Popper [Thu, 25 Apr 2024 00:00:58 +0000 (18:00 -0600)] 
Add certificate extensions to --mode=print

Hmm. I think this bumps the minimum required LibreSSL to v3.5.0.

Progress for #122.

14 months agoAdd certificates to --mode=print
Alberto Leiva Popper [Sun, 21 Apr 2024 19:27:25 +0000 (13:27 -0600)] 
Add certificates to --mode=print

This includes .cer files, as well as "certificates" signed object
fields.

Known caveat: The .SignedData.certificates[*].tbsCertificate.extensions
are pretty ugly still.

Progress for #122.

14 months agoAdd --mode=print
Alberto Leiva Popper [Sun, 21 Apr 2024 19:15:07 +0000 (13:15 -0600)] 
Add --mode=print

Prints an RPKI file in standard output. Only the asn1c signed objects
(ROAs, Manifests and Ghostbusters) are implemented right now.

In particular, it doesn't jsonify certificates nor CRLs yet, which
includes the "certificate" field of the signed objects.

Progress for #122.

14 months agoASN.1: Remove random_fills
Alberto Leiva Popper [Sun, 21 Apr 2024 19:14:02 +0000 (13:14 -0600)] 
ASN.1: Remove random_fills

Unused code. Don't know what it's for.

14 months agoASN.1: Remove C++ glue
Alberto Leiva Popper [Sun, 21 Apr 2024 19:13:40 +0000 (13:13 -0600)] 
ASN.1: Remove C++ glue

I might regret this one day.

14 months agoASN.1: Remove the XER decoder
Alberto Leiva Popper [Sun, 21 Apr 2024 19:12:59 +0000 (13:12 -0600)] 
ASN.1: Remove the XER decoder

Unused code. Been wanting to do this for years.

14 months agoASN.1: Remove the OER and PER encoders and decoders
Alberto Leiva Popper [Sun, 21 Apr 2024 19:11:45 +0000 (13:11 -0600)] 
ASN.1: Remove the OER and PER encoders and decoders

Unused code. Been wanting to do this for years.

14 months agoagregada rtrlib en la imagen de docker 111/head
Carlos Martinez [Thu, 18 Apr 2024 11:28:42 +0000 (11:28 +0000)] 
agregada rtrlib en la imagen de docker