X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=main.c;h=ef192054e972735ca28dd48fae45d24cc180e66b;hb=b51d8aba4d184fa4e04a6a70743593d1945b9e16;hp=50197e6e4cfb919a0edc98b41c6d25de383fd5b7;hpb=ee0e9cbc2a456437dd83bb4e39fd38c508089529;p=xonotic%2Fd0_blind_id.git diff --git a/main.c b/main.c index 50197e6..ef19205 100644 --- a/main.c +++ b/main.c @@ -22,19 +22,22 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include #include #include +#include void bench(double *b) { - static struct timespec thistime, lasttime; + static struct timeval thistime, lasttime; static double x = 0; static double *lastclock = &x; lasttime = thistime; - clock_gettime(CLOCK_MONOTONIC, &thistime); - *lastclock += (thistime.tv_sec - lasttime.tv_sec) + 0.000000001 * (thistime.tv_nsec - lasttime.tv_nsec); + gettimeofday(&thistime, NULL); + *lastclock += (thistime.tv_sec - lasttime.tv_sec) + 0.000001 * (thistime.tv_usec - lasttime.tv_usec); lastclock = b; } +#ifndef WIN32 #include +#endif volatile BOOL quit = 0; void mysignal(int signo) { @@ -42,25 +45,51 @@ void mysignal(int signo) quit = 1; } -#include +#include +#include +static void errx(int status, const char *format, ...) +{ + va_list ap; + va_start(ap, format); + vfprintf(stderr, format, ap); + exit(status); +} + int main(int argc, char **argv) { char buf[65536]; size_t bufsize; - char buf2[65536]; size_t buf2size; ssize_t buf2ssize; + char buf2[65536]; size_t buf2size; d0_blind_id_t *ctx_self, *ctx_other; d0_blind_id_INITIALIZE(); ctx_self = d0_blind_id_new(); ctx_other = d0_blind_id_new(); - if(!d0_blind_id_generate_private_keys(ctx_self, 1024)) + printf("keygen RSA...\n"); + if(!d0_blind_id_generate_private_key(ctx_self, 1024)) + errx(1, "keygen fail"); + buf2size = sizeof(buf2) - 1; + if(!d0_blind_id_fingerprint64_public_key(ctx_self, buf2, &buf2size)) + errx(2, "fp64 fail"); + printf("key has fingerprint %s\n", buf2); + bufsize = sizeof(buf); if(!d0_blind_id_write_public_key(ctx_self, buf, &bufsize)) + errx(2, "writepub fail"); + if(!d0_blind_id_read_public_key(ctx_other, buf, bufsize)) + errx(3, "readpub fail"); + + printf("keygen modulus...\n"); + if(!d0_blind_id_generate_private_id_modulus(ctx_other)) errx(1, "keygen fail"); - bufsize = sizeof(buf); if(!d0_blind_id_write_public_keys(ctx_self, buf, &bufsize)) + /* + bufsize = sizeof(buf); if(!d0_blind_id_write_private_id_modulus(ctx_other, buf, &bufsize)) errx(2, "writepub fail"); - if(!d0_blind_id_read_public_keys(ctx_other, buf, bufsize)) + if(!d0_blind_id_read_private_id_modulus(ctx_self, buf, bufsize)) errx(3, "readpub fail"); + */ +#ifndef WIN32 signal(SIGINT, mysignal); +#endif int n = 0; double bench_gen = 0, bench_fp = 0, bench_stop = 0; @@ -95,30 +124,40 @@ int main(int argc, char **argv) errx(8, "readpub2 fail"); n = 0; - double bench_auth = 0, bench_chall = 0, bench_resp = 0, bench_verify = 0; + double bench_auth = 0, bench_chall = 0, bench_resp = 0, bench_verify = 0, bench_dhkey1 = 0, bench_dhkey2 = 0; BOOL status; while(!quit) { bench(&bench_auth); - bufsize = sizeof(buf); if(!d0_blind_id_authenticate_with_private_id_start(ctx_other, 1, "hello world", 11, buf, &bufsize)) + bufsize = sizeof(buf); if(!d0_blind_id_authenticate_with_private_id_start(ctx_other, 1, 1, "hello world", 11, buf, &bufsize)) errx(9, "start fail"); bench(&bench_chall); - buf2size = sizeof(buf2); if(!d0_blind_id_authenticate_with_private_id_challenge(ctx_self, 1, buf, bufsize, buf2, &buf2size, NULL)) + buf2size = sizeof(buf2); if(!d0_blind_id_authenticate_with_private_id_challenge(ctx_self, 1, 1, buf, bufsize, buf2, &buf2size, &status)) errx(10, "challenge fail"); + if(!status) + errx(14, "signature prefail"); bench(&bench_resp); bufsize = sizeof(buf); if(!d0_blind_id_authenticate_with_private_id_response(ctx_other, buf2, buf2size, buf, &bufsize)) errx(11, "response fail"); bench(&bench_verify); - buf2ssize = sizeof(buf2); if(!d0_blind_id_authenticate_with_private_id_verify(ctx_self, buf, bufsize, buf2, &buf2ssize, &status)) + buf2size = sizeof(buf2); if(!d0_blind_id_authenticate_with_private_id_verify(ctx_self, buf, bufsize, buf2, &buf2size, &status)) errx(12, "verify fail"); - if(buf2ssize != 11 || memcmp(buf2, "hello world", 11)) + if(buf2size != 11 || memcmp(buf2, "hello world", 11)) errx(13, "hello fail"); if(!status) errx(14, "signature fail"); + bench(&bench_dhkey1); + bufsize = 20; if(!d0_blind_id_sessionkey_public_id(ctx_self, buf, &bufsize)) + errx(15, "dhkey1 fail"); + bench(&bench_dhkey2); + buf2size = 20; if(!d0_blind_id_sessionkey_public_id(ctx_other, buf2, &buf2size)) + errx(16, "dhkey2 fail"); bench(&bench_stop); + if(bufsize != buf2size || memcmp(buf, buf2, bufsize)) + errx(17, "dhkey match fail"); ++n; if(n % 1024 == 0) - printf("auth=%f chall=%f resp=%f verify=%f\n", n/bench_auth, n/bench_chall, n/bench_resp, n/bench_verify); + printf("auth=%f chall=%f resp=%f verify=%f dh1=%f dh2=%f\n", n/bench_auth, n/bench_chall, n/bench_resp, n/bench_verify, n/bench_dhkey1, n/bench_dhkey2); } return 0;