Module: wine Branch: master Commit: fc90d2bd451768e15948d49c0488f1f64ae640c9 URL: http://source.winehq.org/git/wine.git/?a=commit;h=fc90d2bd451768e15948d49c04...
Author: Vijay Kiran Kamuju infyquest@gmail.com Date: Thu Nov 15 13:29:18 2007 -0600
rsaenh: Add a few more tests which check the decryption strings.
---
dlls/rsaenh/tests/rsaenh.c | 93 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 93 insertions(+), 0 deletions(-)
diff --git a/dlls/rsaenh/tests/rsaenh.c b/dlls/rsaenh/tests/rsaenh.c index 076467e..d221647 100644 --- a/dlls/rsaenh/tests/rsaenh.c +++ b/dlls/rsaenh/tests/rsaenh.c @@ -31,6 +31,38 @@ static const char szContainer[] = "winetest"; static const unsigned char pbData[] = "Wine rocks totally!"; static const char szProvider[] = MS_ENHANCED_PROV_A;
+typedef struct _ctdatatype { + unsigned char origstr[32]; + unsigned char decstr[32]; + int strlen; + int enclen; + int buflen; +} cryptdata; + +static const cryptdata cTestData[4] = { + {"abcdefghijkl", + {'a','b','c','d','e','f','g','h',0x2,0x2,'k','l',0}, + 12,8,16}, + {"abcdefghij", + {'a','b','c','d','e','f','g','h',0x2,0x2,0}, + 10,8,16}, + {"abcdefgh", + {'a','b','c','d','e','f','g','h',0}, + 8,8,16}, + {"abcdefghijkl", + {'a','b','c','d','e','f','g','h','i','j','k','l',0}, + 12,12,16} +}; + +static void printBytes(const char *heading, BYTE *pb, size_t cb) +{ + size_t i; + printf("%s: ",heading); + for(i=0;i<cb;i++) + printf("0x%02x,",pb[i]); + putchar('\n'); +} + static BOOL (WINAPI *pCryptDuplicateHash) (HCRYPTHASH, DWORD*, DWORD, HCRYPTHASH*);
/* @@ -424,6 +456,26 @@ static void test_3des112(void) result = CryptDecrypt(hKey, (HCRYPTHASH)NULL, TRUE, 0, pbData, &dwLen); ok(result, "%08x\n", GetLastError());
+ for (i=0; i<4; i++) + { + memcpy(pbData,cTestData[i].origstr,cTestData[i].strlen); + + dwLen = cTestData[i].enclen; + result = CryptEncrypt(hKey, (HCRYPTHASH)NULL, TRUE, 0, pbData, &dwLen, cTestData[i].buflen); + ok(result, "%08x\n", GetLastError()); + ok(dwLen==cTestData[i].buflen,"length incorrect, got %d, expected %d\n",dwLen,cTestData[i].buflen); + + result = CryptDecrypt(hKey, (HCRYPTHASH)NULL, TRUE, 0, pbData, &dwLen); + ok(result, "%08x\n", GetLastError()); + ok(dwLen==cTestData[i].enclen,"length incorrect, got %d, expected %d\n",dwLen,cTestData[i].enclen); + ok(memcmp(pbData,cTestData[i].decstr,cTestData[1].enclen)==0,"decryption incorrect %d\n",i); + if((dwLen != cTestData[i].enclen) || + memcmp(pbData,cTestData[i].decstr,cTestData[i].enclen)) + { + printBytes("expected",cTestData[i].decstr,cTestData[i].strlen); + printBytes("got",pbData,dwLen); + } + } result = CryptDestroyKey(hKey); ok(result, "%08x\n", GetLastError()); } @@ -460,6 +512,27 @@ static void test_des(void) result = CryptDecrypt(hKey, (HCRYPTHASH)NULL, TRUE, 0, pbData, &dwLen); ok(result, "%08x\n", GetLastError());
+ for (i=0; i<4; i++) + { + memcpy(pbData,cTestData[i].origstr,cTestData[i].strlen); + + dwLen = cTestData[i].enclen; + result = CryptEncrypt(hKey, (HCRYPTHASH)NULL, TRUE, 0, pbData, &dwLen, cTestData[i].buflen); + ok(result, "%08x\n", GetLastError()); + ok(dwLen==cTestData[i].buflen,"length incorrect, got %d, expected %d\n",dwLen,cTestData[i].buflen); + + result = CryptDecrypt(hKey, (HCRYPTHASH)NULL, TRUE, 0, pbData, &dwLen); + ok(result, "%08x\n", GetLastError()); + ok(dwLen==cTestData[i].enclen,"length incorrect, got %d, expected %d\n",dwLen,cTestData[i].enclen); + ok(memcmp(pbData,cTestData[i].decstr,cTestData[i].enclen)==0,"decryption incorrect %d\n",i); + if((dwLen != cTestData[i].enclen) || + memcmp(pbData,cTestData[i].decstr,cTestData[i].enclen)) + { + printBytes("expected",cTestData[i].decstr,cTestData[i].strlen); + printBytes("got",pbData,dwLen); + } + } + result = CryptDestroyKey(hKey); ok(result, "%08x\n", GetLastError()); } @@ -489,6 +562,26 @@ static void test_3des(void) result = CryptDecrypt(hKey, (HCRYPTHASH)NULL, TRUE, 0, pbData, &dwLen); ok(result, "%08x\n", GetLastError());
+ for (i=0; i<4; i++) + { + memcpy(pbData,cTestData[i].origstr,cTestData[i].strlen); + + dwLen = cTestData[i].enclen; + result = CryptEncrypt(hKey, (HCRYPTHASH)NULL, TRUE, 0, pbData, &dwLen, cTestData[i].buflen); + ok(result, "%08x\n", GetLastError()); + ok(dwLen==cTestData[i].buflen,"length incorrect, got %d, expected %d\n",dwLen,cTestData[i].buflen); + + result = CryptDecrypt(hKey, (HCRYPTHASH)NULL, TRUE, 0, pbData, &dwLen); + ok(result, "%08x\n", GetLastError()); + ok(dwLen==cTestData[i].enclen,"length incorrect, got %d, expected %d\n",dwLen,cTestData[i].enclen); + ok(memcmp(pbData,cTestData[i].decstr,cTestData[i].enclen)==0,"decryption incorrect %d\n",i); + if((dwLen != cTestData[i].enclen) || + memcmp(pbData,cTestData[i].decstr,cTestData[i].enclen)) + { + printBytes("expected",cTestData[i].decstr,cTestData[i].strlen); + printBytes("got",pbData,dwLen); + } + } result = CryptDestroyKey(hKey); ok(result, "%08x\n", GetLastError()); }