38 typedef std::function<void(
size_t,
const uint8_t[],
size_t)>
output_cb_t;
45 ZFEC(
size_t K,
size_t N);
63 std::string provider()
const;
71 void encode(
const uint8_t input[],
size_t size,
const output_cb_t& output_cb)
const;
79 void encode_shares(
const std::vector<const uint8_t*>& shares,
81 const output_cb_t& output_cb)
const;
89 void decode_shares(
const std::map<size_t, const uint8_t*>& shares,
91 const output_cb_t& output_cb)
const;
94 static void addmul(uint8_t z[],
const uint8_t x[], uint8_t y,
size_t size);
96 static void linear_combination(uint8_t z[],
const uint8_t*
const x[],
const uint8_t y[],
size_t k,
size_t size);
98#if defined(BOTAN_HAS_ZFEC_VPERM)
99 static size_t linear_combination_vperm(
100 uint8_t z[],
const uint8_t*
const x[],
const uint8_t y[],
size_t k,
size_t size);
103#if defined(BOTAN_HAS_ZFEC_GFNI)
104 static void linear_combination_gfni(
105 uint8_t z[],
const uint8_t*
const x[],
const uint8_t y[],
size_t k,
size_t size);
108 const size_t m_K, m_N;
109 std::vector<uint8_t> m_enc_matrix;