File: test_tls_sites_simple.py

package info (click to toggle)
micropython 1.25.0%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 48,944 kB
  • sloc: ansic: 317,850; python: 59,539; xml: 4,241; makefile: 3,530; sh: 1,421; javascript: 744; asm: 681; cpp: 45; exp: 11; pascal: 6
file content (43 lines) | stat: -rw-r--r-- 1,005 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# Test making HTTPS requests to sites that allow simple ciphers.

import sys
import socket
import ssl

SITES = (
    ("micropython.org", "/ks/test.html"),
    ("pypi.org", "/"),
)


def test_one(site, path):
    ai = socket.getaddrinfo(site, 443, socket.AF_INET)
    addr = ai[0][-1]

    # Create SSLContext.
    ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
    if sys.implementation.name != "micropython":
        # CPython compatibility: disable check_hostname
        ssl_context.check_hostname = False
    ssl_context.verify_mode = ssl.CERT_NONE

    s = socket.socket(socket.AF_INET)
    s.connect(addr)
    s = ssl_context.wrap_socket(s)

    s.write(b"GET %s HTTP/1.0\r\nHost: %s\r\n\r\n" % (bytes(path, "ascii"), bytes(site, "ascii")))
    resp = s.read(4096)
    s.close()

    if resp.startswith(b"HTTP/1."):
        print(site, "ok")
    else:
        print(site, "response doesn't start with HTTP/1.")


def main():
    for site, path in SITES:
        test_one(site, path)


main()