ChangeLog 46.4 KB
Newer Older
Niels Möller's avatar
Niels Möller committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2002-10-09  Niels Mller  <nisse@cuckoo.hack.org>

	* Makefile.am (libnettle_a_SOURCES): Added dsa files.
	(libnettleinclude_HEADERS): Added dsa.h.

	* testsuite/testutils.c (test_dsa): New function.

	* testsuite/dsa-test.c: New test.

	* dsa.h, dsa.c, dsa-sign.c, dsa-verify.c: New files.

	* nettle-meta.h: Moved the nettle_random_func and
	nettle_progress_func typedefs here...
	* rsa.h: ... from here.	

Niels Möller's avatar
Niels Möller committed
16
17
18
19
20
21
22
23
24
25
26
27
28
2002-10-07  Niels Mller  <nisse@cuckoo.hack.org>

	* sexp.h (enum sexp_type): Deleted SEXP_START.

	* sexp.c (sexp_iterator_parse): New function, similar to the old
	sexp_iterator_next, but independent of the previous value of the
	iterator->type. 
	(sexp_iterator_first): Use sexp_iterator_parse.
	(sexp_iterator_next): Likewise.
	(sexp_iterator_enter_list): Use sexp_iterator_parse. SEXP_START
	not needed anymore.
	(sexp_iterator_exit_list): Likewise.

Niels Möller's avatar
Niels Möller committed
29
30
2002-10-06  Niels Mller  <nisse@cuckoo.hack.org>

Niels Möller's avatar
Niels Möller committed
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
	* sexp2rsa.c (get_value): No need to call sexp_iterator_next
	anymore. 

	* sexp.c (sexp_iterator_assoc): Advance the iterator to the
	element after a matching tag, before recording it.
	* testsuite/sexp-test.c (test_main): Updated test.

	* testsuite/sexp-test.c (test_main): No need to call
	sexp_iterator_next after sexp_iterator_exit_list.

	* sexp2rsa.c (rsa_keypair_from_sexp): No need to call
	sexp_iterator_next anymore.

	* sexp.c (sexp_iterator_next): Updated to new sexp_iterator_exit_list.
	(sexp_iterator_exit_list): Return with iterator pointing to the
	element after the list.
	(sexp_iterator_check_type): Call sexp_iterator_next before
	returning. 
	(sexp_iterator_check_types): Likewise.
	(sexp_iterator_assoc): Rearranged calls of sexp_iterator_next. 

	* sexp.c (sexp_iterator_enter_list): Call sexp_iterator_next to
	get to the first element of the list. Updated callers.

	* base64.c (base64_encode_group): New function, used by openpgp
	armoring code.

Niels Möller's avatar
Niels Möller committed
58
59
	* Makefile.am: Added openpgp files.

Niels Möller's avatar
Niels Möller committed
60
61
62
63
64
65
66
67
68
69
70
71
72
	* sexp2rsa.c (rsa_keypair_from_sexp): Use sexp_iterator_first.
	* testsuite/sexp-test.c (test_main): Likewise.

	* sexp.c (sexp_iterator_init): Made this function static.
	(sexp_iterator_first): New, friendlier, initialization function. 

	* pgp-encode.c: New file. Functions for writing openpgp data
	packets. 

	* pgp.h: New file, with pgp related declarations.

	* rsa2openpgp.c (rsa_keypair_to_openpgp): New file, new function. 

Niels Möller's avatar
Niels Möller committed
73
74
75
76
2002-10-04  Niels Mller  <niels@s3.kth.se>

	* examples/rsa-keygen.c: Use malloc, instead of asprintf.

Niels Möller's avatar
Niels Möller committed
77
2002-10-03  Niels Mller  <nisse@cuckoo.hack.org>
Niels Möller's avatar
Niels Möller committed
78

Niels Möller's avatar
Niels Möller committed
79
80
	* Released nettle-1.6.

Niels Möller's avatar
Niels Möller committed
81
82
83
84
85
86
87
	* NEWS: Note the aes api change.

	* examples/Makefile.am (EXTRA_DIST): Distribute setup-env and
	teardown-env. 

2002-10-02  Niels Mller  <nisse@cuckoo.hack.org>

Niels Möller's avatar
Niels Möller committed
88
89
90
91
92
	* examples/rsa-keygen.c (main): Comment on the lax security of the
	private key file.

	* index.html: Added link to mailing list.

Niels Möller's avatar
Niels Möller committed
93
94
95
96
97
98
2002-10-02  Niels Mller  <niels@s3.kth.se>

	* Makefile.am: Fixed assembler rules, and shared libraries.

	* configure.ac: Fixed the enable-shared option.

Niels Möller's avatar
Niels Möller committed
99
100
101
102
103
104
105
106
2002-10-01  Niels Mller  <nisse@cuckoo.hack.org>

	* configure.ac: New option --enable-shared, and a first attempt at
	building a shared library (*without* using libtool).

	* Makefile.am: A first attempt at rules for building a shared
	libnettle.so. 

Niels Möller's avatar
Niels Möller committed
107
108
2002-10-01  Niels Mller  <niels@s3.kth.se>

Niels Möller's avatar
Niels Möller committed
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
	* examples/run-tests (test_program): Use basename.

	* examples/teardown-env: Delete some more files.

	* examples/run-tests (test_program): Strip directory part of
	displayed name.

	* examples/Makefile.am (TS_PROGS): New variable. Run tests.

	* examples/io.c (read_file): Bug fix, used to overwrite pointer.

	* examples/rsa-keygen.c (main): Bug fix, private key wasn't
	written properly.

	* testsuite/Makefile.am: Some cleanup of make check.

	* examples/setup-env, examples/teardown-env: Test environment scripts.
	* examples/rsa-verify-test, examples/rsa-sign-test: New test cases.

	* examples/run-tests: New file (copied from lsh testsuite).

	* examples/Makefile.am: Use EXTRA_PROGRAMS and @RSA_EXAMPLES@.

