Home | History | Annotate | Download | only in smp

Lines Matching refs:keyLength

44 static void ECC_Double(Point *q, Point *p, uint32_t keyLength)
56 if (multiprecision_iszero(p->z, keyLength))
58 multiprecision_init(q->z, keyLength);
65 multiprecision_mersenns_squa_mod(t1, z1, keyLength); // t1=z1^2
66 multiprecision_sub_mod(t2, x1, t1, keyLength); // t2=x1-t1
67 multiprecision_add_mod(t1, x1, t1, keyLength); // t1=x1+t1
68 multiprecision_mersenns_mult_mod(t2, t1, t2, keyLength); // t2=t2*t1
69 multiprecision_lshift_mod(t3, t2, keyLength);
70 multiprecision_add_mod(t2, t3, t2, keyLength); // t2=3t2
72 multiprecision_mersenns_mult_mod(z3, y1, z1, keyLength); // z3=y1*z1
73 multiprecision_lshift_mod(z3, z3, keyLength);
75 multiprecision_mersenns_squa_mod(y3, y1, keyLength); // y3=y1^2
76 multiprecision_lshift_mod(y3, y3, keyLength);
77 multiprecision_mersenns_mult_mod(t3, y3, x1, keyLength); // t3=y3*x1=x1*y1^2
78 multiprecision_lshift_mod(t3, t3, keyLength);
79 multiprecision_mersenns_squa_mod(y3, y3, keyLength); // y3=y3^2=y1^4
80 multiprecision_lshift_mod(y3, y3, keyLength);
82 multiprecision_mersenns_squa_mod(x3, t2, keyLength); // x3=t2^2
83 multiprecision_lshift_mod(t1, t3, keyLength); // t1=2t3
84 multiprecision_sub_mod(x3, x3, t1, keyLength); // x3=x3-t1
85 multiprecision_sub_mod(t1, t3, x3, keyLength); // t1=t3-x3
86 multiprecision_mersenns_mult_mod(t1, t1, t2, keyLength); // t1=t1*t2
87 multiprecision_sub_mod(y3, t1, y3, keyLength); // y3=t1-y3
91 static void ECC_Add(Point *r, Point *p, Point *q, uint32_t keyLength)
110 if (multiprecision_iszero(z2, keyLength))
117 if (multiprecision_iszero(z1, keyLength))
123 multiprecision_mersenns_squa_mod(t1, z1, keyLength); // t1=z1^2
124 multiprecision_mersenns_mult_mod(t2, z1, t1, keyLength); // t2=t1*z1
125 multiprecision_mersenns_mult_mod(t1, x2, t1, keyLength); // t1=t1*x2
126 multiprecision_mersenns_mult_mod(t2, y2, t2, keyLength); // t2=t2*y2
128 multiprecision_sub_mod(t1, t1, x1, keyLength); // t1=t1-x1
129 multiprecision_sub_mod(t2, t2, y1, keyLength); // t2=t2-y1
131 if (multiprecision_iszero(t1, keyLength))
133 if (multiprecision_iszero(t2, keyLength))
135 ECC_Double(r, q, keyLength) ;
140 multiprecision_init(z3, keyLength);
145 multiprecision_mersenns_mult_mod(z3, z1, t1, keyLength); // z3=z1*t1
146 multiprecision_mersenns_squa_mod(y3, t1, keyLength); // t3=t1^2
147 multiprecision_mersenns_mult_mod(z1, y3, t1, keyLength); // t4=t3*t1
148 multiprecision_mersenns_mult_mod(y3, y3, x1, keyLength); // t3=t3*x1
149 multiprecision_lshift_mod(t1, y3, keyLength); // t1=2*t3
150 multiprecision_mersenns_squa_mod(x3, t2, keyLength); // x3=t2^2
151 multiprecision_sub_mod(x3, x3, t1, keyLength); // x3=x3-t1
152 multiprecision_sub_mod(x3, x3, z1, keyLength); // x3=x3-t4
153 multiprecision_sub_mod(y3, y3, x3, keyLength); // t3=t3-x3
154 multiprecision_mersenns_mult_mod(y3, y3, t2, keyLength); // t3=t3*t2
155 multiprecision_mersenns_mult_mod(z1, z1, y1, keyLength); // t4=t4*t1
156 multiprecision_sub_mod(y3, y3, z1, keyLength);
160 static void ECC_NAF(uint8_t *naf, uint32_t *NumNAF, DWORD *k, uint32_t keyLength)
167 while ((var = multiprecision_most_signbits(k, keyLength))>=1)
192 multiprecision_rshift(k, k, keyLength);
201 void ECC_PointMult_Bin_NAF(Point *q, Point *p, DWORD *n, uint32_t keyLength)
210 if (keyLength == KEY_LENGTH_DWORDS_P256)
220 multiprecision_init(p->z, keyLength);
227 multiprecision_copy(minus_p.x, p->x, keyLength);
228 multiprecision_sub(minus_p.y, modp, p->y, keyLength);
230 multiprecision_init(minus_p.z, keyLength);
235 ECC_NAF(naf, &NumNaf, n, keyLength);
240 ECC_Double(q, &r, keyLength);
246 ECC_Add(q, &r, p, keyLength);
251 ECC_Add(q, &r, &minus_p, keyLength);
255 multiprecision_inv_mod(minus_p.x, q->z, keyLength);
256 multiprecision_mersenns_squa_mod(q->z, minus_p.x, keyLength);
257 multiprecision_mersenns_mult_mod(q->x, q->x, q->z, keyLength);
258 multiprecision_mersenns_mult_mod(q->z, q->z, minus_p.x, keyLength);
259 multiprecision_mersenns_mult_mod(q->y, q->y, q->z, keyLength);