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