svn commit: r305066 - head/tools/tools/crypto

George V. Neville-Neil gnn at FreeBSD.org
Tue Aug 30 14:28:36 UTC 2016


Author: gnn
Date: Tue Aug 30 14:28:35 2016
New Revision: 305066
URL: https://svnweb.freebsd.org/changeset/base/305066

Log:
  Update cryptotest for modern algorithms
  
  Reviewed by:	cem
  Sponsored by:	Rubicon Communications, LLC (Netgate)
  Differential Revision:	https://reviews.freebsd.org/D7598

Modified:
  head/tools/tools/crypto/cryptotest.c

Modified: head/tools/tools/crypto/cryptotest.c
==============================================================================
--- head/tools/tools/crypto/cryptotest.c	Tue Aug 30 14:09:24 2016	(r305065)
+++ head/tools/tools/crypto/cryptotest.c	Tue Aug 30 14:28:35 2016	(r305066)
@@ -126,9 +126,10 @@ struct alg {
 	{ "blf",	0,	8,	5,	56,	CRYPTO_BLF_CBC },
 	{ "cast",	0,	8,	5,	16,	CRYPTO_CAST_CBC },
 	{ "skj",	0,	8,	10,	10,	CRYPTO_SKIPJACK_CBC },
-	{ "aes",	0,	16,	16,	16,	CRYPTO_RIJNDAEL128_CBC},
-	{ "aes192",	0,	16,	24,	24,	CRYPTO_RIJNDAEL128_CBC},
-	{ "aes256",	0,	16,	32,	32,	CRYPTO_RIJNDAEL128_CBC},
+	{ "rij",	0,	16,	16,	16,	CRYPTO_RIJNDAEL128_CBC},
+	{ "aes",	0,	16,	16,	16,	CRYPTO_AES_CBC},
+	{ "aes192",	0,	16,	24,	24,	CRYPTO_AES_CBC},
+	{ "aes256",	0,	16,	32,	32,	CRYPTO_AES_CBC},
 #ifdef notdef
 	{ "arc4",	0,	8,	1,	32,	CRYPTO_ARC4 },
 #endif
@@ -139,19 +140,20 @@ struct alg {
 	{ "sha512",	1,	8,	64,	64,	CRYPTO_SHA2_512_HMAC },
 };
 
-static void
+void
 usage(const char* cmd)
 {
 	printf("usage: %s [-czsbv] [-d dev] [-a algorithm] [count] [size ...]\n",
 		cmd);
 	printf("where algorithm is one of:\n");
-	printf("    des 3des (default) blowfish cast skipjack\n");
-	printf("    aes (aka rijndael) aes192 aes256 arc4\n");
+	printf("    des 3des (default) blowfish cast skipjack rij\n");
+	printf("    aes aes192 aes256 arc4\n");
 	printf("count is the number of encrypt/decrypt ops to do\n");
 	printf("size is the number of bytes of text to encrypt+decrypt\n");
 	printf("\n");
 	printf("-c check the results (slows timing)\n");
-	printf("-d use specific device\n");
+	printf("-d use specific device, specify 'soft' for testing software implementations\n");
+	printf("\tNOTE: to use software you must set:\n\t sysctl kern.cryptodevallowsoft=1\n");
 	printf("-z run all available algorithms on a variety of sizes\n");
 	printf("-v be verbose\n");
 	printf("-b mark operations for batching\n");
@@ -159,7 +161,7 @@ usage(const char* cmd)
 	exit(-1);
 }
 
-static struct alg*
+struct alg*
 getalgbycode(int cipher)
 {
 	int i;
@@ -170,7 +172,7 @@ getalgbycode(int cipher)
 	return NULL;
 }
 
-static struct alg*
+struct alg*
 getalgbyname(const char* name)
 {
 	int i;
@@ -181,10 +183,10 @@ getalgbyname(const char* name)
 	return NULL;
 }
 
-static int
+int
 devcrypto(void)
 {
-	static int fd = -1;
+	int fd = -1;
 
 	if (fd < 0) {
 		fd = open(_PATH_DEV "crypto", O_RDWR, 0);
@@ -196,11 +198,14 @@ devcrypto(void)
 	return fd;
 }
 
-static int
+int
 crlookup(const char *devname)
 {
 	struct crypt_find_op find;
 
+	if (strncmp(devname, "soft", 4) == 0)
+		return CRYPTO_FLAG_SOFTWARE;
+
 	find.crid = -1;
 	strlcpy(find.name, devname, sizeof(find.name));
 	if (ioctl(devcrypto(), CIOCFINDDEV, &find) == -1)
@@ -208,10 +213,10 @@ crlookup(const char *devname)
 	return find.crid;
 }
 
-static const char *
+const char *
 crfind(int crid)
 {
-	static struct crypt_find_op find;
+	struct crypt_find_op find;
 
 	bzero(&find, sizeof(find));
 	find.crid = crid;
@@ -220,7 +225,7 @@ crfind(int crid)
 	return find.name;
 }
 
-static int
+int
 crget(void)
 {
 	int fd;
@@ -232,7 +237,7 @@ crget(void)
 	return fd;
 }
 
-static char
+char
 rdigit(void)
 {
 	const char a[] = {
@@ -242,7 +247,7 @@ rdigit(void)
 	return 0x20+a[random()%nitems(a)];
 }
 
-static void
+void
 runtest(struct alg *alg, int count, int size, u_long cmd, struct timeval *tv)
 {
 	int i, fd = crget();
@@ -386,7 +391,7 @@ runtest(struct alg *alg, int count, int 
 }
 
 #ifdef __FreeBSD__
-static void
+void
 resetstats()
 {
 	struct cryptostats stats;
@@ -409,7 +414,7 @@ resetstats()
 		perror("kern.cryptostats");
 }
 
-static void
+void
 printt(const char* tag, struct cryptotstat *ts)
 {
 	uint64_t avg, min, max;
@@ -424,7 +429,7 @@ printt(const char* tag, struct cryptotst
 }
 #endif
 
-static void
+void
 runtests(struct alg *alg, int count, int size, u_long cmd, int threads, int profile)
 {
 	int i, status;


More information about the svn-src-head mailing list