libidav/webdav.c

changeset 228
c0175372c35d
parent 223
cbbdf207e67e
child 229
df158262f802
equal deleted inserted replaced
227:bf485439222a 228:c0175372c35d
182 void dav_context_add_key(DavContext *context, DavKey *key) { 182 void dav_context_add_key(DavContext *context, DavKey *key) {
183 ucx_map_cstr_put(context->keys, key->name, key); 183 ucx_map_cstr_put(context->keys, key->name, key);
184 } 184 }
185 185
186 DavKey* dav_context_get_key(DavContext *context, char *name) { 186 DavKey* dav_context_get_key(DavContext *context, char *name) {
187 if(name) { 187 return ucx_map_cstr_get(context->keys, name);
188 DavKey *key = ucx_map_cstr_get(context->keys, name);
189 if(key && key->type == DAV_KEY_PASSWORD && !key->data) {
190 char *pw = NULL;
191 if(context->key_input && (pw = context->key_input(context, key))) {
192 // generate key
193 util_generate_key(key, pw);
194 } else {
195 // cannot generate key from password
196 key = NULL;
197 }
198 if(pw) {
199 free(pw);
200 }
201 }
202 return key;
203 } else {
204 return NULL;
205 }
206 } 188 }
207 189
208 int dav_add_namespace(DavContext *context, char *prefix, char *name) { 190 int dav_add_namespace(DavContext *context, char *prefix, char *name) {
209 DavNamespace *namespace = malloc(sizeof(DavNamespace)); 191 DavNamespace *namespace = malloc(sizeof(DavNamespace));
210 if(!namespace) { 192 if(!namespace) {

mercurial