diff --git a/.codebeatsettings b/.codebeatsettings deleted file mode 100644 index 4dddb1a..0000000 --- a/.codebeatsettings +++ /dev/null @@ -1,5 +0,0 @@ -{ - "GOLANG": { - "TOO_MANY_IVARS": [75, 100, 125, 200] - } -} diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index 6ef302e..0000000 --- a/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,54 +0,0 @@ -_Before opening an issue, search for similar bug reports or feature requests on GitHub Issues. If yes, please add a_ 👍 _reaction to the existing issue. If no similar issue can be found, fill out either the "Bug Report" or the "Feature Request" section below. Erase the other section and everything on and above this line._ - -### Bug report - -**System info:** - -* **Version used:** -* **OS (e.g. from `/etc/*-release`):** -* **Kernel (`uname -a`):** -* **Go version (`go version`):** -* **Install tools:** - -**Steps to reproduce:** - -1. [First Step] -2. [Second Step] -3. [and so on...] - -**Expected behavior:** - -[What you expected to happen] - -**Actual behavior:** - -[What actually happened] - -**Additional info:** - -[Include gist of relevant config, logs, etc.] - -Please run those if possible and link them from a [gist](http://gist.github.com). - ---- - -### Feature Request - -Opening a feature request kicks off a discussion. Requests may be closed if we're not actively planning to work on them. - -**Proposal:** - -[Description of the feature] - -**Current behavior:** - -[What currently happens] - -**Desired behavior:** - -[What you would like to happen] - -**Use case:** - -[Why is this important (helps with prioritizing requests)] - diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml new file mode 100644 index 0000000..4611cec --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -0,0 +1,51 @@ +name: ❗ Bug Report +description: File a bug report +title: "[Bug]: " +labels: ["issue • bug"] +assignees: + - andyone + +body: + - type: markdown + attributes: + value: | + > [!IMPORTANT] + > Before you open an issue, search GitHub Issues for a similar bug reports. If so, please add a 👍 reaction to the existing issue. + + - type: textarea + attributes: + label: Module version info + description: Output of `grep 'github.com/essentialkaos/sslscan' go.sum` command + render: shell + validations: + required: true + + - type: textarea + attributes: + label: Steps to reproduce + description: Short guide on how to reproduce this problem on our site + placeholder: | + 1. [First Step] + 2. [Second Step] + 3. [and so on...] + validations: + required: true + + - type: textarea + attributes: + label: Expected behavior + description: What you expected to happen + validations: + required: true + + - type: textarea + attributes: + label: Actual behavior + description: What actually happened + validations: + required: true + + - type: textarea + attributes: + label: Additional info + description: Include gist of relevant config, logs, etc. diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..185cc9a --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,14 @@ +blank_issues_enabled: false + +contact_links: + - name: Security Policies and Procedures + url: https://github.com/essentialkaos/.github/blob/master/SECURITY.md + about: Security procedures and general policies for all ESSENTIAL KAOS projects. + + - name: Contributing Guidelines + url: https://github.com/essentialkaos/contributing-guidelines/blob/master/CONTRIBUTING.md + about: Contributing Guidelines for all ESSENTIAL KAOS projects + + - name: Go Version Support Policy + url: https://github.com/essentialkaos/.github/blob/master/GO-VERSION-SUPPORT.md + about: Information about supported Go versions diff --git a/.github/ISSUE_TEMPLATE/question.yml b/.github/ISSUE_TEMPLATE/question.yml new file mode 100644 index 0000000..836b52e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/question.yml @@ -0,0 +1,28 @@ +name: ❓ Question +description: Question about application, configuration or code +title: "[Question]: " +labels: ["issue • question"] +assignees: + - andyone + +body: + - type: markdown + attributes: + value: | + > [!IMPORTANT] + > Before you open an issue, search GitHub Issues for a similar question. If so, please add a 👍 reaction to the existing issue. + + - type: textarea + attributes: + label: Question + description: Detailed question + validations: + required: true + + - type: textarea + attributes: + label: Module version info + description: Output of `grep 'github.com/essentialkaos/sslscan' go.sum` command + render: shell + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/suggestion.yml b/.github/ISSUE_TEMPLATE/suggestion.yml new file mode 100644 index 0000000..39c69e0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/suggestion.yml @@ -0,0 +1,43 @@ +name: ➕ Suggestion +description: Suggest new feature or improvement +title: "[Suggestion]: " +labels: ["issue • suggestion"] +assignees: + - andyone + +body: + - type: markdown + attributes: + value: | + > [!IMPORTANT] + > Before you open an issue, search GitHub Issues for a similar feature requests. If so, please add a 👍 reaction to the existing issue. + > + > Opening a feature request kicks off a discussion. Requests may be closed if we're not actively planning to work on them. + + - type: textarea + attributes: + label: Proposal + description: Description of the feature + validations: + required: true + + - type: textarea + attributes: + label: Current behavior + description: What currently happens + validations: + required: true + + - type: textarea + attributes: + label: Desired behavior + description: What you would like to happen + validations: + required: true + + - type: textarea + attributes: + label: Use case + description: Why is this important (helps with prioritizing requests) + validations: + required: true diff --git a/.github/dependabot.yml b/.github/dependabot.yml index d0ad1de..605744a 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -6,7 +6,7 @@ updates: target-branch: "develop" schedule: interval: "daily" - timezone: "Europe/London" + timezone: "Etc/UTC" time: "03:00" labels: - "PR • MAINTENANCE" @@ -26,8 +26,8 @@ updates: target-branch: "develop" schedule: interval: "daily" - timezone: "Europe/London" - time: "04:00" + timezone: "Etc/UTC" + time: "03:00" labels: - "PR • MAINTENANCE" assignees: diff --git a/.github/images/card.svg b/.github/images/card.svg index d3a82f9..d7e26af 100644 --- a/.github/images/card.svg +++ b/.github/images/card.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index efe689c..74d9e3a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,7 +37,7 @@ jobs: strategy: matrix: - go: [ '1.21.x', '1.22.x' ] + go: [ '1.22.x', '1.23.x' ] steps: - name: Checkout diff --git a/Makefile b/Makefile index 55a61b9..fd466d8 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ ################################################################################ -# This Makefile generated by GoMakeGen 3.0.2 using next command: +# This Makefile generated by GoMakeGen 3.2.3 using next command: # gomakegen --mod . # # More info: https://kaos.sh/gomakegen @@ -11,7 +11,16 @@ ifdef VERBOSE ## Print verbose information (Flag) VERBOSE_FLAG = -v endif -COMPAT ?= 1.19 +ifdef PROXY ## Force proxy usage for downloading dependencies (Flag) +export GOPROXY=https://proxy.golang.org/cached-only,direct +endif + +ifdef CGO ## Enable CGO usage (Flag) +export CGO_ENABLED=1 +else +export CGO_ENABLED=0 +endif + MAKEDIR = $(dir $(realpath $(firstword $(MAKEFILE_LIST)))) GITREV ?= $(shell test -s $(MAKEDIR)/.git && git rev-parse --short HEAD) @@ -33,25 +42,28 @@ vendor: mod-vendor ## Make vendored copy of dependencies test: ## Run tests @echo "[36;1mStarting tests…[0m" ifdef COVERAGE_FILE ## Save coverage data into file (String) - @go test $(VERBOSE_FLAG) -covermode=count -coverprofile=$(COVERAGE_FILE) . + @go test $(VERBOSE_FLAG) -covermode=count -coverprofile=$(COVERAGE_FILE) ./. else @go test $(VERBOSE_FLAG) -covermode=count . endif mod-init: - @echo "[37m[1/2][0m [36;1mModules initialization…[0m" + @echo "[37m[1/3][0m [36;1mModules initialization…[0m" + @rm -f go.mod go.sum ifdef MODULE_PATH ## Module path for initialization (String) @go mod init $(MODULE_PATH) else @go mod init endif - @echo "[37m[2/2][0m [36;1mDependencies cleanup…[0m" + @echo "[37m[2/3][0m [36;1mDependencies cleanup…[0m" ifdef COMPAT ## Compatible Go version (String) @go mod tidy $(VERBOSE_FLAG) -compat=$(COMPAT) -go=$(COMPAT) else @go mod tidy $(VERBOSE_FLAG) endif + @echo "[37m[3/3][0m [36;1mStripping toolchain info…[0m" + @grep -q 'toolchain ' go.mod && go mod edit -toolchain=none || : mod-update: @echo "[37m[1/4][0m [36;1mUpdating dependencies…[0m" @@ -97,8 +109,9 @@ help: ## Show this info @echo -e '\n\033[1mVariables:\033[0m\n' @grep -E '^ifdef [A-Z_]+ .*?## .*$$' $(abspath $(lastword $(MAKEFILE_LIST))) \ | sed 's/ifdef //' \ + | sort -h \ | awk 'BEGIN {FS = " .*?## "}; {printf " \033[32m%-13s\033[0m %s\n", $$1, $$2}' @echo -e '' - @echo -e '\033[90mGenerated by GoMakeGen 3.0.2\033[0m\n' + @echo -e '\033[90mGenerated by GoMakeGen 3.2.3\033[0m\n' ################################################################################ diff --git a/README.md b/README.md index b8bbdc8..cec86b6 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,6 @@
- diff --git a/go.mod b/go.mod index 52eb018..4ea7f00 100644 --- a/go.mod +++ b/go.mod @@ -1,14 +1,14 @@ module github.com/essentialkaos/sslscan/v14 -go 1.18 +go 1.22.8 require ( - github.com/essentialkaos/check v1.4.0 - github.com/essentialkaos/ek/v13 v13.0.0 + github.com/essentialkaos/check v1.4.1 + github.com/essentialkaos/ek/v13 v13.15.3 ) require ( github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect - github.com/rogpeppe/go-internal v1.11.0 // indirect + github.com/rogpeppe/go-internal v1.13.1 // indirect ) diff --git a/go.sum b/go.sum index 316e423..eb1ab20 100644 --- a/go.sum +++ b/go.sum @@ -1,13 +1,13 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/essentialkaos/check v1.4.0 h1:kWdFxu9odCxUqo1NNFNJmguGrDHgwi3A8daXX1nkuKk= -github.com/essentialkaos/check v1.4.0/go.mod h1:LMKPZ2H+9PXe7Y2gEoKyVAwUqXVgx7KtgibfsHJPus0= -github.com/essentialkaos/ek/v13 v13.0.0 h1:faCwsJO5WL3nBzl21XB7Oy/if3Jk7gW+V1pinQvAgRs= -github.com/essentialkaos/ek/v13 v13.0.0/go.mod h1:jPMvD31Rsu3bxWHrB1l57pZhnjbHLBIfmkWLJgySids= +github.com/essentialkaos/check v1.4.1 h1:SuxXzrbokPGTPWxGRnzy0hXvtb44mtVrdNxgPa1s4c8= +github.com/essentialkaos/check v1.4.1/go.mod h1:xQOYwFvnxfVZyt5Qvjoa1SxcRqu5VyP77pgALr3iu+M= +github.com/essentialkaos/ek/v13 v13.15.3 h1:lDJ0qMs6wQRXWFuFRKnPvNX1SxvW2AowKgz6pRoMhAs= +github.com/essentialkaos/ek/v13 v13.15.3/go.mod h1:ez9V1qvfXvjI6gqT24fZfkdVefHzYi6bm/c2NrD7B3s= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= -github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= diff --git a/responses/v4-2.3.1-2009q.json b/responses/v4-2.3.1-2009q.json new file mode 100644 index 0000000..a820e3d --- /dev/null +++ b/responses/v4-2.3.1-2009q.json @@ -0,0 +1,1872 @@ +{ + "ipAddress": "2606:4700:3034:0:0:0:6815:286f", + "statusMessage": "Ready", + "grade": "A+", + "gradeTrustIgnored": "A+", + "hasWarnings": false, + "isExceptional": true, + "progress": 100, + "duration": 44440, + "delegation": 1, + "details": { + "hostStartTime": 1735397201666, + "certChains": [ + { + "id": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "certIds": [ + "136747391e4cc0a61434f8d96b802440045ea474d6e00f7e5e63e5bb4b21d992", + "1dfc1605fbad358d8bc844f76d15203fac9ca5c1a79fd4857ffaf2864fbebf96", + "76b27b80a58027dc3cf1da68dac17010ed93997d0b603e2fadbe85012493b5a7" + ], + "trustPaths": [ + { + "certIds": [ + "136747391e4cc0a61434f8d96b802440045ea474d6e00f7e5e63e5bb4b21d992", + "1dfc1605fbad358d8bc844f76d15203fac9ca5c1a79fd4857ffaf2864fbebf96", + "349dfa4058c5e263123b398ae795573c4e1313c83fe68f93556cd5e8031b3c7d" + ], + "trust": [ + { + "rootStore": "Mozilla", + "isTrusted": true + } + ] + }, + { + "certIds": [ + "136747391e4cc0a61434f8d96b802440045ea474d6e00f7e5e63e5bb4b21d992", + "a287ffab762cc69a26d482037edf701f653ce899025c62a7e5cb88bb9b419cbb", + "b085d70b964f191a73e4af0d54ae7a0e07aafdaf9b71dd0862138ab7325a24a2" + ], + "trust": [ + { + "rootStore": "Mozilla", + "isTrusted": true + } + ] + }, + { + "certIds": [ + "136747391e4cc0a61434f8d96b802440045ea474d6e00f7e5e63e5bb4b21d992", + "1dfc1605fbad358d8bc844f76d15203fac9ca5c1a79fd4857ffaf2864fbebf96", + "76b27b80a58027dc3cf1da68dac17010ed93997d0b603e2fadbe85012493b5a7", + "ebd41040e4bb3ec742c9e381d31ef2a41a48b6685c96e7cef3c1df6cd4331c99" + ], + "trust": [ + { + "rootStore": "Mozilla", + "isTrusted": true + } + ] + }, + { + "certIds": [ + "136747391e4cc0a61434f8d96b802440045ea474d6e00f7e5e63e5bb4b21d992", + "1dfc1605fbad358d8bc844f76d15203fac9ca5c1a79fd4857ffaf2864fbebf96", + "349dfa4058c5e263123b398ae795573c4e1313c83fe68f93556cd5e8031b3c7d" + ], + "trust": [ + { + "rootStore": "Apple", + "isTrusted": true + } + ] + }, + { + "certIds": [ + "136747391e4cc0a61434f8d96b802440045ea474d6e00f7e5e63e5bb4b21d992", + "a287ffab762cc69a26d482037edf701f653ce899025c62a7e5cb88bb9b419cbb", + "b085d70b964f191a73e4af0d54ae7a0e07aafdaf9b71dd0862138ab7325a24a2" + ], + "trust": [ + { + "rootStore": "Apple", + "isTrusted": true + } + ] + }, + { + "certIds": [ + "136747391e4cc0a61434f8d96b802440045ea474d6e00f7e5e63e5bb4b21d992", + "1dfc1605fbad358d8bc844f76d15203fac9ca5c1a79fd4857ffaf2864fbebf96", + "76b27b80a58027dc3cf1da68dac17010ed93997d0b603e2fadbe85012493b5a7", + "ebd41040e4bb3ec742c9e381d31ef2a41a48b6685c96e7cef3c1df6cd4331c99" + ], + "trust": [ + { + "rootStore": "Apple", + "isTrusted": true + } + ] + }, + { + "certIds": [ + "136747391e4cc0a61434f8d96b802440045ea474d6e00f7e5e63e5bb4b21d992", + "1dfc1605fbad358d8bc844f76d15203fac9ca5c1a79fd4857ffaf2864fbebf96", + "349dfa4058c5e263123b398ae795573c4e1313c83fe68f93556cd5e8031b3c7d" + ], + "trust": [ + { + "rootStore": "Android", + "isTrusted": true + } + ] + }, + { + "certIds": [ + "136747391e4cc0a61434f8d96b802440045ea474d6e00f7e5e63e5bb4b21d992", + "a287ffab762cc69a26d482037edf701f653ce899025c62a7e5cb88bb9b419cbb", + "b085d70b964f191a73e4af0d54ae7a0e07aafdaf9b71dd0862138ab7325a24a2" + ], + "trust": [ + { + "rootStore": "Android", + "isTrusted": true + } + ] + }, + { + "certIds": [ + "136747391e4cc0a61434f8d96b802440045ea474d6e00f7e5e63e5bb4b21d992", + "1dfc1605fbad358d8bc844f76d15203fac9ca5c1a79fd4857ffaf2864fbebf96", + "76b27b80a58027dc3cf1da68dac17010ed93997d0b603e2fadbe85012493b5a7", + "ebd41040e4bb3ec742c9e381d31ef2a41a48b6685c96e7cef3c1df6cd4331c99" + ], + "trust": [ + { + "rootStore": "Android", + "isTrusted": true + } + ] + }, + { + "certIds": [ + "136747391e4cc0a61434f8d96b802440045ea474d6e00f7e5e63e5bb4b21d992", + "1dfc1605fbad358d8bc844f76d15203fac9ca5c1a79fd4857ffaf2864fbebf96", + "349dfa4058c5e263123b398ae795573c4e1313c83fe68f93556cd5e8031b3c7d" + ], + "trust": [ + { + "rootStore": "Java", + "isTrusted": true + } + ] + }, + { + "certIds": [ + "136747391e4cc0a61434f8d96b802440045ea474d6e00f7e5e63e5bb4b21d992", + "a287ffab762cc69a26d482037edf701f653ce899025c62a7e5cb88bb9b419cbb", + "bec94911c2955676db6c0a550986d76e3ba005667c442c9762b4fbb773de228c" + ], + "trust": [ + { + "rootStore": "Java", + "isTrusted": true + } + ] + }, + { + "certIds": [ + "136747391e4cc0a61434f8d96b802440045ea474d6e00f7e5e63e5bb4b21d992", + "1dfc1605fbad358d8bc844f76d15203fac9ca5c1a79fd4857ffaf2864fbebf96", + "76b27b80a58027dc3cf1da68dac17010ed93997d0b603e2fadbe85012493b5a7", + "ebd41040e4bb3ec742c9e381d31ef2a41a48b6685c96e7cef3c1df6cd4331c99" + ], + "trust": [ + { + "rootStore": "Java", + "isTrusted": true + } + ] + }, + { + "certIds": [ + "136747391e4cc0a61434f8d96b802440045ea474d6e00f7e5e63e5bb4b21d992", + "a287ffab762cc69a26d482037edf701f653ce899025c62a7e5cb88bb9b419cbb", + "b085d70b964f191a73e4af0d54ae7a0e07aafdaf9b71dd0862138ab7325a24a2" + ], + "trust": [ + { + "rootStore": "Java", + "isTrusted": false, + "trustErrorMessage": "path does not chain to a trusted anchor" + } + ] + }, + { + "certIds": [ + "136747391e4cc0a61434f8d96b802440045ea474d6e00f7e5e63e5bb4b21d992", + "1dfc1605fbad358d8bc844f76d15203fac9ca5c1a79fd4857ffaf2864fbebf96", + "71cca5391f9e794b04802530b363e121da8a3043bb26662fea4dca7fc951a4bd" + ], + "trust": [ + { + "rootStore": "Windows", + "isTrusted": true + } + ] + }, + { + "certIds": [ + "136747391e4cc0a61434f8d96b802440045ea474d6e00f7e5e63e5bb4b21d992", + "a287ffab762cc69a26d482037edf701f653ce899025c62a7e5cb88bb9b419cbb", + "bec94911c2955676db6c0a550986d76e3ba005667c442c9762b4fbb773de228c" + ], + "trust": [ + { + "rootStore": "Windows", + "isTrusted": true + } + ] + }, + { + "certIds": [ + "136747391e4cc0a61434f8d96b802440045ea474d6e00f7e5e63e5bb4b21d992", + "1dfc1605fbad358d8bc844f76d15203fac9ca5c1a79fd4857ffaf2864fbebf96", + "349dfa4058c5e263123b398ae795573c4e1313c83fe68f93556cd5e8031b3c7d" + ], + "trust": [ + { + "rootStore": "Windows", + "isTrusted": true + } + ] + }, + { + "certIds": [ + "136747391e4cc0a61434f8d96b802440045ea474d6e00f7e5e63e5bb4b21d992", + "1dfc1605fbad358d8bc844f76d15203fac9ca5c1a79fd4857ffaf2864fbebf96", + "76b27b80a58027dc3cf1da68dac17010ed93997d0b603e2fadbe85012493b5a7", + "ebd41040e4bb3ec742c9e381d31ef2a41a48b6685c96e7cef3c1df6cd4331c99" + ], + "trust": [ + { + "rootStore": "Windows", + "isTrusted": true + } + ] + }, + { + "certIds": [ + "136747391e4cc0a61434f8d96b802440045ea474d6e00f7e5e63e5bb4b21d992", + "a287ffab762cc69a26d482037edf701f653ce899025c62a7e5cb88bb9b419cbb", + "b085d70b964f191a73e4af0d54ae7a0e07aafdaf9b71dd0862138ab7325a24a2" + ], + "trust": [ + { + "rootStore": "Windows", + "isTrusted": true + } + ] + } + ], + "issues": 0, + "noSni": false + } + ], + "protocols": [ + { + "id": 771, + "name": "TLS", + "version": "1.2" + }, + { + "id": 772, + "name": "TLS", + "version": "1.3" + } + ], + "suites": [ + { + "protocol": 771, + "list": [ + { + "id": 49195, + "name": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "cipherStrength": 128, + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 29, + "namedGroupName": "x25519" + }, + { + "id": 52393, + "name": "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256", + "cipherStrength": 256, + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 29, + "namedGroupName": "x25519" + }, + { + "id": 49161, + "name": "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", + "cipherStrength": 128, + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 29, + "namedGroupName": "x25519", + "q": 1 + }, + { + "id": 49196, + "name": "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", + "cipherStrength": 256, + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 29, + "namedGroupName": "x25519" + }, + { + "id": 49162, + "name": "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA", + "cipherStrength": 256, + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 29, + "namedGroupName": "x25519", + "q": 1 + }, + { + "id": 49187, + "name": "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256", + "cipherStrength": 128, + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 29, + "namedGroupName": "x25519", + "q": 1 + }, + { + "id": 49188, + "name": "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384", + "cipherStrength": 256, + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 29, + "namedGroupName": "x25519", + "q": 1 + } + ], + "preference": true, + "chaCha20Preference": true + }, + { + "protocol": 772, + "list": [ + { + "id": 4865, + "name": "TLS_AES_128_GCM_SHA256", + "cipherStrength": 128, + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 29, + "namedGroupName": "x25519" + }, + { + "id": 4866, + "name": "TLS_AES_256_GCM_SHA384", + "cipherStrength": 256, + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 29, + "namedGroupName": "x25519" + }, + { + "id": 4867, + "name": "TLS_CHACHA20_POLY1305_SHA256", + "cipherStrength": 256, + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 29, + "namedGroupName": "x25519" + } + ], + "preference": false + } + ], + "namedGroups": { + "list": [ + { + "id": 29, + "name": "x25519", + "bits": 256, + "namedGroupType": "EC" + }, + { + "id": 23, + "name": "secp256r1", + "bits": 256, + "namedGroupType": "EC" + }, + { + "id": 24, + "name": "secp384r1", + "bits": 384, + "namedGroupType": "EC" + }, + { + "id": 25, + "name": "secp521r1", + "bits": 521, + "namedGroupType": "EC" + } + ], + "preference": true + }, + "serverSignature": "cloudflare", + "prefixDelegation": false, + "nonPrefixDelegation": true, + "vulnBeast": false, + "renegSupport": 2, + "sessionResumption": 1, + "compressionMethods": 0, + "supportsNpn": true, + "npnProtocols": "h2 http/1.1", + "supportsAlpn": true, + "alpnProtocols": "h2 http/1.1", + "sessionTickets": 1, + "ocspStapling": true, + "staplingRevocationStatus": 2, + "sniRequired": true, + "httpStatusCode": 200, + "supportsRc4": false, + "rc4WithModern": false, + "rc4Only": false, + "forwardSecrecy": 4, + "supportsAead": true, + "protocolIntolerance": 0, + "miscIntolerance": 0, + "sims": { + "results": [ + { + "client": { + "id": 56, + "name": "Android", + "version": "2.3.7", + "isReference": false + }, + "errorCode": 1, + "errorMessage": "Protocol mismatch (not simulated)", + "attempts": 0 + }, + { + "client": { + "id": 58, + "name": "Android", + "version": "4.0.4", + "isReference": false + }, + "errorCode": 1, + "errorMessage": "Protocol mismatch (not simulated)", + "attempts": 0 + }, + { + "client": { + "id": 59, + "name": "Android", + "version": "4.1.1", + "isReference": false + }, + "errorCode": 1, + "errorMessage": "Protocol mismatch (not simulated)", + "attempts": 0 + }, + { + "client": { + "id": 60, + "name": "Android", + "version": "4.2.2", + "isReference": false + }, + "errorCode": 1, + "errorMessage": "Protocol mismatch (not simulated)", + "attempts": 0 + }, + { + "client": { + "id": 61, + "name": "Android", + "version": "4.3", + "isReference": false + }, + "errorCode": 1, + "errorMessage": "Protocol mismatch (not simulated)", + "attempts": 0 + }, + { + "client": { + "id": 62, + "name": "Android", + "version": "4.4.2", + "isReference": false + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49195, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 23, + "namedGroupName": "secp256r1", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 88, + "name": "Android", + "version": "5.0.0", + "isReference": false + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49195, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 23, + "namedGroupName": "secp256r1", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 129, + "name": "Android", + "version": "6.0", + "isReference": false + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49195, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 23, + "namedGroupName": "secp256r1", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 167, + "name": "Android", + "version": "7.0", + "isReference": false + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 52393, + "suiteName": "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 29, + "namedGroupName": "x25519", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 168, + "name": "Android", + "version": "8.0", + "isReference": false + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 52393, + "suiteName": "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 29, + "namedGroupName": "x25519", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 157, + "name": "Android", + "version": "8.1", + "isReference": false + }, + "errorCode": 0, + "attempts": 1, + "protocolId": 772, + "suiteId": 4867, + "suiteName": "TLS_CHACHA20_POLY1305_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 29, + "namedGroupName": "x25519" + }, + { + "client": { + "id": 158, + "name": "Android", + "version": "9.0", + "isReference": false + }, + "errorCode": 0, + "attempts": 1, + "protocolId": 772, + "suiteId": 4867, + "suiteName": "TLS_CHACHA20_POLY1305_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 29, + "namedGroupName": "x25519" + }, + { + "client": { + "id": 94, + "name": "Baidu", + "version": "Jan 2015", + "isReference": false + }, + "errorCode": 1, + "errorMessage": "Protocol mismatch (not simulated)", + "attempts": 0 + }, + { + "client": { + "id": 91, + "name": "BingPreview", + "version": "Jan 2015", + "isReference": false + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49195, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 23, + "namedGroupName": "secp256r1", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 136, + "name": "Chrome", + "platform": "XP SP3", + "version": "49", + "isReference": false + }, + "errorCode": 1, + "errorMessage": "Server sent fatal alert: handshake_failure", + "attempts": 1, + "alertType": 2, + "alertCode": 40 + }, + { + "client": { + "id": 152, + "name": "Chrome", + "platform": "Win 7", + "version": "69", + "isReference": true + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49195, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 29, + "namedGroupName": "x25519", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 153, + "name": "Chrome", + "platform": "Win 10", + "version": "70", + "isReference": false + }, + "errorCode": 0, + "attempts": 1, + "protocolId": 772, + "suiteId": 4865, + "suiteName": "TLS_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 29, + "namedGroupName": "x25519" + }, + { + "client": { + "id": 170, + "name": "Chrome", + "platform": "Win 10", + "version": "80", + "isReference": true + }, + "errorCode": 0, + "attempts": 1, + "protocolId": 772, + "suiteId": 4865, + "suiteName": "TLS_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 29, + "namedGroupName": "x25519" + }, + { + "client": { + "id": 84, + "name": "Firefox", + "platform": "Win 7", + "version": "31.3.0 ESR", + "isReference": false + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49195, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 23, + "namedGroupName": "secp256r1", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 132, + "name": "Firefox", + "platform": "Win 7", + "version": "47", + "isReference": true + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49195, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 23, + "namedGroupName": "secp256r1", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 137, + "name": "Firefox", + "platform": "XP SP3", + "version": "49", + "isReference": false + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49195, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 23, + "namedGroupName": "secp256r1", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 151, + "name": "Firefox", + "platform": "Win 7", + "version": "62", + "isReference": true + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49195, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 29, + "namedGroupName": "x25519", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 171, + "name": "Firefox", + "platform": "Win 10", + "version": "73", + "isReference": true + }, + "errorCode": 0, + "attempts": 1, + "protocolId": 772, + "suiteId": 4865, + "suiteName": "TLS_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 29, + "namedGroupName": "x25519" + }, + { + "client": { + "id": 145, + "name": "Googlebot", + "version": "Feb 2018", + "isReference": false + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49195, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 29, + "namedGroupName": "x25519", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 100, + "name": "IE", + "platform": "XP", + "version": "6", + "isReference": false + }, + "errorCode": 1, + "errorMessage": "Protocol mismatch (not simulated)", + "attempts": 0 + }, + { + "client": { + "id": 19, + "name": "IE", + "platform": "Vista", + "version": "7", + "isReference": false + }, + "errorCode": 1, + "errorMessage": "Protocol mismatch (not simulated)", + "attempts": 0 + }, + { + "client": { + "id": 101, + "name": "IE", + "platform": "XP", + "version": "8", + "isReference": false + }, + "errorCode": 1, + "errorMessage": "Protocol mismatch (not simulated)", + "attempts": 0 + }, + { + "client": { + "id": 113, + "name": "IE", + "platform": "Win 7", + "version": "8-10", + "isReference": true + }, + "errorCode": 1, + "errorMessage": "Protocol mismatch (not simulated)", + "attempts": 0 + }, + { + "client": { + "id": 143, + "name": "IE", + "platform": "Win 7", + "version": "11", + "isReference": true + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49195, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 23, + "namedGroupName": "secp256r1", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 134, + "name": "IE", + "platform": "Win 8.1", + "version": "11", + "isReference": true + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49195, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 23, + "namedGroupName": "secp256r1", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 64, + "name": "IE", + "platform": "Win Phone 8.0", + "version": "10", + "isReference": false + }, + "errorCode": 1, + "errorMessage": "Protocol mismatch (not simulated)", + "attempts": 0 + }, + { + "client": { + "id": 65, + "name": "IE", + "platform": "Win Phone 8.1", + "version": "11", + "isReference": true + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49195, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 23, + "namedGroupName": "secp256r1", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 106, + "name": "IE", + "platform": "Win Phone 8.1 Update", + "version": "11", + "isReference": true + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49195, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 23, + "namedGroupName": "secp256r1", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 131, + "name": "IE", + "platform": "Win 10", + "version": "11", + "isReference": true + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49195, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 23, + "namedGroupName": "secp256r1", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 144, + "name": "Edge", + "platform": "Win 10", + "version": "15", + "isReference": true + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49195, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 29, + "namedGroupName": "x25519", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 159, + "name": "Edge", + "platform": "Win 10", + "version": "16", + "isReference": true + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49195, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 29, + "namedGroupName": "x25519", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 160, + "name": "Edge", + "platform": "Win 10", + "version": "18", + "isReference": true + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49195, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 29, + "namedGroupName": "x25519", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 120, + "name": "Edge", + "platform": "Win Phone 10", + "version": "13", + "isReference": true + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49195, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 23, + "namedGroupName": "secp256r1", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 25, + "name": "Java", + "version": "6u45", + "isReference": false + }, + "errorCode": 1, + "errorMessage": "Protocol mismatch (not simulated)", + "attempts": 0 + }, + { + "client": { + "id": 26, + "name": "Java", + "version": "7u25", + "isReference": false + }, + "errorCode": 1, + "errorMessage": "Protocol mismatch (not simulated)", + "attempts": 0 + }, + { + "client": { + "id": 147, + "name": "Java", + "version": "8u161", + "isReference": false + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49195, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 23, + "namedGroupName": "secp256r1", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 162, + "name": "Java", + "version": "11.0.3", + "isReference": false + }, + "errorCode": 0, + "attempts": 1, + "protocolId": 772, + "suiteId": 4865, + "suiteName": "TLS_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 23, + "namedGroupName": "secp256r1" + }, + { + "client": { + "id": 163, + "name": "Java", + "version": "12.0.1", + "isReference": false + }, + "errorCode": 0, + "attempts": 1, + "protocolId": 772, + "suiteId": 4865, + "suiteName": "TLS_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 23, + "namedGroupName": "secp256r1" + }, + { + "client": { + "id": 27, + "name": "OpenSSL", + "version": "0.9.8y", + "isReference": false + }, + "errorCode": 1, + "errorMessage": "Protocol mismatch (not simulated)", + "attempts": 0 + }, + { + "client": { + "id": 99, + "name": "OpenSSL", + "version": "1.0.1l", + "isReference": true + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49195, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 23, + "namedGroupName": "secp256r1", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 164, + "name": "OpenSSL", + "version": "1.0.2s", + "isReference": true + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49195, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 23, + "namedGroupName": "secp256r1", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 169, + "name": "OpenSSL", + "version": "1.1.0k", + "isReference": true + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 52393, + "suiteName": "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 29, + "namedGroupName": "x25519", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 165, + "name": "OpenSSL", + "version": "1.1.1c", + "isReference": true + }, + "errorCode": 0, + "attempts": 1, + "protocolId": 772, + "suiteId": 4866, + "suiteName": "TLS_AES_256_GCM_SHA384", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 29, + "namedGroupName": "x25519" + }, + { + "client": { + "id": 32, + "name": "Safari", + "platform": "OS X 10.6.8", + "version": "5.1.9", + "isReference": false + }, + "errorCode": 1, + "errorMessage": "Protocol mismatch (not simulated)", + "attempts": 0 + }, + { + "client": { + "id": 33, + "name": "Safari", + "platform": "iOS 6.0.1", + "version": "6", + "isReference": false + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49161, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 23, + "namedGroupName": "secp256r1", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 34, + "name": "Safari", + "platform": "OS X 10.8.4", + "version": "6.0.4", + "isReference": true + }, + "errorCode": 1, + "errorMessage": "Protocol mismatch (not simulated)", + "attempts": 0 + }, + { + "client": { + "id": 63, + "name": "Safari", + "platform": "iOS 7.1", + "version": "7", + "isReference": true + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49161, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 23, + "namedGroupName": "secp256r1", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 35, + "name": "Safari", + "platform": "OS X 10.9", + "version": "7", + "isReference": true + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49161, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 23, + "namedGroupName": "secp256r1", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 85, + "name": "Safari", + "platform": "iOS 8.4", + "version": "8", + "isReference": true + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49161, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 23, + "namedGroupName": "secp256r1", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 87, + "name": "Safari", + "platform": "OS X 10.10", + "version": "8", + "isReference": true + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49161, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 23, + "namedGroupName": "secp256r1", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 114, + "name": "Safari", + "platform": "iOS 9", + "version": "9", + "isReference": true + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49195, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 23, + "namedGroupName": "secp256r1", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 111, + "name": "Safari", + "platform": "OS X 10.11", + "version": "9", + "isReference": true + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49195, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 23, + "namedGroupName": "secp256r1", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 140, + "name": "Safari", + "platform": "iOS 10", + "version": "10", + "isReference": true + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49195, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 23, + "namedGroupName": "secp256r1", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 138, + "name": "Safari", + "platform": "OS X 10.12", + "version": "10", + "isReference": true + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49195, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 23, + "namedGroupName": "secp256r1", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 161, + "name": "Safari", + "platform": "MacOS 10.14.6 Beta", + "version": "12.1.2", + "isReference": true + }, + "errorCode": 0, + "attempts": 1, + "protocolId": 772, + "suiteId": 4867, + "suiteName": "TLS_CHACHA20_POLY1305_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 29, + "namedGroupName": "x25519" + }, + { + "client": { + "id": 166, + "name": "Safari", + "platform": "iOS 12.3.1", + "version": "12.1.1", + "isReference": true + }, + "errorCode": 0, + "attempts": 1, + "protocolId": 772, + "suiteId": 4867, + "suiteName": "TLS_CHACHA20_POLY1305_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 29, + "namedGroupName": "x25519" + }, + { + "client": { + "id": 112, + "name": "Apple ATS", + "platform": "iOS 9", + "version": "9", + "isReference": true + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49195, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 23, + "namedGroupName": "secp256r1", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 92, + "name": "Yahoo Slurp", + "version": "Jan 2015", + "isReference": false + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49195, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 23, + "namedGroupName": "secp256r1", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + }, + { + "client": { + "id": 93, + "name": "YandexBot", + "version": "Jan 2015", + "isReference": false + }, + "errorCode": 0, + "attempts": 1, + "certChainId": "aed189765b0bf095e682bde0106bb5ae6f84d72860c4deb99b09ea4922263323", + "protocolId": 771, + "suiteId": 49195, + "suiteName": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "kxType": "ECDH", + "kxStrength": 3072, + "namedGroupBits": 256, + "namedGroupId": 23, + "namedGroupName": "secp256r1", + "keyAlg": "EC", + "keySize": 256, + "sigAlg": "SHA256withECDSA" + } + ] + }, + "heartbleed": false, + "heartbeat": false, + "openSslCcs": 1, + "openSSLLuckyMinus20": 1, + "ticketbleed": 1, + "bleichenbacher": 1, + "poodle": false, + "poodleTls": 1, + "fallbackScsv": true, + "freak": false, + "hasSct": 1, + "ecdhParameterReuse": false, + "logjam": false, + "chaCha20Preference": true, + "hstsPolicy": { + "LONG_MAX_AGE": 15552000, + "header": "max-age=31536000; preload", + "status": "present", + "maxAge": 31536000, + "preload": true, + "directives": { + "max-age": "31536000", + "preload": "" + } + }, + "hstsPreloads": [ + { + "source": "Chrome", + "hostname": "essentialkaos.com", + "status": "absent", + "sourceTime": 1735393862291 + }, + { + "source": "Edge", + "hostname": "essentialkaos.com", + "status": "absent", + "sourceTime": 1735393865738 + }, + { + "source": "Firefox", + "hostname": "essentialkaos.com", + "status": "absent", + "sourceTime": 1735393865738 + }, + { + "source": "IE", + "hostname": "essentialkaos.com", + "status": "absent", + "sourceTime": 1735393865738 + } + ], + "hpkpPolicy": { + "status": "absent", + "pins": [], + "matchedPins": [], + "directives": [] + }, + "hpkpRoPolicy": { + "status": "absent", + "pins": [], + "matchedPins": [], + "directives": [] + }, + "staticPkpPolicy": { + "status": "absent", + "pins": [], + "matchedPins": [], + "forbiddenPins": [], + "matchedForbiddenPins": [] + }, + "httpTransactions": [ + { + "requestUrl": "https://essentialkaos.com/", + "statusCode": 200, + "requestLine": "GET / HTTP/1.1", + "requestHeaders": [ + "Host: essentialkaos.com", + "User-Agent: SSL Labs (https://www.ssllabs.com/about/assessment.html); on behalf of XXX.XXX.XXX.XXX", + "Accept: */*", + "Connection: Close" + ], + "responseLine": "HTTP/1.1 200 OK", + "responseHeadersRaw": [ + "Date: Sat, 28 Dec 2024 14:46:49 GMT", + "Content-Type: text/html", + "Transfer-Encoding: chunked", + "Connection: close", + "last-modified: Thu, 20 Jun 2024 19:57:45 GMT", + "vary: Accept-Encoding", + "strict-transport-security: max-age=31536000; preload", + "x-frame-options: SAMEORIGIN", + "x-content-type-options: nosniff", + "x-xss-protection: 1; mode=block", + "content-security-policy: default-src 'none'; script-src 'strict-dynamic' 'nonce-AgIeG1znOER1' 'unsafe-inline' http: https:; img-src 'self' https://ssl.google-analytics.com https://s-static.ak.facebook.com https://assets.zendesk.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com https://assets.zendesk.com; font-src 'self' https://fonts.gstatic.com https://themes.googleusercontent.com; frame-src https://assets.zendesk.com https://www.facebook.com https://s-static.ak.facebook.com https://tautt.zendesk.com; object-src 'none'; media-src 'self'; base-uri 'self'; frame-ancestors 'none'; manifest-src 'self'", + "referrer-policy: no-referrer-when-downgrade", + "permissions-policy: camera=(), geolocation=(), microphone=(), payment=(), sync-xhr=(self)", + "cf-cache-status: DYNAMIC", + "Report-To: {\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=i%2Fvk5gDAfcviMsyj0frp6ebY62V44tv4GnS6NLv6TPWlQzmCAAiVokMKc8u0IfAEc6J9tgcaKuNYZAoy1sF93wbeuxnRoJF6wO%2FTJSMT4Ai9QJCN7u1cFw3JqzYuHrcQQaCAG%2BQ3nGhb7Nc0nyC0nA%3D%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}", + "NEL: {\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}", + "Server: cloudflare", + "CF-RAY: 8f925788a919ed3c-SJC", + "alt-svc: h3=\":443\"; ma=86400", + "server-timing: cfL4;desc=\"?proto=TCP&rtt=3763&min_rtt=3757&rtt_var=796&sent=6&recv=8&lost=0&retrans=0&sent_bytes=3015&recv_bytes=533&delivery_rate=1074388&cwnd=99&unsent_bytes=0&cid=9ae92c8f397d28cc&ts=602&x=0\"" + ], + "responseHeaders": [ + { + "name": "Date", + "value": "Sat, 28 Dec 2024 14:46:49 GMT" + }, + { + "name": "Content-Type", + "value": "text/html" + }, + { + "name": "Transfer-Encoding", + "value": "chunked" + }, + { + "name": "Connection", + "value": "close" + }, + { + "name": "last-modified", + "value": "Thu, 20 Jun 2024 19:57:45 GMT" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; preload" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-xss-protection", + "value": "1; mode=block" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'; script-src 'strict-dynamic' 'nonce-AgIeG1znOER1' 'unsafe-inline' http: https:; img-src 'self' https://ssl.google-analytics.com https://s-static.ak.facebook.com https://assets.zendesk.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com https://assets.zendesk.com; font-src 'self' https://fonts.gstatic.com https://themes.googleusercontent.com; frame-src https://assets.zendesk.com https://www.facebook.com https://s-static.ak.facebook.com https://tautt.zendesk.com; object-src 'none'; media-src 'self'; base-uri 'self'; frame-ancestors 'none'; manifest-src 'self'" + }, + { + "name": "referrer-policy", + "value": "no-referrer-when-downgrade" + }, + { + "name": "permissions-policy", + "value": "camera=(), geolocation=(), microphone=(), payment=(), sync-xhr=(self)" + }, + { + "name": "cf-cache-status", + "value": "DYNAMIC" + }, + { + "name": "Report-To", + "value": "{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=i%2Fvk5gDAfcviMsyj0frp6ebY62V44tv4GnS6NLv6TPWlQzmCAAiVokMKc8u0IfAEc6J9tgcaKuNYZAoy1sF93wbeuxnRoJF6wO%2FTJSMT4Ai9QJCN7u1cFw3JqzYuHrcQQaCAG%2BQ3nGhb7Nc0nyC0nA%3D%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}" + }, + { + "name": "NEL", + "value": "{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}" + }, + { + "name": "Server", + "value": "cloudflare" + }, + { + "name": "CF-RAY", + "value": "8f925788a919ed3c-SJC" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=86400" + }, + { + "name": "server-timing", + "value": "cfL4;desc=\"?proto=TCP&rtt=3763&min_rtt=3757&rtt_var=796&sent=6&recv=8&lost=0&retrans=0&sent_bytes=3015&recv_bytes=533&delivery_rate=1074388&cwnd=99&unsent_bytes=0&cid=9ae92c8f397d28cc&ts=602&x=0\"" + } + ], + "fragileServer": false + } + ], + "implementsTLS13MandatoryCS": true, + "zeroRTTEnabled": 0, + "zombiePoodle": 1, + "goldenDoodle": 1, + "supportsCBC": true, + "zeroLengthPaddingOracle": 1, + "sleepingPoodle": 1 + } +} + diff --git a/sslscan_test.go b/sslscan_test.go index 3abc4ad..1558db5 100644 --- a/sslscan_test.go +++ b/sslscan_test.go @@ -73,7 +73,7 @@ func (s *SSLLabsSuite) TestInfo(c *check.C) { c.Assert(api, check.NotNil) - c.Assert(api.Info.EngineVersion, check.Equals, "2.3.0") + c.Assert(api.Info.EngineVersion, check.Equals, "2.3.1") c.Assert(api.Info.CriteriaVersion, check.Equals, "2009q") }