Version 1.2.14.
[gnuk/gnuk.git] / ChangeLog
1 2019-03-04  NIIBE Yutaka  <gniibe@fsij.org>
2
3         * VERSION: 1.2.14.
4
5         * chopstx: Update to 1.14.
6
7         * tool/gnuk_token.py: Add 1209:2440.
8
9 2019-02-24  NIIBE Yutaka  <gniibe@fsij.org>
10
11         * src/usb-ccid.c (ccid_thread): Clean up the ack button state
12         at reset (by SET_INTERFACE).
13
14         * tool/gnuk_token.py (gnuk_token.__init__): Add back
15         setAltInterface to issue SET_INTERFACE control transfer.
16
17 2019-02-22  NIIBE Yutaka  <gniibe@fsij.org>
18
19         * tool/gnuk_get_random.py: New.
20
21         * src/openpgp.c (cmd_external_authenticate): move
22         ACKBTN_SUPPORT to...
23         (cmd_get_challenge): ... here.
24
25         * src/gnuk.h (EV_*): Change the values.
26
27         * src/usb-ccid.c (GPG_ACK_TIMEOUT): New.
28         (ccid_thread): Implement timout for the user interaction.
29
30 2019-02-21  NIIBE Yutaka  <gniibe@fsij.org>
31
32         * GNUK_USB_DEVICE_ID: Add 1209:2440.
33
34 2018-12-26  NIIBE Yutaka  <gniibe@fsij.org>
35
36         * VERSION: 1.2.13.
37
38 2018-12-22  Peter Lebbing <peter@digitalbrains.com>
39
40         * src/main.c (device_initialize_once): Fill the stack address and
41         reset vector of Gnuk application (was the one of old SYS).
42         Reset the board after updating the first five pages of flash.
43
44 2018-12-21  Peter Lebbing <peter@digitalbrains.com>
45
46         * src/main.c [DFU_SUPPORT] (flash_write_any): New.
47         (device_initialize_once): Overwrite DFU bootloader by SYS.
48         (main): Use SYS at ORIGIN_REAL.
49
50         * src/stdaln-sys.ld.in: New.
51
52         * src/Makefile [USE_DFU] (OBJS_ADD): Add standalone SYS object.
53         Add rules for stdaln-sys-bin.o and src/stdaln-sys.ld.
54
55         * src/configure: Generate stdaln-sys.ld.
56         [MAPLE_MINI]: Tweak ORIGIN and FLASH_SIZE.
57         (ORIGIN_DEFINE, ORIGIN_REAL_DEFINE): New macros.
58         (USE_DFU): New make variable.
59
60         * src/config.h.in (ORIGIN_DEFINE, ORIGIN_REAL_DEFINE): New.
61
62 2018-12-20  NIIBE Yutaka  <gniibe@fsij.org>
63
64         * chopstx: Update to 1.13.
65
66 2018-12-07  NIIBE Yutaka  <gniibe@fsij.org>
67
68         * src/gnuk.h (EV_EXEC_ACK_REQUIRED): Have precedence
69         than EV_EXEC_FINISHED.
70
71 2018-12-06  NIIBE Yutaka  <gniibe@fsij.org>
72
73         * src/usb-ccid.c (ccid_thread): Priority of handling
74         EV_TX_FINISHED is most important.  Don't handle
75         Ack button event when c->tx_busy = 1.
76
77 2018-12-05  NIIBE Yutaka  <gniibe@fsij.org>
78
79         * src/openpgp.c (cmd_external_authenticate): Support
80         ACK button for firmware update.
81
82 2018-12-04  NIIBE Yutaka  <gniibe@fsij.org>
83
84         * src/openpgp-do.c (gpg_data_copy): Fix for NR_DO_UIF_SIG.
85
86 2018-11-25  NIIBE Yutaka  <gniibe@fsij.org>
87
88         * VERSION: 1.2.12.
89
90 2018-11-21  NIIBE Yutaka  <gniibe@fsij.org>
91
92         * src/usb-ccid.c (ccid_thread): Fix a race condition sending
93         result APDU by ack button, time out, sending time extension block
94         again while tx_busy=1.
95
96 2018-11-17  NIIBE Yutaka  <gniibe@fsij.org>
97
98         * src/main.c (device_initialize_once): Depends on MHZ to
99         distinguish GD32F103.
100         * src/openpgp-do.c (do_openpgpcard_aid): Ditto.
101
102 2018-11-12  NIIBE Yutaka  <gniibe@fsij.org>
103
104         * VERSION: 1.2.11.
105
106         * chopstx: Update to 1.12.
107         * src/configure (ackbtn_support): Always yes.
108         * src/usb-ccid.c: Fix comma separator.
109
110 2018-11-09  NIIBE Yutaka  <gniibe@fsij.org>
111
112         * tool/kdf_calc.py (kdf_calc): Use libgcrypt.so.20.
113
114 2018-11-09  NIIBE Yutaka  <gniibe@fsij.org>
115
116         * src/openpgp.c (cmd_pso, cmd_internal_authenticate): Use
117         ccid_comm.
118
119         * src/usb-ccid.c (struct ccid): New field tx_busy.
120         (ccid_error, ccid_power_on, ccid_send_status, ccid_power_off)
121         (ccid_send_data_block_internal, ccid_send_data_block_0x9000)
122         (ccid_send_data_block_gr, ccid_send_params): Set c->tx_busy.
123         (ccid_state_p): Remove.
124         (ccid_get_ccid_state): New.
125         (ccid_thread): Only handle EV_TX_FINISHED event when c->tx_busy.
126
127         * src/usb_ctrl.c (usb_setup, usb_ctrl_write_finish): Use
128         ccid_get_ccid_state.
129         * src/main.c (display_status_code): Likewise.
130
131 2018-11-09  NIIBE Yutaka  <gniibe@fsij.org>
132
133         * src/usb-ccid.c (ccid_handle_data): Set c->state for pinpad input.
134         (ccid_send_data_block_internal): Fix the case of len == 0.
135
136         * src/main.c (display_status_code): There is
137         no case where ccid_state == CCID_STATE_RECEIVE.
138         * src/gnuk.h (CCID_STATE_RECEIVE): Remove.
139         (CCID_STATE_SEND): Remove.
140
141 2018-10-12  NIIBE Yutaka  <gniibe@fsij.org>
142
143         * src/usb-ccid.c (ccid_thread): Notify host about ack button.
144
145 2018-10-02  NIIBE Yutaka  <gniibe@fsij.org>
146
147         * src/stack-def.h (SIZE_0): Increase.
148
149         * chopstx: Update to 1.11.
150
151 2018-10-01  NIIBE Yutaka  <gniibe@fsij.org>
152
153         * src/gnuk.h (EV_EXEC_ACK_REQUIRED): New.
154         (EV_EXEC_FINISHED_ACK): Remove.
155         (CCID_STATE_CONFIRM_ACK): Remove.
156         (CCID_STATE_ACK_REQUIRED_0, CCID_STATE_ACK_REQUIRED_1): New.
157         * src/openpgp.c (cmd_pso): Send EV_EXEC_ACK_REQUIRED, if needed.
158         (cmd_internal_authenticate): Likewise.
159         (process_command_apdu): No return value.
160         (openpgp_card_thread): Always send EV_EXEC_FINISHED.
161         * src/usb-ccid.c (ccid_send_data_block_time_extension): Follow the
162         change of state.
163         (ccid_handle_data, ccid_handle_timeout): Likewise.
164         (ccid_thread): Handle EV_EXEC_ACK_REQUIRED.
165         Change for LED blink.
166         * src/main.c (main): LED blink during waiting ACK.
167
168 2018-09-27  NIIBE Yutaka  <gniibe@fsij.org>
169
170         * src/gnuk.h (NR_DO_UIF_SIG, NR_DO_UIF_DEC, NR_DO_UIF_AUT): New.
171         * src/openpgp-do.c (rw_uif) [ACKBTN_SUPPORT]: New.
172         (GPG_DO_UIF_SIG, GPG_DO_UIF_DEC, GPG_DO_UIF_AUT): New.
173         (feature_mngmnt) [ACKBTN_SUPPORT]: New.
174         (cmp_app_data, cmp_discretionary): Add ACKBTN_SUPPORT.
175         (gpg_do_table): Add for GPG_DO_UIF_SIG, GPG_DO_UIF_DEC,
176         GPG_DO_UIF_AUT, and GPG_DO_FEATURE_MNGMNT.
177         (gpg_do_get_uif) [ACKBTN_SUPPORT]: New.
178         (gpg_data_scan): Handle uif_flags.
179         * src/openpgp.c (process_command_apdu) [ACKBTN_SUPPORT]: Add user
180         interaction handling.
181
182 2018-09-27  NIIBE Yutaka  <gniibe@fsij.org>
183
184         * src/gnuk.h (LED_WAIT_FOR_BUTTON): New.
185         * src/main.c (main): Blink rapidly when asking ACK.
186         * src/usb-ccid.c (ccid_thread): Use LED_WAIT_FOR_BUTTON.
187
188 2018-09-27  NIIBE Yutaka  <gniibe@fsij.org>
189
190         * src/config.h.in: Add @ACKBTN_DEFINE@.
191         * src/configure: Add ACKBTN_SUPPORT.
192         * src/gnuk.h (EV_EXEC_FINISHED_ACK): New.
193         (CCID_STATE_CONFIRM_ACK): New.
194         * src/openpgp.c (process_command_apdu): Change for cmd_pso, and
195         cmd_internal_authenticate.
196         * src/usb-ccid.c (ccid_send_data_block_time_extension): Report
197         time extension differently when waiting ack button.
198         (ccid_handle_data): Support case of CCID_STATE_CONFIRM_ACK.
199         (ccid_handle_timeout): Likewise.
200         (ack_intr) [ACKBTN_SUPPORT]: New.
201         (ccid_thread) [ACKBTN_SUPPORT]: Add ack button handling.
202
203 2018-09-26  NIIBE Yutaka  <gniibe@fsij.org>
204
205         * chopstx: Update.
206         * src/usb-ccid.c (usb_event_handle): Fix for chopstx_intr_done.
207         * src/pin-cir.c (tim_main, ext_main): Likewise.
208
209         * src/configure (FST_01SZ): Set MHZ=96.
210
211 2018-07-04  Szczepan Zalega <szczepan@nitrokey.com>
212
213         * tool/upgrade_by_passwd.py: Catch exception, when no KDF data is
214         found.
215         Output 'second' for 1 second.
216
217 2018-05-10  NIIBE Yutaka  <gniibe@fsij.org>
218
219         * VERSION: 1.2.10.
220
221         * src/Makefile (build/gnuk.elf): New target.
222         (build/gnuk-vidpid.elf): Remove.
223
224         * chopstx: Update to 1.9.
225
226 2018-04-26  NIIBE Yutaka  <gniibe@fsij.org>
227
228         * src/usb_ctrl.c (usb_device_reset): Don't stop the endpoints.
229
230         * src/configure (MHZ, def_mhz): New.
231
232 2018-04-05  NIIBE Yutaka  <gniibe@fsij.org>
233
234         * VERSION: 1.2.9.
235
236         * tests: Add test cases for admin-less mode.
237
238         * src/openpgp.c (cmd_change_password): Care admin-less mode.
239
240 2018-04-04  NIIBE Yutaka  <gniibe@fsij.org>
241
242         * tests: Add more tests, key generation and KDF support.
243
244         * src/openpgp.c (cmd_reset_user_password): Check length of
245         new passphrase.
246
247         * src/openpgp-do.c (proc_resetting_code): Support removal.
248         (gpg_do_kdf_check): Fix for the case of resetting PW3.
249
250         * tests/test_004_reset_pw3.py: New.
251
252 2018-04-03  NIIBE Yutaka  <gniibe@fsij.org>
253
254         * src/openpgp-do.c (rw_kdf): Clear all auth state.
255
256         * tool/upgrade_by_passwd.py (main): Fix for byte compare.
257         * tool/gnuk_remove_keys_libusb.py (main): Likewise.
258
259 2018-04-02  NIIBE Yutaka  <gniibe@fsij.org>
260
261         * tool/gnuk_token.py (parse_kdf_data): New.
262         * tool/kdf_calc.py: New.
263
264         * tool/gnuk_remove_keys_libusb.py (main): Support KDF auth.
265         * tool/upgrade_by_passwd.py (main): Likewise.
266
267 2018-03-30  NIIBE Yutaka  <gniibe@fsij.org>
268
269         * src/openpgp-do.c (rw_kdf): Support single-salt KDF.
270         (gpg_do_get_initial_pw_setting): Likewise.
271         (gpg_do_kdf_check): Likewise.
272
273 2018-03-22  NIIBE Yutaka  <gniibe@fsij.org>
274
275         * src/openpgp-do.c (rw_kdf): Do format validation earlier.
276
277 2018-03-13  NIIBE Yutaka  <gniibe@fsij.org>
278
279         * src/flash.c [FLASH_UPGRADE_SUPPORT] (flash_terminate): Erase
280         the page for upgrade public keys.
281
282 2018-02-12  NIIBE Yutaka  <gniibe@fsij.org>
283
284         * src/openpgp-do.c (rw_kdf): Return 0 when NULL.
285
286 2018-01-23  NIIBE Yutaka  <gniibe@fsij.org>
287
288         * VERSION: 1.2.8.
289
290         * src/Makefile (build/gnuk-vidpid.elf): Supply FILE here.
291         * src/configure (output_vendor_product_serial_strings): For
292         generating put-vid-pid-ver.sh, don't set FILE.
293
294         * regnual/regnual.c (regnual_device_desc): Make this array as a
295         template.
296         * regnual/Makefile (regnual.elf): Substitute VID:PID.
297
298 2018-01-22  NIIBE Yutaka  <gniibe@fsij.org>
299
300         * src/openpgp.c (USER_PASSWD_MINLEN): New.
301         (cmd_change_password): Check passphrase length.
302
303 2018-01-22  NIIBE Yutaka  <gniibe@fsij.org>
304
305         * src/openpgp.c (cmd_change_password): Remove access to private
306         key with BY_ADMIN when it's becoming admin-less mode.
307
308 2018-01-19  NIIBE Yutaka  <gniibe@fsij.org>
309
310         * src/binary-edit.sh: Copied from NeuG 1.0.8.  Exclude FILE.
311         * src/configure (output_vid_pid_version): Generate a shell script.
312         * src/Makefile (build/gnuk-vidpid.elf): New target.
313         * src/usb_desc.c (device_desc): Make this array as a template.
314
315         * chopstx: Update to 1.8.
316
317 2018-01-18  NIIBE Yutaka  <gniibe@fsij.org>
318
319         * src/neug.c: Update from NeuG.
320
321 2018-01-09  NIIBE Yutaka  <gniibe@fsij.org>
322
323         * tests/card_reader.py (CardReader.ccid_power_on): Fix for
324         other card readers for Gemalto's.
325
326 2017-12-19  NIIBE Yutaka  <gniibe@fsij.org>
327
328         * chopstx: Update to 1.7.
329
330 2017-11-26  NIIBE Yutaka  <gniibe@fsij.org>
331
332         * src/openpgp.c (cmd_change_password): Bug fix for admin-less
333         mode.
334
335 2017-11-26  NIIBE Yutaka  <gniibe@fsij.org>
336
337         * VERSION: 1.2.7.
338
339 2017-11-24  NIIBE Yutaka  <gniibe@fsij.org>
340
341         * regnual/regnual.c (calc_crc32): Enable CRC module fix.
342
343         * chopstx: Update to 1.6.
344
345 2017-11-17  NIIBE Yutaka  <gniibe@fsij.org>
346
347         * src/stack-def.h (SIZE_0): Decrease.
348
349         * src/main.c (emit_led, display_status_code, main): Use
350         chopstx_poll instead of eventflag_wait_timeout.
351
352 2017-11-17  NIIBE Yutaka  <gniibe@fsij.org>
353
354         * src/stack-def.h (SIZE_0): Increase.
355
356         * src/main.c (emit_led, display_status_code, main): Use
357         eventflag_wait_timeout instead of chopstx_usec_wait.
358
359 2017-11-17  NIIBE Yutaka  <gniibe@fsij.org>
360
361         * regnual/regnual.c (calc_crc32): Enable CRC module.
362
363         * src/neug.c (crc32_rv_stop): New.
364         (neug_fini): Call crc32_rv_stop.
365
366         * src/main.c (main): Call chopstx_conf_idle.
367
368         * src/usb-ccid.c (usb_event_handle): Use 2 for call of
369         chopstx_conf_idle on suspend.  Call random_fini on suspend
370         to stop ADC module.  Call random_init on wakeup.
371         Sleep a bit to switch main thread.
372
373 2017-11-16  NIIBE Yutaka  <gniibe@fsij.org>
374
375         * src/gnuk.h (LED_OFF): New.
376
377         * src/usb-ccid.c (usb_event_handle): LED off on sleep.
378         (ccid_thread): Use constant pointer for chopstx_poll.
379         (poll_event_intr): Remove.
380
381 2017-11-15  NIIBE Yutaka  <gniibe@fsij.org>
382
383         * src/usb-ccid.c (usb_event_handle): Allow sleep on suspend.
384
385         * src/usb_ctrl.c (usb_device_reset): Fix device state.
386
387 2017-11-14  NIIBE Yutaka  <gniibe@fsij.org>
388
389         * src/usb-ccid.c (ccid_usb_reset): Remove
390         (usb_event_handle): Return value change to notify
391         caller about needs for going out of the loop.
392         Support USB suspend/resume.
393         (ccid_thread): Supporting USB suspend, sleep forever with
394         timeout_p = NULL.
395
396         * src/main.c (main): Add USB_DEVICE_STATE_ prefix.
397         * src/usb_ctrl.c: Likewise.
398         (usb_device_reset): Don't call ccid_usb_reset.
399         (usb_set_configuration, usb_set_interface): Likewise.
400
401         * src/usb_desc.c (device_desc): bcdUSB = 2.0, supporting
402         suspend/resume.
403
404 2017-11-13  NIIBE Yutaka  <gniibe@fsij.org>
405
406         * src/usb_ctrl.c: Use new const USB_DEVICE_STATE_*
407         * src/main.c (main): Likewise.
408         * src/usb-ccid.c: Likewise.
409         (INTR_REQ_USB): Remove.  Use the definition
410         in usb-lld.h.
411
412 2017-11-08  NIIBE Yutaka  <gniibe@fsij.org>
413
414         * src/openpgp-do.c (gpg_do_kdf_check): New.
415         (proc_resetting_code): Use gpg_do_kdf_check.
416         * src/openpgp.c (cmd_verify, cmd_change_password)
417         (cmd_reset_user_password): Likewise.
418
419 2017-11-07  NIIBE Yutaka  <gniibe@fsij.org>
420
421         * src/openpgp-do.c (proc_resetting_code): Error when
422         it's not pass-hash.
423
424         * src/openpgp.c (cmd_verify, cmd_change_password)
425         (cmd_reset_user_password): Avoid authentication error
426         by old GnuPG which doesn't support KDF.
427
428 2017-11-06  NIIBE Yutaka  <gniibe@fsij.org>
429
430         * tests/test_empty_card.py (test_extended_capabilities): Support
431         KDF-DO.
432         * test/features/802_get_data_static.feature: Likewise.
433         * test/features/402_get_data_static.feature: Likewise.
434         * test/features/002_get_data_static.feature: Likewise.
435
436 2017-11-02  NIIBE Yutaka  <gniibe@fsij.org>
437
438         * src/openpgp-do.c (rw_kdf): Only writable when no keys.
439         (gpg_do_get_initial_pw_setting): New.
440         (gpg_do_write_prvkey): Use gpg_do_get_initial_pw_setting.
441         (gpg_do_keygen): Likewise.
442         (extended_capabilities): Enable KDF-DO available bit.
443
444         * src/openpgp.c (cmd_change_password): Use
445         gpg_do_get_initial_pw_setting.
446         * src/ac.c (verify_user_0, verify_admin_0): Likewise.
447
448 2017-11-01  NIIBE Yutaka  <gniibe@fsij.org>
449
450         * src/openpgp-do.c (GPG_DO_KDF): New.
451         (GPG_DO_FEATURE_MNGMNT): New.
452         (do_tag_to_nr): Support GPG_DO_KDF.
453         (GPG_DO_UIF_SIG, GPG_DO_UIF_DEC, GPG_DO_UIF_AUT): New.
454         (rw_kdf): New.
455         (gpg_do_table): Add an entry for GPG_DO_KDF.
456
457         * src/gnuk.h (NR_DO_KDF): New.
458
459 2017-10-31  NIIBE Yutaka  <gniibe@fsij.org>
460
461         * src/openpgp-do.c (gpg_do_keygen): Bug fix for memory alignment.
462
463 2017-10-24  NIIBE Yutaka  <gniibe@fsij.org>
464
465         * tests/card_reader.py (CardReader.ccid_power_on): Setting
466         PPS only for Gemalto GemPC reader.
467
468 2017-10-18 Aurelien Jarno <aurelien@aurel32.net>
469
470         * src/gnuk.ld.in: Fix keystore_pool size.
471
472 2017-10-12  Aurelien Jarno <aurelien@aurel32.net>
473
474         * polarssl/include/polarssl/bn_mul.h (MULADDC_HUIT_DEAD): Rename
475         from MULADDC_HUIT.
476         [__ARM_FEATURE_DSP] (MULADDC_1024_CORE, MULADDC_1024_LOOP)
477         (MULADDC_INIT, MULADDC_CORE, MULADDC_HUIT, MULADDC_STOP): New.
478
479         * polarssl/library/bignum.c (mpi_montsqr): Check on
480         POLARSSL_HAVE_ASM and __arm__.
481         [__ARM_FEATURE_DSP] (mpi_montsqr): New.
482         (MAX_WSIZE): New.
483         (mpi_exp_mod): Use MAX_WSIZE.
484
485         * src/Makefile (DEFS): Remove BIGNUM_C_IMPLEMENTATION.
486
487         * src/main.c (HEAP_SIZE): Rename from MEMORY_SIZE.
488         (HEAP_END, HEAP_ALIGNMENT, HEAP_ALIGN): Likewise.
489
490         * src/stack-def.h (SIZE_3): Depend on MEMORY_SIZE.
491         * src/configure: Emit DEFS with MEMORY_SIZE.
492
493 2017-10-11  NIIBE Yutaka  <gniibe@fsij.org>
494
495         * VERSION: 1.2.6.
496
497         * regnual/Makefile (LDSCRIPT): Move after include.
498         * regnual/types.h: Add uintptr_t.
499
500         * test/features/002_get_data_static.feature (data object AID): Fix
501         for any binary value.
502         * 402_get_data_static.feature: Likewise.
503         * 802_get_data_static.feature: Likewise.
504
505 2017-10-10  NIIBE Yutaka  <gniibe@fsij.org>
506
507         * src/main.c (main): Support --debug option.
508         * chopstx: Update to 1.5.
509
510 2017-10-06  NIIBE Yutaka  <gniibe@fsij.org>
511
512         * src/configure (flash_override): Fix suggested by Jeremy Drake.
513         (help): STM8S_DISCOVERY is supported again.
514
515 2017-10-06  NIIBE Yutaka  <gniibe@fsij.org>
516
517         * src/gnuk.ld.in (.stacks): Specify NOLOAD type.
518
519         * src/configure: Allow not specifying VIDPID.
520
521         * src/main.c [GNU_LINUX_EMULATION] (main): Handle "--vidpid"
522         option to assign vendor ID and product ID of USB.
523
524         * src/usb_desc.c [GNU_LINUX_EMULATION] (device_desc): Export.
525
526         * GNUK_USB_DEVICE_ID (0000:0000): New.
527
528 2017-10-05  NIIBE Yutaka  <gniibe@fsij.org>
529
530         * src/stack-def.h (SIZE_1, SIZE_3): Tweak the size.
531
532         * src/call-rsa.c (rsa_genkey): Single step.
533         * src/openpgp-do.c (gpg_do_keygen): Do RSA key generation in single
534         step, using APDU buffer.
535         * src/openpgp.c (cmd_pgp_gakp): Supply the APDU as a buffer.
536
537         * src/Makefile (install): New target.
538
539         * src/configure (prefix. exec_prefix, libexecdir): Add.
540
541         * src/main.c [GNU_LINUX_EMULATION] (main): Option handling.
542
543         * tool/gnuk-emulation-setup: New.
544
545         * polarssl/library/bignum.c (M_LIMBS, limbs_M, MAX_A_LIMBS)
546         (limbs_MAX_A, mpi_gen_prime): Fix for 64-bit machine.
547
548 2017-10-04  NIIBE Yutaka  <gniibe@fsij.org>
549
550         * src/configure (output_vendor_product_serial_strings): Support
551         GNU/Linux emulation.
552
553         * polarssl/library/bignum.c (mpi_div_mpi): Fix for 64-bit machine.
554
555         * src/main.c (gnuk_malloc, gnuk_free): Fix for 64-bit machine.
556
557         * src/stack-def.h (SIZE_3): Tweak the size.
558
559         * src/openpgp-do.c (gpg_do_keygen): Do RSA key generation in two
560         steps.
561
562         * src/call-rsa.c (rsa_genkey_start, rsa_genkey_finish): New.
563         (rsa_genkey): Remove.
564
565 2017-10-03  NIIBE Yutaka  <gniibe@fsij.org>
566
567         * src/call-ec.c (ecc_compute_public): No use of malloc.
568         * src/call-rsa.c (modulus_calc, rsa_genkey): Likewise.
569         * src/ecc-edwards.c (eddsa_compute_public_25519): Likewise.
570         * src/ecc-mont.c (ecdh_compute_public_25519): Likewise.
571         * src/openpgp-do.c (gpg_do_write_prvkey, gpg_do_chks_prvkey)
572         (proc_key_import, gpg_do_keygen): Likewise.
573
574         * polarssl/library/rsa.c: Don't include stdlib.h.
575         * src/gnuk-malloc.h: Rename from stdlib.h.
576         * polarssl/library/bignum.c: Include gnuk-malloc.h.
577
578         * src/Makefile (build/flash.data): Generate.
579
580         * src/main.c (flash_addr_key_storage_start)
581         (flash_addr_data_storage_start): New.
582         (main): Determine flash address.
583
584         * src/flash.c (FLASH_ADDR_KEY_STORAGE_START)
585         (FLASH_ADDR_DATA_STORAGE_START): New.
586         (flash_do_storage_init, flash_terminate, flash_activate)
587         (flash_key_storage_init, flash_copying_gc, flash_do_release)
588         (flash_key_getpage): Use new macros.
589
590 2017-10-02  NIIBE Yutaka  <gniibe@fsij.org>
591
592         * src/main.c (device_initialize_once): Not for GNU/Linux.
593
594         * src/openpgp.c, src/flash.c: Distinguish FLASH_UPGRADE_SUPPORT.
595
596         * src/main.c [GNU_LINUX_EMULATION]: Use emulated_main.
597         (MEMORY_SIZE, MEMORY_END): Fix for GNU/Linux.
598
599         * src/usb-ccid.c (INTR_REQ_USB): Fix for GNU/Linux.
600
601         * polarssl/library/bignum.c (mpi_montsqr): Easy C implementation.
602
603 2017-09-30  NIIBE Yutaka  <gniibe@fsij.org>
604
605         * src/flash.c (flash_terminate, flash_activate)
606         (flash_copying_gc, flash_do_write_internal, flash_do_release)
607         (flash_key_write, flash_check_all_other_keys_released)
608         (flash_key_fill_zero_as_released, flash_key_release)
609         (flash_key_release_page, flash_clear_halfword)
610         (flash_put_data_internal, flash_put_data, flash_bool_clear)
611         (flash_bool_write_internal, flash_bool_write)
612         (flash_enum_write_internal, flash_enum_write)
613         (flash_cnt123_write_internal, flash_cnt123_increment)
614         (flash_cnt123_clear, flash_erase_binary, flash_write_binary): Fix
615         for GNU/Linux.
616
617         * src/usb-ccid.c (ccid_tx_done): Rename from EP1_IN_Callback.
618         (ccid_rx_ready): Rename from EP1_OUT_Callback.
619
620 2017-09-29  NIIBE Yutaka  <gniibe@fsij.org>
621
622         * src/usb-ccid.c (epo_init, epi_init, ccid_thread): Simplify.
623         (EP1_IN_Callback, ccid_prepare_receive, EP1_OUT_Callback)
624         (usb_rx_ready, ccid_error, ccid_power_on, ccid_send_status)
625         (ccid_send_data_block_internal, ccid_send_data_block_0x9000)
626         (ccid_send_data_block_gr, ccid_send_params)
627         (ccid_notify_slot_change, _write) [GNU_LINUX_EMULATION]: Use
628         different usb driver API.
629
630         * src/usb_ctrl.c (usb_device_reset): Fix control endpoint init.
631         (gnuk_setup_endpoints_for_interface): Add DEV
632         argument.
633         (usb_device_reset) [GNU_LINUX_EMULATION]: Use usb_lld_setup_endp.
634
635 2017-09-29  NIIBE Yutaka  <gniibe@fsij.org>
636
637         * src/main.c [FLASH_UPGRADE_SUPPORT] (main): Factor out flash ROM
638         upgrade support.
639         (calculate_regnual_entry_address): Likewise.
640         * src/usb_ctrl.c (usb_setup, download_check_crc32): Likewise.
641
642         * src/openpgp.c (modify_binary): Fix for 64-bit machine.
643         * src/openpgp-do.c (encrypt, decrypt): Likewise.
644         (gpg_data_scan): Likewise.
645         (gpg_do_chks_prvkey): Fix error return path.
646
647         * src/stack-def.h: New.
648
649         * src/gnuk.ld.in: Remove stack definitions.
650         * src/configure: Remove stack size modifications.
651
652         * src/main.c (STACK_MAIN, STACK_PROCESS_1): Use stack-def.h.
653         * src/usb-ccid.c (STACK_PROCESS_3): Likewise.
654         * src/usb-msc.c (STACK_PROCESS_5): Likewise.
655         * src/pin-cir.c (STACK_PROCESS_6, STACK_PROCESS_7): Likewise.
656
657         * src/usb_ctrl.c (download_check_crc32): Use chrc32_rv_ functions.
658
659         * src/mcu-stm32f103.c (rbit, check_crc32): Remove.
660
661         * src/neug.c: Update from NeuG.
662         * src/neug.h: Ditto.
663
664 2017-09-28  NIIBE Yutaka  <gniibe@fsij.org>
665
666         * src/ec_p256k1.c (coefficient_a): Remove.
667
668         * polarssl/library/bignum.c (mpi_fill_pseudo_random): Fix for
669         64-bit machine.
670
671         * src/call-rsa.c (rsa_decrypt): Fix for 64-bit machine.
672
673         * src/flash.c (flash_do_storage_init): Rename from flash_init.
674         (flash_key_storage_init): Rename from flash_init_keys.
675         * src/openpgp.c (gpg_init): Use new function names.
676
677         * src/stdlib.h: Update for GNU/Linux emulation.
678
679         * src/Makefile: Support GNU/Linux emulation.
680         * src/configure: Support GNU/Linux emulation.
681         * emulation: Remove.
682
683 2017-08-11  NIIBE Yutaka  <gniibe@fsij.org>
684
685         * VERSION: 1.2.5.
686         * chopstx: Update to 1.4.
687
688         * src/gnuk.ld.in (__process3_stack_size__): Tweak the size.
689
690         * src/configure: Define STM32F103_OVERRIDE_FLASH_SIZE_KB for
691         BULE_PILL.
692
693         * src/configure: Let generate src/config.mk.
694         * src/Makefile: Rename from src/Makefile.in.
695         * regnual/Makefile: Use src/config.mk.
696
697 2017-08-03  NIIBE Yutaka  <gniibe@fsij.org>
698
699         * src/openpgp.c (cmd_terminate_df): Fix for admin-less mode.
700
701 2017-08-03  Jeremy Drake <jeremydrake+gnuk@eacceleration.com>
702
703         * regnual/regnual.c (main): Allow compile time
704         flash size definition by STM32F103_OVERRIDE_FLASH_SIZE_KB.
705
706 2017-08-02  Jeremy Drake  <jeremydrake+gnuk@eacceleration.com>
707
708         * src/flash.c (flash_terminate): Erase Certificate DO, too.
709
710 2017-08-01  NIIBE Yutaka  <gniibe@fsij.org>
711
712         * src/openpgp.c (FILE_CARD_TERMINATED_OPENPGP): Remove.
713         (cmd_select_file): Don't change file_selection.
714
715 2017-07-19  NIIBE Yutaka  <gniibe@fsij.org>
716
717         * src/mod.c (mod_inv): Clear TMP.
718
719         * src/configure (REVISION): Generate even when no git.
720
721         * polarssl/library/bignum.c (mpi_exp_mod): Call mpi_grow for X
722         after the initialization of RR.
723
724 2017-07-18  NIIBE Yutaka  <gniibe@fsij.org>
725
726         * src/configure: Bark when no git available.
727
728 2017-07-18  Anthony Romano <anthony.romano@coreos.com>
729
730         * docker: New.
731
732 2017-07-18  Anthony Romano <anthony.romano@coreos.com>
733
734         * src/main.c (MEMORY_SIZE, MEM_HEAD_IS_CORRUPT, MEM_HEAD_CHECK):
735         New.
736         (gnuk_malloc, gnuk_free): Add calls to MEM_HEAD_CHECK.
737
738         * src/gnuk.h (FATAL_HEAP): New.
739
740 2017-07-18  Anthony Romano <anthony.romano@coreos.com>
741
742         * src/openpgp-do.c (gpg_reset_algo_attr): New.
743         (rw_algorithm_attr): Use gpg_reset_algo_attr.
744         Fix null dereference.
745
746 2017-07-18  Anthony Romano <anthony.romano@coreos.com>
747
748         * src/mod.c (mod_reduce): Clean up unused code.
749
750 2017-07-18  Anthony Romano <anthony.romano@coreos.com>
751
752         * src/call-rsa.c (modulus_calc): Free modulus on error.
753         (rsa_genkey): Remove bogus check, and call chopstx_cleanup_pop
754         with 1 to release p_q_modulus on error.  Assign NULL to clp.arg
755         when it's goes with no error.
756
757         * src/main.c (gnuk_free): Allow NULL.
758
759 2017-07-18  NIIBE Yutaka  <gniibe@fsij.org>
760
761         * Update chopstx (with USBIP emulation).
762
763 2017-05-12  NIIBE Yutaka  <gniibe@fsij.org>
764
765         * VERSION: 1.2.4.
766
767 2017-04-28  NIIBE Yutaka  <gniibe@fsij.org>
768
769         * src/mcu-stm32f103.c: New.
770         (check_crc32, sram_address): New.
771
772         * src/usb_ctrl.c (download_check_crc32): Use check_crc32 and
773         sram_address.
774
775         * src/openpgp-do.c (gpg_write_digital_signature_counter): Fix
776         writing lower 10-bit.
777
778 2017-04-27  NIIBE Yutaka  <gniibe@fsij.org>
779
780         * src/gnuk.ld.in (_data_pool): Move to the end.
781
782         * src/flash.c (flash_init): Return address of end of data object.
783         * src/openpgp.c (gpg_init): Get address of end of data object.
784         * src/openpgp-do.c (gpg_data_scan): Check the end address.
785
786 2017-02-02  NIIBE Yutaka  <gniibe@fsij.org>
787
788         * VERSION: 1.2.3.
789
790         * src/gnuk.ld.in (__process1_stack_size__): Increase by 0x20.
791         * chopstx: Update to 1.3.
792         * src/configure: Add BLUE_PILL in the help message.
793
794 2017-02-01  NIIBE Yutaka  <gniibe@fsij.org>
795
796         * README: Update README.  Thanks to Paul Fertser.
797
798 2017-01-02  Szczepan Zalega <szczepan@nitrokey.com>
799
800         * tool/upgrade_by_passwd.py: Add file extention check.
801
802 2017-02-01  NIIBE Yutaka  <gniibe@fsij.org>
803
804         * tool/upgrade_by_passwd.py (main): More verbose messages
805         suggested by Szczepan Zalega <szczepan@nitrokey.com>.
806
807         * tool/gnuk_token.py (USB_PRODUCT_LIST): New.
808         (gnuk_devices_by_vidpid): Support searching by USB_PRODUCT_LIST.
809         Thanks to Szczepan Zalega <szczepan@nitrokey.com>.
810
811         * tool/usb_strings.py: Use gnuk_token.py.
812
813 2016-10-21  Niibe Yutaka  <gniibe@fsij.org>
814
815         * src/ecc.c (check_secret): Fix condition.
816
817 2016-10-15  NIIBE Yutaka  <gniibe@fsij.org>
818
819         * VERSION: 1.2.2.
820
821         * tool/gnuk_put_binary_libusb.py (main): Likewise.
822         * tool/upgrade_by_passwd.py (main): Add call of cmd_select_openpgp
823         method.
824
825         * src/openpgp.c (gpg_init): flash_init_keys shoule be after
826         gpg_data_scan since flash_init_keys accesses Data Object for
827         key attributes.
828
829         * src/usb-ccid.c (ccid_power_on): Don't waste stack.
830
831 2016-10-14  Niibe Yutaka  <gniibe@fsij.org>
832
833         * src/usb-ccid.c (ccid_power_on) [LIFE_CYCLE_MANAGEMENT_SUPPORT]:
834         Change LCS value in ATR at run time.
835
836         * src/openpgp.c (gpg_init): Handle FILE_CARD_TERMINATED.
837         (cmd_select_file): Don't return AID.
838         (cmd_activate_file, cmd_terminate_df): New.
839         (process_command_apdu): Let return GPG_NO_RECORD() when
840         not selected.
841
842         * src/openpgp-do.c (gpg_do_terminate): New.
843         (gpg_data_scan): Handle p_start is NULL.
844         (do_hist_bytes): Remove.
845
846         * src/flash.c (flash_data): Change the value from 0x0000.
847         (flash_init): Support termination state.  Fix handling
848         of the boundary case where gen0 is 0xfffe.
849         (flash_terminate, flash_activate): New.
850         (flash_copying_gc): Skip 0xffff for generation number.
851
852 2016-10-13  Niibe Yutaka  <gniibe@fsij.org>
853
854         * src/status-code.h: Rename from openpgp.h.
855
856         * chopstx: Update to 1.2.
857
858         * tests: New test suite for OpenPGP card with PyTest.
859
860         * src/configure (factory_reset): New.
861
862         * src/usb-ccid.c (ccid_power_on): Use ATR_head and historical
863         bytes.
864
865         * src/openpgp-do.c (rw_algorithm_attr): Clear fingerprint, timestamp,
866         and possibly ds_counter.
867
868 2016-10-12  Niibe Yutaka  <gniibe@fsij.org>
869
870         * test/features/steps.py (cmd_reset_retry_counter): Fix.
871         * tool/gnuk_token.py (gnuk_token.cmd_reset_retry_counter): Fix.
872         (gnuk_token.cmd_select_openpgp): Fix P2.
873
874 2016-09-02  Niibe Yutaka  <gniibe@fsij.org>
875
876         * src/configure (REVISION): Fix the detection of .git.
877         It may be a regular file (if it's created by worktree).
878
879 2016-08-24  Niibe Yutaka  <gniibe@fsij.org>
880
881         * test/features/steps.py (ini): Use GLC (the global context),
882         instead of FTC (the feature context), so that token only is
883         opened once.
884
885 2016-08-03  Niibe Yutaka  <gniibe@fsij.org>
886
887         * tool/hub_ctrl.py: Port to Python 3.
888
889 2016-07-11  NIIBE Yutaka  <gniibe@fsij.org>
890
891         * VERSION: 1.2.1.
892
893         * src/usb-ccid.c (ccid_power_on): Fix call of chopstx_create.
894         * src/usb-msc.c (msc_init): Ditto.
895         * src/pin-cir.c (cir_init): Ditto.
896         * src/neug.c (neug_init): Ditto.
897         * src/main.c (main): Ditto.
898
899         * src/usb-ccid.c (struct ccid): Arrange for smaller footprint.
900         * src/gnuk.h (struct apdu): Likewise.
901
902         * src/usb-ccid.c (ccid_card_change_signal): Don't touch ccid_state_p.
903         (ccid_state_p): This is constant.
904
905         * src/configure (output_vendor_product_serial_strings): Add const
906         qualifier.
907
908         * src/usb-ccid.c (epo_init, epi_init): Simplify without notify method.
909         (EP1_IN_Callback, EP1_OUT_Callback): Call notify_tx and notify_icc
910         directly.
911
912 2016-07-09  NIIBE Yutaka  <gniibe@fsij.org>
913
914         * src/openpgp.c (openpgp_card_thread): Don't need to get SELF.
915
916 2016-07-06  NIIBE Yutaka  <gniibe@fsij.org>
917
918         * src/pin-cir.c (cir_getchar): Use chopstx_poll.
919         * src/usb-ccid.c (usb_tx_done): Fix ifdef condition.
920         * src/usb_ctrl.c (usb_ctrl_write_finish): Fix ifdef nesting.
921
922 2016-07-04  NIIBE Yutaka  <gniibe@fsij.org>
923
924         * doc/conf.py: Remove 'sphinx.ext.pngmath' and 'sphinx.ext.mathjax'.
925         Reported by Kenji Rikitake.
926
927 2016-07-01  NIIBE Yutaka  <gniibe@fsij.org>
928
929         * chopstx: Update to 1.1.
930         * src/usb-ccid.c (poll_event_intr, ccid_thread): Follow the
931         change.
932
933 2016-06-21  Niibe Yutaka  <gniibe@fsij.org>
934
935         * doc/index.rst: Update documentation by an example
936         Ed25519/cv25519.
937
938 2016-06-17  Niibe Yutaka  <gniibe@fsij.org>
939
940         * chopstx: Update to 1.0.
941
942 2016-06-15  NIIBE Yutaka  <gniibe@fsij.org>
943
944         * src/gnuk.ld.in (__process2_stack_size__): Update
945         thread size for rng by examining NeuG.
946
947         * src/usb-ccid.c (poll_event_intr): New.
948
949 2016-06-14  Niibe Yutaka  <gniibe@fsij.org>
950
951         * regnual/regnual.c (usb_device_reset): Rename from
952         usb_cb_device_reset.
953         (usb_ctrl_write_finish): Rename from usb_cb_ctrl_write_finish.
954         (usb_setup): Rename from usb_cb_setup.
955         (usb_get_descriptor): Rename from usb_cb_get_descriptor.
956         (usb_set_configuration): New.
957         (usb_interrupt_handler): New.
958
959         * src/usb-ccid.c (usb_tx_done): Rename from usb_cb_tx_done.
960         (usb_rx_ready): Rename from usb_cb_rx_ready.
961         (usb_event_handle): New.
962         (ccid_thread): Use usb_event_handle.
963
964         * src/usb-msc.c (EP6_IN_Callback): Update to new USB API.
965         (EP6_OUT_Callback): Likewise.
966
967         * src/usb_ctrl.c (usb_device_reset): Rename from
968         usb_cb_device_reset.
969         (vcom_port_data_setup): Update to new USB API.
970         (usb_ctrl_write_finish): Rename from usb_cb_ctrl_write_finish.
971         (usb_setup): Rename from usb_cb_setup.
972         (usb_set_configuration): New, based on usb_cb_handle_event.
973         (usb_set_interface): Rename from usb_cb_interface.
974         (usb_get_interface): New.
975         (usb_get_status_interface): New.
976
977         * src/usb_desc.c (usb_get_descriptor): Rename from
978         usb_cb_get_descriptor.
979
980 2016-06-02  Niibe Yutaka  <gniibe@fsij.org>
981
982         * regnual/regnual.c (usb_cb_tx_done): Follow the change of USB
983         API.
984
985         * regnual/reset.c: Rename from sys.c.
986
987 2016-06-01  Niibe Yutaka  <gniibe@fsij.org>
988
989         * tool/stlinkv2.py (stlinkv2.__init__): Don't
990         call setConfiguration.
991
992         * tool/gnuk_token.py (gnuk_token, regnual): Don't
993         call setAltInterface, it's not needed.
994
995         * src/usb-ccid.c (ccid_notify_slot_change): New.
996         (ccid_thread): Call ccid_notify_slot_change at
997         interface_reset and EV_CARD_CHANGE.
998
999 2016-05-31  NIIBE Yutaka  <gniibe@fsij.org>
1000
1001         * src/usb_stm32f103.c, src/stm32f103.h: Remove.
1002         * src/adc_stm32f103.c, src/sys.c: Remove.
1003
1004         * src/usb_ctrl.c (usb_cb_interface): call ccid_usb_reset.
1005         (usb_cb_handle_event): Likewise.
1006
1007         * src/usb-ccid.c (ccid_thread): Handle RESET->CONFIGURE process
1008         correctly.
1009         (ccid_thread): Handle SET_INTERFACE correctly.
1010
1011         * polarssl/library/aes.c (FT0, FT1, FT2): Add "weak" flag.
1012
1013         * src/neug.c: Update from NeuG.
1014
1015         * src/usb_desc.c (usb_cb_get_descriptor): Only valid if USE_SYS3.
1016
1017         * src/Makefile.in (USE_SYS, USE_USB, USE_ADC): Enabled.
1018         (CHIP): Add.
1019
1020         * src/sys.c, src/sys.h: Remove.
1021         * src/usb_stm32f103.c, src/usb_lld.h: Remove.
1022         * src/adc_stm32f103.c, src/adc.h: Remove.
1023
1024         * chopstx: Update to 0.12.
1025
1026 2016-05-21  Niibe Yutaka  <gniibe@fsij.org>
1027
1028         * src/main.c (led_blink, main): Fix LED blink protocol.
1029
1030 2016-05-20  NIIBE Yutaka  <gniibe@fsij.org>
1031
1032         * VERSION: 1.2.0.
1033         * src/usb-ccid.c (ccid_thread): Fix timeout.
1034         (icc_handle_timeout, icc_send_status): Tweak.
1035
1036 2016-05-19  Niibe Yutaka  <gniibe@fsij.org>
1037
1038         * src/usb_ctrl.c (usb_cb_ctrl_write_finish): Set bDeviceState.
1039
1040         * src/usb-ccid.c: Rename from usb-icc.c.
1041         (ccid_thread): Handle reGNUal upgrade.
1042
1043         * src/Makefile.in (CSRC): Follow the change.
1044
1045         * chopstx: Update to 0.11.
1046
1047 2016-05-18  Niibe Yutaka  <gniibe@fsij.org>
1048
1049         * src/gnuk.ld.in: Tweak thread size.
1050         * src/main.c (main): Use chopstx_setpriority.
1051         * src/usb-icc.c (ccid_init): Use new eventflag API.
1052
1053         * regnual/regnual.c (nvic_enable_intr): New.
1054         (main): Call nvic_enable_intr.
1055
1056         * chopstx: Update.
1057
1058 2016-05-16  Niibe Yutaka  <gniibe@fsij.org>
1059
1060         * regnual/regnual.c (usb_cb_rx_ready, usb_cb_tx_done)
1061         (usb_cb_device_reset): Follow the change of USB API.
1062
1063         * chopstx: Update.
1064         * src/sys.c: Update from Chopstx.
1065
1066 2016-05-13  Niibe Yutaka  <gniibe@fsij.org>
1067
1068         * src/neug.c (rng): Call chopstx_claim_irq before adc_start.
1069         Remove call of chopstx_release_irq.
1070
1071 2016-05-12  Niibe Yutaka  <gniibe@fsij.org>
1072
1073         * chopstx: Update.
1074         * src/sys.c: Update from Chopstx.
1075         * src/usb_lld.h: Likewise.
1076         * src/usb_stm32f103.c: Likewise.
1077
1078         * src/usb_ctrl.c (usb_intr): Follow the change of USB API.
1079         (usb_cb_rx_ready, usb_cb_tx_done): Likewise.
1080
1081         * src/adc.h: Remove unused declarations.
1082
1083 2016-03-08  Niibe Yutaka  <gniibe@fsij.org>
1084
1085         * tool/gnuk_token.py (gnuk_token.__init__, regnual.__init__):
1086         Don't call setConfiguration method.
1087
1088         * src/usb_lld.h (usb_cb_ctrl_write_finish): Change the API of
1089         callback, which possibly needs INDEX, VALUE, and LEN parameters.
1090         (usb_lld_set_data_to_recv): Fix the type of P.
1091         (USB_DEVICE_DESCRIPTOR_TYPE, USB_CONFIGURATION_DESCRIPTOR_TYPE)
1092         (USB_STRING_DESCRIPTOR_TYPE, USB_INTERFACE_DESCRIPTOR_TYPE)
1093         (USB_ENDPOINT_DESCRIPTOR_TYPE): Remove, as we have the enumeration
1094         values for same things.
1095
1096         * src/usb_stm32f103.c (handle_in0): Follow the change.
1097         * src/usb_ctrl.c (usb_cb_ctrl_write_finish): Likewise.
1098
1099         * src/usb_desc.c (usb_cb_get_descriptor): Use HID_INTERFACE.
1100         (device_desc, config_desc, string_descriptors)
1101         (usb_cb_get_descriptor): Use the enumeration types.
1102         * src/configure: Use the enumeration types.
1103
1104         * regnual/regnual.c: Follow the change of usb_lld.h.
1105
1106 2016-02-09  Niibe Yutaka  <gniibe@fsij.org>
1107
1108         * src/openpgp.c (cmd_verify): Support VERIFY reset, which is
1109         described in the specification V2.2 and V3.1.
1110
1111         * polarssl/library/bignum.c (mpi_exp_mod): Fix to our local
1112         change.  Thanks to Aidan Thornton for the failure test case.
1113
1114         Fix of mpi_div_mpi from upstream.
1115         * polarssl/library/bignum.c (int_clz, int_div_int): New.
1116         (mpi_div_mpi): Use int_div_int.
1117
1118 2016-02-09  Niibe Yutaka  <gniibe@fsij.org>
1119
1120         * src/openpgp.c (s2k): Include the unique ID of MCU into the
1121         computation of S2K function.
1122
1123 2016-02-08  Niibe Yutaka  <gniibe@fsij.org>
1124
1125         * src/modp256r1.c (modp256r1_add, modp256r1_sub): Keep the result
1126         less than P256R1.
1127         (modp256r1_reduce): Fix wrong calculation.
1128         * src/modp256k1.c (modp256k1_add, modp256k1_sub): Likewise.
1129         Thanks to Aidan Thornton.
1130
1131 2016-02-05  Niibe Yutaka  <gniibe@fsij.org>
1132
1133         * src/configure: Add submodule check suggested by Elliott
1134         Mitchell.
1135
1136 2015-11-30  perillamint  <perillamint@gentoo.moe>
1137
1138         * src/openpgp.c (card_thread): Fix offset of bConfirmPIN.
1139
1140 2015-09-18  Niibe Yutaka  <gniibe@fsij.org>
1141
1142         * VERSION: 1.1.9.
1143
1144         * src/openpgp-do.c (proc_key_import): Fix error return.
1145         (rw_algorithm_attr): Check it's not ALGO_RSA2K.
1146
1147 2015-09-17  Niibe Yutaka  <gniibe@fsij.org>
1148
1149         * VERSION: 1.1.8.
1150
1151 2015-09-15  Niibe Yutaka  <gniibe@fsij.org>
1152
1153         * chopstx: Update to 0.10.
1154
1155         * src/main.c (main): Don't join after calling ccid_usb_reset.
1156         * src/usb-icc.c (ccid_thread): Don't finish on reset, but
1157         keep running.
1158
1159         * src/usb_ctrl.c (usb_cb_device_reset): Stop the interface.
1160
1161         * src/usb_stm32f103.c (std_set_interface): Bug fix for conf.
1162
1163         * src/gnuk.ld.in (__process3_stack_size__): Increase stack size of
1164         GPG thread.
1165         (__process2_stack_size__): Increase stack size of RNG.
1166         (__process4_stack_size__): Increase stack size of USB.
1167         (__main_stack_size__): Decrease stack size of exception handlers.
1168         (__process1_stack_size__): Decrease stack size of CCID.
1169
1170 2015-09-14  Niibe Yutaka  <gniibe@fsij.org>
1171
1172         * src/gnuk.h (LED_GNUK_EXEC): New.
1173         * src/main.c, src/usb-icc.c, src/usb_ctrl.c: icc_state_p access
1174         clean up.
1175
1176 2015-09-11  Niibe Yutaka  <gniibe@fsij.org>
1177
1178         * tool/upgrade_by_passwd.py (main): Loop until finding reGNUal
1179         device.
1180
1181 2015-09-10  Niibe Yutaka  <gniibe@fsij.org>
1182
1183         * src/call-rsa.c (rsa_cleanup): New.
1184         (rsa_sign, rsa_decrypt, rsa_genkey): Allow cancellation.
1185         * src/openpgp.c (cmd_pso, cmd_internal_authenticate): Cancellation
1186         is handled by each functions in case of RSA.
1187
1188 2015-09-09  Niibe Yutaka  <gniibe@fsij.org>
1189
1190         * src/sys.h: Update from Chopstx.
1191         * src/adc_stm32f103.c: Update from NeuG.
1192
1193         * src/openpgp.c (process_command_apdu): Protect command execution
1194         against cancelling the execution thread.
1195         (cmd_pso, cmd_internal_authenticate): Allow cancellation.
1196
1197         * src/main.c (main): Handle LED_USB_RESET.
1198
1199         * src/usb-icc.c (ccid_usb_reset): New.
1200         (ccid_thread): Upon receival of EV_USB_RESET, finish
1201         the thread, canceling the card thread.
1202
1203 2015-09-08  Niibe Yutaka  <gniibe@fsij.org>
1204
1205         * src/gnuk.h (EV_USB_RESET, LED_USB_RESET): New.
1206
1207         * src/usb_ctrl.c (CDC_CTRL_DTR): New.
1208         (vcom_port_data_setup): Distinguish detail->value for DTR.
1209
1210         * src/configure (help): Add ST_DONGLE and ST_NUCLEO_F103.
1211
1212 2015-09-04  Niibe Yutaka  <gniibe@fsij.org>
1213
1214         * src/openpgp-do.c (do_openpgpcard_aid): Use upper bytes of unique
1215         ID of MCU; same as USB serial number.
1216
1217         * src/configure (help): Add NITROKEY_START.
1218
1219 2015-08-26  Mateusz Zalega  <mateusz@nitrokey.com>
1220
1221         * GNUK_USB_DEVICE_ID: Add Nitrokey Start.
1222
1223 2015-08-05  Niibe Yutaka  <gniibe@fsij.org>
1224
1225         * VERSION: 1.1.7.
1226
1227 2015-08-04  Niibe Yutaka  <gniibe@fsij.org>
1228
1229         * src/adc_stm32f103.c: Update from NeuG 1.0.3.
1230
1231         * chopstx: Update to 0.08.
1232         * src/sys.h: Update.
1233
1234 2015-08-03  Niibe Yutaka  <gniibe@fsij.org>
1235
1236         * test/features/steps.py (set_msg): Python3 fix.
1237         * test/generate_keys.py: Likewise.
1238         * test/rsa_keys.py: Likewise.
1239
1240         * tool/gnuk_token.py (gnuk_token.download, gnuk_token.execute)
1241         (regnual.download): Python3 fix.
1242         (list_to_string): Remove.
1243
1244         * tool/upgrade_by_passwd.py (maian): Python3 fix.
1245         * tool/usb_strings.py (main): Python3 fix.
1246
1247 2015-07-31  Niibe Yutaka  <gniibe@fsij.org>
1248
1249         * src/configure (output_vendor_product_serial_strings): Fix sed
1250         script when string is short.  Remove empty line.
1251
1252         * regnual/regnual.c (usb_cb_ctrl_write_finish, usb_cb_setup)
1253         (usb_cb_get_descriptor, usb_cb_interface): Follow the change
1254         of USB API.
1255
1256         * tool/stlinkv2.py: Support ST-Link/V2-1.
1257
1258 2015-07-28  Niibe Yutaka  <gniibe@fsij.org>
1259
1260         * tool/stlinkv2.py: Fix for Python3.  Thanks to Bertrand Jacquin.
1261
1262         * tool/gpg_agent.py: Fix for Python3.
1263
1264         * src/usb-msc.c: Update from Fraucheky.
1265
1266         * src/usb_stm32f103.c (struct DATA_INFO): Remove offset.
1267         (struct DEVICE_INFO): Integrate CONTROL_INFO.
1268
1269 2015-07-27  Niibe Yutaka  <gniibe@fsij.org>
1270
1271         * src/usb_stm32f103.c (usb_lld_reply_request): New.
1272         (usb_lld_set_data_to_send): Remove.
1273         (usb_lld_set_data_to_recv): Not a macro but a function.
1274         (std_get_status): Don't use statically allocated memory.
1275         (std_get_configuration): Use usb_lld_reply_request.
1276         (handle_setup0): Follow the change.
1277         * src/usb_ctrl.c (vcom_port_data_setup, usb_cb_setup)
1278         (usb_cb_interface): Use usb_lld_reply_request.
1279         * src/usb_desc.c (usb_cb_get_descriptor): Likewise.
1280
1281 2015-07-24  Niibe Yutaka  <gniibe@fsij.org>
1282
1283         * tool/gnuk_put_binary.py: Remove.
1284         * tool/gnuk_remove_keys.py: Remove.
1285
1286 2015-07-23  Niibe Yutaka  <gniibe@fsij.org>
1287
1288         * src/configure (nl): New.  Follow the change of NeuG.
1289
1290 2015-07-21  Niibe Yutaka  <gniibe@fsij.org>
1291
1292         * VERSION: 1.1.6.
1293
1294 2015-07-20  Niibe Yutaka  <gniibe@fsij.org>
1295
1296         * src/openpgp-do.c (gpg_do_keygen): Support ECC.
1297         * src/call-ec.c (ecc_check_secret): New.
1298         * src/ecc.c (check_secret): New.
1299
1300 2015-07-18  Niibe Yutaka  <gniibe@fsij.org>
1301
1302         * src/configure (keygen): It's always enabled.
1303         * src/openpgp-do.c (gpg_do_keygen): Support key generation.
1304         * src/openpgp.c (cmd_pgp_gakp): Likewise.
1305         * src/call-rsa.c (rsa_genkey): Likewise.
1306         * src/random.c (random_gen):  Likewise.
1307         * src/Makefile.in (KEYGEN_SUPPORT): Remove.
1308         * polarssl/include/polarssl/config.h (POLARSSL_GENPRIME): Define.
1309
1310 2015-07-16  Niibe Yutaka  <gniibe@fsij.org>
1311
1312         * src/configure (FLASH_PAGE_SIZE, FLASH_SIZE, MEMORY_SIZE)
1313         [sys1_compat]: Use safe values for common binary.
1314         (TARGET_DEFINE): Remove.
1315
1316 2015-07-15  Niibe Yutaka  <gniibe@fsij.org>
1317
1318         * tool/usb_strings.py (field): Add 'Board'.
1319
1320         * regnual/regnual.c (usb_cb_get_descriptor): Update.
1321         * src/usb_ctrl.c (usb_cb_interface): Call usb_lld_write.
1322         * src/usb_desc.c (usb_cb_get_descriptor): Support sys_board_name,
1323         using usb_lld_write.
1324         * src/usb_lld.h (usb_cb_get_descriptor): Add last argument length
1325         for asked length.
1326         * src/usb_stm32f103.c (handle_setup0): Allow setup callback to
1327         call usb_lld_write with ENDP0.
1328         * src/usb_conf.h (NUM_STRING_DESC): Remove.
1329
1330         * src/configure [!sys1_compat] (CONFIG): Don't include target
1331         board name.
1332
1333         * src/flash.c: Detect flash_page_size at runtime.
1334
1335         * src/main.c: Remove dependency to board.h.
1336
1337         * src/neug.c: Update from NeuG 1.0.2.
1338         * src/adc_stm32f103.c: Update.
1339
1340         * chopstx: Update to 0.07.
1341         * src/sys.c: Update.
1342         * src/sys.h: Update.
1343         * src/gnuk.ld.in: Update.
1344
1345         * tool/stlinkv2.py (stlinkv2.get_chip_id): New.  Detect flash
1346         size, too.
1347         (main): Call stlinkv2.get_chip_id after MCU reset and stop.
1348         Verify read out fix.
1349
1350 2015-07-11  Niibe Yutaka  <gniibe@fsij.org>
1351
1352         * src/configure (help): Add STM32_PRIMER2 and CQ_STARM.
1353
1354         * chopstx: Update to 0.06.
1355
1356         * tool/stlinkv2.py: Support 512kB version of STM32F103.
1357         The size of executable file should be even.
1358
1359 2015-07-07  Niibe Yutaka  <gniibe@fsij.org>
1360
1361         * src/Makefile.in (CSRC): Add ecc-mont.c.
1362
1363         * src/ecc-mont.c (mod25638_mul_121665): Fix.
1364         (ecdh_compute_public_25519, ecdh_decrypt_curve25519): New.
1365
1366         * src/openpgp.c (cmd_pso): Support ALGO_CURVE25519.
1367
1368         * src/openpgp-do.c (algorithm_attr_cv25519): New.
1369         (rw_algorithm_attr, get_algo_attr_data_object)
1370         (gpg_get_algo_attr_key_size, gpg_do_write_prvkey)
1371         (proc_key_import, gpg_do_public_key): Support ALGO_CURVE25519.
1372
1373         * src/gnuk.h (ALGO_CURVE25519): New.
1374
1375 2015-07-06  Niibe Yutaka  <gniibe@fsij.org>
1376
1377         Enhancement for FSM-55.
1378         * tool/stlinkv2.py (stlinkv2.control_nrst): New.
1379         (stlinkv2.get_rdp_key,has_spi_flash,has_protection): New.
1380         (stlinkv2.get_core_id): Rename.
1381         (stlinkv2.blank_check): Use self.flash_size.
1382         (stlinkv2.start): Call control_nrst.  Call get_core_id.
1383         Distinguishing chip, and set rdp_key, flash_size and require_nrst.
1384         (stlinkv2.flash_write): Use self.flash_block_size.
1385         (main): Call control_nrst.
1386         (prog_flash_write_body, prog_option_bytes_write_body)
1387         (prog_blank_check_body): Support Cortex-M0.
1388         (main): Call API V2 halt twice.
1389         * tool/asm-thumb/*.S: Updated for Cortex-M0.
1390
1391 2015-06-30  Niibe Yutaka  <gniibe@fsij.org>
1392
1393         * src/sys.c: Update from chopstx/example-cdc/sys.c.
1394
1395         * src/main.c (device_initialize_once): Apply change of NeuG.
1396
1397 2015-06-03  Niibe Yutaka  <gniibe@fsij.org>
1398
1399         * VERSION: 1.1.5.
1400
1401         * test/ecc_nistp256_keys.py: New.
1402
1403         * tool/upgrade_by_passwd.py: Remove -p option and add -f option.
1404
1405         * tool/gnuk_token.py (gnuk_token.download): Add verbose flag.
1406         (regnual.download): Ditto.
1407
1408         * tool/gnuk_upgrade.py: Use gnuk_token module.
1409
1410 2015-06-02  Niibe Yutaka  <gniibe@fsij.org>
1411
1412         * src/openpgp.c (cmd_pso): Support OpenPGPcard spec v3.0.
1413
1414 2015-04-20  Niibe Yutaka  <gniibe@fsij.org>
1415
1416         * chopstx: Upgrade to 0.05.
1417
1418 2015-04-19  Niibe Yutaka  <gniibe@fsij.org>
1419
1420         * src/gnuk.h (CCID_CARD_INIT): New.
1421         * src/usb_desc.c (gnukConfigDescriptor): Update dwDefaultClock,
1422         dwMaximumClock, dwFeatures, and bClassEnvelope.
1423         * src/usb_ctrl.c (freq_table): Change the value to 4000MHz.
1424         (usb_cb_handle_event): Call ccid_card_change_signal after configure.
1425         * src/usb-icc.c (ccid_thread): Change EV_CARD_CHANGE handling.
1426
1427 2015-04-18  Niibe Yutaka  <gniibe@fsij.org>
1428
1429         * src/main.c (main): Call chopstx_main_init.
1430         * src/Makefile.in (DEFS): Remove CHX_PRIO_MAIN.
1431
1432 2015-04-17  Niibe Yutaka  <gniibe@fsij.org>
1433
1434         * src/configure: Fix shell syntax.
1435
1436 2015-03-31  Niibe Yutaka  <gniibe@fsij.org>
1437
1438         * src/usb_conf.h (ICC_NUM_INTERFACES, HID_NUM_INTERFACES)
1439         (HID_NUM_INTERFACES, VCOM_NUM_INTERFACES, MSC_NUM_INTERFACES)
1440         (NUM_INTERFACES): Define here (moved from usb_desc.c).
1441         (ICC_INTERFACE, HID_INTERFACE, VCOM_INTERFACE_0, VCOM_INTERFACE_1)
1442         (MSC_INTERFACE): New.
1443         * src/usb_ctrl.c (gnuk_setup_endpoints_for_interface)
1444         (usb_cb_setup, usb_cb_ctrl_write_finish): Use *_INTERFACE.
1445         * src/usb_desc.c (gnukConfigDescriptor): Likewise.
1446
1447 2015-03-06  Niibe Yutaka  <gniibe@fsij.org>
1448
1449         * src/ecc-edwards.c (eddsa_sign_25519): Return 0.
1450
1451 2015-02-25  Niibe Yutaka  <gniibe@fsij.org>
1452
1453         * src/openpgp.c (cmd_internal_authenticate): Fix storing to
1454         res_APDU_size.
1455
1456 2015-02-10  Niibe Yutaka  <gniibe@fsij.org>
1457
1458         * src/openpgp.c (cmd_pso): Fix counter update for EdDSA.  Thanks
1459         to Jonathan Schleifer.
1460
1461         * src/call-rsa.c (rsa_sign): Don't set res_APDU_len.
1462         (rsa_decrypt): Likewise, but get OUTPUT_LEN_P as an argument.
1463
1464 2015-02-09  Niibe Yutaka  <gniibe@fsij.org>
1465
1466         * src/openpgp.c (cmd_pso): Fix EdDSA. Use GPG_KEY_FOR_SIGNING.
1467
1468 2014-12-15  Niibe Yutaka  <gniibe@fsij.org>
1469
1470         * VERSION: 1.1.4.
1471
1472 2014-12-13  Niibe Yutaka  <gniibe@fsij.org>
1473
1474         * src/flash.c (flash_key_getpage, flash_key_release_page): New.
1475
1476         * src/openpgp-do.c (gpg_do_delete_prvkey): New arg.
1477         (rw_algorithm_attr): Call gpg_do_delete_prvkey with CLEAN_PAGE_FULL.
1478
1479 2014-12-12  Niibe Yutaka  <gniibe@fsij.org>
1480
1481         * src/Makefile.in (build/bignum.o): Specific OPT for this target.
1482
1483         * src/configure (target): Default is FST-01.
1484         (--with-dfu): FST-01 doesn't have DFU.  If set, it must be
1485         mistake.
1486
1487         * boards/STBEE_MINI: Remove, since it is now supported by Chopstx.
1488
1489         * test/features/802_get_data_static.feature: Reflect the change
1490         of extended capabilities.
1491         * test/features/402_get_data_static.feature: Ditto.
1492         * test/features/002_get_data_static.feature: Ditto.
1493
1494         * test/features/003_keyattr_change.feature: New test.
1495
1496         * src/usb_lld.h: Don't use 'extern' for function declarations.
1497         * src/usb-icc.c (end_cmd_apdu_data): Fix Le handling.
1498
1499 2014-12-11  Niibe Yutaka  <gniibe@fsij.org>
1500
1501         * chopstx: Upgrade to 0.04.
1502         * src/syc.c: Update from 0.04.
1503
1504 2014-12-10  Niibe Yutaka  <gniibe@fsij.org>
1505
1506         * src/ecc-cdh.c: Remove as smartcard only does
1507         a part of ECDH computation as gpg-agent does.
1508
1509         * src/chconf.h, src/halconf.h: Remove files needed for ChibiOS/RT.
1510
1511 2014-12-09  Niibe Yutaka  <gniibe@fsij.org>
1512
1513         * src/call-ec.c (ecc_compute_public): Rename, as we share
1514         same routine among ECDSA and ECDH.
1515         (ecdh_decrypt): New.
1516
1517 2014-12-09  Niibe Yutaka  <gniibe@fsij.org>
1518
1519         * src/ecc.c (compute_kP): Bug fix.  It's P, not G.
1520         (point_is_on_the_curve): Bug fix.
1521
1522 2014-12-03  Niibe Yutaka  <gniibe@fsij.org>
1523
1524         Changes for RSA-4096.
1525
1526         * src/gnuk.h (MAX_CMD_APDU_DATA_SIZE, MAX_RES_APDU_DATA_SIZE):
1527         Send/Recv buffer should be bigger.
1528         * polarssl/library/bignum.c (mpi_exp_mod): Don't consume much.
1529         * polarssl/library/rsa.c (rsa_rsaes_pkcs1_v15_decrypt): buffer
1530         allocation size should be variable.
1531
1532 2014-12-01  Niibe Yutaka  <gniibe@fsij.org>
1533
1534         * src/Makefile.in (DEFS): Don't define compile time preference of
1535         key algo attributes.
1536
1537         * src/openpgp-do.c (proc_key_import): Support modifiable key algo
1538         attributes.
1539
1540 2014-11-21  Niibe Yutaka  <gniibe@fsij.org>
1541
1542         * src/gnuk.h (ALGO_RSA4K, ALGO_NISTP256R1, ALGO_SECP256K1)
1543         (ALGO_ED25519, ALGO_RSA2K): New.
1544         (struct key_data_internal): Move to ...
1545         * src/openpgp-do.c (struct key_data_internal): ... here.
1546         (CHECKSUM_ADDR, kdi_len): New.
1547         (CKDC_CALC, CKDC_CHECK): New.
1548         (compute_key_data_checksum): Add arg PRVKEY_LEN.
1549         (gpg_do_load_prvkey, gpg_do_delete_prvkey): Support modifiable key
1550         algo attributes.
1551         (gpg_do_write_prvkey, gpg_do_public_key, gpg_do_keygen): Likewise.
1552         (gpg_do_clear_prvkey): Use MAX_PRVKEY_LEN.
1553
1554         * src/openpgp.c (gpg_init): Call flash_init_keys after
1555         gpg_data_scan.
1556         (cmd_pso): Support modifiable key algo attributes.
1557         (cmd_internal_authenticate): Likewise.
1558
1559 2014-11-21  Niibe Yutaka  <gniibe@fsij.org>
1560
1561         * src/openpgp-do.c (algorithm_attr_rsa2k): Rename from *_rsa.
1562         (algorithm_attr_rsa4k): New.
1563         (get_algo_attr_pointer, kk_to_nr, gpg_get_algo_attr)
1564         (get_algo_attr_data_object, gpg_get_algo_attr_key_size): New.
1565         (rw_algorithm_attr): New.
1566         (gpg_do_table): Register rw_algorithm_attr for GPG_DO_ALG_*.
1567         (gpg_data_scan, gpg_data_copy): Handle algo attributes.
1568
1569         (rw_pw_status): Fix checking against redundant write.
1570
1571 2014-11-20  Niibe Yutaka  <gniibe@fsij.org>
1572
1573         * src/openpgp-do.c (extended_capabilities): Key attributes can be
1574         modifid now.
1575
1576 2014-11-20  Niibe Yutaka  <gniibe@fsij.org>
1577
1578         * src/gnuk.h (NR_NONE, NR_DO__FIRST__): Remove.
1579         (NR_DO_*): Redefine.
1580         (NR_KEY_ALGO_ATTR_SIG, NR_KEY_ALGO_ATTR_DEC)
1581         (NR_KEY_ALGO_ATTR_AUT): New.
1582
1583         * src/openpgp-do.c (gpg_do_load_prvkey, gpg_do_delete_prvkey)
1584         (gpg_do_write_prvkey, gpg_do_chks_prvkey, gpg_data_scan)
1585         (gpg_data_copy, gpg_do_read_simple)
1586         (gpg_do_write_simple): Don't use NR_DO__FIRST__.
1587         (gpg_do_put_data): Don't use NR_NONE any more.
1588         (do_tag_to_nr): Use -1 to specify NONE.
1589
1590         * src/flash.c (flash_enum_clear, flash_enum_write_internal)
1591         (flash_enum_write): New.
1592
1593 2014-11-19  Niibe Yutaka  <gniibe@fsij.org>
1594
1595         * src/gnuk.h (FIRMWARE_UPDATE_KEY_CONTENT_LEN): New.
1596         (size_of_key): New enum.
1597
1598         * src/openpgp.c (gpg_get_firmware_update_key)
1599         (cmd_read_binary, cmd_external_authenticate): Use
1600         FIRMWARE_UPDATE_KEY_CONTENT_LEN.
1601
1602         * src/flash.c (KEY_SIZE): Remove.
1603         (key_available_at): Add new arg as KEY_SIZE.
1604         (flash_check_all_other_keys_released): Likewise.
1605         (flash_key_fill_zero_as_released, flash_key_release): Likewise.
1606
1607         (flash_init): Move initializing keys into another function.
1608         (flash_init_keys): New function.
1609
1610         (flash_key_alloc): Use gpg_get_algo_attr_key_size.
1611         (flash_key_write): Add new arg as KEY_DATA_LEN.
1612
1613         (flash_write_binary): Use FIRMWARE_UPDATE_KEY_CONTENT_LEN.
1614
1615 2014-09-16  Niibe Yutaka  <gniibe@fsij.org>
1616
1617         * src/gnuk.h (MAX_PRVKEY_LEN): New.
1618         (KEY_CONTENT_LEN): Remove.
1619
1620         * src/call-rsa.c (RSA_SIGNATURE_LENGTH): Remove.
1621         (rsa_sign, rsa_verify, rsa_genkey): Add new arg: PUBKEY_LEN.
1622         (rsa_decrypt): Don't use KEY_CONTENT_LEN.
1623
1624 2014-06-19  Niibe Yutaka  <gniibe@fsij.org>
1625
1626         * src/ecc-mont.c (compute_nQ): Add comment.
1627
1628         * src/mod.c (mod_inv): Fix comment. X^-1 = 0 when X=0
1629         is important for Montgomery curve computation.
1630
1631 2014-06-05  Niibe Yutaka  <gniibe@fsij.org>
1632
1633         * tool/add_openpgp_authkey_from_gpgssh.py: New.
1634
1635 2014-04-17  Niibe Yutaka  <gniibe@fsij.org>
1636
1637         * src/muladd_256.h (MULADD_256_ASM): New.
1638         (MULADD_256): Use MULADD_256_ASM.
1639         * src/ecc-mont.c (mod25638_mul_121665): Add asm implementation.
1640
1641         * src/bn.c (bn256_add_uint, bn256_sub_uint): Simplify.
1642         * src/mod25638.c (mod25638_add, mod25638_sub): Simplify.
1643         (n25638, add19): Remove.
1644         (ADDWORD_256): Add s_ as source pointer.
1645         (mod25519_reduce): Remove a call to memcpy.  Use bn256_add_uint.
1646         * src/ecc-edwards.c (point_double): Simplify.
1647
1648 2014-04-16  Niibe Yutaka  <gniibe@fsij.org>
1649
1650         * VERSION: 1.1.3.
1651
1652 2014-04-15  Niibe Yutaka  <gniibe@fsij.org>
1653
1654         * src/ecc-mont.c: New.
1655
1656         * src/mod25638.c (p25519): Move from ecc-edwards.c.
1657         (mod25519_reduce, add19): Likewise.
1658         (mod25638_reduce) [!ASM_IMPLEMENTATION]: Use bn256_add_uint.
1659
1660 2014-04-14  Niibe Yutaka  <gniibe@fsij.org>
1661
1662         * src/jpc.c (jpc_to_ac): Error check before mod_inv.
1663
1664         * src/mod.c (mod_inv): No return value (if N==0 returns ZERO).
1665
1666         * src/bn.c [BN256_NO_RANDOM]: Only include "random.h" if needed.
1667
1668 2014-04-08  Niibe Yutaka  <gniibe@fsij.org>
1669
1670         * src/mod.c (mod_inv): Use MAX_GCD_STEPS_BN256.
1671         Return failure or success.
1672         * src/jpc.c (jpc_to_ac): Use mod_inv.
1673         * src/modp256k1.c (modp256k1_inv): Remove.
1674         * src/modp256r1.c (modp256r1_inv): Remove.
1675
1676 2014-04-07  Niibe Yutaka  <gniibe@fsij.org>
1677
1678         * src/openpgp-do.c (algorithm_attr_ed25519): It's OID only.
1679
1680 2014-04-03  Niibe Yutaka  <gniibe@fsij.org>
1681
1682         * src/ecc-edwards.c (eddsa_sign_25519): Change type of OUT.
1683         * src/openpgp.c (cmd_internal_authenticate): Have a buffer.
1684
1685         * src/flash.c (flash_init): Fix key address finder.
1686
1687 2014-04-02  Niibe Yutaka  <gniibe@fsij.org>
1688
1689         * src/openpgp-do.c (proc_key_import): Handle EdDSA.
1690         (algorithm_attr_ed25519): Fix OID and add ID for SHA512.
1691
1692 2014-04-01  Niibe Yutaka  <gniibe@fsij.org>
1693
1694         * src/ecc-edwards.c (eddsa_compute_public_25519): New.
1695
1696         * src/openpgp-do.c (algorithm_attr_ed25519): New.
1697         (gpg_do_write_prvkey, proc_key_import, gpg_do_public_key): Add
1698         EdDSA handling.
1699
1700 2014-03-31  Niibe Yutaka  <gniibe@fsij.org>
1701
1702         * src/ecc-edwards.c (eddsa_sign_25519): Rename and API change.
1703
1704         * src/openpgp-do.c (gpg_do_load_prvkey, gpg_do_delete_prvkey)
1705         (gpg_do_write_prvkey, gpg_do_public_key, gpg_do_keygen): Follow
1706         the change of PRVKEY_DATA and KEY_DATA.
1707
1708         * src/flash.c (key_available_at): New.
1709         (flash_init): Initilize KD.
1710
1711         * src/gnuk.h (struct prvkey_data): Remove member KEY_ADDR.
1712         (struct key_data): Addd member KEY_ADDR.
1713
1714         * src/openpgp-do.c (gpg_do_keygen): Bug fix.  Reset the signature
1715         counter when new key is generated.
1716
1717         * src/flash.c (flash_key_alloc): Change API, supply KK.
1718
1719 2014-03-29  Niibe Yutaka  <gniibe@fsij.org>
1720
1721         * src/ecc-edwards.c (point_double, point_add): Rename.
1722         (mod25519_reduce): New.
1723
1724 2014-03-28  Niibe Yutaka  <gniibe@fsij.org>
1725
1726         * misc/t-eddsa.c (main): Update for new API of eddsa_25519.
1727
1728         * src/ecc-edwards.c (compute_kG_25519): Tune for 252-bit.
1729         (eddsa_25519): Public key should be provided by caller.
1730         (eddsa_public_key_25519): New.
1731
1732 2014-03-27  Niibe Yutaka  <gniibe@fsij.org>
1733
1734         * src/ecc-edwards.c (ed_add_25638): Remove the third argument.
1735         (compute_kG_25519): The curve is complete, we don't need to avoid
1736         identity element as NIST curve or secp256k1 curve.
1737         (eddsa_25519): Change the API, with A and the seed.
1738
1739 2014-03-26  Niibe Yutaka  <gniibe@fsij.org>
1740
1741         * src/mod25638.c (mod25638_reduce): New.
1742         (mod25638_mul, mod25638_sqr): Use mod25638_reduce.
1743
1744         * src/ecc-edwards.c (ptc_to_ac_25519): No need to subtract p25519.
1745
1746 2014-03-25  Niibe Yutaka  <gniibe@fsij.org>
1747
1748         * misc/t-eddsa.c: New.
1749
1750         * src/ecc-edwards.c (bnX_mul_C, mod_reduce_M): New.
1751         (eddsa_25519): New.
1752
1753 2014-03-20  Niibe Yutaka  <gniibe@fsij.org>
1754
1755         * src/ecc-edwards.c (ed_add_25638): Fix for X == A.
1756         (main): Compute pre-computed tables.
1757         (precomputed_KG, precomputed_2E_KG): Add.
1758         (compute_kG_25519): New.
1759
1760 2014-03-19  Niibe Yutaka  <gniibe@fsij.org>
1761
1762         * src/bn.c (bn256_add): Fix for X == B.
1763         (bn256_sub): Likewise.
1764
1765         * src/ecc-edwards.c: New.
1766
1767 2014-03-18  Niibe Yutaka  <gniibe@fsij.org>
1768
1769         * src/mod25638.c (mod25638_add, mod25638_sub, mod25638_sqr)
1770         (mod25638_shift): New.
1771
1772 2014-03-13  Niibe Yutaka  <gniibe@fsij.org>
1773
1774         * src/mod25638.c: Rename from fe25519.c.
1775         * src/mod25638.h: Likewise.
1776
1777 2014-03-07  Niibe Yutaka  <gniibe@fsij.org>
1778
1779         * VERSION: 1.1.2.
1780
1781 2014-02-25  Niibe Yutaka  <gniibe@fsij.org>
1782
1783         * src/openpgp-do.c (gpg_do_public_key): Don't put OID.
1784
1785         * src/configure [certdo] (gnuk.ld): Add TIM_SIZE and EXT_SIZE.
1786         Thanks to Vasily Evseenko for the bug report.
1787
1788 2014-02-21  Niibe Yutaka  <gniibe@fsij.org>
1789
1790         * src/ecc.c (compute_kG): Compute higer index at first.
1791         (point_is_on_the_curve): Don't use coefficient_a if it's zero.
1792
1793         * src/jpc.c (jpc_double): Care coefficient A.
1794
1795         * src/ec_p256r1.c (COEFFICIENT_A_IS_MINUS_3): New.
1796         * src/ec_p256k1.c (COEFFICIENT_A_IS_ZERO): New.
1797         * src/jpc_p256r1.c (COEFFICIENT_A_IS_MINUS_3): Likewise.
1798         * src/jpc_p256k1.c (COEFFICIENT_A_IS_MINUS_3): Likewise.
1799
1800         * src/modp256k1.c (modp256k1_shift): Bug fix.
1801
1802 2014-02-20  Niibe Yutaka  <gniibe@fsij.org>
1803
1804         * src/Makefile.in (CSRC): Add files of p256k1.
1805
1806         * src/openpgp.c (cmd_pso): Support p256k1 for signature.
1807
1808         * src/openpgp-do.c (algorithm_attr_p256k1): New.
1809         (gpg_do_write_prvkey): Support p256k1 for signature.
1810         (proc_key_import, gpg_do_table, gpg_do_public_key): Likewise.
1811
1812         * src/Makefile.in (DEFS): Add -DRSA_SIG.
1813
1814         * src/openpgp-do.c (gpg_do_write_prvkey): Use _p256r1.
1815         * src/openpgp.c (cmd_internal_authenticate): Likewise.
1816
1817         * src/call-ec_p256k1.c: New.  Use call-ec.c.
1818         * src/call-ec_p256r1.c: Use call-ec.c.
1819         * src/call-ec.c: New.
1820         (ecdsa_sign): Change the signature.
1821
1822 2014-02-19  Niibe Yutaka  <gniibe@fsij.org>
1823
1824         * tool/calc_precompute_table_ecc.py: New.
1825
1826         * src/ec_p256k1.c: New.  Use ecc.c.
1827         * src/ec_p256k1.h: New.
1828         * src/ec_p256r1.c: Use ecc.c.
1829         * src/ecc.c: New.
1830
1831 2014-02-18  Niibe Yutaka  <gniibe@fsij.org>
1832
1833         * src/jpc_p256k1.c: New.  Use jpc.c.
1834         * src/jpc_p256r1.c: Use jpc.c.
1835         * src/jpc.c: New.
1836
1837         * src/sha256.c (memcpy_output_bswap32): Bug fix.
1838
1839         * src/modp256k1.h, src/modp256k1.c: New.
1840
1841 2014-02-17  Niibe Yutaka  <gniibe@fsij.org>
1842
1843         * src/Makefile.in (CSRC): Follow the changes of filenames.
1844
1845         * src/modp256r1.c (modp256r1_add, modp256r1_sub, S3)
1846         (modp256r1_mul, modp256r1_sqr, modp256r1_inv, modp256r1_shift):
1847         Use new function names.
1848         * src/jpc_p256r1.c (jpc_double_p256r1, jpc_add_ac_signed_p256r1)
1849         (jpc_to_ac_p256r1): Likewise.
1850         * src/ec_p256r1.c (point_is_on_the_curve)
1851         (compute_kG_p256r1, compute_kP_p256r1): Likewise.
1852         * src/call-ec_p256r1.c (ecdsa_sign): Likewise.
1853
1854         * src/modp256r1.h: Rename from modp256.h.
1855         * src/jpc-ac_p256r1.h: Rename from jpc-ac.h.
1856         * src/ec_p256r1.h: Rename from ec_p256.h.
1857
1858         * src/modp256r1.c: Rename from modp256.c.
1859         * src/jpc_p256r1.c: Rename from jpc.c.
1860         * src/ec_p256r1.c: Rename from ec_p256.c.
1861         * src/call-ec_p256r1.c: Rename from call-ec_p256.c.
1862
1863 2014-02-05  NIIBE Yutaka  <gniibe@fsij.org>
1864
1865         * src/sha512.h, src/sha512.c: New.
1866
1867         * src/sha256.c (initial_state): Don't export, it's internal.
1868         (memcpy_output_bswap32): Rename and remove last argument.
1869
1870 2014-01-28  Niibe Yutaka  <gniibe@fsij.org>
1871
1872         * src/muladd_256.h: New.
1873         * src/bn.c (bn256_mul, bn256_sqr): Assembler implementation.
1874
1875         * src/ec_p256.c (get_vk_kP): Bug fix.
1876         (compute_kP): Bug fix for index table.
1877
1878 2014-01-27  Niibe Yutaka  <gniibe@fsij.org>
1879
1880         * src/ec_p256.c (get_vk_kP): New.
1881         (naf4_257_set, naf4_257_get, compute_naf4_257): Remove.
1882         (compute_kP): Change the argument, fixing for constant time.
1883
1884 2014-01-24  Niibe Yutaka  <gniibe@fsij.org>
1885
1886         * src/ec_p256.c (get_vk): New.
1887         (compute_kG): Fix for constant time.
1888         (compute_kP): Simplify.
1889
1890 2014-01-23  Niibe Yutaka  <gniibe@fsij.org>
1891
1892         * src/jpc.c (jpc_add_ac_signed): Fix for constant time.
1893
1894         * src/ec_p256.c (ecdsa): Bug fix for k selection.
1895
1896 2014-01-22  Niibe Yutaka  <gniibe@fsij.org>
1897
1898         * src/modp256.c (modp256_inv): Fix for constant time.
1899
1900         * src/bn.c (bn256_sqr): Fix for constant time.
1901
1902         * src/mod.c (mod_inv): Fix for constant time.
1903
1904         * src/ec_p256.c (compute_kG): Simplify.
1905
1906         * src/jpc.c (jpc_double): Support calling with A = infinity.
1907
1908 2014-01-21  Niibe Yutaka  <gniibe@fsij.org>
1909
1910         * src/jpc.c (jpc_add_ac_signed): Bug fix for A check.
1911
1912         * src/ec_p256.c (ecdsa): Fix for constant time.
1913
1914         * src/modp256.c (modp256_add, modp256_sub, modp256_reduce)
1915         (modp256_shift): Fix for constant time.
1916         (modp256_inv): Likewise (not fully constant time, yet).
1917
1918         * src/mod.c (mod_reduce): Fix for constant time.
1919         (mod_inv): Likewise (not fully constant time, yet).
1920
1921         * src/bn.h (bn256, bn512): words -> word.
1922         * src/ec_p256.h (naf4_257): Likewise.
1923
1924 2014-01-20  Niibe Yutaka  <gniibe@fsij.org>
1925
1926         * src/fe25519.h, src/fe25519.c: New.
1927
1928 2014-01-15  Niibe Yutaka  <gniibe@fsij.org>
1929
1930         * src/bn.c (bn256_is_zero, bn256_is_ge, bn256_cmp): Computation
1931         should be constant time.
1932
1933 2013-12-25  Niibe Yutaka  <gniibe@fsij.org>
1934
1935         * VERSION: 1.1.1.
1936
1937         * tool/gnuk_token.py (gnuk_token.__init__, regnual.__init__): Fix
1938         the argument of setAltInterface.
1939         * tool/gnuk_upgrade.py: Likewise.
1940         * tool/dfuse.py (DFU_STM32.__init__): Likewise.
1941         * tool/stlinkv2.py (stlinkv2.__init__): Likewise.
1942
1943 2013-12-24  Niibe Yutaka  <gniibe@fsij.org>
1944
1945         * polarssl/include/polarssl/bn_mul.h (MULADDC_1024_CORE)
1946         (MULADDC_1024_LOOP): Use younger number registers more for shorter
1947         instructions and better performance.
1948         * polarssl/library/bignum.c (mpi_montsqr): Likewise.  Change loop
1949         structure and conditional branch for better performance.
1950
1951 2013-12-23  Niibe Yutaka  <gniibe@fsij.org>
1952
1953         * polarssl/library/bignum.c (mpi_montmul): Computation
1954         time should not depends on input.
1955         (mpi_montmul, mpi_montred, mpi_montsqr): Change the API.
1956         (mpi_exp_mod): Follow the change of the API.  Allocate memory on
1957         stack instead of malloc.
1958
1959         * src/gnuk.ld.in (__process3_stack_size__): Increase stack size.
1960
1961 2013-12-20  Niibe Yutaka  <gniibe@fsij.org>
1962
1963         * Version 1.1.0.
1964
1965         * src/usb_ctrl.c (USB_FSIJ_GNUK_CARD_CHANGE): New.
1966         (usb_cb_setup): Support USB_FSIJ_GNUK_CARD_CHANGE.
1967         * src/usb-icc.c (ccid_card_change_signal): New argument HOW.
1968
1969 2013-12-20  Niibe Yutaka  <gniibe@fsij.org>
1970
1971         * polarssl/include/polarssl/bn_mul.h (MULADDC_1024_CORE)
1972         (MULADDC_CORE): Reorder instructions for more speed up.
1973         * polarssl/library/bignum.c (mpi_montsqr): Likewise.
1974
1975 2013-12-19  Niibe Yutaka  <gniibe@fsij.org>
1976
1977         * src/configure (--enable-hid-card-change): New (experimental).
1978         * src/config.h.in (HID_CARD_CHANGE_DEFINE): New.
1979         * src/usb_ctrl.c (gnuk_setup_endpoints_for_interface)
1980         (usb_cb_setup, usb_cb_ctrl_write_finish): Conditionalize
1981         HID_CARD_CHANGE_SUPPORT.
1982         * src/usb_desc.c (gnukDeviceDescriptor, usb_cb_get_descriptor):
1983         Likewise.
1984
1985 2013-12-19  Niibe Yutaka  <gniibe@fsij.org>
1986
1987         * src/openpgp.c (S2KCOUNT): It's now 192, as the threat model
1988         of Gnuk Token is different.
1989
1990 2013-12-19  Niibe Yutaka  <gniibe@fsij.org>
1991
1992         * polarssl/library/bignum.c (mpi_montsqr): New.
1993         (mpi_exp_mod): Use mpi_montsqr.
1994
1995         Note that this change introduces a vulnerability by the
1996         Yarom/Falkner flush+reload cache side-channel attack.  When this
1997         code is used on general purpose computer where we can observe
1998         which code is executed (sqr or mul), it's not safe.
1999
2000 2013-12-16  Niibe Yutaka  <gniibe@fsij.org>
2001
2002         * polarssl/include/polarssl/bn_mul.h (MULADDC_1024_CORE)
2003         (MULADDC_1024_LOOP, MULADDC_HUIT, MULADDC_INIT, MULADDC_CORE)
2004         (MULADDC_STOP) [__arm__]: The value of input B won't change.
2005         More acculate specification for asm statement.
2006
2007         * polarssl/library/bignum.c (mpi_cmp_abs_limbs): New.
2008         (mpi_montmul): Change the signature and use the upper half of T.
2009         (mpi_montred): Likewise.
2010         (mpi_exp_mod): Use improved mpi_montmul and mpi_montred.
2011         (mpi_sub_hlp, mpi_mul_hlp): Add const qualifier for S.
2012
2013 2013-12-13  Niibe Yutaka  <gniibe@fsij.org>
2014
2015         * polarssl/library/bignum.c (mpi_exp_mod): Initialize lower
2016         half of T with zero.
2017         (mpi_montmul): Don't need to clear lower half of
2018         T, as we keep zero.  Call mpi_sub_hlp with upper half of T.
2019         (mpi_montred): Ditto.
2020
2021         * polarssl/library/bignum.c (mpi_montmul, mpi_montred): Minimize
2022         number of limbs for T.
2023         (mpi_exp_mod): Only allocate N-n * 2 for T.
2024         Only allocate N->n for X, W[i], and RR.
2025
2026 2013-12-13  Niibe Yutaka  <gniibe@fsij.org>
2027
2028         * tool/upgrade_by_passwd.py (main): Support -k to specify KEYNO.
2029
2030 2013-12-13  Niibe Yutaka  <gniibe@fsij.org>
2031
2032         * src/usb_ctrl.c (HID_LED_STATUS_CARDCHANGE): Rename from
2033         HID_LED_STATUS_NUMLOCK.
2034
2035         * tool/gnuk_token.py (gnuk_token.stop_gnuk): Detach kernel
2036         driver of HID.
2037
2038 2013-12-12  Niibe Yutaka  <gniibe@fsij.org>
2039
2040         * src/openpgp-do.c (do_openpgpcard_aid): Coerce to volatile to
2041         force memory access at run time.
2042
2043 2013-12-11  Niibe Yutaka  <gniibe@fsij.org>
2044
2045         * regnual/sys.c (entry): Fix relocation calculation.
2046
2047 2013-11-27  Niibe Yutaka  <gniibe@fsij.org>
2048
2049         * src/stm32f103.h (AFIO_MAPR_SWJ_CFG_DISABLE): New.
2050         * src/sys.c: Likewise.
2051
2052 2013-11-26  Niibe Yutaka  <gniibe@fsij.org>
2053
2054         * src/usb_desc.c (hid_report_desc): New.
2055         (ICC_TOTAL_LENGTH): Update.
2056         (HID_TOTAL_LENGTH, HID_NUM_INTERFACES): New.
2057         (W_TOTAL_LENGTH, NUM_INTERFACES): Update.
2058         (gnukConfigDescriptor): Add IN2 interrupt endpoint descriptor.
2059         Add HID interface descriptor.
2060         (usb_cb_get_descriptor): Handle HID.
2061
2062         * src/usb_ctrl.c (NUM_INTERFACES, MSC_INTERFACE_NO): Add 1.
2063         (USB_HID_REQ_*, HID_LED_STATUS_NUMLOCK): New.
2064         (gnuk_setup_endpoints_for_interface): Add ENDP2 interrupt
2065         endpoint.
2066         (usb_cb_setup): Handle HID requests.
2067         (usb_cb_ctrl_write_finish): Likewise.
2068
2069         * src/usb-icc.c (ccid_card_change_signal): New.
2070         (ccid_thread): Handle card change.
2071         (icc_error, icc_send_status): Handle ICC_STATE_NOCARD state.
2072         (icc_handle_data): Add the case of ICC_STATE_NOCARD.
2073         (EP2_IN_Callback): New.
2074
2075 2013-11-26  Niibe Yutaka  <gniibe@fsij.org>
2076
2077         * src/pin-dial.c: Remove.
2078         * src/configure: Remove pin-dial support.
2079
2080 2013-11-25  Niibe Yutaka  <gniibe@fsij.org>
2081
2082         * src/Makefile.in (HEXOUTPUT_MAKE_OPTION): New.
2083         * src/configure (HEXOUTPUT_MAKE_OPTION): New.
2084         * src/main.c: Include board.h.
2085         * src/stm32f103.h (EXTI0_IRQ, EXTI1_IRQ): New.
2086
2087 2013-11-18  Niibe Yutaka  <gniibe@fsij.org>
2088
2089         * regnual/sys.c (entry): Bug fix of clearing BSS.
2090
2091         * src/usb_stm32f103.c: Update from NeuG.
2092         (usb_handle_transfer): Add argument ISTR_VALUE.
2093
2094         * src/openpgp.c (card_thread): Add noinline attribute.
2095
2096         * src/usb-icc.c (ccid_thread): Join the OpenPGP thread.
2097         Add noinline attribute.
2098
2099 2013-11-15  Niibe Yutaka  <gniibe@fsij.org>
2100
2101         * src/configure (options): Add --enable-sys1-compat.
2102
2103 2013-11-12  Niibe Yutaka  <gniibe@fsij.org>
2104
2105         * chopstx: Upgrade to 0.03.
2106
2107         * src/usb_desc.c (usb_initial_feature): Remove.
2108         (USB_SELF_POWERED): Move to ...
2109         * src/usb_conf.h (USB_SELF_POWERED): ... here.
2110         * src/usb_ctrl.c (usb_cb_device_reset, usb_intr): Follow the
2111         change.
2112
2113 2013-11-11  Niibe Yutaka  <gniibe@fsij.org>
2114
2115         * src/adc_stm32f103.c (adc_wait_completion): Update from NeuG 1.0.
2116
2117 2013-11-03  Niibe Yutaka  <gniibe@fsij.org>
2118
2119         * regnual/regnual.c (usb_cb_get_descriptor): Update to new API.
2120
2121         * src/usb_lld.h (usb_initial_feature): Remove.
2122
2123         * chopstx: Update to 0.01.
2124         * src/pin-cir.c: Chatter fix to 200ms.
2125         * src/main.c: Fix bDeviceState.
2126
2127 2013-11-02  Niibe Yutaka  <gniibe@fsij.org>
2128
2129         * src/usb_lld.h, src/usb_stm32f103.c (std_get_descriptor): Change
2130         the API of usb_cb_get_descriptor.
2131         * src/usb_desc.c: Follow the change.
2132         * src/usb_conf.h: Modify for CCID INT and HID usage.
2133
2134 2013-11-02  Niibe Yutaka  <gniibe@fsij.org>
2135
2136         * src/pin-cir.c: Port to Chopstx.
2137
2138         * chopstx: Update.
2139         * src/configure (TIM_SIZE, EXT_SIZE): New.
2140         * src/gnuk.ld.in (__process6_stack_size__)
2141         (__process7_stack_size__): New.
2142         * src/main.c (main): Call cir_init.
2143         * src/openpgp.c (openpgp_card_thread): Rename from GPGthread.
2144         * src/usb-icc.c (icc_power_on): Follow the change.
2145
2146 2013-11-01  Niibe Yutaka  <gniibe@fsij.org>
2147
2148         * src/sys.c: Update from Chopstx.
2149         * src/usb_lld.h: Remove interrupt definition.
2150         * src/stm32f103.h: Add AFIO, EXTI, and TIMER constants.
2151
2152 2013-10-31  Niibe Yutaka  <gniibe@fsij.org>
2153
2154         * src/main.c (main): Call msc_init before USB interrupt thread.
2155         * src/gnuk.h, src/usb-msc.h, src/usb-msc.c, src/pin-dnd.c: Port to
2156         Chipstx.
2157         * src/openpgp.c (get_pinpad_input): Follow the change.
2158         * src/usb_ctrl.c (gnuk_setup_endpoints_for_interface): Don't stall
2159         RX of ENDP6.
2160
2161 2013-10-24  Niibe Yutaka  <gniibe@fsij.org>
2162
2163         * src/Makefile.in (DEFS): Add -DCHX_PRIO_MAIN=5 for LED blink.
2164         * src/main.c (PRIO_CCID): It's now 3 (was: 2).
2165
2166 2013-10-24  Niibe Yutaka  <gniibe@fsij.org>
2167
2168         * src/gnuk.ld.in (.gnuk_flash): Three pages for three keys.
2169         * src/flash.c (FLASH_KEYSTORE_SIZE): Likewise.
2170         (flash_keystore_release): Remove.
2171         (flash_key_fill_zero_as_released)
2172         (flash_check_all_other_keys_released, flash_key_release): New.
2173         (flash_init, flash_key_alloc): New method to handle free space.
2174         * src/openpgp-do.c (fetch_four_bytes): New.
2175         (gpg_do_load_prvkey, gpg_do_delete_prvkey, gpg_do_public_key): Use
2176         fetch_four_bytes.
2177         (gpg_do_delete_prvkey): Call flash_key_release.
2178
2179 2013-10-23  Niibe Yutaka  <gniibe@fsij.org>
2180
2181         * test/features/010_setup_passphrase.feature
2182         * test/features/030_key_registration.feature
2183         * test/features/040_passphrase_change.feature
2184         * test/features/410_setup_passphrase.feature
2185         * test/features/430_key_registration.feature
2186         * test/features/201_keygen.feature
2187         * test/features/601_keygen.feature: Modified to support new way of
2188         pass phrase reset by key import / key generation.
2189
2190         * test/features/201_keygen.feature
2191         * test/features/601_keygen.feature
2192         * test/features/202_setup_passphrase.feature
2193         * test/features/602_setup_passphrase.feature: Rename to change
2194         order of execution.
2195
2196 2013-10-23  Niibe Yutaka  <gniibe@fsij.org>
2197
2198         * src/openpgp-do.c (gpg_do_write_prvkey): Bug fix of adding
2199         num_prv_keys.
2200
2201 2013-10-22  Niibe Yutaka  <gniibe@fsij.org>
2202
2203         * src/openpgp-do.c (gpg_do_write_prvkey): Bug fix.
2204
2205 2013-10-15  Niibe Yutaka  <gniibe@fsij.org>
2206
2207         * src/openpgp.c (cmd_change_password, cmd_reset_user_password): It
2208         is now error to change User's pass phrase with no keys.
2209
2210         * src/openpgp-do.c (proc_resetting_code): Likewise for resetting
2211         code.
2212         (gpg_do_delete_prvkey): New.
2213         (gpg_do_write_prvkey): Make sure to delete the key before writing.
2214         User's pass phrase is always the one of factory setting.
2215         (gpg_do_chks_prvkey): Support removing the key.
2216         (proc_key_import): Use gpg_do_delete_prvkey.
2217         (gpg_do_keygen): Use factory setting pass phrase.
2218
2219 2013-10-11  Niibe Yutaka  <gniibe@fsij.org>
2220
2221         * src/ac.c (verify_user_0, verify_admin_00): Fix conditions.
2222
2223         * src/openpgp-do.c (gpg_do_write_prvkey): Delete keystring
2224         information from data object of NR_DO_KEYSTRING_PW3.
2225         Fix conditions.
2226         (gpg_do_keygen): Likewise.
2227
2228         * src/openpgp.c (cmd_reset_user_password): Likewise.
2229
2230 2013-10-10  Niibe Yutaka  <gniibe@fsij.org>
2231
2232         * src/gnuk.h (S2K_ITER): Remove.  It's determined at compile time.
2233
2234         * src/openpgp-do.c (proc_resetting_code, gpg_do_write_prvkey)
2235         (proc_key_import): Remove "iteration" field.
2236
2237         * src/openpgp.c (cmd_change_password): Likewise.
2238
2239 2013-10-10  Niibe Yutaka  <gniibe@fsij.org>
2240
2241         * src/openpgp-do.c (gpg_do_write_prvkey): Access of data object
2242         considering garbage collection.
2243
2244         * src/openpgp.c (cmd_change_password): Call gpg_do_write_simple
2245         after accessing the data object (it may cause garbage collection).
2246
2247 2013-10-10  Niibe Yutaka  <gniibe@fsij.org>
2248
2249         * polarssl/library/bignum.c (mpi_montred): Constant time for
2250         carry propagation.  Bug fix for carry propagation.
2251         (mpi_exp_mod): Bug fix.  Shrink the size of RR as same as X.
2252
2253 2013-10-09  Niibe Yutaka  <gniibe@fsij.org>
2254
2255         * src/ac.c (verify_user_0, verify_admin_00, verify_admin_0): Add a
2256         flag to save into keystring_md_pw3.  Add SALT handling.
2257         (decode_iterate_count, calc_md, gpg_set_pw3): Remove.
2258
2259         * src/openpgp-do.c (proc_resetting_code, gpg_do_write_prvkey)
2260         (gpg_do_keygen): Add SALT handling.
2261         * src/openpgp.c (cmd_change_password, cmd_reset_user_password)
2262         (s2k): Ditto.
2263         * src/random.c (random_get_salt): Rename from get_salt.
2264
2265 2013-10-09  Niibe Yutaka  <gniibe@fsij.org>
2266
2267         * src/openpgp-do.c (gpg_do_write_prvkey): Remove information (but
2268         pass phrase length) for admin from keystring data object.
2269         (proc_key_import): Recover admin keystring to DO when key deletion.
2270
2271 2013-10-09  Niibe Yutaka  <gniibe@fsij.org>
2272
2273         * src/ac.c (verify_user_0, verify_admin_00): Handle PW_LEN_MASK.
2274         * src/openpgp-do.c (proc_resetting_code, gpg_do_write_prvkey):
2275         Likewise.
2276
2277         * src/openpgp.c (cmd_change_password, cmd_reset_user_password):
2278         Handle PW_LEN_KEYSTRING_BIT.
2279
2280 2013-10-09  Niibe Yutaka  <gniibe@fsij.org>
2281
2282         * src/ac.c (verify_admin_00): New.  Add authentication by loading
2283         signature key.
2284         (verify_admin_0): Use verify_admin_00.
2285
2286         * src/openpgp.c (cmd_change_password): Admin keystring handling as
2287         same as user's.
2288
2289 2013-10-08  Niibe Yutaka  <gniibe@fsij.org>
2290
2291         * src/openpgp.c (modify_binary): Allow odd size of certificate.
2292
2293         * polarssl/library/rsa.c: Update from PolarSSL 1.2.10.
2294         * polarssl/include/polarssl/rsa.h: Ditto.
2295
2296 2013-10-07  Niibe Yutaka  <gniibe@fsij.org>
2297
2298         * polarssl/library/bignum.c (mpi_sub_hlp): Return CARRY.
2299         (mpi_sub_abs): Carry propagatoin is done here.
2300         (mpi_mul_hlp_mm): Remove.
2301         (mpi_mul_hlp): Return CARRY, computation in constant time.
2302         (mpi_mul_mpi): Change the order of computation not to propagate
2303         carry.
2304         (mpi_montmul): Minimum zero-ing of D and reduce usage of temporary
2305         memory, by one word.  Use carry of mpi_mul_hlp.  Use
2306         NEED_SUBTRACTION against timing attack.
2307         (mpi_exp_mod): Minimum usage of temporary memory.
2308
2309 2013-10-06  Niibe Yutaka  <gniibe@fsij.org>
2310
2311         * polarssl/library/bignum.c (mpi_mul_hlp_mm): New.  Handle
2312         extra-carry in constant time to mitigate timing attack.
2313         (mpi_montmul): Use mpi_mul_hlp_mm.
2314         * src/call-rsa.c (rsa_sign, rsa_decrypt, rsa_verify): Don't
2315         use RSA blinding.
2316
2317 2013-10-05  Niibe Yutaka  <gniibe@fsij.org>
2318
2319         * polarssl/include/polarssl/aes.h: Update from PolarSSL 1.2.9.
2320         * polarssl/include/polarssl/bignum.h: Ditto.
2321         * polarssl/include/polarssl/config.h: Ditto.
2322         * polarssl/include/polarssl/rsa.h: Ditto.
2323         * polarssl/library/aes.c, polarssl/library/bignum.c: Ditto.
2324         * polarssl/library/rsa.c: Ditto.  Fix rsa_free.
2325         * src/call-rsa.c (rsa_sign, modulus_calc, rsa_decrypt)
2326         (rsa_verify): Follow changes of PolarSSL 1.2.9 with RSA blinding.
2327         Better error checking.
2328
2329 2013-10-04  Niibe Yutaka  <gniibe@fsij.org>
2330
2331         * src/main.c (gnuk_malloc): Update ->neighbor field of a chunk on
2332         the free list.
2333         (gnuk_free): Access free list after getting the lock.
2334
2335 2013-10-01  Niibe Yutaka  <gniibe@fsij.org>
2336
2337         * src/random.c (random_gen): Bug fix for INDEXed copy.
2338
2339         * src/call-rsa.c (rsa_genkey): Call neug_flush and prng_seed.
2340         * polarssl/library/bignum.c (small_prime): More constants.
2341         (prng_seed, jkiss, mpi_fill_pseudo_random): New.
2342         (mpi_is_prime): Use mpi_fill_pseudo_random.
2343
2344 2013-09-30  Niibe Yutaka  <gniibe@fsij.org>
2345
2346         * polarssl/library/bignum.c (mpi_is_prime): Enable trial divisions
2347         by small integers.
2348         Add Fermat primality test.
2349         (mpi_gen_prime): Limit random value so that two MSBs of result will
2350         be 0x11.
2351
2352 2013-09-27  Niibe Yutaka  <gniibe@fsij.org>
2353
2354         * polarssl/include/polarssl/bignum.h (mpi_is_prime): ifdef-out.
2355         * polarssl/library/bignum.c (mpi_is_prime): It's now internal
2356         function, assuming we already know its coprime to small primes.
2357         (M): New constant MPI.  Multiply primes 2*...*691.
2358         (MAX_A): New constant MPI.  2^1024 / M - 1.
2359         (mpi_gen_prime): Specialize for 1024-bit, using Fouque-Tibouchi
2360         method.
2361
2362 2013-09-25  Niibe Yutaka  <gniibe@fsij.org>
2363
2364         * src/sha256.h, src/adc.h
2365         * src/neug.c, src/adc_stm32f103.c: Update from NeuG 0.11.
2366
2367         * chopstx: Upgrade to new Chopstx 0.00.
2368
2369         * VERSION: New file.
2370
2371         * src/configure (SERIALNO, SERIALNO_STR_LEN_DEFINE): New.
2372         (REVISION): Use the file VERSION if it doesn't have .git.
2373         Thanks to Sumedha Widyadharma for the bug report.
2374
2375         * src/config.h.in (SERIALNO_STR_LEN_DEFINE): New.
2376         * src/main.c (ID_OFFSET): Use SERIALNO_STR_LEN.
2377         * src/usb_desc.c (gnukStringSerial): Remove.  It's now
2378         generated in usb-strings.c.inc.
2379
2380         * src/ec_p256.c (compute_kP): Fix for impossible cases.
2381         (point_is_on_the_curve): New.
2382         (coefficient_a, coefficient_b): New.
2383
2384 2013-09-20  Niibe Yutaka  <gniibe@fsij.org>
2385
2386         * src/call-ec_p256.c (ecdsa_compute_public): Handle possible
2387         error (where key_data is the order).
2388
2389         * src/ec_p256.c (compute_kG, compute_kP): Handle errors.
2390
2391         * src/jpc.c (jpc_to_ac): Return -1 on error.
2392         (jpc_add_ac_signed): Handle the case where A=inf.
2393
2394         * src/modp256.c (modp256_inv): Handle error case.
2395
2396         * src/bn.c (bn256_cmp): New.
2397
2398 2013-07-19  Niibe Yutaka  <gniibe@fsij.org>
2399
2400         * src/gnuk.ld.in: Layout change following NeuG.
2401         (_end): Add alignment of 16.
2402
2403         * src/neug.c, src/adc.h, src/adc_stm32f103.c: Update from NeuG.
2404
2405         * src/main.c [DFU_SUPPORT] (main): Fix calling
2406         flash_erase_all_and_exec.
2407
2408         * src/openpgp-do.c (gpg_do_write_prvkey, gpg_do_keygen): Fix
2409         allocated memory handling.  Clean up before free.
2410         * src/call-rsa.c (modulus_calc, rsa_genkey): Fix removing const.
2411         * src/call-ec_p256.c (ecdsa_compute_public): Likewise.
2412
2413 2013-07-18  Niibe Yutaka  <gniibe@fsij.org>
2414
2415         Port to Chopstx.
2416         * src/Makefile.in: Change for Chopstx.
2417         * src/configure: Likewise.
2418         * src/gnuk.h, src/gnuk.ld.in: Likewise.
2419         * src/ac.c: Include stdint.h and string.h, not ch.h.
2420         * src/call-rsa.c, src/debug.c, src/flash.c: Likewise.
2421         * src/call-ec_p256.c, src/usb_desc.c
2422         * src/openpgp-do.c, src/random.c: Likewise.
2423         * src/openpgp.c: Likewise.  Use eventflag of Chopstx.
2424         * src/usb-icc.c: Likewise.
2425         * src/usb_ctrl.c: Update for Chopstx.
2426         * src/debug.h: New.
2427         * src/stdlib.h: Use gnuk_malloc and gnuk_free for malloc/free.
2428         * src/config.h.in: Move FLASH_PAGE_SIZE in board.h.
2429         * polarssl/library/aes.c (FT0, FT1, FT2): Export (for sys 2.0).
2430         * src/main.c (struct stdout, _write, EP3_IN_Callback)
2431         (EP5_OUT_Callback): Rewrite for Chopstx.  No independent thread
2432         any more.
2433         (display_fatal_code, emit_led, display_status_code, led_blink):
2434         Use primitives of Chopstx.
2435         (main): Changes for Chopstx.
2436         (gnuk_malloc_init, sbrk, gnuk_malloc, gnuk_free): New.
2437
2438 2013-06-20  Niibe Yutaka  <gniibe@fsij.org>
2439
2440         * src/sys.c, src/sys.h, src/neug.c, src/adc.h
2441         * src/adc_stm32f103.c, src/usb_stm32f103.c: Update from NeuG 0.10.
2442         * src/stm32f103.h: New.  From NeuG 0.10.
2443
2444 2013-06-18  Niibe Yutaka  <gniibe@fsij.org>
2445
2446         * src/openpgp-do.c (gpg_do_write_prvkey, proc_key_import, gpg_do_table)
2447         (gpg_do_public_key) [RSA_AUTH]: Conditional compilation for RSA/ECDSA.
2448         * src/openpgp.c (cmd_internal_authenticate) [RSA_AUTH]: Likewise.
2449
2450         * src/modp256.c (p256): Add const qualifier.
2451
2452 2013-03-19  Niibe Yutaka  <gniibe@fsij.org>
2453
2454         * src/random.c (random_gen): New (was: random_byte).
2455
2456         * src/call-rsa.c (rsa_sign): Follow change of API.
2457         (rsa_genkey): Use random_gen.
2458         (modulus_calc, rsa_decrypt, rsa_verify): Follow change of API.
2459         * src/openpgp-do.c (encrypt, decrypt): Likewise.
2460
2461         * polarssl/include/polarssl/aes.h: Updated from PolarSSL 1.2.6.
2462         * polarssl/library/aes.c: Ditto.
2463         * polarssl/include/polarssl/rsa.h: Ditto.
2464         * polarssl/library/rsa.c: Ditto.
2465         * polarssl/include/polarssl/bignum.h: Ditto.
2466         * polarssl/library/bignum.c: Ditto.
2467         * polarssl: Move from polarssl-0.14.0, and needed files only.
2468
2469 2013-03-15  Niibe Yutaka  <gniibe@fsij.org>
2470
2471         * regnual/regnual.ld (.bss): Put at RAM1.  This makes reGNUal can
2472         be loaded on the lower address.
2473
2474         * regnual/sys.c (entry): Don't change SP.  Put alignment.
2475
2476         * regnual/regnual.c (usb_cb_get_descriptor): Fix adding break.
2477
2478 2013-03-14  Niibe Yutaka  <gniibe@fsij.org>
2479
2480         * tool/stlinkv2.py (stlinkv2.start): Call write_debug_reg to run
2481         the core again.
2482
2483 2013-03-12  Niibe Yutaka  <gniibe@fsij.org>
2484
2485         * src/gnuk.ld.in (__process_stack_size__): Increase (was: 0x200).
2486
2487         * tool/stlinkv2.py (stlinkv2.exit_from_debug_swd)
2488         (stlinkv2.exit_from_debug_swim): New.
2489         (stlinkv2.start): Call exit_from_debug_swd or
2490         exit_from_debug_swim.
2491
2492 2013-03-09  Niibe Yutaka  <gniibe@fsij.org>
2493
2494         * src/openpgp-do.c (gpg_do_public_key): Add OID for ECDSA.
2495         (gpg_do_write_prvkey): Add PUBKEY_LEN for ECDSA.
2496
2497         * src/flash.c (flash_key_write): Argument change for ECDSA key.
2498
2499         * src/main.c (calculate_regnual_entry_address): New.
2500         (main): Use calculate_regnual_entry_address for entry point.
2501
2502         * src/openpgp-do.c (gpg_do_write_prvkey): Coerce KDI.DATA to
2503         uint8_t *.
2504
2505         * src/usb_stm32f103.c (handle_setup0): Fix selecting handler.
2506
2507 2013-03-08  Niibe Yutaka  <gniibe@fsij.org>
2508
2509         Relocatable reGNUal.
2510
2511         * regnual/regnual.ld (MEMORY): 0x1400 was the value of Gnuk 1.0.1.
2512         Keep this value.
2513         (.text): Include .text.entry next to the .vectors.
2514         (.got): New.
2515
2516         * regnual/sys.c (entry): Now, it's at .text.entry section.
2517         Do relocations.
2518         Don't use absolute values which causes relocations, but
2519         access at GOT.
2520
2521         * regnual/Makefile (CFLAGS): Add -fpie.
2522
2523 2013-03-07  Niibe Yutaka  <gniibe@fsij.org>
2524
2525         Follow the USB stack change.
2526
2527         * regnual/regnual.c (usb_cb_device_reset): Rename from
2528         regnual_device_reset.
2529         (mem): Change type to uint32_t.
2530         (mem_info): Removed.
2531         (fetch): Avoid pointer punning.
2532         (usb_cb_ctrl_write_finish): Rename from regnual_ctrl_write_finish.
2533         (usb_cb_setup): Rename from regnual_setup.
2534         (usb_cb_get_descriptor): Rename from regnual_get_descriptor.
2535         (usb_cb_handle_event): Rename regnual_usb_event.
2536         (usb_cb_interface): Rename regnual_interface.
2537         (Device_Method): Remove.
2538         (usb_cb_get_descriptor): Not use struct Descriptor.
2539
2540 2013-03-06  Niibe Yutaka  <gniibe@fsij.org>
2541
2542         USB stack implementation improvement.
2543
2544         * src/usb_stm32f103.c (Device_Method, method_p): Remove.
2545         (usb_interrupt_handler): Call usb_cb_device_reset.
2546         (std_get_descriptor): Call usb_cb_get_descriptor.
2547         (std_set_configuration): Call usb_cb_handle_event.
2548         (std_get_status, std_get_interface, std_set_interface): Call
2549         usb_cb_interface.
2550         (handle_setup0): Call usb_cb_setup.
2551         (handle_in0): Call usb_cb_handle_event and
2552         usb_cb_ctrl_write_finish.
2553         (request_handler): Remove.
2554         (handle_setup0): Call std_* directly, not indirectly by
2555         request_handler.
2556         (ep_intr_handler_IN, ep_intr_handler_OUT): Remove.
2557         (usb_handle_transfer): Call EP*_Callback directly, not indirectly
2558         by ep_intr_handler_IN, ep_intr_handler_OUT.
2559
2560         * src/usb_lld.h (struct usb_device_method, Device_Method): Remove.
2561         (usb_cb_device_reset, usb_cb_ctrl_write_finish)
2562         (usb_cb_setup, usb_cb_get_descriptor, usb_cb_handle_event)
2563         (usb_cb_interface): Define callbacks.
2564         (usb_initial_feature): New.
2565         (struct Descriptor): Move to ...
2566         * src/usb_desc.c: ... here.
2567         (usb_initial_feature): New.
2568         (usb_cb_get_descriptor): Rename from gnuk_get_descriptor and move
2569         from usb_ctrl.c.
2570
2571         * src/usb_ctrl.c (usb_cb_device_reset): Rename from
2572         gnuk_device_reset.
2573         (usb_cb_setup): Rename from gnuk_setup.
2574         (usb_cb_ctrl_write_finish): Rename from gnuk_ctrl_write_finish.
2575         (usb_cb_event): Rename from gnuk_usb_event.
2576         (usb_cb_interface): Rename from gnuk_interface.
2577         (Device_Method): Remove.
2578
2579         * src/main.c (main): Use usb_initial_feature.
2580
2581 2013-02-27  Niibe Yutaka  <gniibe@fsij.org>
2582
2583         * src/usb-icc.c (set_sw1sw2): Arguments are C and CHUNK_LEN.
2584         Fix reporting remaining bytes.
2585         (icc_send_data_block_gr): Follow the arguments change of
2586         set_sw1sw2.
2587
2588 2013-02-26  Niibe Yutaka  <gniibe@fsij.org>
2589
2590         * regnual/regnual.ld (MEMORY): Fix start address.
2591
2592         * src/random.c (random_fini): New.
2593         * src/main.c (main): Call random_fini.
2594
2595 2013-02-25  Niibe Yutaka  <gniibe@fsij.org>
2596
2597         * src/configure: Correct typo in help text.
2598
2599         * src/gnuk.h (struct key_data_internal): Use uint32_t.
2600         * src/openpgp-do.c (do_openpgpcard_aid): Fix calculation of VID.
2601         (compute_key_data_checksum): Don't use type-punning pointer.
2602         (gpg_do_write_prvkey): Use coercing to char *.
2603
2604 2013-02-22  Niibe Yutaka  <gniibe@fsij.org>
2605
2606         * src/openpgp-do.c (gpg_do_public_key): Add header of EC point.
2607
2608         * src/openpgp-do.c (GPG_DO_DISCRETIONARY, cmp_discretionary): New.
2609         (cmp_app_data): Change to factor out GPG_DO_DISCRETIONARY.
2610         (gpg_do_table): Add GPG_DO_DISCRETIONARY.
2611
2612 2013-02-21  Niibe Yutaka  <gniibe@fsij.org>
2613
2614         * src/gnuk.ld.in (MEMORY): Fix adding FLASH_SIZE unit.
2615
2616         * src/call-ec_p256.c (ecdsa_sign): Fix secret key access.
2617
2618 2013-02-20  Niibe Yutaka  <gniibe@fsij.org>
2619
2620         * src/openpgp.c (cmd_internal_authenticate): Support ECDSA for
2621         authentication.
2622
2623         * src/openpgp-do.c (algorithm_attr_ecdsa): New.
2624         (algorithm_attr_rsa): Rename (was: algorithm_attr).
2625         (gpg_do_table): Change for GPG_DO_ALG_AUT.
2626         (gpg_do_write_prvkey): Support ECDSA key for authentication.
2627         (proc_key_import): Likewise.
2628         (gpg_do_public_key): Likewise.
2629
2630         * src/call-ec_p256.c: New.
2631         * src/Makefile.in: Add call-ec_p256.c.
2632         * src/call-rsa.c (modulus_free): Remove.
2633
2634 2013-02-19  Niibe Yutaka  <gniibe@fsij.org>
2635
2636         * regnual/regnual.ld (MEMORY): Fix address of regnual.
2637
2638         * regnual/Makefile (MCFLAGS): Remove -mfix-cortex-m3-ldrd.
2639         (CFLAGS): Add output to .lst.
2640         * src/Makefile.in (MCFLAGS): Remove.
2641
2642         * src/sha256.c: Update from NeuG 0.05.
2643
2644         * ChibiOS_2.0.8: Remove.
2645
2646 2013-02-18  Niibe Yutaka  <gniibe@fsij.org>
2647
2648         Changes for new ChibiOS/RT.
2649         * src/main.c: Include adc.h.
2650         (main): Call halInit, adc_init, and chSysInit (change for
2651         ChibiOS/RT 2.4.x).
2652         * src/random.h: New.
2653         * src/ac.c, src/bn.c, src/call-rsa.c, src/main.c: Include random.h.
2654         * src/openpgp.c, src/openpgp-do.c: Likewise.
2655         * src/configure, src/gnuk.ld.in: Add MEMORY_SIZE.
2656         * src/ec_p256.c: Fix call of bn256_add_uint.
2657         * boards/STM8S_DISCOVERY/*: Update for ChibiOS/RT 2.4.x.
2658         * boards/CQ_STARM/*: Likewise.
2659         * boards/FST_01_00/*: Likewise.
2660         * boards/OLIMEX_STM32_H103/*: Likewise.
2661         * boards/STBEE/*: Likewise.
2662         * boards/STBEE_MINI/*: Likewise.
2663         * boards/STM32_PRIMER2/*: Likewise.
2664
2665         Merge ec_p256 branch.
2666         * src/Makefile.in: Add ECC files.
2667         * src/bn.h, src/bn.c: New.
2668         * src/jpc-ac.h, src/jpc.c: New.
2669         * src/ec_p256.h, src/ec_p256.c, src/ecc-cdh.c: New.
2670         * src/mod.h, src/mod.c, src/modp256.h, src/modp256.c: New.
2671
2672 2013-02-17  Niibe Yutaka  <gniibe@fsij.org>
2673
2674         * chibios: New submodule for ChibioS/RT 2.4.x.
2675         * boards/FST_01/*: Update for ChibiOS/RT 2.4.x.
2676         * boards/common/mcuconf-common.h: Ditto.
2677
2678         * src/chconf.h, src/halconf.h, src/Makefile.in, src/gnuk.ld.in:
2679         Update for ChibiOS/RT 2.4.x.
2680
2681         * src/main.c, src/openpgp.c, src/usb-icc.c: Follow the change of
2682         ChibiOS/RT 2.4.x.
2683         * boards/common/board-common.c: Rename from hwinit.c.
2684         * src/usb_stm32f103.c: Rename from usb_lld.c.
2685
2686         * src/neug.h, src/neug.c: Update NeuG 0.05.
2687         * src/adc_stm32f103.c, src/adc.h: New from NeuG 0.05.
2688
2689         * src/random.c: Follow the change of NeuG 0.05.