crypt32/tests: CryptUnprotectData: test zero-length payload.

This commit is contained in:
Dan Kegel 2009-10-27 18:40:31 -07:00 committed by Alexandre Julliard
parent d7edf0162d
commit 5e25a23409
1 changed files with 30 additions and 0 deletions

View File

@ -213,6 +213,34 @@ static void test_cryptunprotectdata(void)
plain.cbData=0; plain.cbData=0;
} }
static void test_simpleroundtrip(const char *plaintext, int wine_fails)
{
DATA_BLOB input;
DATA_BLOB encrypted;
DATA_BLOB output;
int res;
WCHAR emptyW[1];
emptyW[0] = 0;
input.pbData = (unsigned char *)plaintext;
input.cbData = strlen(plaintext);
res = pCryptProtectData(&input, emptyW, NULL, NULL, NULL, 0, &encrypted);
ok(res != 0, "can't protect\n");
res = pCryptUnprotectData(&encrypted, NULL, NULL, NULL, NULL, 0, &output);
if (wine_fails) {
todo_wine
ok(res != 0, "can't unprotect; last error %u\n", GetLastError());
} else {
ok(res != 0, "can't unprotect; last error %u\n", GetLastError());
}
if (res) {
ok(output.cbData == strlen(plaintext), "output wrong length %d for input '%s', wanted %d\n", output.cbData, plaintext, strlen(plaintext));
ok(!memcmp(plaintext, (char *)output.pbData, output.cbData), "output wrong contents for input '%s'\n", plaintext);
}
}
START_TEST(protectdata) START_TEST(protectdata)
{ {
HMODULE hCrypt32 = GetModuleHandleA("crypt32.dll"); HMODULE hCrypt32 = GetModuleHandleA("crypt32.dll");
@ -228,6 +256,8 @@ START_TEST(protectdata)
protected=FALSE; protected=FALSE;
test_cryptprotectdata(); test_cryptprotectdata();
test_cryptunprotectdata(); test_cryptunprotectdata();
test_simpleroundtrip("", 1);
test_simpleroundtrip("hello", 0);
/* deinit globals here */ /* deinit globals here */
if (cipher.pbData) LocalFree(cipher.pbData); if (cipher.pbData) LocalFree(cipher.pbData);