{
  "comment": "Tests for SSL configuration: tls13 only",
  "configs": {
    "1": {
      "proto": {
        "proto": "ssl",
        "no_ssl2": "yes",
        "no_ssl3": "yes",
        "no_tls10": "yes",
        "no_tls11": "yes",
        "no_tls12": "yes",
        "no_tls13": "no",
        "ciphersuites": "TLS_CHACHA20_POLY1305_SHA256"
      },
      "client": {
        "ip": "127.0.0.1",
        "port": "8462",
        "use_sni": "yes",
        "sni_servername": "example.com"
      },
      "server": {
        "ip": "127.0.0.1",
        "port": "9462",
        "crt": "server.crt",
        "key": "server.key"
      }
    },
    "2": {
      "proto": {
        "proto": "ssl",
        "no_ssl2": "no",
        "no_ssl3": "no",
        "no_tls10": "no",
        "no_tls11": "no",
        "no_tls12": "no",
        "no_tls13": "no",
        "ciphersuites": "TLS_CHACHA20_POLY1305_SHA256"
      },
      "client": {
        "ip": "127.0.0.1",
        "port": "8462",
        "use_sni": "yes",
        "sni_servername": "example.com"
      },
      "server": {
        "ip": "127.0.0.1",
        "port": "9462",
        "crt": "server.crt",
        "key": "server.key"
      }
    }
  },
  "tests": {
    "1": {
      "comment": "Configures tls13 only",
      "states": {
        "1": {
          "testend": "client",
          "cmd": "send",
          "payload": "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n",
          "assert": {
            "current_cipher_name": {
              "==": [
                "TLS_CHACHA20_POLY1305_SHA256"
              ]
            },
            "current_cipher_version": {
              "==": [
                "TLSv1.3"
              ],
              "!match": [
                "SSLv3",
                "^TLSv1\\.[012]?$"
              ]
            },
            "ssl_proto_version": {
              "==": [
                "TLSv1.3"
              ],
              "!=": [
                "SSLv3"
              ],
              "!match": [
                "^TLSv1\\.[012]?$"
              ]
            },
            "ssl_state": {
              "==": [
                "SSLOK "
              ]
            }
          }
        },
        "2": {
          "testend": "server",
          "cmd": "recv",
          "payload": "GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n",
          "assert": {
            "current_cipher_name": {
              "==": [
                "TLS_CHACHA20_POLY1305_SHA256"
              ]
            },
            "current_cipher_version": {
              "==": [
                "TLSv1.3"
              ],
              "!match": [
                "SSLv3",
                "^TLSv1\\.[012]?$"
              ]
            },
            "ssl_proto_version": {
              "==": [
                "TLSv1.3"
              ],
              "!=": [
                "SSLv3"
              ],
              "!match": [
                "^TLSv1\\.[012]?$"
              ]
            },
            "ssl_state": {
              "==": [
                "SSLOK "
              ]
            },
            "sni_servername": {
              "==": [
                "example.com"
              ]
            }
          }
        }
      }
    }
  }
}
