Home | History | Annotate | Download | only in fp

Lines Matching refs:idx

630 static int add_entry(int idx, ecc_point *g)
635 fp_cache[idx].g = ltc_ecc_new_point();
636 if (fp_cache[idx].g == NULL) {
641 if ((mp_copy(g->x, fp_cache[idx].g->x) != CRYPT_OK) ||
642 (mp_copy(g->y, fp_cache[idx].g->y) != CRYPT_OK) ||
643 (mp_copy(g->z, fp_cache[idx].g->z) != CRYPT_OK)) {
644 ltc_ecc_del_point(fp_cache[idx].g);
645 fp_cache[idx].g = NULL;
650 fp_cache[idx].LUT[x] = ltc_ecc_new_point();
651 if (fp_cache[idx].LUT[x] == NULL) {
653 ltc_ecc_del_point(fp_cache[idx].LUT[y]);
654 fp_cache[idx].LUT[y] = NULL;
656 ltc_ecc_del_point(fp_cache[idx].g);
657 fp_cache[idx].g = NULL;
658 fp_cache[idx].lru_count = 0;
663 fp_cache[idx].lru_count = 0;
672 static int build_lut(int idx, void *modulus, void *mp, void *mu)
694 if ((err = mp_init_copy(&fp_cache[idx].mu, mu)) != CRYPT_OK) {
699 if ((mp_mulmod(fp_cache[idx].g->x, mu, modulus, fp_cache[idx].LUT[1]->x) != CRYPT_OK) ||
700 (mp_mulmod(fp_cache[idx].g->y, mu, modulus, fp_cache[idx].LUT[1]->y) != CRYPT_OK) ||
701 (mp_mulmod(fp_cache[idx].g->z, mu, modulus, fp_cache[idx].LUT[1]->z) != CRYPT_OK)) { goto ERR; }
705 if ((mp_copy(fp_cache[idx].LUT[1<<(x-1)]->x, fp_cache[idx].LUT[1<<x]->x) != CRYPT_OK) ||
706 (mp_copy(fp_cache[idx].LUT[1<<(x-1)]->y, fp_cache[idx].LUT[1<<x]->y) != CRYPT_OK) ||
707 (mp_copy(fp_cache[idx].LUT[1<<(x-1)]->z, fp_cache[idx].LUT[1<<x]->z) != CRYPT_OK)) { goto ERR; }
711 if ((err = ltc_mp.ecc_ptdbl(fp_cache[idx].LUT[1<<x], fp_cache[idx].LUT[1<<x], modulus, mp)) != CRYPT_OK) {
723 if ((err = ltc_mp.ecc_ptadd(fp_cache[idx].LUT[lut_orders[y].terma], fp_cache[idx].LUT[lut_orders[y].termb],
724 fp_cache[idx].LUT[y], modulus, mp)) != CRYPT_OK) {
734 if ((err = mp_montgomery_reduce(fp_cache[idx].LUT[x]->z, modulus, mp)) != CRYPT_OK) { goto ERR; }
737 if ((err = mp_invmod(fp_cache[idx].LUT[x]->z, modulus, fp_cache[idx].LUT[x]->z)) != CRYPT_OK) { goto ERR; }
740 if ((err = mp_sqrmod(fp_cache[idx].LUT[x]->z, modulus, tmp)) != CRYPT_OK) { goto ERR; }
743 idx].LUT[x]->x, tmp, modulus, fp_cache[idx].LUT[x]->x)) != CRYPT_OK) { goto ERR; }
746 if ((err = mp_mulmod(tmp, fp_cache[idx].LUT[x]->z, modulus, tmp)) != CRYPT_OK) { goto ERR; }
749 if ((err = mp_mulmod(fp_cache[idx].LUT[x]->y, tmp, modulus, fp_cache[idx].LUT[x]->y)) != CRYPT_OK) { goto ERR; }
752 mp_clear(fp_cache[idx].LUT[x]->z);
753 fp_cache[idx].LUT[x]->z = NULL;
762 ltc_ecc_del_point(fp_cache[idx].LUT[y]);
763 fp_cache[idx].LUT[y] = NULL;
765 ltc_ecc_del_point(fp_cache[idx].g);
766 fp_cache[idx].g = NULL;
767 fp_cache[idx].lru_count = 0;
768 if (fp_cache[idx].mu != NULL) {
769 mp_clear(fp_cache[idx].mu);
770 fp_cache[idx].mu = NULL;
779 static int accel_fp_mul(int idx, void *k, ecc_point *R, void *modulus, void *mp, int map)
879 if ((err = ltc_mp.ecc_ptadd(R, fp_cache[idx].LUT[z], R, modulus, mp)) != CRYPT_OK) {
883 if ((mp_copy(fp_cache[idx].LUT[z]->x, R->x) != CRYPT_OK) ||
884 (mp_copy(fp_cache[idx].LUT[z]->y, R->y) != CRYPT_OK) ||
885 (mp_copy(fp_cache[idx].mu, R->z) != CRYPT_OK)) { return CRYPT_MEM; }
1224 int idx, err;
1231 idx = find_base(G);
1234 if (idx == -1) {
1236 idx = find_hole();
1238 if ((err = add_entry(idx, G)) != CRYPT_OK) {
1244 ++(fp_cache[idx].lru_count);
1247 if (fp_cache[idx].lru_count == 2) {
1260 if ((err = build_lut(idx, modulus, mp, mu)) != CRYPT_OK) {
1265 if (fp_cache[idx].lru_count >= 2) {
1270 err = accel_fp_mul(idx, k, R, modulus, mp, map);