-/* Makes safe primes of a 2k nature */\r
-#include <tommath.h>\r
-#include <time.h>\r
-\r
-int sizes[] = {256, 512, 768, 1024, 1536, 2048, 3072, 4096};\r
-\r
-int main(void)\r
-{\r
- char buf[2000];\r
- int x, y;\r
- mp_int q, p;\r
- FILE *out;\r
- clock_t t1;\r
- mp_digit z;\r
- \r
- mp_init_multi(&q, &p, NULL);\r
- \r
- out = fopen("2kprime.1", "w");\r
- for (x = 0; x < (int)(sizeof(sizes) / sizeof(sizes[0])); x++) {\r
- top:\r
- mp_2expt(&q, sizes[x]);\r
- mp_add_d(&q, 3, &q);\r
- z = -3;\r
- \r
- t1 = clock();\r
- for(;;) {\r
- mp_sub_d(&q, 4, &q);\r
- z += 4;\r
-\r
- if (z > MP_MASK) {\r
- printf("No primes of size %d found\n", sizes[x]);\r
- break;\r
- }\r
- \r
- if (clock() - t1 > CLOCKS_PER_SEC) { \r
- printf("."); fflush(stdout);\r
-// sleep((clock() - t1 + CLOCKS_PER_SEC/2)/CLOCKS_PER_SEC);\r
- t1 = clock();\r
- }\r
- \r
- /* quick test on q */\r
- mp_prime_is_prime(&q, 1, &y);\r
- if (y == 0) {\r
- continue;\r
- }\r
-\r
- /* find (q-1)/2 */\r
- mp_sub_d(&q, 1, &p);\r
- mp_div_2(&p, &p);\r
- mp_prime_is_prime(&p, 3, &y);\r
- if (y == 0) {\r
- continue;\r
- }\r
-\r
- /* test on q */\r
- mp_prime_is_prime(&q, 3, &y);\r
- if (y == 0) {\r
- continue;\r
- }\r
-\r
- break;\r
- }\r
- \r
- if (y == 0) {\r
- ++sizes[x];\r
- goto top;\r
- }\r
- \r
- mp_toradix(&q, buf, 10);\r
- printf("\n\n%d-bits (k = %lu) = %s\n", sizes[x], z, buf);\r
- fprintf(out, "%d-bits (k = %lu) = %s\n", sizes[x], z, buf); fflush(out);\r
- }\r
- \r
- return 0;\r
-} \r
- \r
- \r
- \r
- \r
- \r
+/* Makes safe primes of a 2k nature */
+#include <tommath.h>
+#include <time.h>
+
+int sizes[] = {256, 512, 768, 1024, 1536, 2048, 3072, 4096};
+
+int main(void)
+{
+ char buf[2000];
+ int x, y;
+ mp_int q, p;
+ FILE *out;
+ clock_t t1;
+ mp_digit z;
+
+ mp_init_multi(&q, &p, NULL);
+
+ out = fopen("2kprime.1", "w");
+ for (x = 0; x < (int)(sizeof(sizes) / sizeof(sizes[0])); x++) {
+ top:
+ mp_2expt(&q, sizes[x]);
+ mp_add_d(&q, 3, &q);
+ z = -3;
+
+ t1 = clock();
+ for(;;) {
+ mp_sub_d(&q, 4, &q);
+ z += 4;
+
+ if (z > MP_MASK) {
+ printf("No primes of size %d found\n", sizes[x]);
+ break;
+ }
+
+ if (clock() - t1 > CLOCKS_PER_SEC) {
+ printf("."); fflush(stdout);
+// sleep((clock() - t1 + CLOCKS_PER_SEC/2)/CLOCKS_PER_SEC);
+ t1 = clock();
+ }
+
+ /* quick test on q */
+ mp_prime_is_prime(&q, 1, &y);
+ if (y == 0) {
+ continue;
+ }
+
+ /* find (q-1)/2 */
+ mp_sub_d(&q, 1, &p);
+ mp_div_2(&p, &p);
+ mp_prime_is_prime(&p, 3, &y);
+ if (y == 0) {
+ continue;
+ }
+
+ /* test on q */
+ mp_prime_is_prime(&q, 3, &y);
+ if (y == 0) {
+ continue;
+ }
+
+ break;
+ }
+
+ if (y == 0) {
+ ++sizes[x];
+ goto top;
+ }
+
+ mp_toradix(&q, buf, 10);
+ printf("\n\n%d-bits (k = %lu) = %s\n", sizes[x], z, buf);
+ fprintf(out, "%d-bits (k = %lu) = %s\n", sizes[x], z, buf); fflush(out);
+ }
+
+ return 0;
+}
+
+
+
+
+