|
23 | 23 |
|
24 | 24 | start() -> |
25 | 25 | % start SSL |
| 26 | + ok = ssl:start(), |
| 27 | + ok = test_print_client_capabilities(), |
| 28 | + ok = ssl:stop(), |
26 | 29 | Entropy = ssl:nif_entropy_init(), |
27 | 30 | CtrDrbg = ssl:nif_ctr_drbg_init(), |
28 | 31 | ok = ssl:nif_ctr_drbg_seed(CtrDrbg, Entropy, <<"AtomVM">>), |
@@ -59,6 +62,29 @@ start() -> |
59 | 62 | ok = socket:close(Socket), |
60 | 63 | ok. |
61 | 64 |
|
| 65 | +test_print_client_capabilities() -> |
| 66 | + {ok, SSLSocket} = ssl:connect("check-tls.akamai.io", 443, [ |
| 67 | + {verify, verify_none}, {active, false}, {binary, true} |
| 68 | + ]), |
| 69 | + UserAgent = erlang:system_info(machine), |
| 70 | + ok = ssl:send(SSLSocket, [ |
| 71 | + <<"GET /v1/tlsinfo.json HTTP/1.1\r\nHost: check-tls.akamai.io\r\nUser-Agent: ">>, |
| 72 | + UserAgent, |
| 73 | + <<"\r\n\r\n">> |
| 74 | + ]), |
| 75 | + ok = recv_helper(SSLSocket, 0), |
| 76 | + ok = ssl:close(SSLSocket), |
| 77 | + ok. |
| 78 | + |
| 79 | +recv_helper(SSLSocket, Bytes) -> |
| 80 | + case ssl:recv(SSLSocket, Bytes) of |
| 81 | + {ok, Data} -> |
| 82 | + io:format("~s~n", [Data]), |
| 83 | + recv_helper(SSLSocket, 0); |
| 84 | + {error, _Reason} -> |
| 85 | + ok |
| 86 | + end. |
| 87 | + |
62 | 88 | handshake_loop(SSLContext, Socket) -> |
63 | 89 | case ssl:nif_handshake_step(SSLContext) of |
64 | 90 | ok -> |
|
0 commit comments