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