Пример #1
0
/* 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;
}
Пример #3
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;
}