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