/* vim:set sw=4 ts=8 fileencoding=cp1251::Кодировка:WINDOWS-1251[АБЁЪЯабёъя] */
/*
 * Copyright(C) 2013 Проект ИОК
 *
 * Этот файл содержит информацию, являющуюся
 * собственностью компании Крипто Про.
 *
 * Разрешается повторное распространение и использование как в виде 
 * исходного кода, так и в двоичной форме, с изменениями или без, 
 * при соблюдении следующих условий: 
 *   1. При повторном распространении исходного кода должно оставаться 
 *      указанное выше уведомление об авторском праве, этот список 
 *      условий и последующий отказ от гарантий. 
 *   2. При повторном распространении двоичного кода должно сохраняться 
 *      указанная выше информация об авторском праве, этот список 
 *      условий и последующий отказ от гарантий в документации и/или 
 *      в других материалах, поставляемых при распространении. 
 * 
 * ЭТА ПРОГРАММА ПРЕДОСТАВЛЕНА БЕСПЛАТНО ВЛАДЕЛЬЦАМИ АВТОРСКИХ ПРАВ 
 * И/ИЛИ ДРУГИМИ СТОРОНАМИ "КАК ОНА ЕСТЬ" БЕЗ КАКОГО-ЛИБО ВИДА ГАРАНТИЙ, 
 * ВЫРАЖЕННЫХ ЯВНО ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ИМИ, 
 * ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ КОММЕРЧЕСКОЙ ЦЕННОСТИ И ПРИГОДНОСТИ ДЛЯ 
 * КОНКРЕТНОЙ ЦЕЛИ. НИ В КОЕМ СЛУЧАЕ, ЕСЛИ НЕ ТРЕБУЕТСЯ СООТВЕТСТВУЮЩИМ 
 * ЗАКОНОМ, ИЛИ НЕ УСТАНОВЛЕНО В УСТНОЙ ФОРМЕ, НИ ОДИН ВЛАДЕЛЕЦ АВТОРСКИХ 
 * ПРАВ И НИ ОДНО ДРУГОЕ ЛИЦО, КОТОРОЕ МОЖЕТ ИЗМЕНЯТЬ И/ИЛИ ПОВТОРНО 
 * РАСПРОСТРАНЯТЬ ПРОГРАММУ, КАК БЫЛО СКАЗАНО ВЫШЕ, НЕ НЕСЁТ 
 * ОТВЕТСТВЕННОСТИ, ВКЛЮЧАЯ ЛЮБЫЕ ОБЩИЕ, СЛУЧАЙНЫЕ, СПЕЦИАЛЬНЫЕ ИЛИ 
 * ПОСЛЕДОВАВШИЕ УБЫТКИ, В СЛЕДСТВИИ ИСПОЛЬЗОВАНИЯ ИЛИ НЕВОЗМОЖНОСТИ 
 * ИСПОЛЬЗОВАНИЯ ПРОГРАММЫ (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ПОТЕРЕЙ ДАННЫХ, 
 * ИЛИ ДАННЫМИ, СТАВШИМИ НЕПРАВИЛЬНЫМИ, ИЛИ ПОТЕРЯМИ ПРИНЕСЕННЫМИ ИЗ-ЗА 
 * ВАС ИЛИ ТРЕТЬИХ ЛИЦ, ИЛИ ОТКАЗОМ ПРОГРАММЫ РАБОТАТЬ СОВМЕСТНО С 
 * ДРУГИМИ ПРОГРАММАМИ), ДАЖЕ ЕСЛИ ТАКОЙ ВЛАДЕЛЕЦ ИЛИ ДРУГОЕ ЛИЦО БЫЛИ 
 * ИЗВЕЩЕНЫ О ВОЗМОЖНОСТИ ТАКИХ УБЫТКОВ
 *
 * Программный код, содержащийся в этом файле, предназначен
 * исключительно для целей обучения и не может быть использован
 * для защиты информации.
 *
 * Компания Крипто-Про не несет никакой
 * ответственности за функционирование этого кода.
 */

/*!
 * \file $RCSfile$
 * \version $Revision: 59519 $
 * \date $Date: 2010-01-13 15:36:15 +0300 (Wed, 13 Jan 2010) $
 * \author $Author: dedal $
 *
 * \brief Интерфейс тестового драйвера для загружаемого модуля 
 * "КриптоПро KTLS" под Unix
 *
 */

#ifndef	DRTKTLS_IO_H
#define	DRTKTLS_IO_H

#include "reader/support.h"
#include "WSKernelPart.h"
//#include "wincspc_int.h"

#ifndef CSP_LITE
# include <string.h>
# include <stdio.h>
#endif /* CSP_LITE */

#ifdef	__cplusplus
extern "C" {
#endif

#define MODNAME "drtktls_srv"
#define SUPPORT_DBMAX 256

typedef enum {
    Version1_2 = 0x0102,
    Version2_0 = 0x0200
}   DRTKTLS_VERISON;

typedef enum {
    Drtcsp_RN_Daemon_Magic  = 0x6E6D6452,
    Drtcsp_RN_Driver_Magic  = 0x56524472,
    Drtcsp_KE_Session_Magic = 0x4B736553,
    Drtcsp_KE_OKSetSK_Magic = 0x74706D45
}   DRTKTLS_MAGIC;


#define MAX_MINORS 80
#define DRTKTLS_MAX_CHANNEL MAX_MINORS

#define DRTKTLS_ATTACH		0x01
#define DRTKTLS_OPEN		0x02
#define DRTKTLS_DRVRND_OK	0x04
#define DRTKTLS_DRVKEY_OK	0x08
#define DRTKTLS_SESKEY_OK	0x10

/* Состояние канала */
typedef struct {
  size_t size;
  int minor;
  int state;
#if defined _KERNEL && defined SOLARIS
  dev_info_t     *dip;
#else
  void           *placeholder;
#endif
  PDRTKTLS_CTX pCtx;  
} DRTKTLS, *PDRTKTLS;

#define FROM_KERNEL 1
#define TO_KERNEL 2
extern int CPCAPI trans(unsigned char *data, size_t len, int dir, void *arg);
extern DWORD CPCAPI stdInitMemory(LPCPC_MEMORY_ARENA *pArena, LONG *PoolSizes, DWORD nPools);
extern void CPCAPI CPCSetLocks(LPCPC_CONFIG pConfig);

#ifdef	__cplusplus
}
#endif

#endif	/* DRTKTLS_IO_H */
