tls: add debugging scaffolding to P256 code
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
389329efbe
commit
137864f559
@ -136,6 +136,53 @@ static void sp_256_from_bin_10(sp_digit* r, const uint8_t* a)
|
||||
}
|
||||
}
|
||||
|
||||
#if SP_DEBUG
|
||||
static void dump_256(const char *fmt, const sp_digit* cr)
|
||||
{
|
||||
sp_digit* r = (sp_digit*)cr;
|
||||
uint8_t b32[32];
|
||||
sp_256_to_bin_10(r, b32);
|
||||
dump_hex(fmt, b32, 32);
|
||||
}
|
||||
static void dump_512(const char *fmt, const sp_digit* cr)
|
||||
{
|
||||
sp_digit* r = (sp_digit*)cr;
|
||||
uint8_t a[64];
|
||||
int i, j, s, b;
|
||||
|
||||
/* sp_512_norm_10: */
|
||||
for (i = 0; i < 19; i++) {
|
||||
r[i+1] += r[i] >> 26;
|
||||
r[i] &= 0x3ffffff;
|
||||
}
|
||||
/* sp_512_to_bin_10: */
|
||||
s = 0;
|
||||
j = 512 / 8 - 1;
|
||||
a[j] = 0;
|
||||
for (i = 0; i < 20 && j >= 0; i++) {
|
||||
b = 0;
|
||||
a[j--] |= r[i] << s; b += 8 - s;
|
||||
if (j < 0)
|
||||
break;
|
||||
while (b < 26) {
|
||||
a[j--] = r[i] >> b; b += 8;
|
||||
if (j < 0)
|
||||
break;
|
||||
}
|
||||
s = 8 - (b - 26);
|
||||
if (j >= 0)
|
||||
a[j] = 0;
|
||||
if (s != 0)
|
||||
j++;
|
||||
}
|
||||
|
||||
dump_hex(fmt, a, 64);
|
||||
}
|
||||
#else
|
||||
# define dump_256(...) ((void)0)
|
||||
# define dump_512(...) ((void)0)
|
||||
#endif
|
||||
|
||||
/* Convert a point of big-endian 32-byte x,y pair to type sp_point. */
|
||||
static void sp_256_point_from_bin2x32(sp_point* p, const uint8_t *bin2x32)
|
||||
{
|
||||
@ -743,6 +790,9 @@ static void sp_256_ecc_mulmod_10(sp_point* r, const sp_point* g, const sp_digit*
|
||||
sp_256_mod_mul_norm_10(t[1].x, g->x);
|
||||
sp_256_mod_mul_norm_10(t[1].y, g->y);
|
||||
sp_256_mod_mul_norm_10(t[1].z, g->z);
|
||||
dump_512("t[1].x %s\n", t[1].x);
|
||||
dump_512("t[1].y %s\n", t[1].y);
|
||||
dump_512("t[1].z %s\n", t[1].z);
|
||||
|
||||
i = 9;
|
||||
c = 22;
|
||||
@ -875,7 +925,10 @@ static void sp_ecc_make_key_256(sp_digit privkey[10], uint8_t *pubkey)
|
||||
sp_point point[1];
|
||||
|
||||
sp_256_ecc_gen_k_10(privkey);
|
||||
dump_256("privkey %s\n", privkey);
|
||||
sp_256_ecc_mulmod_base_10(point, privkey);
|
||||
dump_512("point->x %s\n", point->x);
|
||||
dump_512("point->y %s\n", point->y);
|
||||
sp_256_to_bin_10(point->x, pubkey);
|
||||
sp_256_to_bin_10(point->y, pubkey + 32);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user