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