Committer: hoguchi live <steaky@woto.localdomain>
On branch master Initial commit Changes to be committed: new file: EllipticCurves/memory.c new file: EllipticCurves/memory.h new file: EllipticCurves/models.c new file: EllipticCurves/models.h new file: compile.sh new file: main new file: main.c
This commit is contained in:
commit
f9cf8e1640
57
CRS.git/EllipticCurves/memory.c
Normal file
57
CRS.git/EllipticCurves/memory.c
Normal file
@ -0,0 +1,57 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "memory.h"
|
||||
#include "models.h"
|
||||
|
||||
#include <gmp.h>
|
||||
#include <flint/fmpz.h>
|
||||
#include <flint/fq.h>
|
||||
|
||||
void SW_init(SW_curve *E, const fq_ctx_t *F) {
|
||||
|
||||
//fmpz_init(E->p);
|
||||
fq_init(E->a, *F);
|
||||
fq_init(E->b, *F);
|
||||
}
|
||||
|
||||
void SW_set(SW_curve *E, const fq_ctx_t *F, const fmpz_t a, const fmpz_t b) {
|
||||
|
||||
fmpz_t p;
|
||||
long d;
|
||||
|
||||
fmpz_init_set(p, fq_ctx_prime(*F));
|
||||
d = fq_ctx_degree(*F);
|
||||
|
||||
E->F = F;
|
||||
fq_set_fmpz(E->a, a, *F);
|
||||
fq_set_fmpz(E->b, b, *F);
|
||||
|
||||
fmpz_clear(p);
|
||||
}
|
||||
|
||||
void SW_print(SW_curve *E) {
|
||||
|
||||
printf("Elliptic curve Y^3 = X^3 + ");
|
||||
fq_print_pretty(E->a, *(E->F));
|
||||
printf("X + ");
|
||||
fq_print_pretty(E->b, *(E->F));
|
||||
printf(" in short Weierstrass form over F_p^d with p = ");
|
||||
//fmpz_print(E->p);
|
||||
//printf(" and d = %ld", E->d);
|
||||
}
|
||||
|
||||
//#define template_weierstrass(a1, a2, a3, a4, a6) const fmpz_t a1, const fmpz_t a2, const fmpz_t a3, const fmpz_t a4, const fmpz_t a6
|
||||
//void print_test(template_weierstrass(a1, a2, a3, a4, a6)) {
|
||||
// printf("\n");
|
||||
// fmpz_print(a1);
|
||||
// printf("\n");
|
||||
// fmpz_print(a2);
|
||||
// printf("\n");
|
||||
// fmpz_print(a3);
|
||||
// printf("\n");
|
||||
// fmpz_print(a4);
|
||||
// printf("\n");
|
||||
// fmpz_print(a6);
|
||||
// printf("\n");
|
||||
//}
|
14
CRS.git/EllipticCurves/memory.h
Normal file
14
CRS.git/EllipticCurves/memory.h
Normal file
@ -0,0 +1,14 @@
|
||||
#ifndef _MEMORY_H_
|
||||
#define _MEMORY_H_
|
||||
|
||||
#include "models.h"
|
||||
|
||||
#include <gmp.h>
|
||||
#include <flint/fmpz.h>
|
||||
#include <flint/fq.h>
|
||||
|
||||
void SW_init(SW_curve *, const fq_ctx_t *);
|
||||
void SW_set(SW_curve *, const fq_ctx_t *, const fmpz_t, const fmpz_t);
|
||||
void SW_print(SW_curve *);
|
||||
|
||||
#endif
|
8
CRS.git/EllipticCurves/models.c
Normal file
8
CRS.git/EllipticCurves/models.c
Normal file
@ -0,0 +1,8 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "models.h"
|
||||
|
||||
#include <gmp.h>
|
||||
#include <flint/fmpz.h>
|
||||
#include <flint/fq.h>
|
16
CRS.git/EllipticCurves/models.h
Normal file
16
CRS.git/EllipticCurves/models.h
Normal file
@ -0,0 +1,16 @@
|
||||
#ifndef _MODELS_H_
|
||||
#define _MODELS_H_
|
||||
|
||||
#include <gmp.h>
|
||||
#include <flint/fmpz.h>
|
||||
#include <flint/fq.h>
|
||||
|
||||
typedef struct SW_curve{
|
||||
|
||||
const fq_ctx_t *F; // base field
|
||||
//fmpz_t p; // characteristic
|
||||
//slong d; // degree
|
||||
|
||||
fq_t a, b; // curve parameters
|
||||
} SW_curve;
|
||||
#endif
|
4
CRS.git/compile.sh
Executable file
4
CRS.git/compile.sh
Executable file
@ -0,0 +1,4 @@
|
||||
gcc EllipticCurves/memory.c \
|
||||
EllipticCurves/models.c \
|
||||
main.c \
|
||||
-lgmp -lflint -o main && ./main
|
BIN
CRS.git/main
Executable file
BIN
CRS.git/main
Executable file
Binary file not shown.
43
CRS.git/main.c
Normal file
43
CRS.git/main.c
Normal file
@ -0,0 +1,43 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "EllipticCurves/models.h"
|
||||
#include "EllipticCurves/memory.h"
|
||||
|
||||
#include <gmp.h>
|
||||
#include <flint/fmpz.h>
|
||||
#include <flint/fq.h>
|
||||
|
||||
int main() {
|
||||
|
||||
// Elliptic curve parameters
|
||||
char p_str[] = "0x13";
|
||||
slong d = 2;
|
||||
char a_str[] = "0x1";
|
||||
char b_str[] = "0x7";
|
||||
|
||||
fmpz_t p_fmpz, a_fmpz, b_fmpz;
|
||||
fmpz_init(p_fmpz);
|
||||
fmpz_init(a_fmpz);
|
||||
fmpz_init(b_fmpz);
|
||||
|
||||
fmpz_set_str(p_fmpz, p_str, 0);
|
||||
fmpz_set_str(a_fmpz, a_str, 0);
|
||||
fmpz_set_str(b_fmpz, b_str, 0);
|
||||
|
||||
// Finite field context
|
||||
fq_ctx_t F;
|
||||
char *Fgen = "g";
|
||||
fq_ctx_init(F, p_fmpz, d, Fgen);
|
||||
|
||||
// Base curve
|
||||
SW_curve E;
|
||||
SW_init(&E, &F);
|
||||
SW_set(&E, &F, a_fmpz, b_fmpz);
|
||||
|
||||
// Print base curve
|
||||
SW_print(&E);
|
||||
//print_test(a_fmpz, b_fmpz, a_fmpz, a_fmpz, b_fmpz);
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user