9816961b16280a55f591eb14079da3f0f740de45
[gnuk/gnuk.git] / ChangeLog
1 2012-09-25  Niibe Yutaka  <gniibe@fsij.org>
2
3         * tool/stlinkv2.py (main): Print out option bytes value.
4         Call reset_sys before blank_check.
5
6 2012-09-18  Niibe Yutaka  <gniibe@fsij.org>
7
8         * tool/stlinkv2.py (stlinkv2.option_bytes_erase)
9         (stlinkv2.flash_erase_all, stlinkv2.flash_erase_page): : Fix
10         OperationFailure (was OperationError).
11         (main): Call option_bytes_erase if it's not 0xff.
12
13 2012-09-12  Niibe Yutaka  <gniibe@fsij.org>
14
15         * src/sha256.c: Include <stdint.h>.
16
17         * src/sha256.h (SHA256_DIGEST_SIZE, SHA256_BLOCK_SIZE): Move
18         from sha256.c.
19
20 2012-08-29  Niibe Yutaka  <gniibe@fsij.org>
21
22         * tool/hub_ctrl.py (__main__): Fix to busnum (was: bunum).
23         Thanks to Henry Hu.
24
25 2012-08-03  Niibe Yutaka  <gniibe@fsij.org>
26
27         * Version 1.0.1.
28         * src/usb_desc.c (gnukStringSerial): Updated.
29         * src/main.c (ID_OFFSET): Fix.
30
31 2012-08-02  Niibe Yutaka  <gniibe@fsij.org>
32
33         * test/gnuk.py (gnuk_token.get_string): New.
34         * test/features/991_version_string.feature: New.
35
36 2012-07-21  Niibe Yutaka  <gniibe@fsij.org>
37
38         * Version 1.0.
39         * src/usb_desc.c (gnukStringSerial): Updated.
40
41         Documentation by Sphinx.
42         * doc/Makefile: New.
43         * doc/note: Old notes are moved here.
44
45 2012-07-20  Niibe Yutaka  <gniibe@fsij.org>
46
47         * test/features/002_get_data_static.feature: Support CERTDO enabled
48         Gnuk for the test of extended capabilities.
49         * test/features/802_get_data_static.feature: Ditto.
50         * test/features/402_get_data_static.feature: Ditto.
51
52 2012-07-10  Niibe Yutaka  <gniibe@fsij.org>
53
54         * test/features/*: Add test cases for PW1/PW3 of factory settings.
55
56         * test/features/202_keygen.feature: Add PSO signature test after
57         keygen.
58         * test/features/602_keygen.feature: Ditto.
59
60         Bug fix.
61         * src/openpgp-do.c (gpg_do_write_prvkey): Don't call ac_reset_*
62         here.
63         (proc_key_import): But call ac_reset_* here.
64         (gpg_do_keygen): Load private key for signing.
65
66         * tool/stlinkv2.py (stlinkv2.usb_disconnect): New.
67
68 2012-07-09  Niibe Yutaka  <gniibe@fsij.org>
69
70         * src/openpgp.c (cmd_pso): For decryption, return error sooner for
71         invalid data.
72
73         * tool/stlinkv2.py (stlinkv2.setup_gpio): Fix GPIOB_CRL.
74
75         * test/rsa_keys.py (integer_to_bytes_256): Rename from
76         integer_to_bytes and it should be exactly 256-byte long.
77
78 2012-07-06  Niibe Yutaka  <gniibe@fsij.org>
79
80         * Version 0.21.
81         * src/usb_desc.c (gnukStringSerial): Updated.
82
83         * boards/FST_01/board.h (VAL_GPIOACRL): Change for SPI flash.
84         * tool/stlinkv2.py (stlinkv2.setup_gpio): Likewise.
85         (stlinkv2.spi_flash_init, stlinkv2.spi_flash_select)
86         (stlinkv2.spi_flash_sendbyte, stlinkv2.spi_flash_read_id): New.
87         (main): Add SPI flash ROM id check.
88
89 2012-07-05  Niibe Yutaka  <gniibe@fsij.org>
90
91         * src/call-rsa.c (rsa_sign, rsa_decrypt): Don't need to setup N.
92
93         * polarssl-0.14.0/library/rsa.c (rsa_check_pubkey)
94         (rsa_check_privkey): Ifdef-out.
95
96         More tests.
97         * test/*: Add tests for admin-less mode.
98         * test/features/990_reset_passphrase.feature: This is now for
99         admin-less mode.
100         * test/features/970_key_removal.feature: Ditto.
101
102         * src/openpgp.c (cmd_change_password): Call ac_reset_admin when
103         admin-less mode.
104         (cmd_reset_user_password): Likewise.
105
106         * src/ac.c (ac_reset_admin, ac_fini): Clear ADMIN_AUTHORIZED.
107
108         Bug fix.
109         * src/ac.c (verify_admin): Call s2k with ADMIN_AUTHORIZED.
110
111 2012-07-04  Niibe Yutaka  <gniibe@fsij.org>
112
113         Bug fixes.
114         * src/ac.c (verify_admin_0): Compare PW_LEN and BUF_LEN.
115
116         * src/openpgp-do.c (gpg_do_chks_prvkey): Set do_ptr to NULL before
117         calling flash_do_write (which might cause GC).
118         (gpg_do_put_data, gpg_do_write_simple): Likewise.
119
120         * src/openpgp.c (cmd_reset_user_password): Write to
121         DO_KEYSTRING_PW1.
122
123 2012-07-03  Niibe Yutaka  <gniibe@fsij.org>
124
125         * test/features/040_passphrase_change.feature: New.
126         * test/features/203_passphrase_change.feature: New.
127         * test/features/210_compute_signature.feature: Rename (was:
128         203_compute_signature.feature)
129         * test/features/211_decryption.feature: Rename (was:
130         204_decryption.feature)
131
132 2012-07-02  Niibe Yutaka  <gniibe@fsij.org>
133
134         * tool/stlinkv2.py (stlinkv2.__init__): Don't call setAltInterface.
135
136 2012-06-30  Niibe Yutaka  <gniibe@fsij.org>
137
138         * src/openpgp.c (s2k): New.
139         (resetcode_s2k): Remove.
140         (cmd_reset_user_password, cmd_change_password): Use s2k (was:
141         sha256 directly or resetcode_s2k).
142         * src/openpgp-do.c (proc_resetting_code, gpg_do_write_prvkey):
143         Likewise.
144         * src/ac.c (verify_user_0, verify_admin): Likewise.
145
146 2012-06-29  Niibe Yutaka  <gniibe@fsij.org>
147
148         * regnual/Makefile: Don't copy usb_lld.c.
149
150 2012-06-28  Niibe Yutaka  <gniibe@fsij.org>
151
152         * test/features/204_decryption.feature: New.
153         * test/features/203_compute_signature.feature: New.
154         * test/features/202_keygen.feature: New.
155         * test/features/201_setup_passphrase.feature: New.
156         * test/features/200_key_removal.feature: New.
157
158         * test/rsa_keys.py (verify_signature): New.
159         (encrypt_with_pubkey): New.
160
161         * test/gnuk.py (gnuk_token): New method: increment_seq.
162         (gnuk_token.icc_send_cmd): Handle timeout.
163         (gnuk_token.cmd_genkey): New.
164         (gnuk_token.cmd_get_public_key): New.
165
166 2012-06-27  Niibe Yutaka  <gniibe@fsij.org>
167
168         * test/features/101_decryption.feature: New.
169         * test/features/100_compute_signature.feature: New.
170
171         * src/openpgp-do.c (gpg_do_chks_prvkey): Call flash_do_release before
172         flash_do_write.
173         (gpg_do_write_prvkey): Bug fix when GC occurs.
174
175         * src/openpgp.c (cmd_change_password): Support resetting to
176         factory setting of PW3.
177
178         * src/openpgp-do.c (gpg_do_write_prvkey): Don't reset signagure
179         counter here.
180         (proc_key_import): But reset here.
181         Call ac_reset_* when key is imported.
182
183 2012-06-26  Niibe Yutaka  <gniibe@fsij.org>
184
185         * test: New.
186
187 2012-06-25  Niibe Yutaka  <gniibe@fsij.org>
188
189         * tool/usb_strings.py: New.
190
191 2012-06-22  Niibe Yutaka  <gniibe@fsij.org>
192
193         * tool/stlinkv2.py (stlinkv2.blank_check): Add blank check of
194         Flash ROM.
195
196 2012-06-21  Niibe Yutaka  <gniibe@fsij.org>
197
198         * tool/asm-thumb/blank_check.S: New.
199
200 2012-06-20  Niibe Yutaka  <gniibe@fsij.org>
201
202         ST-Link/V2 flash ROM writer.
203         * tool/stlinkv2.py: New.
204         * tool/asm-thumb/opt_bytes_write.S: New.
205         * tool/asm-thumb/flash_write.S: New.
206
207 2012-06-19  Niibe Yutaka  <gniibe@fsij.org>
208
209         * Version 0.20.
210
211         * src/usb_desc.c (gnukStringSerial): Updated.
212
213 2012-06-18  Niibe Yutaka  <gniibe@fsij.org>
214
215         LED display output change.
216         * src/main.c (MAIN_TIMEOUT_INTERVAL): New.
217         (LED_TIMEOUT_INTERVAL, etc.): New values.
218         (main_mode, display_interaction): Remove.
219         (led_inverted, emit_led): New.
220         (display_status_code): Use emit_led.
221         (led_blink): Use LED_* for SPEC.
222         (main, fatal): New LED display output.
223         * src/gnuk.h (LED_ONESHOT, LED_TWOSHOTS, LED_SHOW_STATUS)
224         (LED_START_COMMAND, LED_FINISH_COMMAND, LED_FATAL): New semantics.
225         (main_thread): Remove.
226         * src/openpgp-do.c (gpg_do_keygen): Don't touch LED here.
227         * src/openpgp.c (get_pinpad_input): Call led_blink.
228         (cmd_pso, cmd_internal_authenticate): Don't touch LED here.
229         (GPGthread): Call led_blink.
230         * src/pin-cir.c (pinpad_getline): Change arg of led_blink.
231         * src/pin-dnd.c (pinpad_getline): Ditto.
232         * src/usb-icc.c (icc_handle_timeout): Ditto.
233         (icc_send_status): Call led_blink.
234         * src/usb_ctrl.c (gnuk_usb_event): Don't touch LED here.
235
236 2012-06-16  Niibe Yutaka  <gniibe@fsij.org>
237
238         Use SHA256 format for "external authenticate".
239         * tool/gnuk_upgrade.py (gpg_sign): SHA256 sign by "SCD PKAUTH".
240         (main): Not specify keygrip, but always use key for authentication.
241         * src/call-rsa.c (rsa_verify): It is SHA256 format (was: SHA1).
242         * src/openpgp.c (cmd_get_challenge): Don't add chip-id prefix.
243         (cmd_external_authenticate): Likewise.
244
245 2012-06-15  Niibe Yutaka  <gniibe@fsij.org>
246
247         * src/random.c (random_bytes_free): Clear out random bytes.
248
249         More protection improvements.
250         * src/random.c (RANDOM_BYTES_LENGTH): It's 32 now (was: 16).
251         * src/gnuk.h (struct key_data_internal): Remove check, random,
252         magic.  Add checksum.
253         (struct prvkey_data): Remove crm_encrypted.  Add iv and
254         checksum_encrypted.
255         * src/openpgp-do.c (encrypt, decrypt): Add IV argument.
256         (encrypt_dek, decrypt_dek): New.  It's in ECB mode.
257         (compute_key_data_checksum): New.
258         (gpg_do_load_prvkey): Handle initial vector and checksum.
259         Use decrypt_dek to decrypt DEK.  Clear DEK after use.
260         (calc_check32):Remove.
261         (gpg_do_write_prvkey): Use encrypt_dek to encrypt DEK.
262         (gpg_do_chks_prvkey): Likewise.
263
264         * polarssl-0.14.0/include/polarssl/aes.h (aes_crypt_cbc)
265         * polarssl-0.14.0/library/aes.c (aes_crypt_cbc): ifdef-out.
266
267         * src/configure (--enable-pinpad): Deprecate DND.
268
269 2012-06-14  Niibe Yutaka  <gniibe@fsij.org>
270
271         Protection improvement.
272         * src/openpgp.c (resetcode_s2k): New.
273         (cmd_reset_user_password): Use resetcode_s2k.
274         * src/openpgp-do.c (proc_resetting_code): Likewise.
275
276         * src/sha256.c (sha256_finish): Clear out CTX at the end.
277
278         * src/call-rsa.c (rsa_sign, rsa_decrypt, rsa_verify): Use
279         mpi_lset (was: mpi_read_string).
280         * polarssl-0.14.0/library/bignum.c (mpi_get_digit)
281         (mpi_read_string): ifdef-out.
282
283         KDF is now SHA-256 (was: SHA1).
284         * src/sha256.c: New file.  Based on the implementation by Dr Brian
285         Gladman.
286         * src/openpgp.c (cmd_change_password, cmd_reset_user_password):
287         Use sha256.
288         * src/openpgp-do.c (proc_resetting_code, gpg_do_write_prvkey): Likewise.
289         * src/ac.c (verify_user_0, calc_md, verify_admin): Likewise.
290         * src/crypt.mk (CRYPTSRC): Add sha256.c, removing sha1.c.
291         * src/gnuk.h (KEYSTRING_MD_SIZE): It's 32 for SHA-256.
292
293 2012-06-13  Niibe Yutaka  <gniibe@fsij.org>
294
295         Bug fixes.
296         * src/main.c (display_interaction): Assign to main_mode.
297         * src/openpgp.c (cmd_change_password): Bug fix for admin less mode
298         to admin full mode.  Variable who_old should be admin_authorized.
299
300         Key generation is configure option.
301         * src/configure (keygen): Add --enable-keygen option.
302         * src/Makefile.in (UDEFS): Add definition of KEYGEN_SUPPORT.
303         * src/call-rsa.c [KEYGEN_SUPPORT] (rsa_genkey): Conditionalize.
304         * src/random.c [KEYGEN_SUPPORT] (random_byte): Ditto.
305         * src/openpgp.c [KEYGEN_SUPPORT] (cmd_pgp_gakp): Ditto.
306         * src/openpgp-do.c [KEYGEN_SUPPORT] (gpg_do_keygen): Ditto.
307         * polarssl-0.14.0/include/polarssl/config.h: Ditto.
308         * polarssl-0.14.0/library/bignum.c [POLARSSL_GENPRIME]
309         (mpi_inv_mod): Unconditionalize.
310
311 2012-06-08  Niibe Yutaka  <gniibe@fsij.org>
312
313         * polarssl-0.14.0/library/bignum.c (mpi_cmp_mpi): Bug fix.
314         Though it doesn't matter for Gnuk usage.
315
316         Emit LED light while computation (or asking user input).
317         * src/usb-icc.c (icc_handle_timeout): Call led_blink.
318         * src/openpgp.c (cmd_pso, cmd_internal_authenticate): Call
319         LED_WAIT_MODE, LED_STATUS_MODE to show "it's under computation".
320         * src/openpgp-do.c (gpg_do_keygen): Ditto.
321         * src/gnuk.h (LED_WAIT_MODE): Rename (was: LED_INPUT_MODE).
322         * src/main.c (display_interaction): Change the behavior of LED,
323         now, it's mostly ON (was: mostly OFF).
324
325 2012-06-07  Niibe Yutaka  <gniibe@fsij.org>
326
327         * src/openpgp.c (cmd_internal_authenticate): Add check for input
328         length.
329
330         Implement key generation.
331         * src/openpgp.c (cmd_pgp_gakp): Call gpg_do_keygen.
332         * src/openpgp-do.c (proc_key_import): Call with modulus = NULL.
333         (gpg_do_keygen): New function.
334         (gpg_reset_digital_signature_counter): New function.
335         (gpg_do_write_prvkey): New argument MODULUS.  Call
336         gpg_reset_digital_signature_counter.
337         * src/call-rsa.c (rsa_genkey): New function.
338         * src/random.c (random_byte): New function.
339
340         PolarSSL modification.
341         * polarssl-0.14.0/library/rsa.c (rsa_gen_key): Don't set D, DP,
342         DQ, and QP.  It's only for key generation.
343         * polarssl-0.14.0/library/rsa.c (rsa_gen_key, rsa_pkcs1_encrypt):
344         Change f_rng function return type.
345         * polarssl-0.14.0/include/polarssl/rsa.h: Likewise.
346         * polarssl-0.14.0/library/bignum.c (mpi_is_prime, mpi_gen_prime):
347         Change f_rng function return type.
348         * polarssl-0.14.0/include/polarssl/bignum.h: Likewise.
349
350 2012-06-06  Niibe Yutaka  <gniibe@fsij.org>
351
352         * Version 0.19.
353
354         * src/usb_desc.c (gnukStringSerial): Updated.
355
356         * regnual/regnual.c (fetch): Better implementation.
357
358 2012-06-05  Niibe Yutaka  <gniibe@fsij.org>
359
360         Firmware update key handling.
361         * tool/gnuk_put_binary.py (GnukToken.cmd_get_response): Handle
362         larger data such as card holder certificate.
363         (GnukToken.cmd_write_binary): Bug fix for cert do write.
364         (GnukToken.cmd_read_binary): New.
365         (main): Support firmware update key.
366
367         Take advantage of the Thumb-2 "rbit" instruction.
368         * regnual/regnual.c (fetch): Reverse bits.
369         * src/usb_ctrl.c (rbit): New.  Deleted reverse32.
370         (download_check_crc32): Use rbit.
371         * tool/gnuk_upgrade.py (crc32): Just use binascii.crc32.
372         (crctab): Remove.
373
374 2012-06-04  Niibe Yutaka  <gniibe@fsij.org>
375
376         Card holder certificate data object bug fixes.
377         * tool/gnuk_put_binary_libusb.py (gnuk_token.cmd_get_response):
378         Handle larger data such as card holder certificate.
379         * src/flash.c (flash_write_binary): Bug fix.  Call
380         flash_check_blank with p + offset.
381         * src/gnuk.h (FLASH_CH_CERTIFICATE_SIZE): Define here (was: flash.c).
382
383         Implement CRC32 check for firmware update.
384         * src/usb_ctrl.c (download_check_crc32): New.
385         * regnual/regnual.c (calc_crc32): New.
386         (regnual_ctrl_write_finish): Call calc_crc32.
387         * tool/gnuk_upgrade.py (crc32): New.
388         (regnual.download): Check crc32code.
389
390         * regnual/regnual.c (regnual_ctrl_write_finish): Bug fix.
391
392 2012-06-01  Niibe Yutaka  <gniibe@fsij.org>
393
394         Support firmware update with public key authentication.
395         * tool/gnuk_upgrade.py (gpg_sign): New.
396         * tool/gnuk_put_binary_libusb.py (main): Support firmware update
397         key registration.
398
399         Update of reGNUal.
400         * regnual/regnual.c (main): Follow the change of usb_lld_init.
401         (regnual_config_desc): Include interface descriptor.
402         (usb-strings.c.inc): Change the file name.
403         * regnual/Makefile (regnual.o): Depend on sys.h.
404         * src/configure (usb-strings.c.inc): ifdef-out
405         gnuk_revision_detail and gnuk_config_options (for reGNUal).
406         * src/usb_desc.c (USB_STRINGS_FOR_GNUK): Define.
407
408         USB bug fixes.
409         * src/usb_ctrl.c (gnuk_usb_event): Bug fix for handling
410         USB_EVENT_CONFIG.  Do nothing when current_conf == value.
411         * src/usb_lld.c (std_clear_feature): Bug fix.  Always clear DTOG.
412         (usb_lld_init): New argument for FEATURE.
413
414 2012-05-31  Niibe Yutaka  <gniibe@fsij.org>
415
416         * polarssl-0.14.0/library/rsa.c (rsa_pkcs1_verify): BUF size is
417         256 (was: 1024).
418         * src/call-rsa.c (rsa_verify): It's SIG_RSA_SHA1.
419         * src/openpgp.c (cmd_external_authenticate): Follow the change of
420         rsa_verify.
421
422         Support "firmware update" keys.
423         * src/flash.c (flash_write_binary): Support update keys.
424         * src/gnuk.h (FILEID_UPDATE_KEY_0, FILEID_UPDATE_KEY_1)
425         (FILEID_UPDATE_KEY_2,FILEID_UPDATE_KEY_3): New.
426         * src/gnuk.ld.in (_updatekey_store): New.
427         * src/openpgp.c (FILE_EF_UPDATE_KEY_0, FILE_EF_UPDATE_KEY_1)
428         (FILE_EF_UPDATE_KEY_2, FILE_EF_UPDATE_KEY_3): New.
429         (gpg_get_firmware_update_key): New.
430         (cmd_read_binary): Support update keys and certificate.
431         (modify_binary): New.
432         (cmd_update_binary, cmd_write_binary): Use modify_binary.
433         (cmd_external_authenticate): Support up to four keys.
434
435         Version string of system service is now USB string.
436         * src/sys.h (unique_device_id): Define here, not as system
437         service.
438         * src/sys.c (sys_version): Version string for system service.
439         * src/usb_desc.c (String_Descriptors): Add sys_version.
440         * src/usb_conf.h (NUM_STRING_DESC): 7 (was: 6).
441         * src/gnuk.ld.in (.sys.version): New section.
442
443 2012-05-30  Niibe Yutaka  <gniibe@fsij.org>
444
445         * src/openpgp.c (CHALLENGE_LEN): New.
446         (cmd_external_authenticate): Authentication by response with
447         public key.
448         (cmd_get_challenge): 16-byte is enough for challenge.
449
450 2012-05-29  Niibe Yutaka  <gniibe@fsij.org>
451
452         * src/call-rsa.c (rsa_verify): New function.
453
454         * polarssl-0.14.0/include/polarssl/rsa.h (rsa_pkcs1_verify)
455         * polarssl-0.14.0/library/rsa.c (rsa_pkcs1_verify): Fix API.
456
457         * src/usb_conf.h (NUM_STRING_DESC): Incremented to 6 (was: 4).
458         * src/configure: Generate strings for revision detail and config
459         options.
460         * src/usb_desc.c (gnuk_revision_detail, gnuk_config_options): New.
461
462         * src/main.c (main) [DFU_SUPPORT]: Kill DFU and install .sys.
463
464         * src/config.h.in (FLASH_PAGE_SIZE): New.
465         * src/configure: Support FLASH_PAGE_SIZE for config.h
466         * boards/*/board.h (FLASH_PAGE_SIZE): Remove.
467         * src/flash.c (FLASH_PAGE_SIZE): Remove.
468
469         * src/sys.c (reset): Don't depend if DFU_SUPPORT or not.
470         (flash_erase_all_and_exec): Rename and change the argument.
471         * src/gnuk.ld.in (__flash_start__): Real flash ROM address,
472         regardless of DFU_SUPPORT.
473         * src/main.c (main): Call flash_erase_all_and_exec with SRAM
474         address.
475
476         * polarssl-0.14.0/library/aes.c (FT0, FT1, FT2): Specify sections
477         in detail, so that addresses won't be affected by compiler.
478         * src/gnuk.ld.in (.sys): Define sections in detail.
479
480         * boards/STBEE_MINI/board.h (SET_USB_CONDITION, GPIO_USB)
481         (IOPORT_USB, SET_LED_CONDITION, GPIO_LED, IOPORT_LED)
482         (FLASH_PAGE_SIZE): New.
483         * boards/STBEE_MINI/board.c (USB_Cable_Config, set_led): Remove.
484
485         * boards/STBEE/board.h (SET_USB_CONDITION, GPIO_USB, IOPORT_USB)
486         (SET_LED_CONDITION, GPIO_LED, IOPORT_LED, FLASH_PAGE_SIZE): New.
487         * boards/STBEE/board.c (USB_Cable_Config, set_led): Remove.
488
489         * boards/CQ_STARM/board.h (SET_USB_CONDITION)
490         (SET_LED_CONDITION, GPIO_LED, IOPORT_LED, FLASH_PAGE_SIZE): New.
491         * boards/CQ_STARM/board.c (USB_Cable_Config, set_led): Remove.
492
493 2012-05-28  Niibe Yutaka  <gniibe@fsij.org>
494
495         * boards/*/board.c (hwinit0): Removed...
496         * boards/common/hwinit.c (hwinit0): ... and define here.
497         (hwinit0) [DFU_SUPPORT]:  Don't set SCB->VTOR here.
498         * src/sys.c (reset) [DFU_SUPPORT]: Set SCB->VTOR here.
499         (flash_write): Range check.
500
501         * polarssl-0.14.0/library/aes.c (FT0, FT1, FT2): Specify the
502         section ".sys", so that we will have more room for flash ROM.
503         * src/gnuk.ld.in (.sys): Add alignment settings.
504
505         * tool/gnuk_upgrade.py (main): First 4096-byte of Gnuk is system
506         block.  Don't send it to reGNUal.
507
508         * regnual/sys.c (entry): Fix clearing BSS.  It is called with all
509         interrupts disabled.
510
511         * regnual/regnual.ld (_flash_start): It's 0x08001000 now, because
512         there is system block now (was: 0x08000000).
513
514 2012-05-26  Niibe Yutaka  <gniibe@fsij.org>
515
516         * src/sys.c (reset): Set SCR->VCR here.
517
518 2012-05-25  Niibe Yutaka  <gniibe@fsij.org>
519
520         * src/gnuk.ld.in (.sys): New section.
521
522         * boards/OLIMEX_STM32_H103/board.h (SET_USB_CONDITION, GPIO_USB)
523         (IOPORT_USB, SET_LED_CONDITION, GPIO_LED, IOPORT_LED)
524         (FLASH_PAGE_SIZE): New.
525         * boards/OLIMEX_STM32_H103/board.c (USB_Cable_Config, set_led):
526         Remove.
527
528         * boards/STM32_PRIMER2/board.h (SET_USB_CONDITION, GPIO_USB)
529         (IOPORT_USB, SET_LED_CONDITION, GPIO_LED, IOPORT_LED)
530         (FLASH_PAGE_SIZE): New.
531         * boards/STM32_PRIMER2/board.c (USB_Cable_Config, set_led):
532         Remove.
533
534         * boards/FST_01_00/board.h (SET_USB_CONDITION, GPIO_USB)
535         (IOPORT_USB, SET_LED_CONDITION, GPIO_LED, IOPORT_LED)
536         (FLASH_PAGE_SIZE): New.
537         * boards/FST_01_00/board.c (USB_Cable_Config, set_led): Remove.
538
539         * boards/FST_01/board.h (SET_USB_CONDITION, GPIO_USB, IOPORT_USB)
540         (SET_LED_CONDITION, GPIO_LED, IOPORT_LED, FLASH_PAGE_SIZE): New.
541         * boards/FST_01/board.c (USB_Cable_Config, set_led): Remove.
542
543         * regnual/sys-stm8s-discovery.h, sys-stbee.h: Remove.
544
545         * boards/STM8S_DISCOVERY/board.h (SET_USB_CONDITION)
546         (SET_LED_CONDITION, GPIO_LED, IOPORT_LED, FLASH_PAGE_SIZE): New.
547         * boards/STM8S_DISCOVERY/board.c (USB_Cable_Config, set_led):
548         Remove.
549
550         * regnual/Makefile: Add -I ../src to CFLAGS.
551
552         * regnual/regnual.ld (vector): New.
553
554         * regnual/sys.c: Remove implementation, but jump to vector by sys.h.
555
556         * src/Makefile.in: Follow change of files.
557
558         * src/configure: Undo changes of 2012-05-22.
559
560         * boards/common/hw_config.c: Remove.  Mov function to sys.c.
561         * src/flash.c: Move functions to sys.c.
562         * src/sys.c: New.
563
564         * src/main.c (main): Call flash_mass_erase_and_exec.
565
566         * src/usb_lld.c: Include sys.h.
567
568         * src/usb_lld_sys.c: Remove.  Move interrupt handler to...
569         * src/usb_ctrl.c: ... this file.
570
571         * regnual/sys.c (clock_init, gpio_init, flash_unlock): Removed.
572         (entry): Rename (was: reset).
573
574 2012-05-24  Niibe Yutaka  <gniibe@fsij.org>
575
576         * src/main.c (good_bye): Care LSB of function pointer.
577         (flash_mass_erase_and_exec): Implemented in C.
578
579 2012-05-23  Niibe Yutaka  <gniibe@fsij.org>
580
581         * regnual/sys-stm8s-discovery.h: New.
582
583         * src/main.c (flash_mass_erase_and_exec, good_bye): New.
584         (main): Call good_bye.
585
586         * tool/gnuk_upgrade.py (regnual.protect): New.
587         (main): Call regnual.protect().
588
589         * regnual/regnual.c (regnual_setup): Don't call flash_write here.
590         (regnual_ctrl_write_finish): But call here.
591         (USB_REGNUAL_RESULT): New.
592
593         * regnual/sys.c (flash_protect): New.
594
595 2012-05-22  Niibe Yutaka  <gniibe@fsij.org>
596
597         * src/configure (../regnual/sys.h): Create symblic link.
598
599         * src/usb_ctrl.c: Rename (was: usb_prop.c).
600
601         * regnual/types.h, regnual/sys.c, regnual/regnual.ld: New.
602         * regnual/regnual.c, regnual/Makefile: New.
603         * regnual/sys-stbee.h: New.
604
605         * src/usb_lld.c: Support FREE_STANDING environment as well as
606         under ChibiOS/RT.
607         (usb_lld_init): Call usb_lld_sys_init.  Don't call user defined
608         method.  Call usb_lld_set_configuration.
609         (usb_lld_shutdown): Call usb_lld_sys_shutdown.
610         (Vector90): Move to usb_lld_sys.c.
611         (usb_interrupt_handler): Export to global.
612
613         * src/usb_lld_sys.c: New.
614
615         * src/usb_prop.c (Device_Method): Remove gnuk_device_init.
616         (gnuk_device_init): Remove.
617
618 2012-05-19  Niibe Yutaka  <gniibe@fsij.org>
619
620         * src/usb_lld.c (handle_datastage_in): Bug fix, erable RX when
621         sending ZLP.  It will be possible to get OUT transaction soon
622         after IN transaction.
623
624 2012-05-18  Niibe Yutaka  <gniibe@fsij.org>
625
626         * src/usb_lld.c (handle_datastage_out): Fix rx copying.
627         (handle_setup0): Bug fix not stalling TX, it will be possible
628         to go IN transaction, soon after OUT transaction.
629
630         * src/usb_lld.h (USB_SETUP_SET, USB_SETUP_GET): New.
631         (usb_device_method.ctrl_write_finish): New.
632         (usb_device_method.setup): Merge setup_with_data, and
633         setup_with_nodata.
634
635         * src/usb_lld.c (usb_lld_shutdown, usb_lld_prepare_shutdown): New.
636         (handle_setup0): Call ->setup.
637         (handle_in0): Call ->ctrl_write_finish.
638
639         * src/usb_prop.c (vcom_port_data_setup): Merge
640         vcom_port_setup_with_nodata.
641         (download_check_crc32): New.
642         (gnuk_setup): Merge gnuk_setup_with_data and
643         gnuk_setup_with_nodata.
644         (gnuk_ctrl_write_finish): New.
645
646 2012-05-17  Niibe Yutaka  <gniibe@fsij.org>
647
648         * tool/gnuk_upgrade.py: New tool.
649
650         * src/gnuk.h (ICC_STATE_EXITED, ICC_STATE_EXEC_REQUESTED): New.
651
652         * src/openpgp.c (INS_EXTERNAL_AUTHENTICATE)
653         (cmd_external_authenticate): New.
654         (INS_GET_CHALLENGE, cmd_get_challenge): New.
655
656         * src/usb-icc.c (USBthread): Finish the thread with
657         ICC_STATE_EXITED, after EXTERNAL_AUTHENTICATE.
658
659         * src/usb_prop.c (gnuk_setup_endpoints_for_interface): Add STOP
660         argument.
661         (gnuk_usb_event): Disable all endpoints when configure(0).
662         (vcom_port_data_setup): Check direction and support
663         USB_CDC_REQ_SET_LINE_CODING.
664         (vcom_port_setup_with_nodata): Check direction.
665         (gnuk_setup_with_data): Check direction and add FSIJ_GNUK device
666         requests.
667         (gnuk_setup_with_nodata): Likewise.
668
669         * src/usb_lld.c (LAST_OUT_DATA): Remove.
670         (handle_datastage_out): Cleanup and call st103_ep_set_rxtx_status.
671         (handle_datastage_in): Call st103_ep_set_rxtx_status and
672         st103_ep_set_tx_status.
673         (handle_setup0): Likewise.
674         (handle_out0): Remove LAST_OUT_DATA.
675         (std_none, std_get_status, std_clear_feature, std_set_feature)
676         (std_set_address, std_get_descriptor, std_get_configuration)
677         (std_set_configuration, std_get_interface, std_set_interface):
678         Check direction.
679         (handle_setup0): Add length for setup_with_data.
680
681 2012-05-16  Niibe Yutaka  <gniibe@fsij.org>
682
683         * tool/gnuk_put_binary.py (main): Fix fileid.
684         * tool/gnuk_put_binary_libusb.py: Ditto.
685
686         * src/openpgp.c (FILE_EF_RANDOM): Remove.
687         (cmd_update_binary, cmds): ifdef CERTDO_SUPPORT.
688         (cmd_write_binary): Fix fileid.
689
690         * src/flash.c (flash_check_blank): Always enable.
691         (flash_erase_binary): ifdef CERTDO_SUPPORT.
692         (flash_write_binary): Call flash_check_blank.
693
694 2012-05-15  Niibe Yutaka  <gniibe@fsij.org>
695
696         * Version 0.18.
697
698         * src/usb_desc.c (gnukStringSerial): Updated.
699
700         * src/main.c (EP3_IN_Callback, EP5_OUT_Callback): Move from
701         usb_endp.c.
702
703         * src/usb_endp.c: Remove.
704
705 2012-05-14  Niibe Yutaka  <gniibe@fsij.org>
706
707         * tool/gnuk_remove_keys.py: New.
708
709         * src/openpgp-do.c (proc_key_import): Fix checking extended header.
710
711         * src/hardclock.c: Remove.
712
713         * src/usb_prop.c (MSC_INTERFACE_NO): New.
714         (gnuk_setup_endpoints_for_interface): Cleanup with MSC_INTERFACE_NO.
715         (gnuk_setup_with_data, gnuk_setup_with_nodata): Likewise.
716
717         * src/usb-msc.c: Rename from usb_msc.c.
718
719         * src/usb-msc.h: Rename from usb_msc.h.
720
721         * src/Makefile.in: Follow the rename of usb-msc.c and remove of
722         hardclock.c.
723
724         * src/pin-dnd.c, src/usb_prop.c: Follow the rename of usb-msc.h.
725
726 2012-05-12  Niibe Yutaka  <gniibe@fsij.org>
727
728         * src/usb_msc.c (ep6_out): Rename (was: ep7_out).
729         (usb_start_receive): Use ep6_out and ENDP6.
730         (EP6_OUT_Callback): Rename (was: EP7_OUT_Callback).
731         Use ep6_out and ENDP6.
732         (msc_handle_command): Use ep6_out and ENDP6.
733
734         * src/main.c (main): Wait USB reset.
735
736         * src/usb-icc.c (EP1_OUT_Callback): Rename from EP2_OUT_Callback.
737         (USBthread): Use ENDP1 for both of epi_init and epo_init.
738
739         * src/usb_conf.h (ENDP1_RXADDR, ENDP2_TXADDR, ENDP6_RXADDR): New.
740         (ENDP3_TXADDR, ENDP4_TXADDR, ENDP5_RXADDR): New value.
741         (ENDP7_RXADDR): Remove.
742
743         * src/usb_desc.c (gnukConfigDescriptor): Use endpoint OUT1 (was
744         IN2), endpoint OUT6 (IN7).
745
746         * src/usb_prop.c (gnuk_setup_endpoints_for_interface): Use ENDP1
747         and ENDP6 for both directions.
748
749 2012-05-11  Niibe Yutaka  <gniibe@fsij.org>
750
751         * src/configure (--vidpid): New mandatory option.
752
753         * GNUK_USB_DEVICE_ID: New file.
754
755         * src/usb_desc.c (gnukDeviceDescriptor): Include
756         usb-vid-pid-ver.c.inc.
757         (gnukStringVendor, gnukStringProduct): Remove.  It's in the
758         file, usb-string-vender-product.c.inc.
759
760         * src/Makefile.in (distclean): Delete *.inc.
761
762         * src/usb_prop.c (vcom_port_setup_with_nodata) Rename.
763         (vcom_port_data_setup): Rename and fix return value.
764
765         * src/usb-cdc.h (VIRTUAL_COM_PORT_DATA_SIZE)
766         (VIRTUAL_COM_PORT_INT_SIZE): New.
767
768         * src/main.c (#include): Add usb-cdc.h.
769         * src/usb_desc.c (#include): Add usb-cdc.h.
770         * src/usb_endp.c (#include): Add usb_lld.h.
771
772         * src/configure ($help): Add FST_01.
773
774 2012-05-10  Niibe Yutaka  <gniibe@fsij.org>
775
776         * STM32_USB-FS-Device_Driver, Virtual_COM_Port: Remove.
777
778         * src/usb_lld.c (#include): Don't include usb_lib.h.
779         (RECIPIENT, REG_BASE PMA_ADDR, CNTR, ISTR, FNR, DADDR, BTABLE)
780         (ISTR_CTR, ISTR_DOVR, ISTR_ERR, ISTR_WKUP, ISTR_SUSP, ISTR_RESET)
781         (ISTR_SOF, ISTR_ESOF, ISTR_DIR, ISTR_EP_ID, CLR_CTR, CLR_DOVR)
782         (CLR_ERR, CLR_WKUP, CLR_SUSP, CLR_RESET, CLR_SOF, CLR_ESOF)
783         (CNTR_CTRM, CNTR_DOVRM, CNTR_ERRM, CNTR_WKUPM, CNTR_SUSPM)
784         (CNTR_RESETM, CNTR_SOFM, CNTR_ESOFM, CNTR_RESUME, CNTR_FSUSP)
785         (CNTR_LPMODE, CNTR_PDWN, CNTR_FRES, DADDR_EF, DADDR_ADD)
786         (EP_CTR_RX, EP_DTOG_RX, EPRX_STAT, EP_SETUP, EP_T_FIELD, EP_KIND)
787         (EP_CTR_TX, EP_DTOG_TX, EPTX_STAT, EPADDR_FIELD, EPREG_MASK)
788         (EP_TX_DIS, EP_TX_STALL, EP_TX_NAK, EP_TX_VALID, EPTX_DTOG1)
789         (EPTX_DTOG2, EP_RX_DIS, EP_RX_STALL, EP_RX_NAK, EP_RX_VALID)
790         (EPRX_DTOG1, EPRX_DTOG2): New. Compatible to ST's USB-FS-Device_Lib.
791         (CH_IRQ_HANDLER): Call usb_interrupt_handler (was: USB_Istr).
792         (EP1_IN_Callback, EP2_IN_Callback, EP3_IN_Callback)
793         (EP4_IN_Callback, EP5_IN_Callback, EP6_IN_Callback)
794         (EP7_IN_Callback, EP1_OUT_Callback, EP2_OUT_Callback)
795         (EP3_OUT_Callback, EP4_OUT_Callback, EP5_OUT_Callback)
796         (EP6_OUT_Callback, EP7_OUT_Callback): New.  Implement here.
797         Compatible to ST's USB-FS-Device_Lib.
798         (USB_MAX_PACKET_SIZE): New.
799         (GET_STATUS, CLEAR_FEATURE, RESERVED1, SET_FEATURE, RESERVED2)
800         (SET_ADDRESS, GET_DESCRIPTOR, SET_DESCRIPTOR, GET_CONFIGURATION)
801         (SET_CONFIGURATION, GET_INTERFACE, SET_INTERFACE)
802         (SYNCH_FRAME,TOTAL_REQUEST): New for USB control transfer.
803         (enum CONTROL_STATE): New for state machine of control pipe.
804         (enum FEATURE_SELECTOR): New.
805         (struct DATA_INFO, struct CONTROL_INFO, struct DEVICE_INFO): New.
806         (ctrl_p, dev_p, data_p, Control_Info, Device_Info, Data_Info):
807         New.
808         (usb_lld_stall_tx, usb_lld_stall_rx)
809         (usb_lld_tx_data_len, usb_lld_txcpy, usb_lld_tx_enable)
810         (usb_lld_write, usb_lld_rx_enable, usb_lld_rx_data_len)
811         (usb_lld_rxcpy): Move from usb_lld.h and not inline.
812         (usb_lld_reset, usb_lld_setup_endpoint)
813         (usb_lld_set_configuration, usb_lld_current_configuration)
814         (usb_lld_set_feature, usb_lld_set_data_to_send): New.
815         (usb_lld_to_pmabuf, usb_lld_from_pmabuf): Clean up.
816         (usb_lld_init): New implementation.
817         (st103_set_btable, st103_get_istr, st103_set_istr, st103_set_cntr)
818         (st103_set_daddr, st103_set_epreg, st103_get_epreg)
819         (st103_set_tx_addr, st103_get_tx_addr, st103_set_tx_count)
820         (st103_get_tx_count, st103_set_rx_addr, st103_get_rx_addr)
821         (st103_set_rx_buf_size, st103_get_rx_count, st103_ep_clear_ctr_rx)
822         (st103_ep_clear_ctr_tx, st103_ep_set_rxtx_status)
823         (st103_ep_set_rx_status, st103_ep_get_rx_status)
824         (st103_ep_set_tx_status, st103_ep_get_tx_status)
825         (st103_ep_clear_dtog_rx, st103_ep_clear_dtog_tx): New lower-level
826         functions for USB related registers access.
827         (usb_interrupt_handler, usb_handle_transfer)
828         (handle_datastage_out, handle_datastage_in, handle_setup0)
829         (handle_in0, handle_out0)
830         (std_none, std_get_status, std_clear_feature, std_set_feature,
831         std_set_address, std_get_descriptor, std_get_configuration,
832         std_set_configuration, std_get_interface, std_set_interface)
833         (std_request_handler): New USB stack implementation.
834
835         * src/usb_lld.h (usb_lld_stall_tx, usb_lld_stall_rx)
836         (usb_lld_tx_data_len, usb_lld_txcpy, usb_lld_tx_enable)
837         (usb_lld_write, usb_lld_rx_enable, usb_lld_rx_data_len)
838         (usb_lld_rxcpy): Those are not inline functions anymore.
839         (USB_DEVICE_DESCRIPTOR_TYPE, USB_CONFIGURATION_DESCRIPTOR_TYPE)
840         (USB_STRING_DESCRIPTOR_TYPE, USB_INTERFACE_DESCRIPTOR_TYPE)
841         (USB_ENDPOINT_DESCRIPTOR_TYPE, STANDARD_ENDPOINT_DESC_SIZE)
842         (ENDP0, ENDP1, ENDP2, ENDP3, ENDP4, ENDP5, ENDP6, ENDP7)
843         (EP_BULK, EP_CONTROL, EP_ISOCHRONOUS, EP_INTERRUPT)
844         (DEVICE_RECIPIENT, INTERFACE_RECIPIENT, ENDPOINT_RECIPIENT)
845         (ENDPOINT_RECIPIENT, OTHER_RECIPIENT)
846         (DEVICE_DESCRIPTOR, CONFIG_DESCRIPTOR, STRING_DESCRIPTOR)
847         (INTERFACE_DESCRIPTOR, ENDPOINT_DESCRIPTOR)
848         (REQUEST_TYPE, STANDARD_REQUEST, CLASS_REQUEST, VENDOR_REQUEST)
849         (USB_UNSUPPORT, USB_SUCCESS)
850         (USB_EVENT_RESET, USB_EVENT_ADDRESS, USB_EVENT_CONFIG)
851         (USB_EVENT_SUSPEND, USB_EVENT_WAKEUP, USB_EVENT_STALL)
852         (USB_SET_INTERFACE, USB_GET_INTERFACE, USB_QUERY_INTERFACE)
853         (UNCONNECTED, ATTACHED, POWERED, SUSPENDED, ADDRESSED)
854         (CONFIGURED, USB_Cable_Config): New.  Compatible to ST's
855         USB-FS-Device_Lib.
856         (struct Descriptor, struct usb_device_method)
857         (Device_Descriptor, Config_Descriptor, String_Descriptors)
858         (STM32_USB_IRQ_PRIORITY, bDeviceState, Device_Method)
859         (usb_lld_init, usb_lld_reset, usb_lld_setup_endpoint)
860         (usb_lld_set_configuration, usb_lld_current_configuration)
861         (usb_lld_set_feature, usb_lld_set_data_to_send): New API.
862
863         * src/usb_prop.c(#include): Only include usb_lld.h for USB.
864         (SetEPRxCount_allocated_size): Remove.
865         (struct line_coding, line_coding, Virtual_Com_Port_Data_Setup)
866         (Virtual_Com_Port_NoData_Setup): Add from usb-cdc-vport.c.
867         (gnuk_device_init, gnuk_device_reset, gnuk_setup_with_data)
868         (gnuk_setup_with_nodata): Follow the API change of USB stack.
869         (gnuk_setup_endpoints_for_interface, gnuk_get_descriptor)
870         (gnuk_usb_event, gnuk_interface): New.
871         (gnuk_device_SetConfiguration, gnuk_device_SetInterface)
872         (gnuk_device_SetDeviceAddress, gnuk_device_Status_In)
873         (gnuk_device_Status_Out, gnuk_device_GetDeviceDescriptor)
874         (gnuk_device_GetConfigDescriptor, gnuk_device_GetStringDescriptor)
875         (gnuk_device_Get_Interface_Setting, gnuk_clock_frequencies)
876         (gnuk_data_rates, msc_lun_info, Device_Table)
877         (User_Standard_Requests): Remove.
878         (Device_Method): Replace Device_Property.
879
880         * src/usb_msc.c (#include): Only include usb_lld.h for USB.
881
882         * src/usb_endp.c (#include): Only include usb_lld.h for USB.
883         (EP5_OUT_Callback): Follow the API change of USB stack.
884
885         * src/usb_desc.c (#include): Only include usb_lld.h for USB.
886         Add usb_conf.h.
887         (Device_Descriptor, Config_Descriptor): Follow the API change
888         of USB stack.
889         (String_Descriptors): New, rename from String_Descriptor.
890
891         * src/usb_conf.h (EP_NUM, BTABLE_ADDRESS, IMR_MSK): Remove.
892         (NUM_STRING_DESC): Add.
893
894         * src/usb-icc.c (#include): Only include usb_lld.h for USB.
895
896         * src/usb-cdc-vport.c, src/usb_prop.h: Remove.
897
898         * src/stmusb.mk, src/vcomport.mk: Remove.
899
900         * src/main.c (#include): Only include usb_lld.h for USB.
901         (main): Remove call to USB_Init.
902
903         * src/Makefile.in (include): Remove stmusb.mk, vcomport.mk.
904         (VCOMSRC) [ENABLE_VCOMPORT]: Add.
905         (INCDIR): Remove STMUSBINCDIR and VCOMDIR.
906
907         * boards/common/hw_config.c (Enter_LowPowerMode)
908         (Leave_LowPowerMode): Remove.
909
910 2012-02-02  Niibe Yutaka  <gniibe@fsij.org>
911
912         * Version 0.17.
913
914         * src/usb_desc.c (gnukStringSerial): Updated.
915         (gnukConfigDescriptor): Short APDU only.
916
917         * tool/gnuk_put_binary.py (cmd_get_response): New.
918         (cmd_select_openpgp, cmd_get_data): Call cmd_get_response.
919
920 2012-01-30  Niibe Yutaka  <gniibe@fsij.org>
921
922         * src/usb-icc.c (struct ccid): Add chained_cls_ins_p1_p2.
923         (end_cmd_apdu_head, icc_cmd_apdu_data, icc_handle_data): Add checking
924         CMD APDU head for command chaining.
925
926 2012-01-20  Niibe Yutaka  <gniibe@fsij.org>
927
928         Short APDU only CCID driver.
929         * STM32_USB-FS-Device_Driver/src/usb_core.c (DataStageOut)
930         (DataStageIn): Use usb_lld_to_pmabuf and usb_lld_from_pmabuf.
931
932         * src/configure (CERTDO_SUPPORT): Comment fix.
933
934         * src/gnuk.h (struct adpu): expected_res_size has type uint16_t.
935         (MAX_CMD_APDU_DATA_SIZE, MAX_RES_APDU_DATA_SIZE): New.
936         (MAX_CMD_APDU_SIZE, MAX_RES_APDU_SIZE, USB_BUF_SIZE): Remove.
937         (icc_state_p): New.
938         (set_res_sw): Rename from set_res_apdu.
939
940         * src/call-rsa.c (rsa_decrypt): Use MAX_RES_APDU_DATA_SIZE.
941
942         * src/openpgp.c (set_res_sw): Rename from set_res_apdu.
943         * src/openpgp.h: Use set_res_sw.
944
945         * src/main.c: Handle icc_state_p.
946
947         * src/openpgp-do.c (historical_bytes): command chaining but short
948         APDU only.
949         (extended_capabilities): Change for short APDU only.
950
951         * src/usb-icc.c (USB_BUF_SIZE): Define here (was in gnuk.h).
952         (struct ep_in, epi_init, struct ep_out, epo_init, endpoint_out)
953         (endpoint_in, icc_state_p, struct ccid, APDU_STATE_WAIT_COMMAND)
954         (APDU_STATE_COMMAND_CHAINING, APDU_STATE_COMMAND_RECEIVED)
955         (APDU_STATE_RESULT, APDU_STATE_RESULT_GET_RESPONSE, ccid_reset)
956         (ccid_init, CMD_APDU_HEAD_SIZE, apdu_init, notify_tx, no_buf)
957         (set_sw1sw2, get_sw1sw2, notify_icc, end_icc_rx, end_abdata)
958         (end_cmd_apdu_head, end_nomore_data, end_cmd_apdu_data)
959         (nomore_data, INS_GET_RESPONSE, icc_cmd_apdu_data, icc_abdata)
960         (icc_send_data_block_0x9000, icc_send_data_block_gr, ccid): New.
961         (icc_data_size, icc_seq, icc_next_p, icc_chain_p, icc_tx_size)
962         (icc_thread, icc_state, gpg_thread, ICC_RESPONSE_MSG_DATA_SIZE):
963         Remove.
964         (EP1_IN_Callback): Rewrite using epi.
965         (EP2_OUT_Callback): Rewrite using epo.
966         (icc_prepare_receive): Rewrite using epo and struct ccid.
967         (ATR): Change ofr short APDU only.
968         (icc_error, icc_power_on, icc_send_status, icc_power_off)
969         (icc_send_data_block, icc_send_params, icc_handle_data)
970         (icc_handle_timeout, USBthread): Rewrite using struct ccid.
971
972         * src/usb_desc.c (gnukConfigDescriptor): dwFeatures: Short APDU
973         level, dwMaxCCIDMessageLength: 271.
974
975         * src/usb_lld.c (usb_lld_to_pmabuf, usb_lld_from_pmabuf): New.
976         * src/usb_lld.h (usb_lld_txcpy, void usb_lld_write) Use
977         usb_lld_to_pmabuf.
978         (usb_lld_rxcpy): Use usb_lld_from_pmabuf.
979
980         * src/stmusb.mk (usb_mem.c): Remove.
981
982         * gnuk_put_binary.py (cmd_select_openpgp): No response APDU data.
983         (cmd_verify, cmd_write_binary): Send short APDU.
984         (__main__): Remove RANDOM_NUMBER_BITS support.
985
986         Bug fix for CERTDO_SUPPORT.
987         * src/gnuk.ld.in: Add missing alignment for _data_pool (when no
988         CERTDO_SUPPORT).
989
990 2012-01-19  Niibe Yutaka  <gniibe@fsij.org>
991
992         * src/usb-icc.c (icc_handle_data): Handle the case when it only
993         sends 0x90 and 0x00 correctly.
994
995         * src/openpgp-do.c (gpg_do_get_data): Fix res_apdu_data_len.
996
997 2012-01-18  Niibe Yutaka  <gniibe@fsij.org>
998
999         Clean up API between application layer and CCID layer.
1000         * tool/gnuk_put_binary.py, gnuk_put_binary_libusb.py: Don't append
1001         0x9000 at the data, any more.
1002         * src/usb-icc.c (icc_data_size, icc_buffer, icc_seq): Make them
1003         internal.
1004         (res_APDU_size, res_APDU_pointer): Removed.
1005         (icc_handle_data, USBthread): Follow new API of struct apdu.
1006         * src/call-rsa.c (rsa_sign, rsa_decrypt): Likewise.
1007         * src/openpgp.c (CLS, INS, P1, P2): New.
1008         (set_res_apdu, cmd_verify, cmd_change_password)
1009         (cmd_reset_user_password, cmd_put_data, cmd_pgp_gakp)
1010         (cmd_read_binary, cmd_select_file, cmd_pso)
1011         (cmd_internal_authenticate, cmd_update_binary, cmd_write_binary)
1012         (process_command_apdu, GPGthread): Follow new API of struct apdu.
1013         * src/openpgp-do.c (gpg_do_get_data, gpg_do_public_key): Follow
1014         new API of struct apdu.
1015         * src/gnuk.h (struct apdu, apdu): New.
1016         (cmd_APDU, icc_data_size, cmd_APDU_size, icc_buffer): Removed.
1017         (res_APDU, res_APDU_size): Use members of struct apdu.
1018
1019 2012-01-16  Niibe Yutaka  <gniibe@fsij.org>
1020
1021         Adopt new USB API.
1022         * src/usb_msc.c (usb_start_transmit): Use usb_lld_write.
1023         (EP6_IN_Callback): Use usb_lld_tx_data_len and usb_lld_write.
1024         (usb_start_receive): Use usb_lld_rx_enable.
1025         (EP7_OUT_Callback): Use usb_lld_rx_data_len, usb_lld_rxcpy
1026         and usb_lld_rx_enable
1027         (msc_handle_command): Use usb_lld_stall_rx and usb_lld_stall_tx.
1028
1029         * src/usb_lld.h (usb_lld_stall_tx, usb_lld_stall_rx)
1030         (usb_lld_tx_data_len): New.
1031
1032         * src/main.c (STDOUTthread): Use usb_lld_write.
1033
1034         * src/usb-icc.c (EP1_IN_Callback, icc_error, icc_power_on)
1035         (icc_send_status, icc_send_data_block, icc_send_params): Use
1036         usb_lld_write (was: USB_SIL_Write).
1037         (EP2_OUT_Callback): Use usb_lld_rx_data_len, usb_lld_rxcpy,
1038         and usb_lld_rx_enable (was: USB_SIL_Read and SetEPRxValid).
1039         (icc_prepare_receive): Use usb_lld_rx_enable.
1040
1041         * src/stmusb.mk (STMUSBSRC): Dont' include usb_sil.c.
1042
1043         * src/usb_lld.h (usb_lld_txcpy, usb_lld_tx_enable)
1044         (usb_lld_write, usb_lld_rx_enable, usb_lld_rx_data_len)
1045         (usb_lld_rxcpy): New.
1046
1047         * src/usb_prop.c (SetEPRxCount_allocated_size): Fix the
1048         implementation.  (ST's SetEPRxCount is actually meant to
1049         setup allocated size, which is confusing).
1050         (gnuk_device_init): Don't call USB_SIL_Init.
1051
1052 2012-01-10  Niibe Yutaka  <gniibe@fsij.org>
1053
1054         * src/openpgp.c (GPGthread): Allow INS_RESET_RETRY_COUNTER and
1055         INS_PUT_DATA for pinentry targets.
1056
1057 2012-01-05  Niibe Yutaka  <gniibe@fsij.org>
1058
1059         * src/openpgp.c (cmd_select_file): Check DF name.
1060
1061         * tool/pinpadtest.py: Rename from pinpad-test.py.
1062
1063 2011-12-28  Niibe Yutaka  <gniibe@fsij.org>
1064
1065         * src/usb_prop.c (SetEPRxCount_allocated_size): New.
1066         (gnuk_device_reset): Use SetEPRxCount_allocated_size.
1067         * src/usb_msc.c (usb_start_receive): Don't set RxCount register
1068         here.
1069         * STM32_USB-FS-Device_Driver/src/usb_core.c (Standard_ClearFeature)
1070         (Post0_Process): Don't need to set RxCount register.
1071
1072         * src/usb_prop.c (msc_lun_info) [PINPAD_DND_SUPPORT]: ifdef-out.
1073
1074         * src/usb-icc.c (EP2_OUT_Callback): Fix apdu size == 49 bug,
1075         we don't assume host sends ZLP (But accepts ZLP, just in case).
1076
1077 2011-12-22  Niibe Yutaka  <gniibe@fsij.org>
1078
1079         * src/openpgp-do.c (extended_capabilities) [CERTDO_SUPPORT]:
1080         conditionalize.
1081
1082 2011-12-21  Niibe Yutaka  <gniibe@fsij.org>
1083
1084         * src/openpgp-do.c (gpg_do_get_data) [CERTDO_SUPPORT]: ifdef out.
1085
1086         * src/gnuk.ld.in (.gnuk_ch_certificate): Only valid
1087         when --enable-certdo.
1088
1089         * src/flash.c (flash_check_blank) [CERTDO_SUPPORT]: ifdef out.
1090         (flash_erase_binary) [CERTDO_SUPPORT]: Likewise.
1091         (flash_write_binary) [CERTDO_SUPPORT]: Likewise.
1092
1093         * src/configure (certdo): New.
1094         (--enable-certdo, --disable-certdo): New options.
1095         Remove cheking for /dev/random.
1096
1097         * src/config.h.in (@CERTDO_DEFINE@): New.
1098
1099 2011-12-20  Niibe Yutaka  <gniibe@fsij.org>
1100
1101         * src/usb_msc.c (msc_handle_command): SCSI_START_STOP_UNIT command
1102         with stop/eject/close means cancelling pinentry.
1103
1104         * src/pin-dnd.c (pinpad_finish_entry, parse_directory_sector):
1105         Implement "cancel".
1106         (pinpad_getline): Likewise.
1107         (msc_scsi_stop): New.
1108
1109 2011-12-16  Niibe Yutaka  <gniibe@fsij.org>
1110
1111         * tool/gnuk_put_binary_libusb.py (gnuk_token.cmd_select_openpgp):
1112         Fix apdu parameter.
1113
1114         * tool/gnuk_put_binary.py (GnukToken.cmd_select_openpgp): Ditto.
1115
1116         * tool/pinpad-test.py: New.
1117
1118 2011-12-14  Niibe Yutaka  <gniibe@fsij.org>
1119
1120         * Version 0.16.
1121
1122         * src/usb_desc.c (gnukStringSerial): Updated.
1123
1124         * boards/STM8S_DISCOVERY/board.h, board.c: Fix for PINPAD_SUPPORT.
1125         * boards/STBEE_MINI/board.h, board.c: Likewise.
1126         * boards/STBEE/board.h, board.c: Likewise.
1127         * boards/FST_01/board.c: Likewise.
1128
1129 2011-12-13  Niibe Yutaka  <gniibe@fsij.org>
1130
1131         Add pinpad DND support.
1132         * src/Makefile.in (CSRC) [ENABLE_PINPAD]: Add usb_msc.c.
1133         * src/configure (pinpad): Add dnd support.
1134         * src/gnuk.h [PINPAD_DND_SUPPORT]: Add declarations.
1135         * src/main.c (STDOUTthread): Add PUSH packet.
1136         (main) [PINPAD_DND_SUPPORT]: Call msc_init.
1137         * src/usb_conf.h (EP_NUM): Add the case of PINPAD_DND_SUPPORT.
1138         (ENDP6_TXADDR, ENDP7_RXADDR): New.
1139         (ENDP4_TXADDR, ENDP5_RXADDR): Changed for smaller buffer.
1140         * src/usb_desc.c (gnukConfigDescriptor): Add Mass storage device.
1141         * src/usb_msc.c, src/usb_msc.h, src/pin-dnd.c: New.
1142         * src/usb_prop.c: Include "usb_msc.h".
1143         (gnuk_device_reset): Add initialization of ENDP6 and ENDP7.
1144         (gnuk_device_SetInterface): Add initialization of ENDP6 and ENDP7.
1145         (NUM_INTERFACES): Handle cases for PINPAD_DND_SUPPORT.
1146         (msc_lun_info): New.
1147         (gnuk_setup_with_data, gnuk_setup_with_nodata): Handle standard
1148         request for Mass storage device.
1149         * Virtual_COM_Port/usb_desc.h (VIRTUAL_COM_PORT_DATA_SIZE): Since
1150         there isn't enough hardware buffer, smaller value (was: 64).
1151
1152         * src/ac.c (verify_user_0): Add access argument.
1153         (verify_pso_cds, verify_other, verify_admin_0): Follow the change.
1154         * src/openpgp.c (cmd_change_password): Likewise.
1155
1156 2011-12-08  Niibe Yutaka  <gniibe@fsij.org>
1157
1158         * src/usb-icc.c: Not include "usb_desc.h".
1159
1160         * src/usb_endp.c (EP5_OUT_Callback): Fix minor bug.
1161
1162 2011-12-07  Niibe Yutaka  <gniibe@fsij.org>
1163
1164         * src/usb_desc.c (gnukDeviceDescriptor): Changed bcdUSB = 1.1.
1165         Gnuk device conforms to USB 2.0 full speed device, but when it was
1166         2.0, some OS informs users, "you can connect the device to 2.0
1167         compliant hub so that it can have better bandwidth", which is not
1168         the case for full speed device.
1169
1170         * src/openpgp.c (GPGthread): Handle bConfirmPIN parameter.
1171
1172         * src/usb-icc.c (icc_handle_data): Pass PC_to_RDR_Secure
1173         information to gpg_thread using memory of cmd_APDU.
1174
1175 2011-12-01  Niibe Yutaka  <gniibe@fsij.org>
1176
1177         * src/gnuk.h (EV_PINPAD_INPUT_DONE, EV_NOP, EV_CMD_AVAILABLE)
1178         (EV_VERIFY_CMD_AVAILABLE, EV_MODIFY_CMD_AVAILABLE): New.
1179         * src/usb-icc.c (icc_power_off, icc_handle_data): Use EV_NOP,
1180         EV_CMD_AVAILABLE, EV_VERIFY_CMD_AVAILABLE, and EV_MODIFY_CMD_AVAILABLE.
1181         * src/pin-cir.c (cir_timer_interrupt): Use EV_PINPAD_INPUT_DONE.
1182         * src/pin-dial.c (dial_sw_interrupt, pinpad_getline): Ditto.
1183         (EV_SW_PUSH): Remove.
1184
1185         * src/openpgp.h (GPG_FUNCTION_NOT_SUPPORTED): New.
1186         (GPG_CONDITION_NOT_SATISFIED): New.
1187         * src/openpgp.c (cmd_change_password): Use GPG_FUNCTION_NOT_SUPPORTED.
1188
1189         * src/openpgp.c (cmd_verify, cmd_change_password)
1190         (cmd_reset_user_password, cmd_put_data): Remove pinpad handling...
1191         (GPGthread): ... and implement pinpad handling here.
1192
1193 2011-11-29  Niibe Yutaka  <gniibe@fsij.org>
1194
1195         * src/openpgp.c (cmd_put_data) [PINPAD_SUPPORT]: Support pinpad
1196         input (for reset code).
1197
1198 2011-11-24  Niibe Yutaka  <gniibe@fsij.org>
1199
1200         * Version 0.15.
1201         * src/usb_desc.c (gnukStringSerial): Updated.
1202
1203 2011-11-22  Niibe Yutaka  <gniibe@fsij.org>
1204
1205         * tool/dfuse.py (DFU_STM32.download, DFU_STM32.verify): Support
1206         unaligned write and hole.
1207
1208 2011-11-14  Niibe Yutaka  <gniibe@fsij.org>
1209
1210         * boards/FST_01/{mcuconf.h,board.h,board.c}: New.
1211
1212 2011-11-01  Niibe Yutaka  <gniibe@fsij.org>
1213
1214         * src/pin-dial.c (pinpad_getline): New.
1215         (pin_main): Remove.
1216
1217         * boards/STBEE_MINI/board.h (TIMx): Define.
1218         boards/STBEE/board.h (TIMx): Ditto.
1219         boards/STM8S_DISCOVERY/board.h: Ditto.
1220
1221         * src/pin-cir.c (pinpad_getline): New.
1222         (cir_timer_interrupt, cir_ext_interrupt): Use TIMx.
1223         (cir_key_is_backspace, cir_key_is_enter, pin_main, pindisp):
1224         Remove.
1225         (cir_codetable_dell_mr425, cir_codetable_aquos)
1226         (cir_codetable_regza, cir_codetable_bravia, ch_is_backspace)
1227         (ch_is_enter, find_char_codetable, hex, cir_getchar): New.
1228         (cir_timer_interrupt): Don't filter out ADDRESS.
1229
1230         * src/openpgp.c (get_pinpad_input): Don't invoke thread,
1231         but just call pinpad_getline.
1232
1233         * src/main.c (display_interaction, display_fatal_code)
1234         (display_status_code, led_blink): New.
1235         (main): Call display_* routine.
1236         (fatal): Notify main thread.
1237         * src/usb_prop.c (gnuk_device_SetConfiguration): Notify main
1238         thread.
1239
1240         * src/pin-cir.c (pindisp): Remove.
1241
1242         * boards/FST_01_00: New (for 8MHz FST-01).
1243
1244         * src/ac.c (calc_md): Fix comparison.
1245
1246         * src/call-rsa.c (RSA_SIGNATURE_LENGTH): Use KEY_CONTENT_LEN.
1247         (rsa_sign, rsa_decrypt): Likewise.
1248         (modulus_calc): Don't assume it's 2048-bit.
1249
1250         * src/ac.c (verify_user_0): Fix for non-initialized PW1.
1251
1252         * src/Makefile.in (MCFLAGS): Override MCFLAGS option for newer
1253         GCC of summon-arm-toolchain to add -mfix-cortex-m3-ldrd.
1254         NOTE: This should not be needed (as -mcpu=cortex-m3 defaults
1255         to -mfix-cortex-m3-ldrd for GCC-proper), but it is needed
1256         to select arm-none-eabi/lib/thumb2/libc.a correctly.
1257
1258 2011-10-14  NIIBE Yutaka  <gniibe@fsij.org>
1259
1260         * src/gnuk.ld.in (__main_stack_size__): It's 1KB (was 512 byte).
1261
1262 2011-10-07  NIIBE Yutaka  <gniibe@fsij.org>
1263
1264         * Version 0.14.
1265         * src/usb_desc.c (gnukStringSerial): Updated.
1266
1267         * src/random.c (random_init): Call neug_prng_reseed.
1268
1269 2011-10-06  NIIBE Yutaka  <gniibe@fsij.org>
1270
1271         * src/Makefile.in (random_bits): Remove.
1272
1273         * src/openpgp.c (GPGthread): Remove unused event message.
1274
1275         * src/main.c (main): Call random_init.
1276
1277         * src/gnuk.ld.in (__process_stack_size__): Fix.
1278         (.gnuk_random): Removed.
1279
1280         * src/flash.c (flash_erase_binary, flash_write_binary): Remove
1281         support of random_byte in flash ROM.
1282
1283         * src/neug.c (adccb): Use old API (was: chEvtSignalFlagsI).
1284         (adccb_err): Remove.
1285         (rng_gen, rng): Add the last argument adccb for adcStartConversion:
1286         This is old API of ADC driver.
1287         (adcgrpcfg): Remove callbacks, add CONT and SWSTART: This is old
1288         API of ADC driver.
1289         (adccb): Remove the first argument: This is old API of ADC driver.
1290         (neug_wait_full): New.
1291
1292         * ChibiOS_2.0.8/os/hal/platforms/STM32/adc_lld.h (ADC_SAMPLE_1P5):
1293         Add (from new API).
1294
1295         * src/random.c (random_init): New.
1296         (random_bytes_get, random_bytes_free, get_salt): Use NeuG.
1297
1298         * src/Makefile.in (CSRC): Add neug.c.
1299
1300         * src/neug.c: New.  Verbatim copy of NeuG/src/random.c.
1301
1302         * boards/common/mcuconf-common.h (USE_STM32_ADC1): TRUE for NewG RNG.
1303         * src/chconf.h (CH_USE_SEMAPHORES): TRUE as ADC driver requires it.
1304         * src/halconf.h (CH_HAL_USE_ADC); TRUE for NewG RNG.
1305
1306 2011-07-22  NIIBE Yutaka  <gniibe@fsij.org>
1307
1308         * boards/OLIMEX_STM32_H103/board.h (BOARD_NAME): Fixed.
1309
1310         * boards/STBEE_MINI/mcuconf.h: Added missing include of
1311         mcuconf-common.h.
1312
1313 2011-07-04  NIIBE Yutaka  <gniibe@fsij.org>
1314
1315         * ChibiOS_2.0.8/os/ports/GCC/ARMCMx/chcore_v7m.c
1316         (_port_irq_epilogue, _port_switch_from_isr): Apply a patch of 2.2.6.
1317
1318         * ChibiOS_2.0.8/os/hal/platforms/STM32/adc_lld.h: Apply a patch of
1319         ADC from the branch of ChibiOS_2.0.X.
1320
1321 2011-06-15  NIIBE Yutaka  <gniibe@fsij.org>
1322
1323         * Version 0.13.
1324         * src/usb_desc.c (gnukStringSerial): Updated.
1325
1326 2011-06-08  NIIBE Yutaka  <gniibe@fsij.org>
1327
1328         * polarssl-0.14.0/include/polarssl/bn_mul.h [__arm__]
1329         (MULADDC_1024_CORE, MULADDC_1024_LOOP): New.
1330         * polarssl-0.14.0/library/bignum.c (mpi_mul_hlp): Use
1331         MULADDC_1024_LOOP.
1332
1333 2011-05-31  NIIBE Yutaka  <gniibe@fsij.org>
1334
1335         * polarssl-0.14.0/include/polarssl/bn_mul.h [__arm__]
1336         (MULADDC_HUIT, MULADDC_INIT, MULADDC_CORE, MULADDC_STOP): Tweak.
1337
1338 2011-05-27  NIIBE Yutaka  <gniibe@fsij.org>
1339
1340         * tool/gnuk_put_binary.py (main): Confirm Serial ID is written
1341         correctly.
1342
1343         * src/openpgp.c (cmd_write_binary): Fix FILE_EF_SERIAL comparison.
1344
1345         * src/gnuk.ld.in (.gnuk_random, .gnuk_ch_certificate): Put LONG to
1346         have CONTENTS.
1347
1348         * polarssl-0.14.0/include/polarssl/bn_mul.h [__arm__]
1349         (MULADDC_HUIT): New.
1350
1351 2011-05-26  NIIBE Yutaka  <gniibe@fsij.org>
1352
1353         * polarssl-0.14.0/include/polarssl/bn_mul.h [__arm__]
1354         (MULADDC_INIT): Add ADDS instruction to clear of carry flag.
1355         (MULADDC_CORE): Tune to 6 instructions and less registers.
1356         (MULADDC_STOP): Add ADC instruction to save carry flag.
1357
1358 2011-05-25  NIIBE Yutaka  <gniibe@fsij.org>
1359
1360         * tool/hub_ctrl.py: New.  Port of original C implementation.
1361
1362 2011-05-16  NIIBE Yutaka  <gniibe@fsij.org>
1363
1364         * src/main.c (main): Call flash_unlock at the beginning.
1365         (device_initialize_once): Don't call flash_unlock here.
1366         * src/flash.c (flash_init): Likewise.
1367
1368         * src/openpgp.c (cmd_select_file): Don't use write_res_apdu.
1369         (set_res_apdu): Rename from write_res_apdu.  Just SW1 and SW2.
1370
1371 2011-05-13  NIIBE Yutaka  <gniibe@fsij.org>
1372
1373         * Version 0.12.
1374
1375 2011-05-12  NIIBE Yutaka  <gniibe@fsij.org>
1376
1377         * src/openpgp.c (cmd_pso, cmd_internal_authenticate)
1378         (cmd_update_binary, cmd_write_binary): Don't check pw locked.
1379
1380         * tool/dfuse.py (DFU_STM32.verify): Add missing colon.
1381         * tool/dfuse.py (get_device): Restrict to STMicro DfuSe.
1382
1383         * tool/gnuk_put_binary.py (main): Add -p option to enter password.
1384
1385         * src/ac.c (verify_user_0): New.
1386         (verify_pso_cds, verify_admin_0): Use verify_user_0.
1387         * src/openpgp.c (cmd_change_password): Use verify_user_0.
1388
1389         * src/random.c (get_salt): Rename from get_random.
1390         (random_bytes_get, random_bytes_free): It's 16-byte.
1391
1392         * src/ac.c (verify_admin_0): Use PW_ERR_PW1 counter when
1393         authenticated by PW1.
1394
1395 2011-05-11  NIIBE Yutaka  <gniibe@fsij.org>
1396
1397         * src/ac.c (verify_pso_cds, verify_other): Fail (with no counter
1398         update) if key is not registered yet.
1399         (verify_admin_0): Compare to OPENPGP_CARD_INITIAL_PW3 when empty
1400         PW3 and non-empty PW1 but signing key is not registered yet.
1401
1402         * tool/gnuk_put_binary.py: New implementation by pyscard.
1403
1404         * src/main.c (device_initialize_once): New.
1405         * src/usb_prop.c (gnukStringSerial): Move to...
1406         * src/usb_desc.c (gnukStringSerial): here.  Bump version to 0.12.
1407         Fill by 0xff.
1408         * src/usb_prop.c (gnuk_device_init)
1409         (gnuk_device_GetStringDescriptor): Don't use RAM for
1410         gnukStringSerial, use ROM like other string descriptor.
1411         * src/usb_desc.c (String_Descriptor): Add gnukStringSerial.
1412
1413         * src/openpgp-do.c (gpg_get_pw1_lifetime): Make static.
1414         (gpg_do_load_prvkey, gpg_do_write_prvkey): Use kdi.
1415         (gpg_increment_digital_signature_counter): Call gpg_get_pw1_lifetime.
1416         * src/openpgp.c (cmd_pso): Follow the change.
1417         * src/flash.c (keystore_pool): Remove.  Use &_keystore_pool.
1418         * src/ac.c (auth_status): Don't assign 0 as it's automatically
1419         cleared.
1420
1421 2011-05-10  NIIBE Yutaka  <gniibe@fsij.org>
1422
1423         * src/openpgp-do.c (gpg_pw_locked): Rename from gpg_passwd_locked.
1424         (gpg_pw_get_err_counter): Rename from gpg_get_pw_err_counter.
1425         (gpg_pw_reset_err_counter): Rename from gpg_reset_pw_err_counter.
1426         (gpg_pw_increment_err_counter): Rename from gpg_increment_err_counter.
1427         * src/ac.c, src/openpgp.c, src/gnuk.h: Follow the change.
1428
1429         Bug fixes.
1430         * src/openpgp.c (cmd_reset_user_password, cmd_change_password)
1431         * src/openpgp-do.c (proc_resetting_code): Fix check of return value.
1432         * src/ac.c (ac_fini): Clear keystring_md_pw3.
1433
1434         Prevent observation of PW3 is emptiness by PW3's error counter.
1435         Support verify_admin by PW1 when PW3 is empty.
1436         * src/ac.c (admin_authorized): New.
1437         (verify_admin_0): Set admin_authorized.
1438         * src/openpgp-do.c (proc_resetting_code): Use admin_authorized.
1439         (gpg_do_write_prvkey): Clear dek_encrypted_3 when keystring_admin
1440         is NULL.
1441         (proc_key_import): Checking admin_authorized, set keystring_admin.
1442         * src/openpgp.c (cmd_reset_user_password): Use admin_authorized.
1443
1444 2011-04-18  NIIBE Yutaka  <gniibe@fsij.org>
1445
1446         * gnuk.svg: Updated.
1447
1448 2011-04-15  NIIBE Yutaka  <gniibe@fsij.org>
1449
1450         * Version 0.11.
1451
1452         * src/usb_prop.c (gnukStringSerial): Updated.
1453
1454 2011-04-11  NIIBE Yutaka  <gniibe@fsij.org>
1455
1456         * tool/dfuse.py (DFU_STM32.verify): support data size of non-1-KiB.
1457
1458 2011-02-24  NIIBE Yutaka  <gniibe@fsij.org>
1459
1460         * src/usb_prop.c (gnuk_device_SetInterface): Fix argument to
1461         ClearDTOG_TX.
1462
1463 2011-02-10  NIIBE Yutaka  <gniibe@fsij.org>
1464
1465         * Version 0.10.
1466
1467         * src/configure, src/Makefile.in (BOARD_DIR): New.
1468
1469         * boards/CQ_STARM/board.mk, boards/OLIMEX_STM32_H103/board.mk:
1470         Removed.
1471         * boards/STBEE/board.mk, boards/STBEE_MINI/board.mk: Removed.
1472         * boards/STM32_PRIMER2/board.mk, boards/STM8S_DISCOVERY/board.mk:
1473         Removed.
1474
1475         * src/Makefile.in (OUTFILES): Don't include random_bits.
1476
1477 2011-02-09  NIIBE Yutaka  <gniibe@fsij.org>
1478
1479         * src/usb_prop.c (gnukStringSerial): Updated.
1480
1481         * tool/gnuk_put_binary.py (gnuk_token.__del__): Removed.
1482         Releasing the interface is done in PyUSB.
1483
1484         * tool/dfuse.py (DFU_STM32.__del__): Removed.
1485
1486         * src/openpgp.c (cmd_write_binary): Support random bits and card
1487         holder certificate as well.
1488
1489         * src/openpgp-do.c (do_openpgpcard_aid): Add volatile to prevent
1490         compiler optimization to access AID.
1491
1492 2011-02-08  NIIBE Yutaka  <gniibe@fsij.org>
1493
1494         * tool/gnuk_put_binary.py: Renamed (was: gnuk_update_binary.py).
1495         (gnuk_token.cmd_write_binary): New.
1496         (main): Support writing serial number.
1497
1498         * GNUK_SERIAL_NUMBER: Renamed (was: FSIJ_SERIAL_NUMBER).
1499
1500         * src/config.h.in (@SERIAL_DEFINE@): Removed.
1501
1502         * src/gnuk.h (FILEID_SERIAL_NO): New.
1503
1504         * src/openpgp.c (INS_WRITE_BINARY, cmd_write_binary): New.
1505
1506         * src/configure: Remove --with-fixed-serial support.
1507
1508         * src/openpgp-do.c (do_openpgpcard_aid): Remove support of
1509         SERIAL_NUMBER_IN_AID.
1510
1511         * src/flash.c (flash_write_binary): Support FILEID_SERIAL_NO.
1512
1513 2011-02-04  NIIBE Yutaka  <gniibe@fsij.org>
1514
1515         * tool/gnuk_update_binary.py: Support updating random bits.
1516
1517         * src/random.c (random_bits_start): Renamed.
1518         (random_bytes_get): Check initial erased state.
1519
1520         * src/Makefile.in (random-data.o): Removed.
1521
1522         * src/gnuk.ld.in (.gnuk_random): Don't have .gnuk_random any more.
1523
1524         * src/flash.c (flash_erase_binary): Support FILEID_RANDOM.
1525         (flash_write_binary): Ditto.
1526
1527         * src/openpgp.c (cmd_reset_user_password): Fix PINPAD_SUPPORT case
1528         with reset code.
1529
1530 2011-02-01  NIIBE Yutaka  <gniibe@fsij.org>
1531
1532         * Version 0.9.
1533
1534         * src/openpgp-do.c (extended_capabilities): Change value for card
1535         holder certificate.
1536
1537         * src/usb_prop.c (gnuk_device_SetInterface): New.
1538
1539 2011-01-29  NIIBE Yutaka  <gniibe@fsij.org>
1540
1541         * src/usb_prop.c (gnuk_device_Get_Interface_Setting): Handle the
1542         case where we have multiple interfaces.
1543
1544 2011-01-28  NIIBE Yutaka  <gniibe@fsij.org>
1545
1546         * tool/gnuk_update_binary.py: New.
1547
1548         * src/openpgp-do.c (gpg_do_get_data): Fix length adding two for
1549         status word at the end and adding four for the tag and the length.
1550
1551         * src/usb-icc.c (icc_handle_data): Fix decrementing res_APDU_size.
1552         (icc_power_off): Status should be the one *after* power off.
1553
1554         * src/openpgp.c (cmd_update_binary): Fix return code.
1555
1556 2011-01-27  NIIBE Yutaka  <gniibe@fsij.org>
1557
1558         * src/usb-icc.c (res_APDU_pointer): New.
1559         (icc_handle_data, USBthread): Handle res_APDU_pointer.
1560
1561         * src/openpgp.h (GPG_COMMAND_NOT_ALLOWED): New.
1562
1563         * src/openpgp.c (INS_UPDATE_BINARY, FILE_EF_CH_CERTIFICATE)
1564         (FILE_EF_RANDOM, cmd_update_binary): New.
1565         (process_command_apdu): Initialize res_APDU_pointer.
1566
1567         * src/openpgp-do.c (gpg_do_get_data): Handle GPG_DO_CH_CERTIFICATE.
1568
1569         * src/gnuk.ld.in (.gnuk_ch_certificate): New.
1570
1571         * src/flash.c (flash_check_blank, flash_erase_binary)
1572         (flash_write_binary): New.
1573
1574         * src/openpgp-do.c (gpg_do_table): Exclude GPG_DO_CH_CERTIFICATE.
1575
1576         * src/openpgp.c (cmd_reset_user_password): Add PINPAD_SUPPORT.
1577
1578         * src/gnuk.ld.in: Fix alignment and filling.
1579
1580 2011-01-26  NIIBE Yutaka  <gniibe@fsij.org>
1581
1582         * boards/STBEE/mcuconf.h: New.
1583         * boards/STBEE/board.mk: New.
1584         * boards/STBEE/board.h: New.
1585         * boards/STBEE/board.c: New.
1586
1587         * tool/dfuse.py (DFU_STM32.verify): Add double ll_clear_status.
1588
1589         * src/configure (target): Add STBEE.
1590
1591 2011-01-25  NIIBE Yutaka  <gniibe@fsij.org>
1592
1593         * src/openpgp.c (cmd_pso): Support DigestInfo by MD5 (for opensc).
1594
1595 2011-01-22  NIIBE Yutaka  <gniibe@fsij.org>
1596
1597         * src/openpgp.c (cmd_pgp_gakp): Handle case of non-extended Lc.
1598         (cmd_select_file): Return DF name when FCI is requested.
1599
1600         * src/openpgp-do.c (copy_do): Don't add tag if not requested.
1601
1602         * src/gnuk.h (memmove): Add declaration.
1603
1604 2011-01-21  NIIBE Yutaka  <gniibe@fsij.org>
1605
1606         * src/openpgp-do.c (copy_do): Fix off-by-one error.
1607
1608         * src/openpgp.c (get_pinpad_input): Ifdef-out PINPAD_SUPPORT.
1609
1610 2011-01-19  NIIBE Yutaka  <gniibe@fsij.org>
1611
1612         * Version 0.8.
1613
1614         * src/pin-cir.c (pin_main): Fix typo, call cir_ext_disable.
1615
1616         * src/usb_prop.c (gnukStringSerial): Updated.
1617
1618         * src/pin-dial.c: New.
1619
1620         * boards/STBEE_MINI/board.c (hwinit1): Add PINPAD_DIAL_SUPPORT.
1621         (dial_sw_disable, dial_sw_enable, EXTI2_IRQHandler): New.
1622
1623         * src/gnuk.h: Add PINPAD_DIAL_SUPPORT.
1624
1625         * src/usb-icc.c (icc_handle_data): Handle PIN modification.
1626
1627         * src/usb_desc.c (gnukConfigDescriptor): bPinSupport = 3 when
1628         PINPAD_DIAL_SUPPORT is enabled.
1629
1630 2011-01-18  NIIBE Yutaka  <gniibe@fsij.org>
1631
1632         * src/pin-cir.c (pin_main): Call cir_ext_disable at the end.
1633
1634 2011-01-17  NIIBE Yutaka  <gniibe@fsij.org>
1635
1636         * src/gnuk.h (PIN_INPUT_CURRENT, PIN_INPUT_NEW)
1637         (PIN_INPUT_CONFIRM): New.
1638
1639         * src/pin-cir.c (pin_main): New argument MSG_CODE.
1640
1641         * src/openpgp.c (get_pinpad_input): New.
1642         (cmd_verify): Use get_pinpad_input.
1643         (cmd_change_password): Added PINPAD_SUPPORT.
1644
1645         * src/openpgp.c (cmd_nop): Removed.
1646
1647         * src/config.h.in: ifdef-out (not for ASSEMBLER).
1648
1649 2011-01-15  NIIBE Yutaka  <gniibe@fsij.org>
1650
1651         * Version 0.7.
1652
1653         * src/usb-icc.c (icc_handle_data): Bug fix: add break for case
1654         ICC_STATE_SEND.
1655
1656 2011-01-14  NIIBE Yutaka  <gniibe@fsij.org>
1657
1658         * Version 0.6.
1659
1660         * src/usb_prop.c (gnukStringSerial): Include version number (again).
1661
1662         * boards/STM8S_DISCOVERY/board.c (hwinit1): Initialize TIM3 and
1663         remap TIM3.
1664         (cir_ext_disable, cir_ext_enable, EXTI9_5_IRQHandler)
1665         (TIM3_IRQHandler): New.
1666
1667         * boards/STBEE_MINI/board.h (HAVE_7SEGLED): New.
1668
1669         * boards/STM8S_DISCOVERY/board.h: Include "config.h".
1670         (VAL_GPIOBODR): PB0 (TIM3_CH3) is pull-down for PINPAD_SUPPORT.
1671
1672         * src/pin-cir.c (pindisp): Handle the board with no 7 segment
1673         display.
1674
1675 2011-01-11  NIIBE Yutaka  <gniibe@fsij.org>
1676
1677         * src/openpgp-do.c (do_openpgpcard_aid): Fix length of res_p;
1678
1679 2011-01-08  NIIBE Yutaka  <gniibe@fsij.org>
1680
1681         * src/usb-icc.c (icc_handle_data): Handle the case of
1682         ICC_STATE_SEND (back again to the implementation of v0.4).
1683         (USBthread): Don't send back larger block (for libccid 1.3.11).
1684
1685 2011-01-07  NIIBE Yutaka  <gniibe@fsij.org>
1686
1687         * src/openpgp.c (cmd_read_binary): Call gpg_do_get_data for AID.
1688
1689         * src/openpgp-do.c (gpg_do_get_data): Added new argument WITH_TAG.
1690
1691         * src/usb_prop.c (gnuk_device_init)
1692         (gnuk_device_GetStringDescriptor): gnukStringSerial with unique
1693         chip ID.
1694
1695         * src/openpgp-do.c (do_openpgpcard_aid): New.
1696         (openpgpcard_aid): Removed.
1697
1698         * boards/common/hw_config.c (unique_device_id): New.
1699
1700 2011-01-06  NIIBE Yutaka  <gniibe@fsij.org>
1701
1702         * src/config.h.in (PINPAD_MORE_DEFINE): Added.
1703
1704         * src/configure: Requiring bash (for variable substitution), added
1705         PINPAD.
1706
1707         * src/Makefile.in: Support PINPAD.
1708
1709         * src/pin-cir.c (cir_timer_interrupt): Support Sharp protocol.
1710
1711 2011-01-04  NIIBE Yutaka  <gniibe@fsij.org>
1712
1713         * src/chconf.h (CH_USE_DYNAMIC): It's TRUE now.
1714
1715         * src/usb_desc.c (gnukConfigDescriptor): Added PINPAD_SUPPORT.
1716
1717         * src/pin-cir.c (cir_timer_interrupt): Added CIR_PERIOD_INHIBIT_CHATTER.
1718
1719 2010-12-29  NIIBE Yutaka  <gniibe@fsij.org>
1720
1721         * src/pin-cir.c (cir_timer_interrupt): Support Philips RC-5 protocol.
1722
1723 2010-12-28  NIIBE Yutaka  <gniibe@fsij.org>
1724
1725         * src/pin-cir.c (cir_timer_interrupt): Support Philips RC-6 protocol.
1726
1727 2010-12-27  NIIBE Yutaka  <gniibe@fsij.org>
1728
1729         * src/pin-cir.c (cir_timer_interrupt): Support Sony protocol.
1730
1731 2010-12-24  NIIBE Yutaka  <gniibe@fsij.org>
1732
1733         * src/pin-cir.c: New file.
1734
1735 2010-12-20  NIIBE Yutaka  <gniibe@fsij.org>
1736
1737         * src/openpgp.c (GPGthread): Added PINPAD_SUPPORT.
1738         * boards/STBEE_MINI/mcuconf.h: Simplified.
1739         * boards/STBEE_MINI/board.h: Include config.h.
1740         (PINPAD_SUPPORT): Added.
1741         * boards/STBEE_MINI/board.c (hwinit1): Added PINPAD_SUPPORT.
1742
1743 2010-12-15  NIIBE Yutaka  <gniibe@fsij.org>
1744
1745         * src/configure (FLASH_SIZE): Without 'k'.
1746         * src/gnuk.ld.in (MEMORY): Append "k" here.
1747         (.gnuk_flash): End point should be aligned too.
1748
1749         * src/config.h.in (@PINPAD_DEFINE@): New.
1750         * src/Makefile.in (@PINPAD_MAKE_OPTION@): New.
1751         * src/configure (PINPAD_MAKE_OPTION, PINPAD_DEFINE): New.
1752
1753 2010-12-14  NIIBE Yutaka  <gniibe@fsij.org>
1754
1755         * src/configure (FLASH_PAGE_SIZE): Always set.
1756
1757 2010-12-13  NIIBE Yutaka  <gniibe@fsij.org>
1758
1759         * Version 0.5.
1760
1761         * src/usb_desc.c (gnukStringSerial): Updated.
1762
1763 2010-12-10  NIIBE Yutaka  <gniibe@fsij.org>
1764
1765         * src/usb-cdc-vport.c (Virtual_Com_Port_Data_Setup)
1766         (Virtual_Com_Port_NoData_Setup): No check for class&interface
1767         request.
1768
1769         * src/usb-icc.c (ATR): Fixed.
1770
1771         * src/usb_desc.c (/* ICC Descriptor*/): bcdCCID = 1.1.
1772         dwDefaultClock = dwMaximumClock = 3571.
1773         dwFeatures 0x00040842.
1774
1775         * src/usb_prop.c (gnuk_clock_frequencies, gnuk_data_rates): New.
1776         (gnuk_nothing_todo): Removed.
1777         (gnuk_setup_with_data, gnuk_setup_with_nodata): New.
1778         (Device_Property): Changed to call gnuk_setup_with_data and
1779         gnuk_setup_with_nodata.
1780
1781 2010-12-09  NIIBE Yutaka  <gniibe@fsij.org>
1782
1783         * src/usb-icc.c (icc_power_off): Set icc_data_size = 0 to specify
1784         no command APDU.  Signal GPGThread.
1785         (icc_handle_data, USBthread): Don't signal main thread any more.
1786
1787         * src/openpgp.c (GPGthread): Only process the command APDU, if any.
1788
1789         * src/openpgp-do.c (do_tag_to_nr): Don't call fatal.
1790         * src/main.c (fatal_code): New.
1791         (main): Implemented 1-bit LED status display.
1792         (fatal): Added argument CODE.
1793         * src/flash.c (flash_data_pool_allocate): Supply argument FATAL_FLASH.
1794         * src/random.c (random_bytes_get): Supply argument FATAL_RANDOM.
1795         * src/ac.c (auth_status): Added volatile, and remove static.
1796
1797 2010-12-08  NIIBE Yutaka  <gniibe@fsij.org>
1798
1799         * src/gnuk.h (AC_OTHER_AUTHORIZED): Renamed (was:
1800         AC_PSO_OTHER_AUTHORIZED).
1801         * src/ac.c (ac_reset_other): Renamed (was: ac_reset_pso_other).
1802         (verify_other): Renamed (was: verify_pso_other).
1803         (ac_reset_admin): New.
1804         * src/openpgp.c (cmd_change_password): Call ac_reset_admin.
1805
1806         * src/main.c (main): Don't create GPGThread here.
1807         * src/usb-icc.c (icc_power_on): But create here, when requested.
1808         (icc_power_off): Terminate GPGThread.
1809         * src/openpgp.c (gpg_init, gpg_fini): New.
1810         (GPGthread): Check chThdShouldTerminate.  Call gpg_init and gpg_fini.
1811
1812 2010-12-07  NIIBE Yutaka  <gniibe@fsij.org>
1813
1814         USB CCID/ICC implementation changes.
1815         * src/usb_desc.c (dwMaxCCIDMessageLength): Updated.
1816         * src/usb-icc.c (EV_TX_FINISHED): New.
1817         (icc_rcv_data, icc_tx_data): Removed.
1818         (icc_buffer, icc_seq): New.
1819         (icc_next_p, icc_chain_p): New.
1820         (icc_tx_ready): Removed.
1821         (EP1_IN_Callback): Handle multiple transactions.
1822         (icc_prepare_receive): New.
1823         (EP2_OUT_Callback): Handle multiple transactions.
1824         (icc_error, icc_send_status): Handle the case of receive in chain.
1825         (icc_power_on, icc_send_params): Specify it's a single transaction.
1826         (icc_send_data_block_filling_header): New.
1827         (icc_send_data_block): Simplify.
1828         (icc_handle_data): Removed the case of ICC_STATE_SEND.
1829         Handle buffer of multiple transactions.
1830         (USBthread): Don't use sending in chain.
1831         * src/gnuk.h (USB_LL_BUF_SIZE): New.
1832         (USB_BUF_SIZE): Now, it's larger value.
1833         * src/configure: Echo for --enable-debug.
1834         * src/call-rsa.c (rsa_sign): Use temp[] buffer as rsa_pkcs1_sign
1835         writes OUTPUT in early stage.
1836
1837 2010-12-04  NIIBE Yutaka  <gniibe@fsij.org>
1838
1839         * src/flash.c (flash_keystore_release): Reset keystore storage.
1840
1841 2010-12-03  NIIBE Yutaka  <gniibe@fsij.org>
1842
1843         Keystore management changes.
1844         * src/flash.c (flash_key_alloc): Check FLASH_KEYSTORE_SIZE.
1845         (flash_key_release): Removed.
1846         (flash_keystore_release): New function.
1847         * src/openpgp-do.c (gpg_do_write_prvkey): Make it static.
1848         When there is a key already, return as error.
1849         (proc_key_import): Call flash_keystore_release when all keys removed.
1850         * src/gnuk.ld.in (_keystore_pool): Size of keystore is now 1.5KB.
1851
1852 2010-11-30  NIIBE Yutaka  <gniibe@fsij.org>
1853
1854         Flash ROM fixes for STM32F10X_HD.
1855         * src/gnuk.ld.in (.gnuk_flash): Use FLASH_PAGE_SIZE.
1856         * src/configure (FLASH_PAGE_SIZE): Defined for gnuk.ld.
1857         * src/flash.c (FLASH_PAGE_SIZE): New define.
1858         (FLASH_DATA_POOL_SIZE): Use FLASH_PAGE_SIZE.
1859
1860         Import changes of ChibiOS_2.0.8.
1861         * ChibiOS_2.0.8/os/hal/include/pwm.h
1862         * ChibiOS_2.0.8/os/hal/platforms/STM32/pwm_lld.c
1863         * ChibiOS_2.0.8/os/hal/platforms/STM32/pwm_lld.h
1864         * ChibiOS_2.0.8/os/hal/src/pwm.c
1865         * ChibiOS_2.0.8/os/hal/templates/pwm_lld.c
1866         * ChibiOS_2.0.8/os/hal/templates/pwm_lld.h
1867         * ChibiOS_2.0.8/os/kernel/include/ch.h
1868         * ChibiOS_2.0.8/os/kernel/src/chevents.c
1869         * ChibiOS_2.0.8/os/kernel/src/chthreads.c
1870         * ChibiOS_2.0.8/boards/OLIMEX_LPC_P2148/board.h
1871         * ChibiOS_2.0.8/readme.txt
1872         * ChibiOS_2.0.8/test/testdyn.c
1873         * ChibiOS_2.0.8/docs/*/*: Updated.
1874
1875         New private key management.
1876         * src/ac.c (ac_reset_pso_cds, ac_reset_pso_other): Call
1877         gpg_do_clear_prvkey.
1878         (verify_pso_other): load private keys here.
1879         * src/openpgp-do.c (kd): Keydata for Signing, Decryption, and
1880         Authentication.
1881         (gpg_do_load_prvkey, gpg_do_write_prvkey): Use kd[].
1882         (gpg_do_clear_prvkey): New function.
1883         * src/openpgp.c (cmd_pso, cmd_internal_authenticate): Use new API
1884         of rsa_sign and rsa_decrypt.
1885         (cmd_pso): Fixed bug of checking return value of gpg_get_pw1_lifetime.
1886         * src/call-rsa.c (rsa_sign): New argument KD.
1887         (rsa_decrypt): Likewise.
1888
1889         Don't use malloc/free in C library.
1890         * src/stdlib.h (malloc, free): Use chHeapAlloc and chHeapFree.
1891
1892 2010-11-26  NIIBE Yutaka  <gniibe@fsij.org>
1893
1894         * boards/STM8S_DISCOVERY/*: New.
1895         * src/configure: STM8S_DISCOVERY only has 64KB flash memory.
1896
1897         * boards/STBEE_MINI/board.h (CPU_WITH_NO_GPIOE): New define.
1898         * ChibiOS_2.0.6/os/hal/platforms/STM32/hal_lld.c: Use it.
1899         * ChibiOS_2.0.6/os/hal/platforms/STM32/pal_lld.c: Likewise.
1900         * ChibiOS_2.0.6/os/hal/platforms/STM32/pal_lld.h: Likewise.
1901
1902         * src/openpgp.c (cmd_pso): DigestInfo by SHA224/SHA384/SHA512 is
1903         supported.
1904
1905 2010-11-22  NIIBE Yutaka  <gniibe@fsij.org>
1906
1907         Import changes of ChibiOS_2.0.6.
1908         * ChibiOS_2.0.6/demos/ARM7-AT91SAM7X-LWIP-GCC/chconf.h
1909         * ChibiOS_2.0.6/os/hal/include/can.h
1910         * ChibiOS_2.0.6/os/hal/platforms/AT91SAM7/hal_lld.c
1911         * ChibiOS_2.0.6/os/hal/platforms/AT91SAM7/serial_lld.c
1912         * ChibiOS_2.0.6/os/hal/platforms/LPC214x/serial_lld.c
1913         * ChibiOS_2.0.6/os/hal/platforms/STM32/hal_lld_f103.h
1914         * ChibiOS_2.0.6/os/hal/platforms/STM32/hal_lld_f105_f107.h
1915         * ChibiOS_2.0.6/os/hal/platforms/STM32/pwm_lld.c
1916         * ChibiOS_2.0.6/os/hal/platforms/STM32/serial_lld.h
1917         * ChibiOS_2.0.6/os/hal/platforms/STM32/spi_lld.h
1918         * ChibiOS_2.0.6/os/hal/src/adc.c
1919         * ChibiOS_2.0.6/os/hal/src/spi.c
1920         * ChibiOS_2.0.6/os/kernel/include/ch.h
1921         * ChibiOS_2.0.6/os/kernel/include/chinline.h
1922         * ChibiOS_2.0.6/os/kernel/include/chioch.h
1923         * ChibiOS_2.0.6/os/kernel/include/chstreams.h
1924         * ChibiOS_2.0.6/os/kernel/include/chthreads.h
1925         * ChibiOS_2.0.6/os/kernel/src/chlists.c
1926         * ChibiOS_2.0.6/os/kernel/src/chschd.c
1927         * ChibiOS_2.0.6/os/kernel/src/chthreads.c
1928         * ChibiOS_2.0.6/os/ports/GCC/ARM/rules.mk
1929         * ChibiOS_2.0.6/os/ports/GCC/ARM7/chcore.h
1930         * ChibiOS_2.0.6/os/ports/GCC/ARM7/port.dox
1931         * ChibiOS_2.0.6/os/ports/GCC/ARMCMx/chcore_v6m.c
1932         * ChibiOS_2.0.6/os/ports/GCC/ARMCMx/chcore_v6m.h
1933         * ChibiOS_2.0.6/os/ports/GCC/ARMCMx/chcore_v7m.c
1934         * ChibiOS_2.0.6/os/ports/GCC/ARMCMx/chcore_v7m.h
1935         * ChibiOS_2.0.6/os/ports/GCC/ARMCMx/old/chcore_v7m.h
1936         * ChibiOS_2.0.6/os/ports/GCC/AVR/chcore.h
1937         * ChibiOS_2.0.6/os/ports/GCC/AVR/port.dox
1938         * ChibiOS_2.0.6/os/ports/GCC/MSP430/chcore.c
1939         * ChibiOS_2.0.6/os/ports/GCC/MSP430/chcore.h
1940         * ChibiOS_2.0.6/os/ports/GCC/MSP430/port.dox
1941         * ChibiOS_2.0.6/os/ports/GCC/PPC/chcore.h
1942         * ChibiOS_2.0.6/os/ports/GCC/PPC/port.dox
1943         * ChibiOS_2.0.6/os/ports/RC/STM8/port.dox
1944         * ChibiOS_2.0.6/os/various/memstreams.h
1945         * ChibiOS_2.0.6/readme.txt
1946         * ChibiOS_2.0.6/docs/*/*: Updated
1947
1948 2010-11-14  NIIBE Yutaka  <gniibe@fsij.org>
1949
1950         * src/openpgp.c (cmd_pso): DigestInfo by SHA256 is supported.
1951
1952 2010-11-12  NIIBE Yutaka  <gniibe@fsij.org>
1953
1954         * src/usb_desc.c (gnukConfigDescriptor): Change dwFeatures.
1955
1956         * src/usb-icc.c (icc_send_params): Always return fixed result.
1957         (icc_handle_data): Support ICC_GET_PARAMS.
1958
1959 2010-11-10  NIIBE Yutaka  <gniibe@fsij.org>
1960
1961         * src/usb_desc.c (gnukConfigDescriptor): Fix bmAttributes.
1962
1963 2010-11-09  NIIBE Yutaka  <gniibe@fsij.org>
1964
1965         * Version 0.4.
1966
1967         * src/usb_desc.c (gnukStringSerial): Updated.
1968
1969         * ChibiOS_2.0.2/os/hal/platforms/STM32/pal_lld.h (PALConfig):
1970         STBee Mini uses STM32F103CBT6 which expose no GPIO E port.
1971         * ChibiOS_2.0.2/os/hal/platforms/STM32/pal_lld.c (_pal_lld_init):
1972         Likewise.
1973
1974 2010-11-08  NIIBE Yutaka  <gniibe@fsij.org>
1975
1976         * tool/dump_mem.py: New tool.
1977
1978         Implement GC for data pool in flash memory.
1979         * src/openpgp-do.c (gpg_write_digital_signature_counter): New.
1980         (gpg_increment_digital_signature_counter): Fix for GC.
1981         (gpg_data_scan): Rename from gpg_do_table_init.
1982         (gpg_data_copy): New function for copying GC.
1983         * src/main.c (main): Call gpg_data_scan with the address which
1984         flash_init returns.
1985         * src/flash.c (flash_erase_page): New function.
1986         (FLASH_DATA_POOL_SIZE): data_pool is 2KiB now.
1987         (flash_data): Put a header (GC generation).
1988         (flash_init): Implement choosing a data pool page.
1989         (flash_data_pool): Removed.
1990         (flash_copying_gc): New function.
1991         (flash_data_pool_allocate): Call flash_copying_gc when full.
1992         (flash_do_write_internal, flash_put_data_internal)
1993         (flash_bool_write_internal, flash_cnt123_write_internal): New
1994         * src/gnuk.ld.in (gnuk_flash): data_pool is 2KiB now.
1995
1996         Bug fixes.
1997         * src/openpgp.c (cmd_change_password, cmd_reset_user_password):
1998         Write to APDU correctly.
1999         * src/flash.c (flash_warning): Make it public.
2000         * src/openpgp-do.c (do_hist_bytes, do_fp_all, do_cafp_all)
2001         (do_kgtime_all, do_ds_count): Fix return value.
2002         (rw_pw_status): Correctly return value.
2003         (proc_resetting_code): Change func proto. to return success/failure.
2004         (proc_key_import): Ditto.
2005         (gpg_do_put_data): Handle return values.
2006         (gpg_do_write_simple): Don't write to APDU.
2007
2008 2010-11-05  NIIBE Yutaka  <gniibe@fsij.org>
2009
2010         Bug fixes.
2011         * src/openpgp.c (gpg_change_keystring): Handle
2012         GPG_KEY_FOR_AUTHENTICATION.
2013         * src/openpgp-do.c (gpg_do_write_prvkey): Remove multiple call
2014         of flash_do_release.
2015
2016         Bug fix.
2017         * src/openpgp-do.c (gpg_do_write_prvkey): Don't hardcode 6, but
2018         use strlen.
2019
2020         * src/flash.c, src/gnuk.ld.in: Rename "Flash DO Pool" to "Flash
2021         Data Pool", because it's not only DO.
2022         * src/gnuk.h, src/opengpg-do.c: Cleanup.
2023
2024         Digital Signature Counter implementation improvement.
2025         * src/gnuk.h (NR_DO_DS_COUNT): Removed.
2026         (NR_COUNTER_DS, NR_COUNTER_DS_LSB): New.
2027         * src/openpgp-do.c (do_ds_count_initial_value): Removed.
2028         (gpg_do_increment_digital_signature_counter): Removed.
2029         (digital_signature_counter): New variable.
2030         (do_ds_count, gpg_increment_digital_signature_counter): New functions.
2031         (gpg_do_table): Change the entry for GPG_DO_DS_COUNT as DO_PROC_READ.
2032         (gpg_do_table_init): Handle digital_signature_counter.
2033         * src/flash.c (flash_data_pool_allocate, flash_put_data): New.
2034
2035         Password status implementation improvement.
2036         * src/gnuk.h (PW_STATUS_PW1, PW_STATUS_RC, PW_STATUS_PW3): Removed.
2037         (PW_ERR_PW1, PW_ERR_RC, PW_ERR_PW3): New define.
2038         (NR_COUNTER_123, NR_BOOL_PW1_LIFETIME): New define.
2039         (NR_NONE, NR_EMPTY): New define.
2040         * src/flash.c (flash_bool_clear, flash_bool_write)
2041         (flash_cnt123_get_value, flash_cnt123_increment)
2042         (flash_cnt123_clear): New functions.
2043         * src/openpgp-do.c (do_pw_status_bytes_template): Removed.
2044         (PW_STATUS_BYTES_TEMPLATE, gpg_do_reset_pw_counter): Removed.
2045         (PASSWORD_ERRORS_MAX, PW_LEN_MAX): New define.
2046         (pw1_lifetime_p, pw_err_counter_p): New variables.
2047         (gpg_get_pw1_lifetime): New function.
2048         (gpg_get_pw_err_counter, gpg_passwd_locked, gpg_reset_pw_counter)
2049         (gpg_increment_pw_counter): New functions.
2050         (rw_pw_status): Use pw1_lifetime_p and pw_err_counter_p.
2051         (gpg_do_table_init): Handle NR_COUNTER_123 and NR_BOOL_PW1_LIFETIME.
2052         * src/ac.c (verify_pso_cds, verify_pso_other, verify_admin_0):
2053         Follow the changes.
2054         * src/openpgp.c (cmd_change_password, cmd_reset_user_password)
2055         (cmd_pso, cmd_internal_authenticate): Likewise.
2056
2057 2010-11-04  NIIBE Yutaka  <gniibe@fsij.org>
2058
2059         * src/flash.c (flash_warning): New.
2060         (flash_do_pool): Added header for DO pool.
2061         (flash_do_release): Fill zero.
2062         (flash_do_write): Change DO format in flash.
2063         * src/openpgp-do.c (gpg_do_table_init, copy_do_1)
2064         (gpg_do_read_simple): Follow the change of DO format in flash.
2065
2066         * src/openpgp-do.c (DO_CMP_READ): Renamed.
2067         (cmp_ch_data, cmp_app_data, cmp_ss_temp): Likewise.
2068         (with_tag): Removed static global variable.
2069         (do_hist_bytes, do_fp_all, do_cafp_all, do_kgtime_all)
2070         (rw_pw_status, copy_do_1, copy_do, gpg_do_get_data): Added
2071         with_tag argument.
2072         (gpg_do_put_data): length > 255 will be error.
2073
2074 2010-11-03  NIIBE Yutaka  <gniibe@fsij.org>
2075
2076         Bug fixes.
2077         * src/ac.c (verify_admin_0): Initialize pwsb earlier.
2078         * src/openpgp-do.c (copy_do_1): Access do_data[0] (was: do_data[1]).
2079
2080 2010-11-02  NIIBE Yutaka  <gniibe@fsij.org>
2081
2082         DfuSe support.
2083         * tool/dfuse.py (DFU_STM32.download): Put '#' for each 4-KiB.
2084         Added 0-length write to finish download.
2085         Take intel_hex object as argument.
2086         (DFU_STM32.ll_upload_block): New method.
2087         (DFU_STM32.dfuse_read_memory): New method.
2088         (DFU_STM32.verify): New method.
2089         (get_device): Support DFU_STM32PROTOCOL_0 too (for CQ STARM).
2090
2091         * tool/dfuse.py: Renamed from dfu_stmicroelectronics_extention.py.
2092
2093 2010-11-01  NIIBE Yutaka  <gniibe@fsij.org>
2094
2095         * tool/intel_hex.py: New file.
2096         * tool/dfu_stmicroelectronics_extention.py: New file.
2097
2098 2010-10-28  NIIBE Yutaka  <gniibe@fsij.org>
2099
2100         * src/gnuk.h (OPENPGP_CARD_INITIAL_PW3): New.
2101         * src/ac.c (verify_admin_0): Use OPENPGP_CARD_INITIAL_PW3.
2102
2103 2010-10-23  NIIBE Yutaka  <gniibe@fsij.org>
2104
2105         * Version 0.3.
2106
2107         * src/usb_desc.c (gnukStringSerial): Updated.
2108
2109 2010-10-22  NIIBE Yutaka  <gniibe@fsij.org>
2110
2111         * src/gnuk.ld.in (.gnuk_random): Fix description so that
2112         padding with 0xffffffff will be in gnuk.hex.
2113
2114         * src/openpgp.c (file_selection): Change type (was: int).
2115         (FILE_NONE..FILE_EF_SERIAL): Change the values.
2116
2117         * src/configure: Added STBee Mini support.
2118         * boards/STBEE_MINI/mcuconf.h: New.
2119         * boards/STBEE_MINI/board.mk: New.
2120         * boards/STBEE_MINI/board.h: New.
2121         * boards/STBEE_MINI/board.c: New.
2122
2123         * ChibiOS_2.0.2/os/hal/platforms/STM32/hal_lld.c
2124         (pal_default_config): STBee Mini uses STM32F103CBT6 which expose
2125         no GPIO E port.
2126
2127 2010-10-21  NIIBE Yutaka  <gniibe@fsij.org>
2128
2129         * boards/common/hw_config.c (Get_SerialNum): Removed.
2130         * src/usb_prop.c (gnuk_device_init): Remove calling Get_SerialNum.
2131         * src/usb_desc.c (gnukStringSerial): Updated.
2132         * boards/CQ_STARM/board.c (set_led): Fix polarity.
2133
2134 2010-10-20  NIIBE Yutaka  <gniibe@fsij.org>
2135
2136         * FSIJ_SERIAL_NUMBER: New.
2137         * src/configure (with_fsij): Added FSIJ serial number support.
2138         * src/config.h.in (@FSIJ_DEFINE@, @SERIAL_NUMBER_FOUR_BYTES@): New.
2139
2140         * src/configure: Added CQ STARM target.
2141         * boards/CQ_STARM/mcuconf.h: New.
2142         * boards/CQ_STARM/board.mk: New.
2143         * boards/CQ_STARM/board.h: New.
2144         * boards/CQ_STARM/board.c: New.
2145
2146 2010-10-19  NIIBE Yutaka  <gniibe@fsij.org>
2147
2148         * boards/STM32_PRIMER2/board.mk (BOARDSRC): Use common/hw_config.c.
2149         * boards/OLIMEX_STM32_H103/board.mk (BOARDSRC): Likewise.
2150
2151         * boards/common/hw_config.c: Move board specific functions to ...
2152         * boards/STM32_PRIMER2/board.c (USB_Cable_Config, set_led): ... here.
2153         * boards/OLIMEX_STM32_H103/board.c (USB_Cable_Config, set_led): Ditto.
2154
2155         * boards/{OLIMEX_STM32_H103,STM32_PRIMER2}/hw_config.c: Removed.
2156         * boards/common/hw_config.c: New file (was: boards/*/hw_config.c).
2157
2158         * .gitignore: New file.
2159
2160 2010-10-16  NIIBE Yutaka  <gniibe@fsij.org>
2161
2162         Implement "INTERNAL AUTHENTICATE" command.
2163
2164         * src/gnuk.h (BY_USER, BY_RESETCODE, BY_ADMIN): New defines.
2165         (NUM_ALL_PRV_KEYS): Now it's 3 (was: 2).
2166
2167         * src/openpgp.c (INS_INTERNAL_AUTHENTICATE): New define.
2168         (cmd_internal_authenticate): New function.
2169         (cmds): Added INS_INTERNAL_AUTHENTICATE.
2170         (cmd_change_password): Use BY_USER.
2171         (cmd_reset_user_password): Use BY_USER, BY_RESETCODE, BY_ADMIN.
2172         (cmd_pso): Load GPG_KEY_FOR_DECRYPTION here.
2173         (cmd_pso): Removed adding status word into res_APDU...
2174         * src/call-rsa.c (rsa_sign): and moved adding status word into
2175         res_APDU here.
2176
2177         * src/ac.c (pw1_keystring): New variable.
2178         (ac_reset_pso_other): Clear pw1_keystring.
2179         (verify_pso_cds): Use BY_USER.
2180         (verify_pso_other): Just check the length of password here, and
2181         defer real check to cmd_pso or cmd_internal_authenticate.
2182
2183 2010-10-14  NIIBE Yutaka  <gniibe@fsij.org>
2184
2185         Adding 'configure' support.
2186         * src/configure: New file.
2187         * src/Makefile.in: Renamed from src/Makefile.
2188         * src/config.h: Renamed from src/config.h.
2189         * src/gnuk.ld: Renamed from src/gnuk.ld.
2190
2191         Adding DFU_SUPPORT.
2192         * boards/common/hwinit0.c: New file adding DFU_SUPPORT.
2193         * boards/common/hwinit1.c: New file.
2194         * boards/OLIMEX_STM32_H103/board.c: Include config.h.
2195         Use common/hwinit0.c and common/hwinit1.c.
2196         * boards/STM32_PRIMER2/board.c: Likewise.
2197
2198 2010-09-16  NIIBE Yutaka  <gniibe@fsij.org>
2199
2200         * src/usb-icc.c (icc_error): New function.
2201         (icc_handle_data): Call icc_error.
2202         Don't go to STATE_START on errors.
2203
2204 2010-09-13  NIIBE Yutaka  <gniibe@fsij.org>
2205
2206         * Version 0.2.
2207
2208         * src/openpgp.c (cmd_select_file): Override data of number_of_bytes.
2209
2210         * src/openpgp-do.c (gpg_do_table_init): Calculate number of byte
2211         which Data Objects consumes.
2212
2213 2010-09-12  Kaz Kojima <kkojima@rr.iij4u.or.jp>
2214
2215         * src/call-rsa.c (rsa_decrypt): Debug output only when DEBUG.
2216
2217         * boards/STM32_PRIMER2/hw_config.c (USB_Cable_Config): Fix GPIO.
2218         (set_led): Ditto.
2219
2220         * boards/STM32_PRIMER2/board.c (hwinit1): Added LED initialization.
2221
2222 2010-09-11  NIIBE Yutaka  <gniibe@fsij.org>
2223
2224         * src/usb-icc.c (ATR): Fixed.
2225         (icc_send_params): New function.
2226         (icc_handle_data): Handle ICC_SET_PARAMS request.
2227
2228         * src/random.c (random_bytes_get, random_bytes_free, get_random):
2229         Clear used random bytes.
2230
2231         * src/flash.c (flash_clear_halfword): New function.
2232
2233 2010-09-10  NIIBE Yutaka  <gniibe@fsij.org>
2234
2235         * Version 0.1.
2236
2237         * src/usb_desc.c (gnukStringSerial): Change the value so that
2238         libccid doesn't get confused.
2239
2240         * src/openpgp.c (gpg_change_keystring): Support key for decryption
2241         as well.
2242         (cmd_read_binary): Use openpgpcard_aid.
2243         (cmd_pso): call ac_reset_pso_other.
2244
2245         * src/openpgp-do.c (openpgpcard_aid): Renamed from aid, and exported.
2246         (do_ds_count_initial_value): New const variable.
2247         (num_prv_keys): New variable.
2248         (gpg_do_write_prvkey): Remove contents of keystring only if
2249         ++num_prv_keys == NUM_ALL_PRV_KEYS.
2250         (gpg_do_chks_prvkey): Call flash_do_release.
2251         (gpg_do_table_init): Initialize with do_ds_count_initial_value.
2252         Initialize num_prv_keys.
2253         (gpg_do_write_simple): Support removing DO.
2254         (gpg_do_increment_digital_signature_counter): Call flash_do_release.
2255
2256         * src/gnuk.h (NUM_ALL_PRV_KEYS): New definition.
2257         (OPENPGP_CARD_INITIAL_PW1): New definition.
2258         (enum kind_of_key): Rename.
2259
2260         * src/ac.c (ac_reset_pso_cds): New function.
2261
2262 2010-09-09  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
2263
2264         * boards/STM32_PRIMER2/{board.c,board.h,board.mk,hw_config.c,mcuconf.h}:
2265         New files.
2266
2267         * boards/OLIMEX_STM32_H103/{mcuconf.h,hw_config.c}: Moved from src.
2268
2269         * src/main.c (main): Use set_led instead of palClearPad directly.
2270
2271 2010-09-08  NIIBE Yutaka  <gniibe@fsij.org>
2272
2273         * src/ac.c (calc_md): Make SHA1 variable auto.
2274
2275         * src/debug.c (put_int): New.
2276
2277         * src/gnuk.ld (__process_stack_size__): Removed.
2278
2279         * src/main.c (STDOUTthread): Use Event.
2280         (main): Make LED ON during command execution, blink usually.
2281
2282         * src/openpgp-do.c (encrypt, decrypt): Make AES variables auto.
2283         (gpg_do_table): GPG_DO_ALG_AUT is NULL.
2284
2285         * src/openpgp.c (cmd_pso): Bug fix for extended Lc.
2286
2287         * src/usb-icc.c (icc_power_off): Make LED ON during command
2288         execution.
2289         (USB_ICC_TIMEOUT): Longer value (was: 1000).
2290
2291         * src/usb_desc.c (gnukConfigDescriptor): Fix bcdCCID value.
2292
2293         * src/vcomport.mk (VCOMSRC): Use our own usb_endp.c.
2294
2295         * src/usb_desc.c (gnukConfigDescriptor): ICC Descriptor is
2296         Revision 1.0.
2297
2298         * polarssl-0.14.0/include/polarssl/config.h: Commend out
2299         POLARSSL_SELF_TEST.
2300
2301         * polarssl-0.14.0/library/rsa.c (rsa_private): Don't check input,
2302         so that we don't access ctx->N.
2303         (rsa_pkcs1_decrypt): size of BUF is enough as 256.
2304
2305         * polarssl-0.14.0/library/sha1.c (sha1_file): #if-out to avoid
2306         stdio of libc.
2307
2308         * polarssl-0.14.0/library/bignum.c (mpi_write_hlp)
2309         (mpi_write_string, mpi_read_file, mpi_read_file): #if-out to avoid
2310         stdio of libc.
2311
2312 2010-09-07  NIIBE Yutaka  <gniibe@fsij.org>
2313
2314         * gnuk.svg: New file.
2315
2316 2010-09-06  NIIBE Yutaka  <gniibe@fsij.org>
2317
2318         * Initial version 0.0.