Niels Möller's avatar
Niels Möller committed
132
133
134
	* examples/rsa-sign.c: No need to include config.h. Use werror
	instead of fprintf.
	* examples/rsa-verify.c: Likewise.
Niels Möller's avatar
Niels Möller committed
135
	* examples/rsa-keygen.c: Likewise.
Niels Möller's avatar
Niels Möller committed
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157

	* examples/io.h: Forward declare struct rsa_public_key and struct
	rsa_private_key, to avoid dependences on config.h. 

	* configure.ac (RSA_EXAMPLES): New substituted variable,
	controlling which example programs to build.

	* examples/rsa-verify.c: New example program.

	* examples/rsa-keygen.c: Use functions from io.c.
	* examples/rsa-sign.c: Likewise.

	* examples/Makefile.am (noinst_PROGRAMS): Added rsa-verify.
	(LDADD): Added io.o.

	* configure.ac: New define WITH_PUBLIC_KEY, and new configure flag
	--disable-public-key. Updated rsa-files to check for that, rather
	than for HAVE_LIBGMP. 

	* examples/io.c, examples/io.c: New files. Miscellaneous functions
	used by the example programs.

Niels Möller's avatar
Niels Möller committed
158
159
	* base64.h (BASE64_DECODE_LENGTH): Comment fix.

Niels Möller's avatar
Niels Möller committed
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
2002-09-30  Niels Mller  <nisse@cuckoo.hack.org>

	* sexp2rsa.c (rsa_keypair_from_sexp): Bugfix: Call
	rsa_prepare_public_key and rsa_prepare_private_key.

	* examples/Makefile.am (noinst_PROGRAMS): Added rsa-sign.

	* examples/rsa-sign.c: New example program.

	* testsuite/base64-test.c (test_main): Test encoding and decoding
	in place.

	* base64.c (base64_encode): Encode from the end of the data
	towards the start, in order to support overlapping areas.
	(base64_encode): Broke out some common code from the switch..

Niels Möller's avatar
Niels Möller committed
176
177
178
179
2002-09-30  Niels Mller  <niels@s3.kth.se>

	* sexp_format.c (sexp_format): Don't mix code and declarations.

Niels Möller's avatar
Niels Möller committed
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
2002-09-29  Niels Mller  <nisse@cuckoo.hack.org>

	* testsuite/Makefile.am (TS_PROGS): Added buffer-test
	sexp-format-test rsa2sexp-test sexp2rsa-test. 


	* testsuite/sexp-test.c (test_main): Updated calls to
	sexp_iterator_assoc. 

	* testsuite/testutils.h (MEMEQH): New macro.

	* testsuite/sexp2rsa-test.c: New test.
	* testsuite/sexp-format-test.c: New test.
	* testsuite/rsa2sexp-test.c: New test.
	* testsuite/buffer-test.c: New test.

	* testsuite/testutils.c (test_rsa_key): Copied this function
	from...
	testsuite/rsa-keygen-test.c: ... here.

	* examples/rsa-keygen.c: New file.

	* Makefile.am: Added new source files and headers buffer.h,
	buffer.c, sexp_format.c, sexp2rsa.c, rsa2sexp.c.

	* rsa.h (rsa_keypair_to_sexp, rsa_keypair_from_sexp): New
	prototypes. 

	* rsa2sexp.c, sexp2rsa.c: New files.

	* sexp.c (sexp_iterator_assoc): Don't enter the list, associate
	keys within the current list. Still exit the list when done.
	(sexp_iterator_assoc): Represent keys as plain NUL-terminated
	strings. 
	(sexp_iterator_check_type, sexp_iterator_check_types): New
	functions. 

	* sexp_format.c: New file, implementing an sexp canonical syntax
	formatter.

	* buffer.c, buffer.h: New files, implementing a bare-bones string
	stream.

	* bignum.c (nettle_mpz_sizeinbase_256): New function.

Niels Möller's avatar
Niels Möller committed
225
226
2002-09-28  Niels Mller  <nisse@cuckoo.hack.org>

Niels Möller's avatar
Niels Möller committed
227
228
229
230
231
232
233
234
235
236
237
238
239
240
	* sexp.c (sexp_iterator_assoc): Return 0 for missing or duplicate
	keys. Now passes all the tests.

	* sexp.c (sexp_iterator_simple): Bugfixes. Check earlier that
	length doesn't grow too large.
	(sexp_iterator_next): Skip the current list only if type is
	SEXP_LIST. Handle ')'.
	(sexp_iterator_enter_list): Set type to SEXP_START.
	(sexp_iterator_exit_list): Likewise. Don't skip the ')' here. 
	(sexp_iterator_assoc): Bug fix.

	* testsuite/sexp-test.c (test_main): Reordered sexp_iterator_assoc
	tests. 

Niels Möller's avatar
Niels Möller committed
241
242
243
244
245
246
247
248
249
250
251
	* nettle.texinfo (Randomness): Documented that yarrow256_init can
	be called with a zero number of sources.

	* testsuite/testutils.h (ASSERT): New macro.

	* testsuite/sexp-test.c: Test sexp parser.

	* Makefile.am (SUBDIRS): Added sexp files.

	* sexp.c, sexp.h: New files, implementing an sexp-parser.

252
253
254
255
256
2002-08-27  Niels Mller  <niels@s3.kth.se>

	* Makefile.am (DISTCLEANFILES): make distclean should delete the
	assembler-related symlinks.

Niels Möller's avatar
Niels Möller committed
257
258
259
260
261
262
2002-08-26  Niels Mller  <nisse@cuckoo.hack.org>

	* Makefile.am (%.o: %.asm): Create an empty (and unused)
	dependency file, to make the make/automake dependency tracking
	happier. 

