Changeset View
Changeset View
Standalone View
Standalone View
src/secp256k1/src/group_impl.h
Show First 20 Lines • Show All 393 Lines • ▼ Show 20 Lines | static void secp256k1_gej_add_var(secp256k1_gej *r, const secp256k1_gej *a, const secp256k1_gej *b, secp256k1_fe *rzr) { | ||||
secp256k1_fe_negate(&i, &s1, 1); secp256k1_fe_add(&i, &s2); | secp256k1_fe_negate(&i, &s1, 1); secp256k1_fe_add(&i, &s2); | ||||
if (secp256k1_fe_normalizes_to_zero_var(&h)) { | if (secp256k1_fe_normalizes_to_zero_var(&h)) { | ||||
if (secp256k1_fe_normalizes_to_zero_var(&i)) { | if (secp256k1_fe_normalizes_to_zero_var(&i)) { | ||||
secp256k1_gej_double_var(r, a, rzr); | secp256k1_gej_double_var(r, a, rzr); | ||||
} else { | } else { | ||||
if (rzr != NULL) { | if (rzr != NULL) { | ||||
secp256k1_fe_set_int(rzr, 0); | secp256k1_fe_set_int(rzr, 0); | ||||
} | } | ||||
r->infinity = 1; | secp256k1_gej_set_infinity(r); | ||||
} | } | ||||
return; | return; | ||||
} | } | ||||
secp256k1_fe_sqr(&i2, &i); | secp256k1_fe_sqr(&i2, &i); | ||||
secp256k1_fe_sqr(&h2, &h); | secp256k1_fe_sqr(&h2, &h); | ||||
secp256k1_fe_mul(&h3, &h, &h2); | secp256k1_fe_mul(&h3, &h, &h2); | ||||
secp256k1_fe_mul(&h, &h, &b->z); | secp256k1_fe_mul(&h, &h, &b->z); | ||||
if (rzr != NULL) { | if (rzr != NULL) { | ||||
Show All 33 Lines | static void secp256k1_gej_add_ge_var(secp256k1_gej *r, const secp256k1_gej *a, const secp256k1_ge *b, secp256k1_fe *rzr) { | ||||
secp256k1_fe_negate(&i, &s1, 1); secp256k1_fe_add(&i, &s2); | secp256k1_fe_negate(&i, &s1, 1); secp256k1_fe_add(&i, &s2); | ||||
if (secp256k1_fe_normalizes_to_zero_var(&h)) { | if (secp256k1_fe_normalizes_to_zero_var(&h)) { | ||||
if (secp256k1_fe_normalizes_to_zero_var(&i)) { | if (secp256k1_fe_normalizes_to_zero_var(&i)) { | ||||
secp256k1_gej_double_var(r, a, rzr); | secp256k1_gej_double_var(r, a, rzr); | ||||
} else { | } else { | ||||
if (rzr != NULL) { | if (rzr != NULL) { | ||||
secp256k1_fe_set_int(rzr, 0); | secp256k1_fe_set_int(rzr, 0); | ||||
} | } | ||||
r->infinity = 1; | secp256k1_gej_set_infinity(r); | ||||
} | } | ||||
return; | return; | ||||
} | } | ||||
secp256k1_fe_sqr(&i2, &i); | secp256k1_fe_sqr(&i2, &i); | ||||
secp256k1_fe_sqr(&h2, &h); | secp256k1_fe_sqr(&h2, &h); | ||||
secp256k1_fe_mul(&h3, &h, &h2); | secp256k1_fe_mul(&h3, &h, &h2); | ||||
if (rzr != NULL) { | if (rzr != NULL) { | ||||
*rzr = h; | *rzr = h; | ||||
▲ Show 20 Lines • Show All 42 Lines • ▼ Show 20 Lines | static void secp256k1_gej_add_zinv_var(secp256k1_gej *r, const secp256k1_gej *a, const secp256k1_ge *b, const secp256k1_fe *bzinv) { | ||||
s1 = a->y; secp256k1_fe_normalize_weak(&s1); | s1 = a->y; secp256k1_fe_normalize_weak(&s1); | ||||
secp256k1_fe_mul(&s2, &b->y, &z12); secp256k1_fe_mul(&s2, &s2, &az); | secp256k1_fe_mul(&s2, &b->y, &z12); secp256k1_fe_mul(&s2, &s2, &az); | ||||
secp256k1_fe_negate(&h, &u1, 1); secp256k1_fe_add(&h, &u2); | secp256k1_fe_negate(&h, &u1, 1); secp256k1_fe_add(&h, &u2); | ||||
secp256k1_fe_negate(&i, &s1, 1); secp256k1_fe_add(&i, &s2); | secp256k1_fe_negate(&i, &s1, 1); secp256k1_fe_add(&i, &s2); | ||||
if (secp256k1_fe_normalizes_to_zero_var(&h)) { | if (secp256k1_fe_normalizes_to_zero_var(&h)) { | ||||
if (secp256k1_fe_normalizes_to_zero_var(&i)) { | if (secp256k1_fe_normalizes_to_zero_var(&i)) { | ||||
secp256k1_gej_double_var(r, a, NULL); | secp256k1_gej_double_var(r, a, NULL); | ||||
} else { | } else { | ||||
r->infinity = 1; | secp256k1_gej_set_infinity(r); | ||||
} | } | ||||
return; | return; | ||||
} | } | ||||
secp256k1_fe_sqr(&i2, &i); | secp256k1_fe_sqr(&i2, &i); | ||||
secp256k1_fe_sqr(&h2, &h); | secp256k1_fe_sqr(&h2, &h); | ||||
secp256k1_fe_mul(&h3, &h, &h2); | secp256k1_fe_mul(&h3, &h, &h2); | ||||
r->z = a->z; secp256k1_fe_mul(&r->z, &r->z, &h); | r->z = a->z; secp256k1_fe_mul(&r->z, &r->z, &h); | ||||
secp256k1_fe_mul(&t, &u1, &h2); | secp256k1_fe_mul(&t, &u1, &h2); | ||||
▲ Show 20 Lines • Show All 188 Lines • Show Last 20 Lines |