kit

kit
git clone https://git.ryansepassi.com/git/kit.git
Log | Files | Refs | README

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