263
264
2002-07-18  Niels Mller  <niels@s3.kth.se>

Niels Möller's avatar
Niels Möller committed
265
266
267
268
269
270
271
272
273
274
275
276
277
	* examples/nettle-benchmark.c (main): Try openssl's ciphers as
	well, if available.

	* Makefile.am (libnettle_a_SOURCES): Added nettle-openssl.c.

	* nettle-openssl.c: New file.

	* nettle-internal.h: Declare openssl glue ciphers.

	* des-compat.h: Extra name-mangling, to avoid collisions in case a
	program links with both nettle and libcrypto (the nettle-benchmark
	program does).

278
	* configure.ac: Don't use -ggdb3 with gcc-2.96. 
Niels Möller's avatar
Niels Möller committed
279
	Check for openssl's libcrypto (for benchmarking).
280

Niels Möller's avatar
Niels Möller committed
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
2002-05-16  Niels Mller  <nisse@cuckoo.hack.org>

	* sparc/aes.asm: Deleted registers i and t3.
	(_aes_crypt): Moved some registers around. We now use input
	registers only for arguments, local registers for loop invariants,
	output registers for temporaries and loop variables, and no global
	registers at all.

	* sparc/aes.asm (AES_FINAL_ROUND): New macro.
	(_aes_crypt): Use AES_FINAL_ROUND for the first word if the final
	round. 
	(_aes_crypt): And for the rest of the final round.
	(AES_FINAL_ROUND): Don't update dst, just access it offseted by i.
	(_aes_crypt): Add 16 to dst at the end of the final round.
	(AES_ROUND): Use ldub, not ld + and, to get the third byte
	of wtxt.
	(AES_ROUND): Use ldub, not lduh + and, to get the second
	byte of a word.
	(AES_ROUND): Reordered instructions, so that we can save one
	register. 
	(AES_ROUND): Eliminated use of t3.
	(AES_FINAL_ROUND): Eliminated ands.
	(AES_FINAL_ROUND): Reordered, so that we can save one register. 
	(AES_FINAL_ROUND): Eliminated t3.
	(AES_LOAD): New macro.
	(_aes_crypt): Unrolled source loop.
	(_aes_crypt): Use AES_LOAD macro.
	(_aes_crypt): Deleted cruft from the old source loop.
	(AES_LOAD): Eliminated t3.

Niels Möller's avatar
Niels Möller committed
311
312
2002-05-15  Niels Mller  <nisse@cuckoo.hack.org>

Niels Möller's avatar
Niels Möller committed
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
	* sparc/aes.asm (AES_ROUND): New macro.
	(_aes_crypt): Use AES_ROUND for first word of the
	round function.
	(_aes_crypt): And for the rest of the round function.
	
	* sparc/aes.asm (_aes_crypt): Deleted a bunch of additions,
	after accessing IDX1.

	* aes-internal.h (struct aes_table): sparc_idx[0] should now
	contain index values shifted by the size of a word, and with 2
	added. This saves some additions in the sparc assembler code.
	Updates aes-encrypt-table.c and aes-decrypt-table.c.

	* sparc/aes.asm (_aes_crypt): Unrolled final loop, preparing for
	optimizations. 
	(_aes_crypt): Eliminated i from forst copy of the loop. Some
	cleanup. 
	(_aes_crypt): And from second copy.
	(_aes_crypt): And from third.
	(_aes_crypt): And fourth.
	(_aes_crypt): Eliminated updates of i from the loop.
	(_aes_crypt): Access IDX1 and IDX3 through the T pointer, saving
	two registers.

Niels Möller's avatar
Niels Möller committed
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
	* aes-internal.h (struct aes_table): Renamed the shift_idx field
	to sparc_idx, as it will be tweaked to improve the sparc code.
	Also reduced its size to [2][4].
	(IDX_FACTOR): Deleted constant.
	* aes-encrypt-table.c (_aes_encrypt_table): Adapted initializer of
	sparc_idx. 
	* aes-decrypt-table.c (_aes_decrypt_table): Likewise.
	* asm.m4: Deleted AES_SIDX2, to match struct aes_table.

	* sparc/aes.asm (_aes_crypt): Unrolled the inner loop, preparing
	for optimizations suggested by Marcus Comstedt.
	(_aes_crypt): Eliminated i from the first copy of the inner loop.
	(_aes_crypt): And from the second copy.
	(_aes_crypt): And from the third copy.
	(_aes_crypt): And from the fourth copy.
	(_aes_crypt): Renamed .Linner_loop to .Lround_loop.
	(_aes_crypt): Eliminated the loop variable i from the unrolled
	loop. 
	(_aes_crypt): Deleted moves of constants into t2.

Niels Möller's avatar
Niels Möller committed
357
358
2002-05-15  Niels Mller  <niels@s3.kth.se>

Niels Möller's avatar
Niels Möller committed
359
360
	* x86/aes-encrypt.asm (aes_encrypt): Use AES_SUBST_BYTE.
	* x86/aes-decrypt.asm (aes_decrypt): Likewise.
Niels Möller's avatar
Niels Möller committed
361
362
363
364
365
366
	(aes_decrypt): Use AES_STORE.
	(aes_decrypt): Deleted first xchgl instruction into, permuting the
	AES_ROUND calls instead.
	(aes_decrypt): Likewise for the final round.
	(aes_decrypt): Got rid if the xchgl instruction after the final
	round, folding it into the final round.
Niels Möller's avatar
Niels Möller committed
367

