/*
 * Copyright(C) 2000 Проект ИОК
 *
 * Этот файл содержит информацию, являющуюся
 * собственностью компании Крипто Про.
 *
 * Любая часть этого файла не может быть скопирована,
 * исправлена, переведена на другие языки,
 * локализована или модифицирована любым способом,
 * откомпилирована, передана по сети с или на
 * любую компьютерную систему без предварительного
 * заключения соглашения с компанией Крипто Про.
 */

/*!
 * \file $RCSfile$
 * \version $Revision: 127051 $
 * \date $Date:: 2015-09-09 15:08:20 +0300#$
 * \author $Author: pav $
 *
 * \brief Интерфейс Microsoft Cryptography Service Provider.
 *
 * Содержит прототипы функций, которые должен предоставлять любой CSP.
 * Чисто внутренний, не должен быть виден никому - все остальные вызывают
 * функции не напрямую, а по указетелю.
 */
#ifndef WINCSPC_INT_H_INCLUDED
#define WINCSPC_INT_H_INCLUDED

#include "wincspc.h"

#define CSP_36_R2_CPC_CONFIG_64_LEN 648
#define CSP_36_R2_CPC_CONFIG_32_LEN 532

#if defined(__cplusplus)
extern "C" {
#endif // defined(__cplusplus)

	// Функции, которые могут быть непосредственно доступны снаружи
	// см. wincspc.h 
#if defined(CPC_SEPARATE_NAMESPACE_BINDING)
    CPCCreateProvider_t		CPCCreateProvider;
    CPCGetDefaultConfig_t	CPCGetDefaultConfig;
#endif

	// Функции реализации, доступ только через HCRYPTMODULE
CPCAcquireContext_t	CPCAcquireContext;
CPCReleaseContext_t	CPCReleaseContext;
CPCGetProvParam_t	CPCGetProvParam;
CPCSetProvParam_t	CPCSetProvParam;
CPCGenKey_t		CPCGenKey;
CPCDestroyKey_t		CPCDestroyKey;
CPCCreateHash_t		CPCCreateHash;
CPCDestroyHash_t	CPCDestroyHash;
CPCEncrypt_t		CPCEncrypt;
CPCDecrypt_t		CPCDecrypt;
CPCDeriveKey_t		CPCDeriveKey;
CPCDuplicateKey_t	CPCDuplicateKey;
CPCDuplicateHash_t	CPCDuplicateHash;
CPCExportKey_t		CPCExportKey;
CPCGenRandom_t		CPCGenRandom;
CPCGetHashParam_t	CPCGetHashParam;
CPCGetKeyParam_t	CPCGetKeyParam;
CPCGetUserKey_t		CPCGetUserKey;
CPCHashData_t		CPCHashData;
CPCHashSessionKey_t	CPCHashSessionKey;
CPCImportKey_t		CPCImportKey;
CPCSetHashParam_t	CPCSetHashParam;
CPCSetKeyParam_t	CPCSetKeyParam;
CPCSignHash_t		CPCSignHash;
CPCVerifySignature_t	CPCVerifySignature;
CPCDestroyProvider_t	CPCDestroyProvider;

#if defined(__cplusplus)
} // extern "C"
#endif // defined(__cplusplus)

#endif /* WINCSPC_INT_H_INCLUDED */
