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