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