openbsd
19 months agoAdd the necessary stack offsets for macppc so dt(4).
claudio [Fri, 10 Mar 2023 11:04:26 +0000 (11:04 +0000)]
Add the necessary stack offsets for macppc so dt(4).
Tested on a G5 and G4 macppc.
OK miod@

19 months agoUpdate the stack offset for the profile probe to account for the clockintr
claudio [Fri, 10 Mar 2023 11:01:52 +0000 (11:01 +0000)]
Update the stack offset for the profile probe to account for the clockintr
API functions. Fixes flamegraphs on archs I could test.
OK bluhm@ miod@

19 months agoImplement setting the parent clock for RK356x. This includes code for
kettenis [Fri, 10 Mar 2023 10:54:29 +0000 (10:54 +0000)]
Implement setting the parent clock for RK356x.  This includes code for
setting external parent clocks, which is needed to switch to the clock
provided by the Ethernet PHY.

ok patrick@

19 months agoFix error on installer abort/exit
kn [Fri, 10 Mar 2023 10:33:40 +0000 (10:33 +0000)]
Fix error on installer abort/exit

^C during questiong yields
/install: /tmp/cppid: cannot open $(<) input

The trap handler must first test existence, then read the PID file.
Quote like other PID file constructs in install.sub do.

Use newlines to make the trap function readable.

OK miod

19 months agoTake controller out of reset; makes it work on rk356x.
kettenis [Fri, 10 Mar 2023 10:22:55 +0000 (10:22 +0000)]
Take controller out of reset; makes it work on rk356x.

ok patrick@, mlarkin@

19 months agoReturn the correct type for ASN.1 BOOLEANs
tb [Fri, 10 Mar 2023 09:56:09 +0000 (09:56 +0000)]
Return the correct type for ASN.1 BOOLEANs

ASN.1 BOOLEANs and ASN.1 NULL are handled specially in the ASN.1 sausage
factory and they are special in that they don't have a->value.ptr set.
Both need to be special cased here since they fail the a->type.ptr != NULL
check.

Apart from fixing an obvious bug in ASN1_TYPE_get(), this fixes another
crash in openssl(1) asn1parse. There is more to do in the vicinity, but
that is more complex and will have to wait for OpenBSD 7.3-current.

with/ok jsing

19 months agoopenssl(1) asn1parse: avoid crash with ASN.1 BOOLEANS
tb [Fri, 10 Mar 2023 09:44:54 +0000 (09:44 +0000)]
openssl(1) asn1parse: avoid crash with ASN.1 BOOLEANS

When pointing openssl asn1parse -strparse at DER octets 01 01, it crashes:

$ printf '<\x01\x01>' | openssl asn1parse -inform der -strparse 1

Refuse to parse BOOLEAN types instead, which avoids a crash in hensonian
/* hmm... this is a little evil, but it works */ code.

Found while poking at CMS timestamps to understand one of job's diffs.

with/ok jsing

19 months agoCompile the output filter rules into per peer filter rules.
claudio [Fri, 10 Mar 2023 07:57:15 +0000 (07:57 +0000)]
Compile the output filter rules into per peer filter rules.

especially on route-servers the output filters are in the hot path so
reducing the number of rules to check has a big impact. I have seen a
25% to 30% speedup in my big IXP testbench.
The output ruleset is applied and copied for each peer during config reload
and when a peer is initially added.
OK tb@

19 months agoExplicitly ignore return from fcntl(... FD_CLOEXEC) here too.
dtucker [Fri, 10 Mar 2023 07:17:08 +0000 (07:17 +0000)]
Explicitly ignore return from fcntl(... FD_CLOEXEC) here too.
Coverity CID 291853.

19 months agoPlug mem leak on error path. Coverity CID 405026, ok djm@.
dtucker [Fri, 10 Mar 2023 04:06:21 +0000 (04:06 +0000)]
Plug mem leak on error path.  Coverity CID 405026, ok djm@.

19 months agoExpliticly ignore return code from fcntl(.. FD_CLOEXEC) since there's
dtucker [Fri, 10 Mar 2023 03:01:51 +0000 (03:01 +0000)]
Expliticly ignore return code from fcntl(.. FD_CLOEXEC) since there's
not much we can do anyway.  From Coverity CID 291857, ok djm@

19 months agoLike sshd_config, some ssh_config options are not first-match-wins.
djm [Fri, 10 Mar 2023 02:32:04 +0000 (02:32 +0000)]
Like sshd_config, some ssh_config options are not first-match-wins.
sshd_config.5 was fixed in r1.348, this is the same for this file

19 months agoRemove no-op (int) > INT_MAX checks since they can never be true.
dtucker [Fri, 10 Mar 2023 02:24:56 +0000 (02:24 +0000)]
Remove no-op (int) > INT_MAX checks since they can never be true.
From Coverity CID 405031, ok djm@

19 months agomodify parentheses in conditionals to make it clearer what is being
jcs [Thu, 9 Mar 2023 21:06:24 +0000 (21:06 +0000)]
modify parentheses in conditionals to make it clearer what is being
assigned and what is being checked

