diff -r 6518b035a9df -r 03076907b58a dav/config.c --- a/dav/config.c Tue Mar 18 13:59:02 2014 +0100 +++ b/dav/config.c Thu Jun 05 15:11:29 2014 +0200 @@ -111,8 +111,10 @@ void load_repository(xmlNode *reponode) { xmlNode *node = reponode->children; Repository *repo = calloc(1, sizeof(Repository)); - repo->store_key_property = true; - repo->decrypt = false; + repo->encrypt_name = false; + repo->encrypt_content = false; + repo->decrypt_name = false; + repo->decrypt_content = true; while(node) { if(node->type == XML_ELEMENT_NODE) { char *value = util_xml_get_text(node); @@ -128,12 +130,37 @@ repo->password = util_base64decode(value); } else if(xstreq(node->name, "default-key")) { repo->default_key = strdup(value); - } else if(xstreq(node->name, "encrypt")) { - repo->encrypt = util_getboolean(value); - } else if(xstreq(node->name, "decrypt")) { - repo->decrypt = util_getboolean(value); - } else if(xstreq(node->name, "store-key-property")) { - repo->store_key_property = util_getboolean(value); + } else if(xstreq(node->name, "full-encryption")) { + if(util_getboolean(value)) { + repo->encrypt_name = true; + repo->encrypt_content = true; + repo->decrypt_name = true; + repo->decrypt_content = true; + } + } else if(xstreq(node->name, "content-encryption")) { + if(util_getboolean(value)) { + repo->encrypt_content = true; + repo->decrypt_content = true; + } else { + repo->encrypt_content = false; + } + } else if(xstreq(node->name, "decrypt-content")) { + repo->decrypt_content = util_getboolean(value); + } else if(xstreq(node->name, "decrypt-name")) { + repo->decrypt_name = util_getboolean(value); + } else if(xstreq(node->name, "encrypt") || xstreq(node->name, "store-key-property") || xstreq(node->name, "decrypt")) { + fprintf(stderr, "Error: config.xml contains deprecated elements\n"); + fprintf(stderr, "The elements , and are removed\n"); + fprintf(stderr, "Use the following: \n\n"); + fprintf(stderr, "true\n"); + fprintf(stderr, "enables file content encryption and decryption\n\n"); + fprintf(stderr, "true\n"); + fprintf(stderr, "enables content and file name encryption/decryption\n\n"); + fprintf(stderr, "$BOOL\n"); + fprintf(stderr, "only enables/disables content decryption\n\n"); + fprintf(stderr, "$BOOL\n"); + fprintf(stderr, "only enables/disables name decryption\n\n"); + exit(-1); } } node = node->next; @@ -283,6 +310,24 @@ return ucx_map_sstr_get(repos, name); } +int get_repository_flags(Repository *repo) { + int flags = 0; + if(repo->decrypt_content) { + flags |= DAV_SESSION_DECRYPT_CONTENT; + } + if(repo->decrypt_name) { + flags |= DAV_SESSION_DECRYPT_NAME; + } + if(repo->encrypt_content) { + flags |= DAV_SESSION_ENCRYPT_CONTENT; + } + if(repo->encrypt_name) { + flags |= DAV_SESSION_ENCRYPT_NAME; + } + return flags; +} + + Key* get_key(char *name) { if(!name) { return NULL;