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