ok djm dtucker

19 months agoremove obsolete libLLVM.so.[0-6].0 during upgrade
naddy [Thu, 9 Mar 2023 19:49:57 +0000 (19:49 +0000)]
remove obsolete libLLVM.so.[0-6].0 during upgrade

ok kn@ deraadt@

19 months agoCheck that a PCIe port isn't disabled in the device tree.
kettenis [Thu, 9 Mar 2023 19:48:42 +0000 (19:48 +0000)]
Check that a PCIe port isn't disabled in the device tree.

ok patrick@

19 months agoUnwrap a few lines and zap a tab
tb [Thu, 9 Mar 2023 18:53:24 +0000 (18:53 +0000)]
Unwrap a few lines and zap a tab

19 months agoAdd missing error checking in PKCS7
tb [Thu, 9 Mar 2023 18:20:10 +0000 (18:20 +0000)]
Add missing error checking in PKCS7

Check the return value of BIO_set_md(). Prompted by OpenSSL's fix for
CVE-2023-0401 (the crash in that bug is an OpenSSL 3-only problem due
to provider design).

ok beck jsing

19 months agoImplement ASPA support in RTR by following draft-ietf-sidrops-8210bis-10.
claudio [Thu, 9 Mar 2023 17:21:21 +0000 (17:21 +0000)]
Implement ASPA support in RTR by following draft-ietf-sidrops-8210bis-10.

In rtr.c renamed rtr_aspa_merge_set() to rtr_aspa_insert() and move it
close to rtr_roa_insert().
In rtr_proto.c most complexity comes from the version negotiation. The
ASPA parser is reasonably streight forward. The version negotiation is
fragile but that is mostly because of the protocol specification and the
fact that RTR cache daemons sometimes fail to send errors.
OK tb@

19 months agoFix segfault in filemode for TAK objects
job [Thu, 9 Mar 2023 15:48:51 +0000 (15:48 +0000)]
Fix segfault in filemode for TAK objects

19 months agoFix segfault in filemode for RSC objects
job [Thu, 9 Mar 2023 15:40:41 +0000 (15:40 +0000)]
Fix segfault in filemode for RSC objects

19 months agoworkaround Intel Braswell/Cherry Trail mwait hang
jsg [Thu, 9 Mar 2023 13:17:28 +0000 (13:17 +0000)]
workaround Intel Braswell/Cherry Trail mwait hang

dlg has a Dell Wyse 3040 with
cpu0: Intel(R) Atom(TM) x5-Z8350 CPU @ 1.44GHz, 480.02 MHz, 06-4c-04
cpu0: mwait min=64, max=64, C-substates=0.2.0.0.0.0.3.3, IBE
which hangs soon after the login prompt with MP kernels

This is a hardware bug described in:
Intel Atom Z8000 Processor Series Specification Update
Document Number: 332067-012
"CHT45 Processor May Not Wake From C6 or Deeper Sleep State"

tested by dlg@, ok guenther@

19 months agoAdd role output to bgpctl, also adjust the capability output.
claudio [Thu, 9 Mar 2023 13:13:14 +0000 (13:13 +0000)]
Add role output to bgpctl, also adjust the capability output.
Note, this changes the JSON output of neighbors a bit.

Part of the large RFC9234 rework in bgpd.
OK tb@

19 months agoMajor rework of RFC9234 support. My initial interpretation of the RFC was
claudio [Thu, 9 Mar 2023 13:12:19 +0000 (13:12 +0000)]
Major rework of RFC9234 support. My initial interpretation of the RFC was
too conservative. Fixes and changes include:

- add role output to bgpctl, also adjust the capability output.
  Note, this changes the JSON output of neighbors a bit.
- adjust the config parser to enable the RFC9234 role capability when
  there is a role set. iBGP and sessions with no role will not announce
  the role capability.
- adjust the role capability announcement to be only on sessions that
  use either AFI IPv4 or IPv6 and SAFI 1 (AID_INET, AID_INET6).
- if there is an OPEN notification indicating that the role capability
  is bad only disable the capability if it is not enforced.
- Adjust capability negotiation, store remote_role on the peer since
  the neighbors role is no longer needed by the RDE.
- inject the OTC attribute on ingress only for AID_INET and AID_INET6.
  For other AIDs clear the F_ATTR_OTC_LOOP flag.
- Adjust the role logic in the RDE and use the peer->role (local role of
  the system) for all checks. Also remove the check if the role capability
  was negotiated between peers.
- In prefix_eligible() check also if the F_ATTR_OTC_LOOP flag is set.
  The RFC requires that prefixes must be considered ineligible (and not
  treat as withdraw as done before)
- When generating an UPDATE include the OTC attribute unless the AID is
  neither AID_INET or AID_INET6.

Fixes https://github.com/openbgpd-portable/openbgpd-portable/issues/51
Reported by Pier Carlo Chiodi
OK tb@

19 months agoIn filmode also show 'Not After' for GBR records
job [Thu, 9 Mar 2023 12:54:28 +0000 (12:54 +0000)]
In filmode also show 'Not After' for GBR records