Niels Möller's avatar
Niels Möller committed
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
	* x86/machine.m4: Renamed AES_LAST_ROUND to AES_FINAL_ROUND.
	Updated users. 

	* x86/aes-decrypt.asm (aes_decrypt): Use the AES_LOAD macro.
	(aes_decrypt): Start using AES_ROUND.
	(aes_decrypt): Use AES_LAST_ROUND.

	* x86/aes-decrypt.asm (aes_decrypt): Moved function to a separate
	file... 
	* x86/aes.asm: ... from here.

	* x86/aes.asm (aes_decrypt): Use _aes_decrypt_table instead of
	itbl1-4. Commented out the inclusion of aes_tables.asm. 
	(aes_decrypt): Use _aes_decrypt_table instead of isbox.
	

	* x86/aes-decrypt.asm: New file, empty at the start.

	* Makefile.am (libnettle_a_SOURCES): Added aes-decrypt-table.c.

	* aes-decrypt.c (_aes_decrypt_table): Moved from this file...
	* aes-decrypt-table.c (_aes_decrypt_table): ... to a new file.
	
	* testsuite/aes-test.out: New file, with the output of
	testsuite/aes-test, when aes.c has been compiled with debugging
	printouts of intermediate state.

Niels Möller's avatar
Niels Möller committed
395
396
2002-05-15  Niels Mller  <nisse@cuckoo.hack.org>

Niels Möller's avatar
Niels Möller committed
397
398
399
400
401
402
	* sparc/aes.asm: (_aes_crypt): Restore %fp at end of function, to
	make %fp available for other uses.

	* sparc/aes.asm: The frame setup was broken. Tried to fix it.
	Reverted to revision 1.70 + minor changes from the head revision.

Niels Möller's avatar
Niels Möller committed
403
404
	* x86/aes-encrypt.asm (aes_encrypt): Use test instead of cmpl $0,.

Niels Möller's avatar
Niels Möller committed
405
406
	* x86/machine.m4 (AES_SUBST_BYTE): New macro.

Niels Möller's avatar
Niels Möller committed
407
408
409
410
411
412
413
414
415
416
417
418
	* sparc/aes.asm: wtxt needs no register of it's own, as its
	pointed to by %sp. %g5 moved to %l0, the register previously
	allocated for wtxt, so that we stay clean of the reserved %g
	registers.

2002-05-14  Niels Mller  <nisse@cuckoo.hack.org>

	* sparc/aes.asm: Avoid using %g6 and %g7, as they are reserved for
	operating sytem use. Use %i5 and %o7 instead. Also moved %g4 to %g1.
	(_aes_crypt): Allocate only 32 bytes local storage on the stack.
	Calculate wtxt and tmp using offsets from %sp, not %fp. 

Niels Möller's avatar
Niels Möller committed
419
420
2002-05-14  Niels Mller  <niels@s3.kth.se>

Niels Möller's avatar
Niels Möller committed
421
422
	* x86/aes-encrypt.asm (aes_encrypt): Replaced first quarter of the
	round function with an invocation of AES_ROUND.
Niels Möller's avatar
Niels Möller committed
423
424
	(aes_encrypt): Similarly for the second column.
	(aes_encrypt): Similarly for the rest of the round function.
Niels Möller's avatar
Niels Möller committed
425
426
427

	* x86/machine.m4 (AES_ROUND): New macro.

Niels Möller's avatar
Niels Möller committed
428
429
430
431
432
433
434
435
	* x86/aes-encrypt.asm (aes_encrypt): Use AES_LOAD macro.

	* x86/machine.m4 (AES_LOAD): New macro.

	* x86/aes-encrypt.asm (aes_encrypt): Use AES_STORE.

	* x86/machine.m4 (AES_STORE): New macro.

Niels Möller's avatar
Niels Möller committed
436
437
	* x86/aes-encrypt.asm (aes_encrypt): Use the AES_LAST_ROUND macro
	for the first column of the final round.
438
439
	(aes_encrypt): Similarly for the second column.
	(aes_encrypt): Similarly for the third and fourth column.
Niels Möller's avatar
Niels Möller committed
440

Niels Möller's avatar
Niels Möller committed
441
442
443
	(aes_encrypt): Deleted xchgl instruction in final round, by
	reordering the second and fourth round.

Niels Möller's avatar
Niels Möller committed
444
445
	* x86/machine.m4 (AES_LAST_ROUND): New macro.

446
447
448
449
450
451
	* x86/aes-encrypt.asm (aes_encrypt): Move code here...
	* x86/aes.asm: ...from here.	

	* x86/aes.asm: Use addl and subl, not add and sub. Replaced
	references to dtbl1-4 with references to _aes_encrypt_table.

Niels Möller's avatar
Niels Möller committed
452
453
	* configure.ac (asm_path): Enable x86 assembler.

Niels Möller's avatar
Niels Möller committed
454
455
456
	* x86/aes.asm (aes_decrypt): Adapted to the current interface.
	Notably, the order of the subkeys was reversed. Single block
	encrypt/decrypt works now.
Niels Möller's avatar
Niels Möller committed
457
458
	(aes_encrypt, aes_decrypt): Added an outer loop, so that we can
	encrypt more than one block at a time.
Niels Möller's avatar
Niels Möller committed
459

Niels Möller's avatar
Niels Möller committed
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
2002-05-07  Niels Mller  <niels@s3.kth.se>

	* configure.ac: Generate config.m4.

	* x86/aes.asm: Use C for comments, include the tables using
	include_src, and commented out the key setup functions.
	Fixed the processing of the first handling of the round function.
	Now, encryption of a single block works! Multiple blocks, and
	decryption, is still broken.

	* x86/machine.m4: New file (empty).

	* x86/aes-encrypt.asm: New file, empty for now.

	* Makefile.am (%.asm): Added asm.m4, machine.m4 and config.m4 to
	the m4 command line.
	(libnettle_a_SOURCES): Added aes-encrypt-table.c.

	* sparc/aes.asm: No need to include asm.m4, that is taken care of
	by the Makefile. 

	* config.m4.in: New file, configuration for asm.m4.

	* asm.m4 (C, include_src): New macros.

	* aes-encrypt-table.c: New file, table moved out from
	aes-encrypt.c. 

