woody
01/28/2025, 7:02 PMimport net
import tls
main:
tx := #[
192, 0, 35, 48, 0, 66, 50, 50, 50, 66, 66, 66, 66, 66, 66, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 192
]
net := net.open
sock := net.tcp-connect "192.168.0.3" 51200
klf := tls.Socket.client sock
print "connected"
klf.out.write tx // this call fails!
resp := klf.in.read-bytes 8
print "RXED: $resp"
klf.close
but I got this error message:
[jaguar] INFO: program f7e0b56b-55f2-5b0a-8e13-fcb04c8802a5 started
connected
******************************************************************************
Decoding by `jag`, device has version <2.0.0-alpha.174>
******************************************************************************
EXCEPTION error.
Unknown root certificate: 'C=DK, O=VELUX A/S'
Certificate error 0x0008: 'C=DK, O=VELUX A/S'
NOT_TRUSTED
0: tls-error_ <sdk>/tls/session.toit:1147:3
1: Session.handshake_ <sdk>/tls/session.toit:338:9
2: Session.handshake.<block> <sdk>/tls/session.toit:277:7
3: Session.handshake <sdk>/tls/session.toit:223:3
4: Session.ensure-handshaken_ <sdk>/tls/session.toit:462:5
5: Session.write <sdk>/tls/session.toit:399:5
6: Socket.try-write_ <sdk>/tls/socket.toit:122:21
7: CloseableOut_.try-write_ <sdk>/io/writer.toit:346:19
8: Writer.try-write <sdk>/io/writer.toit:110:16
9: Writer.write <sdk>/io/writer.toit:51:14
10: main hello.toit:14:13
******************************************************************************
[jaguar] ERROR: program f7e0b56b-55f2-5b0a-8e13-fcb04c8802a5 stopped - exit code 1
Is there a way to communicate with tls without certificates?floitsch
01/30/2025, 10:25 AMwoody
02/01/2025, 8:41 PMopenssl s_client -connect 192.168.0.3:51200 and I got
ONNECTED(00000003)
Can't use SSL_get_servername
depth=0 C = DK, O = VELUX A/S
verify error:num=18:self-signed certificate
verify return:1
depth=0 C = DK, O = VELUX A/S
verify return:1
---
Certificate chain
0 s:C = DK, O = VELUX A/S
i:C = DK, O = VELUX A/S
a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256
v:NotBefore: Apr 25 09:38:26 2018 GMT; NotAfter: Jul 12 09:38:26 2026 GMT
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDFTCCAf2gAwIBAgIJAJq77rG+ZPdkMA0GCSqGSIb3DQEBCwUAMCExCzAJBgNV
BAYTAkRLMRIwEAYDVQQKDAlWRUxVWCBBL1MwHhcNMTgwNDI1MDkzODI2WhcNMjYw
NzEyMDkzODI2WjAhMQswCQYDVQQGEwJESzESMBAGA1UECgwJVkVMVVggQS9TMIIB
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAruJCr/hGF2Vy7h34bZrEs7Te
iGoAEUagvxjxxQ60pXJFwfFmTUwoU10iOyvWf5Ih+UuuJkTKExiQSy5aVxv6TDNq
BxVkAKke+2sqsU49WAPR5xXOv1P2RlCyFAUSZh54XqmA3We/gcqF7DB3L84noXD4
2ga+qdDHqtK9q6Loeh+nCupt9LmXMgEudVS6MSm6DsQfypoO0GgPpblUKXvVIqBi
ap/FlgDUu/QxV+kKtfxNqT6R6FgYHvAaho7KX7ajvNWAR/49VWwwABw9Mne/UGq4
NBF5AAI/kqVFJRHRd8hpP/RX3x6DehRrrabE83Cec7igR/D6WOcSR+4BQHQwjwID
AQABo1AwTjAdBgNVHQ4EFgQU3tvHdagNdZed6UVmjl9gaC9impQwHwYDVR0jBBgw
FoAU3tvHdagNdZed6UVmjl9gaC9impQwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0B
AQsFAAOCAQEAJYbMGC4T7eH7+eEWDuAduByKJKrfHO9zy+dKRnBM+dADiakWiJ7c
tzwxoWDpH5YPW+KhyUQq+LjotiorMcZlKU/eyfaaaPipd9okc0W23pdnFVZZCVBu
EWwh7Jf9CKg4QpUHl09qr00NHMOVvy2ytUVL+t9mTNCk/YQHen+OkVNAjdtULzr5
dRJpLQXUhTbGbHVqw5X9knxAC9ITOZt6aJNkScV8TL90CzZWOodh5+6AXqywCQMF
3GgH+AaFvwChQ/6O35La5UYzLbcEAHjIWkA31XMybdejZYW3Bzk2oVAPgnOAMgS2
L6owZzkax0jWlxC1CsnbdC32LCdxj4TiUg==
-----END CERTIFICATE-----woody
02/01/2025, 8:41 PMsubject=C = DK, O = VELUX A/S
issuer=C = DK, O = VELUX A/S
---
No client certificate CA names sent
Peer signing digest: SHA512
Peer signature type: RSA
Server Temp Key: DH, 2048 bits
---
SSL handshake has read 2043 bytes and written 651 bytes
Verification error: self-signed certificate
---
New, TLSv1.2, Cipher is DHE-RSA-AES256-SHA256
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : DHE-RSA-AES256-SHA256
Session-ID: 5F603931DA2A3D715BA80549CD906E4E78313A42E7A622380CFBC603E74B0118
Session-ID-ctx:
Master-Key: 8C21909C1912F2D15A05D02034D554E2A9B8C84D1D398F95562A707D7584CE890B368F2E26D51C2562991970DFF66CDB
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1738441694
Timeout : 7200 (sec)
Verify return code: 18 (self-signed certificate)
Extended master secret: no
---woody
02/01/2025, 8:43 PMcert := """
-----BEGIN CERTIFICATE-----
MIIDFTCCAf2gAwIBAgIJAJq77rG+ZPdkMA0GCSqGSIb3DQEBCwUAMCExCzAJBgNV
BAYTAkRLMRIwEAYDVQQKDAlWRUxVWCBBL1MwHhcNMTgwNDI1MDkzODI2WhcNMjYw
NzEyMDkzODI2WjAhMQswCQYDVQQGEwJESzESMBAGA1UECgwJVkVMVVggQS9TMIIB
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAruJCr/hGF2Vy7h34bZrEs7Te
iGoAEUagvxjxxQ60pXJFwfFmTUwoU10iOyvWf5Ih+UuuJkTKExiQSy5aVxv6TDNq
BxVkAKke+2sqsU49WAPR5xXOv1P2RlCyFAUSZh54XqmA3We/gcqF7DB3L84noXD4
2ga+qdDHqtK9q6Loeh+nCupt9LmXMgEudVS6MSm6DsQfypoO0GgPpblUKXvVIqBi
ap/FlgDUu/QxV+kKtfxNqT6R6FgYHvAaho7KX7ajvNWAR/49VWwwABw9Mne/UGq4
NBF5AAI/kqVFJRHRd8hpP/RX3x6DehRrrabE83Cec7igR/D6WOcSR+4BQHQwjwID
AQABo1AwTjAdBgNVHQ4EFgQU3tvHdagNdZed6UVmjl9gaC9impQwHwYDVR0jBBgw
FoAU3tvHdagNdZed6UVmjl9gaC9impQwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0B
AQsFAAOCAQEAJYbMGC4T7eH7+eEWDuAduByKJKrfHO9zy+dKRnBM+dADiakWiJ7c
tzwxoWDpH5YPW+KhyUQq+LjotiorMcZlKU/eyfaaaPipd9okc0W23pdnFVZZCVBu
EWwh7Jf9CKg4QpUHl09qr00NHMOVvy2ytUVL+t9mTNCk/YQHen+OkVNAjdtULzr5
dRJpLQXUhTbGbHVqw5X9knxAC9ITOZt6aJNkScV8TL90CzZWOodh5+6AXqywCQMF
3GgH+AaFvwChQ/6O35La5UYzLbcEAHjIWkA31XMybdejZYW3Bzk2oVAPgnOAMgS2
L6owZzkax0jWlxC1CsnbdC32LCdxj4TiUg==
-----END CERTIFICATE-----
"""woody
02/01/2025, 8:44 PMcert in my toit program. Any help is appreciated.floitsch
02/01/2025, 8:45 PMimport tls
main:
my-root := tls.RootCertificate CERT // Where 'CERT' is your "cert".
my-root.installwoody
02/01/2025, 8:46 PMfloitsch
02/01/2025, 8:46 PMfloitsch
02/01/2025, 8:47 PMwoody
02/01/2025, 8:48 PMwoody
02/01/2025, 8:48 PMfloitsch
02/01/2025, 8:49 PMwoody
02/01/2025, 8:50 PMklf.close
b)`sock.close`
c) klf.close
sock.closefloitsch
02/01/2025, 8:51 PMklf here?woody
02/01/2025, 8:52 PMklf := tls.Socket.client sockfloitsch
02/01/2025, 8:52 PMfloitsch
02/01/2025, 8:55 PMwoody
02/01/2025, 9:01 PMhttps://libs.toit.io/tls/library-summary). Second best is a small program example in tutorial/network. Third best place is an example under github/toit/examples.woody
02/01/2025, 9:05 PMfloitsch
02/01/2025, 9:06 PMwoody
02/08/2025, 10:07 PMimport http
import net
import tls
import certificate-roots
import encoding.json
import .secrets
URL ::= "eapi.pcloud.com"
PATH ::= "userinfo?getauth=1&logout=1&username=$USER&password=$PASS" // encoded mit https://www.utilities-online.info/urlencode
main:
certificate-roots.install-common-trusted-roots
network := net.open
client := http.Client.tls network
response := client.get URL PATH
print response.body
client.close
The output:
EXCEPTION error.
Unknown root certificate: 'C=CH, O=SwissSign AG, CN=SwissSign Gold CA - G2'
Certificate error 0x0008: 'C=CH, O=SwissSign AG, CN=SwissSign RSA TLS Root CA 2022 - 1'
NOT_TRUSTED
0: tls-error_ <sdk>/tls/session.toit:1147:3
1: Session.handshake_ <sdk>/tls/session.toit:338:9
2: Session.handshake.<block> <sdk>/tls/session.toit:277:7
3: Session.handshake <sdk>/tls/session.toit:223:3
4: Socket.handshake <sdk>/tls/socket.toit:69:14
5: Client.try-to-reuse_.<block>.<block> <pkg:pkg-http>/client.toit:652:24
6: catch.<block> <sdk>/core/exceptions.toit:124:10
7: catch <sdk>/core/exceptions.toit:122:1
8: catch <sdk>/core/exceptions.toit:85:10
9: Client.try-to-reuse_.<block> <pkg:pkg-http>/client.toit:647:9
10: Client.try-to-reuse_ <pkg:pkg-http>/client.toit:635:3
11: Client.get_.<block> <pkg:pkg-http>/client.toit:305:7
12: SmallInteger_.repeat <sdk>/core/numbers.toit:1277:3
13: Client.get_ <pkg:pkg-http>/client.toit:303:19
14: Client.get <pkg:pkg-http>/client.toit:300:12
15: main pcloud.toit:17:22woody
02/08/2025, 10:08 PMfloitsch
02/08/2025, 10:09 PMinstall-all... to see if that fixes the problem.floitsch
02/08/2025, 10:09 PMwoody
02/08/2025, 10:10 PMfloitsch
02/08/2025, 10:10 PMfloitsch
02/08/2025, 10:10 PMfloitsch
02/08/2025, 10:11 PMwoody
02/08/2025, 10:12 PMfloitsch
02/08/2025, 10:13 PMwoody
02/08/2025, 10:13 PMfloitsch
02/08/2025, 10:13 PMjag flash esp32-spiramfloitsch
02/08/2025, 10:13 PMwoody
02/08/2025, 10:13 PMwoody
02/08/2025, 10:16 PMfloitsch
02/08/2025, 10:17 PMwoody
02/08/2025, 10:19 PMfloitsch
02/08/2025, 10:23 PMwoody
02/08/2025, 10:31 PMfloitsch
02/08/2025, 10:35 PMfloitsch
02/08/2025, 10:37 PMwoody
02/08/2025, 10:39 PMfloitsch
02/08/2025, 10:42 PMwoody
02/08/2025, 10:47 PMfloitsch
02/08/2025, 10:49 PMwoody
02/08/2025, 10:49 PMfloitsch
02/08/2025, 10:49 PMfloitsch
02/08/2025, 10:49 PMfloitsch
02/08/2025, 10:50 PMwoody
02/08/2025, 10:53 PMfloitsch
02/08/2025, 10:53 PMfloitsch
02/08/2025, 10:54 PMwoody
02/08/2025, 10:55 PMfloitsch
02/08/2025, 10:55 PMfloitsch
02/08/2025, 10:55 PMticks_to_wait to 0. But that still doesn't really help us.floitsch
02/08/2025, 10:56 PMread-alert (or so), and be blocked until an alert is raised. (Like read functions).
But we can't implement that (nicely) with this API, as we are not allowed to block.floitsch
02/08/2025, 10:57 PMcan_receive seems to have the same issue.floitsch
02/08/2025, 10:58 PMfloitsch
02/08/2025, 10:58 PMfloitsch
02/08/2025, 11:02 PMfloitsch
02/08/2025, 11:06 PMfloitsch
02/08/2025, 11:06 PMwoody
02/08/2025, 11:40 PMfloitsch
02/09/2025, 9:14 AMfloitsch
02/20/2025, 2:03 PMwoody
02/20/2025, 2:17 PM