Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/tests/crypto/opencrypto Include all of the examples from RFC...
details: https://anonhg.NetBSD.org/src/rev/dcbaff76d4f8
branches: trunk
changeset: 326041:dcbaff76d4f8
user: pgoyette <pgoyette%NetBSD.org@localhost>
date: Thu Jan 16 18:09:55 2014 +0000
description:
Include all of the examples from RFC3566
diffstat:
tests/crypto/opencrypto/h_xcbcmac.c | 70 +++++++++++++++++++++++-------------
1 files changed, 44 insertions(+), 26 deletions(-)
diffs (100 lines):
diff -r c3d2986a8066 -r dcbaff76d4f8 tests/crypto/opencrypto/h_xcbcmac.c
--- a/tests/crypto/opencrypto/h_xcbcmac.c Thu Jan 16 17:30:33 2014 +0000
+++ b/tests/crypto/opencrypto/h_xcbcmac.c Thu Jan 16 18:09:55 2014 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: h_xcbcmac.c,v 1.1 2014/01/14 17:51:39 pgoyette Exp $ */
+/* $NetBSD: h_xcbcmac.c,v 1.2 2014/01/16 18:09:55 pgoyette Exp $ */
/*-
* Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -36,20 +36,43 @@
#include <crypto/cryptodev.h>
+
+/* test vectors from RFC3566 */
unsigned char key[16] = {
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f
};
-char plaintx[] = {0x00, 0x01, 0x02};
-const unsigned char ciphertx[16] = {
- 0x21, 0xc6, 0x0d, 0xa5, 0x34, 0x24, 0x8b, 0xce,
- 0x95, 0x86, 0x64, 0xb3, 0x66, 0x77, 0x9b, 0x4c
+char plaintx[1000] = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21
+};
+const struct {
+ size_t len;
+ unsigned char mac[12];
+} tests[] = {
+ { 0, { 0x75, 0xf0, 0x25, 0x1d, 0x52, 0x8a,
+ 0xc0, 0x1c, 0x45, 0x73, 0xdf, 0xd5 } },
+ { 3, { 0x5b, 0x37, 0x65, 0x80, 0xae, 0x2f,
+ 0x19, 0xaf, 0xe7, 0x21, 0x9c, 0xee } },
+ { 16, { 0xd2, 0xa2, 0x46, 0xfa, 0x34, 0x9b,
+ 0x68, 0xa7, 0x99, 0x98, 0xa4, 0x39 } },
+ { 20, { 0x47, 0xf5, 0x1b, 0x45, 0x64, 0x96,
+ 0x62, 0x15, 0xb8, 0x98, 0x5c, 0x63 } },
+ { 32, { 0xf5, 0x4f, 0x0e, 0xc8, 0xd2, 0xb9,
+ 0xf3, 0xd3, 0x68, 0x07, 0x73, 0x4b } },
+ { 34, { 0xbe, 0xcb, 0xb3, 0xbc, 0xcd, 0xb5,
+ 0x18, 0xa3, 0x06, 0x77, 0xd5, 0x48 } },
+ { 1000, { 0xf0, 0xda, 0xfe, 0xe8, 0x95, 0xdb,
+ 0x30, 0x25, 0x37, 0x61, 0x10, 0x3b } },
};
int
main(void)
{
- int fd, res;
+ int fd, res, i;
struct session_op cs;
struct crypt_op co;
unsigned char buf[16];
@@ -65,26 +88,21 @@
if (res < 0)
err(1, "CIOCGSESSION");
- memset(&co, 0, sizeof(co));
- memset(buf, 0, sizeof(buf));
- co.ses = cs.ses;
- co.op = COP_ENCRYPT;
- co.len = 0 /*sizeof(plaintx)*/;
- co.src = plaintx;
- co.mac = buf;
- res = ioctl(fd, CIOCCRYPT, &co);
- if (res < 0)
- err(1, "CIOCCRYPT");
-#if 0
- if (memcmp(co.dst, ciphertx, sizeof(ciphertx)))
- errx(1, "verification failed");
-#else
- {
- unsigned int i;
- for (i = 0; i < sizeof(buf); i++)
- printf("%02x ", buf[i]);
- printf("\n");
+ for (i = 0; i < sizeof(tests)/sizeof(tests[0]); i++) {
+ memset(&co, 0, sizeof(co));
+ memset(buf, 0, sizeof(buf));
+ if (tests[i].len == sizeof(plaintx))
+ memset(&plaintx, 0, sizeof(plaintx));
+ co.ses = cs.ses;
+ co.op = COP_ENCRYPT;
+ co.len = tests[i].len;
+ co.src = plaintx;
+ co.mac = buf;
+ res = ioctl(fd, CIOCCRYPT, &co);
+ if (res < 0)
+ err(1, "CIOCCRYPT test %d", i);
+ if (memcmp(buf, &tests[i].mac, sizeof(tests[i].mac)))
+ errx(1, "verification failed test %d", i);
}
-#endif
return 0;
}
Home |
Main Index |
Thread Index |
Old Index