mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-03 22:56:33 +02:00
scd:p15: First step towards real CardOS 5 support.
* scd/iso7816.c (iso7816_select_path): Add arg from_cdf. * scd/app-nks.c (do_readkey): Adjust for this change. * scd/app-p15.c (CARD_TYPE_CARDOS_53): New. (IS_CARDOS_5): New. (card_atr_list): Add standard ATR for CardOS 5.3. (select_and_read_binary): Remove the fallback to record read hack. (select_and_read_record): New. (select_ef_by_path): Rework and support CardOS feature. (read_ef_prkdf): Use read record for CardOS. (read_ef_cdf): Ditto. (read_ef_aodf): Ditto. Also fix bug in the detection of other unsupported attribute types. (verify_pin): Use IS_CARDOS_5 macro. (app_select_p15): Force direct method for CardOS. Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
224e26cf7b
commit
fc287c0552
4 changed files with 218 additions and 76 deletions
|
@ -185,9 +185,12 @@ iso7816_select_file (int slot, int tag, int is_dir)
|
|||
}
|
||||
|
||||
|
||||
/* Do a select file command with a direct path. */
|
||||
/* Do a select file command with a direct path. If FROM_CDF is set
|
||||
* the starting point is the current direcory file (feature depends on
|
||||
* the card). */
|
||||
gpg_error_t
|
||||
iso7816_select_path (int slot, const unsigned short *path, size_t pathlen)
|
||||
iso7816_select_path (int slot, const unsigned short *path, size_t pathlen,
|
||||
int from_cdf)
|
||||
{
|
||||
int sw, p0, p1;
|
||||
unsigned char buffer[100];
|
||||
|
@ -202,7 +205,7 @@ iso7816_select_path (int slot, const unsigned short *path, size_t pathlen)
|
|||
buffer[buflen++] = *path;
|
||||
}
|
||||
|
||||
p0 = 0x08;
|
||||
p0 = from_cdf? 0x09 : 0x08;
|
||||
p1 = 0x0c; /* No FC return. */
|
||||
sw = apdu_send_simple (slot, 0, 0x00, CMD_SELECT_FILE,
|
||||
p0, p1, buflen, (char*)buffer );
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue