-/* --- @getinfo@ --- *
- *
- * Arguments: @ec_info *ei@ = where to write the information
- * @const ecdata *ed@ = raw data
- *
- * Returns: ---
- *
- * Use: Loads elliptic curve information about one of the standard
- * curves.
- */
-
-static mp *getmp(const mpw *v, size_t n)
-{
- mp *x = mp_new(n, 0);
- memcpy(x->v, v, MPWS(n));
- return (x);
-}
-
-static void getinfo(ec_info *ei, const ecdata *ed)
-{
- field *f;
- mp *p = 0, *a = 0, *b = 0;
-
- switch (ed->ftag) {
- case FTAG_PRIME:
- p = getmp(ed->p, ed->psz);
- f = field_prime(p);
- a = getmp(ed->a, ed->asz); b = getmp(ed->b, ed->bsz);
- ei->c = ec_primeproj(f, a, b);
- break;
- case FTAG_NICEPRIME:
- p = getmp(ed->p, ed->psz);
- f = field_niceprime(p);
- a = getmp(ed->a, ed->asz); b = getmp(ed->b, ed->bsz);
- ei->c = ec_primeproj(f, a, b);
- break;
- case FTAG_BINPOLY:
- p = getmp(ed->p, ed->psz);
- f = field_binpoly(p);
- a = getmp(ed->a, ed->asz); b = getmp(ed->b, ed->bsz);
- ei->c = ec_binproj(f, a, b);
- break;
- default:
- abort();
- }
-
- EC_CREATE(&ei->g);
- ei->g.x = getmp(ed->gx, ed->gxsz);
- ei->g.y = getmp(ed->gy, ed->gysz);
- ei->g.z = 0;
- ei->r = getmp(ed->r, ed->rsz);
- ei->h = getmp(ed->h, ed->hsz);
-
- MP_DROP(p);
- MP_DROP(a);
- MP_DROP(b);
-}
-