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