projects
/
u
/
mdw
/
catacomb
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
2cc3d1d
)
Export the code to transform DH or EC table entries into usable group specs.
author
mdw
<mdw>
Sat, 5 Mar 2005 16:41:48 +0000
(16:41 +0000)
committer
mdw
<mdw>
Sat, 5 Mar 2005 16:41:48 +0000
(16:41 +0000)
dh-param.c
patch
|
blob
|
blame
|
history
dh.h
patch
|
blob
|
blame
|
history
ec.h
patch
|
blob
|
blame
|
history
diff --git
a/dh-param.c
b/dh-param.c
index
b02e84b
..
fcce31f
100644
(file)
--- a/
dh-param.c
+++ b/
dh-param.c
@@
-35,6
+35,19
@@
/*----- Main code ---------------------------------------------------------*/
/*----- Main code ---------------------------------------------------------*/
+/* ---- @dh_infofromdata@ --- *
+ *
+ * Arguments: @dh_param *dp@ = parameters to fill in
+ * @pdata *pd@ = packed data structure
+ *
+ * Returns: ---
+ *
+ * Use: Fills in a parameters structure from a packed data block.
+ */
+
+void dh_infofromdata(dh_param *dp, pdata *pd)
+ { dp->p = &pd->p; dp->q = &pd->q; dp->g = &pd->g; }
+
/* --- @dh_parse@, @dhbin_parse@ --- *
*
* Arguments: @qd_parse *qd@ = parser context
/* --- @dh_parse@, @dhbin_parse@ --- *
*
* Arguments: @qd_parse *qd@ = parser context
@@
-47,9
+60,6
@@
* separated by commas.
*/
* separated by commas.
*/
-static void getinfo(dh_param *dp, pdata *pd)
- { dp->p = &pd->p; dp->q = &pd->q; dp->g = &pd->g; }
-
static int parse(qd_parse *qd, gprime_param *dp)
{
mp *p = MP_NEW, *q = MP_NEW, *g = MP_NEW;
static int parse(qd_parse *qd, gprime_param *dp)
{
mp *p = MP_NEW, *q = MP_NEW, *g = MP_NEW;
@@
-70,7
+80,7
@@
int dh_parse(qd_parse *qd, dh_param *dp)
for (pe = ptab; pe->name; pe++) {
if (qd_enum(qd, pe->name) >= 0) {
for (pe = ptab; pe->name; pe++) {
if (qd_enum(qd, pe->name) >= 0) {
-
getinfo
(dp, pe->data);
+
dh_infofromdata
(dp, pe->data);
goto found;
}
}
goto found;
}
}
@@
-86,7
+96,7
@@
int dhbin_parse(qd_parse *qd, gbin_param *gb)
for (be = bintab; be->name; be++) {
if (qd_enum(qd, be->name) >= 0) {
for (be = bintab; be->name; be++) {
if (qd_enum(qd, be->name) >= 0) {
-
getinfo
(gb, be->data);
+
dh_infofromdata
(gb, be->data);
goto found;
}
}
goto found;
}
}
@@
-107,53
+117,54
@@
int main(int argc, char *argv[])
const pentry *pe;
const binentry *be;
const char *e;
const pentry *pe;
const binentry *be;
const char *e;
- int ok = 1;
+ int ok = 1
, aok = 1
;
grand *gr;
gr = fibrand_create(0);
grand *gr;
gr = fibrand_create(0);
- fputs("checking standard prime groups...\n", stdout);
+ fputs("checking standard prime groups:", stdout);
+ fflush(stdout);
for (pe = ptab; pe->name; pe++) {
dh_param dp;
group *g;
for (pe = ptab; pe->name; pe++) {
dh_param dp;
group *g;
- getinfo(&dp, pe->data);
- printf(" %s: ", pe->name);
+ dh_infofromdata(&dp, pe->data);
g = group_prime(&dp);
if (mp_bits(dp.q) > 2048 &&
(!argv[1] || strcmp(argv[1], "keen") != 0)) {
g = group_prime(&dp);
if (mp_bits(dp.q) > 2048 &&
(!argv[1] || strcmp(argv[1], "keen") != 0)) {
- fputs("skipping\n", stdout);
+ printf(" [%s skipped]", pe->name);
+ fflush(stdout);
continue;
}
continue;
}
- fflush(stdout);
e = G_CHECK(g, gr);
G_DESTROYGROUP(g);
dh_paramfree(&dp);
if (e) {
e = G_CHECK(g, gr);
G_DESTROYGROUP(g);
dh_paramfree(&dp);
if (e) {
- printf("
fails: %s\n"
, e);
- ok = 0;
+ printf("
[%s failed: %s]", pe->name
, e);
+ ok =
aok =
0;
} else
} else
- fputs("ok\n", stdout);
+ printf(" %s", pe->name);
+ fflush(stdout);
}
}
- fputs("checking standard binary groups...\n", stdout);
+ fputs(ok ? " ok\n" : " failed\n", stdout);
+ ok = 1;
+ fputs("checking standard binary groups:", stdout);
for (be = bintab; be->name; be++) {
gbin_param gb;
group *g;
for (be = bintab; be->name; be++) {
gbin_param gb;
group *g;
- getinfo(&gb, be->data);
- printf(" %s: ", be->name);
+ dh_infofromdata(&gb, be->data);
g = group_binary(&gb);
g = group_binary(&gb);
- fflush(stdout);
e = G_CHECK(g, gr);
G_DESTROYGROUP(g);
dh_paramfree(&gb);
if (e) {
e = G_CHECK(g, gr);
G_DESTROYGROUP(g);
dh_paramfree(&gb);
if (e) {
- printf("
fails: %s\n"
, e);
- ok = 0;
+ printf("
[%s failed: %s]", be->name
, e);
+ ok =
aok =
0;
} else
} else
- fputs("ok\n", stdout);
+ printf(" %s", be->name);
+ fflush(stdout);
}
}
+ fputs(ok ? " ok\n" : " failed\n", stdout);
gr->ops->destroy(gr);
gr->ops->destroy(gr);
- if (ok)
- fputs("all ok\n", stdout);
- return (!ok);
+ return (!aok);
}
#endif
}
#endif
diff --git
a/dh.h
b/dh.h
index
8288740
..
0ddc342
100644
(file)
--- a/
dh.h
+++ b/
dh.h
@@
-182,6
+182,19
@@
extern int dh_limlee(dh_param */*dp*/, unsigned /*ql*/, unsigned /*pl*/,
extern int dh_checkparam(keycheck */*kc*/, const dh_param */*dp*/,
mp **/*v*/, size_t /*n*/);
extern int dh_checkparam(keycheck */*kc*/, const dh_param */*dp*/,
mp **/*v*/, size_t /*n*/);
+/* ---- @dh_infofromdata@ --- *
+ *
+ * Arguments: @dh_param *dp@ = parameters to fill in
+ * @pdata *pd@ = packed data structure
+ *
+ * Returns: ---
+ *
+ * Use: Fills in a parameters structure from a packed data block.
+ */
+
+struct pdata;
+extern void dh_infofromdata(dh_param */*dp*/, struct pdata */*pd*/);
+
/* --- @dh_parse@, @dhbin_parse@ --- *
*
* Arguments: @qd_parse *qd@ = parser context
/* --- @dh_parse@, @dhbin_parse@ --- *
*
* Arguments: @qd_parse *qd@ = parser context
diff --git
a/ec.h
b/ec.h
index
92acc41
..
f46a985
100644
(file)
--- a/
ec.h
+++ b/
ec.h
@@
-549,6
+549,20
@@
extern ec *ec_ptparse(qd_parse */*qd*/, ec */*p*/);
extern int ec_infoparse(qd_parse */*qd*/, ec_info */*ei*/);
extern int ec_infoparse(qd_parse */*qd*/, ec_info */*ei*/);
+/* --- @ec_infofromdata@ --- *
+ *
+ * Arguments: @ec_info *ei@ = where to write the information
+ * @ecdata *ed@ = raw data
+ *
+ * Returns: ---
+ *
+ * Use: Loads elliptic curve information about one of the standard
+ * curves.
+ */
+
+struct ecdata;
+extern void ec_infofromdata(ec_info */*ei*/, struct ecdata */*ed*/);
+
/* --- @ec_getinfo@ --- *
*
* Arguments: @ec_info *ei@ = where to write the information
/* --- @ec_getinfo@ --- *
*
* Arguments: @ec_info *ei@ = where to write the information