blob.h (1065B)
1 #ifndef KIT_DIST_BLOB_H 2 #define KIT_DIST_BLOB_H 3 4 #include <stddef.h> 5 #include <stdint.h> 6 7 #include "dist.h" 8 9 #define DIST_BLOB_FORMAT "kit-blob-v1" 10 #define DIST_BLOB_CHUNK_SIZE_DEFAULT 65536u 11 12 typedef struct DistBlobInfo { 13 uint8_t id[DIST_BLAKE2B_LEN]; 14 uint8_t root[DIST_BLAKE2B_LEN]; 15 uint64_t size; 16 uint64_t chunks; 17 } DistBlobInfo; 18 19 void dist_blob_id(uint8_t out[DIST_BLAKE2B_LEN], const uint8_t* data, 20 size_t len); 21 void dist_blob_leaf_hash(uint8_t out[DIST_BLAKE2B_LEN], uint64_t chunk_index, 22 const uint8_t* raw, size_t raw_len); 23 void dist_blob_node_hash(uint8_t out[DIST_BLAKE2B_LEN], 24 const uint8_t left[DIST_BLAKE2B_LEN], 25 const uint8_t right[DIST_BLAKE2B_LEN]); 26 void dist_blob_empty_root(uint8_t out[DIST_BLAKE2B_LEN]); 27 int dist_blob_root(uint8_t out[DIST_BLAKE2B_LEN], const uint8_t* data, 28 size_t len, size_t chunk_size); 29 int dist_blob_info(DistBlobInfo* out, const uint8_t* data, size_t len, 30 size_t chunk_size); 31 32 #endif