Packages
hackney
3.0.3
4.7.2
4.7.1
4.7.0
4.6.1
4.6.0
4.5.2
4.5.1
4.5.0
4.4.5
4.4.3
4.4.2
4.4.1
4.4.0
4.3.0
4.2.3
4.2.2
4.2.1
4.2.0
4.1.0
4.0.3
4.0.2
4.0.1
4.0.0
3.2.1
3.2.0
3.1.2
3.1.1
3.1.0
3.0.3
3.0.2
3.0.1
3.0.0
retired
2.0.1
2.0.0
2.0.0-beta.1
1.25.0
1.24.1
1.24.0
1.23.0
1.22.0
1.21.0
1.20.1
1.20.0
1.19.1
1.19.0
1.18.2
1.18.1
1.18.0
1.17.4
1.17.3
1.17.2
1.17.1
1.17.0
1.16.0
1.15.2
1.15.1
1.15.0
1.14.3
1.14.2
1.14.0
1.13.0
1.12.1
1.12.0
1.11.0
1.10.1
1.10.0
1.9.0
1.8.6
1.8.5
1.8.4
1.8.3
1.8.2
1.8.0
1.7.1
1.7.0
1.6.6
retired
1.6.5
1.6.4
retired
1.6.3
1.6.2
1.6.1
1.6.0
1.5.7
1.5.6
1.5.5
1.5.4
1.5.3
1.5.2
1.5.1
1.5.0
1.4.10
1.4.8
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.2
1.3.1
1.3.0
1.2.0
1.1.0
1.0.6
1.0.5
1.0.2
1.0.1
0.15.2
0.15.0
0.14.3
0.14.2
0.14.1
0.14.0
0.13.1
Simple HTTP client with HTTP/1.1, HTTP/2, and HTTP/3 support
Security advisory:
This version has known vulnerabilities.
View advisories
Current section
Files
Jump to
Current section
Files
c_src/boringssl/third_party/fiat/p256_point.br.c.inc
// Generated from Bedrock code in Fiat Cryptography. Avoid editing directly.
static inline br_word_t br_broadcast_odd(br_word_t x) {
br_word_t y;
x = br_value_barrier(x&1);
y = 0u-x;
return y;
}
static inline void p256_coord_halve(br_word_t y, br_word_t x) {
br_word_t m, mmh;
uint8_t _br_stackalloc_mmh[32] = {0}; mmh = (br_word_t)&_br_stackalloc_mmh;
m = br_broadcast_odd(_br_load(x));
u256_set_p256_minushalf_conditional(mmh, m);
u256_shr(y, x, (br_word_t)1);
p256_coord_sub(y, y, mmh);
}
static inline br_word_t p256_point_iszero(br_word_t p_P) {
br_word_t z, nz;
nz = p256_coord_nonzero((p_P+32)+32);
z = ~nz;
return z;
}
static inline void p256_point_double(br_word_t out, br_word_t in1) {
br_word_t t2, tmp, A, D;
uint8_t _br_stackalloc_D[32] = {0}; D = (br_word_t)&_br_stackalloc_D;
uint8_t _br_stackalloc_A[32] = {0}; A = (br_word_t)&_br_stackalloc_A;
uint8_t _br_stackalloc_tmp[32] = {0}; tmp = (br_word_t)&_br_stackalloc_tmp;
p256_coord_add(D, in1+32, in1+32);
p256_coord_sqr(tmp, (in1+32)+32);
p256_coord_sqr(D, D);
p256_coord_mul((out+32)+32, (in1+32)+32, in1+32);
p256_coord_add((out+32)+32, (out+32)+32, (out+32)+32);
p256_coord_add(A, in1, tmp);
p256_coord_sub(tmp, in1, tmp);
uint8_t _br_stackalloc_t2[32] = {0}; t2 = (br_word_t)&_br_stackalloc_t2;
p256_coord_add(t2, tmp, tmp);
p256_coord_add(tmp, t2, tmp);
p256_coord_sqr(out+32, D);
p256_coord_mul(A, A, tmp);
p256_coord_mul(D, D, in1);
p256_coord_sqr(out, A);
p256_coord_add(tmp, D, D);
p256_coord_sub(out, out, tmp);
p256_coord_sub(D, D, out);
p256_coord_mul(D, D, A);
p256_coord_halve(out+32, out+32);
p256_coord_sub(out+32, D, out+32);
}
static inline br_word_t p256_point_add_nz_nz_neq(br_word_t p_out, br_word_t p_P, br_word_t p_Q) {
br_word_t z1z1, z2z2, u1, Hsqr, ok, different_x, different_y, u2, Hcub, s1, r, h, s2;
uint8_t _br_stackalloc_z1z1[32] = {0}; z1z1 = (br_word_t)&_br_stackalloc_z1z1;
uint8_t _br_stackalloc_z2z2[32] = {0}; z2z2 = (br_word_t)&_br_stackalloc_z2z2;
uint8_t _br_stackalloc_u1[32] = {0}; u1 = (br_word_t)&_br_stackalloc_u1;
uint8_t _br_stackalloc_u2[32] = {0}; u2 = (br_word_t)&_br_stackalloc_u2;
uint8_t _br_stackalloc_h[32] = {0}; h = (br_word_t)&_br_stackalloc_h;
uint8_t _br_stackalloc_s1[32] = {0}; s1 = (br_word_t)&_br_stackalloc_s1;
uint8_t _br_stackalloc_s2[32] = {0}; s2 = (br_word_t)&_br_stackalloc_s2;
uint8_t _br_stackalloc_r[32] = {0}; r = (br_word_t)&_br_stackalloc_r;
uint8_t _br_stackalloc_Hsqr[32] = {0}; Hsqr = (br_word_t)&_br_stackalloc_Hsqr;
uint8_t _br_stackalloc_Hcub[32] = {0}; Hcub = (br_word_t)&_br_stackalloc_Hcub;
p256_coord_sqr(z1z1, (p_P+32)+32);
p256_coord_mul(u2, p_Q, z1z1);
p256_coord_sqr(z2z2, (p_Q+32)+32);
p256_coord_mul(u1, p_P, z2z2);
p256_coord_sub(h, u2, u1);
p256_coord_mul(s2, (p_P+32)+32, z1z1);
p256_coord_mul((p_out+32)+32, h, (p_P+32)+32);
p256_coord_mul((p_out+32)+32, (p_out+32)+32, (p_Q+32)+32);
p256_coord_mul(s2, s2, p_Q+32);
p256_coord_mul(s1, (p_Q+32)+32, z2z2);
p256_coord_mul(s1, s1, p_P+32);
p256_coord_sub(r, s2, s1);
p256_coord_sqr(Hsqr, h);
p256_coord_sqr(p_out, r);
p256_coord_mul(Hcub, Hsqr, h);
p256_coord_mul(u2, u1, Hsqr);
different_x = p256_coord_nonzero(Hcub);
different_y = p256_coord_nonzero(p_out);
ok = br_value_barrier(different_x|different_y);
p256_coord_sub(p_out, p_out, Hcub);
p256_coord_sub(p_out, p_out, u2);
p256_coord_sub(p_out, p_out, u2);
p256_coord_sub(h, u2, p_out);
p256_coord_mul(s2, Hcub, s1);
p256_coord_mul(h, h, r);
p256_coord_sub(p_out+32, h, s2);
return ok;
}
static inline void p256_point_add_vartime_if_doubling(br_word_t p_out, br_word_t p_P, br_word_t p_Q) {
br_word_t p_tmp, zeroP, zeroQ, ok, p_sel;
zeroP = p256_point_iszero(p_P);
zeroQ = p256_point_iszero(p_Q);
uint8_t _br_stackalloc_p_tmp[96] = {0}; p_tmp = (br_word_t)&_br_stackalloc_p_tmp;
ok = p256_point_add_nz_nz_neq(p_tmp, p_P, p_Q);
ok = br_declassify((zeroP|zeroQ)|ok);
uint8_t _br_stackalloc_p_sel[96] = {0}; p_sel = (br_word_t)&_br_stackalloc_p_sel;
br_memset(p_sel, (br_word_t)0, (br_word_t)96);
br_memcxor(p_sel, p_tmp, (br_word_t)96, (~zeroP)&(~zeroQ));
br_memcxor(p_sel, p_P, (br_word_t)96, (~zeroP)&zeroQ);
br_memcxor(p_sel, p_Q, (br_word_t)96, zeroP&(~zeroQ));
if (ok) {
/*skip*/
} else {
p256_point_double(p_sel, p_P);
}
br_memcpy(p_out, p_sel, (br_word_t)96);
}