Travis Michielsen | e8273d6 | 2002-01-10 19:29:40 +0000 | [diff] [blame] | 1 | /* |
| 2 | * Driver routines |
| 3 | * |
| 4 | * Copyright 2001 - Travis Michielsen |
Alexandre Julliard | 0799c1a | 2002-03-09 23:29:33 +0000 | [diff] [blame] | 5 | * |
| 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. |
| 10 | * |
| 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. |
| 15 | * |
| 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 |
Jonathan Ernst | 360a3f9 | 2006-05-18 14:49:52 +0200 | [diff] [blame] | 18 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA |
Travis Michielsen | e8273d6 | 2002-01-10 19:29:40 +0000 | [diff] [blame] | 19 | */ |
| 20 | |
| 21 | #ifndef __WINE_CRYPT_H |
| 22 | #define __WINE_CRYPT_H |
| 23 | |
Alexandre Julliard | e37c6e1 | 2003-09-05 23:08:26 +0000 | [diff] [blame] | 24 | #include <stdarg.h> |
| 25 | |
| 26 | #include "windef.h" |
| 27 | #include "winbase.h" |
Travis Michielsen | e8273d6 | 2002-01-10 19:29:40 +0000 | [diff] [blame] | 28 | #include "wincrypt.h" |
| 29 | |
| 30 | typedef struct tagPROVFUNCS |
| 31 | { |
Alexandre Julliard | 140c905 | 2002-08-13 18:05:45 +0000 | [diff] [blame] | 32 | BOOL (WINAPI *pCPAcquireContext)(HCRYPTPROV *phProv, LPSTR pszContainer, DWORD dwFlags, PVTableProvStruc pVTable); |
| 33 | BOOL (WINAPI *pCPCreateHash)(HCRYPTPROV hProv, ALG_ID Algid, HCRYPTKEY hKey, DWORD dwFlags, HCRYPTHASH *phHash); |
| 34 | BOOL (WINAPI *pCPDecrypt)(HCRYPTPROV hProv, HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final, DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen); |
| 35 | BOOL (WINAPI *pCPDeriveKey)(HCRYPTPROV hProv, ALG_ID Algid, HCRYPTHASH hBaseData, DWORD dwFlags, HCRYPTKEY *phKey); |
| 36 | BOOL (WINAPI *pCPDestroyHash)(HCRYPTPROV hProv, HCRYPTHASH hHash); |
| 37 | BOOL (WINAPI *pCPDestroyKey)(HCRYPTPROV hProv, HCRYPTKEY hKey); |
| 38 | BOOL (WINAPI *pCPDuplicateHash)(HCRYPTPROV hUID, HCRYPTHASH hHash, DWORD *pdwReserved, DWORD dwFlags, HCRYPTHASH *phHash); |
| 39 | BOOL (WINAPI *pCPDuplicateKey)(HCRYPTPROV hUID, HCRYPTKEY hKey, DWORD *pdwReserved, DWORD dwFlags, HCRYPTKEY *phKey); |
| 40 | BOOL (WINAPI *pCPEncrypt)(HCRYPTPROV hProv, HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final, DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen, DWORD dwBufLen); |
| 41 | BOOL (WINAPI *pCPExportKey)(HCRYPTPROV hProv, HCRYPTKEY hKey, HCRYPTKEY hPubKey, DWORD dwBlobType, DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen); |
| 42 | BOOL (WINAPI *pCPGenKey)(HCRYPTPROV hProv, ALG_ID Algid, DWORD dwFlags, HCRYPTKEY *phKey); |
| 43 | BOOL (WINAPI *pCPGenRandom)(HCRYPTPROV hProv, DWORD dwLen, BYTE *pbBuffer); |
| 44 | BOOL (WINAPI *pCPGetHashParam)(HCRYPTPROV hProv, HCRYPTHASH hHash, DWORD dwParam, BYTE *pbData, DWORD *pdwDataLen, DWORD dwFlags); |
| 45 | BOOL (WINAPI *pCPGetKeyParam)(HCRYPTPROV hProv, HCRYPTKEY hKey, DWORD dwParam, BYTE *pbData, DWORD *pdwDataLen, DWORD dwFlags); |
| 46 | BOOL (WINAPI *pCPGetProvParam)(HCRYPTPROV hProv, DWORD dwParam, BYTE *pbData, DWORD *pdwDataLen, DWORD dwFlags); |
| 47 | BOOL (WINAPI *pCPGetUserKey)(HCRYPTPROV hProv, DWORD dwKeySpec, HCRYPTKEY *phUserKey); |
| 48 | BOOL (WINAPI *pCPHashData)(HCRYPTPROV hProv, HCRYPTHASH hHash, CONST BYTE *pbData, DWORD dwDataLen, DWORD dwFlags); |
| 49 | BOOL (WINAPI *pCPHashSessionKey)(HCRYPTPROV hProv, HCRYPTHASH hHash, HCRYPTKEY hKey, DWORD dwFlags); |
| 50 | BOOL (WINAPI *pCPImportKey)(HCRYPTPROV hProv, CONST BYTE *pbData, DWORD dwDataLen, HCRYPTKEY hPubKey, DWORD dwFlags, HCRYPTKEY *phKey); |
| 51 | BOOL (WINAPI *pCPReleaseContext)(HCRYPTPROV hProv, DWORD dwFlags); |
Bang Jun-Young | 671b023 | 2007-01-29 22:49:46 +0900 | [diff] [blame] | 52 | BOOL (WINAPI *pCPSetHashParam)(HCRYPTPROV hProv, HCRYPTHASH hHash, DWORD dwParam, CONST BYTE *pbData, DWORD dwFlags); |
| 53 | BOOL (WINAPI *pCPSetKeyParam)(HCRYPTPROV hProv, HCRYPTKEY hKey, DWORD dwParam, CONST BYTE *pbData, DWORD dwFlags); |
| 54 | BOOL (WINAPI *pCPSetProvParam)(HCRYPTPROV hProv, DWORD dwParam, CONST BYTE *pbData, DWORD dwFlags); |
Alexandre Julliard | 140c905 | 2002-08-13 18:05:45 +0000 | [diff] [blame] | 55 | BOOL (WINAPI *pCPSignHash)(HCRYPTPROV hProv, HCRYPTHASH hHash, DWORD dwKeySpec, LPCWSTR sDescription, DWORD dwFlags, BYTE *pbSignature, DWORD *pdwSigLen); |
| 56 | BOOL (WINAPI *pCPVerifySignature)(HCRYPTPROV hProv, HCRYPTHASH hHash, CONST BYTE *pbSignature, DWORD dwSigLen, HCRYPTKEY hPubKey, LPCWSTR sDescription, DWORD dwFlags); |
Travis Michielsen | e8273d6 | 2002-01-10 19:29:40 +0000 | [diff] [blame] | 57 | } PROVFUNCS, *PPROVFUNCS; |
| 58 | |
Michael Jung | 44cb090 | 2005-04-11 12:55:36 +0000 | [diff] [blame] | 59 | #define MAGIC_CRYPTPROV 0xA39E741F |
Austin Lund | c98e6c0 | 2010-08-18 10:14:42 +1000 | [diff] [blame] | 60 | #define MAGIC_CRYPTKEY 0xA39E741E |
| 61 | #define MAGIC_CRYPTHASH 0xA39E741D |
Michael Jung | 44cb090 | 2005-04-11 12:55:36 +0000 | [diff] [blame] | 62 | |
Travis Michielsen | e8273d6 | 2002-01-10 19:29:40 +0000 | [diff] [blame] | 63 | typedef struct tagCRYPTPROV |
| 64 | { |
Michael Jung | 44cb090 | 2005-04-11 12:55:36 +0000 | [diff] [blame] | 65 | DWORD dwMagic; |
Michael Jung | 81e6f0c | 2004-07-13 23:34:13 +0000 | [diff] [blame] | 66 | UINT refcount; |
Travis Michielsen | e8273d6 | 2002-01-10 19:29:40 +0000 | [diff] [blame] | 67 | HMODULE hModule; |
| 68 | PPROVFUNCS pFuncs; |
Gregg Mattinson | 88773cd | 2002-06-28 17:37:34 +0000 | [diff] [blame] | 69 | HCRYPTPROV hPrivate; /*CSP's handle - Should not be given to application under any circumstances!*/ |
Travis Michielsen | e8273d6 | 2002-01-10 19:29:40 +0000 | [diff] [blame] | 70 | PVTableProvStruc pVTable; |
| 71 | } CRYPTPROV, *PCRYPTPROV; |
| 72 | |
| 73 | typedef struct tagCRYPTKEY |
| 74 | { |
Austin Lund | c98e6c0 | 2010-08-18 10:14:42 +1000 | [diff] [blame] | 75 | DWORD dwMagic; |
Travis Michielsen | e8273d6 | 2002-01-10 19:29:40 +0000 | [diff] [blame] | 76 | PCRYPTPROV pProvider; |
Gregg Mattinson | 88773cd | 2002-06-28 17:37:34 +0000 | [diff] [blame] | 77 | HCRYPTKEY hPrivate; /*CSP's handle - Should not be given to application under any circumstances!*/ |
Travis Michielsen | e8273d6 | 2002-01-10 19:29:40 +0000 | [diff] [blame] | 78 | } CRYPTKEY, *PCRYPTKEY; |
| 79 | |
| 80 | typedef struct tagCRYPTHASH |
| 81 | { |
Austin Lund | c98e6c0 | 2010-08-18 10:14:42 +1000 | [diff] [blame] | 82 | DWORD dwMagic; |
Travis Michielsen | e8273d6 | 2002-01-10 19:29:40 +0000 | [diff] [blame] | 83 | PCRYPTPROV pProvider; |
Gregg Mattinson | 88773cd | 2002-06-28 17:37:34 +0000 | [diff] [blame] | 84 | HCRYPTHASH hPrivate; /*CSP's handle - Should not be given to application under any circumstances!*/ |
Travis Michielsen | e8273d6 | 2002-01-10 19:29:40 +0000 | [diff] [blame] | 85 | } CRYPTHASH, *PCRYPTHASH; |
| 86 | |
| 87 | #define MAXPROVTYPES 999 |
| 88 | |
Hans Leidekker | b96edb3 | 2004-10-04 20:42:05 +0000 | [diff] [blame] | 89 | extern unsigned char *CRYPT_DEShash( unsigned char *dst, const unsigned char *key, |
Marcus Meissner | 7810e23 | 2011-04-27 11:20:25 +0200 | [diff] [blame] | 90 | const unsigned char *src ) DECLSPEC_HIDDEN; |
Mike McCormack | 50ed147 | 2006-05-12 00:47:39 +0900 | [diff] [blame] | 91 | extern unsigned char *CRYPT_DESunhash( unsigned char *dst, const unsigned char *key, |
Marcus Meissner | 7810e23 | 2011-04-27 11:20:25 +0200 | [diff] [blame] | 92 | const unsigned char *src ) DECLSPEC_HIDDEN; |
Hans Leidekker | b96edb3 | 2004-10-04 20:42:05 +0000 | [diff] [blame] | 93 | |
Mike McCormack | dcfb0f4 | 2006-05-14 17:11:16 +0900 | [diff] [blame] | 94 | struct ustring { |
| 95 | DWORD Length; |
| 96 | DWORD MaximumLength; |
| 97 | unsigned char *Buffer; |
| 98 | }; |
| 99 | |
Andrew Talbot | 301cfd1 | 2009-03-26 21:23:50 +0000 | [diff] [blame] | 100 | NTSTATUS WINAPI SystemFunction032(struct ustring *data, const struct ustring *key); |
Rob Shearman | 7583130 | 2007-10-30 12:36:59 +0000 | [diff] [blame] | 101 | |
Travis Michielsen | e8273d6 | 2002-01-10 19:29:40 +0000 | [diff] [blame] | 102 | #endif /* __WINE_CRYPT_H_ */ |