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 } |