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