On a second thought, it is better to stay compatible with released
0.11.4 code, and still use ISO7814 pin_cmd. git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3271 c6295689-39f2-0310-b995-f0e70906c6a9
This commit is contained in:
parent
3b47022051
commit
eada3a7e1c
@ -3,6 +3,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (C) 2007 TUBITAK / UEKAE
|
* Copyright (C) 2007 TUBITAK / UEKAE
|
||||||
* contact: bilgi@pardus.org.tr
|
* contact: bilgi@pardus.org.tr
|
||||||
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
* License as published by the Free Software Foundation; either
|
* License as published by the Free Software Foundation; either
|
||||||
@ -214,10 +215,10 @@ akis_process_fci(sc_card_t *card, sc_file_t *file,
|
|||||||
|
|
||||||
if (file->type == SC_FILE_TYPE_DF) {
|
if (file->type == SC_FILE_TYPE_DF) {
|
||||||
if (perms & 0x04)
|
if (perms & 0x04)
|
||||||
sc_file_add_acl_entry(file, SC_AC_OP_LIST_FILES, SC_AC_CHV, 0x80);
|
sc_file_add_acl_entry(file, SC_AC_OP_LIST_FILES, SC_AC_CHV, 0);
|
||||||
} else {
|
} else {
|
||||||
if (!(perms & 0x04))
|
if (!(perms & 0x04))
|
||||||
sc_file_add_acl_entry(file, SC_AC_OP_READ, SC_AC_CHV, 0x80);
|
sc_file_add_acl_entry(file, SC_AC_OP_READ, SC_AC_CHV, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -332,18 +333,26 @@ akis_pin_cmd(struct sc_card *card, struct sc_pin_cmd_data *data, int *tries_left
|
|||||||
int r;
|
int r;
|
||||||
sc_apdu_t apdu;
|
sc_apdu_t apdu;
|
||||||
u8 buf[64];
|
u8 buf[64];
|
||||||
int p1 = 1, p2 = 0;
|
int p1, p2;
|
||||||
|
|
||||||
|
p2 = data->pin_reference;
|
||||||
|
|
||||||
if (data->cmd == SC_PIN_CMD_VERIFY) {
|
if (data->cmd == SC_PIN_CMD_VERIFY) {
|
||||||
|
// Reverse the bit for compatibility with 0.11.4 release
|
||||||
|
// pin_reference: 0x00 - 0x7f are Application PINs, 0x80 is SO PIN
|
||||||
|
// on AKIS: 0x80 - 0xff are Application PINs, 0x00 is SO PIN
|
||||||
|
p2 ^= 0x80;
|
||||||
|
data->pin_reference = p2;
|
||||||
// ISO7816 implementation works
|
// ISO7816 implementation works
|
||||||
return iso_ops->pin_cmd(card, data, tries_left);
|
return iso_ops->pin_cmd(card, data, tries_left);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data->cmd == SC_PIN_CMD_CHANGE) {
|
if (data->cmd == SC_PIN_CMD_CHANGE) {
|
||||||
p2 = data->pin_reference;
|
// This is AKIS specific
|
||||||
if (p2 != 0) {
|
if (p2 & 0x80) {
|
||||||
|
p1 = 1;
|
||||||
|
} else {
|
||||||
p1 = 2;
|
p1 = 2;
|
||||||
p2 &= 0x7f;
|
|
||||||
}
|
}
|
||||||
sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0x24, p1, p2);
|
sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0x24, p1, p2);
|
||||||
apdu.sensitive = 1;
|
apdu.sensitive = 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user