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