summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiloslav Trmač <mitr@redhat.com>2010-11-11 00:45:30 +0100
committerMiloslav Trmač <mitr@redhat.com>2010-11-11 00:45:30 +0100
commit52c69fc0152b6d63644bbdab8aa5b07892255436 (patch)
tree5d9d842ee5712e5258483d7f67bc025ae22ac010
parent278a10d4af56af2af8fcb4aa81f492db6109ef58 (diff)
downloadncrypto-52c69fc0152b6d63644bbdab8aa5b07892255436.tar.gz
ncrypto-52c69fc0152b6d63644bbdab8aa5b07892255436.tar.xz
ncrypto-52c69fc0152b6d63644bbdab8aa5b07892255436.zip
Add tests of handling very large data at once
-rw-r--r--tests/digests.c20
-rw-r--r--tests/symm_ciphers.c47
2 files changed, 67 insertions, 0 deletions
diff --git a/tests/digests.c b/tests/digests.c
index d8ca31c..19e54cd 100644
--- a/tests/digests.c
+++ b/tests/digests.c
@@ -96,12 +96,15 @@ static const struct tv tvs[] =
#undef TV
};
+#define LARGE_SIZE (10 * 1024 * 1024)
+
int
main (void)
{
struct ncr_digest_session *sess;
uint8_t dest[256];
size_t i, j, dest_size;
+ void *large;
CK_RV res;
for (i = 0; i < G_N_ELEMENTS (tvs); i++)
@@ -199,5 +202,22 @@ main (void)
assert (res == CKR_OK);
}
+ res = ncr_digest_alloc (&sess, CKM_SHA256);
+ assert (res == CKR_OK);
+ res = ncr_digest_init (sess);
+ assert (res == CKR_OK);
+
+ large = g_malloc0 (LARGE_SIZE);
+ dest_size = sizeof (dest);
+ res = ncr_digest (sess, dest, &dest_size, large, LARGE_SIZE);
+ assert (res == CKR_OK);
+ assert (dest_size == 32);
+ assert (memcmp (dest, "\xE5\xB8\x44\xCC\x57\xF5\x70\x94\xEA\x45\x85\xE2\x35\xF3\x6C\x78\xC1\xCD\x22\x22\x62\xBB\x89\xD5\x3C\x94\xDC\xB4\xD6\xB3\xE5\x5D", 32)
+ == 0);
+ g_free(large);
+
+ res = ncr_digest_free (sess);
+ assert (res == CKR_OK);
+
return EXIT_SUCCESS;
}
diff --git a/tests/symm_ciphers.c b/tests/symm_ciphers.c
index 27a9752..a6f3570 100644
--- a/tests/symm_ciphers.c
+++ b/tests/symm_ciphers.c
@@ -96,6 +96,8 @@ static const struct tv tvs[] =
#undef TV
};
+#define LARGE_SIZE (10 * 1024 * 1024)
+
int
main (void)
{
@@ -103,6 +105,7 @@ main (void)
struct ncr_symm_key *key;
uint8_t dest[256];
size_t i, j, dest_size;
+ void *large_src, *large_dest;
CK_RV res;
for (i = 0; i < G_N_ELEMENTS (tvs); i++)
@@ -294,5 +297,49 @@ main (void)
assert (res == CKR_OK);
}
+ res = ncr_symm_cipher_alloc (&sess, CKM_AES_CBC);
+ assert (res == CKR_OK);
+
+ res = ncr_symm_key_create (&key, CKK_AES, true,
+ "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F",
+ 16);
+ assert (res == CKR_OK);
+
+ res = ncr_symm_cipher_encrypt_init (sess, key,
+ "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xAA\xBB\xCC\xDD\xEE\xFF",
+ 16);
+ assert (res == CKR_OK);
+
+ large_src = g_malloc0 (LARGE_SIZE);
+ for (i = 0; i < LARGE_SIZE / sizeof (i); i++)
+ memcpy ((unsigned char *)large_src + i * sizeof (i), &i, sizeof (i));
+
+ large_dest = g_malloc (LARGE_SIZE);
+ dest_size = LARGE_SIZE;
+ res = ncr_symm_cipher_encrypt (sess, large_dest, &dest_size, large_src,
+ LARGE_SIZE);
+ assert (res == CKR_OK);
+ assert (dest_size == LARGE_SIZE);
+
+ res = ncr_symm_cipher_decrypt_init (sess, key,
+ "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xAA\xBB\xCC\xDD\xEE\xFF",
+ 16);
+ assert (res == CKR_OK);
+
+ dest_size = LARGE_SIZE;
+ res = ncr_symm_cipher_decrypt (sess, large_dest, &dest_size, large_dest,
+ LARGE_SIZE);
+ assert (res == CKR_OK);
+ assert (dest_size == LARGE_SIZE);
+ assert (memcmp (large_src, large_dest, LARGE_SIZE) == 0);
+ g_free (large_dest);
+ g_free (large_src);
+
+ res = ncr_symm_key_destroy (key);
+ assert (res == CKR_OK);
+
+ res = ncr_symm_cipher_free (sess);
+ assert (res == CKR_OK);
+
return EXIT_SUCCESS;
}