Commit Graph

3996 Commits

Author SHA1 Message Date
David Cooper d8bec390be Reintroduce hex2ascii()
Add hex2ascii() as a function that just calls hex2binary().
2021-03-22 11:56:46 -04:00
David Cooper 3756cdcb38 Cleanup conversion from ASCII-HEX to binary
This commit makes some minor improvements to code that converts ASCII-HEX to binary.

First, testssl.sh currently has two functions that do the same thing: asciihex_to_binary() and hex2ascii(). This commit all calls to either of these functions with calls to hex2binary(), which is based on the current asciihex_to_binary().

This commit also changes direct use of printf to calls to hex2ascii() in generate-ccm-counter-blocks(), ccm-compute-tag(), and generate_gcm_counter().

Finally, this commit cleans up the implemention of hex2binary() a bit and introduces the option to use xxd, if that program is available. Using xxd rather than multiple calls to printf has a couple of advantages. xxd is a bit faster. However, the primary advantage is that when debugging (i.e., using bash -x), each call to hex2binary() only includes a few steps, regardless of how long the string is, whereas using printf the call to hex2binary() could take hundreds of steps.
2021-03-22 11:55:30 -04:00
Dirk Wetter 016ab0673a
Merge pull request #1856 from caillou/patch-1
Fix typo
2021-03-21 13:24:29 +01:00
Pierre Spring 93408b8776
Fix typo 2021-03-21 08:33:25 +01:00
Dirk Wetter 895a6b975d
Merge pull request #1851 from mbogh/patch-1
Added GitHub Action to External/related projects
2021-03-11 10:42:52 +01:00
Morten Bøgh 45cde49a03
Added GitHub Action to External/related projects 2021-03-11 10:11:44 +01:00
Dirk Wetter 9f0e4763d3
Merge pull request #1849 from johannesschaefer/patch-1
Add web net tools to web frontend
2021-03-03 12:16:47 +01:00
Johannes Schäfer c0b1b18dcc
Add web net tools to web frontend 2021-03-02 21:12:16 +01:00
Dirk Wetter 8b5bcd4769
Merge pull request #1847 from elfranne/patch-1
IANA <-> Openssl mapping issue
2021-02-25 13:46:15 +01:00
Elfranne 62d827e43b
remove unintentional change 2021-02-25 13:37:59 +01:00
Elfranne 440190f156
mapping issue
Seems Camellia got its last digit cut off.
2021-02-25 13:33:47 +01:00
Dirk Wetter e9f73ffffd
Merge pull request #1714 from dcooper16/clientauth
Print information about certificate-based client authentication
2021-02-08 09:22:31 +01:00
David Cooper f829c8ebf0 Add more comments to print_dn()
This commit adds some more explanatory comments to the code in print_dn()
2021-02-05 13:35:54 -05:00
David Cooper 9dbb629154 Add printing of information about client authentication to run_server_defaults(). Minor cleanup of code to extract information about client authentication. 2021-02-05 13:11:38 -05:00
David Cooper e8a3dce5ad sclient_auth() improvements
Modify sclient_auth() to use checks similar to sclient_connect_successful() to determine whether the connection attempt was successful. Replace uses of awk and grep with Bash internals string comparisons.
2021-02-05 13:11:38 -05:00
David Cooper 44787d6bcb Extract Client Auth CA list
This commit is a first step towards addressing #1709. It attempts to determime whether certificate-based client authentication is (1) not requested, (2) optional, or (3) required. If it is either optional or required, then it extracts the list of CA names (DNs) that the server sends in its CertificateRequest message.

The code for extracting the CA list from the CertificateRequest message seems to be working correctly. However, this commit is incomplete for a couple of reasons. First, it does not produce any new output, it just collects the information. Second, sclient_auth() needs some work.

The current sclient_auth() simply returns 0 if $OPENSSL returned 0. This may be okay if only trying to determine whether certificate-based client authentication is required. However, if it is optional, then the output will include "CertificateRequest", but $OPENSSL will return 0, since the connection was successful even though the client did not provide a certificates.

If $OPENSSL does not return 0, then sclient_auth() checks whether Master-Key is present. This works for TLS 1.2 and earlier, but not for TLS 1.3. So, sclient_auth() needs to be updated to work correctly with TLS 1.3.

The modified version of sclient_auth() will set CLIENT_AUTH and CLIENT_AUTH_CA_LIST for any version of TLS, but the remaining part of the code needs work. As I am not clear on the reason for this code, I need some help with it. Why does the code only look for "CertificateRequest" if "Master-Key" is present? Why is there a check for Session-ID in a function that is supposed to just be checking for client authentication. Why is CLIENT_AUTH set to false if SESSION-ID is absent (this is a no-op since CLIENT_AUTH would already have been false)?
2021-02-05 13:11:38 -05:00
Dirk Wetter bf24c80174
Merge pull request #1837 from dcooper16/files_in_mass_testing_file
Mass testing with CSV, HTML, JSON, and/or LOG file names in mass test…
2021-02-04 21:00:12 +01:00
Dirk Wetter 53fc1c2a18
Merge pull request #1838 from fogs/3.1dev
Fixed typos
2021-01-30 10:46:17 +01:00
fogs 9c794ea4bd Fixed typos 2021-01-30 09:13:16 +01:00
David Cooper 1de8def49f Mass testing with CSV, HTML, JSON, and/or LOG file names in mass testing file
See #1148 and #1805.

As noted in #1148, testssl.sh is not current designed to handle a mass testing file in which CSV, HTML, LOG, and/or JSON file names are provided in the mass testing file. If a child process receives a command line with one of the files, it assumes the same command-line option was provided to the parent so that the output of every test is being written to this one file. If this assumption is wrong, then either the file will not be created at all or it will be malformed since it will be missing header and/or footer information.

