| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Per RFC 7301, section 3.2, "In the event that the server supports no
protocols that the client advertises, then the server SHALL respond
with a fatal "no_application_protocol" alert.
If a server does not do that and chooses a protocol that we have not
advertised, we should abort the handshake. The RFC does not specify
an alert for this case. BoringSSL chose illegal_parameter and OpenSSL
decode_error. I slightly prefer illegal_parameter, so went with that.
Reported by Acts1631 with a similar diff.
ok jsing kenjiro
|
| |
|
|
| |
This test currently fails and will be fixed in ssl_tlsect.c r1.168
|
| |
|
|
|
|
|
| |
Use server_list and selected instead of list and proto to reduce noise
in the next commit.
ok jsing kenjiro
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Just a tiny little bit of lipstick on this entelodont. This is simpler
and does not change behavior as BN_bn2binpad() returns -1 on failure and
num on success.
jsing points out that BN_bn2binpad() is constant time.
ok jsing kenjiro
PS: henning, you owe me a significant amount of quality beverages for
making me look at this particular tire fire (and corresponding XS files).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When AES key unwrap with padding is in use, the EVP interface breaks its
contract and writes more than the outlen it initially reports to the output
buffer. This is an old, sneaky trap that the muppet set eons ago and many
victims walked right into it, including the muppet himself.
If inlen is larger than outlen, allocate inlen bytes to unwrap with padding
to avoid a buffer overwrite. This is a variant of OpenSSL's fix. Since we
do not support AES keywrap with padding no actual bufer overwrite occurs
here at the moment, but if we ever chose to do so (unlikely) this trap
would be avoided. There's plenty more traps that the next round of scas
will surely find in this absolute trashfire of CMS support code.
ok kenjiro
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
While not the advised way of using the verify callback (either by OpenSSL
or by us) in production, sometimes folks like to return 1 from everything
in the callback and then check the error return and make decicions about
things.
This fix ensures that such callbacks will see the hostname mismatch and
be able to act upon them.
Reported by Alexander Aleksandrovic Klimov
ok tb@
|
| | |
|
| | |
|
| |
|
|
| |
ok schwarze@ sthen@ krw@
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The function has been deprecated for a long time: OpenSSL did so when
adding ASN1_STRING_get0_data in 1.1.0. beck removed it from OpenSSL 4.
The reason is that it returns a modifiable "string" and you should not
be modifying an ASN1_STRING this way. You should be using one of the
clumsy, inconvenient accessors.
schwarze merged the deprecation when adding documentation for
ASN1_STRING_get0_data() in 2018. Make this a bit more obvious: move
function to the end of the documented functions in this page, and mark
it deprecated in the SYNOPSIS, too.
I'm aware that deprecation does not work. I was hopeful to be able to
remove the function in the last cycle, but that did not happen and it
might not happen in this cycle either. It will happen at some point,
though.
Prompted by a question by brad
|
| | |
|
| | |
|
| |
|
|
| |
pointed out by kenjiro
|
| |
|
|
| |
with/ok kenjiro
|
| |
|
|
| |
ok kenjiro
|
| |
|
|
|
|
|
|
| |
Now that the legacy stack uses struct tls_content, store any remaining
record content directly, rather than fudging up a record that the legacy
stack will process on the next read.
ok kenjiro@ tb@
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The receive buffer is not used for records created for sending. Avoid
allocating a maximum-sized buffer in tls13_record_new() and instead
allocate a header-sized buffer when tls13_record_recv() is first called.
The buffer will grow as needed once the record length is known.
This avoids an unnecessary allocation for outgoing records and reduces
the initial allocation size for incoming records.
ok tb jsing
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Processing the key_share extension requires a supported_groups extension.
RFC 9846, section 9.2 explicitly mandates a missing_extension alert in
this situation, so use that instead of illegal_parameter.
We do have code in tls13_client_hello_required_extensions() implementing
the requirements on extensions of the relevant paragraph of that section
with the corrrect alerts. The error in the extension processing happens
before hitting these checks in this particular case.
Reported by Tom Gouville of the tlspuffin team as part of
https://github.com/libressl/portable/issues/1279
ok jsing kenjiro
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
POSIX leaves ownership of ENTRY.key with the caller. Our current behaviour
came from NetBSD when this code was imported in 2004. NetBSD and FreeBSD
both stopped freeing key values in July 2014. NetBSD in commit fe0a1a6 and
FreeBSD in commit e19f362.
Remove the call to free(3) to align ourselves with NetBSD, FreeBSD and
POSIX. Also adjust rsync for the change in semantics.
Flagged by Sortix os-test.
ok millert@, deraadt@
|
| |
|
|
|
|
| |
CID 25423
ok tb@
|
| |
|
|
|
|
|
| |
ok kettenis@ tb@
Restore commit; install media build error is not reproducible (deraadt@)
or was operator error (naddy@)
|
| |
|
|
|
|
|
|
|
| |
The conversion of X509V3_EXT_get_nid() from a table to a switch
omitted the OCSP no-check extension method.
Add the missing accessor declaration and switch case.
ok tb@
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This API was removed a long time ago but I forgot to update the manpage
(probably because doing so is slightly non-trivial).
There's still a lot of API here that should be removed. OBJ_add_objects()
seems now unused while OBJ_new_nid() is used by the one consumer that is
single-handedly responsible for at least two dozen APIs that could otherwise
be removed from libcrypto with significant simplifications: security/xca.
It would appear the author is on a quest to figure out how to make use of
whatever undocumented garbage they can find in the openssl headers. That's
of course a hobby project you can pursue for decades.
|
| |
|
|
| |
OK tb@
|
| |
|
|
| |
ok kettenis@ tb@
|
| |
|
|
|
|
|
|
| |
Accept an optional roots file argument while retaining
/etc/ssl/cert.pem as the default. This allows portable regress users
to provide a CA bundle when the default path is unavailable.
ok tb
|
| |
|
|
|
|
|
| |
These functions are only used within their implementation files and do
not need external linkage. Mark them static.
ok tb
|
| |
|
|
|
|
|
| |
BUF_reverse() has no callers and is not part of the public API. Remove the
unused function, which also eliminates its -Wmissing-prototypes warning.
ok tb beck
|
| |
|
|
|
|
|
|
|
| |
Include the relevant internal headers in implementation files that define
internal functions.
Also make asn1_local.h and pkcs12_local.h self-contained by including their
corresponding public headers.
ok tb beck
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Both ui_open_session() implementations, open_console() in ui_openssl.c
in base, and the one in ui_openssl_win.c in portable, grab the lock of
type CRYPTO_LOCK_UI before doing anything else.
The only internal (and, as far as I can tell, the only existing) caller,
UI_process(), returns immediately on failure. The calling thread thus
keeps holding the lock and the next call to UI_process() will block
indefinitely. Fix this by using the common exit path, which calls
ui_close_session() aka close_console(), both implementations of which
release the lock.
Thanks to Kartik (@sage-mode-hunter) who proposed an alternative fix for
ui_openssl_win.c, which we would have to apply to ui_openssl.c as well.
Matches OpenSSL behavior since PR #2037
Closes https://github.com/libressl/portable/pull/1334
ok kenjiro
|
| |
|
|
|
|
|
|
|
|
|
| |
Replace the tiny-sha3 keccakf implementation with an unrolled and
interleaved algorithm, that is hidden away in an obsolete reference
implementation.
This gets us 3.3x speed up on arm64 (Apple M2), a 1.3x speed up on amd64
(Intel i7-1165G7) and 6x speed up on sparc64 (M3000).
ok tb@
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
| |
b64_write() asserted that BIO_write() does not return more bytes than
requested in two places. Other BIO_write() call sites do not make this
check, and there is no special handling here that depends on asserting this
condition.
ok tb@ beck@ joshua@
|
| |
|
|
|
|
|
|
|
| |
SSL_CTX_set_options(3) no longer has a SECURE RENEGOTIATION section,
but SSL_OP_LEGACY_SERVER_CONNECT still referenced it. Replace the
dangling cross reference with a note that the option is no longer set
by default.
ok tb@ beck@
|