OK tb@

19 months agoImprove vnet(4) to work better in busy conditions.
claudio [Thu, 9 Mar 2023 10:29:04 +0000 (10:29 +0000)]
Improve vnet(4) to work better in busy conditions.
No longer limit the ifq size to a low number, increase the slots on the
DMA Ring a bit and abstract the VNET buffer size into a define.
Enqueue packets on the ring but mark the initial packet ready at the end.
This way the other ldom is not able to rush ahead and overconsume packets.
The dring indexes are passed between ldoms and can get out of sync with
causes the TX ring to stall.
Tested by myself and jan@
OK kettenis@ jan@ kn@

19 months agoShow CMS signing-time signed attribute in filemode
job [Thu, 9 Mar 2023 09:46:21 +0000 (09:46 +0000)]
Show CMS signing-time signed attribute in filemode

OK tb@

19 months agoRe-split the merge of the reorder-hostkeys test.
dtucker [Thu, 9 Mar 2023 07:11:05 +0000 (07:11 +0000)]
Re-split the merge of the reorder-hostkeys test.

In the kex_proposal_populate_entries change I merged the the check for
reordering hostkeys with the actual reordering, but kex_assemble_names
mutates options.hostkeyalgorithms which renders the check ineffective.
Put the check back where it was.  Spotted and tested by jsg@, ok djm@

19 months agoinclude destination constraints for smartcard keys too.
djm [Thu, 9 Mar 2023 06:58:26 +0000 (06:58 +0000)]
include destination constraints for smartcard keys too.
Spotted by Luci Stanescu; ok deraadt@ markus@

19 months agoCope with recent changes to alignment of command column.
anton [Thu, 9 Mar 2023 06:22:40 +0000 (06:22 +0000)]
Cope with recent changes to alignment of command column.

19 months agodocument BIOC[SGD]WTIMEOUT
dlg [Thu, 9 Mar 2023 06:01:40 +0000 (06:01 +0000)]
document BIOC[SGD]WTIMEOUT

19 months agoadd a timeout between capturing a packet and making the buffer readable.
dlg [Thu, 9 Mar 2023 05:56:58 +0000 (05:56 +0000)]
add a timeout between capturing a packet and making the buffer readable.

before this, there were three reasons that a bpf read will finish.

the first is the obvious one: the bpf packet buffer in the kernel
fills up. by default this is about 32k, so if you're only capturing
a small packet packet every few seconds, it can take a long time
for the buffer to fill up before you can read them.

the second is if bpf has been configured to enable immediate mode with
ioctl(BIOCIMMEDIATE). this means that when any packet is written into
the bpf buffer, the buffer is immediately readable. this is fine
if the packet rate is low, but if the packet rate is high you don't
get the benefit of buffering many packets that bpf is supposed to
provide.

the third mechanism is if bpf has been configured with the BIOCSRTIMEOUT
ioctl, which sets a maximum wait time on a bpf read. BIOCSRTIMEOUT
means than a clock starts ticking down when a program (eg pflogd)
reads from bpf. when the clock reaches zero then the read returns
with whatever is in the bpf packet buffer. however, there could be
nothing in the buffer, and the read will still complete.

deraadt@ noticed this behaviour with pflogd. it wants packets logged
by pf to end up on disk in a timely fashion, but it's fine with
tolerating a bit of delay so it can take advantatage of buffering
to amortise the cost of the reads per packet. it currently does
this with BIOCSRTIMEOUT set to half a second, which means it's
always waking up every half second even if there's nothing to log.

this diff adds BIOCSWTIMEOUT, which specifies a timeout from when
bpf first puts a packet in the capture buffer, and when the buffer
becomes readable.

by default this wait timeout is infinite, meaning the buffer has
to be filled before it becomes readable. BIOCSWTIMEOUT can be set
to enable the new functionality. BIOCIMMEDIATE is turned into a
variation of BIOCSWTIMEOUT with the wait time set to 0, ie, wait 0
seconds between when a packet is written to the buffer and when the
buffer becomes readable. combining BIOCSWTIMEOUT and
BIOCIMMEDIATE simplifies the code a lot.

for pflogd, this means if there are no packets to capture, pflogd
won't wake up every half second to do nothing.  however, when a
packet is logged by pf, bpf will wait another half second to see
if any more packets arrive (or the buffer fills up) before the read
fires.

discussed a lot with deraadt@ and sashan@
ok sashan@

19 months agoclockintr: add a priority queue
cheloha [Thu, 9 Mar 2023 03:50:38 +0000 (03:50 +0000)]
clockintr: add a priority queue

- Add cq_pend to struct clockintr_queue.  cq_pend is the list of clock
  interrupts pending to run, sorted in ascending order by cl_expiration
  (earliest deadline first; EDF).  If the cl_expiration of two
  clockintrs is equal, the first clock interrupt scheduled has priority
  (FIFO).

  We may need to switch to an RB tree or a min-heap in the future.
  For now, there are only three clock interrupts, so a linked list
  is fine.

