45
45
#include "mbedtls/ctr_drbg.h"
46
46
#include "mbedtls/debug.h"
47
47
48
+ extern const uint8_t server_root_cert_pem_start [] asm("_binary_server_root_cert_pem_start" );
49
+ extern const uint8_t server_root_cert_pem_end [] asm("_binary_server_root_cert_pem_end" );
50
+
48
51
typedef struct _mp_obj_ssl_socket_t {
49
52
mp_obj_base_t base ;
50
53
mp_obj_t sock ;
@@ -136,7 +139,7 @@ STATIC mp_obj_ssl_socket_t *socket_new(mp_obj_t sock, struct ssl_args *args) {
136
139
mbedtls_pk_init (& o -> pkey );
137
140
mbedtls_ctr_drbg_init (& o -> ctr_drbg );
138
141
// Debug level (0-4)
139
- mbedtls_debug_set_threshold (0 );
142
+ mbedtls_debug_set_threshold (4 );
140
143
141
144
mbedtls_entropy_init (& o -> entropy );
142
145
const byte seed [] = "upy" ;
@@ -146,6 +149,15 @@ STATIC mp_obj_ssl_socket_t *socket_new(mp_obj_t sock, struct ssl_args *args) {
146
149
assert (0 );
147
150
}
148
151
152
+ ret = mbedtls_x509_crt_parse (& o -> cacert , server_root_cert_pem_start ,
153
+ server_root_cert_pem_end - server_root_cert_pem_start );
154
+
155
+ if (ret < 0 )
156
+ {
157
+ printf ("mbedtls_x509_crt_parse returned -0x%x\n\n" , - ret );
158
+ assert (0 );
159
+ }
160
+
149
161
ret = mbedtls_ssl_config_defaults (& o -> conf ,
150
162
MBEDTLS_SSL_IS_CLIENT ,
151
163
MBEDTLS_SSL_TRANSPORT_STREAM ,
@@ -154,7 +166,7 @@ STATIC mp_obj_ssl_socket_t *socket_new(mp_obj_t sock, struct ssl_args *args) {
154
166
assert (0 );
155
167
}
156
168
157
- mbedtls_ssl_conf_authmode (& o -> conf , MBEDTLS_SSL_VERIFY_NONE );
169
+ mbedtls_ssl_conf_authmode (& o -> conf , MBEDTLS_SSL_VERIFY_REQUIRED );
158
170
mbedtls_ssl_conf_rng (& o -> conf , mbedtls_ctr_drbg_random , & o -> ctr_drbg );
159
171
mbedtls_ssl_conf_dbg (& o -> conf , mbedtls_debug , NULL );
160
172
@@ -223,7 +235,7 @@ STATIC mp_uint_t socket_read(mp_obj_t o_in, void *buf, mp_uint_t size, int *errc
223
235
return 0 ;
224
236
}
225
237
226
- if (ret == MBEDTLS_ERR_SSL_WANT_READ ) {
238
+ if (ret == MBEDTLS_ERR_SSL_WANT_READ ) {
227
239
* errcode = EWOULDBLOCK ;
228
240
return 0 ;
229
241
}
@@ -243,7 +255,7 @@ STATIC mp_uint_t socket_write(mp_obj_t o_in, const void *buf, mp_uint_t size, in
243
255
return ret ;
244
256
}
245
257
246
- if (ret == MBEDTLS_ERR_SSL_WANT_WRITE ) {
258
+ if (ret == MBEDTLS_ERR_SSL_WANT_WRITE ) {
247
259
* errcode = EWOULDBLOCK ;
248
260
return 0 ;
249
261
}
0 commit comments