4 * Copyright 2001 - Travis Michielsen
12 typedef struct tagPROVFUNCS
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
;
41 typedef struct tagCRYPTPROV
45 HCRYPTPROV hPrivate
; //CSP's handle - Should not be given to application under any circumstances!
46 PVTableProvStruc pVTable
;
47 } CRYPTPROV
, *PCRYPTPROV
;
49 typedef struct tagCRYPTKEY
52 HCRYPTKEY hPrivate
; //CSP's handle - Should not be given to application under any circumstances!
53 } CRYPTKEY
, *PCRYPTKEY
;
55 typedef struct tagCRYPTHASH
58 HCRYPTHASH hPrivate
; //CSP's handle - Should not be given to application under any circumstances!
59 } CRYPTHASH
, *PCRYPTHASH
;
61 #define MAXPROVTYPES 999
63 #endif /* __WINE_CRYPT_H_ */