Niels Möller's avatar
Niels Möller committed
488
489
490
491
2002-05-06  Niels Mller  <niels@s3.kth.se>

	* configure.ac (CFLAGS): Don't enable -Waggregate-return.

Niels Möller's avatar
Niels Möller committed
492
493
494
495
2002-05-05  Niels Mller  <nisse@lysator.liu.se>

	* configure.ac: Pass no arguments to AM_INIT_AUTOMAKE.

Niels Möller's avatar
Niels Möller committed
496
497
498
499
500
501
2002-05-05  Niels Mller  <nisse@cuckoo.hack.org>

	* configure.ac: Update for automake-1.6.

	* configure.ac: Renamed file, used to be configure.in.
	
Niels Möller's avatar
Niels Möller committed
502
503
504
505
2002-03-20  Niels Mller  <nisse@cuckoo.hack.org>

	* testsuite/run-tests (test_program): Added missing single quote.

Niels Möller's avatar
Niels Möller committed
506
507
508
509
510
2002-03-20  Niels Mller  <nisse@lysator.liu.se>

	* testsuite/run-tests (test_program): Test the exit status of the
	right process.

Pontus Freyhult's avatar
Pontus Freyhult committed
511
512
513
514
2002-03-19  Pontus Skld  <pont@it.uu.se>

	* testsuite/run-tests: Removed /bin/bashisms to use with /bin/sh. 

Niels Möller's avatar
Niels Möller committed
515
516
517
518
519
2002-03-18  Niels Mller  <nisse@cuckoo.hack.org>

	* rsa-keygen.c (rsa_generate_keypair): Output a newline after a
	non-empty line of 'e':s (bad e was chosen, try again).

Niels Möller's avatar
Niels Möller committed
520
521
522
523
524
2002-03-16  Niels Mller  <nisse@cuckoo.hack.org>

	* configure.in (asm_path): AC_CONFIG_LINKS adds $srcdir
	automatically. 

Niels Möller's avatar
Niels Möller committed
525
2002-03-14  Niels Mller  <nisse@cuckoo.hack.org>
Niels Möller's avatar
Niels Möller committed
526

Niels Möller's avatar
Niels Möller committed
527
528
529
530
531
532
	* sparc/aes.asm, x86/aes.asm: Added copyright notice.

	* Makefile.am (libnettle_a_SOURCES): Added aes-internal.h.
	(EXTRA_DIST): Added assembler files.

	* configure.in (asm_path): Use $srcdir when looking for the files. 
Niels Möller's avatar
Niels Möller committed
533
	* configure.in (asm_path): For now, disable x86 assembler code. 
Niels Möller's avatar
Niels Möller committed
534
	Bumped version to 1.6.
Niels Möller's avatar
Niels Möller committed
535

Niels Möller's avatar
Niels Möller committed
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
2002-02-25  Niels Mller  <nisse@cuckoo.hack.org>

	* sparc/aes.asm (_aes_crypt): Moved increment of src into the
	source_loop. Also fixed stop condition, the loop was run 5 times,
	not 4, as it should.
	(_aes_crypt): Use src directly when accessing the source data,
	don't use %o5.
	(_aes_crypt): Renamed variables in source_loop.
	(_aes_crypt): Changed stop condition in source_loop to not depend
	on i. Finally reduced the source_loop to 16 instructions. Also
	increased the alignment of the code to 16.
	(_aes_crypt): In final_loop, use preshifted indices.
	(_aes_crypt): In final_loop, construct the result in t0. Use t0-t3
	for intermediate values.
	(_aes_crypt): In final_loop, use the register idx.
	(_aes_crypt): In final_loop, keep i multiplied by 4. Use key to
	get to the current roundkey.
	(_aes_crypt): In final_loop, use i for indexing.
	(_aes_crypt): Update dst in the output loop. This yields a delay
	slot that isn't filled yet.
	(_aes_crypt): Decrement round when looping, saving yet some
	instructions.
	(_aes_crypt): Reformatted code as blocks of four instructions
	each.
	(_aes_crypt): Copy the addresses of the indexing tables into
	registers at the start. No more need for the idx register.
	(_aes_crypt): Deleted idx register.
	(_aes_crypt): Some peep hole optimizations, duplicating some
	instructions to fill nop:s, and put branch instructions on even
	word addresses.

2002-02-22  Niels Mller  <nisse@cuckoo.hack.org>

	* sparc/aes.asm (_aes_crypt): Moved some more additions out of the
	inner loop, using additional registers.
	(_aes_crypt): Deleted one more addition from the inner loop, by
	using the subkey pointer.

Niels Möller's avatar
Niels Möller committed
574
575
576
577
578
2002-02-19  Niels Mller  <nisse@cuckoo.hack.org>

	* configure.in (asm_path): Renamed "path" to "asm_path". Also look
	for a machine.m4.

Niels Möller's avatar
Niels Möller committed
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
2002-02-16  Niels Mller  <nisse@cuckoo.hack.org>

	* sparc/aes.asm: Use that IDX2(j) == j ^ 2

	* Makefile.am (libnettle_a_SOURCES): Reordered aes-decrypt.c and
	aes-encrypt.c. For some strange reason it makes the benchmark go
	faster... 

	* sparc/aes.asm (_aes_crypt): Use double-buffering, and no
	separate loop for adding the round key.
	(round): Keep round index muliplied by 16, so it can be used
	directly for indexing the subkeys.
	(_aes_crypt): In the final loop, use ctx+round to access the
	subkeys, no need for an extra register.

