Use DrawFrameControl instead of bitmaps in certain cases.
[wine] / dlls / advapi32 / crypt.c
1 /*
2  * dlls/advapi32/crypt.c
3  */
4 #include <time.h>
5 #include <stdlib.h>
6
7 #include "windef.h"
8 #include "winerror.h"
9 #include "wincrypt.h"
10 #include "debugtools.h"
11
12 DEFAULT_DEBUG_CHANNEL(advapi);
13
14 /******************************************************************************
15  * CryptAcquireContextA (ADVAPI32.@)
16  * Acquire a crypto provider context handle.
17  *
18  * PARAMS
19  * phProv: Pointer to HCRYPTPROV for the output.
20  * pszContainer: FIXME (unknown)
21  * pszProvider: FIXME (unknown)
22  * dwProvType: Crypto provider type to get a handle.
23  * dwFlags: flags for the operation
24  *
25  * RETURNS TRUE on success, FALSE on failure.
26  */
27 BOOL WINAPI CryptAcquireContextA (HCRYPTPROV *phProv, LPCSTR pszContainer,
28                 LPCSTR pszProvider, DWORD dwProvType, DWORD dwFlags)
29 {
30         FIXME("(%p, %s, %s, %ld, %08lx): stub!\n", phProv, pszContainer,
31                 pszProvider, dwProvType, dwFlags);
32         return FALSE;
33 }
34
35 /******************************************************************************
36  * CryptAcquireContextW (ADVAPI32.@)
37  */
38 BOOL WINAPI CryptAcquireContextW (HCRYPTPROV *phProv, LPCWSTR pszContainer,
39                 LPCWSTR pszProvider, DWORD dwProvType, DWORD dwFlags)
40 {
41         FIXME("(%p, %s, %s, %ld, %08lx): stub!\n", phProv, debugstr_w(pszContainer),
42                 debugstr_w(pszProvider), dwProvType, dwFlags);
43         return FALSE;
44 }
45
46 /******************************************************************************
47  * CryptGenRandom (ADVAPI32.@)
48  */
49 BOOL WINAPI CryptGenRandom (HCRYPTPROV hProv, DWORD dwLen, BYTE *pbBuffer)
50 {
51         DWORD i;
52
53         FIXME("(0x%lx, %ld, %p): stub!\n", hProv, dwLen, pbBuffer);
54         /*
55         FIXME: Currently this function is just a stub, it is missing functionality in
56                 the following (major) ways:
57         (1) It makes no use of the passed in HCRYPTPROV handle. (ie. it doesn't
58                 use a cryptographic service provider (CSP)
59         (2) It doesn't use the values in the passed in pbBuffer to further randomize
60                 its internal seed.
61         (3) MSDN mentions that this function produces "cryptographically random"
62                 data, which is "... far more random than the data generated by the typical
63                 random number generator such as the one shipped with your C compiler".
64                 We are currently using the C runtime rand() function. ^_^
65
66         See MSDN documentation for CryptGenRandom for more information.
67         */
68
69         if (dwLen <= 0)
70                 return FALSE;
71
72         srand(time(NULL));
73         for (i=0; i<dwLen; i++)
74         {
75                 *pbBuffer = (BYTE)(rand() % 256);
76                 pbBuffer++;
77         }
78
79         return TRUE;
80 }
81
82 /******************************************************************************
83  * CryptContextAddRef (ADVAPI32.@)
84  */
85 BOOL WINAPI CryptContextAddRef (HCRYPTPROV hProv, DWORD *pdwReserved, DWORD dwFlags)
86 {
87         FIXME("(0x%lx, %p, %08lx): stub!\n", hProv, pdwReserved, dwFlags);
88         return FALSE;
89 }
90
91 /******************************************************************************
92  * CryptCreateHash (ADVAPI32.@)
93  */
94 BOOL WINAPI CryptCreateHash (HCRYPTPROV hProv, ALG_ID Algid, HCRYPTKEY hKey,
95                 DWORD dwFlags, HCRYPTHASH *phHash)
96 {
97         FIXME("(0x%lx, 0x%x, 0x%lx, %08lx, %p): stub!\n", hProv, Algid, hKey, dwFlags, phHash);
98         return FALSE;
99 }
100
101 /******************************************************************************
102  * CryptDecrypt (ADVAPI32.@)
103  */
104 BOOL WINAPI CryptDecrypt (HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final,
105                 DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen)
106 {
107         FIXME("(0x%lx, 0x%lx, %d, %08lx, %p, %p): stub!\n", hKey, hHash, Final, dwFlags, pbData, pdwDataLen);
108         return FALSE;
109 }
110
111 /******************************************************************************
112  * CryptDeriveKey (ADVAPI32.@)
113  */
114 BOOL WINAPI CryptDeriveKey (HCRYPTPROV hProv, ALG_ID Algid, HCRYPTHASH hBaseData,
115                 DWORD dwFlags, HCRYPTKEY *phKey)
116 {
117         FIXME("(0x%lx, %d, 0x%ld, %08ld, %p): stub!\n", hProv, Algid, hBaseData, dwFlags, phKey);
118         return FALSE;
119 }
120
121 /******************************************************************************
122  * CryptDestroyHash (ADVAPI32.@)
123  */
124 BOOL WINAPI CryptDestroyHash (HCRYPTHASH hHash)
125 {
126         FIXME("(0x%lx): stub!\n", hHash);
127         return FALSE;
128 }
129
130 /******************************************************************************
131  *  CryptDestroyKey (ADVAPI32.@)
132  */
133 BOOL WINAPI CryptDestroyKey (HCRYPTKEY hKey)
134 {
135         FIXME("(0x%lx): stub!\n", hKey);
136         return FALSE;
137 }
138
139 /******************************************************************************
140  * CryptDuplicateHash (ADVAPI32.@)
141  */
142 BOOL WINAPI CryptDuplicateHash (HCRYPTHASH hHash, DWORD *pdwReserved,
143                 DWORD dwFlags, HCRYPTHASH *phHash)
144 {
145         FIXME("(0x%lx, %p, %08ld, %p): stub!\n", hHash, pdwReserved, dwFlags, phHash);
146         return FALSE;
147 }
148
149 /******************************************************************************
150  * CryptDuplicateKey (ADVAPI32.@)
151  */
152 BOOL WINAPI CryptDuplicateKey (HCRYPTKEY hKey, DWORD *pdwReserved, DWORD dwFlags, HCRYPTKEY *phKey)
153 {
154         FIXME("(0x%lx, %p, %08ld, %p): stub!\n", hKey, pdwReserved, dwFlags, phKey);
155         return FALSE;
156 }
157
158 /******************************************************************************
159  * CryptEncrypt (ADVAPI32.@)
160  */
161 BOOL WINAPI CryptEncrypt (HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final,
162                 DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen, DWORD dwBufLen)
163 {
164         FIXME("(0x%lx, 0x%lx, %d, %08ld, %p, %p, %ld): stub!\n", hKey, hHash, Final, dwFlags, pbData, pdwDataLen, dwBufLen);
165         return FALSE;
166 }
167
168 /******************************************************************************
169  * CryptEnumProvidersA (ADVAPI32.@)
170  */
171 BOOL WINAPI CryptEnumProvidersA (DWORD dwIndex, DWORD *pdwReserved,
172                 DWORD dwFlags, DWORD *pdwProvType, LPSTR pszProvName, DWORD *pcbProvName)
173 {
174         FIXME("(%ld, %p, %ld, %p, %p, %p): stub!\n", dwIndex, pdwReserved, dwFlags,
175                         pdwProvType, pszProvName, pcbProvName);
176         return FALSE;
177 }
178
179 /******************************************************************************
180  * CryptEnumProvidersW (ADVAPI32.@)
181  */
182 BOOL WINAPI CryptEnumProvidersW (DWORD dwIndex, DWORD *pdwReserved,
183                 DWORD dwFlags, DWORD *pdwProvType, LPWSTR pszProvName, DWORD *pcbProvName)
184 {
185         FIXME("(%ld, %p, %08ld, %p, %p, %p): stub!\n", dwIndex, pdwReserved, dwFlags,
186                         pdwProvType, pszProvName, pcbProvName);
187         return FALSE;
188 }
189
190 /******************************************************************************
191  * CryptEnumProviderTypesA (ADVAPI32.@)
192  */
193 BOOL WINAPI CryptEnumProviderTypesA (DWORD dwIndex, DWORD *pdwReserved,
194                 DWORD dwFlags, DWORD *pdwProvType, LPSTR pszTypeName, DWORD *pcbTypeName)
195 {
196         FIXME("(%ld, %p, %08ld, %p, %p, %p): stub!\n", dwIndex, pdwReserved, dwFlags, pdwProvType, pszTypeName, pcbTypeName);
197         return FALSE;
198 }
199
200 /******************************************************************************
201  * CryptEnumProviderTypesW (ADVAPI32.@)
202  */
203 BOOL WINAPI CryptEnumProviderTypesW (DWORD dwIndex, DWORD *pdwReserved,
204                 DWORD dwFlags, DWORD *pdwProvType, LPWSTR pszTypeName, DWORD *pcbTypeName)
205 {
206         FIXME("(%ld, %p, %08ld, %p, %p, %p): stub!\n", dwIndex, pdwReserved, dwFlags,
207                         pdwProvType, pszTypeName, pcbTypeName);
208         return FALSE;
209 }
210
211 /******************************************************************************
212  * CryptExportKey (ADVAPI32.@)
213  */
214 BOOL WINAPI CryptExportKey (HCRYPTKEY hKey, HCRYPTKEY hExpKey, DWORD dwBlobType,
215                 DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen)
216 {
217         FIXME("(0x%lx, 0x%lx, %ld, %08ld, %p, %p): stub!\n", hKey, hExpKey, dwBlobType, dwFlags, pbData, pdwDataLen);
218         return FALSE;
219 }
220
221 /******************************************************************************
222  * CryptGenKey (ADVAPI32.@)
223  */
224 BOOL WINAPI CryptGenKey (HCRYPTPROV hProv, ALG_ID Algid, DWORD dwFlags, HCRYPTKEY *phKey)
225 {
226         FIXME("(0x%lx, %d, %08ld, %p): stub!\n", hProv, Algid, dwFlags, phKey);
227         return FALSE;
228 }
229
230 /******************************************************************************
231  * CryptGetDefaultProviderA (ADVAPI32.@)
232  */
233 BOOL WINAPI CryptGetDefaultProviderA (DWORD dwProvType, DWORD *pdwReserved,
234                 DWORD dwFlags, LPSTR pszProvName, DWORD *pcbProvName)
235 {
236         FIXME("(%ld, %p, %ld, %p, %p): stub!\n", dwProvType, pdwReserved, dwFlags, pszProvName, pcbProvName);
237         return FALSE;
238 }
239
240 /******************************************************************************
241  * CryptGetDefaultProviderW (ADVAPI32.@)
242  */
243 BOOL WINAPI CryptGetDefaultProviderW (DWORD dwProvType, DWORD *pdwReserved,
244                 DWORD dwFlags, LPWSTR pszProvName, DWORD *pcbProvName)
245 {
246         FIXME("(%ld, %p, %08ld, %p, %p): stub!\n", dwProvType, pdwReserved, dwFlags, pszProvName, pcbProvName);
247         return FALSE;
248 }
249
250 /******************************************************************************
251  * CryptGetHashParam (ADVAPI32.@)
252  */
253 BOOL WINAPI CryptGetHashParam (HCRYPTHASH hHash, DWORD dwParam, BYTE *pbData,
254                 DWORD *pdwDataLen, DWORD dwFlags)
255 {
256         FIXME("(0x%lx, %ld, %p, %p, %08ld): stub!\n", hHash, dwParam, pbData, pdwDataLen, dwFlags);
257         return FALSE;
258 }
259
260 /******************************************************************************
261  * CryptGetKeyParam (ADVAPI32.@)
262  */
263 BOOL WINAPI CryptGetKeyParam (HCRYPTKEY hKey, DWORD dwParam, BYTE *pbData,
264                 DWORD *pdwDataLen, DWORD dwFlags)
265 {
266         FIXME("(0x%lx, %ld, %p, %p, %08ld): stub!\n", hKey, dwParam, pbData, pdwDataLen, dwFlags);
267         return FALSE;
268 }
269
270 /******************************************************************************
271  * CryptGetProvParam (ADVAPI32.@)
272  */
273 BOOL WINAPI CryptGetProvParam (HCRYPTPROV hProv, DWORD dwParam, BYTE *pbData,
274                 DWORD *pdwDataLen, DWORD dwFlags)
275 {
276         FIXME("(0x%lx, %ld, %p, %p, %08ld): stub!\n", hProv, dwParam, pbData, pdwDataLen, dwFlags);
277         return FALSE;
278 }
279
280 /******************************************************************************
281  * CryptGetUserKey (ADVAPI32.@)
282  */
283 BOOL WINAPI CryptGetUserKey (HCRYPTPROV hProv, DWORD dwKeySpec, HCRYPTKEY *phUserKey)
284 {
285         FIXME("(0x%lx, %ld, %p): stub!\n", hProv, dwKeySpec, phUserKey);
286         return FALSE;
287 }
288
289 /******************************************************************************
290  * CryptHashData (ADVAPI32.@)
291  */
292 BOOL WINAPI CryptHashData (HCRYPTHASH hHash, BYTE *pbData, DWORD dwDataLen, DWORD dwFlags)
293 {
294         FIXME("(0x%lx, %p, %ld, %08ld): stub!\n", hHash, pbData, dwDataLen, dwFlags);
295         return FALSE;
296 }
297
298 /******************************************************************************
299  * CryptHashSessionKey (ADVAPI32.@)
300  */
301 BOOL WINAPI CryptHashSessionKey (HCRYPTHASH hHash, HCRYPTKEY hKey, DWORD dwFlags)
302 {
303         FIXME("(0x%lx, 0x%lx, %08ld): stub!\n", hHash, hKey, dwFlags);
304         return FALSE;
305 }
306
307 /******************************************************************************
308  * CryptImportKey (ADVAPI32.@)
309  */
310 BOOL WINAPI CryptImportKey (HCRYPTPROV hProv, BYTE *pbData, DWORD dwDataLen,
311                 HCRYPTKEY hPubKey, DWORD dwFlags, HCRYPTKEY *phKey)
312 {
313         FIXME("(0x%lx, %p, %ld, 0x%lx, %08ld, %p): stub!\n", hProv, pbData, dwDataLen, hPubKey, dwFlags, phKey);
314         return FALSE;
315 }
316
317 /******************************************************************************
318  * CryptReleaseContext (ADVAPI32.@)
319  */
320 BOOL WINAPI CryptReleaseContext (HCRYPTPROV hProv, DWORD dwFlags)
321 {
322         FIXME("(0x%lx, %08ld): stub!\n", hProv, dwFlags);
323         return FALSE;
324 }
325
326 /******************************************************************************
327  * CryptSignHashA (ADVAPI32.@)
328  */
329 BOOL WINAPI CryptSignHashA (HCRYPTHASH hHash, DWORD dwKeySpec, LPCSTR sDescription,
330                 DWORD dwFlags, BYTE *pbSignature, DWORD *pdwSigLen)
331 {
332         FIXME("(0x%lx, %ld, %s, %08ld, %p, %p): stub!\n", hHash, dwKeySpec, sDescription, dwFlags, pbSignature, pdwSigLen);
333         return FALSE;
334 }
335
336 /******************************************************************************
337  * CryptSignHashW (ADVAPI32.@)
338  */
339 BOOL WINAPI CryptSignHashW (HCRYPTHASH hHash, DWORD dwKeySpec, LPCWSTR sDescription,
340                 DWORD dwFlags, BYTE *pbSignature, DWORD *pdwSigLen)
341 {
342         FIXME("(0x%lx, %ld, %s, %08ld, %p, %p): stub!\n", hHash, dwKeySpec, debugstr_w(sDescription), dwFlags, pbSignature, pdwSigLen);
343         return FALSE;
344 }
345
346 /******************************************************************************
347  * CryptSetHashParam (ADVAPI32.@)
348  */
349 BOOL WINAPI CryptSetHashParam (HCRYPTHASH hHash, DWORD dwParam, BYTE *pbData, DWORD dwFlags)
350 {
351         FIXME("(0x%lx, %ld, %p, %08ld): stub!\n", hHash, dwParam, pbData, dwFlags);
352         return FALSE;
353 }
354
355 /******************************************************************************
356  * CryptSetKeyParam (ADVAPI32.@)
357  */
358 BOOL WINAPI CryptSetKeyParam (HCRYPTKEY hKey, DWORD dwParam, BYTE *pbData, DWORD dwFlags)
359 {
360         FIXME("(%lx, %lx, %p, %lx): stub!\n", hKey, dwParam, pbData, dwFlags);
361         return FALSE;
362 }
363
364 /******************************************************************************
365  * CryptSetProviderA (ADVAPI32.@)
366  */
367 BOOL WINAPI CryptSetProviderA (LPCSTR pszProvName, DWORD dwProvType)
368 {
369         FIXME("(%s, %ld): stub!\n", pszProvName, dwProvType);
370         return FALSE;
371 }
372
373 /******************************************************************************
374  * CryptSetProviderW (ADVAPI32.@)
375  */
376 BOOL WINAPI CryptSetProviderW (LPCWSTR pszProvName, DWORD dwProvType)
377 {
378         FIXME("(%s, %ld): stub!\n", debugstr_w(pszProvName), dwProvType);
379         return FALSE;
380 }
381
382 /******************************************************************************
383  * CryptSetProviderExA (ADVAPI32.@)
384  */
385 BOOL WINAPI CryptSetProviderExA (LPCSTR pszProvName, DWORD dwProvType, DWORD *pdwReserved, DWORD dwFlags)
386 {
387         FIXME("(%s, %ld, %p, %08ld): stub!\n", pszProvName, dwProvType, pdwReserved, dwFlags);
388         return FALSE;
389 }
390
391 /******************************************************************************
392  * CryptSetProviderExW (ADVAPI32.@)
393  */
394 BOOL WINAPI CryptSetProviderExW (LPCWSTR pszProvName, DWORD dwProvType, DWORD *pdwReserved, DWORD dwFlags)
395 {
396         FIXME("(%s, %ld, %p, %08ld): stub!\n", debugstr_w(pszProvName), dwProvType, pdwReserved, dwFlags);
397         return FALSE;
398 }
399
400 /******************************************************************************
401  * CryptSetProvParam (ADVAPI32.@)
402  */
403 BOOL WINAPI CryptSetProvParam (HCRYPTPROV hProv, DWORD dwParam, BYTE *pbData, DWORD dwFlags)
404 {
405         FIXME("(0x%lx, %ld, %p, %08ld): stub!\n", hProv, dwParam, pbData, dwFlags);
406         return FALSE;
407 }
408
409 /******************************************************************************
410  * CryptVerifySignatureA (ADVAPI32.@)
411  */
412 BOOL WINAPI CryptVerifySignatureA (HCRYPTHASH hHash, BYTE *pbSignature, DWORD dwSigLen,
413                 HCRYPTKEY hPubKey, LPCSTR sDescription, DWORD dwFlags)
414 {
415         FIXME("(0x%lx, %p, %ld, 0x%lx, %s, %08ld): stub!\n", hHash, pbSignature,
416                         dwSigLen, hPubKey, sDescription, dwFlags);
417         return FALSE;
418 }
419
420 /******************************************************************************
421  * CryptVerifySignatureW (ADVAPI32.@)
422  */
423 BOOL WINAPI CryptVerifySignatureW (HCRYPTHASH hHash, BYTE *pbSignature, DWORD dwSigLen,
424                 HCRYPTKEY hPubKey, LPCWSTR sDescription, DWORD dwFlags)
425 {
426         FIXME("(0x%lx, %p, %ld, 0x%lx, %s, %08ld): stub!\n", hHash, pbSignature,
427                         dwSigLen, hPubKey, debugstr_w(sDescription), dwFlags);
428         return FALSE;
429 }