diff options
author | Werner Koch <[email protected]> | 2008-09-23 10:36:09 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2008-09-23 10:36:09 +0000 |
commit | 2693db33d035d0b99d693d166c9abb2c8fdaa9e4 (patch) | |
tree | 27c7133960455cc3619e66659ce8b7e17ed62908 /scd/ccid-driver.c | |
parent | Support the Certifciate DO of the v2 OpenPGP cards. (diff) | |
download | gnupg-2693db33d035d0b99d693d166c9abb2c8fdaa9e4.tar.gz gnupg-2693db33d035d0b99d693d166c9abb2c8fdaa9e4.zip |
Untested fix for TPDU level exchange of large data (command chaining)
Diffstat (limited to '')
-rw-r--r-- | scd/ccid-driver.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/scd/ccid-driver.c b/scd/ccid-driver.c index 899f7ae17..52a397927 100644 --- a/scd/ccid-driver.c +++ b/scd/ccid-driver.c @@ -1971,8 +1971,9 @@ ccid_transceive_apdu_level (ccid_driver_t handle, apdulen = apdu_buflen; assert (apdulen); - /* The maximum length for a short APDU T=1 block is 261, for an - extra APDU T=1 block is 65544. */ + /* The maximum length for a short APDU T=1 block is 261. For an + extended APDU T=1 block the maximum length 65544; however + extended APDU exchange levele is not yet supported. */ if (apdulen > 261) return CCID_DRIVER_ERR_INV_VALUE; /* Invalid length. */ @@ -2119,8 +2120,11 @@ ccid_transceive (ccid_driver_t handle, assert (apdulen); /* Construct an I-Block. */ -#warning fixme: APDULEN may be larger - if (apdulen > 254) + /* Fixme: I am not sure whether limiting the length to 259 + as per CCID spec is required. The code blow chops the + APDU anyway into 128 byte blocks. Needs to be addressed + when supporting extended length APDUs. */ + if (apdulen > 259) return CCID_DRIVER_ERR_INV_VALUE; /* Invalid length. */ tpdu = msg+10; |