uint8_t ntru_rand_igf2_init(NtruRandContext *rand_ctx, struct NtruRandGen *rand_gen) { rand_ctx->state = malloc(sizeof(struct NtruIGFState)); if (!rand_ctx->state) return 0; ntru_IGF_init(rand_ctx->seed, rand_ctx->seed_len, &NTRU_IGF2_RAND_PARAMS, rand_ctx->state); return 1; }
void ntru_gen_blind_poly(uint8_t *seed, uint16_t seed_len, const NtruEncParams *params, NtruPrivPoly *r) { NtruIGFState s; ntru_IGF_init(seed, seed_len, params, &s); #ifndef NTRU_AVOID_HAMMING_WT_PATENT if (params->prod_flag) { r->poly.prod.N = s.N; ntru_gen_tern_poly(&s, params->df1, &r->poly.prod.f1); ntru_gen_tern_poly(&s, params->df2, &r->poly.prod.f2); ntru_gen_tern_poly(&s, params->df3, &r->poly.prod.f3); } else #endif /* NTRU_AVOID_HAMMING_WT_PATENT */ { r->poly.tern.N = s.N; ntru_gen_tern_poly(&s, params->df1, &r->poly.tern); } r->prod_flag = params->prod_flag; }