This PR partially addresses the problem by introducing new command-line arguments that are for internal use only. These command line arguments allow a child process to distinguish between a CSV, HTML, LOG, or JSON file that it is supposed to create itself versus one that is to be shared by all of the child processes.

There is one major limitation to this PR. The code for handle command-line arguments in the mass testing file is very simple and cannot handle whitespace characters, whether they are enclosed in quotes or are escaped. So, any file names included in the mass testing file cannot have whitespace characters.
2021-01-26 16:46:35 -05:00
Dirk Wetter 1beac9c293
Update feature_request.md 2021-01-25 11:33:03 +01:00
Dirk Wetter 4704a883fe
Update other-issues---question.md 2021-01-25 11:32:34 +01:00
Dirk Wetter 6ed29f628f
Update feature_request.md 2021-01-25 11:31:47 +01:00
Dirk Wetter 226871625e
Update feature_request.md 2021-01-25 11:31:31 +01:00
Dirk Wetter 124f6f54be
Update feature_request.md 2021-01-22 12:21:01 +01:00
Dirk Wetter 977f6966e1
Update bug_report.md 2021-01-22 12:20:05 +01:00
Dirk Wetter eabc21b7c4
Merge pull request #1830 from drwetter/fix_heartbleed_json.1828
Fix file output formatting for heartbleed
2021-01-20 10:12:44 +01:00
Dirk 770e066548 Fix file output formatting for heartbleed
Quotes were wrong for different results, which lead to some confusion
for finding, cve and cwe
2021-01-20 08:48:55 +01:00
Dirk Wetter 7bc16ff7e7
Merge pull request #1826 from drwetter/fix_travis
Travis CI didn't run. Trying to fix it (3.1dev)
2021-01-18 14:23:06 +01:00
Dirk c66d58b135 Filter for changing certificates of testssl.sh's server 2021-01-18 09:30:31 +01:00
Dirk 9c9207ae89 Travis CI didn't run. Trying to fix it (3.1dev) 2021-01-13 23:15:42 +01:00
Dirk Wetter 477bd13899
Merge pull request #1817 from drwetter/le_issuer_fix1816
Fix issuer check for Let's Encrypt
2021-01-07 10:25:02 +01:00
Dirk e65233877b Fix issuer check for Let's Encrypt which not halved the exp warn time
Addresses #1816. Also the name changed
2021-01-07 09:19:56 +01:00
Dirk Wetter b8b23b94df
Merge pull request #1813 from drwetter/file_exec_fix
Fixes the search for a non-executable socat binary
2021-01-05 15:27:40 +01:00
Dirk Wetter 5439985dbe Fixes the search for a non-executable socat binary
... otherwise there wwould be an ugly screen output.
This commit squashes the error message on the screen.
2021-01-05 15:25:28 +01:00
Dirk Wetter a9f4bb5fb5
Merge pull request #1810 from drwetter/starttls_injection
STARTTLS injection
2020-12-29 14:40:58 +01:00
Dirk Wetter e1a43e6e16
Merge branch '3.1dev' into starttls_injection 2020-12-29 13:46:18 +01:00
Dirk Wetter 7c66535628 resolve merge conflict 2020-12-29 13:44:04 +01:00
Dirk Wetter ffe223f6e6
Merge pull request #1807 from tosticated/custom_http_headers
Custom HTTP request headers support added. Addresses #1770
2020-12-26 12:13:59 +01:00
tosticated 351f36c943 Changed parameter to --reqheader for custom HTTP headers. 2020-12-25 20:10:02 +01:00
tosticated 1473cdf02d
Update CHANGELOG.md 2020-12-24 22:00:42 +01:00
tosticated c1a565fad8 Custom HTTP request headers support added. Addresses #1770 2020-12-22 22:33:25 +01:00
Dirk Wetter 2682d032b8
Merge pull request #1801 from drwetter/tmpfix_order_idsfriendly+U
Fix order for -U and --ids-friendly
2020-12-12 12:03:22 +01:00
Dirk Wetter 39132fe3d0 Fix order for -U and --ids-friendly
Workaround for bug see #1717. In addition: Bring  the test closer to a cleaner style,
as the others

Should --ids-firednly could be as well be removed when travis runs faster.
2020-12-11 20:49:15 +01:00
Dirk Wetter 4f375de26c
Merge pull request #1799 from PeterDaveHello/RefactorDockerfileApkUsage
Refactor `apk` usage in Dockerfile
2020-12-09 09:17:00 +01:00
Peter Dave Hello abc5694408 Clean up apk cache in Dockerfile after packages installed
This will make the image smaller.
2020-12-09 15:52:04 +08:00
Peter Dave Hello da84740000 Remove `--no-cache` for `apk` in Dockerfile
As there is `apk upgrade` and `apk update`, the apk index will already
be existed. `--no-cache` is for `apk` when there is no `apk update`
behavior and it's expected to be no local cache left, not suitable for
the use case here, which wants to upgrade all the package to the latest
when packaging the image.
2020-12-09 15:47:07 +08:00
Dirk Wetter 2cb96d4e9e
Merge pull request #1798 from drwetter/client_always_wide
Client simulation per default as wide
2020-12-08 23:23:55 +01:00
Dirk Wetter d76829cd28 wide mode for client simulation 2020-12-08 19:52:42 +01:00
Dirk Wetter e7fa4ff4ce Client simulation per default as wide
... in order to be consistent with run_server_preference().

The wide formatting of other tests need some inspection and
off the top off my head are not as perfectly formatted so that
they should not run per default in wide mode.
2020-12-08 19:43:07 +01:00