libidav/resource.c

changeset 857
03982275f29b
parent 856
0f1349ffa719
equal deleted inserted replaced
856:0f1349ffa719 857:03982275f29b
821 } 821 }
822 822
823 static size_t dav_read_h(void *buf, size_t size, size_t nelm, void *stream) { 823 static size_t dav_read_h(void *buf, size_t size, size_t nelm, void *stream) {
824 HashStream *s = stream; 824 HashStream *s = stream;
825 if(!s->sha) { 825 if(!s->sha) {
826 s->sha = dav_hash_init(); 826 s->sha = dav_sha256_create();
827 } 827 }
828 828
829 size_t r = s->read(buf, size, nelm, s->stream); 829 size_t r = s->read(buf, size, nelm, s->stream);
830 dav_hash_update(s->sha, buf, r); 830 dav_sha256_update(s->sha, buf, r);
831 return r; 831 return r;
832 } 832 }
833 833
834 static int dav_seek_h(void *stream, long offset, int whence) { 834 static int dav_seek_h(void *stream, long offset, int whence) {
835 HashStream *s = stream; 835 HashStream *s = stream;
836 if(offset == 0 && whence == SEEK_SET) { 836 if(offset == 0 && whence == SEEK_SET) {
837 unsigned char buf[DAV_SHA256_DIGEST_LENGTH]; 837 unsigned char buf[DAV_SHA256_DIGEST_LENGTH];
838 dav_hash_final(s->sha, buf); 838 dav_sha256_final(s->sha, buf);
839 s->sha = NULL; 839 s->sha = NULL;
840 } else { 840 } else {
841 s->error = 1; 841 s->error = 1;
842 } 842 }
843 return s->seek(s->stream, offset, whence); 843 return s->seek(s->stream, offset, whence);
936 dav_read_h, 936 dav_read_h,
937 (dav_seek_func)dav_seek_h, 937 (dav_seek_func)dav_seek_h,
938 data->length); 938 data->length);
939 939
940 if(hstr.sha) { 940 if(hstr.sha) {
941 dav_hash_final(hstr.sha, (unsigned char*)data->hash); 941 dav_sha256_final(hstr.sha, (unsigned char*)data->hash);
942 char *hash = util_hexstr((unsigned char*)data->hash, 32); 942 char *hash = util_hexstr((unsigned char*)data->hash, 32);
943 dav_set_string_property_ns(res, DAV_NS, "content-hash", hash); 943 dav_set_string_property_ns(res, DAV_NS, "content-hash", hash);
944 free(hash); 944 free(hash);
945 } 945 }
946 } else { 946 } else {

mercurial