2002-02-15  Niels Mller  <nisse@cuckoo.hack.org>

	* sparc/aes.asm (_aes_crypt): Renaming variables, allocating
	locals starting from %l0.
	(_aes_crypt): Consistently use %l4, aka i, as the variable for the
	innermost loops.
	(_aes_crypt): Moved reading of ctx->nrounds out of the loop.
	(_aes_crypt): In final_loop, deleted a redundant mov, and use i as
	loop variable.
	(_aes_crypt): Started renumbering registers in the inner loop. The
	computation for the table[j] sub-expression should be kept in
	register %o[j].
	(_aes_crypt): Renamed more variables in the inner loop. Now the
	primary variables are t0, t1, t2, t3.

	* sparc/aes.asm (_aes_crypt): Swapped register %i0 and %o5, %i1
	and %o0, %i2 and %o4, %i3 and %o3, %i4 and %o2.
	(_aes_crypt): wtxt was stored in both %l1 and %l2 for the entire
	function. Freed %l2 for other uses.
	(_aes_crypt): Likewise for tmp, freeing register %o1.	

	* sparc/machine.m4: New file, for sparc-specific macros.

	* sparc/aes.asm (_aes_crypt): Hacked the source_loop, to get rid
	of yet another redundant loop variable, and one instruction.
	(_aes_crypt): Strength reduce loop variable in the
	inner loop, getting rid of one register.
	(_aes_crypt): Use pre-shifted indices (aes_table.idx_shift), to
	avoid some shifts in the inner loop.
	(_aes_crypt): Don't check for nrounds==0 at the start of the loop.

	* asm.m4: Define and use structure-defining macros.

	* Makefile.am (%.asm): Use a GNU pattern rule, to make %.o depend
	on both %.asm and asm.m4.

	* aes-internal.h (struct aes_table): New subtable idx_shift.
	Updated tables in aes_encrypt.c and aes_decrypt.c.

	* asm.m4: Use eval to compute values.

	* sparc/aes.asm (_aes_crypt): Deleted commented out old version of
	the code.

	* asm.m4: Added constants for individual rows of the aes table.

	* aes.c (IDX0, IDX1, IDX2, IDX3): New macros, encapsualting the
	structure of the idx table.

	* asm.m4: Define various aes struct offsets.

	* testsuite/cbc-test.c (test_cbc_bulk): Use aes_set_encrypt_key
	and aes_set_decrypt_key.

	* sparc/aes.asm (_aes_crypt): Use symbolic names for the fucntion
	arguments. 

Niels Möller's avatar
Niels Möller committed
651
652
2002-02-14  Niels Mller  <nisse@cuckoo.hack.org>

Niels Möller's avatar
Niels Möller committed
653
654
655
656
657
658
659
660
661
662
663
664
665
	* sparc/aes.asm: Copied gcc assembler code for _aes_crypt.

	* aesdata.c: New program for generating AES-related tables.

	* testsuite/testutils.c (print_hex): New function (moved from
	yarrow-test.c). 

	* testsuite/rsa-keygen-test.c (progress): Declare the ctx argument
	as UNUSED.

	* testsuite/cbc-test.c (test_cbc_bulk): New function, testing CBC
	with larger blocks.

Niels Möller's avatar
Niels Möller committed
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
	* yarrow256.c: Replaced uses of aes_set_key with
	aes_set_encrypt_key. 

	* nettle-meta.h (_NETTLE_CIPHER_SEP): New macro, useful for
	algorithms with separate encyption and decryption key setup. 

	* aes-internal.h (struct aes_table): New structure, including all
	constant tables needed by the unified encryption or decryption
	function _aes_crypt.

	* aes.c (_aes_crypt): New function, which unifies encryption and
	decryption.

	AES key setup now uses two separate functions for setting
	encryption and decryption keys. Applications that don't do
	decryption need no inverted subkeys and no code to generate them.
	Similarly, the tables (about 4K each for encryption and
	decryption), are put into separate files.

	* aes.h (struct aes_ctx): Deleted space for inverse subkeys. For
	decryption, the inverse subkeys replace the normal subkeys, and
	they are stored _in the order they are used_. 

	* aes-set-key.c (aes_set_key): Deleted file, code moved...
	* aes-set-decrypt-key.c, aes-set-encrypt-key.c: New files,
	separated normal and inverse key setup.

	* aes-tables.c: Deleted, tables moved elsewhere...
	* aes-encrypt.c, aes-decrypt.c: New files; moved encryption and
	decryption funktions, and needed tables, into separate files.

Niels Möller's avatar
Niels Möller committed
697
698
699
700
701
702
703
704
705
706
707
708
709
2002-02-13  Niels Mller  <nisse@cuckoo.hack.org>

	* aes.c (aes_encrypt): Don't unroll the innerloop.
	(aes_encrypt): Don't unroll the loop for the final round.
	(aes_decrypt): Likewise, no loop unrolling.

	* aes-set-key.c (aes_set_key): Reversed the order of the inverted
	subkeys. They are now stored in the same order as they are used.

	* aes-tables.c (itable): New bigger table, generated by aesdata.c. 

	* aes.c (aes_decrypt): Rewrote to use the bigger tables.

Niels Möller's avatar
Niels Möller committed
710
711
2002-02-12  Niels Mller  <nisse@cuckoo.hack.org>

Niels Möller's avatar
Niels Möller committed
712
713
714
715
716
717
718
719
720
721
722
723
	* aes.c (aes_encrypt): Interleave computation and output in the
	final round.

	* aes-internal.h (AES_SMALL): New macro.

	* aes.c (aes_encrypt): Optionally use smaller rotating inner loop.

	* aes-tables.c (dtbl): Replaced with table generated by aesdata.

	* aes.c (aes_encrypt): Rewrite, now uses larger tables in order to
	avoid rotates.

