void ep2_rand(ep2_t p) { bn_t n, k; ep2_t gen; bn_null(k); bn_null(n); ep2_null(gen); TRY { bn_new(k); bn_new(n); ep2_new(gen); ep2_curve_get_ord(n); bn_rand_mod(k, n); ep2_curve_get_gen(gen); ep2_mul(p, gen, k); } CATCH_ANY { THROW(ERR_CAUGHT); } FINALLY { bn_free(k); bn_free(n); ep2_free(gen); } }
void ep2_mul_gen(ep2_t r, bn_t k) { #ifdef EP_PRECO ep2_mul_fix(r, ep2_curve_get_tab(), k); #else ep2_t g; ep2_null(g); TRY { ep2_new(g); ep2_curve_get_gen(g); ep2_mul(r, g, k); } CATCH_ANY { THROW(ERR_CAUGHT); } FINALLY { ep2_free(g); } #endif }
void ep2_mul_sim_gen(ep2_t r, bn_t k, ep2_t q, bn_t l) { ep2_t gen; ep2_null(gen); TRY { ep2_new(gen); ep2_curve_get_gen(gen); #if EP_FIX == LWNAF && defined(EP_PRECO) ep2_mul_sim_plain(r, gen, k, q, l, ep2_curve_get_tab()); #else ep2_mul_sim(r, gen, k, q, l); #endif } CATCH_ANY { THROW(ERR_CAUGHT); } FINALLY { ep2_free(gen); } }