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

/*!
 * \file $RCSfile$
 * \version $Revision: 186620 $
 * \date $Date:: 2018-12-24 16:38:12 +0300#$
 * \author $Author: borodin $
 * \brief Функция проверки pin-кода.
 */

#include "ric_prj.h"

/*!
 * \brief Функция проверки pin-кода.
 */
DWORD ric_verify_pin(TRICContext *ctx, const char * pin, int *retries)
{
    DWORD code;
    BYTE apdu_verify[] = { 0, 0x20, 0x00, 0x00};
    /* Select pin file. */
    if (ctx->card_type == CardType_Magistra) {
	code = trust_select_application(ctx);
	if (code)
	    return code;
    }
    else {
	code = select_app( ctx);
	if( code )
	    return code;
    }
    /* verify pin */
    code = send_apdu(ctx, apdu_verify, (BYTE*)pin, PIN_LENGTH, NULL, NULL);
    if (code == (DWORD)SCARD_W_WRONG_CHV) {
	*retries = ctx->retries;
	return code;
    }
    
    return code;
}
/* end of file:$Id: ric_vpin.c 186620 2018-12-24 13:38:12Z borodin $ */
