diff options
author | Miloslav Trmač <mitr@redhat.com> | 2010-11-11 00:45:30 +0100 |
---|---|---|
committer | Miloslav Trmač <mitr@redhat.com> | 2010-11-11 00:45:30 +0100 |
commit | 52c69fc0152b6d63644bbdab8aa5b07892255436 (patch) | |
tree | 5d9d842ee5712e5258483d7f67bc025ae22ac010 | |
parent | 278a10d4af56af2af8fcb4aa81f492db6109ef58 (diff) | |
download | ncrypto-52c69fc0152b6d63644bbdab8aa5b07892255436.tar.gz ncrypto-52c69fc0152b6d63644bbdab8aa5b07892255436.tar.xz ncrypto-52c69fc0152b6d63644bbdab8aa5b07892255436.zip |
Add tests of handling very large data at once
-rw-r--r-- | tests/digests.c | 20 | ||||
-rw-r--r-- | tests/symm_ciphers.c | 47 |
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; } |