29int potr_compress(uint8_t *dst,
size_t *dst_len,
const uint8_t *src,
size_t src_len)
31 uint32_t orig_len_nbo;
35 if (dst == NULL || dst_len == NULL || src == NULL || src_len == 0)
46 orig_len_nbo = htonl((uint32_t)src_len);
50 memset(&z, 0,
sizeof(z));
51 z.next_in = (Bytef *)(uintptr_t)src;
52 z.avail_in = (uInt)src_len;
56 if (deflateInit2(&z, Z_DEFAULT_COMPRESSION, Z_DEFLATED, -15, 8, Z_DEFAULT_STRATEGY) != Z_OK)
61 ret = deflate(&z, Z_FINISH);
64 if (ret != Z_STREAM_END)
74int potr_decompress(uint8_t *dst,
size_t *dst_len,
const uint8_t *src,
size_t src_len)
76 uint32_t orig_len_nbo;
88 orig_len = ntohl(orig_len_nbo);
90 if (*dst_len < (
size_t)orig_len)
96 memset(&z, 0,
sizeof(z));
99 z.next_out = (Bytef *)dst;
100 z.avail_out = (uInt)*dst_len;
102 if (inflateInit2(&z, -15) != Z_OK)
107 ret = inflate(&z, Z_FINISH);
110 if (ret != Z_STREAM_END)
115 *dst_len = (size_t)z.total_out;