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