void sccd_ec_mul(sccd_ec_t result, const sccd_ec_t a, const uint8_t* k) { #if defined(SCCD_BACKEND_C25519) ed25519_smult(result, a, k); #elif defined(SCCD_BACKEND_RELIC) ec_mul_dig(result, a, *((dig_t*)k)); #endif }
int ge_double_scalarmult_vartime(ge_p2* R, const unsigned char *h, const ge_p3 *inA,const unsigned char *sig) { ge_p3 p, A; int ret = 0; XMEMCPY(&A, inA, sizeof(ge_p3)); /* find SB */ ed25519_smult(&p, &ed25519_base, sig); /* find H(R,A,M) * -A */ ed25519_smult(&A, &A, h); /* SB + -H(R,A,M)A */ ed25519_add(&A, &p, &A); fe_copy(R->X, A.X); fe_copy(R->Y, A.Y); fe_copy(R->Z, A.Z); return ret; }
void ge_scalarmult_base(ge_p3 *R,const unsigned char *nonce) { ed25519_smult(R, &ed25519_base, nonce); }