openbsd
16 months agoImplement support for pointer authentication (PAC) in userland. With PAC
kettenis [Sat, 10 Jun 2023 19:30:48 +0000 (19:30 +0000)]
Implement support for pointer authentication (PAC) in userland.  With PAC
it is possible to "sign" pointers with a hidden key.  The signature is
placed in unused bits of the pointer and can be checked later.  This can
be used to provide "tail CFI" that is similar to what retguard provides.

Debuggers need to be aware of the fact that pointers can be signed.  For
this purpose a new PT_PACMASK ptrace(2) request is introduced that returns
as mask that indicates the bits used for the signature.  Separate masks
are provided for code and data pointers even though the masks are identical
in the current implementation.  These masks are also written into a special
note section in the core dump.

ok patrick@

16 months agoAdd qcpas(4), a driver for the Peripheral Authentication Service found on
patrick [Sat, 10 Jun 2023 18:31:38 +0000 (18:31 +0000)]
Add qcpas(4), a driver for the Peripheral Authentication Service found on
Qualcomm SoCs.

The immediate task for this driver is to provide firmware to the auxiliary
cores and to bring them up.  This is accomplished by parsing the ELF files
and providing the data in certain memory regions, and telling qcscm(4) to
check and execute the firmware on the auxiliary cores.

With the cores up we can now talk to the firmware.  The glink-edge subnode
indicates that we can talk to it using the GLINK protocol over shared memory
provided by qcsmem(4).  This interface is essentially a channel multiplexer,
with each channel identified through an ASCII string.

One of those channels connects to a PMIC router, which allows us to talk to
the battery manager service that contains information about the charging and
battery states.

ok drahn@ kettenis@

16 months agoConvert EVP_Digest{Sign,Verify}* to one-shot for TLSv1.3
tb [Sat, 10 Jun 2023 15:34:36 +0000 (15:34 +0000)]
Convert EVP_Digest{Sign,Verify}* to one-shot for TLSv1.3

Using one-shot EVP_DigestSign() and EVP_DigestVerify() is slightly shorter
and is needed for Ed25519 support.

ok jsing

16 months agosync
deraadt [Sat, 10 Jun 2023 15:16:43 +0000 (15:16 +0000)]
sync

16 months agoksh: remove broken special handling of test -t
op [Sat, 10 Jun 2023 07:24:21 +0000 (07:24 +0000)]
ksh: remove broken special handling of test -t

Drop the vestiges of the pre-POSIX support of `test -t' defaulting to fd
1.  It doesn't work and it always succeed since "-t" is treated as a
string by default when no argument (fd) is specified.

diff by Lucas (lucas [at] sexy [dot] is) with minor change by me.
ok millert@

16 months agotest: fix description of -t: it has no default
op [Sat, 10 Jun 2023 07:19:39 +0000 (07:19 +0000)]
test: fix description of -t: it has no default

-t always requires the fd number as argument, there's no default.  With
only one argument -t is equivalent to `test -n -t' and so banally always
true.

diff from Lucas (lucas [at] sexy [dot] is)
ok millert@

16 months agoFile new test-bleichenbacher-timing-pregenerate.py under failing tests
tb [Sat, 10 Jun 2023 05:00:58 +0000 (05:00 +0000)]
File new test-bleichenbacher-timing-pregenerate.py under failing tests
until someone finds time and motivation to figure out how to use this.

16 months agowe always create keys 2 releases into the future
deraadt [Fri, 9 Jun 2023 15:31:44 +0000 (15:31 +0000)]
we always create keys 2 releases into the future

16 months agoReadd "-wgpsk", accidentially dropped in r1.465 adding "wgdescr"
kn [Fri, 9 Jun 2023 12:22:01 +0000 (12:22 +0000)]
Readd "-wgpsk", accidentially dropped in r1.465 adding "wgdescr"

Noticed by Bradley Latus
Diff from Jane Johansson
OK tb

16 months agoRemove dead code.
beck [Thu, 8 Jun 2023 22:02:40 +0000 (22:02 +0000)]
Remove dead code.

must_be_ca can no longer be 0 after the proxy cert code got nuked,
so change this to an if. must_be_ca is now -1 for a leaf, or 1 for
a non leaf.

ok tb@

16 months agoFix mismatch between function prototype and definition, from Anindya
nicm [Thu, 8 Jun 2023 11:17:28 +0000 (11:17 +0000)]
Fix mismatch between function prototype and definition, from Anindya
Mukherjee.

16 months agoFrom the description of "openssl verify", delete the duplicate and
schwarze [Thu, 8 Jun 2023 09:40:17 +0000 (09:40 +0000)]
From the description of "openssl verify", delete the duplicate and
outdated list of error messages.  Instead, refer to the master copy
of that list in X509_STORE_CTX_get_error(3).