- Add cl_flags to struct clockintr.  We have one flag, CLST_PENDING.
  It indicates whether the given clockintr is enqueued on cq_pend.

- Rewrite clockintr_dispatch() to operate on cq_pend.  Clock
  interrupts are run in EDF order until the most imminent clockintr
  expires in the future.

- Add code to clockintr_establish(), clockintr_advance() and
  clockintr_schedule() to enqueue/dequeue the given clockintr
  on cq_est and cq_pend as needed.

- Add cq_est to struct clockintr_queue.  cq_est is the list of all
  clockintrs established on a clockintr_queue.

- Add a new counter, cs_spurious, to clockintr_stat.  A dispatch is
  "spurious" if no clockintrs are on cq_pend when we call
  clockintr_dispatch().

With input from aisha@.  Heavily tested by mlarkin@.  Shared with
hackers@.

ok aisha@ mlarkin@

19 months agoFix comment to reflect the disabled status of Energy Efficient Ethernet.
chris [Thu, 9 Mar 2023 00:13:47 +0000 (00:13 +0000)]
Fix comment to reflect the disabled status of Energy Efficient Ethernet.

Intel just disabled EEE for 1Gbps and 2.5Gbps modes on both i225 and i226
chips due to bugs. We already had it this way.

ok patrick@ kevlo@

19 months agoAn invalid source routing IP option could overwrite kernel memory
bluhm [Wed, 8 Mar 2023 23:17:02 +0000 (23:17 +0000)]
An invalid source routing IP option could overwrite kernel memory
by using a bad option length.  This bug is only reachable if both
pf IP option check is disabled and IP source routing is enabled.
reported by @fuzzingrf Erg Noor
OK claudio@ deraadt@

19 months agoupdate the list of firmware files in the iwx(4) man page
stsp [Wed, 8 Mar 2023 22:25:52 +0000 (22:25 +0000)]
update the list of firmware files in the iwx(4) man page

20 months agoamd64: lapic_timer_rearm: don't reset mode, mask, divisor
cheloha [Wed, 8 Mar 2023 18:05:05 +0000 (18:05 +0000)]
amd64: lapic_timer_rearm: don't reset mode, mask, divisor

The apic timer mode, mask, and divisor are set during lapic_timer_trigger().
We don't need to reset them when rearming the timer.  On physical hardware
the difference is too small to measure, but skipping two apic writes may be
a bit faster when we're running in a VM.

Bochs also likes to log when the apic divisor is changed:

38569516308i[APIC0 ] set timer divide factor to 1
38569517335i[APIC0 ] set timer divide factor to 1
38569518042i[APIC0 ] set timer divide factor to 1
[...]

With this change, Bochs is a lot less noisy.

Idea from mlarkin@.

ok mlarkin@

20 months agoUse BN_free() instead of BN_clear_free()
tb [Wed, 8 Mar 2023 16:51:42 +0000 (16:51 +0000)]
Use BN_free() instead of BN_clear_free()

20 months agoFix alignment of command column. print_comm_name() returns an updated
tobhe [Wed, 8 Mar 2023 14:47:02 +0000 (14:47 +0000)]
Fix alignment of command column. print_comm_name() returns an updated
length value, not the length difference.

ok deraadt@ millert@ guenther@

20 months agoTreat WEP like WPA: only offer if supported
kn [Wed, 8 Mar 2023 11:52:20 +0000 (11:52 +0000)]
Treat WEP like WPA:  only offer if supported

