if(!zck_read_index_hash(zck))
return False;
start += zck->hash_type.digest_size;
- char *digest = zck_get_index_digest(zck);
zck_log(ZCK_LOG_DEBUG, "Index hash: (%s)",
zck_hash_name_from_type(zck_get_full_hash_type(zck)));
- for(int i=0; i<zck_get_full_digest_size(zck); i++)
- zck_log(ZCK_LOG_DEBUG, "%02x", (unsigned char)digest[i]);
- zck_log(ZCK_LOG_DEBUG, "\n");
+ char *digest = zck_get_index_digest(zck);
+ zck_log(ZCK_LOG_DEBUG, "%s\n", digest);
+ free(digest);
/* Read and store compression type and index size */
if(!zck_read_ct_is(zck))
*/
#include <stdlib.h>
+#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <sys/types.h>
if(!chunks_from_temp(zck))
return False;
zck_log(ZCK_LOG_DEBUG, "Finished writing file, cleaning up\n");
- zck_index_free(zck);
zck_comp_close(zck);
if(zck->temp_fd) {
close(zck->temp_fd);
return &(zck->index);
}
+char *get_digest_string(const char *digest, int size) {
+ char *str = zmalloc(size*2+1);
+
+ for(int i=0; i<size; i++)
+ snprintf(str + i*2, 3, "%02x", (unsigned char)digest[i]);
+ return str;
+}
+
char PUBLIC *zck_get_index_digest(zckCtx *zck) {
if(zck == NULL)
return NULL;
- return zck->index_digest;
+ return get_digest_string(zck->index_digest, zck->hash_type.digest_size);
}
char PUBLIC *zck_get_data_digest(zckCtx *zck) {
if(zck == NULL)
return NULL;
- return zck->full_hash_digest;
+ return get_digest_string(zck->full_hash_digest, zck->hash_type.digest_size);
}
ssize_t PUBLIC zck_get_header_length(zckCtx *zck) {
close(src_fd);
printf("Overall checksum type: %s\n", zck_hash_name_from_type(zck_get_full_hash_type(zck)));
- printf("Index checksum: ");
char *digest = zck_get_index_digest(zck);
- for(int i=0; i<zck_get_full_digest_size(zck); i++)
- printf("%02x", (unsigned char)digest[i]);
- printf("\n");
- printf("Data checksum: ");
+ printf("Header checksum: %s\n", digest);
+ free(digest);
digest = zck_get_data_digest(zck);
- for(int i=0; i<zck_get_full_digest_size(zck); i++)
- printf("%02x", (unsigned char)digest[i]);
- printf("\n");
+ printf("Data checksum: %s\n", digest);
+ free(digest);
printf("Index count: %lu\n", zck_get_index_count(zck));
printf("Chunk checksum type: %s\n", zck_hash_name_from_type(zck_get_chunk_hash_type(zck)));
zckIndex *idxi = zck_get_index(zck);