[INTRIN]
[reactos.git] / reactos / dll / win32 / advapi32 / misc / efs.c
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS system libraries
4 * FILE: dlls/win32/advapi32/misc/efs.c
5 * PURPOSE: Encrypted File System support
6 * PROGRAMMER: Christoph_vW
7 */
8
9 #include <advapi32.h>
10
11 #include <winefs.h>
12
13 WINE_DEFAULT_DEBUG_CHANNEL(advapi);
14
15 /*
16 * @unimplemented
17 */
18 DWORD WINAPI
19 AddUsersToEncryptedFile(LPCWSTR lpcwstr,
20 PENCRYPTION_CERTIFICATE_LIST pencryption_certificate_list)
21 {
22 FIXME("%s() not implemented!\n", __FUNCTION__);
23 return ERROR_CALL_NOT_IMPLEMENTED;
24 }
25
26
27 /*
28 * @implemented
29 */
30 BOOL WINAPI
31 DecryptFileA(LPCSTR lpFileName,
32 DWORD dwReserved)
33 {
34 UNICODE_STRING FileName;
35 BOOL ret;
36
37 if (!RtlCreateUnicodeStringFromAsciiz(&FileName, lpFileName))
38 {
39 SetLastError(ERROR_NOT_ENOUGH_MEMORY);
40 return FALSE;
41 }
42
43 ret = DecryptFileW(FileName.Buffer, dwReserved);
44
45 if (FileName.Buffer != NULL)
46 RtlFreeUnicodeString(&FileName);
47 return ret;
48 }
49
50
51 /*
52 * @unimplemented
53 */
54 BOOL WINAPI
55 DecryptFileW(LPCWSTR lpFileName,
56 DWORD dwReserved)
57 {
58 FIXME("%s(%S) not implemented!\n", __FUNCTION__, lpFileName);
59 return TRUE;
60 }
61
62
63 /*
64 * @implemented
65 */
66 BOOL WINAPI
67 EncryptFileA(LPCSTR lpFileName)
68 {
69 UNICODE_STRING FileName;
70 BOOL ret;
71
72 if (!RtlCreateUnicodeStringFromAsciiz(&FileName, lpFileName))
73 {
74 SetLastError(ERROR_NOT_ENOUGH_MEMORY);
75 return FALSE;
76 }
77
78 ret = EncryptFileW(FileName.Buffer);
79
80 if (FileName.Buffer != NULL)
81 RtlFreeUnicodeString(&FileName);
82 return ret;
83 }
84
85
86 /*
87 * @unimplemented
88 */
89 BOOL WINAPI
90 EncryptFileW(LPCWSTR lpFileName)
91 {
92 FIXME("%s() not implemented!\n", __FUNCTION__);
93 return TRUE;
94 }
95
96
97 /*
98 * @unimplemented
99 */
100 BOOL WINAPI
101 EncryptionDisable(LPCWSTR DirPath,
102 BOOL Disable)
103 {
104 FIXME("%s() not implemented!\n", __FUNCTION__);
105 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
106 return FALSE;
107 }
108
109
110 /*
111 * @implemented
112 */
113 BOOL WINAPI
114 FileEncryptionStatusA(LPCSTR lpFileName,
115 LPDWORD lpStatus)
116 {
117 UNICODE_STRING FileName;
118 BOOL ret = FALSE;
119
120 TRACE("(%s, %p)\n", lpFileName, lpStatus);
121
122 FileName.Buffer = NULL;
123
124 if (!RtlCreateUnicodeStringFromAsciiz(&FileName, lpFileName))
125 {
126 SetLastError(ERROR_NOT_ENOUGH_MEMORY);
127 goto cleanup;
128 }
129
130 ret = FileEncryptionStatusW(FileName.Buffer, lpStatus);
131
132 cleanup:
133 if (FileName.Buffer != NULL)
134 RtlFreeUnicodeString(&FileName);
135
136 return ret;
137 }
138
139 /*
140 * @unimplemented
141 */
142 BOOL WINAPI
143 FileEncryptionStatusW(LPCWSTR lpFileName,
144 LPDWORD lpStatus)
145 {
146 FIXME("%s(%S) not implemented!\n", __FUNCTION__, lpFileName);
147
148 if (!lpStatus)
149 return FALSE;
150
151 *lpStatus = FILE_SYSTEM_NOT_SUPPORT;
152
153 return TRUE;
154 }
155
156
157 /*
158 * @unimplemented
159 */
160 VOID WINAPI
161 FreeEncryptionCertificateHashList(PENCRYPTION_CERTIFICATE_HASH_LIST pencryption_certificate_hash_list)
162 {
163 FIXME("%s() not implemented!\n", __FUNCTION__);
164 return;
165 }
166
167
168 /*
169 * @unimplemented
170 */
171 DWORD WINAPI
172 QueryRecoveryAgentsOnEncryptedFile(LPCWSTR lpctstr,
173 PENCRYPTION_CERTIFICATE_HASH_LIST* pencryption_certificate_hash_list)
174 {
175 FIXME("%s() not implemented!\n", __FUNCTION__);
176 return ERROR_CALL_NOT_IMPLEMENTED;
177 }
178
179
180 /*
181 * @unimplemented
182 */
183 DWORD WINAPI
184 QueryUsersOnEncryptedFile(LPCWSTR lpctstr,
185 PENCRYPTION_CERTIFICATE_HASH_LIST* pencryption_certificate_hash_list)
186 {
187 FIXME("%s() not implemented!\n", __FUNCTION__);
188 return ERROR_CALL_NOT_IMPLEMENTED;
189 }
190
191
192 /*
193 * @unimplemented
194 */
195 DWORD WINAPI
196 RemoveUsersFromEncryptedFile(LPCWSTR lpcwstr,
197 PENCRYPTION_CERTIFICATE_HASH_LIST pencryption_certificate_hash_list)
198 {
199 FIXME("%s() not implemented!\n", __FUNCTION__);
200 return ERROR_CALL_NOT_IMPLEMENTED;
201 }
202
203 /* EOF */