summaryrefslogtreecommitdiff
path: root/src/lib/libc/string/wcscpy.c (unfollow)
Commit message (Collapse)AuthorFilesLines
2020-04-16Replace the simple memmem() implementation with a version that is O(n)claudio1-47/+167
based on code from musl and now similar to our strstr(). OK tb@ millert@
2020-04-16Resync our strstr.c with the musl version. Removes some debug code andclaudio1-11/+3
optimizes one statement in two-way string compare. OK tb@ millert@
2020-04-14Update in several respects:schwarze1-13/+11
* mention TLSv1.3 * remove DSS, DES(56), RC4(64), and IDEA(128), which are no longer supported * remove ChaCha20-Poly1305-Old and STREEBOG512 which don't exist in LibreSSL * correct the instruction for printing the complete list OK jsing@
2020-04-14add the missing sentence "LibreSSL no longer provides any suchschwarze1-2/+3
cipher suites" to the DES entry and use the same wording for DSS; OK jsing@
2020-04-14Delete the three sentences listing the ciphers currently includedschwarze1-15/+2
in LOW, MEDIUM, and HIGH. That's going to change repeatedly and the extra maintenance effort for keeping it up to date is a waste because people can trivially run "openssl ciphers -v LOW" to look it up. Besides, updating it will usually be forgotten; the LOW entry was already wrong. Suggested by jsing@.
2020-04-11Document the TLSv1.3 control word, update the description of theschwarze1-4/+30
TLSv1 control word, and explain how TLSv1.3 cipher suites can be configured in LibreSSL and in OpenSSL. While here, also mention how users can inspect the DEFAULT list of cipher suites. Stimulus, feedback and OK from jsing@.
2020-04-10sync cert.pem with Mozilla's root ca list, ok beck@sthen1-276/+343
2020-04-10When printing the serialNumber, fall back to the colon separated hextb1-2/+4
bytes in case ASN1_INTEGER_get() failed. This happens more often since asn1/a_int.c -r1.34. Matches OpenSSL behavior. Issue in openssl x509 -text output reported by sthen ok jsing sthen
2020-04-09Revise test to handle the fact that TLSv1.3 cipher suites are now beingjsing1-2/+4
included in the output from `openssl ciphers`.
2020-04-09Include TLSv1.3 cipher suites unless cipher string references TLSv1.3.jsing1-6/+19
OpenSSL has always taken the approach of enabling almost everything by default. As a result, if you wanted to run a secure TLS client/server you had to specify your own "secure" cipher string, rather than being able to trust the defaults as being sensible and secure. The problem is that with the introduction of TLSv1.3, most of these "secure" cipher strings result in the new TLSv1.3 cipher suites being excluded. The "work around" for this issue in OpenSSL was to add a new TLSv1.3 API (SSL_CTX_set_ciphersuites(), SSL_set_ciphersuites()) and have separate knobs for the pre-TLSv1.3 and TLSv1.3 cipher suites. This of course means that every application now needs to call two APIs, but it does mean that applications that only call SSL_CTX_set_cipher_list()/SSL_set_cipher_list() cannot remove TLSv1.3 cipher suites and prevent TLSv1.3 from working. We've taken a different approach and have allowed TLSv1.3 cipher suites to be manipulated via the existing SSL_set_cipher_list() API. However, in order to avoid problems with hardcoded cipher strings, change this behaviour so that we always include TLSv1.3 cipher suites unless the cipher string has a specific reference to the TLSv1.3 protocol or a TLSv1.3 cipher suite. This means that: $ openssl ciphers -v TLSv1.2:!TLSv1.3 still gives TLSv1.2 only cipher suites and: $ openssl ciphers -v AEAD-CHACHA20-POLY1305-SHA256 only lists a single TLSv1.3 cipher, however: $ openssl ciphers -v ECDHE-RSA-AES256-GCM-SHA384 now includes both TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 and all TLSv1.3 cipher suites (which also matches OpenSSL's openssl(1) behaviour). Issue encountered by kn@ with mumble. ok tb@
2020-04-09Test both SSLv3 (aka pre-TLSv1.2) and TLSv1.2 cipher suites with TLS.jsing1-1/+1
2020-04-09Tidy line wrapping and remove an extra blank line.jsing1-4/+3
2020-04-09ssl_aes_is_accelerated() returns a boolean - treat it as such, rather thanjsing1-2/+2
explicitly comparing against a value.
2020-04-08Ensure legacy session ID is persistent during client TLS session.jsing1-9/+14
Generate an unpredictable 32-byte legacy session ID during client initialisation, rather than when the ClientHello message is being created. Otherwise in the case of a HelloRetryRequest the legacy session ID values will differ between the first and second ClientHello messages, which is not permitted by the RFC. Fixes an issue talking TLSv1.3 to smtp.mail.yahoo.com. ok beck@
2020-04-06Re-enable the client test now that it passes again.jsing1-2/+2
2020-04-06Minor code improvements.jsing1-3/+3
2020-04-06Add tests that cover TLSv1.2 and disable those that trigger TLSv1.3.jsing1-3/+32
This allows the test to pass again.
2020-04-06Zero the client random field in the TLSv1.2 golden value.jsing1-5/+5
2020-04-06Improve comparision with test data.jsing1-7/+9
First check the client random against the zeroed value, then zero the client random in the client hello, before comparing with the golden value. This makes failures more obvious and the test code more readable.
2020-04-06Dump the test data when the lengths differ in order to aid debugging.jsing1-0/+3
2020-04-06Use errx() if we fail to build the client hello.jsing1-1/+1
2020-04-06Send a zero-length session identifier if TLSv1.3 is not enabled.jsing1-4/+7
If the maximum version is less than TLSv1.3, send a zero-length session identifier (matching the behaviour of the legacy TLS stack), rather than a 32 byte random identifier. The 32 byte random identifier is only needed for "compatibility" mode in TLSv1.3. ok beck@
2020-03-30"eventually" came and went back in 2004.libressl-v3.1.0martijn1-3/+1
OK schwarze@
2020-03-30Void functions obviously do not return values; no need to elaborate.schwarze5-31/+10
Patch from Martin Vahlensieck <academicsolutions dot ch>.
2020-03-29Void functions obviously do not return values; no need to elaborate.schwarze5-28/+10
Patch from Martin Vahlensieck <academicsolutions dot ch>.
2020-03-28Be concise: do not say that void functions return no values, that's obvious.schwarze3-22/+6
Useless text reported by Martin Vahlensieck (academicsolutions.ch) on tech@.
2020-03-24Fix ASN1 print functionsinoguchi1-6/+13
Check and print out boolean type properly. Based on OpenSSL commit ad72d9fdf7709ddb97a58d7d45d755e6e0504b96. Reduced unneeded parentheses from if condition. Check return value from i2s_ASN1_INTEGER. Based on OpenSSL commit 5e3553c2de9a365479324b8ba8b998f0cce3e527. Added if condition expression and return 0 if NULL is returned. ok tb@
2020-03-23Add a test program for getopt(3) that is adequate for manual testingschwarze4-2/+174
and a compact test suite for getopt(3) intended automated regression testing, both written from scratch. The suite is intended to provide full coverage, except that it doesn't test manual changes of optind and optreset and except that it so far avoids the situation where we have a known bug.
2020-03-16Consistently spell 'unsigned' as 'unsigned int', as style(9) seemstb7-44/+45
to prefer that. No binary change except in d1_srtp.c where the generated assembly differs only in line numbers (due to a wrapped long line) and in s3_cbc.c where there is no change in the generated assembly. ok inoguchi jsing
2020-03-16Adapt to tls13_record_layer.c r1.30 (the sequence number shouldn't wrap).tb1-2/+2
2020-03-16The RFC is clear (section 5.3) that sequence number should never wrap.tb1-5/+12
We currently throw an error on overflow, but still wrap. Check up front if we would need to wrap and only increment if that case is excluded. This simplifies the increment loop and makes the returns in this function less magic. ok jsing
2020-03-13Increment a few more sequence numbers where the carry is close totb1-1/+41
crossing a byte boundary.
2020-03-13Remove dtls1_enc().jsing5-222/+11
Like much of the original DTLS code, dtls1_enc() is effectively a renamed copy of tls1_enc(). Since then tls1_enc() has been modified, however the non-AEAD code remains largely the same. As such, remove dtls1_enc() and instead call tls1_enc() from the DTLS code. The tls1_enc() AEAD code does not currently work correctly with DTLS, however this is a non-issue since we do not support AEAD cipher suites with DTLS currently. ok tb@
2020-03-13Add regress for TLSv1.3 sequence number handling.jsing3-1/+135
2020-03-13Correct TLSv1.3 sequence number increment and wrapping check.jsing1-3/+3
Fix proposed by tb@
2020-03-13Add missing $OpenBSD$ tag.jsing1-0/+1
2020-03-13Add regress for CBB_add_space().jsing1-1/+41
2020-03-13Ensure that CBB_add_space() always provides zeroed memory.jsing1-1/+2
ok tb@
2020-03-12Use calloc() rather than malloc() when allocating initial CBB buffer.jsing1-4/+3
CBB uses recallocarray() to expand buffers, however was still using malloc() for the initial buffer, which could result in memory being leaked in incorrect use cases. While here also use calloc() to allocate internal structs. ok inoguchi@ tb@
2020-03-12Use calloc() rather than malloc() when allocating buffers.jsing1-3/+3
This reduces the chance of accidently leaking stack memory. ok inoguchi@ tb@
2020-03-12Stop overloading the record type for padding length.jsing5-13/+10
Currently the CBC related code stuffs the padding length in the upper bits of the type field... stop doing that and add a padding_length field to the record struct instead. ok inoguchi@ tb@
2020-03-12Use internal versions of SSL3_BUFFER, SSL3_RECORD and DTLS1_RECORD_DATA.jsing9-53/+83
SSL3_BUFFER, SSL3_RECORD and DTLS1_RECORD_DATA are currently still in public headers, even though their usage is internal. This moves to using _INTERNAL suffixed versions that are in internal headers, which then allows us to change them without any potential public API fallout. ok inoguchi@ tb@
2020-03-10Use ctx->hs->secrets rather than the S3I(s) version.jsing2-4/+4
ok inoguchi@ tb@
2020-03-10Update to follow handshake enum removal.jsing1-7/+1
2020-03-10Remove some unnecessary handshake enums/functions.jsing4-26/+4
Both session tickets and key updates are post-handshake handshake messages, which were originally included in the handshake code. ok inoguchi@ tb@
2020-03-10Add a return value check to tls13_buffer_extend().jsing1-1/+4
In the unlikely event that the return value from the read callback is larger than the number of bytes we asked for, we can end up incrementing buf->len beyond capacity. Check the return value from the read callback to prevent this. ok inoguchi@ tb@
2020-03-10Remove the enc function pointers.jsing6-22/+12
The enc function pointers do not serve any purpose these days - remove a layer of indirection and call dtls1_enc()/tls1_enc() directly. ok inoguchi@ tb@
2020-03-10Import openssl-1.1.1d test data to base64test.cinoguchi1-1/+97
ok bcook@ tb@
2020-03-10Modify regress base64test.cinoguchi1-11/+14
- Don't remove multi line CR/LF from bt->out when NL mode base64_encoding_test removes CR/LF from bt->out to compare with the encoding result. This is fine with NO NL mode, but it goes wrong with NL mode if encoding result is larger than 64 and multi line, like below. "eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\neHh4eHh4eHh4eHh4\n" - Use memcpy instead of asprintf to avoid lost '\0' at the end of data This test data loses trailing '\0' if using asprintf. "\x61\x47\x56\x73\x62\x47\x38\x3d\x0a\x00" - Print original data if decoding result comparison fails This change is not for importing test data, but I just notice. It prints bt->out if fail to memcmp bt->in with decoding result. ok bcook@ tb@
2020-03-09cstyle in illumos noticed some weird syntax, which this fixes.dlg1-4/+4
some errx lines in if statements were terminated with commas, which caused the following statement to be considered part of the error handling. while it is bad style, ingo points out it was also a bug which which caused some tests in the code to be skipped. this reminds me of a haiku that Chris Pascoe (cpascoe@) had behind his desk: Also, that comma Should be a semi-colon. Cherry blossoms fall. this was found by Robert Mustacchi when porting the tests to illumos. ok schwarze@ stsp@ thank you robert.