Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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
2002-10-31 Niels Mller <niels@s3.kth.se>
* examples/sexp-conv.c(sexp_put_list_start): Deleted function.
(sexp_put_list_end): Likewise.
(sexp_put_display_start): Likewise.
(sexp_put_display_end): Likewise.
(sexp_puts): Likewise.
* examples/sexp-conv.c (sexp_get_quoted_string): Deleted function.
Merged with sexp_get_String.
(sexp_get_hex_string): Likewise.
(sexp_get_base64_string): Likewise.
(sexp_get_string): Do hex and base64 decoding.
* examples/sexp-conv.c (enum sexp_char_type): New enum, for end
markers in the input strem.
(struct sexp_input): Deleted LEVEL attribute. Deleted all usage of
it.
(sexp_get_raw_char): Use INPUT->c and INPUT->ctype to store
results. Deleted OUT argument.
(sexp_get_char): Likewise. Also removed the
INPUT->coding->decode_final call, for symmetry.
(sexp_input_end_coding): Call INPUT->coding->decode_final.
(sexp_next_char): New function.
(sexp_push_char): New function.
(sexp_get_token_char): Deleted function.
(sexp_get_quoted_char): Simplified. Deleted output argument.
(sexp_get_quoted_string): Simplified.
(sexp_get_base64_string): Likewise.
(sexp_get_token_string): Likewise.
(sexp_get_string_length): Skip the character that terminates the
string.
(sexp_get_token): Cleared upp calling conventions. Always consume
the final character of the token.
(sexp_convert_list): Take responsibility for converting the start
and end of the list.
(sexp_convert_file): Call sexp_get_char first, to get the token
reading started.
(sexp_convert_item): Cleared up calling conventions. Should be
called with INPUT->token being the first token of the expression,
and returns with INPUT->token being the final token of the
expression. Return value changed to void..
* examples/sexp-conv-test: Added test for transport mode input.
* examples/sexp-conv.c (sexp_get_char): Use the nettle_armor
interface for decoding.
(sexp_input_start_coding): New function.
(sexp_input_end_coding): New function.
(sexp_get_base64_string): Rewrote to use sexp_input_start_coding
and sexp_input_end_coding.
(sexp_get_token): Generate SEXP_TRANSPORT_START tokens.
(sexp_convert_list): Lists are ended only by SEXP_LIST_END.
(sexp_convert_item): Implemented transport mode, using
sexp_input_start_coding and sexp_input_end_coding.
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
2002-10-30 Niels Mller <nisse@cuckoo.hack.org>
* Makefile.am: Added base16 files.
* examples/sexp-conv-test: New tests for transport output.
* examples/sexp-conv.c: Deleted hex functions, moved to Nettle's
base16 files.
(struct sexp_output): Represent the current encoding as a
nettle_armor pointer and a state struct.
(sexp_output_init): Deleted MODE argument. Now passed to functions
that need it.
(sexp_get_char): Updated to new base64 conventions.
(sexp_get_base64_string): Likewise.
(sexp_put_raw_char): New function.
(sexp_put_newline): Use sexp_put_raw_char.
(sexp_put_char): Use nettle_armor interface for encoding data.
Use OUTPUT->coding_indent for line breaking, so the INDENT
argument was deleted.
(sexp_put_code_start): New function, replacing sexp_put_base64_start.
(sexp_put_code_end): New function, replacing sexp_put_base64_end.
(sexp_put_data): Deleted argument INDENT.
(sexp_puts): Likewise.
(sexp_put_length): Likewise.
(sexp_put_list_start): Likewise.
(sexp_put_list_end): Likewise.
(sexp_put_display_start): Likewise.
(sexp_put_display_end): Likewise.
(sexp_put_string): Likewise. Also changed base64 handling.
(sexp_convert_string): Deleted argument INDENT. New argument
MODE_OUT.
(sexp_convert_list): New argument MODE_OUT.
(sexp_convert_file): Likewise.
(sexp_convert_item): Likewise. Also handle output in transport
mode.
(match_argument): Simple string comparison.
(main): Adapted to above changes.
* testsuite/testutils.c (test_armor): Allocate a larger buffer
CHECK, to make decode_update happy. Updated to new base64
conventions.
* testsuite/base64-test.c (test_main): Fixed overlap test to not
change the base64 before decoding. Updated to new base64
conventions.
* testsuite/Makefile.am (TS_PROGS): Added base16-test.
* testsuite/base16-test.c: New test.
* sexp-transport.c (sexp_transport_iterator_first): Updated to new
conventions for base64_decode_update and base64_decode_final.
* nettle-meta.h: Updated ascii armor declarations. New declaration
for nettle_base16.
* base64-decode.c (base64_decode_single): Return -1 on error.
Also keep track of the number of padding characters ('=') seen.
(base64_decode_update): New argument dst_length. Return -1 on error.
(base64_decode_status): Renamed function...
(base64_decode_final): ... to this.
* base64.h (struct base64_decode_ctx): Deleted STATUS attribute.
Added PADDING attribute.
* base16.h, base16-encode.c, base16-decode.c, base16-meta.c: New
files.
2002-10-28 Niels Mller <nisse@cuckoo.hack.org>
* examples/sexp-conv.c (struct hex_decode_ctx): New hex decoding
functions.
(sexp_get_raw_char): New function.
(sexp_get_char): Use sexp_get_raw_char.
2002-10-26 Niels Mller <nisse@cuckoo.hack.org>
* examples/sexp-conv.c (sexp_put_length): Bugfix, don't output any
leading zero.
(main): Implemented -s option.
* examples/sexp-conv-test: Test for echo -n vs echo '\c'. Added a
few tests for canonical output.
* examples/sexp-conv.c (struct sexp_input): Deleted the mode from
the state, that should be passed as argument to relevant
functions. Instead, introduces enum sexp_coding, to say if base64
coding is in effect.
(struct sexp_output): Added coding attribute.
(sexp_put_char): Use output->coding.
(sexp_put_base64_start): Likewise.
(sexp_put_base64_end): Likewise.
* base64-decode.c (base64_decode_single): Simplified, got rid of
the done variable.
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
2002-10-25 Niels Mller <nisse@cuckoo.hack.org>
* examples/sexp-conv.c (sexp_put_newline): Return void, die on
error.
(sexp_put_char, sexp_put_data, sexp_puts, sexp_put_length,
sexp_put_base64_start, sexp_put_base64_end, sexp_put_string,
sexp_put_list_start, sexp_put_list_end, sexp_put_display_start,
sexp_put_display_end, sexp_convert_string, sexp_convert_list,
sexp_skip_token): Likewise.
(sexp_convert_item): Die on error.
2002-10-24 Niels Mller <nisse@cuckoo.hack.org>
* examples/sexp-conv-test: Doesn't need echo -n anymore.
* examples/sexp-conv.c (die): New function.
(struct sexp_input): Deleted field ITEM.
(sexp_get_char): Die on failure, never return -1.
(sexp_get_quoted_char): Likewise.
(sexp_get_quoted_string): Die on failure, no returned value.
(sexp_get_base64_string): Likewise.
(sexp_get_token_string): Likewise.
(sexp_get_string): Likewise.
(sexp_get_string_length): Likewise.
(sexp_get_token): Likewise.
(sexp_convert_string): Adapted to sexp_get_token.
(sexp_convert_list): Likewise.
(sexp_convert_file): New function.
(main): Use sexp_convert_file.
2002-10-23 Niels Mller <nisse@cuckoo.hack.org>
* examples/Makefile.am (TS_PROGS): Added sexp-conv-test.
* examples/sexp-conv.c (sexp_input_init): Initialize input->string
properly.
(sexp_get_char): Fixed non-transport case.
(sexp_get_quoted_char): Fixed default case.
(sexp_get_token): Loop over sexp_get_char (needed for handling of
white space). Don't modify input->level. Fixed the code that skips
comments.
(sexp_put_char): Fixed off-by-one bug in assertion.
(sexp_put_string): Fixed escape handling for output of quoted
strings.
(sexp_convert_list): Prettier output, hanging indent after the
first list element.
(sexp_skip_token): New function.
(sexp_convert_item): Use sexp_skip_token to skip the end of a
"[display-type]".
2002-10-22 Niels Mller <nisse@cuckoo.hack.org>
* examples/sexp-conv-test: New test program.
* examples/Makefile.am (noinst_PROGRAMS): Added sexp-conv.
* examples/sexp-conv.c (sexp_convert_list): New function.
(sexp_convert_item): New function.
(main): New function. Compiles and runs now, but doesn't work.
* base64-decode.c (base64_decode_single): New function.
(base64_decode_update): Use base64_decode_single.
* examples/sexp-conv.c: Added output functions.
Pontus Freyhult
committed
2002-10-21 Pontus Skld <pont@soua.net>
* base64-encode.c (base64_encode_raw): Fixed null statement
amongst variable declarations, broke compilation for non C99
compilers.
2002-10-21 Niels Mller <nisse@lysator.liu.se>
* examples/sexp-conv.c: New sexp conversion program.
2002-10-21 Niels Mller <niels@s3.kth.se>
* Makefile.am (libnettle_a_SOURCES): Added
sexp-format-transport.c.
* sexp-transport.c (sexp_transport_iterator_first): New file and
function.
* sexp.h (sexp_transport_iterator_first): Added protoype.
* sexp.c (sexp_iterator_next): Abort if iterator type is boogus.
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
2002-10-19 Niels Mller <nisse@cuckoo.hack.org>
* testsuite/testutils.c (test_armor): Updated to new armor
conventions.
* testsuite/base64-test.c (test_main): Test BASE64_ENCODE_LENGTH
and BASE64_DECODE_LENGTH. Updated test of base64_encode_raw (used
to be base64_encode).
* base64.h (BASE64_ENCODE_LENGTH, BASE64_DECODE_LENGTH): Fixed and
documented macros.
* base64-meta.c (base64_encode_length, base64_decode_length): New
functions, corresponding to the macros with the same name.
* Makefile.am (libnettle_a_SOURCES): base64.c replaced by
base64-encode.c and base64-decode.c.
* pgp-encode.c (pgp_armor): Use new base64 conventions.
* nettle-meta.h: Updated nettle_armor definitions.
* base64.h: Major reorganization.
* base64.c: Deleted file, contents moved to base64-encode.c or
base64-decode.c.
* base64-encode.c: New file. New supporting both encode-at-once
and streamed operation.
* base64-decode.c: New file.
2002-10-09 Niels Mller <nisse@cuckoo.hack.org>
* testsuite/Makefile.am (TS_PROGS): Added dsa-keygen-test.
* dsa-keygen.c: Call the progress callback only if it's non-NULL.
279
280
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
* Makefile.am (libnettle_a_SOURCES): Added bignum-random.c and
dsa-keygen.c.
* testsuite/testutils.c (test_dsa_key): New function to sanity
check a dsa keypair.
* testsuite/dsa-test.c (test_main): Call dsa_test_key.
* testsuite/dsa-keygen-test.c: New test case.
* dsa.h (DSA_MINIMUM_BITS): New constant.
* bignum.h (nettle_mpz_random, nettle_mpz_random_size): Added
prototypes.
* dsa-keygen.c: New file.
* bignum-random.c: New file.
(nettle_mpz_random): New function, moved from...
* dsa-sign.c (nettle_mpz_random): ... here. Also changed argument
ordering and updated callers.
* bignum-random.c: (nettle_mpz_random_size): New function, renamed
and moved here from...
* rsa-keygen.c (bignum_random_size): ... here. Updated all
callers.
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
* testsuite/testutils.c (test_dsa): Needs both public and private
key as arguments.
* testsuite/dsa-test.c (test_main): Updated to changes of the
private key struct.
* testsuite/Makefile.am (TS_PROGS): Added dsa-test.
* rsa-decrypt.c (rsa_decrypt): Constification.
* rsa-encrypt.c (rsa_encrypt): Likewise.
* rsa.c (rsa_compute_root): Likewise.
* rsa_md5.c (rsa_md5_sign): Likewise.
(rsa_md5_verify): Likewise.
* rsa_sha1.c (rsa_sha1_sign): Likewise.
(rsa_sha1_verify): Likewise.
* dsa-verify.c (dsa_verify): Use const for the public key
argument.
* dsa-sign.c (dsa_sign): Needs the public key as argument, in
addition to the private key. Use const.
* dsa.h (struct dsa_private_key): Don't include the public
information here.
* dsa.c (dsa_private_key_init, dsa_private_key_clear): Updated to
new struct dsa_private_key.
* dsa-sign.c (dsa_sign): Bugfix, added missing mpz_init call.
* 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.
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.
2002-10-06 Niels Mller <nisse@cuckoo.hack.org>
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
* 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.
* 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.
2002-10-04 Niels Mller <niels@s3.kth.se>
* examples/rsa-keygen.c: Use malloc, instead of asprintf.
* 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>
* examples/rsa-keygen.c (main): Comment on the lax security of the
private key file.
* index.html: Added link to mailing list.
2002-10-02 Niels Mller <niels@s3.kth.se>
* Makefile.am: Fixed assembler rules, and shared libraries.
* configure.ac: Fixed the enable-shared option.
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.
* 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@.
* examples/rsa-sign.c: No need to include config.h. Use werror
instead of fprintf.
* examples/rsa-verify.c: Likewise.
* 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.
* base64.h (BASE64_DECODE_LENGTH): Comment fix.
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..
2002-09-30 Niels Mller <niels@s3.kth.se>
* sexp_format.c (sexp_format): Don't mix code and declarations.
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
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.
2002-09-28 Niels Mller <nisse@cuckoo.hack.org>
* 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.
* 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.
2002-08-27 Niels Mller <niels@s3.kth.se>
* Makefile.am (DISTCLEANFILES): make distclean should delete the
assembler-related symlinks.
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.
2002-07-18 Niels Mller <niels@s3.kth.se>
* 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).
* configure.ac: Don't use -ggdb3 with gcc-2.96.
Check for openssl's libcrypto (for benchmarking).
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
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.
2002-05-15 Niels Mller <nisse@cuckoo.hack.org>
* 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.
* 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.
* x86/aes-encrypt.asm (aes_encrypt): Use AES_SUBST_BYTE.
* x86/aes-decrypt.asm (aes_decrypt): Likewise.
(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.
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
* 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.
2002-05-15 Niels Mller <nisse@cuckoo.hack.org>
* 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.
* x86/aes-encrypt.asm (aes_encrypt): Use test instead of cmpl $0,.
* x86/machine.m4 (AES_SUBST_BYTE): New macro.
* 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.
* x86/aes-encrypt.asm (aes_encrypt): Replaced first quarter of the
round function with an invocation of AES_ROUND.
(aes_encrypt): Similarly for the second column.
(aes_encrypt): Similarly for the rest of the round function.
* x86/machine.m4 (AES_ROUND): New macro.
* 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.
* x86/aes-encrypt.asm (aes_encrypt): Use the AES_LAST_ROUND macro
for the first column of the final round.
(aes_encrypt): Similarly for the second column.
(aes_encrypt): Similarly for the third and fourth column.
(aes_encrypt): Deleted xchgl instruction in final round, by
reordering the second and fourth round.
* x86/machine.m4 (AES_LAST_ROUND): New macro.
* 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.
* configure.ac (asm_path): Enable x86 assembler.
* x86/aes.asm (aes_decrypt): Adapted to the current interface.
Notably, the order of the subkeys was reversed. Single block
encrypt/decrypt works now.
(aes_encrypt, aes_decrypt): Added an outer loop, so that we can
encrypt more than one block at a time.
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
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.
2002-05-06 Niels Mller <niels@s3.kth.se>
* configure.ac (CFLAGS): Don't enable -Waggregate-return.
2002-05-05 Niels Mller <nisse@lysator.liu.se>
* configure.ac: Pass no arguments to AM_INIT_AUTOMAKE.
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.
2002-03-20 Niels Mller <nisse@cuckoo.hack.org>
* testsuite/run-tests (test_program): Added missing single quote.
2002-03-20 Niels Mller <nisse@lysator.liu.se>
* testsuite/run-tests (test_program): Test the exit status of the
right process.
2002-03-19 Pontus Skld <pont@it.uu.se>
* testsuite/run-tests: Removed /bin/bashisms to use with /bin/sh.
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).
2002-03-16 Niels Mller <nisse@cuckoo.hack.org>
* configure.in (asm_path): AC_CONFIG_LINKS adds $srcdir
automatically.
* 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.
* configure.in (asm_path): For now, disable x86 assembler code.
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
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.
2002-02-19 Niels Mller <nisse@cuckoo.hack.org>
* configure.in (asm_path): Renamed "path" to "asm_path". Also look
for a machine.m4.
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
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
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.
2002-02-14 Niels Mller <nisse@cuckoo.hack.org>
* 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.
* yarrow256.c: Replaced uses of aes_set_key with
aes_set_encrypt_key.