Commit e8273d60 authored by Travis Michielsen's avatar Travis Michielsen Committed by Alexandre Julliard

Implement advapi32 portion of the CryptoAPI.

parent d0d7764a
......@@ -4,7 +4,7 @@ type win32
import kernel32.dll
import ntdll.dll
debug_channels (advapi reg)
debug_channels (advapi crypt reg)
@ stub AbortSystemShutdownA
@ stub AbortSystemShutdownW
......@@ -44,7 +44,7 @@ debug_channels (advapi reg)
@ stdcall CryptDecrypt(long long long long ptr ptr) CryptDecrypt
@ stdcall CryptDeriveKey(long long long long ptr) CryptDeriveKey
@ stdcall CryptDestroyHash(long) CryptDestroyHash
@ stdcall CryptDestroyKey(long) CryptDestroyHash
@ stdcall CryptDestroyKey(long) CryptDestroyKey
@ stdcall CryptDuplicateHash(long ptr long ptr) CryptDuplicateHash
@ stdcall CryptDuplicateKey(long ptr long ptr) CryptDuplicateKey
@ stdcall CryptEncrypt(long long long long ptr ptr long) CryptEncrypt
......@@ -65,8 +65,8 @@ debug_channels (advapi reg)
@ stdcall CryptHashSessionKey(long long long) CryptHashSessionKey
@ stdcall CryptImportKey(long ptr long long long ptr) CryptImportKey
@ stdcall CryptReleaseContext(long long) CryptReleaseContext
@ stdcall CryptSignHashA(long long str long ptr ptr) CryptSignHashA
@ stdcall CryptSignHashW(long long wstr long ptr ptr) CryptSignHashW
@ stdcall CryptSignHashA(long long ptr long ptr ptr) CryptSignHashA
@ stdcall CryptSignHashW(long long ptr long ptr ptr) CryptSignHashA
@ stdcall CryptSetHashParam(long long ptr long) CryptSetHashParam
@ stdcall CryptSetKeyParam(long long ptr long) CryptSetKeyParam
@ stdcall CryptSetProviderA(str long) CryptSetProviderA
......@@ -74,8 +74,8 @@ debug_channels (advapi reg)
@ stdcall CryptSetProviderExA(str long ptr long) CryptSetProviderExA
@ stdcall CryptSetProviderExW(wstr long ptr long) CryptSetProviderExW
@ stdcall CryptSetProvParam(long long ptr long) CryptSetProvParam
@ stdcall CryptVerifySignatureA(long ptr long long str long) CryptVerifySignatureA
@ stdcall CryptVerifySignatureW(long ptr long long wstr long) CryptVerifySignatureW
@ stdcall CryptVerifySignatureA(long ptr long long ptr long) CryptVerifySignatureA
@ stdcall CryptVerifySignatureW(long ptr long long ptr long) CryptVerifySignatureA
@ stub DeleteAce
@ stdcall DeleteService(long) DeleteService
@ stdcall DeregisterEventSource(long) DeregisterEventSource
......
/*
* Driver routines
*
* Copyright 2001 - Travis Michielsen
*/
#ifndef __WINE_CRYPT_H
#define __WINE_CRYPT_H
#include "wincrypt.h"
typedef struct tagPROVFUNCS
{
BOOL (*pCPAcquireContext)(HCRYPTPROV *phProv, LPSTR pszContainer, DWORD dwFlags, PVTableProvStruc pVTable);
BOOL (*pCPCreateHash)(HCRYPTPROV hProv, ALG_ID Algid, HCRYPTKEY hKey, DWORD dwFlags, HCRYPTHASH *phHash);
BOOL (*pCPDecrypt)(HCRYPTPROV hProv, HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final, DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen);
BOOL (*pCPDeriveKey)(HCRYPTPROV hProv, ALG_ID Algid, HCRYPTHASH hBaseData, DWORD dwFlags, HCRYPTKEY *phKey);
BOOL (*pCPDestroyHash)(HCRYPTPROV hProv, HCRYPTHASH hHash);
BOOL (*pCPDestroyKey)(HCRYPTPROV hProv, HCRYPTKEY hKey);
BOOL (*pCPDuplicateHash)(HCRYPTPROV hUID, HCRYPTHASH hHash, DWORD *pdwReserved, DWORD dwFlags, HCRYPTHASH *phHash);
BOOL (*pCPDuplicateKey)(HCRYPTPROV hUID, HCRYPTKEY hKey, DWORD *pdwReserved, DWORD dwFlags, HCRYPTKEY *phKey);
BOOL (*pCPEncrypt)(HCRYPTPROV hProv, HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final, DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen, DWORD dwBufLen);
BOOL (*pCPExportKey)(HCRYPTPROV hProv, HCRYPTKEY hKey, HCRYPTKEY hPubKey, DWORD dwBlobType, DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen);
BOOL (*pCPGenKey)(HCRYPTPROV hProv, ALG_ID Algid, DWORD dwFlags, HCRYPTKEY *phKey);
BOOL (*pCPGenRandom)(HCRYPTPROV hProv, DWORD dwLen, BYTE *pbBuffer);
BOOL (*pCPGetHashParam)(HCRYPTPROV hProv, HCRYPTHASH hHash, DWORD dwParam, BYTE *pbData, DWORD *pdwDataLen, DWORD dwFlags);
BOOL (*pCPGetKeyParam)(HCRYPTPROV hProv, HCRYPTKEY hKey, DWORD dwParam, BYTE *pbData, DWORD *pdwDataLen, DWORD dwFlags);
BOOL (*pCPGetProvParam)(HCRYPTPROV hProv, DWORD dwParam, BYTE *pbData, DWORD *pdwDataLen, DWORD dwFlags);
BOOL (*pCPGetUserKey)(HCRYPTPROV hProv, DWORD dwKeySpec, HCRYPTKEY *phUserKey);
BOOL (*pCPHashData)(HCRYPTPROV hProv, HCRYPTHASH hHash, CONST BYTE *pbData, DWORD dwDataLen, DWORD dwFlags);
BOOL (*pCPHashSessionKey)(HCRYPTPROV hProv, HCRYPTHASH hHash, HCRYPTKEY hKey, DWORD dwFlags);
BOOL (*pCPImportKey)(HCRYPTPROV hProv, CONST BYTE *pbData, DWORD dwDataLen, HCRYPTKEY hPubKey, DWORD dwFlags, HCRYPTKEY *phKey);
BOOL (*pCPReleaseContext)(HCRYPTPROV hProv, DWORD dwFlags);
BOOL (*pCPSetHashParam)(HCRYPTPROV hProv, HCRYPTHASH hHash, DWORD dwParam, BYTE *pbData, DWORD dwFlags);
BOOL (*pCPSetKeyParam)(HCRYPTPROV hProv, HCRYPTKEY hKey, DWORD dwParam, BYTE *pbData, DWORD dwFlags);
BOOL (*pCPSetProvParam)(HCRYPTPROV hProv, DWORD dwParam, BYTE *pbData, DWORD dwFlags);
BOOL (*pCPSignHash)(HCRYPTPROV hProv, HCRYPTHASH hHash, DWORD dwKeySpec, LPCWSTR sDescription, DWORD dwFlags, BYTE *pbSignature, DWORD *pdwSigLen);
BOOL (*pCPVerifySignature)(HCRYPTPROV hProv, HCRYPTHASH hHash, CONST BYTE *pbSignature, DWORD dwSigLen, HCRYPTKEY hPubKey, LPCWSTR sDescription, DWORD dwFlags);
} PROVFUNCS, *PPROVFUNCS;
typedef struct tagCRYPTPROV
{
HMODULE hModule;
PPROVFUNCS pFuncs;
HCRYPTPROV hPrivate; //CSP's handle - Should not be given to application under any circumstances!
PVTableProvStruc pVTable;
} CRYPTPROV, *PCRYPTPROV;
typedef struct tagCRYPTKEY
{
PCRYPTPROV pProvider;
HCRYPTKEY hPrivate; //CSP's handle - Should not be given to application under any circumstances!
} CRYPTKEY, *PCRYPTKEY;
typedef struct tagCRYPTHASH
{
PCRYPTPROV pProvider;
HCRYPTHASH hPrivate; //CSP's handle - Should not be given to application under any circumstances!
} CRYPTHASH, *PCRYPTHASH;
#define MAXPROVTYPES 999
#endif /* __WINE_CRYPT_H_ */
......@@ -1897,5 +1897,41 @@ extern int WIN32_LastError;
#define MEM_E_INVALID_LINK 0x80080010L
#define MEM_E_INVALID_SIZE 0x80080011L
/*Cryptographic Error Codes */
#define NTE_BAD_UID 0x80090001L
#define NTE_BAD_HASH 0x80090002L
#define NTE_BAD_KEY 0x80090003L
#define NTE_BAD_LEN 0x80090004L
#define NTE_BAD_DATA 0x80090005L
#define NTE_BAD_SIGNATURE 0x80090006L
#define NTE_BAD_VER 0x80090007L
#define NTE_BAD_ALGID 0x80090008L
#define NTE_BAD_FLAGS 0x80090009L
#define NTE_BAD_TYPE 0x8009000AL
#define NTE_BAD_KEY_STATE 0x8009000BL
#define NTE_BAD_HASH_STATE 0x8009000CL
#define NTE_NO_KEY 0x8009000DL
#define NTE_NO_MEMORY 0x8009000EL
#define NTE_EXISTS 0x8009000FL
#define NTE_PERM 0x80090010L
#define NTE_NOT_FOUND 0x80090011L
#define NTE_DOUBLE_ENCRYPT 0x80090012L
#define NTE_BAD_PROVIDER 0x80090013L
#define NTE_BAD_PROV_TYPE 0x80090014L
#define NTE_BAD_PUBLIC_KEY 0x80090015L
#define NTE_BAD_KEYSET 0x80090016L
#define NTE_PROV_TYPE_NOT_DEF 0x80090017L
#define NTE_PROV_TYPE_ENTRY_BAD 0x80090018L
#define NTE_KEYSET_NOT_DEF 0x80090019L
#define NTE_KEYSET_ENTRY_BAD 0x8009001AL
#define NTE_PROV_TYPE_NO_MATCH 0x8009001BL
#define NTE_SIGNATURE_FILE_BAD 0x8009001CL
#define NTE_PROVIDER_DLL_FAIL 0x8009001DL
#define NTE_PROV_DLL_NOT_FOUND 0x8009001EL
#define NTE_BAD_KEYSET_PARAM 0x8009001FL
#define NTE_FAIL 0x80090020L
#define NTE_SYS_ERR 0x80090021L
#define NTE_OP_OK 0
#endif /* __WINE_WINERROR_H */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment