Ejemplo n.º 1
0
Archivo: ec.c Proyecto: tfar/sccd
void sccd_ec_double(sccd_ec_t result, const sccd_ec_t p) {
#if defined(SCCD_BACKEND_C25519)
	ed25519_double(result, p);
#elif defined(SCCD_BACKEND_RELIC)

#endif
}
Ejemplo n.º 2
0
void ed25519_smult(ge_p3 *r_out, const ge_p3 *p, const byte *e)
{
    ge_p3 r;
    int   i;

    XMEMCPY(&r, &ed25519_neutral, sizeof(r));

    for (i = 255; i >= 0; i--) {
        const byte bit = (e[i >> 3] >> (i & 7)) & 1;
        ge_p3 s;

        ed25519_double(&r, &r);
        ed25519_add(&s, &r, p);

        fe_select(r.X, r.X, s.X, bit);
        fe_select(r.Y, r.Y, s.Y, bit);
        fe_select(r.Z, r.Z, s.Z, bit);
        fe_select(r.T, r.T, s.T, bit);
    }
    XMEMCPY(r_out, &r, sizeof(r));
}