void eb_mul_sim_inter(eb_t r, const eb_t p, const bn_t k, const eb_t q, const bn_t m) { #if defined(EB_KBLTZ) if (eb_curve_is_kbltz()) { eb_mul_sim_kbltz(r, p, k, q, m, NULL); return; } #endif #if defined(EB_PLAIN) eb_mul_sim_plain(r, p, k, q, m, NULL); #endif }
void eb_mul_sim_gen(eb_t r, const bn_t k, const eb_t q, const bn_t m) { eb_t g; eb_null(g); if (bn_is_zero(k)) { eb_mul(r, q, m); return; } if (bn_is_zero(m) || eb_is_infty(q)) { eb_mul_gen(r, k); return; } TRY { eb_new(g); eb_curve_get_gen(g); #if defined(EB_KBLTZ) #if EB_SIM == INTER && EB_FIX == LWNAF && defined(EB_PRECO) if (eb_curve_is_kbltz()) { eb_mul_sim_kbltz(r, g, k, q, m, eb_curve_get_tab()); } #else if (eb_curve_is_kbltz()) { eb_mul_sim(r, g, k, q, m); } #endif #endif #if defined(EB_PLAIN) #if EB_SIM == INTER && EB_FIX == LWNAF && defined(EB_PRECO) if (!eb_curve_is_kbltz()) { eb_mul_sim_plain(r, g, k, q, m, eb_curve_get_tab()); } #else if (!eb_curve_is_kbltz()) { eb_mul_sim(r, g, k, q, m); } #endif #endif } CATCH_ANY { THROW(ERR_CAUGHT); } FINALLY { eb_free(g); } }
void eb_mul_sim_inter(eb_t r, const eb_t p, const bn_t k, const eb_t q, const bn_t m) { if (bn_is_zero(k) || eb_is_infty(p)) { eb_mul(r, q, m); return; } if (bn_is_zero(m) || eb_is_infty(q)) { eb_mul(r, p, k); return; } #if defined(EB_KBLTZ) if (eb_curve_is_kbltz()) { eb_mul_sim_kbltz(r, p, k, q, m, NULL); return; } #endif #if defined(EB_PLAIN) eb_mul_sim_plain(r, p, k, q, m, NULL); #endif }