Merged. Thanks! regards, Joy
On Mon, 2014-08-04 at 16:11 +0200, Harald Freudenberger wrote: > Some small fixes and improvements on the digest testcase: > - multipart digest update now really breaks down the data > into junks of DIGEST_UPDATE_JUNK_SIZE (currently 32 bytes) > size. > - fix in regress.h: macro testcase_pass prints out timev differences > but start time was nowhere set (causing to print just some kind of > random time). Now the testcase_begin* macros set start time and thus > the time values printed out make sense. > > Signed-off-by: Harald Freudenberger <fre...@linux.vnet.ibm.com> > --- > testcases/crypto/digest.h | 1 + > testcases/crypto/digest_func.c | 41 > ++++++++++++++++++++++++---------------- > testcases/include/regress.h | 2 ++ > 3 files changed, 28 insertions(+), 16 deletions(-) > > diff --git a/testcases/crypto/digest.h b/testcases/crypto/digest.h > index dff3e12..0ab98a9 100644 > --- a/testcases/crypto/digest.h > +++ b/testcases/crypto/digest.h > @@ -3,6 +3,7 @@ > #define MAX_KEY_SIZE 150 > #define MAX_DATA_SIZE 512 > #define MAX_HASH_SIZE 64 > +#define DIGEST_UPDATE_JUNK_SIZE 32 > > CK_ULONG four = 4; > CK_ULONG ten = 10; > diff --git a/testcases/crypto/digest_func.c b/testcases/crypto/digest_func.c > index 156c238..cfa4427 100644 > --- a/testcases/crypto/digest_func.c > +++ b/testcases/crypto/digest_func.c > @@ -46,6 +46,10 @@ CK_RV do_Digest(struct digest_test_suite_info *tsuite) > /** iterate over test vectors **/ > for(i = 0; i < tsuite->tvcount; i++){ > > + /** begin test **/ > + testcase_begin("Starting %s Digest with test vector %d.", > + tsuite->name, i); > + > rc = CKR_OK; // set rc > > /** clear buffers **/ > @@ -82,8 +86,9 @@ CK_RV do_Digest(struct digest_test_suite_info *tsuite) > testcase_new_assertion(); > > if (actual_len != expected_len) { > - testcase_fail("hashed data length does not match test > vector's" " hashed data length.\nexpected > length=%ld, found " > - "length=%ld.", expected_len, actual_len); > + testcase_fail("hashed data length does not match test > vector's" > + " hashed data length.\nexpected > length=%ld, found " > + "length=%ld.", expected_len, actual_len); > } > > else if (memcmp(actual, expected, expected_len)){ > @@ -110,7 +115,7 @@ CK_RV do_DigestUpdate(struct digest_test_suite_info > *tsuite) > { > int i; > CK_BYTE data[MAX_DATA_SIZE]; > - CK_ULONG data_len; > + CK_ULONG data_len, data_done; > CK_BYTE actual[MAX_HASH_SIZE]; > CK_ULONG actual_len; > CK_BYTE expected[MAX_HASH_SIZE]; > @@ -118,9 +123,9 @@ CK_RV do_DigestUpdate(struct digest_test_suite_info > *tsuite) > CK_MECHANISM mech; > > CK_SESSION_HANDLE session; > - CK_SLOT_ID slot_id = SLOT_ID; > + CK_SLOT_ID slot_id = SLOT_ID; > CK_ULONG flags; > - CK_RV rc; > + CK_RV rc; > > /** begin test **/ > testsuite_begin("Starting %s Multipart Digest.", tsuite->name); > @@ -149,6 +154,7 @@ CK_RV do_DigestUpdate(struct digest_test_suite_info > *tsuite) > memset(expected, 0, sizeof(expected)); > > /** get test vector info **/ > + data_done = 0; > data_len = tsuite->tv[i].data_len; > expected_len = tsuite->tv[i].hash_len; > memcpy(data, tsuite->tv[i].data, data_len); > @@ -167,13 +173,16 @@ CK_RV do_DigestUpdate(struct digest_test_suite_info > *tsuite) > actual_len = sizeof(actual); > > /** do multipart digest **/ > - if (data_len > 0) { > - rc = funcs->C_DigestUpdate(session, &data[0], data_len); > + while (data_done < data_len) { > + CK_ULONG len = data_len - data_done; > + if (len >= DIGEST_UPDATE_JUNK_SIZE) > + len = DIGEST_UPDATE_JUNK_SIZE; > + rc = funcs->C_DigestUpdate(session, data + data_done, > len); > if (rc != CKR_OK) { > - testcase_error("C_DigestUpdate rc=%s", > - p11_get_ckr(rc)); > + testcase_error("C_DigestUpdate rc=%s", > p11_get_ckr(rc)); > goto testcase_cleanup; > } > + data_done += len; > } > > /** finalize multipart digest **/ > @@ -258,7 +267,7 @@ CK_RV do_SignVerify_HMAC(struct HMAC_TEST_SUITE_INFO > *tsuite){ > > /** get mechanism **/ > mech = tsuite->mech; > - > + > /* for ep11, check if key len is supported */ > key_len = tsuite->tv[i].key_len; > > @@ -416,7 +425,7 @@ CK_RV do_SignVerify_HMAC_Update(struct > HMAC_TEST_SUITE_INFO *tsuite) > > /** get mechanism **/ > mech = tsuite->mech; > - > + > /* for ep11, check if key len is supported */ > key_len = tsuite->tv[i].key_len; > > @@ -461,20 +470,20 @@ CK_RV do_SignVerify_HMAC_Update(struct > HMAC_TEST_SUITE_INFO *tsuite) > len1 = 0; > len2 = 0; > /* do in 2 parts */ > - if (data_len < 20) > + if (data_len < 20) > len1 = data_len; > else { > len1 = data_len - 20; > len2 = 20; > } > - > + > rc = funcs->C_SignUpdate(session, data, len1); > if (rc != CKR_OK) { > testcase_error("C_SignUpdate rc=%s", > p11_get_ckr(rc)); > goto error; > } > - > + > if (len2) { > rc = funcs->C_SignUpdate(session, data + len1, > len2); > @@ -516,7 +525,7 @@ CK_RV do_SignVerify_HMAC_Update(struct > HMAC_TEST_SUITE_INFO *tsuite) > goto error; > } > } > - } > + } > rc = funcs->C_VerifyFinal(session, actual, actual_len); > if (rc != CKR_OK) { > testcase_error("C_VerifyFinal rc=%s", p11_get_ckr(rc)); > @@ -601,7 +610,7 @@ CK_RV digest_funcs() { > } > } > } > - > + > return rc; > } > > diff --git a/testcases/include/regress.h b/testcases/include/regress.h > index 301aa56..0df5dea 100755 > --- a/testcases/include/regress.h > +++ b/testcases/include/regress.h > @@ -121,12 +121,14 @@ int get_user_pin(CK_BYTE_PTR); > do { \ > printf("------\n* TESTCASE %s BEGIN " _fmt "\n", \ > __func__, ## __VA_ARGS__); \ > + gettimeofday(&timev1, NULL); \ > } while (0) > > #define testcase_begin_f(_func, _fmt, ...) \ > do { \ > printf("------\n* TESTCASE %s BEGIN " _fmt "\n", \ > _func, ## __VA_ARGS__); \ > + gettimeofday(&timev1, NULL); \ > } while (0) > > #define testcase_new_assertion() \ ------------------------------------------------------------------------------ Slashdot TV. Video for Nerds. Stuff that matters. http://tv.slashdot.org/ _______________________________________________ Opencryptoki-tech mailing list Opencryptoki-tech@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opencryptoki-tech