WEP does not work with our bwfm(4) and it shows:
    Which network interface do you wish to configure? (or 'done') [bse0] bwfm0
    ifconfig: SIOCS80211NWKEY: Operation not supported by device
    Access point? (ESSID, 'any', list# or '?') [any] 2
    Security protocol? (O)pen, (W)EP, WPA-(P)SK [O]

Handle the error and disable (W)EP unless the driver has it.

No objections from anyone.

20 months agoFix a EC_GROUP_clear_free() that snuck through.
jsing [Wed, 8 Mar 2023 07:15:42 +0000 (07:15 +0000)]
Fix a EC_GROUP_clear_free() that snuck through.

Thanks to Mark Patruck for reporting.

20 months agothis morning's fortune was missing an apostrophe;
jmc [Wed, 8 Mar 2023 07:02:09 +0000 (07:02 +0000)]
this morning's fortune was missing an apostrophe;

20 months agoFix previous.
jsing [Wed, 8 Mar 2023 06:47:30 +0000 (06:47 +0000)]
Fix previous.

20 months agoreduce number of tests in bn_rand_interval.
tb [Wed, 8 Mar 2023 06:44:45 +0000 (06:44 +0000)]
reduce number of tests in bn_rand_interval.

This is only testing basic functionality anyway, so 10000 tests are more
than enough.

20 months agobn_isqrt: reduce number of tests to 100.
tb [Wed, 8 Mar 2023 06:28:08 +0000 (06:28 +0000)]
bn_isqrt: reduce number of tests to 100.

The runtime is roughly quadratic in N_TESTS. While it only takes 1-2s on
modern machines, this test takes a long time on slow machines. A reduction
of runtime by a factor of ~16 is significant.

20 months agoPlug mem leak. Coverity CID 405196, ok djm@
dtucker [Wed, 8 Mar 2023 06:21:32 +0000 (06:21 +0000)]
Plug mem leak.  Coverity CID 405196, ok djm@

20 months agoProcess up to four test vector files concurrently.
jsing [Wed, 8 Mar 2023 06:12:52 +0000 (06:12 +0000)]
Process up to four test vector files concurrently.

This avoids having a slow down when processing test vector files that only
have a single group. Note that the processing of test vector files is in
turn going to be rate limited by the number of concurrent test groups,
which means we do not need variable limits for vectors.

Reduces a Wycheproof regress run down to ~8 seconds on an Apple M1.

20 months agoAlways clear EC groups and points on free.
jsing [Wed, 8 Mar 2023 05:45:31 +0000 (05:45 +0000)]
Always clear EC groups and points on free.

Rather than sometimes clearing, turn the free functions into ones that
always clear (as we've done elsewhere). Turn the EC_GROUP_clear_free() and
EC_POINT_clear_free() functions into wrappers that call the *_free()
version. Do similar for the EC_METHOD implementations, removing the
group_clear_finish() and point_clear_finish() hooks in the process.

ok tb@

20 months agoRun test groups concurrently.
jsing [Wed, 8 Mar 2023 05:41:08 +0000 (05:41 +0000)]
Run test groups concurrently.

Add a basic test coordinator, that allows for Wycheproof test groups to be
run concurrently. This can be further improved (especially for vectors that
have limited test groups), however it already reduces the regress duration
by about half on an Apple M1.

20 months agozap more audit remnants
tb [Wed, 8 Mar 2023 05:36:45 +0000 (05:36 +0000)]
zap more audit remnants

20 months agoStop trying to use EC_GFp_nist_method().
jsing [Wed, 8 Mar 2023 05:35:51 +0000 (05:35 +0000)]
Stop trying to use EC_GFp_nist_method().

Currently, if compiled without OPENSSL_BN_ASM_MONT,
EC_GROUP_new_curve_GFp() tries to use EC_GFp_nist_method(), falling back to
EC_GFp_mont_method() if it is not a NIST curve (if OPENSSL_BN_ASM_MONT is
defined we use EC_GFp_mont_method() unconditionally).

Now that we have a reasonable non-assembly Montgomery implementation, the
performance of EC_GFp_nist_method() is either similar or slower than
EC_GFp_mont_method() (the exception being P-521, however if you're using
that you're not doing it for performance reasons anyway).

The EC_GFp_nist_method() uses rather scary BN NIST code (which would
probably already be removed, if not for the BN and EC public APIs), it uses
code paths that are currently less constant time, and there is additional
overhead in checking to see if the curve is actually supported.

Stop trying to use EC_GFp_nist_method() and unconditionally use
EC_GFp_mont_method() in all cases. While here, factor out the common
setup code and call it from both EC_GROUP_new_curve_GFp() and
EC_GROUP_new_curve_GF2m().

ok beck@ tb@

20 months agossh-pkcs11: synchronize error messages with errors
tb [Wed, 8 Mar 2023 05:33:53 +0000 (05:33 +0000)]
ssh-pkcs11: synchronize error messages with errors

A handful of error messages contained incorrect function names or
otherwise inaccurate descriptions. Fix them to match reality.

input/ok djm

20 months agoRemove acceptable audit.
jsing [Wed, 8 Mar 2023 05:17:33 +0000 (05:17 +0000)]
Remove acceptable audit.

This code would need changes to be safe to use concurrently - remove it
since it is somewhat incomplete and needs reworking.

Requested by tb@

20 months agoRemove EC_FLAGS_DEFAULT_OCT.
jsing [Wed, 8 Mar 2023 04:50:27 +0000 (04:50 +0000)]
Remove EC_FLAGS_DEFAULT_OCT.

The EC code has an amazing array of function pointer hooks, such that a
method can hook into almost any operation... and then there is the
EC_FLAGS_DEFAULT_OCT flag, which adds a bunch of complex code and #ifdef
so you can avoid setting three of those function pointers!

Remove EC_FLAGS_DEFAULT_OCT, the now unused flags field from EC_METHOD,
along with the various code that was wrapped in EC_FLAGS_DEFAULT_OCT,
setting the three function pointers that need to be set in each of the
EC_METHODs.

ok beck@ tb@

20 months agoDelete obsolete /* ARGSUSED */ lint comments.
guenther [Wed, 8 Mar 2023 04:43:04 +0000 (04:43 +0000)]
Delete obsolete /* ARGSUSED */ lint comments.

ok miod@ millert@

20 months agouse RSA/SHA256 when testing usability of private key in agent;
djm [Wed, 8 Mar 2023 00:05:58 +0000 (00:05 +0000)]
use RSA/SHA256 when testing usability of private key in agent;
with/ok dtucker

20 months agouse RSA/SHA256 when testing usability of private key;
djm [Wed, 8 Mar 2023 00:05:37 +0000 (00:05 +0000)]
use RSA/SHA256 when testing usability of private key;
based on fix in bz3546 by Dmitry Belyavskiy; with/ok dtucker

20 months agorefactor to be more readable top to bottom. Prompted by Coverity CID
djm [Tue, 7 Mar 2023 21:47:42 +0000 (21:47 +0000)]
refactor to be more readable top to bottom. Prompted by Coverity CID
405048 which was a false-positive fd leak; ok dtucker@

20 months agoAvoid enabling TSO on interfaces which are already attached to a bridge.
jan [Tue, 7 Mar 2023 20:09:47 +0000 (20:09 +0000)]
Avoid enabling TSO on interfaces which are already attached to a bridge.

with tweaks from claudio and deraadt

ok claudio, bluhm

20 months agoDelete obsolete /* ARGSUSED1 */ lint comments.
guenther [Tue, 7 Mar 2023 17:43:59 +0000 (17:43 +0000)]
Delete obsolete /* ARGSUSED1 */ lint comments.

ok claudio@ cheloha@ krw@ deraadt@ miod@ millert@

20 months agoUse "installboot -p"; tested by/OK miod
kn [Tue, 7 Mar 2023 17:37:26 +0000 (17:37 +0000)]
Use "installboot -p"; tested by/OK miod

20 months agoInitial support for guided disk encryption
kn [Tue, 7 Mar 2023 17:29:42 +0000 (17:29 +0000)]
Initial support for guided disk encryption

One new question to cover the most common use case, such that manual setup
in (S)hell or '!' prior to install is no longer required:

    Encrypt the root disk? (disk, 'no' or '?' for details) [no] ?

    Create a passphrase protected CRYPTO softraid volume to be used as root disk.

    Available disks are: sd0.
    Encrypt the root disk? (disk, 'no' or '?' for details) [no]

Use of keydisk or different disciplines are not covered.
Only asked in interactive installations;  no autoinstall(8) or upgrades.
Only reachable on i386, amd64, sparc64 and riscv64 for now (arm64 WIP).

Tested by cheloha naddy and a few users
Feedback from cheloha deraadt claudio
OK cheloha
"get it in now" deraadt

20 months agoNuke pointless 'pb#N:ob#0:' lines from floppy
krw [Tue, 7 Mar 2023 16:41:08 +0000 (16:41 +0000)]
Nuke pointless 'pb#N:ob#0:' lines from floppy
types.

ok miod@

20 months agoImprove decoded content printing in filemode
job [Tue, 7 Mar 2023 14:49:32 +0000 (14:49 +0000)]
Improve decoded content printing in filemode

Looks reasonable claudio@

20 months agorestore tags for commands lost in r1.112 restructuring; OK jmc
kn [Tue, 7 Mar 2023 10:58:39 +0000 (10:58 +0000)]
restore tags for commands lost in r1.112 restructuring; OK jmc

20 months agoRemove pre-c99 gcc workaround which is no longer needed.
claudio [Tue, 7 Mar 2023 10:30:38 +0000 (10:30 +0000)]
Remove pre-c99 gcc workaround which is no longer needed.

20 months agoAdd some minimal initialization code for rk356x such that the kernel
kettenis [Tue, 7 Mar 2023 10:24:11 +0000 (10:24 +0000)]
Add some minimal initialization code for rk356x such that the kernel
doesn't hang.

ok millert@, dlg@

20 months agoImprove bn_montgomery_multiply_words().
jsing [Tue, 7 Mar 2023 09:42:09 +0000 (09:42 +0000)]
Improve bn_montgomery_multiply_words().

Rather than calling bn_mul_add_words() twice - once to multiply and once
to reduce - perform the multiplication and reduction in a single pass using
bn_mulw_addw_addw() directly. Also simplify the addition of the resulting
carries, which in turn allows us to avoid zeroing the top half of the
temporary words.

This provides a ~20-25% performance improvement for RSA operations on
aarch64.

ok tb@

20 months agoSlightly rework bn_mulw_addtw().
jsing [Tue, 7 Mar 2023 09:35:55 +0000 (09:35 +0000)]
Slightly rework bn_mulw_addtw().

Call bn_mulw_addw() rather than doing bn_mulw() follow by bn_addw(). This
simplifies the code slightly, plus on some platforms bn_mulw_addw() can
be optimised (and bn_mulw_addtw() will then benefit from such an
optimisation).

ok tb@

20 months agoCall BN_free() instead of BN_clear_free().
jsing [Tue, 7 Mar 2023 09:27:10 +0000 (09:27 +0000)]
Call BN_free() instead of BN_clear_free().

BN_clear_free() is a wrapper that calls BN_free() - call BN_free() directly
instead.

ok tb@

20 months agompls gateway clarification; from claudio
jmc [Tue, 7 Mar 2023 07:54:59 +0000 (07:54 +0000)]
mpls gateway clarification; from claudio

20 months agoFix another return value check for CMS_SharedInfo_encode()
tb [Tue, 7 Mar 2023 07:01:35 +0000 (07:01 +0000)]
Fix another return value check for CMS_SharedInfo_encode()

This should have been included in a previous diff/commit...

20 months agoLimit bn_mul_mont() usage to sizes less than or equal to 8192 bits.
jsing [Tue, 7 Mar 2023 06:28:36 +0000 (06:28 +0000)]
Limit bn_mul_mont() usage to sizes less than or equal to 8192 bits.

The assembly bn_mul_mont() implementations effectively use alloca() to
allocate space for computation (at up to 8x the input size), without
any limitation. This means that sufficiently large inputs lead to the
stack being blown. Prevent this by using the C based implementation
instead.

Thanks to Jiayi Lin <jlin139 at asu dot edu> for reporting this to us.

ok beck@ tb@

20 months agoImplement bn_montgomery_multiply()
jsing [Tue, 7 Mar 2023 06:19:44 +0000 (06:19 +0000)]
Implement bn_montgomery_multiply()

Provide a constant-time-style Montgomery multiplication implementation.
Use this in place of the assembly bn_mul_mont() on platforms that either
do not have an assembly implementation or have not compiled it in.

Also use this as the fallback version for bn_mul_mont(), rather than
falling back to a non-constant time implementation.

ok beck@ tb@

20 months agoRefactor BN_mod_mul_montgomery().
jsing [Tue, 7 Mar 2023 06:15:09 +0000 (06:15 +0000)]
Refactor BN_mod_mul_montgomery().

Pull out the simplistic implementation (using BN_mul() or BN_sqr()) into a
bn_mod_mul_montgomery_simple() function. Provide bn_mod_mul_montgomery()
with an implementation that changes depending on if the assembly
bn_mul_mont() is available or not. Turn BN_mod_mul_montgomery() and
BN_to_montgomery() into callers of bn_mod_mul_montgomery().

ok beck@ tb@

20 months agoMake order of pub_key and priv_key the same everywhere
tb [Tue, 7 Mar 2023 06:15:07 +0000 (06:15 +0000)]
Make order of pub_key and priv_key the same everywhere

20 months agoFix OpenSSL version in HISTORY section
tb [Tue, 7 Mar 2023 06:12:27 +0000 (06:12 +0000)]
Fix OpenSSL version in HISTORY section

20 months agoFix mem leak in environment setup. From jjelen at redhat.com via
dtucker [Tue, 7 Mar 2023 06:09:14 +0000 (06:09 +0000)]
Fix mem leak in environment setup.  From jjelen at redhat.com via
bz#2687, ok djm@

20 months agoDelete unused and unsafe bn_mul_mont() example code.
jsing [Tue, 7 Mar 2023 06:05:06 +0000 (06:05 +0000)]
Delete unused and unsafe bn_mul_mont() example code.

This came from bn_asm.c and did not even compile until recently.

ok beck@ tb@

20 months agoFix comment for bn_mul2_mulw_addtw()
jsing [Tue, 7 Mar 2023 05:57:01 +0000 (05:57 +0000)]
Fix comment for bn_mul2_mulw_addtw()

20 months agoMove EC_GFp_simple_method() to the bottom of the file.
jsing [Tue, 7 Mar 2023 05:54:40 +0000 (05:54 +0000)]
Move EC_GFp_simple_method() to the bottom of the file.

Most of the implemeentation functions for EC_GFp_simple_method() are reused
by other code, hence they cannot be made static. However, this keeps the
pattern consistent.

ok tb@

20 months agoBasic cleanup in asn1pars.c
tb [Tue, 7 Mar 2023 05:53:17 +0000 (05:53 +0000)]
Basic cleanup in asn1pars.c

Drop extra parentheses, unwrap some lines, compare pointers against NULL.

20 months agoUse static functions for EC_GF2m_simple_method() implementation.
jsing [Tue, 7 Mar 2023 05:50:59 +0000 (05:50 +0000)]
Use static functions for EC_GF2m_simple_method() implementation.

Move the EC_METHOD to the bottom of the file, which allows implementation
functions to become static. Remove unneeded prototypes.

ok tb@

20 months agoUse static functions for EC_GFp_nist_method() implementation.
jsing [Tue, 7 Mar 2023 05:45:14 +0000 (05:45 +0000)]
Use static functions for EC_GFp_nist_method() implementation.

Move the EC_METHOD to the bottom of the file, which allows implementation
functions to become static. Remove unneeded prototypes.

ok tb@

20 months agoUse static functions for EC_GFp_mont_method() implementation.
jsing [Tue, 7 Mar 2023 05:41:18 +0000 (05:41 +0000)]
Use static functions for EC_GFp_mont_method() implementation.

Move the EC_METHOD to the bottom of the file, which allows all
implementation functions to become static. Remove unneeded prototypes.

ok tb@

20 months agofix memory leak in process_read() path; Spotted by James Robinson
djm [Tue, 7 Mar 2023 05:37:26 +0000 (05:37 +0000)]
fix memory leak in process_read() path; Spotted by James Robinson
in GHPR363; ok markus@

20 months agoFix formatting of comments.
jsing [Tue, 7 Mar 2023 05:35:13 +0000 (05:35 +0000)]
Fix formatting of comments.

20 months agoConsolidate clear code for EC_GFp_mont_method.
jsing [Tue, 7 Mar 2023 05:28:12 +0000 (05:28 +0000)]
Consolidate clear code for EC_GFp_mont_method.

Use a fang dangled thing (known as a function) to avoid duplicating the
same code in five places.

ok tb@

20 months agocorrect size for array argument when changing UMAC_OUTPUT_LEN
djm [Tue, 7 Mar 2023 01:30:52 +0000 (01:30 +0000)]
correct size for array argument when changing UMAC_OUTPUT_LEN
Coverity CID 291845; ok dtucker@

20 months agoDelete extraneous trailing blank line.
krw [Mon, 6 Mar 2023 21:16:50 +0000 (21:16 +0000)]
Delete extraneous trailing blank line.

20 months agoEnforce X509v3 SKIs to be the SHA-1 hash of the Subject Public Key
job [Mon, 6 Mar 2023 21:00:41 +0000 (21:00 +0000)]
Enforce X509v3 SKIs to be the SHA-1 hash of the Subject Public Key

In the RPKI-context (RFC 6487 section 4.8.2), SKIs are not at all
arbitary identifiers: they must be the SHA-1 hash of the
'Subject Public Key'. Add a SPK digest calculation and comparison
to the X509v3 extension containing the SKI.

OK tb@

20 months agoCorrectly account the number of bytes processed when outputting UTF-8 encoded
miod [Mon, 6 Mar 2023 20:34:35 +0000 (20:34 +0000)]
Correctly account the number of bytes processed when outputting UTF-8 encoded
characters.

20 months agoFor conciseness sake' remove non-optional items in references in STANDARDS
job [Mon, 6 Mar 2023 19:20:34 +0000 (19:20 +0000)]
For conciseness sake' remove non-optional items in references in STANDARDS

Discussed with deraadt@ tb@ claudio@

20 months agoClean up ndef_{prefix,suffix}_free()
tb [Mon, 6 Mar 2023 19:10:14 +0000 (19:10 +0000)]
Clean up ndef_{prefix,suffix}_free()

These functions are rather similar, so there's no need for the code to
be wildly different. Add a missing NULL check to ndef_prefix_free() since
that will be needed in a subsequent commit.

ok jsing

20 months agoRemove pointless ":ob#0:pb#0:[tb=swap:]" disktab lines.
krw [Mon, 6 Mar 2023 18:12:47 +0000 (18:12 +0000)]
Remove pointless ":ob#0:pb#0:[tb=swap:]" disktab lines.

ok miod@

20 months agoUse GPT_UUID_NBSD_UFS, not GPT_UUID_FBSD_DATA, for NetBSD GPT
krw [Mon, 6 Mar 2023 17:42:39 +0000 (17:42 +0000)]
Use GPT_UUID_NBSD_UFS, not GPT_UUID_FBSD_DATA, for NetBSD GPT
partition entries.

Add GPT_UUID_LEGACY_MBR entry to list of known partition id's as
it is defined in the UEFI Standard.

20 months agoDefine a few more attributes for the sake of the readattr subcommand;
miod [Mon, 6 Mar 2023 17:39:54 +0000 (17:39 +0000)]
Define a few more attributes for the sake of the readattr subcommand;
curated and contributed by Brian Conway, thanks!

20 months agoIn iskmemdev(), do not check for the minor of /dev/io. It has been
miod [Mon, 6 Mar 2023 17:20:05 +0000 (17:20 +0000)]
In iskmemdev(), do not check for the minor of /dev/io. It has been
deprecated more than 25 years ago and removed more than 20.
From Crystal Kolipe, thanks!

20 months agoReplace old'n'wrong UTF-8 logic with a better one borrowed from Citrus;
miod [Mon, 6 Mar 2023 17:14:44 +0000 (17:14 +0000)]
Replace old'n'wrong UTF-8 logic with a better one borrowed from Citrus;
issue reported by Crystal Kolipe on tech@

20 months agoEnsure .cer and .crl outside-TBS signatures are sha256WithRSAEncryption
job [Mon, 6 Mar 2023 16:58:41 +0000 (16:58 +0000)]
Ensure .cer and .crl outside-TBS signatures are sha256WithRSAEncryption

Note: there is a potential for confusion in RFC 7935, the specification
differentiates between 2 contexts: "in the certificate" and "CMS SignedData".

In the CMS context, either rsaEncryption or sha256WithRSAEncryption can
appear (and both *do* appear in the wild).

However, RFC 7935 section 2 fourth paragraph starting with "In certificates,
CRLs, ..." mandates that sha256WithRSAEncryption is used to sign .cer and
.crl files:

    "The Object Identifier (OID) sha256WithRSAEncryption from RFC4055 MUST
    be used in these products."

The above requirement matches observations on existing RPKI deployments.

OK tb@