[ADVAPI32_APITEST]
authorTimo Kreuzer <timo.kreuzer@reactos.org>
Mon, 15 Sep 2014 21:04:03 +0000 (21:04 +0000)
committerTimo Kreuzer <timo.kreuzer@reactos.org>
Mon, 15 Sep 2014 21:04:03 +0000 (21:04 +0000)
- Add tests for RtlEncrypt/DecryptMemory

svn path=/trunk/; revision=64162

rostests/apitests/advapi32/CMakeLists.txt
rostests/apitests/advapi32/RtlEncryptMemory.c [new file with mode: 0644]
rostests/apitests/advapi32/testlist.c

index d28d651..aa2ee13 100644 (file)
@@ -3,6 +3,7 @@ list(APPEND SOURCE
     CreateService.c
     LockDatabase.c
     QueryServiceConfig2.c
     CreateService.c
     LockDatabase.c
     QueryServiceConfig2.c
+    RtlEncryptMemory.c
     SaferIdentifyLevel.c
     testlist.c)
 
     SaferIdentifyLevel.c
     testlist.c)
 
diff --git a/rostests/apitests/advapi32/RtlEncryptMemory.c b/rostests/apitests/advapi32/RtlEncryptMemory.c
new file mode 100644 (file)
index 0000000..da53e04
--- /dev/null
@@ -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 <timo.kreuzer@reactos.org>
+ */
+
+#include <apitest.h>
+
+#define WIN32_NO_STATUS
+#include <windows.h>
+#include <ndk/ntndk.h>
+#include <winsafer.h>
+#include <Ntsecapi.h>
+
+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);
+
+}
index 2d86976..803f046 100644 (file)
@@ -6,6 +6,7 @@
 extern void func_CreateService(void);
 extern void func_LockDatabase(void);
 extern void func_QueryServiceConfig2(void);
 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[] =
 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 },
     { "CreateService", func_CreateService },
     { "LockDatabase" , func_LockDatabase },
     { "QueryServiceConfig2", func_QueryServiceConfig2 },
+    { "RtlEncryptMemory", func_RtlEncryptMemory },
     { "SaferIdentifyLevel", func_SaferIdentifyLevel },
 
     { 0, 0 }
     { "SaferIdentifyLevel", func_SaferIdentifyLevel },
 
     { 0, 0 }