示例#1
0
static void fp_invert(element_ptr e, element_ptr a) {
  mpz_t z;
  mpz_init(z);
  fp_to_mpz(z, a);
  mpz_invert(z, z, e->field->order);
  from_mpz(e, z);
  mpz_clear(z);
}
示例#2
0
static void fp_pow_mpz(element_ptr c, element_ptr a, mpz_ptr op) {
  mpz_t z;
  mpz_init(z);
  fp_to_mpz(z, a);
  mpz_powm(z, z, op, c->field->order);
  from_mpz(c, z);
  mpz_clear(z);
}
示例#3
0
文件: tinyfp.c 项目: blynn/pbc
static size_t fp_out_str(FILE *stream, int base, element_ptr e) {
  size_t result;
  mpz_t z;
  mpz_init(z);
  fp_to_mpz(z, e);
  result = mpz_out_str(stream, base, z);
  mpz_clear(z);
  return result;
}
示例#4
0
文件: tinyfp.c 项目: blynn/pbc
static void fp_invert(element_ptr c, element_ptr a) {
  pbc_mpui *r = c->data;
  mpz_t z;
  mpz_init(z);
  fp_to_mpz(z, a);
  mpz_invert(z, z, a->field->order);
  *r = mpz_get_ui(z);
  mpz_clear(z);
}
示例#5
0
文件: tinyfp.c 项目: blynn/pbc
static void fp_pow_mpz(element_ptr c, element_ptr a, mpz_ptr op) {
  pbc_mpui *r = c->data;
  mpz_t z;
  mpz_init(z);
  fp_to_mpz(z, a);
  mpz_powm(z, z, op, a->field->order);
  *r = mpz_get_ui(z);
  mpz_clear(z);
}
示例#6
0
文件: montfp.cpp 项目: mahdiz/mpclib
static int fp_snprint(char *s, size_t n, element_ptr e) {
	int result;
	mpz_t z;
	mpz_init(z);
	fp_to_mpz(z, e);
	result = gmp_snprintf(s, n, "%Zd", z);
	mpz_clear(z);
	return result;
}
示例#7
0
文件: montfp.cpp 项目: mahdiz/mpclib
static int fp_to_bytes(unsigned char *data, element_t a) {
	mpz_t z;
	int n = a->field->fixed_length_in_bytes;

	mpz_init(z);
	fp_to_mpz(z, a);
	pbc_mpz_out_raw_n(data, n, z);
	mpz_clear(z);
	return n;
}
示例#8
0
文件: tinyfp.c 项目: blynn/pbc
static int fp_is_sqr(element_ptr a) {
  int res;
  mpz_t z;
  mpz_init(z);
  //0 is a square
  if (fp_is0(a)) return 1;
  fp_to_mpz(z, a);
  res = mpz_legendre(z, a->field->order) == 1;
  mpz_clear(z);
  return res;
}
示例#9
0
文件: montfp.cpp 项目: mahdiz/mpclib
static int fp_is_sqr(element_ptr a) {
	eptr ad = (eptr)a->data;
	int res;
	mpz_t z;
	mpz_init(z);
	// 0 is a square.
	if (!ad->flag) return 1;
	fp_to_mpz(z, a);
	res = mpz_legendre(z, a->field->order) == 1;
	mpz_clear(z);
	return res;
}
示例#10
0
文件: montfp.cpp 项目: mahdiz/mpclib
static int fp_sgn_odd(element_ptr a) {
	eptr ad = (eptr)a->data;
	if (!ad->flag) return 0;
	else {
		mpz_t z;
		mpz_init(z);
		int res;
		fp_to_mpz(z, a);
		res = mpz_odd_p(z) ? 1 : -1;
		mpz_clear(z);
		return res;
	}
}
示例#11
0
文件: montfp.cpp 项目: mahdiz/mpclib
static void fp_pow_mpz(element_ptr c, element_ptr a, mpz_ptr op) {
	// Alternative: rewrite GMP mpz_powm().
	fptr p = (fptr)a->field->data;
	eptr ad = (eptr)a->data;
	eptr cd = (eptr)c->data;
	if (!ad->flag) cd->flag = 0;
	else {
		mpz_t z;
		mpz_init(z);
		fp_to_mpz(z, a);
		mpz_powm(z, z, op, a->field->order);
		mpz_mul_2exp(z, z, p->bytes * 8);
		mpz_mod(z, z, a->field->order);
		set_limbs(cd->d, z, p->limbs);
		mpz_clear(z);
		cd->flag = 2;
	}
}