53 lines
1.4 KiB
C
53 lines
1.4 KiB
C
#include <curve.h>
|
|
|
|
#include <string.h>
|
|
#include <stdio.h>
|
|
|
|
struct named_curve
|
|
{
|
|
char *name;
|
|
char *p;
|
|
char *a,*b,*n;
|
|
int h;
|
|
char *gx,*gy;
|
|
};
|
|
|
|
struct named_curve named_curves[] = {
|
|
{
|
|
"secp256k1",
|
|
"00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F",
|
|
"00",
|
|
"07",
|
|
"00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141",
|
|
1,
|
|
"79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798",
|
|
"483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8"
|
|
},
|
|
};
|
|
|
|
int named_curves_count = sizeof(named_curves) / sizeof(struct named_curve);
|
|
|
|
int32_t curve_create_from_name(char *curve_name, curve_t curve)
|
|
{
|
|
for (int i=0; i<named_curves_count; i++)
|
|
{
|
|
if (!strcmp(curve_name, named_curves[i].name))
|
|
{
|
|
mpz_t p,a,b,n,gx,gy;
|
|
|
|
mpz_init_set_str(p, named_curves[i].p, 16);
|
|
mpz_init_set_str(a, named_curves[i].a, 16);
|
|
mpz_init_set_str(b, named_curves[i].b, 16);
|
|
mpz_init_set_str(n, named_curves[i].n, 16);
|
|
mpz_init_set_str(gx, named_curves[i].gx, 16);
|
|
mpz_init_set_str(gy, named_curves[i].gy, 16);
|
|
|
|
int success = curve_create(curve, p, a, b, n, named_curves[i].h, gx, gy);
|
|
mpz_clears(p, a, b, n, gx, gy, NULL);
|
|
|
|
return success;
|
|
}
|
|
}
|
|
return -1;
|
|
}
|