Niels Möller's avatar
Niels Möller committed
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
	* sparc/aes.asm (aes_encrypt): Strength reduced on j, getting rid
	of one register and one instruction in the inner loop.

	* sparc/aes.asm (idx, aes_encrypt): Multiplied tabled values by 4,
	making it possible to get rid of some shifts in the inner loop.

	* configure.in: Fixed spelling of --enable-assembler. Commented
	out debug echo:s.

	* asm.m4: New file. For now, only doing changequote and changecom.  

	* sparc/aes.asm (aes_encrypt): Added comments.
	(aes_encrypt): Cut off redundant instruction per block, also
	saving one redundant register pointing to idx.
	(idx_row): New macro. Include asm.m4.

2002-02-11  Niels Mller  <nisse@cuckoo.hack.org>

	* sparc/aes.asm (key_addition_8to32): Cleaned up.
	Deleted gcc-generated debugging information.

	* sparc/aes.asm (key_addition32): First attempt at optimization.
	Made it slower ;-)

	* sparc/aes.asm (key_addition32): Unrolled loop, gained 4%
	speed, payed four instructions compared to gcc
	generated code. 
	
	* Makefile.am (.asm.o): New rule for assembling via m4.
	(libnettle_a_SOURCES): Added new rsa and aes files.

	* configure.in: New command line option --enable-assembler.
	Selects assembler code depending on the host system.

	* rsa-decrypt.c, rsa-encrypt.c: New files for rsa pkcs#1
	encryption. 

	* aes-set-key.c, aes-tables.c: New files, split off from aes.c.
	Tables are now not static, but use a _aes_ prefix on their names. 

	* aes-internal.h: New file.

	* cast128-meta.c (_NETTLE_CIPHER_FIX): Use _NETTLE_CIPHER_FIX. 

	* cbc.c (cbc_decrypt_internal): New function, doing the real CBC
	procesing and requiring that src != dst.
	(cbc_decrypt): Use cbc_decrypt_internal. If src == dst, use a
	buffer of limited size to copy the ciphertext.

	* nettle-internal.c (nettle_blowfish128): Fixed definition, with
	key size in bits.

	* nettle-meta.h (_NETTLE_CIPHER_FIX): New macro, suitable for
	ciphers with a fixed key size.

	* examples/nettle-benchmark.c (display): New function for
	displaying the results, including MB/s figures.

	* sparc/aes.asm: New file. Not yet tuned in any way (it's just the
	code generated by gcc).

Niels Möller's avatar
Niels Möller committed
785
786
787
788
789
2002-02-11  Niels Mller  <nisse@lysator.liu.se>

	* x86/aes.asm, x86/aes_tables.asm: New assembler implementation by
	Rafael Sevilla. 

Niels Möller's avatar
Niels Möller committed
790
791
792
793
794
795
796
797
798
799
800
801
802
803
2002-02-06  Niels Mller  <nisse@cuckoo.hack.org>

	Applied patch from Dan Egnor improving the base64 code.
	* base64.h (BASE64_ENCODE_LENGTH): New macro.
	(struct base64_ctx): New context struct, for decoding.
	(BASE64_DECODE_LENGTH): New macro.
	* base64.c (base64_decode_init): New function.
	(base64_decode_update): New function, replacing base64_decode.
	Takes a struct base64_ctx argument.
	* nettle-meta.h: Updated nettle_armor, and related typedefs and
	macros. 
	* testsuite/testutils.c (test_armor): Updated.
	* configure.in: Use AC_PREREQ(2.50).

Niels Möller's avatar
Niels Möller committed
804
805
806
807
2002-02-01  Niels Mller  <nisse@cuckoo.hack.org>

	* Released nettle-1.5.

Niels Möller's avatar
Niels Möller committed
808
809
810
811
812
2002-01-31  Niels Mller  <nisse@cuckoo.hack.org>

	* acinclude.m4: Commented out gmp-related macros, they're probably
	not needed anymore.

Niels Möller's avatar
Niels Möller committed
813
814
815
816
817
818
819
820
2002-01-31  Niels Mller  <nisse@lysator.liu.se>

	* configure.in: Added command line options --with-lib-path and
	--with-include-path. Use the RPATH-macros to get correct flags for
	linking the test programs with gmp.

	* acinclude.m4: New file.

Niels Möller's avatar
Niels Möller committed
821
822
823
824
825
826
827
828
829
830
831
2002-01-31  Niels Mller  <nisse@cuckoo.hack.org>

	* nettle.texinfo (Randomness): New subsection on Yarrow.

2002-01-30  Niels Mller  <nisse@cuckoo.hack.org>

	* nettle.texinfo (Randomness): New chapter.
	Spell checking and ispell configuration.

	* md5.c: Added reference to RFC 1321.

Niels Möller's avatar
Niels Möller committed
832
833
834
835
2002-01-24  Niels Mller  <nisse@cuckoo.hack.org>

	* nettle.texinfo (Public-key algorithms): Minor fixes.

Niels Möller's avatar
Niels Möller committed
836
837
838
839
840
841
2002-01-22  Niels Mller  <nisse@cuckoo.hack.org>

	* nettle.texinfo (Nettle soup): New chapter.
	(Hash functions): New subsection on struct nettle_hash. 
	(Hash functions): New subsection on struct nettle_cipher.
	(Keyed hash functions): New section, describing MAC:s and HMAC.
Niels Möller's avatar
Niels Möller committed
842
	(Public-key algorithms): New chapter.
Niels Möller's avatar
Niels Möller committed
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859

	* testsuite/testutils.c (test_armor): New function.

	* testsuite/base64-test.c: New testcase.

	* testsuite/Makefile.am (TS_PROGS): Added base64-test.

	* nettle-meta.h (struct nettle_armor): New struct.

	* configure.in: Bumped version to 1.5.

	* Makefile.am (libnettle_a_SOURCES): Added base64 files, and some
	missing header files.

	* base64.c, base64.h, base64-meta.c: New files, hacked by Dan
	Egnor. 

