diff options
author | NIIBE Yutaka <[email protected]> | 2011-01-13 07:38:31 +0000 |
---|---|---|
committer | NIIBE Yutaka <[email protected]> | 2012-06-08 03:15:02 +0000 |
commit | dafa7aa621dfe36c5c6cf462d3ec0d6c614ab105 (patch) | |
tree | 402aff04fb98e28d0da1f4c52d031b8933ad5c0c | |
parent | Add provisions to build with Libgcrypt 1.6. (diff) | |
download | gnupg-dafa7aa621dfe36c5c6cf462d3ec0d6c614ab105.tar.gz gnupg-dafa7aa621dfe36c5c6cf462d3ec0d6c614ab105.zip |
fix wLangId in ccid-driver.c
This is not a part of pin pad support series of mine.
As I found the bug while I am preparing the patches, I report this.
As CCID protocol is little endian, wLangId of US English = 0x0409
is represented as two bytes of 0x09 then 0x04.
It is really confusing that the code like following is floating
around:
pin_verify -> wLangId = HOST_TO_CCID_16(0x0904);
But, it is 0x0409 (not 0x0904). It is defined in the documentation:
http://www.usb.org/developers/docs/USB_LANGIDs.pdf
and origin of this table is Microsoft. We can see it at:
http://msdn.microsoft.com/en-us/library/bb165625%28VS.80%29.aspx
Yes, it would be better not to hard-code 0x0409. It would be better
to try current locale of the user, or to use the first entry of string
descriptor. I don't have time to implement such a thing...
-rw-r--r-- | scd/ccid-driver.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/scd/ccid-driver.c b/scd/ccid-driver.c index 8c362d73c..3d66f1052 100644 --- a/scd/ccid-driver.c +++ b/scd/ccid-driver.c @@ -3133,8 +3133,8 @@ ccid_transceive_secure (ccid_driver_t handle, if (pinlen_min && pinlen_max && pinlen_min == pinlen_max) msg[17] |= 0x01; /* Max size reached. */ msg[18] = 0xff; /* bNumberMessage: Default. */ - msg[19] = 0x04; /* wLangId-High. */ - msg[20] = 0x09; /* wLangId-Low: English FIXME: use the first entry. */ + msg[19] = 0x09; /* wLangId-Low: English FIXME: use the first entry. */ + msg[20] = 0x04; /* wLangId-High. */ msg[21] = 0; /* bMsgIndex. */ /* bTeoProlog follows: */ msg[22] = handle->nonnull_nad? ((1 << 4) | 0): 0; |