Various cosmetic changes.
[wine] / dlls / advapi32 / crypt.h
1 /*
2  * Driver routines
3  *
4  * Copyright 2001 - Travis Michielsen
5  */
6
7 #ifndef __WINE_CRYPT_H
8 #define __WINE_CRYPT_H
9
10 #include "wincrypt.h"
11
12 typedef struct tagPROVFUNCS
13 {
14         BOOL (*pCPAcquireContext)(HCRYPTPROV *phProv, LPSTR pszContainer, DWORD dwFlags, PVTableProvStruc pVTable);
15         BOOL (*pCPCreateHash)(HCRYPTPROV hProv, ALG_ID Algid, HCRYPTKEY hKey, DWORD dwFlags, HCRYPTHASH *phHash);
16         BOOL (*pCPDecrypt)(HCRYPTPROV hProv, HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final, DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen);
17         BOOL (*pCPDeriveKey)(HCRYPTPROV hProv, ALG_ID     Algid, HCRYPTHASH hBaseData, DWORD dwFlags, HCRYPTKEY *phKey);
18         BOOL (*pCPDestroyHash)(HCRYPTPROV hProv, HCRYPTHASH hHash);
19         BOOL (*pCPDestroyKey)(HCRYPTPROV hProv, HCRYPTKEY hKey);
20         BOOL (*pCPDuplicateHash)(HCRYPTPROV hUID, HCRYPTHASH hHash, DWORD *pdwReserved, DWORD dwFlags, HCRYPTHASH *phHash);
21         BOOL (*pCPDuplicateKey)(HCRYPTPROV hUID, HCRYPTKEY hKey, DWORD *pdwReserved, DWORD dwFlags, HCRYPTKEY *phKey);
22         BOOL (*pCPEncrypt)(HCRYPTPROV hProv, HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final, DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen, DWORD dwBufLen);
23         BOOL (*pCPExportKey)(HCRYPTPROV hProv, HCRYPTKEY hKey, HCRYPTKEY hPubKey, DWORD dwBlobType, DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen);
24         BOOL (*pCPGenKey)(HCRYPTPROV hProv, ALG_ID Algid, DWORD dwFlags, HCRYPTKEY *phKey);
25         BOOL (*pCPGenRandom)(HCRYPTPROV hProv, DWORD dwLen, BYTE *pbBuffer);
26         BOOL (*pCPGetHashParam)(HCRYPTPROV hProv, HCRYPTHASH hHash, DWORD dwParam, BYTE *pbData, DWORD *pdwDataLen, DWORD dwFlags);
27         BOOL (*pCPGetKeyParam)(HCRYPTPROV hProv, HCRYPTKEY hKey, DWORD dwParam, BYTE *pbData, DWORD *pdwDataLen, DWORD dwFlags);
28         BOOL (*pCPGetProvParam)(HCRYPTPROV hProv, DWORD dwParam, BYTE *pbData, DWORD *pdwDataLen, DWORD dwFlags);
29         BOOL (*pCPGetUserKey)(HCRYPTPROV hProv, DWORD dwKeySpec, HCRYPTKEY *phUserKey);
30         BOOL (*pCPHashData)(HCRYPTPROV hProv, HCRYPTHASH hHash, CONST BYTE *pbData, DWORD dwDataLen, DWORD dwFlags);
31         BOOL (*pCPHashSessionKey)(HCRYPTPROV hProv, HCRYPTHASH hHash, HCRYPTKEY hKey, DWORD dwFlags);
32         BOOL (*pCPImportKey)(HCRYPTPROV hProv, CONST BYTE *pbData, DWORD dwDataLen, HCRYPTKEY hPubKey, DWORD dwFlags, HCRYPTKEY *phKey);
33         BOOL (*pCPReleaseContext)(HCRYPTPROV hProv, DWORD dwFlags);
34         BOOL (*pCPSetHashParam)(HCRYPTPROV hProv, HCRYPTHASH hHash, DWORD dwParam, BYTE *pbData, DWORD dwFlags);
35         BOOL (*pCPSetKeyParam)(HCRYPTPROV hProv, HCRYPTKEY hKey, DWORD dwParam, BYTE *pbData, DWORD dwFlags);
36         BOOL (*pCPSetProvParam)(HCRYPTPROV hProv, DWORD dwParam, BYTE *pbData, DWORD dwFlags);
37         BOOL (*pCPSignHash)(HCRYPTPROV hProv, HCRYPTHASH hHash, DWORD dwKeySpec, LPCWSTR sDescription, DWORD dwFlags, BYTE *pbSignature, DWORD *pdwSigLen);
38         BOOL (*pCPVerifySignature)(HCRYPTPROV hProv, HCRYPTHASH hHash, CONST BYTE *pbSignature, DWORD dwSigLen, HCRYPTKEY hPubKey, LPCWSTR sDescription, DWORD dwFlags);
39 } PROVFUNCS, *PPROVFUNCS;
40
41 typedef struct tagCRYPTPROV
42 {
43         HMODULE hModule;
44         PPROVFUNCS pFuncs;
45         HCRYPTPROV hPrivate;  //CSP's handle - Should not be given to application under any circumstances!
46         PVTableProvStruc pVTable;
47 } CRYPTPROV, *PCRYPTPROV;
48
49 typedef struct tagCRYPTKEY
50 {
51         PCRYPTPROV pProvider;
52         HCRYPTKEY hPrivate;    //CSP's handle - Should not be given to application under any circumstances!
53 } CRYPTKEY, *PCRYPTKEY;
54
55 typedef struct tagCRYPTHASH
56 {
57         PCRYPTPROV pProvider;
58         HCRYPTHASH hPrivate;    //CSP's handle - Should not be given to application under any circumstances!
59 } CRYPTHASH, *PCRYPTHASH;
60
61 #define MAXPROVTYPES 999
62
63 #endif /* __WINE_CRYPT_H_ */