Suggested by and OK tb@, and beck@ also agrees with the idea.

16 months agoadd tests related to --libs-only-l and the likes
espie [Thu, 8 Jun 2023 08:57:02 +0000 (08:57 +0000)]
add tests related to --libs-only-l and the likes

remove extraneous spaces from reference output now that we're closer
to the original pkg-config

16 months agomove to perl use v5.36
espie [Thu, 8 Jun 2023 08:55:27 +0000 (08:55 +0000)]
move to perl use v5.36
also fix a discrepancy wrt the "original" pkg-config

thanks to tb@ for testing.

17 months agoRename ifconfig tcprecvoffload to tcplro. It is shorter and
bluhm [Wed, 7 Jun 2023 18:42:40 +0000 (18:42 +0000)]
Rename ifconfig tcprecvoffload to tcplro.  It is shorter and
more consistent.
discussed with jan@ mvs@ chris@ claudio@ dlg@

17 months agoDocument CMS signing-time <> mod-time trick
job [Wed, 7 Jun 2023 16:23:02 +0000 (16:23 +0000)]
Document CMS signing-time <> mod-time trick

17 months agodo not pass @_ to code snippets, prepare for 5.36
espie [Wed, 7 Jun 2023 15:09:01 +0000 (15:09 +0000)]
do not pass @_ to code snippets, prepare for 5.36

found out by aja@

17 months agoAdd portable version and m88k-specific version lb() function, because
aoyama [Wed, 7 Jun 2023 12:56:22 +0000 (12:56 +0000)]
Add portable version and m88k-specific version lb() function, because
unfortunately gcc3 does not have __builtin_clz().

ok miod@ otto@

17 months agoCosmetic tweak for previous
tb [Wed, 7 Jun 2023 11:09:08 +0000 (11:09 +0000)]
Cosmetic tweak for previous

Once we expect ASPA version 1 and someone sends us version 0, make that
explicit instead of complaining about ASN1_INTEGER_get_uint64() failing.

ok job

17 months agoRefer to the field "thisUpdate" instead of the non-existent "lastUpdate".
schwarze [Wed, 7 Jun 2023 10:53:30 +0000 (10:53 +0000)]
Refer to the field "thisUpdate" instead of the non-existent "lastUpdate".
Similar to X509_get0_notBefore(3) rev. 1.6.
Requested by and OK tb@.

17 months agoIn anticipation of a bump of the ASPA eContent profile version, update
job [Wed, 7 Jun 2023 10:46:34 +0000 (10:46 +0000)]
In anticipation of a bump of the ASPA eContent profile version, update
valid_econtent_version() to allow for non-zero versions.

OK tb@

