4 * Copyright 2001 - Travis Michielsen
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 #ifndef __WINE_CRYPT_H
22 #define __WINE_CRYPT_H
26 typedef struct _VTableProvStruc
{
28 BOOL (*pFuncVerifyImage
)(LPCSTR lpszImage
, BYTE
*pSigData
);
29 BOOL (*pFuncReturnhWnd
)(HWND
*phWnd
);
34 } VTableProvStruc
, *PVTableProvStruc
;
36 typedef struct tagPROVFUNCS
38 BOOL (WINAPI
*pCPAcquireContext
)(HCRYPTPROV
*phProv
, LPSTR pszContainer
, DWORD dwFlags
, PVTableProvStruc pVTable
);
39 BOOL (WINAPI
*pCPCreateHash
)(HCRYPTPROV hProv
, ALG_ID Algid
, HCRYPTKEY hKey
, DWORD dwFlags
, HCRYPTHASH
*phHash
);
40 BOOL (WINAPI
*pCPDecrypt
)(HCRYPTPROV hProv
, HCRYPTKEY hKey
, HCRYPTHASH hHash
, BOOL Final
, DWORD dwFlags
, BYTE
*pbData
, DWORD
*pdwDataLen
);
41 BOOL (WINAPI
*pCPDeriveKey
)(HCRYPTPROV hProv
, ALG_ID Algid
, HCRYPTHASH hBaseData
, DWORD dwFlags
, HCRYPTKEY
*phKey
);
42 BOOL (WINAPI
*pCPDestroyHash
)(HCRYPTPROV hProv
, HCRYPTHASH hHash
);
43 BOOL (WINAPI
*pCPDestroyKey
)(HCRYPTPROV hProv
, HCRYPTKEY hKey
);
44 BOOL (WINAPI
*pCPDuplicateHash
)(HCRYPTPROV hUID
, HCRYPTHASH hHash
, DWORD
*pdwReserved
, DWORD dwFlags
, HCRYPTHASH
*phHash
);
45 BOOL (WINAPI
*pCPDuplicateKey
)(HCRYPTPROV hUID
, HCRYPTKEY hKey
, DWORD
*pdwReserved
, DWORD dwFlags
, HCRYPTKEY
*phKey
);
46 BOOL (WINAPI
*pCPEncrypt
)(HCRYPTPROV hProv
, HCRYPTKEY hKey
, HCRYPTHASH hHash
, BOOL Final
, DWORD dwFlags
, BYTE
*pbData
, DWORD
*pdwDataLen
, DWORD dwBufLen
);
47 BOOL (WINAPI
*pCPExportKey
)(HCRYPTPROV hProv
, HCRYPTKEY hKey
, HCRYPTKEY hPubKey
, DWORD dwBlobType
, DWORD dwFlags
, BYTE
*pbData
, DWORD
*pdwDataLen
);
48 BOOL (WINAPI
*pCPGenKey
)(HCRYPTPROV hProv
, ALG_ID Algid
, DWORD dwFlags
, HCRYPTKEY
*phKey
);
49 BOOL (WINAPI
*pCPGenRandom
)(HCRYPTPROV hProv
, DWORD dwLen
, BYTE
*pbBuffer
);
50 BOOL (WINAPI
*pCPGetHashParam
)(HCRYPTPROV hProv
, HCRYPTHASH hHash
, DWORD dwParam
, BYTE
*pbData
, DWORD
*pdwDataLen
, DWORD dwFlags
);
51 BOOL (WINAPI
*pCPGetKeyParam
)(HCRYPTPROV hProv
, HCRYPTKEY hKey
, DWORD dwParam
, BYTE
*pbData
, DWORD
*pdwDataLen
, DWORD dwFlags
);
52 BOOL (WINAPI
*pCPGetProvParam
)(HCRYPTPROV hProv
, DWORD dwParam
, BYTE
*pbData
, DWORD
*pdwDataLen
, DWORD dwFlags
);
53 BOOL (WINAPI
*pCPGetUserKey
)(HCRYPTPROV hProv
, DWORD dwKeySpec
, HCRYPTKEY
*phUserKey
);
54 BOOL (WINAPI
*pCPHashData
)(HCRYPTPROV hProv
, HCRYPTHASH hHash
, CONST BYTE
*pbData
, DWORD dwDataLen
, DWORD dwFlags
);
55 BOOL (WINAPI
*pCPHashSessionKey
)(HCRYPTPROV hProv
, HCRYPTHASH hHash
, HCRYPTKEY hKey
, DWORD dwFlags
);
56 BOOL (WINAPI
*pCPImportKey
)(HCRYPTPROV hProv
, CONST BYTE
*pbData
, DWORD dwDataLen
, HCRYPTKEY hPubKey
, DWORD dwFlags
, HCRYPTKEY
*phKey
);
57 BOOL (WINAPI
*pCPReleaseContext
)(HCRYPTPROV hProv
, DWORD dwFlags
);
58 BOOL (WINAPI
*pCPSetHashParam
)(HCRYPTPROV hProv
, HCRYPTHASH hHash
, DWORD dwParam
, BYTE
*pbData
, DWORD dwFlags
);
59 BOOL (WINAPI
*pCPSetKeyParam
)(HCRYPTPROV hProv
, HCRYPTKEY hKey
, DWORD dwParam
, BYTE
*pbData
, DWORD dwFlags
);
60 BOOL (WINAPI
*pCPSetProvParam
)(HCRYPTPROV hProv
, DWORD dwParam
, BYTE
*pbData
, DWORD dwFlags
);
61 BOOL (WINAPI
*pCPSignHash
)(HCRYPTPROV hProv
, HCRYPTHASH hHash
, DWORD dwKeySpec
, LPCWSTR sDescription
, DWORD dwFlags
, BYTE
*pbSignature
, DWORD
*pdwSigLen
);
62 BOOL (WINAPI
*pCPVerifySignature
)(HCRYPTPROV hProv
, HCRYPTHASH hHash
, CONST BYTE
*pbSignature
, DWORD dwSigLen
, HCRYPTKEY hPubKey
, LPCWSTR sDescription
, DWORD dwFlags
);
63 } PROVFUNCS
, *PPROVFUNCS
;
65 typedef struct tagCRYPTPROV
69 HCRYPTPROV hPrivate
; /*CSP's handle - Should not be given to application under any circumstances!*/
70 PVTableProvStruc pVTable
;
71 } CRYPTPROV
, *PCRYPTPROV
;
73 typedef struct tagCRYPTKEY
76 HCRYPTKEY hPrivate
; /*CSP's handle - Should not be given to application under any circumstances!*/
77 } CRYPTKEY
, *PCRYPTKEY
;
79 typedef struct tagCRYPTHASH
82 HCRYPTHASH hPrivate
; /*CSP's handle - Should not be given to application under any circumstances!*/
83 } CRYPTHASH
, *PCRYPTHASH
;
85 #define MAXPROVTYPES 999
87 #endif /* __WINE_CRYPT_H_ */