circuitpython/ports
Jeff Epler c98174eea5
Add support for SSL client certificate (load_cert_chain)
Tested with badssl.com:

 1. Get client certificates from https://badssl.com/download/
 2. Convert public portion with `openssl x509 -in badssl.com-client.pem -out CIRCUITPY/cert.pem`
 3. Convert private portion with `openssl rsa -in badssl.com-client.pem -out CIRCUITPY/privkey.pem` and the password `badssl.com`
 4. Put wifi settings in CIRCUITPY/.env
 5. Run the below Python script:

```py
import os
import wifi
import socketpool
import ssl
import adafruit_requests

TEXT_URL = "https://client.badssl.com/"
wifi.radio.connect(os.getenv('WIFI_SSID'), os.getenv('WIFI_PASSWORD'))

pool = socketpool.SocketPool(wifi.radio)
context = ssl.create_default_context()
requests = adafruit_requests.Session(pool, context)

print(f"Fetching from {TEXT_URL} without certificate (should fail)")
response = requests.get(TEXT_URL)
print(f"{response.status_code=}, should be 400 Bad Request")
input("hit enter to continue\r")

print("Loading client certificate")
context.load_cert_chain("/cert.pem", "privkey.pem")
requests = adafruit_requests.Session(pool, context)

print(f"Fetching from {TEXT_URL} with certificate (should succeed)")
response = requests.get(TEXT_URL)
print(f"{response.status_code=}, should be 200 OK")
```
2022-10-10 15:10:53 -05:00
..
atmel-samd save about 112 bytes 2022-10-09 19:22:39 -04:00
broadcom Tweak black_bindings 2022-09-30 11:18:13 -05:00
cxd56 remove redundant port/*/.gitignore; cleanup others 2022-10-01 11:52:36 -04:00
espressif Add support for SSL client certificate (load_cert_chain) 2022-10-10 15:10:53 -05:00
litex remove redundant port/*/.gitignore; cleanup others 2022-10-01 11:52:36 -04:00
mimxrt10xx remove redundant port/*/.gitignore; cleanup others 2022-10-01 11:52:36 -04:00
nrf fix ai-thinker creation ids; fix some typos elsewhere 2022-10-03 15:29:03 -04:00
raspberrypi Add support for SSL client certificate (load_cert_chain) 2022-10-10 15:10:53 -05:00
stm remove redundant port/*/.gitignore; cleanup others 2022-10-01 11:52:36 -04:00
unix Refactor dotenv module so that it can be tested on host 2022-10-04 09:51:27 -05:00