static void pt_to_pniels(pniels_t b, const curve448_point_t a) { gf_sub(b->n->a, a->y, a->x); gf_add(b->n->b, a->x, a->y); gf_mulw(b->n->c, a->t, 2 * TWISTED_D); gf_add(b->z, a->z, a->z); }
static void niels_to_pt(curve448_point_t e, const niels_t n) { gf_add(e->y, n->b, n->a); gf_sub(e->x, n->b, n->a); gf_mul(e->t, e->y, e->x); gf_copy(e->z, ONE); }
static void pniels_to_pt(curve448_point_t e, const pniels_t d) { gf eu; gf_add(eu, d->n->b, d->n->a); gf_sub(e->y, d->n->b, d->n->a); gf_mul(e->t, e->y, eu); gf_mul(e->x, d->z, e->y); gf_mul(e->y, d->z, eu); gf_sqr(e->z, d->z); }
c448_bool_t curve448_point_valid(const curve448_point_t p) { mask_t out; gf a, b, c; gf_mul(a, p->x, p->y); gf_mul(b, p->z, p->t); out = gf_eq(a, b); gf_sqr(a, p->x); gf_sqr(b, p->y); gf_sub(a, b, a); gf_sqr(b, p->t); gf_mulw(c, b, TWISTED_D); gf_sqr(b, p->z); gf_add(b, b, c); out &= gf_eq(a, b); out &= ~gf_eq(p->z, ZERO); return mask_to_bool(out); }
void rs_dec(unsigned char rx[],unsigned char decode[],unsigned char err_pos[],int num_err) { int i; int j; char error[]="too many error postions!\n"; if(num_err>PARA_N_K) { memcpy(decode,error,sizeof(error)); } get_mat(Ainv,err_pos,num_err); for (i=0;i<PARA_FRAMESIZE;i++) { for (j=0;j<PARA_N1;j++) { d0[j]=rx[j*PARA_FRAMESIZE+i]; } for (j=0;j<num_err;j++) { d0[err_pos[j]]=0; } for (j=0;j<num_err;j++) { s[j]=gf_sub(d0,( unsigned char )(j+1)); } gf_mat_mult(Ainv,s,err_value,num_err); for (j=0;j<num_err;j++) { d0[err_pos[j]]=err_value[j]; } for (j=0;j<PARA_N1;j++) { decode[j*PARA_FRAMESIZE+i]=d0[j]; } } }
GFn_el_t & GFn_el_t::operator -= (unsigned int _a) { comp[0] = gf_sub(prime, comp[0], _a%prime); return *this; }
GFn_el_t & GFn_el_t::operator -= (int _a) { comp[0] = gf_sub(prime, comp[0], gf_int(prime, _a)); return *this; }