@@ -93,25 +93,43 @@ STATIC mp_obj_t ssl_sslcontext_load_cert_chain(size_t n_args, const mp_obj_t *po
93
93
}
94
94
STATIC MP_DEFINE_CONST_FUN_OBJ_KW (ssl_sslcontext_load_cert_chain_obj , 1 , ssl_sslcontext_load_cert_chain );
95
95
96
- //| def load_verify_locations(self, cadata: Optional[str] = None) -> None:
97
- //| """Load a set of certification authority (CA) certificates used to validate
98
- //| other peers' certificates."""
99
-
96
+ //| def load_verify_locations(
97
+ //| self,
98
+ //| cafile: Optional[str] = None,
99
+ //| capath: Optional[str] = None,
100
+ //| cadata: Optional[str] = None,
101
+ //| ) -> None:
102
+ //| """
103
+ //| Load a set of certification authority (CA) certificates used to validate
104
+ //| other peers' certificates.
105
+ //|
106
+ //| :param str cafile: path to a file of contcatenated CA certificates in PEM format. **Not implemented**.
107
+ //| :param str capath: path to a directory of CA certificate files in PEM format. **Not implemented**.
108
+ //| :param str cadata: A single CA certificate in PEM format. **Limitation**: CPython allows one
109
+ //| or more certificates, but this implementation is limited to one.
110
+ //| """
100
111
STATIC mp_obj_t ssl_sslcontext_load_verify_locations (size_t n_args , const mp_obj_t * pos_args , mp_map_t * kw_args ) {
101
- enum { ARG_cadata };
112
+ enum { ARG_cafile , ARG_capath , ARG_cadata };
102
113
static const mp_arg_t allowed_args [] = {
114
+ { MP_QSTR_cafile , MP_ARG_OBJ , {.u_obj = mp_const_none } },
115
+ { MP_QSTR_capath , MP_ARG_OBJ , {.u_obj = mp_const_none } },
103
116
{ MP_QSTR_cadata , MP_ARG_OBJ , {.u_obj = mp_const_none } },
104
117
};
105
118
ssl_sslcontext_obj_t * self = MP_OBJ_TO_PTR (pos_args [0 ]);
106
119
107
120
mp_arg_val_t args [MP_ARRAY_SIZE (allowed_args )];
108
121
mp_arg_parse_all (n_args - 1 , pos_args + 1 , kw_args , MP_ARRAY_SIZE (allowed_args ), allowed_args , args );
109
122
110
- const char * cadata = NULL ;
111
- if (args [ARG_cadata ].u_obj != mp_const_none ) {
112
- cadata = mp_obj_str_get_str (args [ARG_cadata ].u_obj );
123
+ if (args [ARG_cafile ].u_obj != mp_const_none ) {
124
+ mp_raise_NotImplementedError_varg (MP_ERROR_TEXT ("%q" ), MP_QSTR_cafile );
125
+ }
126
+
127
+ if (args [ARG_capath ].u_obj != mp_const_none ) {
128
+ mp_raise_NotImplementedError_varg (MP_ERROR_TEXT ("%q" ), MP_QSTR_capath );
113
129
}
114
130
131
+ const char * cadata = mp_obj_str_get_str (args [ARG_cadata ].u_obj );
132
+
115
133
common_hal_ssl_sslcontext_load_verify_locations (self , cadata );
116
134
return mp_const_none ;
117
135
}
0 commit comments