Niels Möller's avatar
Niels Möller committed
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
2002-01-16  Niels Mller  <nisse@cuckoo.hack.org>

	* testsuite/yarrow-test.c: Deleted ran_array code, use
	knuth-lfib.h instead.

	* testsuite/testutils.c (test_rsa_md5, test_rsa_sha1): Moved
	functions here...
	* testsuite/rsa-test.c: ...from here.

	* testsuite/rsa-keygen-test.c: New file.

	* testsuite/knuth-lfib-test.c: New file.

	* Makefile.am (libnettle_a_SOURCES): Added knuth-lfib.c and
	rsa-keygen.c.

	* rsa-keygen.c: New file.

	* rsa.h (RSA_MINIMUM_N_OCTETS): New constant.
	(RSA_MINIMUM_N_BITS): New constant.
	(nettle_random_func, nettle_progress_func): New typedefs. Perhaps
	they don't really belong in this file.
	(rsa_generate_keypair): Added progress-callback argument.

	* macros.h (READ_UINT24, WRITE_UINT24, READ_UINT16, WRITE_UINT16):
	New macros.

	* knuth-lfib.c, knuth-lfib.h: New files, implementing a
	non-cryptographic prng.

Niels Möller's avatar
Niels Möller committed
890
891
892
893
2002-01-15  Niels Mller  <nisse@cuckoo.hack.org>

	* hmac-sha1.c: New file.

Niels Möller's avatar
Niels Möller committed
894
895
2002-01-14  Niels Mller  <nisse@cuckoo.hack.org>

Niels Möller's avatar
Niels Möller committed
896
897
	* configure.in: Bumped version to 1.1.

Niels Möller's avatar
Niels Möller committed
898
899
900
901
902
903
904
905
906
907
908
	* testsuite/hmac-test.c (test_main): Added hmac-sha1 test cases.

	* rsa.c (rsa_init_private_key, rsa_clear_private_key): Handle d. 

	* rsa.h (struct rsa_private_key): Reintroduced d attribute, to be
	used only for key generation output.
	(rsa_generate_keypair): Wrote a prototype.

	* Makefile.am (libnettle_a_SOURCES): Added hmac-sha1.c and
	nettle-internal.h. 

Niels Möller's avatar
Niels Möller committed
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
	* des.c: Use static const for all tables.
	(des_set_key): Use a new const * variable for the parity
	procesing, for constness reasons.

	* list-obj-sizes.awk: New file.

	* nettle-internal.c, nettle-internal.h: New files.

	* testsuite/Makefile.am (TS_PROGS): Added hmac-test. Deleted old
	m4-stuff. 

	* testsuite/testutils.h (LDATA): Moved this macro here,...
	* testsuite/rsa-test.c: ... from here.

	* testsuite/hmac-test.c: New file.

	* hmac.h: General cleanup. Added declarations of hmac-md5,
	hmac-sha1 and hmac-sha256.

	* hmac.c: Bug fixes.

	* hmac-md5.c: First working version.

	* Makefile.am (libnettle_a_SOURCES): Added hmac.c and hmac-md5.c.
	(libnettleinclude_HEADERS): Added hmac.h.

	* testsuite/rsa-test.c: Also test a 777-bit key.

	* rsa.c (rsa_check_size): Changed argument to an mpz_t. Updated
	callers. 
	(rsa_prepare_private_key): Compute the size of the key by
	computing n = p * q.

	* rsa-compat.c: Adapted to new private key struct.
	* rsa_md5.c: Likesize.
	* rsa_sha1.c: Likesize.

	* rsa.c (rsa_check_size): New function, for computing and checking
	the size of the modulo in octets.
	(rsa_prepare_public_key): Usa rsa_check_size.
	(rsa_init_private_key): Removed code handling n, e and d.
	(rsa_clear_private_key): Likewise.
	(rsa_compute_root): Always use CRT.

	* rsa.h (struct rsa_private_key): Deleted public key and d from
	the struct, as they are not needed. Added size attribute.

Niels Möller's avatar
Niels Möller committed
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
2002-01-12  Niels Mller  <nisse@cuckoo.hack.org>

	* Makefile.am: Added *-meta files.

	* rsa.c (rsa_init_public_key): New function.
	(rsa_clear_public_key): Likewise.
	(rsa_init_private_key): Likewise.
	(rsa_clear_private_key): Likewise.

	* aes-meta.c: New file.
	* arcfour-meta.c: New file.
	* cast128-meta.c: New file.
	* serpent-meta.c: New file.
	* twofish-meta.c: New file.

	* examples/nettle-benchmark.c: Use the interface in nettle-meta.h. 

2002-01-11  Niels Mller  <nisse@cuckoo.hack.org>

	Don't use m4 for generating test programs, it's way overkill. Use
	the C preprocessor instead.
	* testsuite/*-test.c: New file.

	* hmac.c, hmac.h, hmac-md5.c: New files.

	Defined structures describing the algoriths. Useful for code that
	wants to treat an algorithm as a black box.
	* nettle-meta.h, md5-meta.c, sha1-meta.c, sha256-meta.c: New
	files. 

Niels Möller's avatar
Niels Möller committed
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
2002-01-09  Niels Mller  <nisse@cuckoo.hack.org>

	* rsa-compat.c: Updated for new md5 and rsa conventions.

	* rsa_md5.c: Represent a signature as an mpz_t, not a string.
	Updated calls of md5 functions.
	* rsa_sha1.c: Likewise.

	* rsa.c (rsa_prepare_public_key): Renamed function, was
	rsa_init_public_key. 
	(rsa_prepare_private_key): Renamed function, was
	rsa_init_private_key. 

	* nettle.texinfo (Hash functions): Update for the changed
	interface without *_final. Document sha256.
For faster browsing, not all history is shown. View entire blame