|
39 | 39 | #define PROTOCOL_TLS_CLIENT (0)
|
40 | 40 | #define PROTOCOL_TLS_SERVER (1)
|
41 | 41 |
|
| 42 | +#define CERT_NONE (0) |
| 43 | + |
42 | 44 | // This corresponds to an SSLContext object.
|
43 | 45 | typedef struct _mp_obj_ssl_context_t {
|
44 | 46 | mp_obj_base_t base;
|
@@ -155,6 +157,25 @@ static mp_obj_t ssl_context_make_new(const mp_obj_type_t *type_in, size_t n_args
|
155 | 157 | return MP_OBJ_FROM_PTR(self);
|
156 | 158 | }
|
157 | 159 |
|
| 160 | +static void ssl_context_attr(mp_obj_t self_in, qstr attr, mp_obj_t *dest) { |
| 161 | + if (dest[0] == MP_OBJ_NULL) { |
| 162 | + // Load attribute. |
| 163 | + if (attr == MP_QSTR_verify_mode) { |
| 164 | + // CERT_NONE is the only supported verify_mode value. |
| 165 | + dest[0] = MP_OBJ_NEW_SMALL_INT(CERT_NONE); |
| 166 | + } else { |
| 167 | + // Continue lookup in locals_dict. |
| 168 | + dest[1] = MP_OBJ_SENTINEL; |
| 169 | + } |
| 170 | + } else if (dest[1] != MP_OBJ_NULL) { |
| 171 | + // Store attribute. |
| 172 | + if (attr == MP_QSTR_verify_mode) { |
| 173 | + // CERT_NONE is the only supported verify_mode value, so no need to store anything. |
| 174 | + dest[0] = MP_OBJ_NULL; |
| 175 | + } |
| 176 | + } |
| 177 | +} |
| 178 | + |
158 | 179 | static void ssl_context_load_key(mp_obj_ssl_context_t *self, mp_obj_t key_obj, mp_obj_t cert_obj) {
|
159 | 180 | self->key = key_obj;
|
160 | 181 | self->cert = cert_obj;
|
@@ -199,6 +220,7 @@ static MP_DEFINE_CONST_OBJ_TYPE(
|
199 | 220 | MP_QSTR_SSLContext,
|
200 | 221 | MP_TYPE_FLAG_NONE,
|
201 | 222 | make_new, ssl_context_make_new,
|
| 223 | + attr, ssl_context_attr, |
202 | 224 | locals_dict, &ssl_context_locals_dict
|
203 | 225 | );
|
204 | 226 |
|
@@ -429,6 +451,7 @@ static const mp_rom_map_elem_t mp_module_tls_globals_table[] = {
|
429 | 451 | // Constants.
|
430 | 452 | { MP_ROM_QSTR(MP_QSTR_PROTOCOL_TLS_CLIENT), MP_ROM_INT(PROTOCOL_TLS_CLIENT) },
|
431 | 453 | { MP_ROM_QSTR(MP_QSTR_PROTOCOL_TLS_SERVER), MP_ROM_INT(PROTOCOL_TLS_SERVER) },
|
| 454 | + { MP_ROM_QSTR(MP_QSTR_CERT_NONE), MP_ROM_INT(CERT_NONE) }, |
432 | 455 | };
|
433 | 456 | static MP_DEFINE_CONST_DICT(mp_module_tls_globals, mp_module_tls_globals_table);
|
434 | 457 |
|
|
0 commit comments