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
29 /* Next typedef copied from dlls/advapi32/crypt_md4.c */
30 typedef struct tagMD4_CTX
{
34 unsigned char digest
[16];
37 /* Next typedef copied from dlls/advapi32/crypt_md5.c */
38 typedef struct tagMD5_CTX
43 unsigned char digest
[16];
46 /* Next typedef copied form dlls/advapi32/crypt_sha.c */
47 typedef struct tagSHA_CTX
55 typedef union tagHASH_CONTEXT
{
62 typedef union tagKEY_CONTEXT
{
71 BOOL
init_hash_impl(ALG_ID aiAlgid
, HASH_CONTEXT
*pHashContext
);
72 BOOL
update_hash_impl(ALG_ID aiAlgid
, HASH_CONTEXT
*pHashContext
, CONST BYTE
*pbData
,
74 BOOL
finalize_hash_impl(ALG_ID aiAlgid
, HASH_CONTEXT
*pHashContext
, BYTE
*pbHashValue
);
75 BOOL
duplicate_hash_impl(ALG_ID aiAlgid
, CONST HASH_CONTEXT
*pSrcHashContext
,
76 HASH_CONTEXT
*pDestHashContext
);
78 BOOL
new_key_impl(ALG_ID aiAlgid
, KEY_CONTEXT
*pKeyContext
, DWORD dwKeyLen
);
79 BOOL
free_key_impl(ALG_ID aiAlgid
, KEY_CONTEXT
*pKeyContext
);
80 BOOL
setup_key_impl(ALG_ID aiAlgid
, KEY_CONTEXT
*pKeyContext
, DWORD dwKeyLen
,
81 DWORD dwEffectiveKeyLen
, DWORD dwSaltLen
, BYTE
*abKeyValue
);
82 BOOL
duplicate_key_impl(ALG_ID aiAlgid
, CONST KEY_CONTEXT
*pSrcKeyContext
,
83 KEY_CONTEXT
*pDestKeyContext
);
85 /* dwKeySpec is optional for symmetric key algorithms */
86 BOOL
encrypt_block_impl(ALG_ID aiAlgid
, DWORD dwKeySpec
, KEY_CONTEXT
*pKeyContext
, CONST BYTE
*pbIn
, BYTE
*pbOut
,
88 BOOL
encrypt_stream_impl(ALG_ID aiAlgid
, KEY_CONTEXT
*pKeyContext
, BYTE
*pbInOut
, DWORD dwLen
);
90 BOOL
export_public_key_impl(BYTE
*pbDest
, const KEY_CONTEXT
*pKeyContext
, DWORD dwKeyLen
,
92 BOOL
import_public_key_impl(CONST BYTE
*pbSrc
, KEY_CONTEXT
*pKeyContext
, DWORD dwKeyLen
,
94 BOOL
export_private_key_impl(BYTE
*pbDest
, const KEY_CONTEXT
*pKeyContext
, DWORD dwKeyLen
,
96 BOOL
import_private_key_impl(CONST BYTE
* pbSrc
, KEY_CONTEXT
*pKeyContext
, DWORD dwKeyLen
,
99 BOOL
gen_rand_impl(BYTE
*pbBuffer
, DWORD dwLen
);
101 #endif /* __WINE_IMPLGLUE_H */