Align X509_chack_ca() with modern OpenSSL
We have been documenting for quite a while that this API is broken and
that callers need to ensure proper caching of extensions using the usual
X509_check_purpose() trick. Since the API can't indicate errors, choose
to err on the safe side and report a CA only after successful caching of
extensions.
Reported by Frank Denis and others
ok beck, discussed with jsing
ocspcheck: do not use OCSP_TRUSTOTHER
Like in libtls, ensure that the provided OCSP staple is validated by an
OCSP trust chain to the root.
From Acts1631
ok beck kenjiro
libtls: fix OCSP responder authorization bypass
If a CA revokes a valid TLS server cert using OCSP, a client configured to
require a valid OCSP staple should always reject that cert. If the server's
private key has been compromised, it was possible to bypass this requirement.
The problem is the behavior of OCSP_TRUSTOTHER which skips chain
validation for the OCSP trust chain to the root and the checking that
the staple was signed by a CA of the validating chain. So remove this flag.
This only affects callers of tls_config_ocsp_require_stapling(). In OpenBSD
base these are reachable in OpenBSD base via opt-in behaviors of nc(1) -T
and ftp(1) -S via the "muststaple" keyword. No ports call these functions.
Reported by Acts1631 and Jiho Kim
ok beck kenjiro
Recalulate the TCP SACK list after memory exhaustion.
Acts1631 found that tcp(4) can advertise SACK blocks for data that
it has discarded when the global TCP reassembly pool is exhausted.
This can make a sender omit missing data from fast recovery and
wait for its retransmission timer.
This commit clears the receiver SACK report whenever the reassembly
allocation fails, before either path can discard queued data. It
also returns -1 when the new input segment itself is discarded.
The caller maps that value back to zero TCP flags but does not add
the discarded range to the SACK report. On the reuse path, the
accepted current segment is still passed to tcp_update_sack_list(),
after the stale report has been cleared.
from Acts1631; discussed with claudio@ tb@
The MR_DCMD_LD_GET_LIST command doesn't return any data on SAS39xx
controllers. Luckily everything we need is also available through
MR_DCMD_CONF_GET, so we can just rework everything to use that instead.
To enable this, we need to retrieve the configuration during attach.
This gets bioctl, sensors and AEN processing working on SAS39xx.
tested on SAS3108 and SAS3508 by me, on SAS39xx by daharmasterkor at gmail
ok dlg@
Keep our own copy of the certificates sent by the peer.
SSL_get_peer_cert_chain() includes the peer certificate for a client but
not for a server. Build a STACK_OF(X509) owned by libtls that always
starts with the peer certificate, and convert it to PEM with a helper
that takes any STACK_OF(X509).
ok jsing@ tb@
Redesign shutdown of vmd processes and use SIGTERM for hanging vm's.
In preparation for some bigger changes in vmm(4)/vmd(8), improve the
shutdown paths for vmd vm's. For vmd vm processes, the objective is to
make it through cleanup routines (such as sev_shutdown()) in any
conditions where it's safe to continue executing the program. From the
vmd "vmm" process, still use the current VMM_IOC_TERM to signal that
the vcpu's should be terminating, but also fall back to SIGTERM to the
vm process if it doesn't get the hint.
The timeouts may need to be adjusted in the future, but those can be
optimized after the bigger changes land.
Go for it, mlarkin@.
Provide the faulting GPA to vmd(8) for MMIO exits from vmm(4).
The nested page fault on VMX and SVM provides the faulting GPA, so
pass that to userland. This simplifies a lot of the mmio handlers
that can use the GPA without having to translate the GVA. Also
simplify the fatal events for when the GPA isn't known.
Go for it, mlarkin@.
Get TSC frequency from KVM/VMWare parameter leaf at early boot time
So, we can boot in VMs where the i8254 is not emulated.
Tested by bluhm on various machines
ok mlarkin@
ok kettenis@
Add more name constraint tests.
We have coverage already in the betterTLS stuff for much of the
basics, but it does not cover email name constraints and some
of the other corner cases.
Cover a permitted subject email address, a hostname CN checked when
the SAN carries only an email address, excluded DNS and email
subtrees, and constraints carried by the trust anchor
ok tb@ joshua@
Allow wildcards to be specified in alternate names in the configuration
file. This does not enable issuance of wildcard certificates except in
limited circumstances where the ACME server does not require any challenges,
such as when you've already validated control of the domain name with your
CA and you're using an EAB key provided by the CA to link that to an
ACME account.
ok tb@, "fine by me" florian@
Search the whole subject for email addresses and common names.
The subject lookups started from the index left over from walking
the subjectAltName, so a leaf without a SAN never had its first two
subject entries examined and an emailAddress there escaped the
name constraints check.
Reported by Sina Gogani Khiabani.
ok tb@ joshua@
Enable 64 bit DMA for bge(4) BCM5720.
The DMA engines of various bge(4) hardware is full of bugs. Only
the latest revsion BCM5720 is common and it works with 64 bit DMA
addresses. Enable mbufs in the 64 bit address space only for that
model.
OK deraadt@ kettenis@ jmatthew@
Cache the leaf's extensions before adding it to the chain.
A freshly parsed leaf has no cached subjectAltName when its names are
collected for the name constraints check
Fixes https://github.com/libressl/portable/issues/1299
Change-Id: I0f155e08f5581ec1509138a96df34db29e9c46a1
Don't try to look for an invalid iaddr in the iaddr hash. It's not there.
Prevents bogus or malicious iaddr data from crashing dhcpd.
Problem found and part of a larger diff by Acts1631.
ok tb@