/* Essentially a profiling tool to compare vs. md5sum/cksum */ int main (int argc, char** argv) { void* tmp; off_t len, align; int i; if (argc != 2) { fprintf(stderr, "Syntax: %s <filename>\n", argv[0]); return 1; } if ((fd = open(argv[1], O_RDONLY)) == -1) { perror(argv[1]); return 1; } len = lseek(fd, 0, SEEK_END); align = (len + 4095) & ~0x8ffUL; if ((tmp = mmap(0, align, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0)) == MAP_FAILED) { perror("mmap"); return 1; } block = (unsigned char*)tmp; memset(nonce, 0, sizeof(nonce)); poly1305aes_clamp(kr); poly1305aes_authenticate(mac,kr,nonce,block,len); for (i = 0; i < 16; ++i) printf("%02x", mac[i]); printf("\n"); return 0; }
int main() { int loop; int len; int i; int x; int y; for (loop = 0;loop < 1000000;++loop) { len = 0; for (;;) { poly1305aes_authenticate(out,kr,n,m,len); for (i = 0;i < 16;++i) printf("%02x",(unsigned int) out[i]); printf("\n"); if (!poly1305aes_verify(out,kr,n,m,len)) { printf("poly1305aes_verify failed\n"); return 1; } x = random() & 15; y = 1 + (random() % 255); out[x] += y; if (poly1305aes_verify(out,kr,n,m,len)) { printf("poly1305aes_verify succeeded on bad input\n"); return 1; } out[x] -= y; if (len >= MAXLEN) break; n[0] ^= loop; for (i = 0;i < 16;++i) n[i] ^= out[i]; if (len % 2) for (i = 0;i < 16;++i) kr[i] ^= out[i]; if (len % 3) for (i = 0;i < 16;++i) kr[i + 16] ^= out[i]; poly1305aes_clamp(kr); m[len++] ^= out[0]; } } return 0; }
int main() { int loop; int len; int i; int x; int y; for (loop = 0; loop < 1000000; ++loop) { len = 0; for (;;) { poly1305aes_authenticate(out,kr,n,m,len); for (i = 0;i < 16;++i) printf("%02x",(unsigned int) out[i]); printf("\n"); x = random() & 15; y = 1 + (random() % 255); if (len >= MAXLEN) break; n[0] ^= loop; for (i = 0;i < 16;++i) n[i] ^= out[i]; if (len % 2) for (i = 0;i < 16;++i) kr[i] ^= out[i]; if (len % 3) for (i = 0;i < 16;++i) kr[i + 16] ^= out[i]; m[len++] ^= out[0]; } } return 0; }