3 # $Id: ec-gentab.awk,v 1.1 2004/04/01 21:28:41 mdw Exp $
5 function banner
(name
, s
, i
)
7 s =
"/*----- " name
" ";
8 while (length(s
) < 75) s = s
"-";
14 gsub(/[^
0-9A
-Za
-z_
]+/, "_", name
);
21 print " * Table of elliptic curves [generated]";
24 print "#include \"ectab.h\"";
26 print "#define N(x) (sizeof(x)/sizeof(*x))";
27 print "#define MP(x) { x, x + N(x), N(x), 0, MP_CONST, 0 }";
28 print "#define NOMP { 0, 0, 0, 0, 0 }";
30 print banner
("Curve data");
40 print "curve " name
": missing " x
>"/dev/stderr";
45 n =
"c_" fix
(name
) "_" x
;
46 print "static mpw " n
"[] = {";
47 system("./mpdump " d
);
57 if (name ==
"") return;
58 print "/* --- Curve " name
" --- */";
62 if (type ==
"binnorm") putmp
("beta");
69 print "static ecdata c_" fix
(name
) " = {";
70 print " FTAG_" toupper(type
) ",";
71 print " MP(" mp
["p"] "),"
72 if (type ==
"binnorm")
73 print " MP(" mp
["beta"] "),";
76 print " MP(" mp
["a"] "),"
77 print " MP(" mp
["b"] "),"
78 print " MP(" mp
["r"] "),"
79 print " MP(" mp
["h"] "),"
80 print " MP(" mp
["gx"] "),"
81 print " MP(" mp
["gy"] ")"
86 r
[name
] =
"c_" fix
(name
);
90 /^
[ \t]*(#|$)/ { next; }
92 $
1 ==
"alias" { flush
(); dname
[d_i
++] = $
2; d
[$
2] = $
3; next; }
94 $
1 ==
"curve" { flush
(); delete data
; name = $
2; type = $
3; next; }
96 { data
[$
1] = $
2; next; }
100 print banner
("Main table");
102 print "const ecentry ectab[] = {";
103 for (i =
0; i
< d_i
; i
++) {
107 print "curve " rname
" not found (alias from " name
")" >"/dev/stderr";
110 print " { \"" name
"\", &" r
[rname
] " },";
115 print banner
("That's all, folks");