diff --git a/rostests/apitests/advapi32/CMakeLists.txt b/rostests/apitests/advapi32/CMakeLists.txt index d28d6517881..aa2ee135f36 100644 --- a/rostests/apitests/advapi32/CMakeLists.txt +++ b/rostests/apitests/advapi32/CMakeLists.txt @@ -3,6 +3,7 @@ list(APPEND SOURCE CreateService.c LockDatabase.c QueryServiceConfig2.c + RtlEncryptMemory.c SaferIdentifyLevel.c testlist.c) diff --git a/rostests/apitests/advapi32/RtlEncryptMemory.c b/rostests/apitests/advapi32/RtlEncryptMemory.c new file mode 100644 index 00000000000..da53e041b44 --- /dev/null +++ b/rostests/apitests/advapi32/RtlEncryptMemory.c @@ -0,0 +1,38 @@ +/* + * PROJECT: ReactOS api tests + * LICENSE: GPLv2+ - See COPYING in the top level directory + * PURPOSE: Test for RtlEncrypt/DecryptMemory + * PROGRAMMER: Timo Kreuzer + */ + +#include + +#define WIN32_NO_STATUS +#include +#include +#include +#include + +START_TEST(RtlEncryptMemory) +{ + static const CHAR const TestData[32] = "This is some test Message!!!"; + CHAR Buffer[32]; + NTSTATUS Status; + + /* Size must be aligned to 8 bytes */ + Status = RtlEncryptMemory(Buffer, 7, RTL_ENCRYPT_OPTION_SAME_PROCESS); + ok_ntstatus(Status, STATUS_INVALID_PARAMETER); + + /* Buffer must not be aligned to 8 bytes */ + Status = RtlEncryptMemory(&Buffer[1], 8, RTL_ENCRYPT_OPTION_SAME_PROCESS); + ok_ntstatus(Status, STATUS_SUCCESS); + + RtlCopyMemory(Buffer, TestData, sizeof(Buffer)); + Status = RtlEncryptMemory(Buffer, sizeof(Buffer), RTL_ENCRYPT_OPTION_SAME_PROCESS); + ok_ntstatus(Status, STATUS_SUCCESS); + ok_int(RtlEqualMemory(Buffer, TestData, sizeof(Buffer)), 0); + Status = RtlDecryptMemory(Buffer, sizeof(Buffer), RTL_ENCRYPT_OPTION_SAME_PROCESS); + ok_ntstatus(Status, STATUS_SUCCESS); + ok_int(RtlEqualMemory(Buffer, TestData, sizeof(Buffer)), 1); + +} diff --git a/rostests/apitests/advapi32/testlist.c b/rostests/apitests/advapi32/testlist.c index 2d8697627d6..803f046676a 100644 --- a/rostests/apitests/advapi32/testlist.c +++ b/rostests/apitests/advapi32/testlist.c @@ -6,6 +6,7 @@ extern void func_CreateService(void); extern void func_LockDatabase(void); extern void func_QueryServiceConfig2(void); +extern void func_RtlEncryptMemory(void); extern void func_SaferIdentifyLevel(void); const struct test winetest_testlist[] = @@ -13,6 +14,7 @@ const struct test winetest_testlist[] = { "CreateService", func_CreateService }, { "LockDatabase" , func_LockDatabase }, { "QueryServiceConfig2", func_QueryServiceConfig2 }, + { "RtlEncryptMemory", func_RtlEncryptMemory }, { "SaferIdentifyLevel", func_SaferIdentifyLevel }, { 0, 0 }