summaryrefslogtreecommitdiffstats
path: root/moon-abe/pbc-0.5.14/gen/listfreeman.c
diff options
context:
space:
mode:
Diffstat (limited to 'moon-abe/pbc-0.5.14/gen/listfreeman.c')
-rw-r--r--moon-abe/pbc-0.5.14/gen/listfreeman.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/moon-abe/pbc-0.5.14/gen/listfreeman.c b/moon-abe/pbc-0.5.14/gen/listfreeman.c
new file mode 100644
index 00000000..f3f18cc4
--- /dev/null
+++ b/moon-abe/pbc-0.5.14/gen/listfreeman.c
@@ -0,0 +1,38 @@
+// List discriminant and bits in r and q for type G pairings that may be
+// suitable for cryptography.
+
+#include "pbc.h"
+
+int show(pbc_cm_t cm, void *data) {
+ unsigned int D = * (unsigned *) data;
+ int qbits, rbits;
+ qbits = mpz_sizeinbase(cm->q, 2);
+ rbits = mpz_sizeinbase(cm->r, 2);
+ printf("%d, %d, %d\n", D, qbits, rbits);
+ fflush(stdout);
+ return 0;
+}
+
+void try(int tryD) {
+ pbc_cm_search_g(show, &tryD, tryD, 500);
+}
+
+int main(int argc, char **argv) {
+ unsigned int D = 0;
+
+ if (argc > 1) {
+ D = atoi(argv[1]);
+ if (D % 120) {
+ pbc_die("D must be multiple of 120");
+ }
+ }
+
+ printf("D < %u, bits in q, bits in r\n", 1000000000);
+ while (D < 1000000000) {
+ try(D + 43);
+ try(D + 67);
+ D+=120;
+ }
+
+ return 0;
+}