17 months agoupon resume, fpureset() was being called prematurely (before cpu_init,
deraadt [Wed, 7 Jun 2023 04:46:09 +0000 (04:46 +0000)]
upon resume, fpureset() was being called prematurely (before cpu_init,
which does not matter today, but will matter a lot in near future).
But actually it isn't needed at all, cpu_init() does it again.
So remove the call.
ok guenther

17 months agoIn 1995, Eric A. Young chose a confusing name for the "lastUpdate" field
schwarze [Tue, 6 Jun 2023 16:20:13 +0000 (16:20 +0000)]
In 1995, Eric A. Young chose a confusing name for the "lastUpdate" field
of the X509_CRL_INFO object.  It should have been called "thisUpdate"
like in RFC 5280 section 5.1 (and in its precursor RFC 2459).  Then again,
RFC 2459 was only published in 1999, so maybe the terminology wasn't
firmly established yet when Young wrote his code several years earlier -
just guessing, neither we nor the OpenSSL folks appear to know the real
reasons...

Anyway, we have been stuck with the "lastUpdate" names in the API for
more than two decades now, so clarify in the documentation what they
refer to and what they really mean.

Requested by and OK tb@.

17 months agoFix typo in comment: exta -> extra
tb [Tue, 6 Jun 2023 16:10:56 +0000 (16:10 +0000)]
Fix typo in comment: exta -> extra

17 months agoUse same pattern to work with offset by using a uint8_t pointer that
claudio [Tue, 6 Jun 2023 16:09:35 +0000 (16:09 +0000)]
Use same pattern to work with offset by using a uint8_t pointer that
is loaded with ibuf_data(). This is by no means better but allows to
switch ibuf_data() to return void *.
OK tb@

17 months agoMake the tlsv1.0 and tlsv1.1 options in relayd do nothing
beck [Tue, 6 Jun 2023 15:16:52 +0000 (15:16 +0000)]
Make the tlsv1.0 and tlsv1.1 options in relayd do nothing

Also document that fact, and that the existing ssl3 option
does nothing. This changes relayd to no longer request tls1.0
or tls1.1 in preparation for the upcoming deprecation of these
out of data protocols

ok jsing@ bluhm@ tb@ claudio@ benno@

17 months agoUse ibuf_seek() instead of ibuf_data() + offset constructs. Effect is
claudio [Tue, 6 Jun 2023 13:27:49 +0000 (13:27 +0000)]
Use ibuf_seek() instead of ibuf_data() + offset constructs. Effect is
the same in these cases.
OK tb@

17 months agoFold disk crypto question '?' text into prompt
kn [Tue, 6 Jun 2023 09:35:44 +0000 (09:35 +0000)]
Fold disk crypto question '?' text into prompt

Since this question moved after the root disk one and '?' stopped listing disks,
hoist the implementation details in order to drop the custom answer and reuse
existing ask_yn(), thus

Encrypt the root disk? (yes, no or '?' for details) [no] ?
Create a passphrase protected CRYPTO softraid volume to be used as root disk.
Encrypt the root disk? (yes, no or '?' for details) [no]
becomes
Encrypt the root disk? (passphrase CRYPTO softraid) [no]

Prodded by afresh1

17 months agodon't need mcx_uptime() now that we have nsecuptime()
dlg [Tue, 6 Jun 2023 01:40:04 +0000 (01:40 +0000)]
don't need mcx_uptime() now that we have nsecuptime()

ok jmatthew@

17 months agoFix copy+paste error in x509 asn regress
job [Mon, 5 Jun 2023 18:32:06 +0000 (18:32 +0000)]
Fix copy+paste error in x509 asn regress

17 months agoImprove the description of CMS_get0_signers()
job [Mon, 5 Jun 2023 17:17:23 +0000 (17:17 +0000)]
Improve the description of CMS_get0_signers()

Suggestion from Małgorzata Olszówka, they noted:

"The original wording suggests that it is required to execute
CMS_get0_signers() after CMS_verify(), while it is CMS_get0_signers()
that requires prior successful invocation of CMS_verify()."

OK tb@

17 months agoSync json.c with rpki-client rev 1.3:
claudio [Mon, 5 Jun 2023 16:24:05 +0000 (16:24 +0000)]
Sync json.c with rpki-client rev 1.3:
Add an extra argument compact to json_do_object() to instruct the parser
to dump this object on a single line.

While one can select on an object to object basis for arrays the compact
setting is inherited from the surrounding object.

OK tb@

17 months agoAdd an extra argument compact to json_do_object() to instruct the parser
claudio [Mon, 5 Jun 2023 14:19:13 +0000 (14:19 +0000)]
Add an extra argument compact to json_do_object() to instruct the parser
to dump this object on a single line.

While one can select on an object to object basis for arrays the compact
setting is inherited from the surrounding object.

Requested by job@, OK job@ tb@

17 months agoStore timeouts as int, not u_int as they are limited to INT_MAX.
millert [Mon, 5 Jun 2023 13:24:36 +0000 (13:24 +0000)]
Store timeouts as int, not u_int as they are limited to INT_MAX.
Fixes sign compare warnings systems with 32-bit time_t due to type
promotion.  OK djm@

17 months agoDo not calculate IP, TCP, UDP checksums on loopback interface.
bluhm [Mon, 5 Jun 2023 11:35:46 +0000 (11:35 +0000)]
Do not calculate IP, TCP, UDP checksums on loopback interface.

Packets sent over loopback got their checksums calculated twice.
In the output path they were filled in and during TCP/IP input all
checksums were calculated again to be compared with the previous
result.

Avoid this by claiming that lo(4) supports hardware checksum
offloading.  For each packet convert the flag that the checksum
should be calculated to the flag that it has been checked successfully.
Keep the flag that it should be calculated for the case that it may
be bridged or forwarded later.

A drawback is that "tcpdump -ni lo0 -v" reports invalid checksum.
But that is the same with physical interfaces and hardware offloading.

OK dlg@

17 months agopfsync_update_state() is too paranoid about pf_state::pfsync_state.
sashan [Mon, 5 Jun 2023 08:45:20 +0000 (08:45 +0000)]
pfsync_update_state() is too paranoid about pf_state::pfsync_state.
For example it should not be surprised if caller asks to remove
state from pfsync queue which has been removed already. That kind
of race is sorted out later when pfsync_update_state() calls to
pfsync_q_ins()/pfsync_q_del().  Change relaxes pfsync_update_state()
to panic on sync_state value which is unknown.

OK dlg@

17 months agopf_remove_state() should not attempt to remove state which
sashan [Mon, 5 Jun 2023 08:37:27 +0000 (08:37 +0000)]
pf_remove_state() should not attempt to remove state which
is already removed.

OK dlg@

17 months agouse getline(3) instead of fgetln(3)
op [Mon, 5 Jun 2023 08:07:18 +0000 (08:07 +0000)]
use getline(3) instead of fgetln(3)

while here simplify the "From " check too.
ok millert@

17 months agoReinstate bn_isqrt.c r1.8 and crypto_lock.c r1.3
tb [Sun, 4 Jun 2023 17:28:35 +0000 (17:28 +0000)]
Reinstate bn_isqrt.c r1.8 and crypto_lock.c r1.3

This traded local copies of CTASSERT() to the one in crypto_internal.h.
This change was backed out due to SHA-512 breakage on STRICT_ALIGNMENT
architectures still using Fred Flintstone's gcc without asm sha512.

Original commit message:

Use crypto_internal.h's CTASSERT()

Now that this macro is available in a header, let's use that version
rather than copies in several .c files.

discussed with jsing

17 months agoCorrect the comment in get_range() describing the range syntax.
millert [Sun, 4 Jun 2023 17:27:27 +0000 (17:27 +0000)]
Correct the comment in get_range() describing the range syntax.

17 months agoMake ruby-openssl cope with default ruby change
tb [Sun, 4 Jun 2023 11:33:45 +0000 (11:33 +0000)]
Make ruby-openssl cope with default ruby change

17 months agobn_mod_inverse tweaks
tb [Sun, 4 Jun 2023 07:14:47 +0000 (07:14 +0000)]
bn_mod_inverse tweaks

Provide prototype that is hidden behind LIBRESSL_INTERNAL for portable
and or in result for future extensibility.

17 months agoMore thorough write-afetr-free checks.
otto [Sun, 4 Jun 2023 06:58:33 +0000 (06:58 +0000)]
More thorough write-afetr-free checks.

On free, chunks (the pieces of a pages used for smaller allocations)
are junked and then validated after they leave the delayed free
list.  So after free, a chunk always contains junk bytes. This means
that if we start with the right contents for a new page of chunks,
we can *validate* instead of *write* junk bytes when (re)-using a
chunk.

With this, we can detect write-after-free when a chunk is recycled,
not justy when a chunk is in the delayed free list.  We do a little
bit more work on initial allocation of a page of chunks and when
re-using (as we validate now even on junk level 1).

Also: some extra consistency checks for recallocaray(3) and fixes
in error messages to make them more consistent, with man page bits.

Plus regress additions.

17 months agoRemove declarations of unused local variables, an unused function
krw [Sat, 3 Jun 2023 21:37:53 +0000 (21:37 +0000)]
Remove declarations of unused local variables, an unused function
(get_long) and add missing {} in devsw[1] initialization.

Most from 2011 NetBSD commit by tsutui.

No functional change.

Build tested and ok kn@

17 months agoAdd regress coverage for BN_mod_inverse()
tb [Sat, 3 Jun 2023 21:20:29 +0000 (21:20 +0000)]
Add regress coverage for BN_mod_inverse()

This would detect the aliasing issue reported by Guido Vranken fixed
in bn_gcd.c r1.28. Most testcases are from BoringSSL's regress test.

17 months agodrop `uptodate()' check from hack(6)
op [Sat, 3 Jun 2023 15:19:38 +0000 (15:19 +0000)]
drop `uptodate()' check from hack(6)

hack(6) scrapes $PATH to find its executable and compare the mtime to
the save file and bone file.  If the game is newer than those, they're
not loaded.

Drop this feature.  /usr/games is not in the default $PATH anymore, and
the format for those file didn't change since the import.

Diff from Anton Konyahin (me [at] konyahin [dot] xyz)

17 months agopledge(2): stdio: permit restricted profil(2) for moncontrol(3)
cheloha [Fri, 2 Jun 2023 17:44:29 +0000 (17:44 +0000)]
pledge(2): stdio: permit restricted profil(2) for moncontrol(3)

Currently, pledged '-pg' binaries get killed in _mcleanup() when they
try to disable profil(2) via moncontrol(3).

Disabling profil(2) is harmless.  Add profil(2) to the "stdio"
pledge(2) promise and permit profil(2) calls when the scale argument
is zero.  Enabling profil(2) remains forbidden in pledged processes.

This gets us one step closer to making '-pg' binaries compatible with
pledge(2).  The next step is to decide how to exfiltrate the profiling
data from the process during _mcleanup().

Prompted by semarie@.  Cleaned up by deraadt@.  With input from
deraadt@, espie@, and semarie@.

"Looks good" deraadt@
pledge(2) pieces ok semarie@

17 months agoFix variable reuse in BN_mod_inverse()
tb [Fri, 2 Jun 2023 17:15:30 +0000 (17:15 +0000)]
Fix variable reuse in BN_mod_inverse()

The somewhat strange calculation m = a^{-1} (mod m) can return 0. This
breaks because of BN_nnmod() having delicate semantics of which variable
can be reused. BN_nnmod(a, a, m, ctx) works and the library relies on that.

Here, the code ends up doing BN_nnmod(m, a, m, ctx) and this doesn't work.
If the result of the initial BN_mod() is negative, then BN_nnmod() will
return 0.

Problem reported by Guido Vranken in
https://github.com/openssl/openssl/issues/21110

This code is well covered by regress, but it does not currently have
explicit test coverage. Such will be added soon.

ok beck jsing

17 months agofix typo
tb [Fri, 2 Jun 2023 08:35:10 +0000 (08:35 +0000)]
fix typo

17 months agoMissed a trailing space.
krw [Fri, 2 Jun 2023 00:10:25 +0000 (00:10 +0000)]
Missed a trailing space.

17 months agoAdd support for wireguard peer descriptions
kn [Thu, 1 Jun 2023 18:57:53 +0000 (18:57 +0000)]
Add support for wireguard peer descriptions

"wgdescr[iption] foo" to label one peer (amongst many) on a wg(4) interface,
"-wgdescr[iption]" or "wgdescr ''" to remove the label, completely analogous
to existing interface discriptions.

Idea/initial diff from Mikolaj Kucharski (OK sthen)
Tests/prodded by Hrvoje Popovski
Tweaks/manual bits from me
Feedback deraadt sthen mvs claudio
OK claudio

17 months agoExpunge a bunch of eye searing trailing whitespace.
krw [Thu, 1 Jun 2023 17:24:56 +0000 (17:24 +0000)]
Expunge a bunch of eye searing trailing whitespace.

17 months agoChange wakeup_proc() to no longer grab the SCHED_LOCK() instead it must
claudio [Thu, 1 Jun 2023 10:21:26 +0000 (10:21 +0000)]
Change wakeup_proc() to no longer grab the SCHED_LOCK() instead it must
be called with SCHED_LOCK() held. Also add an extra argument to update
the process flags p_flag so that the timeout handler can set the
P_TIMEOUT flag before making the process runnable.
OK mpi@

17 months agoCheck the F_NEXTHOP flag on the right kroute6 object.
claudio [Thu, 1 Jun 2023 09:47:34 +0000 (09:47 +0000)]
Check the F_NEXTHOP flag on the right kroute6 object.

On multipath routes the check ended up checking the wrong route for the
nexthop update. This resulted in a use-after-free in kroute_detach_nexthop().
This only affects IPv6 in the IPv4 code path the right object was already used.

Thanks to sthen@ for providing the debug information to track this down.
OK sthen@ tb@

17 months agoRemove the speed test again
tb [Thu, 1 Jun 2023 09:46:00 +0000 (09:46 +0000)]
Remove the speed test again

It takes too much time and we now know that all covered ciphers can cope
with unaligned input and output on all tested architectures.

17 months agoEnable forwarding of ix(4) LRO Pakets via TSO
jan [Thu, 1 Jun 2023 09:05:33 +0000 (09:05 +0000)]
Enable forwarding of ix(4) LRO Pakets via TSO

Also fix ip6_forwarding of TSO packets with tcp_if_output_tso().

With a lot of testing from Hrvoje Popovski
and a lot of tweaks from bluhm@

ok bluhm@

17 months agoRework tls_check_subject_altname() error handling
tb [Thu, 1 Jun 2023 07:32:25 +0000 (07:32 +0000)]
Rework tls_check_subject_altname() error handling

Default to having rv = -1 and explicitly goto done to set rv = 0.
This matches other code better.

ok jsing

17 months agoCheck for X509_get_ext_d2i() failure
tb [Thu, 1 Jun 2023 07:29:15 +0000 (07:29 +0000)]
Check for X509_get_ext_d2i() failure

X509_get_ext_d2i() (or rather X509V3_get_d2i()) can return NULL for
various reasons. If it fails because the extension wasn't found, it
sets *crit = -1. In any other case, e.g., the cert is bad or we ran
out of memory in X509V3_EXT_d2i(), crit is set to something else, so
we should actually error.

ok jsing

17 months agoAvoid a potentially overflowing check
tb [Thu, 1 Jun 2023 02:34:23 +0000 (02:34 +0000)]
Avoid a potentially overflowing check

This doesn't actually overflow, but still is poor style.

Speaking of which: this is now the second time I get to fix something
reported by Nicky Mouha by way of a blog post. The first time was the
actual SHA-3 buffer overflow in Python where it is not entirely clear
who screwed up and how. Hopefully next time proper communication will
happen and work.

ok jsing

17 months agoadd missing include of time.h
op [Wed, 31 May 2023 16:51:46 +0000 (16:51 +0000)]
add missing include of time.h

spotted after a report on OpenSMTPD-portable.  While here include
sys/time.h in smtpd.h, as noted in event_init(3), since it includes
event.h.

ok millert@

17 months agoUpdate to reflect that default Ruby version in ports is now 3.2
jeremy [Wed, 31 May 2023 15:27:45 +0000 (15:27 +0000)]
Update to reflect that default Ruby version in ports is now 3.2

17 months agoRemove declarations for unused search_label() local variables
krw [Wed, 31 May 2023 13:49:56 +0000 (13:49 +0000)]
Remove declarations for unused search_label() local variables
error, i, p and poff. Fewer complaints from gcc -Wall.

The same was done to the NetBSD version in 2011 by tsutui.

Remove two more recent load_disklabel() comments implying that
search_label() checks MBR partitions. It doesn't and never has
despite the enticing names/types of the above unused variables.

No functional change.

17 months agoadd net_tq_barriers
dlg [Tue, 30 May 2023 23:55:42 +0000 (23:55 +0000)]
add net_tq_barriers

this waits once for something to end in all the net tqs.

ok claudio@

17 months agoUse generic checksum calculation for TCP SYN+ACK packets.
bluhm [Tue, 30 May 2023 19:32:57 +0000 (19:32 +0000)]
Use generic checksum calculation for TCP SYN+ACK packets.

Our syn cache did checksum calculation by hand, instead of the
established mechanism in ip output.  The software-checksummed counter
increased once per incoming TCP connection.

Just set the flag M_TCP_CSUM_OUT in syn_cache_respond() and let
in_proto_cksum_out() do the work later.  Then hardware checksumming
is used where available.  Also remove redundant code.  The unhandled
af case is handled in the first switch statement of the function.

tested by Hrvoje Popovski; OK mvs@

17 months agofail when an argument is given on 'id -R'
op [Tue, 30 May 2023 16:44:16 +0000 (16:44 +0000)]
fail when an argument is given on 'id -R'

from Lucas (lucas [at] sexy [dot] is).
ok millert@

17 months agoFixup file modification timestamps to optimize failover from RRDP to RSYNC
job [Tue, 30 May 2023 16:02:28 +0000 (16:02 +0000)]
Fixup file modification timestamps to optimize failover from RRDP to RSYNC

In the RSYNC protocol a file's last modification time and its size are
used to determine whether sending a (partial) copy over the wire is needed.
Previously, when RRDP data structures are serialized to disk, the mtime of
files in DIR_VALID ended up being UTIME_NOW.

Thus, the mtimes of files obtained through RRDP will never match the mtimes
of the same files available through RSYNC - causing each and every file to
be added to the file transfer list.

Instead, use the internal timestamps of RPKI files as the last modified
timestamp. Specifically, for Signed Objects (ROAs, MFTs, GBRs, TAKs, ASPAs)
the CMS signing-time, for .cer files the X.509 notBefore, and for .crl files
the CRL lastUpdate. This results in a surprising optimization for the number
files which have to be transfered.

OK claudio@

17 months agoAdd json.c to linker instructions
job [Tue, 30 May 2023 15:56:47 +0000 (15:56 +0000)]
Add json.c to linker instructions

17 months agosparc64 disklabel(8) must be compiled with SUN_CYLCHECK and SUN_AAT0.
krw [Tue, 30 May 2023 15:10:39 +0000 (15:10 +0000)]
sparc64 disklabel(8) must be compiled with SUN_CYLCHECK and SUN_AAT0.

sparc64 auto allocation during install does not use fdisk(8).

Add *.sparc64.ok files that reflect sparc64 reality.

Should fix disklabel(8) regression on sparc64.

Requested by & ok bluhm@

17 months agofix markups in character classes
aisha [Tue, 30 May 2023 14:04:53 +0000 (14:04 +0000)]
fix markups in character classes

ok jmc@

17 months agoRevert commitid ANSBO0rBvIUtTi45:
claudio [Tue, 30 May 2023 12:14:48 +0000 (12:14 +0000)]
Revert commitid ANSBO0rBvIUtTi45:
   Make rpki-client choose the verification time of the time it is invoked
   rather than always getting the current system time for every certificate
   verification. This will result in output that is not variable on run-time.

Using the time of invocation does not work well with fast publishing CAs. It
can take a few minutes to reach a repo and that CA may have issued certificates
that are not yet valid if that startup time of rpki-client is used to validate.

This still keeps the -P option to specify a fixed validation time.
OK beck@ job@ tb@

17 months agoSplit cleanup into cleanup and repository cleanup and show how many files
claudio [Tue, 30 May 2023 12:12:06 +0000 (12:12 +0000)]
Split cleanup into cleanup and repository cleanup and show how many files
are kept / removed in the repository temporary storage.
After a discussion with tb@ and job@

17 months agoConvert all of filemode to use the json API as well.
claudio [Tue, 30 May 2023 12:02:22 +0000 (12:02 +0000)]
Convert all of filemode to use the json API as well.
Output is mostly the same apart from some space differences.
OK tb@ job@

17 months agoUse error check to ensure we have SignedData in CMS
tb [Tue, 30 May 2023 11:09:08 +0000 (11:09 +0000)]
Use error check to ensure we have SignedData in CMS

CMS_get0_SignerInfos() only returns a non-NULL pointer if the CMS object
contains SignedData. The subsequent assert can trigger if we parse an
object that is not of this type. Nothing ensures this up to this point,
so we have no way of knowing that the assertion is actually true. If we
get a CMS object without SignedData, we should ignore it, not abort the
rpki-client run. With this check in place it is also clear that we
actually check point 1a of the list of things to check in RFC 6488,
section 3.

ok claudio job

17 months agoReplace the one use of ibuf_prepend() using a similar ibuf_new() + ibuf_cat()
claudio [Tue, 30 May 2023 08:41:15 +0000 (08:41 +0000)]
Replace the one use of ibuf_prepend() using a similar ibuf_new() + ibuf_cat()
method but instead of overwriting ibuf internals replace the buf a level up.
Users of ikev2_msg_send() are not allowed to hold and reuse a pointer to
msg_data (which is another footgun to disarm at some point).
OK tb@

17 months agospelling
jsg [Tue, 30 May 2023 08:30:00 +0000 (08:30 +0000)]
spelling
ok jmc@ guenther@ tb@

17 months agofix some nits on previous
op [Tue, 30 May 2023 07:37:34 +0000 (07:37 +0000)]
fix some nits on previous

- move a sentence out of a Bd block
- add some .Pp for spacing
- avoid a double colon on a sentence and the usage of second person
- mark STORE_CTX with .Vt
- change one Vt -> Dv (done after this has been ok'd by beck)

ok beck@

17 months agoDue to the way make is designed, not being able to read a makefile
espie [Tue, 30 May 2023 04:42:21 +0000 (04:42 +0000)]
Due to the way make is designed, not being able to read a makefile
is basically silent.

Record errors due to missing permissions and other oddities, and display them
when we error out due to lack of targets, as a quality-of-life diagnostic.

Based on a remark from sthen@, with some feedback and tweaks from op@

okay op@, kn@

17 months agoAdd IBT support to the retpoline+znow PLTs
guenther [Tue, 30 May 2023 02:02:00 +0000 (02:02 +0000)]
Add IBT support to the retpoline+znow PLTs

ok kettenis@

17 months agofix markups and reference sections properly
aisha [Mon, 29 May 2023 21:13:24 +0000 (21:13 +0000)]
fix markups and reference sections properly

from Josiah Frentsos <jfrent AT tilde DOT team>
OK op@

17 months agoCorrect test that was pasto'ed incorrectly
beck [Mon, 29 May 2023 15:52:46 +0000 (15:52 +0000)]
Correct test that was pasto'ed incorrectly

This now tests what the comment says it does

17 months agoCorrectly catch all return values from X509_NAME_get_index_by_NID
beck [Mon, 29 May 2023 14:12:36 +0000 (14:12 +0000)]
Correctly catch all return values from X509_NAME_get_index_by_NID

And some comment requests, from jsing@

ok jsing@

17 months agoOops, Fa -> .Fa
beck [Mon, 29 May 2023 11:57:23 +0000 (11:57 +0000)]
Oops, Fa -> .Fa

17 months agoMake X509_NAME_get_text_by[NID|OBJ] safer.
beck [Mon, 29 May 2023 11:54:50 +0000 (11:54 +0000)]
Make X509_NAME_get_text_by[NID|OBJ] safer.

This is an un-revert with nits of the previously landed change
to do this which broke libtls. libtls has now been changed to
not use this function.

This change ensures that if something is returned it is "text"
(UTF-8) and a C string not containing a NUL byte. Historically
callers to this function assume the result is text and a C string
however the OpenSSL version simply hands them the bytes from an
ASN1_STRING and expects them to know bad things can happen which
they almost universally do not check for. Partly inspired by
goings on in boringssl.

ok jsing@ tb@

17 months agoStop suggesting that children play with loaded revolvers.
beck [Mon, 29 May 2023 11:14:19 +0000 (11:14 +0000)]
Stop suggesting that children play with loaded revolvers.

This takes much of the language that boring uses to document
the verify callback, and corrects the historical horror that
OpenSSL introduced years ago by suggesting people ignore expiry
dates using the callback instead of the verify flags.

nits by jsg@ and tb@
ok tb@

17 months agorenamed log file
espie [Mon, 29 May 2023 09:05:24 +0000 (09:05 +0000)]
renamed log file

17 months agovirtio: Set DRIVER_OK earlier
sf [Mon, 29 May 2023 08:13:35 +0000 (08:13 +0000)]
virtio: Set DRIVER_OK earlier

The DRIVER_OK bit must be set before using any virt-queues. To allow
virtio device drivers to use the virt-queues in their attach functions,
set the bit there and not in the virtio transport attach function. Only
vioscsi and viogpu really need this, but let's only have one standard
way to do this.

Noticed because of hangs with vioscsi on qemu/windows and in the Oracle
cloud.  With much debugging help by Aaron Mason.

Also revert vioscsi.c 1.31 "Temporarily workaround double calls into
vioscsi_req_done()"

ok krw@

17 months agouse v5.36, this one is somewhat trivial
espie [Mon, 29 May 2023 07:35:39 +0000 (07:35 +0000)]
use v5.36, this one is somewhat trivial

17 months agosome hackery to make arm64 ramdisk compile again
deraadt [Mon, 29 May 2023 04:24:39 +0000 (04:24 +0000)]
some hackery to make arm64 ramdisk compile again

17 months agorecognise Cortex-A520 (Hayes), Cortex-A720 (Hunter), Cortex-X4 (Hunter-ELP)
jsg [Mon, 29 May 2023 02:26:14 +0000 (02:26 +0000)]
recognise Cortex-A520 (Hayes), Cortex-A720 (Hunter), Cortex-X4 (Hunter-ELP)

17 months agoProvide optimised bn_mulw_{addw,addw_addw,addtw}() for aarch64.
jsing [Sun, 28 May 2023 17:42:30 +0000 (17:42 +0000)]
Provide optimised bn_mulw_{addw,addw_addw,addtw}() for aarch64.

This results in bn_mul_comba4() and bn_mul_comba8() requiring ~30% less
instructions than they did previously.

17 months agoProvide optimised bn_addw_addw()/bn_subw_subw() for aarch64.
jsing [Sun, 28 May 2023 17:22:04 +0000 (17:22 +0000)]
Provide optimised bn_addw_addw()/bn_subw_subw() for aarch64.

17 months agoSprinkle some style(9).
jsing [Sun, 28 May 2023 14:54:37 +0000 (14:54 +0000)]
Sprinkle some style(9).

17 months agoExpand occurrences of HASH_CTX that were previously missed.
jsing [Sun, 28 May 2023 14:49:21 +0000 (14:49 +0000)]
Expand occurrences of HASH_CTX that were previously missed.

No change in generated assembly.

17 months agoReorder functions.
jsing [Sun, 28 May 2023 14:14:33 +0000 (14:14 +0000)]
Reorder functions.

No intended functional change.

17 months agoClean up includes.
jsing [Sun, 28 May 2023 13:57:27 +0000 (13:57 +0000)]
Clean up includes.

17 months agoRemove now unnecessary do {} while(0);
jsing [Sun, 28 May 2023 13:55:55 +0000 (13:55 +0000)]
Remove now unnecessary do {} while(0);

17 months agoInline HASH_MAKE_STRING for SHA256.
jsing [Sun, 28 May 2023 13:53:08 +0000 (13:53 +0000)]
Inline HASH_MAKE_STRING for SHA256.

No change to generated assembly.

17 months agoRewrite BN_{asc,dec,hex}2bn() using CBS.
jsing [Sun, 28 May 2023 10:34:17 +0000 (10:34 +0000)]
Rewrite BN_{asc,dec,hex}2bn() using CBS.

This gives us more readable and safer code. There are two intentional
changes to behaviour - firstly, all three functions zero any BN that was
passed in, prior to doing any further processing. This means that a passed
BN is always in a known state, regardless of what happens later. Secondly,
BN_asc2bn() now fails on NULL input, rather than crashing. This brings its
behaviour inline with BN_dec2bn() and BN_hex2bn().

ok tb@

17 months agocorrect comment, spotted by tb@
beck [Sun, 28 May 2023 09:06:34 +0000 (09:06 +0000)]
correct comment, spotted by tb@

17 months agoRefactor tls_check_common_name to use lower level API.
beck [Sun, 28 May 2023 09:02:01 +0000 (09:02 +0000)]
Refactor tls_check_common_name to use lower level API.

X509_NAME_get_text_by_NID is kind of a bad interface that
we wish to make safer, and does not give us the visibility
we really want here to detect hostile things.

Instead call the lower level functions to do some better
checking that should be done by X509_NAME_get_text_by_NID,
but is not in the OpenSSL version. Specifically we will treat
the input as hostile and fail if:

1) The certificate contains more than one CN in the subject.
2) The CN does not decode as UTF-8
3) The CN is of invalid length (must be between 1 and 64 bytes)
4) The CN contains a 0 byte

4) matches the existing logic, 1 and 2, and 3 are new checks.

ok tb@