libidav/resource.c

changeset 207
de23f8881e9f
parent 205
bf756f6c3581
child 208
1fb26aca5093
equal deleted inserted replaced
206:527d0fde484e 207:de23f8881e9f
582 enc, 582 enc,
583 (dav_read_func)aes_read, 583 (dav_read_func)aes_read,
584 0); 584 0);
585 585
586 // get sha256 hash 586 // get sha256 hash
587 char sha[SHA256_DIGEST_LENGTH]; 587 unsigned char sha[SHA256_DIGEST_LENGTH];
588 dav_get_hash(&enc->sha256, sha); 588 dav_get_hash(&enc->sha256, sha);
589 char *enc_hash = aes_encrypt(sha, SHA256_DIGEST_LENGTH, sn->key); 589 char *enc_hash = aes_encrypt((char*)sha, SHA256_DIGEST_LENGTH, sn->key);
590 590
591 aes_encrypter_close(enc); 591 aes_encrypter_close(enc);
592 if(buf) { 592 if(buf) {
593 ucx_buffer_free(buf); 593 ucx_buffer_free(buf);
594 } 594 }
680 680
681 CURLcode ret = curl_easy_perform(handle); 681 CURLcode ret = curl_easy_perform(handle);
682 682
683 char *hash = NULL; 683 char *hash = NULL;
684 if(dec) { 684 if(dec) {
685 aes_decrypter_shutdown(dec); // get final bytes
686
685 // get hash 687 // get hash
686 char sha[SHA256_DIGEST_LENGTH]; 688 unsigned char sha[SHA256_DIGEST_LENGTH];
687 dav_get_hash(&dec->sha256, sha); 689 dav_get_hash(&dec->sha256, sha);
688 hash = util_hexstr((unsigned char*)sha, 32); 690 hash = util_hexstr(sha, 32);
689 691
690 aes_decrypter_close(dec); 692 aes_decrypter_close(dec);
691 } 693 }
692 694
693 long status = 0; 695 long status = 0;
921 923
922 int dav_moveto(DavResource *res, char *url, DavBool override) { 924 int dav_moveto(DavResource *res, char *url, DavBool override) {
923 return dav_cp_mv_url(res, url, false, override); 925 return dav_cp_mv_url(res, url, false, override);
924 } 926 }
925 927
928 char* dav_lock(DavResource *res) {
929 DavSession *sn = res->session;
930 CURL *handle = sn->handle;
931 util_set_url(sn, dav_resource_get_href(res));
932
933 UcxBuffer *request = create_lock_request();
934 UcxBuffer *response = ucx_buffer_new(NULL, 512, UCX_BUFFER_AUTOEXTEND);
935 CURLcode ret = do_lock_request(handle, request, response);
936
937 //printf("\nlock\n");
938 //printf("%.*s\n\n", request->size, request->space);
939 //printf("%.*s\n\n", response->size, response->space);
940
941 long status = 0;
942 curl_easy_getinfo (handle, CURLINFO_RESPONSE_CODE, &status);
943 if(ret == CURLE_OK && (status >= 200 && status < 300)) {
944 LockDiscovery lock;
945 if(parse_lock_response(sn, response, &lock)) {
946 sn->error = DAV_ERROR;
947 return NULL;
948 }
949
950 free(lock.timeout);
951 return lock.locktoken;
952 } else {
953 dav_session_set_error(sn, ret, status);
954 return NULL;
955 }
956 }
957
958 int dav_unlock(DavResource *res, char *locktoken) {
959 DavSession *sn = res->session;
960 CURL *handle = sn->handle;
961 util_set_url(sn, dav_resource_get_href(res));
962
963 CURLcode ret = do_unlock_request(handle, locktoken);
964 long status = 0;
965 curl_easy_getinfo (handle, CURLINFO_RESPONSE_CODE, &status);
966 if(ret == CURLE_OK && (status >= 200 && status < 300)) {
967 return 0;
968 } else {
969 dav_session_set_error(sn, ret, status);
970 return 1;
971 }
972
973 return 0;
974 }
975
926 976
927 int resource_add_crypto_info(DavSession *sn, char *href, char *name, char *hash) { 977 int resource_add_crypto_info(DavSession *sn, char *href, char *name, char *hash) {
928 if(!DAV_IS_ENCRYPTED(sn)) { 978 if(!DAV_IS_ENCRYPTED(sn)) {
929 return 0; 979 return 0;
930 } 980 }

mercurial