Лабораторный практикум по изучению возможностей и приобретению практических навыков разработки приложений с использованием смарт-карт ASE фирмы Athena Smartcard Solutions Ltd. Бабенко Л.К - 13 стр.

UptoLike

вующего уровня карты. Так, для функции ASEHLChangePIN() –– это главный
(корневой) уровень карты, для функции ASEHLChangeKey() –– это тот уровень,
на котором находится ключ, который требуется изменить. Пример смены Глав-
ного ключа и PIN-кода карты приведен ниже.
// Изменение главного ключа карты.
printf( "\nИзменим главный ключ карты.\n" );
AseResult = ASEHLChangeKey( hAseCard, byCardOldMainKey,
byCardOldMainKey, byCardMainKey, SC_MAIN_KEY, 0 );
if(AseResult != 0)
{
ASEReaderClose(hAseReader);
exit(1);
}
printf( "Для продолжения нажмите любую
клавишу.\n" );
getch();
В качестве первого параметра выступает указатель на карту, получен-
ный после вызова функции ASECardPowerOn(), в качестве второготекущее
значение Главного ключа карты, который мы, собственно, и хотим изменить,
поэтому это значение совпадает с третьим параметром функциитекущим
значением ключа, который мы хотим изменить. Четвертым параметром следует
указать новое значение Главного
ключа карты, пятымсимвольное имя клю-
ча, который мы хотим изменить, шестымномер ключа доступа
(SC_ACCESS_KEY), если мы хотим изменить конкртентый ключ из набора
ключей доступа приложения или главного уровня карты. Правила вызова этой
функции более подробно описаны в п. 1.2.4.
// Изменение старого значения PIN на новое.
printf( "\nСмена PIN.\n" );
AseResult = ASEHLChangePIN( hAseCard, byCardMainKey,
byOldPIN, byPIN );
if (AseResult != 0)
{
ASEReaderClose(hAseReader);
exit(1);
}
printf( "Для
продолжения нажмите любую клавишу.\n" );
getch();
В этой функции все параметры аналогичны параметрам функции
ASEHLChangeKey(). Сначала требуется указать хэндл карты, затем Главный
ключ ИК, и, наконец, текущее и новое значение PIN-кода.
13