2 * dlls/rsaenh/implglue.h
3 * Glueing the RSAENH specific code to the crypto library
5 * Copyright (c) 2004 Michael Jung
7 * based on code by Mike McCormack and David Hammerton
9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Lesser General Public
11 * License as published by the Free Software Foundation; either
12 * version 2.1 of the License, or (at your option) any later version.
14 * This library is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 * Lesser General Public License for more details.
19 * You should have received a copy of the GNU Lesser General Public
20 * License along with this library; if not, write to the Free Software
21 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
24 #ifndef __WINE_IMPLGLUE_H
25 #define __WINE_IMPLGLUE_H
30 /* Next typedef copied from dlls/advapi32/crypt_md4.c */
31 typedef struct tagMD4_CTX
{
35 unsigned char digest
[16];
38 /* Next typedef copied from dlls/advapi32/crypt_md5.c */
39 typedef struct tagMD5_CTX
44 unsigned char digest
[16];
47 /* Next typedef copied form dlls/advapi32/crypt_sha.c */
48 typedef struct tagSHA_CTX
56 typedef union tagHASH_CONTEXT
{
66 typedef union tagKEY_CONTEXT
{
75 BOOL
init_hash_impl(ALG_ID aiAlgid
, HASH_CONTEXT
*pHashContext
) DECLSPEC_HIDDEN
;
76 BOOL
update_hash_impl(ALG_ID aiAlgid
, HASH_CONTEXT
*pHashContext
, const BYTE
*pbData
,
77 DWORD dwDataLen
) DECLSPEC_HIDDEN
;
78 BOOL
finalize_hash_impl(ALG_ID aiAlgid
, HASH_CONTEXT
*pHashContext
, BYTE
*pbHashValue
) DECLSPEC_HIDDEN
;
79 BOOL
duplicate_hash_impl(ALG_ID aiAlgid
, const HASH_CONTEXT
*pSrcHashContext
,
80 HASH_CONTEXT
*pDestHashContext
) DECLSPEC_HIDDEN
;
82 BOOL
new_key_impl(ALG_ID aiAlgid
, KEY_CONTEXT
*pKeyContext
, DWORD dwKeyLen
) DECLSPEC_HIDDEN
;
83 BOOL
free_key_impl(ALG_ID aiAlgid
, KEY_CONTEXT
*pKeyContext
) DECLSPEC_HIDDEN
;
84 BOOL
setup_key_impl(ALG_ID aiAlgid
, KEY_CONTEXT
*pKeyContext
, DWORD dwKeyLen
,
85 DWORD dwEffectiveKeyLen
, DWORD dwSaltLen
, BYTE
*abKeyValue
) DECLSPEC_HIDDEN
;
86 BOOL
duplicate_key_impl(ALG_ID aiAlgid
, const KEY_CONTEXT
*pSrcKeyContext
,
87 KEY_CONTEXT
*pDestKeyContext
) DECLSPEC_HIDDEN
;
89 /* dwKeySpec is optional for symmetric key algorithms */
90 BOOL
encrypt_block_impl(ALG_ID aiAlgid
, DWORD dwKeySpec
, KEY_CONTEXT
*pKeyContext
, const BYTE
*pbIn
,
91 BYTE
*pbOut
, DWORD enc
) DECLSPEC_HIDDEN
;
92 BOOL
encrypt_stream_impl(ALG_ID aiAlgid
, KEY_CONTEXT
*pKeyContext
, BYTE
*pbInOut
, DWORD dwLen
) DECLSPEC_HIDDEN
;
94 BOOL
export_public_key_impl(BYTE
*pbDest
, const KEY_CONTEXT
*pKeyContext
, DWORD dwKeyLen
,
95 DWORD
*pdwPubExp
) DECLSPEC_HIDDEN
;
96 BOOL
import_public_key_impl(const BYTE
*pbSrc
, KEY_CONTEXT
*pKeyContext
, DWORD dwKeyLen
,
97 DWORD dwPubExp
) DECLSPEC_HIDDEN
;
98 BOOL
export_private_key_impl(BYTE
*pbDest
, const KEY_CONTEXT
*pKeyContext
, DWORD dwKeyLen
,
99 DWORD
*pdwPubExp
) DECLSPEC_HIDDEN
;
100 BOOL
import_private_key_impl(const BYTE
* pbSrc
, KEY_CONTEXT
*pKeyContext
, DWORD dwKeyLen
,
101 DWORD dwDataLen
, DWORD dwPubExp
) DECLSPEC_HIDDEN
;
103 BOOL
gen_rand_impl(BYTE
*pbBuffer
, DWORD dwLen
) DECLSPEC_HIDDEN
;
105 #endif /* __WINE_IMPLGLUE_H */