2013-05-28 Niels Möller <nisse@lysator.liu.se>
* Released nettle-2.7.1.
2013-05-21 Niels Möller <nisse@lysator.liu.se>
From master (2013-05-20):
* arm/v6/sha1-compress.asm: Moved into v6 directory, since it uses
the v6 instruction uadd8, sel and rev.
* arm/v6/sha256-compress.asm: Likewise.
From master (2013-05-15):
* configure.ac (asm_path): Handle armv6 and armv7 differently from
older ARMs. Add the arm/v6 directory to asm_path when appropriate.
* arm/v6/aes-encrypt-internal.asm: Moved into v6 directory. Uses
the uxtb instruction which is not available for older ARMs.
* arm/v6/aes-decrypt-internal.asm: Likewise.
2013-05-21 Niels Möller <nisse@lysator.liu.se>
* configure.ac: Changed version number to 2.7.1.
(LIBHOGWEED_MINOR): Bumped library version, to 4.7.
(LIBHOGWEED_MINOR): And to 2.5.
2013-05-17 Niels Möller <nisse@lysator.liu.se>
From master branch:
* ecc-j-to-a.c (ecc_j_to_a): Fixed ecc_modp_mul call, to avoid
invalid overlap of arguments to mpn_mul_n. Problem tracked down by
Magnus Holmgren.
2013-04-24 Niels Möller <nisse@lysator.liu.se>
* Released nettle-2.7.
2013-04-23 Niels Möller <nisse@lysator.liu.se>
From Martin Storsjö:
* x86_64/sha256-compress.asm: Add forgotten W64_EXIT.
* x86_64/sha512-compress.asm: Likewise.
* x86_64/salsa20-crypt.asm (Lpartial): Don't return via W64_EXIT
within this subfunction.
* x86_64/machine.m4 (W64_ENTRY): Use movdqu instead of movdqa for
saving xmm registers, since the stack is not guaranteed to be
16-byte aligned on win64. Take pushed xmm registers into account
when reading the fifth parameter from the stack.
* Makefile.in: Consistently use EXEEXT_FOR_BUILD.
2013-04-21 Niels Möller <nisse@lysator.liu.se>
* Makefile.in (DISTFILES): Added mini-gmp.c and mini-gmp.h.
(distdir): Use find, for identifying assembly files to copy.
2013-04-18 Niels Möller <nisse@lysator.liu.se>
* configure.ac: Recognize cpu type "arm*", not just "armv7*'.
* arm/aes-encrypt-internal.asm: Updated include of aes.m4.
* arm/aes-decrypt-internal.asm: Likewise.
* Makefile.in (distdir): Updated for ARM reorganization.
* configure.ac (asm_path): Generalized, can now be a list of
directories. On ARM, check for neon instructions, and add arm/neon
if appropriate. New command line options
--enable-arm-neon/--disable-arm-neon, for overriding the default.
arm/neon: New subdirectory, for assembly files making use of neon
instructions.
arm: Renamed directory, from...
armv7: ...old name.
* aclocal.m4 (NETTLE_CHECK_ARM_NEON): New macro.
* nettle.texinfo (Keyed hash functions): Document UMAC.
* umac.h (UMAC32_DIGEST_SIZE, UMAC64_DIGEST_SIZE)
(UMAC96_DIGEST_SIZE, UMAC128_DIGEST_SIZE): New constants.
(UMAC_DATA_SIZE): New name, for consistency with hash functions.
Updated all uses.
(UMAC_BLOCK_SIZE): ... old name.
2013-04-17 Niels Möller <nisse@lysator.liu.se>
* examples/nettle-benchmark.c (main): Benchmark salsa20r12.
* nettle-internal.c (nettle_salsa20r12): Cipher struct for
benchmarking only.
* nettle-internal.h (nettle_salsa20): Declare it.
* Makefile.in (eccdata): Depend on mini-gmp files. Drop -lgmp.
* eccdata.c: Use mini-gmp, to avoid gmp dependency and associated
configure tests for the *build* system. Replaced mpz_submul_ui by
mpz_mul_ui + mpz_sub, and gmp_printf and gmp_fprintf by calls to
mpz_out_str.
* mini-gmp.h, mini-gmp.c: New files, copied from gmp-5.1.1.
2013-04-16 Niels Möller <nisse@lysator.liu.se>
* umac-set-key.c (BE_SWAP32_N): Fixed dummy definition used for
big-endian systems.
* Makefile.in (TARGETS): Deleted eccdata, it should be build only
when public key support is enabled.
(clean-here): Exlicitly list it here.
* asm.m4 (m4_log2): New macro, similar to the one in gmp.
(ALIGN): Changed to take alignment in bytes. Updated all callers,
currently used only in x86 and x86_64 files.
* umac.h (umac32_ctx, umac64_ctx, umac96_ctx, umac128_ctx): Make
block count an uint64_t. Reorder some elements to put short values
together.
* umac-l2.c (_umac_l2, _umac_l2_final): Make count argument an uint64_t.
(_umac_l2): Deleted redundant memcpy.
(_umac_l2, _umac_l2_final): Store input buffer at end of the
poly64/poly128 state. Deleted l1_out from corresponding context
structs, and updated all callers.
* configure.ac: Changed version number to 2.7.
(LIBNETTLE_MINOR): Bumped library version, to 4.6.
(LIBHOGWEED_MINOR): And to 2.4.
* Makefile.in (distdir): Include files from armv7 subdirectory.
* x86_64/umac-nh-n.asm: New file, 3.5 time speedup.
* umac32.c (umac32_digest): Fix nonce caching.
* umac64.c (umac64_digest): Likewise.
* testsuite/umac-test.c (test_incr): New function.
(test_main): Test nonce increment.
* misc/umac/umac.py: UMAC reference implementation.
* misc/umac/rijndael.py: AES implementation used by umac.py.
* misc/umac/mkvectors: Script to generate UMAC test vectors.
* misc/umac/vectors.out: Generated test vectors.
* umac32.c (umac32_digest): Fix nonce increment, use INCREMENT
macro.
* umac64.c (umac64_digest): Likewise.
* umac96.c (umac96_digest): Likewise.
* umac128.c (umac128_digest): Likewise.
* macros.h (INCREMENT): Allow size == 1.
2013-04-15 Niels Möller <nisse@lysator.liu.se>
* x86_64/umac-nh.asm: New file. 4.4 time speedup.
* armv7/umac-nh-n.asm: New file. 2.0-2.3 time speedup.
* testsuite/umac-test.c (test_align): Fixed memory leak.
2013-04-12 Niels Möller <nisse@lysator.liu.se>
* armv7/umac-nh.asm: New file. 2.4 time speedup.
* armv7/machine.m4 (D0REG, D1REG): New macros.
* configure.ac (asm_replace_list): Added umac-nh.asm and
umac-nh-n.asm.
* testsuite/umac-test.c: Test different alignments for the
message.
2013-04-11 Niels Möller <nisse@lysator.liu.se>
* umac-nh-n.c (_umac_nh_n): Rewrote as a single pass over the
message data.
* examples/nettle-benchmark.c (time_umac): New function.
(main): Call it.
* umac-set-key.c (_umac_set_key): Drop byteswapping of l3_key2, it
can be xored directly to the pad in native byteorder.
* umac-l3.c (_umac_l3): Drop key_2 argument, let caller do that
xor. Updated all callers.
* umac32.c (umac32_digest): Adapt to l3 changes.
* umac64.c (umac64_digest): Likewise.
* umac96.c (umac96_digest): Likewise.
* umac128.c (umac128_digest): Likewise.
Initial implementation of umac.
* umac.h: New file.
* umac-nh.c: New file.
* umac-nh-n.c: New file.
* umac-poly64.c: New file.
* umac-poly128.c: New file.
* umac-l2.c: New file.
* umac-l3.c: New file.
* Makefile.in (nettle_SOURCES): Added umac source files.
(HEADERS): Added umac.h.
* testsuite/umac-test.c: New file.
* testsuite/Makefile.in (TS_NETTLE_SOURCES): Added umac-test.c.
* ecc-mul-a.c (ecc_mul_a): Avoid using mp_bitcnt_t, for
compatibility with older GMP versions.
* ecc-mul-g.c (ecc_mul_g): Likewise.
* eccdata.c (ecc_mul_binary): Likewise.
* sec-modinv.c (sec_modinv): Likewise.
* x86_64/sha3-permute.asm: Go via memory for moves between general
registers and xmm registers.
2013-04-06 Niels Möller <nisse@lysator.liu.se>
From Edgar E. Iglesias:
* sha3.c (_sha3_update): Fix condition for when the block buffer
is full.
2013-04-04 Niels Möller <nisse@lysator.liu.se>
* ecc-point.c (ecc_point_get): Allow NULL x or y, ignore
corresponding coordinate.
* nettle.texinfo (Elliptic curves): Document high-level ECDSA
support.
From Martin Storsjö. Fallback functions for older GMP releases.
* gmp-glue.c (mpn_copyd, mpn_copyi, mpn_zero): New functions.
* gmp-glue.h: Declare them.
(mpn_sqr): Fallback macro.
* gmp-glue.h (cnd_add_n, cnd_sub_n): Moved here, define in terms
of mpn_cnd_add_n and mpn_sub_n if available, otherwise in terms of
mpn_addmul_1 and mpn_submul_1. This seems to be an improvement for
subtraction, but more questionable for addition.
* ecc-internal.h: Include gmp-glue.h. Deleted corresponding
include in all files using ecc-internal.h.
(cnd_add_n, cnd_sub_n): Moved from here.
2013-04-03 Niels Möller <nisse@lysator.liu.se>
* ecc-point-mul-g.c (ecc_point_mul_g): New file and function.
* ecc-point-mul.c (ecc_point_mul): New file and function.
* ecc.h: Updated declarations and name mangling.
* Makefile.in (hogweed_SOURCES): Added ecc-point-mul.c and
ecc-point-mul-g.c.
* testsuite/salsa20-test.c (test_main): Tests for salsa20r12,
contributed by Nikos Mavrogiannopoulos.
2013-03-26 Niels Möller <nisse@lysator.liu.se>
* armv7/salsa20-core-internal.asm: New file. 45% speedup.
2013-03-25 Niels Möller <nisse@lysator.liu.se>
From Martin Storsjö:
* examples/timing.c: New file, extracted from nettle-benchmark.c.
* examples/timing.h: New file.
* examples/Makefile.in (SOURCES): Added timing.c.
(DISTFILES): Added timing.h.
(BENCH_OBJS, ECC_BENCH_OBJS, HOGWEED_BENCH_OBJS): Added timing.o.
* examples/nettle-benchmark.c: Use timing.h.
* examples/hogweed-benchmark.c: Likewise.
* examples/ecc-benchmark.c: Likewise.
From Nikos Mavrogiannopoulos:
* salsa20r12-crypt.c (salsa20r12_crypt): New file and function.
* salsa20.h (salsa20r12_crypt): Declare.
* Makefile.in (nettle_SOURCES): Added salsa20r12-crypt.c.
From Martin Storsjö:
* examples/hogweed-benchmark.c: Include local headers.
* testsuite/ecdsa-keygen-test.c: Likewise.
* x86_64/sha3-permute.asm: Workaround for Apple's assembler; write
movq instructions as movd.
* Makefile.in (hogweed_PURE_OBJS): Don't include OPT_ASM_SOURCES
twice.
2013-03-15 Niels Möller <nisse@lysator.liu.se>
* armv7/sha3-permute.asm: New file. 4.5 time speedup.
* armv7/machine.m4 (QREG): New macro.
2013-03-14 Niels Möller <nisse@lysator.liu.se>
* configure.ac (asm_replace_list): Added sha3-permute.asm,
revering 2012-12-30 change. 34% speedup on intel i5, from 2190
cycles for the C implementation down to 1630.
* armv7/sha512-compress.asm: Optimized. Keep expanded data in
registers, exploit parallelism. Another 70% speedup.
* testsuite/sha512-test.c (test_main): Additional test vectors,
including some longer than 128 bytes.
2013-03-13 Niels Möller <nisse@lysator.liu.se>
* armv7/sha512-compress.asm: New file, using neon instructions.
2.3 time speedup.
* configure.ac (asm_replace_list): Added sha512-compress.asm.
* x86_64/machine.m4 (OFFSET64): New macro.
* x86_64/sha512-compress.asm: New file, 20% speedup.
* sha512-compress.c (ROUND): Eliminated a temporary, analogous to
sha256 change below.
* x86_64/sha256-compress.asm: New file, 16% speedup (benchmarked
on intel i5).
2013-03-11 Niels Möller <nisse@lysator.liu.se>
* armv7/sha256-compress.asm: New file, 25% speedup.
* configure.ac (asm_replace_list): Added sha256-compress.asm.
* sha256-compress.c (ROUND): Eliminated a temporary.
* armv7/sha1-compress.asm: New file, 9% speedup.
* testsuite/testutils.c (test_hash): Test different alignments for
the hash input.
2013-03-08 Niels Möller <nisse@lysator.liu.se>
* armv7/aes-decrypt-internal.asm: New file, 15% speedup.
* armv7/aes-encrypt-internal.asm: New file, 25% speedup.
* armv7/aes.m4: New file.
2013-03-07 Niels Möller <nisse@lysator.liu.se>
* gmp-glue.c (mpz_limbs_cmp): Don't use PTR and SIZ macros.
* Makefile.in (aesdata, desdata, twofishdata, shadata, gcmdata)
(eccdata): Arrange for compiling these programs for running on the
build system, also when cross compiling everything else.
* config.make.in (CC_FOR_BUILD, EXEEXT_FOR_BUILD): New variables.
* configure.ac: Use GMP_PROG_CC_FOR_BUILD and
GMP_PROG_EXEEXT_FOR_BUILD.
* aclocal.m4 (GMP_PROG_CC_FOR_BUILD, GMP_PROG_CC_FOR_BUILD_WORKS)
(GMP_PROG_EXEEXT_FOR_BUILD): New macros, based on GMP's.
* aesdata.c: Deleted includes of config.h and nettle-types.h. Use
unsigned char and unsigned long instead of stdint.h types.
* desdata.c: Deleted includes of config.h and desCode.h.
(main): Return 1 on invalid argument. Don't use ROR macro. Use
unsigned long instead of uint32_t, and make it work if unsigned
long is larger than 32 bits.
* gcmdata.c: Deleted include of config.h and use UNUSED macro.
* shadata.c: Likewise.
* twofishdata.c: Deleted include of nettle-types.h. Use unsigned
char instead of stdint.h types.
* x86_64/ecc-521-modp.asm: New file. 2.4 time speedup.
2013-03-06 Niels Möller <nisse@lysator.liu.se>
* x86_64/ecc-384-modp.asm: New file, 3 time speedup.
* x86_64/ecc-256-redc.asm: New file, 2.5 time speedup.
* x86_64/ecc-224-modp.asm: New file, 5 time speedup over C
version.
2013-03-05 Niels Möller <nisse@lysator.liu.se>
* configure.ac (asm_optional_list): Added ecc-521-modp.asm.
* ecc-521.c: Check HAVE_NATIVE_ecc_521_modp, and use native
version if available.
* armv7/ecc-521-modp.asm: New file, 2 time speedup over C version.
2013-03-04 Niels Möller <nisse@lysator.liu.se>
* configure.ac (asm_optional_list): Added ecc-384-modp.asm. Deleted
bogus reference to $asm_search_list.
* ecc-384.c: Check HAVE_NATIVE_ecc_384_modp, and use native
version if available.
* armv7/ecc-384-modp.asm: New file, 3 time speedup over C version.
2013-03-03 Niels Möller <nisse@lysator.liu.se>
* ecc-256.c: Fixed definition of USE_REDC.
2013-03-01 Niels Möller <nisse@lysator.liu.se>
* ecc-256.c: Check HAVE_NATIVE_ecc_256_redc, and use native
version if available.
* armv7/ecc-256-redc.asm: New file, 4 time speedup over C version.
* testsuite/ecc-redc-test.c: Increased test count.
* ecc-224.c: Check HAVE_NATIVE_ecc_224_modp, and use native
version if available.
* armv7/ecc-224-modp.asm: New file, 4.5 time speedup over C
version.
* configure.ac (asm_optional_list): Added ecc-224-modp.asm.
(OPT_ASM_SOURCES): Fixed assignment.
2013-02-28 Niels Möller <nisse@lysator.liu.se>
* x86_64/ecc-192-modp.asm: Reorganized to reduce number of
additions. Use setc instruction.
* examples/Makefile.in: Let $(HOGWEED_TARGETS) depend on
../libhogweed.a.
* armv7/ecc-192-modp.asm: New file. 2.5 time speedup over C
version.
2013-02-27 Niels Möller <nisse@lysator.liu.se>
* ecc-192.c: Check HAVE_NATIVE_ecc_192_modp, and use native
version if available.
(ecc_192_modp): Fixed carry handling bug in 32-bit version.
* x86_64/ecc-192-modp.asm: New file. 3.8 times speedup over C
version.
* configure.ac (OPT_ASM_SOURCES): New substituted variable.
(asm_replace_list, asm_optional_list): New variables. For files in
asm_optional_list, also add them to OPT_ASM_SOURCES and define
appropriate HAVE_NATIVE_* symbols found.
* Makefile.in (OPT_ASM_SOURCES): New variable. Used for setting
hogweed_OBJS and hogweed_PURE_OBJS.
* testsuite/ecc-mod-test.c: Increased test count.
* ecc-384.c (ecc_384_modp): Fixed typo which broke carry handling
in the 64-bit version.
* examples/ecc-benchmark.c (bench_add_jjj): Typo fix, benchmark
the right function.
* gmp-glue.h: Check if GMP provides mpz_limbs_read (expected in
next release).
* gmp-glue.c: Use GMP's mpz_limbs_read and friends if available.
Renamed all functions for consistency with GMP. Updated all
callers.
2013-02-20 Niels Möller <nisse@lysator.liu.se>
* examples/Makefile.in (HOGWEED_TARGETS): Added
hogweed-benchmark$(EXEEXT).
(SOURCES): Added hogweed-benchmark.c.
(hogweed-benchmark$(EXEEXT)): New target.
* examples/hogweed-benchmark.c: New file.
* ecdsa-keygen.c (ecdsa_generate_keypair): New file and function.
* Makefile.in (hogweed_SOURCES): Added ecdsa-keygen.c.
* testsuite/ecdsa-keygen-test.c: New testcase.
* testsuite/Makefile.in (TS_HOGWEED_SOURCES): Added
ecdsa-keygen-test.c.
* nettle-internal.h (TMP_ALLOC): Added missing parentheses.
2013-02-18 Niels Möller <nisse@lysator.liu.se>
* testsuite/ecdsa-verify-test.c: New testcase.
* testsuite/ecdsa-sign-test.c: New testcase.
* testsuite/Makefile.in (TS_HOGWEED_SOURCES): Added
ecdsa-sign-test.c and ecdsa-verify-test.c.
* testsuite/testutils.h: Include ecdsa.h.
(SHEX): Deleted const cast.
* ecc-point.c: New file, struct ecc_point abstraction.
* ecc-scalar.c: New file, struct ecc_scalar abstraction.
* ecc-random.c (ecc_modq_random, ecc_scalar_random): New file, new
functions.
* ecc-hash.c (ecc_hash): New file and function.
* ecc-ecdsa-sign.c: New file, low-level signing interface.
* ecc-ecdsa-verify.c: New file, low-level ecdsa verify.
* ecdsa-sign.c: (ecdsa_sign): New file and function.
* ecdsa-verify.c (ecdsa_verify): New file and function.
* ecdsa.h: New header file.
* ecc.h: Declare ecc_point and ecc_scalar functions.
* ecc-internal.h: Added declarations.
* Makefile.in (hogweed_SOURCES): Added new source files.
(HEADERS): Added ecdsa.h.
* gmp-glue.c (_mpz_set_mpn): New convenience function.
(_mpn_set_base256): New function.
(_gmp_alloc_limbs): New function.
(_gmp_free_limbs): New function.
* gmp-glue.h: Corresponding declarations. Include nettle-stdinh.h.
* examples/Makefile.in (HOGWEED_TARGETS): Renamed, was
RSA_TARGETS. Added ecc-benchmark$(EXEEXT).
(SOURCES): Added ecc-benchmark.c.
(ecc-benchmark$(EXEEXT)): New target.
* examples/ecc-benchmark.c: New file, benchmarking ecc primitives.
2013-02-15 Niels Möller <nisse@lysator.liu.se>
Integrate ecc_mul_a.
* ecc-a-to-j.c: New file.
* ecc-add-jjj.c: New file.
* ecc-mul-a.c: New file.
* Makefile.in (hogweed_SOURCES): Added new files.
* testsuite/ecc-mul-a-test.c: New file.
* testsuite/Makefile.in (TS_HOGWEED_SOURCES): Added
ecc-mul-a-test.c.
* testsuite/testutils.c: Removed redundant includes.
(die): New function.
Integrate ecc_mul_g.
* ecc.h: New file.
* ecc-j-to-a.c: New file.
* ecc-size.c: New file.
* ecc-add-jja.c: New file.
* ecc-dup-jj.c: New file.
* ecc-mul-g.c: New file.
* sec-tabselect.c: New file.
* Makefile.in (hogweed_SOURCES): Added new files.
(HEADERS): Added ecc.h
* testsuite/ecc-mul-g-test.c: New file.
* testsuite/Makefile.in (TS_HOGWEED_SOURCES): Added
ecc-mul-g-test.c.
* testsuite/testutils.c (xalloc_limbs): New function.
(test_mpn): New function.
(test_ecc_point): New function.
(test_ecc_mul_a): New function.
(test_ecc_mul_j): New function.
* testsuite/testutils.h: Corresponding declarations.
Integrate ECC internals.
* ecc-curve.h: New file.
* ecc-internal.h: New file.
* cnd-copy.c: New file.
* ecc-192.c: New file.
* ecc-224.c: New file.
* ecc-256.c: New file.
* ecc-384.c: New file.
* ecc-521.c: New file.
* ecc-generic-modp.c: New file.
* ecc-generic-modq.c: New file.
* ecc-generic-redc.c: New file.
* ecc-mod.c: New file.
* ecc-modp.c: New file.
* ecc-modq.c: New file.
* sec-add-1.c: New file.
* sec-modinv.c: New file.
* sec-sub-1.c: New file.
* Makefile.in (hogweed_SOURCES): Added new files.
(HEADERS): Added ecc-curve.h.
(DISTFILES): Added ecc-internal.h.
* testsuite/ecc-mod-test.c: New file.
* testsuite/ecc-modinv-test.c: New file.
* testsuite/ecc-redc-test.c: New file.
* testsuite/testutils.c (ecc_curves): New constant array.
* testsuite/testutils.h: Include ecc-related headers. Declare
ecc_curves array.
* testsuite/Makefile.in (TS_HOGWEED_SOURCES): Added ecc-mod-test.c
ecc-modinv-test.c ecc-redc-test.c.
* gmp-glue.c: New file, mpn <-> mpz conversions.
* gmp-glue.h: New file.
* Makefile.in: Added to hogweed_SOURCES and DISTFILES, respectively.
* eccdata.c: New program, for generating ECC-related tables.
* Makefile.in (ecc-192.h, ecc-224.h, ecc-256.h, ecc-384.h)
(ecc-512.h): New generated files.
2013-02-19 Niels Möller <nisse@lysator.liu.se>
* armv7/memxor.asm (memxor): Software pipelining for the aligned
case. Runs at 6 cycles (0.5 cycles per byte). Delayed push of
registers until we know how many registers we need.
(memxor3): Use 3-way unrolling also for aligned memxor3.
Runs at 8 cycles (0.67 cycles per byte)
2013-02-14 Niels Möller <nisse@lysator.liu.se>
* configure.ac: Find GMP's GMP_NUMB_BITS. Substitute in Makefile.
* config.make.in (GMP_NUMB_BITS): New variable.
* examples/rsa-keygen.c (uint_arg): New function.
(main): New options -s and -e, to specify key size and public
exponent. Increased default key size to 2048.
2013-02-12 Niels Möller <nisse@lysator.liu.se>
* armv7/memxor.asm (memxor): Optimized aligned case, using 3-way
unrolling.
2013-02-06 Niels Möller <nisse@lysator.liu.se>
* armv7/memxor.asm (memxor, memxor3): Optimized aligned case, now
runs at 0.75 cycles/byte.
* armv7/README: New file.
* armv7/machine.m4: New (empty) file.
* armv7/memxor.asm: Initial assembly implementation.
* config.m4.in: Substitute ASM_TYPE_PROGBITS as TYPE_PROGBITS.
* config.make.in: Added .s to the suffix list.
* Makefile.in (.asm.s): Use a separate make target for .asm
preprocessing. Include asm.d, which the corresponding
dependencies.
* configure.ac (asm_file_list): Collect assembly files into this
variable.
(asm.d): Make config.status write dependencies for .s files into
asm.d.
(ASM_ALIGN_LOG): Set to "no" when appropriate.
(ASM_TYPE_FUNCTION): Default to "@function".
(ASM_TYPE_PROGBITS): New substituted variable, set in the same way
as ASM_TYPE_FUNCTION.
(ASM_MARK_NOEXEC_STACK): Use TYPE_PROGBITS.
(asm_path): Set up asm_path for armv7.
* asm.m4: Use changecom to disable m4 quoting. Use divert to
suppress output.
2013-02-05 Niels Möller <nisse@lysator.liu.se>
* testsuite/rsa-keygen-test.c (test_main): Updated expected
signatures, after the nettle_mpz_random change below.
* testsuite/dsa-test.c (test_main): Likewise. Also fixed the
dsa256 test to actually use the expected signature.
2013-01-31 Niels Möller <nisse@lysator.liu.se>
* bignum-random.c (nettle_mpz_random): Increased number of extra
bits to 64, following FIPS 186-3.
2013-01-16 Niels Möller <nisse@lysator.liu.se>
* Released nettle-2.6.
2013-01-12 Niels Möller <nisse@lysator.liu.se>
* configure.ac: Use AC_LANG_SOURCE.
2013-01-02 Niels Möller <nisse@lysator.liu.se>
* configure.ac (LIBNETTLE_MINOR): Bumped library version, to 4.5.
(LIBHOGWEED_MINOR): And to 2.3.
* examples/Makefile.in: Explicit rules for building objects in
parent directory.
* tools/Makefile.in: Likewise.
* testsuite/Makefile.in: Likewise.
2013-01-01 Niels Möller <nisse@lysator.liu.se>
* nettle.texinfo (Recommended hash functions): Document additional
sha3 functions.
* examples/nettle-benchmark.c (main): Benchmark additional sha3
functions.
2012-12-30 Niels Möller <nisse@lysator.liu.se>
* sha3-224.c, sha3-224-meta.c: New files.
* sha3-384.c, sha3-384-meta.c: New files.
* sha3-512.c, sha3-512-meta.c: New files.
* sha3.h: Prototypes for sha3 with sizes 224, 384 and 512.
* nettle-meta.h: Declare nettle_sha3_224, nettle_sha3_384 and
nettle_sha3_512.
* Makefile.in (nettle_SOURCES): Added new sha3 files.
* testsuite/sha3-224-test.c: New file.
* testsuite/sha3-384-test.c: New file.
* testsuite/sha3-512-test.c: New file.
* testsuite/Makefile.in (TS_NETTLE_SOURCES): Added new sha3 test files.
* configure.ac: Disabled use of sha3-permute.asm.
2012-12-20 Niels Möller <nisse@lysator.liu.se>
From Tim Rühsen:
* testsuite/des-compat-test.c (pt): Use proper prototype, use
const.
* testsuite/testutils.c (test_dsa_key): Deleted spurious
semicolon.
2012-12-15 Niels Möller <nisse@lysator.liu.se>
Based on a patch from Alon Bar-Lev:
* Makefile.in (LIBTARGETS, SHLIBTARGET): Define as empty if static
or shared libraries, respectively, are disabled.
(TARGETS): Deleted @IF_SHARED@ conditional, now in the definition
of SHLIBTARGET.
From Alon Bar-Lev:
* configure.ac: Check for ar program. New option --disable-static.
* config.make.in (AR): Use configured value.
2012-12-13 Niels Möller <nisse@lysator.liu.se>
* x86_64/sha3-permute.asm: Rewrote, to keep all state in
registers. 2400 cycles on x86_64, only slightly faster than the
current C code.
2012-12-09 Niels Möller <nisse@lysator.liu.se>
* sha3-permute.c (sha3_permute): Rewrote to do permutation in
place. 80% speedup on x86_64, 2500 cycles.
2012-12-04 Niels Möller <nisse@lysator.liu.se>
* ctr.c (ctr_crypt): Fix bug reported by Tim Kosse. Don't
increment the counter when length is zero (was broken for the
in-place case).
* testsuite/ctr-test.c (test_main): Added test with zero-length
data.
* testsuite/testutils.c (test_cipher_ctr): Check the ctr value
after encrypt and decrypt.
2012-12-03 Niels Möller <nisse@lysator.liu.se>
* sha3-permute.c (sha3_permute): Optimized, to reduce number of
passes over the data. 20% speedup on x86_64, 4700 cycles.
* configure.ac: Added sha3-permute.asm.
* x86_64/sha3-permute.asm: New file. 30% speedup over current C
code, 4300 cycles.
* nettle.texinfo (Hash functions): Split into several sections,
separating recommended hash functions and legacy hash functions.
Document sha3-256.
2012-12-02 Niels Möller <nisse@lysator.liu.se>
Split sha.h into new files sha1.h and sha2.h. Replaced all
internal usage of sha.h in all files.
* sha.h: Kept for compatibility, just includes both new files.
* sha1.h: New file.
* sha2.h: New file.
* Makefile.in (HEADERS): Added sha1.h and sha2.h.
2012-11-28 Niels Möller <nisse@lysator.liu.se>
From Fredrik Thulin:
* testsuite/pbkdf2-test.c (test_main): Add PBKDF2-HMAC-SHA512 test
cases.
2012-11-15 Niels Möller <nisse@lysator.liu.se>
* sha3-permute.c (sha3_permute): Use ULL suffix on round
constants. Avoid passing shift count 0 to ROTL64.
* sha3.c (sha3_absorb): Fixed big-endian code. Need macros.h.
* macros.h (LE_READ_UINT64): New macro.
2012-11-13 Niels Möller <nisse@lysator.liu.se>
* sha3-permute.c (sha3_permute): Micro optimizations. Partial
unrolling. Use lookup table for the permutation. On an x86_64,
execution time reduced from appr. 13000 cycles to appr. 6000.
* examples/nettle-benchmark.c (TIME_CYCLES): New macro.
(bench_sha1_compress, bench_salsa20_core): Use it.
(bench_sha3_permute): New function.
(main): Call bench_sha3_permute.
2012-11-12 Niels Möller <nisse@lysator.liu.se>
* examples/nettle-benchmark.c (main): Benchmark sha3_256.
* sha3-permute.c: New file. Permutation function for sha3, aka
Keccak.
* sha3.h: New header file.
* sha3.c: New file, absorption and padding for sha3.
* sha3-256.c: New file.
* sha3-256-meta.c: New file.
* nettle-meta.h (nettle_sha3_256): Declare.
* Makefile.in (nettle_SOURCES): Added sha3 files.
(HEADERS): Added sha3.h.
* testsuite/sha3.awk: New file. Script to extract test vectors.
* testsuite/sha3-256-test.c: New file.
* testsuite/sha3-permute-test.c: New file.
* testsuite/Makefile.in (TS_NETTLE_SOURCES): Added
sha3-permute-test.c and sha3-256-test.c.
(DISTFILES): Added sha3.awk.
* testsuite/.test-rules.make: Added sha3 targets.
* macros.h (LE_WRITE_UINT64): New macro.
* write-le64.c (_nettle_write_le64): New file and function.
* nettle-write.h (_nettle_write_le64): Declare. Also deleted
declaration of non-existent _nettle_write_be64.
* Makefile.in (nettle_SOURCES): Added write-le64.c.
* macros.h (ROTL64): New macro, moved from...
* sha512-compress.c (ROTL64): ... old location, deleted.
* serpent-internal.h [HAVE_NATIVE_64_BIT] (DROTL32): Renamed from...
(ROTL64): ... old name.
(DRSHIFT32): Renamed from ...
(RSHIFT64): ... old name.
* serpent-encrypt.c (LINEAR_TRANSFORMATION64): Updated for above
renames.
* serpent-decrypt.c (LINEAR_TRANSFORMATION64_INVERSE): Likewise.
2012-11-11 Niels Möller <nisse@lysator.liu.se>
From Nikos Mavrogiannopoulos:
* nettle.texinfo (Hash functions): Added documentation for
gosthash94.
* examples/nettle-benchmark.c (main): Benchmark gosthash94.
2012-11-10 Niels Möller <nisse@lysator.liu.se>
* nettle.texinfo (nettle_hashes, nettle_ciphers): Use deftypevr,
not deftypevrx. Spotted by Nikos Mavrogiannopoulos.
2012-11-08 Niels Möller <nisse@lysator.liu.se>
Gost hash function, ported from Aleksey Kravchenko's rhash library
by Nikos Mavrogiannopoulos.
* gosthash94.c: New file.
* gosthash94.h: New file.
* gosthash94-meta.c: New file.
* nettle-meta.h (nettle_gosthash94): Declare.
* Makefile.in (nettle_SOURCES): Added gosthash94.c and
gosthash94-meta.c.
(HEADERS): Added gosthash94.h.
* testsuite/gosthash94-test.c: New file.
* testsuite/Makefile.in (TS_NETTLE_SOURCES): Added
gosthash94-test.c.
2012-10-29 Niels Möller <nisse@lysator.liu.se>
From Martin Storsjö:
* configure.ac (dummy-dep-files): Avoid non-posix \|-operator in
sed regexp.
2012-10-29 Niels Möller <nisse@lysator.liu.se>
* x86_64/salsa20-core-internal.asm: New file.
* configure.ac: Added salsa20-core-internal.asm.
* examples/nettle-benchmark.c (bench_salsa20_core): New function.
2012-10-27 Niels Möller <nisse@lysator.liu.se>
* testsuite/Makefile.in (TS_SOURCES, CXX_SOURCES): Include sources
unconditionally.
(TS_CXX): Moved @IF_CXX@ conditional here.
(DISTFILES): Use $(SOURCES), which now includes all C source
files. testutils.c was lost in a the 2012-09-20 change.
* x86_64/salsa20-crypt.asm: Include x86_64/salsa20.m4.
Make all exits go via .Lend and W64_EXIT.
* x86_64/salsa20.m4: New file, extracted from
x86_64/salsa20-crypt.asm.
2012-10-26 Niels Möller <nisse@lysator.liu.se>
* configure.ac (LIBNETTLE_LINK, LIBHOGWEED_LIBS): Add $(CFLAGS) on
the link command line. Reported by Dennis Clarke.
2012-10-03 Niels Möller <nisse@lysator.liu.se>
From: Nikos Mavrogiannopoulos:
* testsuite/testutils.c (test_hash): On failure, print the
expected and returned hash values.
2012-09-23 Niels Möller <nisse@lysator.liu.se>
* Makefile.in (nettle_SOURCES): Added salsa20-core-internal.c.
* salsa20-core-internal.c (_salsa20_core): New file and function,
extracted from salsa20_crypt.
* salsa20.h (_salsa20_core): Declare it.
* salsa20-crypt.c (salsa20_crypt): Use _salsa20_core.
2012-09-21 Niels Möller <nisse@lysator.liu.se>
* pbkdf2.c (pbkdf2): assert that iterations > 0. Reorganized
loops.
* nettle.texinfo (Cipher functions): Stress that the salsa20 hash
function is not suitable as a general hash function.
2012-09-20 Simon Josefsson <simon@josefsson.org>
* pbkdf2-hmac-sha1.c, pbkdf2-hmac-sha256.c: New files.
* pbkdf2.h (pbkdf2_hmac_sha1, pbkdf2_hmac_sha256): New prototypes.
* Makefile.in (nettle_SOURCES): Add pbkdf2-hmac-sha1.c and
pbkdf2-hmac-sha256.c.
* nettle.texinfo (Key derivation functions): Improve.
* testsuite/pbkdf2-test.c (test_main): Test new functions.
2012-09-20 Niels Möller <nisse@lysator.liu.se>
* pbkdf2.c (pbkdf2): Reordered arguments, for consistency.
* pbkdf2.h (PBKDF2): Analogous reordering.
* testsuite/pbkdf2-test.c: Adapted to new argument order. Also use
LDATA for the salt.
* nettle.texinfo (Key derivation functions): Updated documented
pbkdf2 prototype.
* testsuite/Makefile.in (VALGRIND): New variable, to make valgrind
checking easier.
* configure.ac: New substitution IF_CXX, replacing CXX_TESTS.
(dummy-dep-files): Handle .cxx files.
* testsuite/Makefile.in: Use IF_CXX. Include dependency file for
cxx-test.o.
2012-09-19 Niels Möller <nisse@lysator.liu.se>
From Tim Rühsen:
* examples/rsa-encrypt.c (main): Added missing mpz_clear.
* examples/rsa-keygen.c (main): Added missing deallocation.
* testsuite/meta-hash-test.c (test_main): Validate
NETTLE_MAX_HASH_DIGEST_SIZE.
* pbkdf2.h (PBKDF2): New macro.
* testsuite/pbkdf2-test.c: Use it.
2012-09-12 Simon Josefsson <simon@josefsson.org>
* NEWS: Mention addition of PBKDF2.
* pbkdf2.c (pbkdf2): New file and function.
* pbkdf2.h: Declare it.
* Makefile.in (nettle_SOURCES): Add pbkdf2.c.
(HEADERS): Add pbkdf2.h.
* nettle.texinfo (Key derivation functions): New section.
* testsuite/pbkdf2-test.c: New test case.
* testsuite/Makefile.in (TS_NETTLE_SOURCES): Add pbkdf2-test.c.
* testsuite/.test-rules.make (pbkdf2-test): New target.
2012-09-16 Niels Möller <nisse@lysator.liu.se>
* testsuite/: Overhaul of testsuite, affecting almost all files.
+ Use struct tstring for allocated strings, and deallocate before
exit.
+ Changed most test functions to take struct tstring as arguments.
+ Made all test_main return on success.
* testsuite/testutils.h (struct tstring): New struct type.
(H2, HL, MEMEQH, SUCCESS): Deleted macros.
(SHEX, SDATA): New macros.
(H): Redefined to track storage.
* testsuite/testutils.c (tstring_alloc): New function.
(tstring_clear): New function.
(tstring_data): New function.
(tstring_hex): New function.
(tstring_print_hex): New function.
(decode_hex_length): Made static.
(decode_hex): Made static. No return value, abort on error.
(main): Expect test_main to return, and call tstring_clear before
exit.
(test_dsa_key): Added missing mpz_clear.
(test_mac): Deleted unused function.
* testsuite/rsa2sexp-test.c (test_main): Added missing
nettle_buffer_clear.
* testsuite/yarrow-test.c (open_file): Don't leak filename.
(test_main): fclose input file properly.
* testsuite/sexp-format-test.c (test_main): Added missing calls to
nettle_buffer_clear and mpz_clear.
* testsuite/serpent-test.c (tstring_hex_reverse): New function,
replacing...
(decode_hex_reverse): ... deleted function.
(RHEX): New macro, replacing...
(RH, RHL): ... deleted macros.
* testsuite/rsa2sexp-test.c (test_main): Added missing
nettle_buffer_clear.
* testsuite/random-prime-test.c (test_main): Added missing
mpz_clear.
* realloc.c (nettle_realloc): Only call libc realloc if length >
0, otherwise call free. Fixes a small memory leak.
(nettle_xrealloc): Likewise.
* run-tests (test_program): Don't quote $EMULATOR; allow it to
expand to program and arguments (e.g., valgrind).
* tools/pkcs1-conv.c (convert_public_key): Added missing calls to
dsa_public_key_clear and rsa_public_key_clear.
(main): Added missing nettle_buffer_clear.
2012-09-10 Niels Möller <nisse@lysator.liu.se>
* examples/eratosthenes.c (main): Explicitly deallocate storage
before exit.
* examples/io.c (read_file): Explicitly treat an empty file as an
error. Rearrange loop, check for short fread return value.
* desdata.c: Don't declare printf, include <stdio.h> instead. Also
deleted casts of printf return value.
From Tim Rühsen:
* examples/nettle-benchmark.c (die): Use PRINTF_STYLE attribute.
* pgp-encode.c (pgp_put_rsa_sha1_signature): Deleted unused variable.
* rsa2openpgp.c (rsa_keypair_to_openpgp): Likewise.
* examples/base16enc.c (main): Deleted useless allocations.
2012-09-07 Niels Möller <nisse@lysator.liu.se>
* examples/nettle-benchmark.c (die): Add NORETURN attribute. Patch
from Tim Rühsen.
* tools/misc.h (die, werror): Use PRINTF_STYLE and NORETURN macros
for attributes. Patch from Tim Rühsen.
* examples/io.h (werror): Use PRINTF_STYLE macro.
2012-08-22 Niels Möller <nisse@lysator.liu.se>
From Sam Thursfield <sam.thursfield@codethink.co.uk>:
* configure.ac: Make documentation optional, to avoid requiring
TeX. New option --disable-documentation, and Makefile substitution
IF_DOCUMENTATION.
* Makefile.in: Use IF_DOCUMENTATION.
2012-07-12 Niels Möller <nisse@lysator.liu.se>
* asm.m4 (ALIGN): Use << operator rather than **, with m4 eval.
The latter is not supported by BSD m4.
2012-07-07 Niels Möller <nisse@lysator.liu.se>
Copyright headers: Updated FSF address. Patch from David Woodhouse.
* examples/Makefile.in (BENCH_LIBS): Added -lm, needed for the
ldexp function. Reported by Anthony G. Basile.
* configure.ac: Changed version number to 2.6.
* Released nettle-2.5.
2012-07-05 Niels Möller <nisse@lysator.liu.se>
* x86_64/salsa20-crypt.asm (salsa20_crypt): Write the 64-bit movq
instructions as "movd", since that makes the osx assembler
happier. Assembles to the same machine code on gnu/linux.
2012-07-03 Niels Möller <nisse@lysator.liu.se>
* aclocal.m4 (LSH_FUNC_ALLOCA): In the config.h boilerplate,
include malloc.h if it exists, also when compiling with gcc.
Needed for cross-compiling with --host=i586-mingw32msvc.
* examples/base16dec.c: Don't #include files using <nettle/...>,
we don't want to pick up installed versions. On windows, include
<fcntl.h>, needed for _setmode.
* examples/base16enc.c: Likewise.
* examples/base64dec.c: Likewise.
* examples/base64enc.c: Likewise
* nettle.texinfo (Cipher functions): Document Salsa20.
2012-06-25 Niels Möller <nisse@lysator.liu.se>
* pkcs1.c (_pkcs1_signature_prefix): Renamed function, adding a
leading underscore. Updated all callers.
* bignum-next-prime.c (nettle_next_prime): Consistently use the
type nettle_random_func * (rather then just nettle_random_func)
when passing the function pointer as argument. Similar change for
nettle_progress_func. Should have been done for the 2.0 release,
but a few arguments were overlooked.
* bignum-random-prime.c (_nettle_generate_pocklington_prime)
(nettle_random_prime): Likewise.
* bignum-random.c (nettle_mpz_random_size, nettle_mpz_random):
Likewise.
* dsa-keygen.c (dsa_generate_keypair): Likewise.
* dsa-sha1-sign.c (dsa_sha1_sign_digest, dsa_sha1_sign): Likewise.
* dsa-sha256-sign.c (dsa_sha256_sign_digest, dsa_sha256_sign):
Likewise.
* dsa-sign.c (_dsa_sign): Likewise.
* pkcs1-encrypt.c (pkcs1_encrypt): Likewise.
* rsa-blind.c (_rsa_blind): Likewise.
* rsa-decrypt-tr.c (rsa_decrypt_tr): Likewise.
* rsa-encrypt.c (rsa_encrypt): Likewise.
* rsa-keygen.c (rsa_generate_keypair): Likewise.
* rsa-pkcs1-sign-tr.c (rsa_pkcs1_sign_tr): Likewise.
* cbc.c (cbc_encrypt, cbc_decrypt): Similarly, use the type
nettle_crypt_func * rather than just nettle_crypt_func.
* ctr.c (ctr_crypt): Likewise.
* gcm.c (gcm_set_key): Likewise.
* testsuite/des-compat-test.c (test_main): Disable declarations of
disabled functions and variables, to avoid warnings. No verbose
output unless verbose flag is set.
2012-06-09 Niels Möller <nisse@lysator.liu.se>
* examples/Makefile.in (SOURCES): Added base16dec.c, forgotten
earlier.
General pkcs1 signatures, with a "DigestInfo" input. Suggested by
Nikos Mavrogiannopoulos.
* Makefile.in (hogweed_SOURCES): Added pkcs1-rsa-digest.c,
rsa-pkcs1-sign.c, rsa-pkcs1-sign-tr.c, and rsa-pkcs1-verify.c.
* pkcs1-rsa-digest.c (pkcs1_rsa_digest_encode): New file and
function.
* pkcs1.h: Declare it.
* rsa-pkcs1-verify.c (rsa_pkcs1_verify): New file and function.
* rsa-pkcs1-sign.c (rsa_pkcs1_sign): New file and function.
* rsa-pkcs1-sign-tr.c (rsa_pkcs1_sign_tr): New file and function,
contributed by Nikos Mavrogiannopoulos.
* rsa.h: Declare new functions.
* rsa.h (_rsa_blind, _rsa_unblind): Declare functions.
* rsa-blind.c (_rsa_blind, _rsa_unblind): Functions moved to a
separate file, renamed and made non-static. Moved from...
* rsa-decrypt-tr.c: ... here.
2012-06-03 Niels Möller <nisse@lysator.liu.se>
* testsuite/pkcs1-test.c (test_main): Include leading zero in
expected result.
* pkcs1.c (pkcs1_signature_prefix): Return pointer to where the
digest should be written. Let the size input be the key size in
octets, rather then key size - 1.
* pkcs1-rsa-*.c: Updated for above.
* rsa-*-sign.c, rsa-*-verify.c: Pass key->size, not key->size - 1.
2012-05-18 Niels Möller <nisse@lysator.liu.se>
* pkcs1-encrypt.c (pkcs1_encrypt): New file and function.
* rsa-encrypt.c (rsa_encrypt): Use pkcs1_encrypt.
2012-05-09 Niels Möller <nisse@lysator.liu.se>
* rsa-decrypt-tr.c (rsa_decrypt_tr): Added missing mpz_clear,
spotted by Nikos Mavrogiannopoulos.
2012-05-07 Niels Möller <nisse@lysator.liu.se>
* nettle-types.h (_STDINT_HAVE_INT_FAST32_T): Define here, to
force nettle-stdint.h to not try to define the int_fast*_t types.
Avoids compilation problems with gnutls on SunOS-5.8, where the
definitions here collide with gnulib's.
2012-04-23 Niels Möller <nisse@lysator.liu.se>
* nettle-internal.h (NETTLE_MAX_BIGNUM_SIZE): New constant. Based
on NETTLE_MAX_BIGNUM_BITS, rounded upwards. Replaced all uses of
NETTLE_MAX_BIGNUM_BITS.
2012-04-19 Niels Möller <nisse@lysator.liu.se>
* list-obj-sizes.awk: Use decimal rather than hexadecimal output.
(hex2int): Use local variables.
2012-04-18 Niels Möller <nisse@lysator.liu.se>
* x86_64/salsa20-crypt.asm: New file.
2012-04-17 Niels Möller <nisse@lysator.liu.se>
* testsuite/salsa20-test.c (test_salsa20_stream): Check that
salsa20_crypt doesn't write beyond the given destination area.
(test_salsa20): Likewise.
* salsa20-crypt.c: Renamed file, from...
* salsa20.c: ... old name.
* x86_64/machine.m4 (WREG): New macro.
* salsa20.c (salsa20_hash): Deleted function, inlined into
salsa20_crypt.
(salsa20_set_key, salsa20_set_iv): Moved, to...
* salsa20-set-key.c: ...new file.
2012-04-15 Niels Möller <nisse@lysator.liu.se>
* testsuite/salsa20-test.c (test_salsa20_stream): New function.
(test_main): Tests for encrypting more than one block at a time.
2012-04-14 Niels Möller <nisse@lysator.liu.se>
* examples/io.c (write_file): Use write_string.
* examples/Makefile.in (base64enc): New targets. Also
added missing io.o dependency to several other targets.
(base64dec, base16enc, base16dec): Likewise.
* examples/base64enc.c: New file, based on example code
contributed by Jeronimo Pellegrini.
* examples/base64dec.c: Likewise.
* examples/base16enc.c: Likewise.
* examples/base16dec.c: Likewise.
* examples/rsa-encrypt.c (process_file): Reorganized fread loop.
(usage): New function.
(main): Implemented --help option.
* examples/rsa-decrypt.c (process_file): Improved error message
for too short input file.
* aes-set-decrypt-key.c (gf2_log, gf2_exp): Deleted tables.
(mult, inv_mix_column): Deleted functions.
(mtable): New table.
(MIX_COLUMN): New macro.
(aes_invert_key): Use MIX_COLUMN and mtable.
* aesdata.c (compute_mtable): New table, for the inv mix column
operation in aes_invert_key.
2012-04-13 Niels Möller <nisse@lysator.liu.se>
* aes-set-encrypt-key.c (aes_set_encrypt_key): Use LE_READ_UINT32.
Tabulate the needed "round constants".
(xtime): Deleted function.
* aes-internal.h (SUBBYTE): Cast to uint32_t. Use B0, ..., B3
macros.
2012-04-09 Niels Möller <nisse@lysator.liu.se>
Timing resistant RSA decryption, based on RSA blinding code
contributed by Nikos Mavrogiannopoulos.
* rsa-decrypt-tr.c (rsa_decrypt_tr): New function.
(rsa_blind): Helper function.
(rsa_unblind): Helper function.
* rsa.h: Declare rsa_decrypt_tr. Some cleanups, no longer include
nettle-meta.h, more consistent declarations of function pointer
arguments.
* testsuite/rsa-encrypt-test.c (test_main): Test rsa_decrypt_tr.
Check for writes past the end of the message area.
* Makefile.in (hogweed_SOURCES): Added pkcs1-decrypt.c.
* rsa-decrypt.c (rsa_decrypt): Use pkcs1_decrypt.
* pkcs1-decrypt.c (pkcs1_decrypt): New file and function,
extracted from rsa_decrypt.
2012-04-01 Niels Möller <nisse@lysator.liu.se>
* salsa20.c (LE_SWAP32): Typo fix for big-endian case.
(QROUND): New macro.
(salsa20_hash): Use it.
2012-03-31 Niels Möller <nisse@lysator.liu.se>
* salsa20.c: (salsa20_set_iv): Deleted size argument, only one
size allowed.
(U8TO32_LITTLE): Deleted macro. Use LE_READ_UINT32 instead, which
avoids unaligned reads.
(salsa20_set_key): Rearranged slightly, to avoid unnecessary
byte-to-word conversions.
(LE_SWAP32): Renamed macro from...
(U32TO32_LITTLE): ... old name.
(U32TO8_LITTLE): Deleted macro.
(salsa20_wordtobyte): Renamed function to...
(salsa20_hash): ... new name. Changed output argument from byte
array to word array. Use memxor3, which brings a considerable
performance gain.
* nettle-internal.c (salsa20_set_key_hack): Updated salsa20_set_iv
call.
* testsuite/salsa20-test.c (test_salsa20): Deleted iv_length
argument, updated all calls.
* salsa20.h (SALSA20_BLOCK_SIZE): New constant.
(_SALSA20_INPUT_LENGTH): New constant.
* salsa20.c: Use these constants.
* salsa20.c (ROTL32): Deleted macro, use the one from macros.h
instead, with reversed order of arguments.
(ROTATE, XOR, PLUS, PLUSONE): Deleted macros, use ROTL32 and
builtin operators directly.
Unification of rotation macros.
* macros.h (ROTL32): New macro, to replace (almost) all other
rotation macros.
* aes-set-encrypt-key.c: Include macros.h.
(aes_set_encrypt_key): Use ROTL32.
* aes-internal.h (ROTBYTE, ROTRBYTE): Deleted macros.
* camellia-internal.h (ROL32): Deleted macro.
(ROTL128): Renamed for consistency, from...
(ROL128): ... old name.
* camellia-crypt-internal.c: Updated for renamed rotation macros.
* camellia-set-encrypt-key.c: Likewise.
* cast128.c (ROL): Deleted macro.
(F1, F2, F3): Updated to use ROTL32 (reversed order of arguments).
Also added proper do { ... } while (0) wrappers.
* ripemd160-compress.c (ROL32): Deleted macro.
(R): Updated to use ROTL32 (reversed order of arguments).
* serpent-internal.h (ROL32): Deleted macro.
(ROTL64): Renamed (from ROL64) and reorderd arguments, for
consistency.
(RSHIFT64): Reordered arguments, for consistency.
* serpent-decrypt.c: Updated for renamed rotation macros, with
reversed argument order.
* serpent-encrypt.c: Likewise.
* serpent-set-key.c: Likewise.
* sha1-compress.c (ROTL): Deleted macro, use ROTL32 instead.
* sha256-compress.c (ROTR): Deleted macro. Replaced by ROTL32,
with complemented shift count.
(SHR): Deleted macro, use plain shift operator instead.
* sha512-compress.c (ROTR): Deleted macro, replaced by...
(ROTL64): ...new macro, with complemented shift count
(SHR): Deleted macro, use plain shift operator instead.
(S0, S1, s0, s1): Updated accordingly.
2012-03-30 Niels Möller <nisse@lysator.liu.se>
* nettle-internal.c (nettle_salsa20): Cipher struct for
benchmarking only. Sets a fix zero IV, and ignores block size.
* nettle-internal.h (nettle_salsa20): Declare it.
* examples/nettle-benchmark.c (block_cipher_p): New function.
(time_cipher): Use block_cipher_p.
(main): Include salsa20 in benchmark.
* Makefile.in (soname link): Fixed logic.
(nettle_SOURCES): Removed nettle-internal.c, so that it's not
part of the library...
(internal_SOURCES): ...and put it here.
* testsuite/Makefile.in (TEST_OBJS): Added ../nettle-internal.o.
* examples/Makefile.in (BENCH_OBJS): New variable, to simplify the
nettle-benchmark rule. Also link with ../nettle-internal.o.
2012-03-29 Niels Möller <nisse@lysator.liu.se>
Implementation of Salsa20, contributed by Simon Josefsson.
* salsa20.h: New file.
* salsa20.c: New file.
* Makefile.in (nettle_SOURCES): Added salsa20.c
(HEADERS): Added salsa20.h.
* testsuite/Makefile.in (TS_NETTLE_SOURCES): Added salsa20-test.c.
* testsuite/salsa20-test.c: New test case.
* Makefile.in (soname links): Adding missing space before ].
2012-03-23 Niels Möller <nisse@lysator.liu.se>
* arcfour.h (arcfour_stream): Deleted obsolete prototype.
2012-03-05 Niels Möller <nisse@lysator.liu.se>
* configure.ac (enable_shared): Build shared libraries by default.
2012-03-04 Niels Möller <nisse@lysator.liu.se>
* configure.ac (LIBNETTLE_MINOR): Bumped library version, to 4.4.
(LIBHOGWEED_MINOR): And to 2.2.
2012-02-27 Niels Möller <nisse@lysator.liu.se>
* list-obj-sizes.awk: Recognize elf64 objects.
* Makefile.in (.texinfo.dvi): Pass -b option to texi2dvi.
* Makefile.in (TARGETS): Added twofishdata.
(SOURCES): Added twofishdata.c.
(twofishdata): New rule.
* twofish.c (q0, q1): Made const, and reformatted to match the
twofishdata program.
* twofishdata.c: Resurrected old file. Used to be called
generate_q.c, when the twofish code was contributed back in 1999.
* nettle.texinfo: Documentation for base16 and base64 encoding.
Text contributed by Jeronimo Pellegrini
<pellegrini@mpcnet.com.br>, back in April 2006.
2012-02-18 Niels Möller <nisse@lysator.liu.se>
* run-tests, getopt.c, getopt1.c, getopt.h: These files were moved
to the top-level in the conversion to an independent git
repository. They used to be symlinks to lsh files, from the
subdirectories which use them.
* Makefile.in: Build and distribute getopt files. Distribute
run-tests script.
* examples/Makefile.in: Adapt to getopt files and the run-tests
script now located in the parent directory.
* testsuite/Makefile.in: Likewise.
* tools/Makefile.in: Likewise.
* index.html: Converted to xhtml (from lsh repository, change
dated 2012-02-03). Updated git instructions.
* nettle.texinfo: Updated charset declaration.
* misc/plan.html: Likewise.
2012-01-17 Niels Möller <nisse@lysator.liu.se>
* testsuite/Makefile.in (DISTFILES): Added setup-env.
* examples/rsa-decrypt.c (main): Use _setmode rather than setmode,
suggested by Eli Zaretskii. Affects windows builds only.
* examples/rsa-encrypt.c: Likewise.
* Makefile.in ($(LIBNETTLE_FORLINK)): Always create a .lib symlink
to the library file. Use LN_S.
($(LIBHOGWEED_FORLINK)): Likewise.
(install-shared-nettle): Use LN_S.
(install-shared-hogweed): Likewise.
* configure.ac: Use AC_PROG_LN_S.
* config.make.in (LN_S): New substitution.
* testsuite/setup-env: New file. Wine workaround. Can't get
../.lib into wine's dll search path, so create additional
symlinks.
* testsuite/teardown-env: ...and delete them here. Also delete
file testtmp.
* examples/setup-env: Similar links setup here.
* examples/teardown-env: ... and deleted.
2012-01-07 Niels Möller <nisse@lysator.liu.se>
* examples/Makefile.in (check): Add ../.lib to PATH, like in
testsuite/Makefile. Needed for w*ndows. Reported by Eli Zaretskii.
2011-11-25 Niels Möller <nisse@lysator.liu.se>
From Martin Storsjö:
* x86_64/machine.m4 (W64_ENTRY, W64_EXIT): New macros for
supporting W64 ABI.
* x86_64: Updated all assembly files to use them.
* configure.ac (W64_ABI): New variable, set when compiling for
W64 ABI (64-bit M$ windows).
* config.m4.in (W64_ABI): Define, from configure substitution.
2011-11-24 Niels Möller <nisse@lysator.liu.se>
From Martin Storsjö:
* examples/Makefile.in (check): Pass $(EMULATOR) and $(EXEEXT) in
the environment of run-tests.
* examples/rsa-encrypt-test: Use $EXEEXT and $EMULATOR.
* examples/rsa-sign-test: Likewise.
* examples/rsa-verify-test: Likewise.
* examples/setup-env: Likewise.
* testsuite/Makefile.in (check): Pass $(EXEEXT) in the environment of
run-tests.
* testsuite/pkcs1-conv-test: Use $EXEEXT and $EMULATOR. Ignore \r
in rsa-sign output.
* examples/rsa-decrypt.c (main) [WIN32]: Set stdout/stdin to
binary mode.
* examples/rsa-encrypt.c (main): Likewise.
2011-11-24 Niels Möller <nisse@lysator.liu.se>
* configure.ac (HAVE_NATIVE_64_BIT): Workaround to get it set to 1
on w64.
* serpent-internal.h (ROL64): Use (uint64_t) 1 rather than 1L, for
M$ w64.
(RSHIFT64): Likewise. Also added a missing parenthesis.
2011-11-24 Niels Möller <nisse@lysator.liu.se>
From Martin Storsjö:
* testsuite/symbols-test: Use $NM, falling back to nm if undefined.
* testsuite/Makefile.in (check): Pass $(NM) in the environment of
run-tests.
* config.make.in (NM): Set NM.
* testsuite/sexp-conv-test: Use $EMULATOR when running test
programs. Also ignore \r for output in the non-canonical output
formats.
* testsuite/Makefile.in (check): Pass $(EMULATOR) in the
environment of run-tests.
* configure.ac (EMULATOR): New substituted variable. Set to wine
or wine64 when cross compiling for windows, otherwise empty.
* config.make.in (EMULATOR): Set from autoconf value.
2011-11-20 Niels Möller <nisse@lysator.liu.se>
* x86/camellia-crypt-internal.asm: Take ALIGNOF_UINT64_T into
account when getting the offset for the subkeys. Differs between
w32 and other systems. w32 problem identified by Martin Storsjö.
* config.m4.in: Define ALIGNOF_UINT64_T (from configure).
* configure.ac: Check alignment of uint64_t, and also use AC_SUBST
for use in config.m4.in.
2011-11-19 Niels Möller <nisse@lysator.liu.se>
Cygwin/mingw32 improvements contributed by Martin Storsjö:
* Makefile.in (IMPLICIT_TARGETS): New variable for DLL link
libraries.
(clean-here): Delete the DLL import libraries.
* configure.ac: Setup installation of DLL files in $bindir.
(IF_DLL, LIBNETTLE_FILE_SRC, LIBHOGWEED_FILE_SRC): New
substitutions.
* config.make.in (LIBNETTLE_FILE_SRC): Substitute new autoconf
variable.
(LIBHOGWEED_FILE_SRC): Likewise.
* Makefile.in (install-dll-nettle, uninstall-dll-nettle): New
target for installing the DLL file in $bindir.
(install-shared-nettle): Conditionally
depend on install-dll-nettle. Use LIBNETTLE_FILE_SRC.
(uninstall-shared-nettle): Conditionally depend on
install-dll-nettle.
(various hogweed targets): Analogous changes.
* configure.ac: Unify shared lib setup for cygwin and mingw.
2011-10-31 Niels Möller <nisse@lysator.liu.se>
* configure.ac (LIBHOGWEED_LIBS): Typo fix for the darwin case.
Spotted by Martin Storsjö.
2011-10-25 Niels Möller <nisse@lysator.liu.se>
* configure.ac (LIBHOGWEED_LIBS): cygwin fix, added
libnettle.dll.a. Reported by Volker Zell.
2011-10-18 Niels Möller <nisse@lysator.liu.se>
* configure.ac: Improved setup för darwin shared libraries.
Patch contributed by Ryan Schmidt.
2011-10-03 Niels Möller <nisse@lysator.liu.se>
* x86_64/memxor.asm: Implemented sse2-loop. Configured at compile
time, and currently disabled.
* testsuite/testutils.h (ASSERT): Write message to stderr.
* testsuite/memxor-test.c: Use 16-byte alignment for "fully
aligned" operands.
2011-09-03 Niels Möller <nisse@lysator.liu.se>
* x86/camellia-crypt-internal.asm: Use "l"-suffix on instructions
more consistently. Reportedly, freebsd and netbsd systems with
clang are more picky about this.
* configure.ac: Changed version number to 2.5.
* Released nettle-2.4.
* configure.ac (LIBNETTLE_MINOR): Bumped library version, to 4.3.
* gcm-aes.c: Include config.h.
* tools/nettle-lfib-stream.c: Likewise.
* ripemd160-compress.c: Added missing include of config.h. Needed
for correct operation on big-endian systems.
2011-09-02 Niels Möller <nisse@amfibolit.hack.org>
* configure.ac: Changed version number to 2.4.
* Released nettle-2.3.
2011-08-30 Niels Möller <nisse@lysator.liu.se>
* testsuite/hmac-test.c: Added tests for hmac-ripemd160.
* hmac.h: Declare hmac-ripemd160 related functions.
* Makefile.in (nettle_SOURCES): Added hmac-ripemd160.c.
2011-08-30 Niels Möller <nisse@amfibolit.hack.org>
* nettle.texinfo (Hash functions): Document ripemd-160.
* hmac-ripemd160.c: New file.
* hmac.h: Declare hmac-ripemd160 functions.
2011-08-29 Niels Möller <nisse@lysator.liu.se>
* sha256.c (sha256_update): Updated MD_UPDATE call for new
conventions.
(sha256_write_digest): Use MD_PAD rather than MD_FINAL, and insert
the length manually.
* sha512.c: Analogous changes.
* sha1.c (COMPRESS): New macro.
(sha1_update): Updated MD_UPDATE call for new conventions.
(sha1_digest): Use MD_PAD rather than MD_FINAL, and insert the
length manually.
* ripemd160.c (ripemd160_init): Use memcpy for initializing the
state vector.
(COMPRESS): New macro.
(ripemd160_update): Use MD_UPDATE.
(ripemd160_digest): Inline ripemd160_final processing. Use MD_PAD
and _nettle_write_le32.
(ripemd160_final): Deleted function.
* ripemd160.h (struct ripemd160_ctx): Use a 64-bit block count.
Renamed digest to state.
* md5.c (md5_init): Use memcpy for initializing the state vector.
(COMPRESS): New macro, wrapping _nettle_md5_compress.
(md5_update): Use MD_UPDATE.
(md5_digest): Inline md5_final processing. Use MD_PAD and
_nettle_write_le32.
(md5_final): Deleted.
* md5.h (struct md5_ctx): Renamed some fields, for consistency.
* md4.h (struct md4_ctx): Renamed some fields, for consistency.
* md4.c (md4_init): Use memcpy for initializing the state vector.
(md4_update): Use MD_UPDATE.
(md4_digest): Inline md4_final processing, using MD_PAD. Use
_nettle_write_le32.
(md4_block): Renamed, to...
(md4_compress): ... new name. Take ctx pinter as argument.
(md4_final): Deleted function.
* md2.c (md2_update): Use MD_UPDATE.
* macros.h (MD_UPDATE): Added incr argument. Invoke compression
function with ctx pointer as argument, rather than ctx->state.
(MD_FINAL): Just pad, don't store length field. Renamed to MD_PAD.
(MD_PAD): Analogous change of compression invocations.
* sha512.c: (COMPRESS): New macro wrapping _nettle_sha512_compress.
(sha512_update): Use MD_UPDATE.
(sha512_final): Deleted function.
(sha512_write_digest): Use MD_FINAL.
* sha256.c (COMPRESS): New macro wrapping _nettle_sha256_compress.
(SHA256_INCR): Deleted macro.
(sha256_update): Use MD_UPDATE.
(sha256_final): Deleted function.
(sha256_write_digest): New function, replacing sha256_final, and
using MD_FINAL.
(sha256_digest): Use sha256_write_digest.
(sha224_digest): Likewise.
* tools/nettle-hash.c (list_algorithms): Fixed typo in header.
* sha1.c (SHA1_DATA_LENGTH): Deleted unused macro.
(sha1_init): Use memcpy to initialize the state vector.
(SHA1_INCR): Deleted macro.
(sha1_update): Use MD_UPDATE macro, to reduce code duplication.
(sha1_digest): Use MD_FINAL macro.
(sha1_final): Deleted function.
* sha.h (struct sha1_ctx): Renamed attribute digest to state.
* macros.h (MD_UPDATE): New macro.
(MD_FINAL): New macro.
2011-08-28 Niels Möller <nisse@lysator.liu.se>
* ripemd160.c (ripemd160_final): Use LE_WRITE_UINT32. Deleted byte
swapping at the end, leaving it to ripemd160_digest.
(ripemd160_digest): Use _nettle_write_le32.
* Makefile.in (nettle_SOURCES): Added write-le32.c.
* md5.c (md5_digest): Use _nettle_write_le32.
* write-le32.c (_nettle_write_le32): New file and function.
* ripemd160-compress.c (ROL32): Renamed macro (was "rol"). Deleted
x86 version using inline assembly; at least gcc-4.4.5 recognizes
shift-and-or expressions which are in fact rotations.
(_nettle_ripemd160_compress): Use LE_READ_UINT32.
* configure.ac (LIBNETTLE_MINOR): Bumped library version, to 4.2.
* testsuite/meta-hash-test.c: Updated for the addition of
ripemd-160.
* testsuite/.test-rules.make: Added rule for ripemd160-test.
* examples/nettle-benchmark.c (main): Benchmark ripemd-160.
2011-08-28 Niels Möller <nisse@lysator.liu.se>
RIPEMD-160 hash function. Ported from libgcrypt by Andres Mejia.
* testsuite/ripemd160-test.c: New file.
* ripemd160.h: New file.
* nettle-meta.h: Declare nettle_ripemd160.
* ripemd160.c: New file, ported from libgcrypt.
* ripemd160-compress.c: Likewise.
* ripemd160-meta.c: New file.
* testsuite/Makefile.in (TS_NETTLE_SOURCES): Added
ripemd160-test.c.
* nettle-meta-hashes.c (nettle_hashes): Added nettle_ripemd160.
* Makefile.in (nettle_SOURCES): Added ripemd160.c,
ripemd160-compress.c, and ripemd160-meta.c.
(HEADERS): Added ripemd160.h.
2011-08-10 Niels Möller <nisse@amfibolit.hack.org>
* nettle.texinfo: Fixed mis-placed const in various prototypes.
Spotted by Tatsuhiro Tsujikawa.
2011-07-24 Niels Möller <nisse@lysator.liu.se>
* Makefile.in (PKGCONFIG_FILES, pkgconfigdir): New variables.
(DISTFILES): Added nettle.pc.in and hogweed.pc.in.
(nettle.pc, hogweed.pc): New targets (invoking config.status).
(install-pkgconfig, uninstall-pkgconfig): New targets.
(install-here): Depend on install-pkgconfig.
(uninstall-here): Depend on uninstall-pkgconfig.
(distclean-here): Delete nettle.pc and hogweed.pc.
2011-07-20 Niels Möller <nisse@lysator.liu.se>
* configure.ac: Generate nettle.pc and hogweed.pc.
* nettle.pc.in, hogweed.pc.in: New files.
2011-07-17 Niels Möller <nisse@lysator.liu.se>
* nettle-internal.h: Added missing extern declarations.
2011-07-11 Niels Möller <nisse@lysator.liu.se>
* configure.ac: Changed version number to 2.3.
* Released nettle-2.2.
* Makefile.in (DISTFILES): Distribute COPYING.LIB, not COPYING,
2011-07-07 Niels Möller <nisse@lysator.liu.se>
* tools/misc.h (werror): Removed incorrect noreturn attribute from
declaration.
* examples/io.c (read_file): Bug fix, in dependence of initial
size on max_size.
2011-07-01 Niels Möller <nisse@lysator.liu.se>
* cbc.c (CBC_BUFFER_LIMIT): Reduced to 512 bytes.
(cbc_decrypt): For in-place operation, use overlapping memxor3 and
eliminate a memcpy.
* ctr.c (ctr_crypt): Reorganized to call the encryption function
with several blocks at a time. Handle the case of a single block
specially.
* x86_64/memxor.asm: Added ALIGN for shifting loop. Deleted
obsolete ifelse.
2011-06-30 Niels Möller <nisse@lysator.liu.se>
* configure.ac: Link in serpent-decrypt.asm, if found.
* x86_64/serpent-decrypt.asm: Added an SSE2 loop, doing four
blocks at a time in parallel.
* x86_64/serpent-encrypt.asm: Include serpent.m4. Deleted a
redundant label.
* x86_64/serpent.m4: New file, with serpent-related macros.
2011-06-29 Niels Möller <nisse@lysator.liu.se>
* x86_64/serpent-decrypt.asm: Wrote main (32-bit) loop.
(SBOX0I, SBOX1I, SBOX7I): Fixed bugs.
* nettle.texinfo (Copyright): Updated for license change to
LGPLv2+. Updated copyriight info on serpent.
* NEWS: Updated information for nettle-2.2.
* x86_64/serpent-decrypt.asm: New file.
* x86_64/serpent-encrypt.asm: Fixed .file pseudo op.
* testsuite/testutils.c (test_cipher_ctr): Display more info on
failure.
* examples/nettle-benchmark.c (bench_ctr): New function.
(time_cipher): Also benchmark CTR mode.
* configure.ac (LIBNETTLE_MINOR): Updated library version number
to 4.1.
(LIBHOGWEED_MINOR): And to 2.1.
2011-06-22 Niels Möller <nisse@lysator.liu.se>
* configure.ac: Use pwd -P when examining lib directories.
Link in serpent-encrypt.asm, if found.
2011-06-21 Niels Möller <nisse@lysator.liu.se>
* serpent-decrypt.c (SBOX3_INVERSE): Eliminated temporaries.
(SBOX4_INVERSE): Likewise.
(SBOX5_INVERSE): Likewise.
(SBOX6_INVERSE): Likewise.
(SBOX7_INVERSE): Likewise.
(All SBOX_INVERSE-macros): Deleted type argument, and updated users.
2011-06-20 Niels Möller <nisse@lysator.liu.se>
* serpent-decrypt.c: Renamed arguments in sbox macros.
(SBOX0_INVERSE): Eliminated temporaries.
(SBOX1_INVERSE): Likewise.
(SBOX2_INVERSE): Likewise.
* x86_64/serpent-encrypt.asm: Added an SSE2 loop, doing four
blocks at a time in parallel.
* testsuite/serpent-test.c (test_main): Added some more multiple
block tests.
2011-06-15 Niels Möller <nisse@lysator.liu.se>
* configure.ac (libdir): On 64-bit Linux, we used to assume that
libraries are installed according to the FHS. Since at least
Fedora and Gentoo follow the FHS convention, while at least Debian
doesn't, we have to try to figure out which convention is used.
2011-06-14 Niels Möller <nisse@lysator.liu.se>
* x86_64/serpent-encrypt.asm: Slight simplification of loop logic.
* x86_64/serpent-encrypt.asm: New file.
2011-06-12 Niels Möller <nisse@lysator.liu.se>
* testsuite/serpent-test.c (test_main): Added tests with multiple
blocks at a time.
* serpent-encrypt.c (SBOX6): Renamed arguments. Eliminated
temporaries.
(SBOX7): Likewise.
(All SBOX-macros): Deleted type argument, and updated users.
* configure.ac: Display summary at the end of configure..
(asm_path): Set only if enable_assember is yes.
2011-06-10 Niels Möller <nisse@lysator.liu.se>
* serpent-encrypt.c (SBOX5): Renamed arguments. Eliminated
temporaries.
2011-06-09 Niels Möller <nisse@lysator.liu.se>
* serpent-encrypt.c (SBOX4): Renamed arguments. Eliminated
temporaries.
* configure.ac (LIBNETTLE_LINK, LIBHOGWEED_LINK): Cygwin fix, from
Vincent Torri.
2011-06-08 Niels Möller <nisse@lysator.liu.se>
* examples/eratosthenes.c (find_first_one): Fixed c99-style
declaration. Reported by Sebastian Reitenbach.
(find_first_one): Declare the lookup table as static const, and
use unsigned char rather than unsigned..
2011-06-07 Niels Möller <nisse@lysator.liu.se>
* serpent-encrypt.c (SBOX0): Renamed arguments. Eliminated
temporaries.
(SBOX1): Likewise.
(SBOX2): Likewise.
(SBOX3): Likewise.
2011-06-06 Niels Möller <nisse@lysator.liu.se>
* Makefile.in (DISTFILES): Added serpent-internal.h.
(nettle_SOURCES): Replaced serpent.c by serpent-set-key.c,
serpent-encrypt.c, and serpent-decrypt.c.
* serpent.c: Replaced by several new files.
* serpent-set-key.c: New file.
* serpent-encrypt.c: New file.
* serpent-decrypt.c: New file.
* serpent-internal.h: New file.
* serpent.c [HAVE_NATIVE_64_BIT]: Process two blocks at a time in
parallel. Measured speedup of 10%--25% (higher for encryption) on
x86_64.
2011-06-01 Niels Möller <nisse@lysator.liu.se>
* serpent.c (ROUNDS): Deleted macro.
(serpent_block_t): Deleted array typedef.
(KEYXOR): New macro, replacing BLOCK_XOR.
(BLOCK_COPY, SBOX, SBOX_INVERSE): Deleted macros.
(LINEAR_TRANSFORMATION): Use four separate arguments.
(LINEAR_TRANSFORMATION_INVERSE): Likewise.
(ROUND): Take separate arguments for all input and output words.
(ROUND_INVERSE): Likewise.
(ROUND_LAST, ROUND_FIRST_INVERSE): Deleted macros.
(serpent_set_key): Moved loop termination test.
(serpent_encrypt): Rewrote with unrolling of just eight rounds,
and without serpent_block_t.
(serpent_decrypt): Likewise.
* serpent.c: Added do { ... } while (0) around block macros.
(serpent_key_t): Deleted array typedef.
(ROL32, ROR32): Renamed macros, were rol and ror.
(KS_RECURRENCE, KS): New macros.
(serpent_key_pad): Renamed, from...
(serpent_key_prepare): ...old name.
(serpent_subkeys_generate): Deleted function.
(serpent_set_key): Rewrote the generation of subkeys. Reduced both
temporary storage and code size (less unrolling)
2011-05-31 Niels Möller <nisse@lysator.liu.se>
* testsuite/serpent-test.c (test_main): Enabled test with short,
40-bit, key.
* serpent.c (byte_swap_32): Deleted macro.
(serpent_key_prepare): Use LE_READ_UINT32. Don't require aligned
input, and support arbitrary key sizes.
2011-05-30 Simon Josefsson <simon@josefsson.org>
* serpent.c: Rewrite, based on libgcrypt code. License changed
from GPL to LGPL.
* serpent_sboxes.h: Removed.
* Makefile.in: Drop serpent_sboxes.h.
2011-05-31 Niels Möller <nisse@lysator.liu.se>
* testsuite/serpent-test.c (test_main): Added some tests for
padding of keys of length which is not a multiple of four bytes.
2011-05-30 Simon Josefsson <simon@josefsson.org>
* testsuite/serpent-test.c (test_main): Add test vectors from
libgcrypt.
2011-05-21 Niels Möller <nisse@lysator.liu.se>
* dsa-keygen.c (dsa_generate_keypair): Avoid double init of mpz
variable. Spotted by Nikos Mavrogiannopoulos.
2011-05-06 Niels Möller <nisse@lysator.liu.se>
* configure.ac: Fix link flags for shared libraries on Solaris,
which needs -h to set the soname. Patch contributed by Dagobert
Michelsen.
2011-05-06 Niels Möller <nisse@lysator.liu.se>
* configure.ac: New configure option --enable-gcov.
* arcfour.h (arcfour_stream): Deleted obsolete define.
2011-04-27 Niels Möller <nisse@lysator.liu.se>
* tools/nettle-hash.c (find_algorithm): Require exact match.
2011-04-15 Niels Möller <nisse@lysator.liu.se>
Reverted broken byte-order change from 2001-06-17:
* serpent.c (serpent_set_key): Use correct byteorder.
(serpent_encrypt): Likewise.
(serpent_decrypt): Likewise.
* testsuite/serpent-test.c (decode_hex_reverse): New function.
(RH, RHL): New macros.
(test_main): Byte reverse inputs and outputs for the testvectors
taken from the serpent submission package. Enable test vectors
from http://www.cs.technion.ac.il/~biham/Reports/Serpent/.
2011-03-23 Niels Möller <nisse@lysator.liu.se>
* tools/sexp-conv.c (xalloc): Deleted function, now it's in misc.c
instead.
* configure.ac: Use LSH_FUNC_STRERROR.
* tools/Makefile.in (TARGETS): Added nettle-hash, and related
build rules.
(SOURCES): Added nettle-hash.c.
* tools/misc.c (xalloc): New function.
* tools/pkcs1-conv.c (main): Made the OPT_* constants local, and
fixed numerical values to start with non-ASCII 0x300.
* tools/nettle-hash.c: New file.
2011-03-23 Niels Möller <nisse@lysator.liu.se>
Contributed by Daniel Kahn Gillmor:
* testsuite/Makefile.in (TS_NETTLE_SOURCES): Added
meta-hash-test.c, meta-cipher-test.c, and meta-armor-test.c.
* testsuite/meta-hash-test.c: New file.
* testsuite/meta-cipher-test.c: New file.
* testsuite/meta-armor-test.c: New file.
* nettle.texinfo: Document nettle_hashes and nettle_ciphers.
* nettle-meta.h: Declare algorithm lists nettle_ciphers,
nettle_hashes, nettle_armors.
* Makefile.in (nettle_SOURCES): Added nettle-meta-hashes.c,
nettle-meta-ciphers.c, and nettle-meta-armors.c.
* nettle-meta-armors.c: New file.
* nettle-meta-ciphers.c: New file.
* nettle-meta-hashes.c: New file.
2011-02-18 Niels Möller <nisse@lysator.liu.se>
* arcfour.c (arcfour_stream): Deleted function. It's not very
useful, and neither documented nor tested.
2011-02-16 Niels Möller <nisse@lysator.liu.se>
* cbc.h (CBC_ENCRYPT): Avoid using NULL; we don't ensure that it
is defined.
(CBC_DECRYPT): Likewise.
* gcm-aes.c (gcm_aes_set_iv): Use GCM_SET_IV.
(gcm_aes_set_key): Deleted cast.
(gcm_aes_encrypt): Likewise.
(gcm_aes_decrypt): Likewise.
(gcm_aes_digest): Likewise.
(gcm_aes_update): One less argument to GCM_UPDATE.
* gcm.h (GCM_SET_KEY): Added cast to nettle_crypt_func *. Help
compiler type checking despite this cast.
(GCM_ENCRYPT): Likewise.
(GCM_DECRYPT): Likewise.
(GCM_DIGEST): Likewise.
(GCM_SET_IV): New macro, for completeness.
(GCM_UPDATE): Deleted unused argument encrypt.
2011-02-14 Niels Möller <nisse@lysator.liu.se>
* nettle.texinfo: Split node on cipher modes, and started on
the GCM documentation.
* testsuite/gcm-test.c (test_gcm_aes): Deleted function, replaced
by test_aead.
(test_main): Use test_aead.
* testsuite/testutils.c (test_aead): New function, replacing
test_gcm_aes and before that test_cipher_gcm.
* nettle-internal.c (nettle_gcm_aes128): New const struct.
(nettle_gcm_aes192): Likewise.
(nettle_gcm_aes256): Likewise.
* nettle-internal.h (struct nettle_aead): Tentative interface for
authenticated encryption with associated data.
* examples/nettle-benchmark.c (time_gcm): Renamed. Updated for
gcm_aes_auth to gcm_aes_update renaming. Benchmark both encryption
and hashing.
(time_gmac): ...old name.
* nettle-internal.c (des_set_key_hack): Don't touch the bits
parity, since thay are now ignored.
(des3_set_key_hack): Likewise.
* cast128-meta.c (nettle_cast128): Don't pass keysize.
* nettle-meta.h (_NETTLE_CIPHER_FIX): Deleted keysize parameter
derived from the appropriate constant instead.
* testsuite/gcm-test.c (test_gcm_aes): Updated for gcm_aes_auth to
gcm_aes_update renaming.
2011-02-13 Niels Möller <nisse@lysator.liu.se>
* gcm.h (GCM_UPDATE): Renamed, from...
(GCM_AUTH): ...old name.
* gcm-aes.c (gcm_aes_update): Renamed, from...
(gcm_aes_auth): ...old name.
* gcm.c (gcm_update): Renamed, and fixed an assert. From...
(gcm_auth): ...old name.
* gcm.h (GCM_TABLE_BITS): Increase table size to 8 bits,
corresponding to 4 KByte of key-dependent tables.
2011-02-10 Niels Möller <nisse@lysator.liu.se>
* x86_64/memxor.asm: New file. Improves performance by 22% for the
unaligned01 case and 35% for the unaligned12 case, benchmarked on
Intel SU1400.
* examples/nettle-benchmark.c (cgt_works_p): New function.
(cgt_time_start): Likewise.
(cgt_time_end): Likewise.
(clock_time_start): Likewise.
(clock_time_end): Likewise.
(time_function): Read clock via function pointers time_start and
time_end, so we can select method at runtime.
(xalloc): Use die function.
(main): Choose timing function. If available, try clock_gettime,
and fall back to clock if it doesn't exist.
* examples/nettle-benchmark.c (die): New function.
(TIME_END, TIME_START): Check return value from clock_gettime.
* gcm.h (union gcm_block): Use correct length for w array.
* testsuite/gcm-test.c (test_main): Added the rest of the
testcases from the spec.
2011-02-09 Niels Möller <nisse@lysator.liu.se>
* testsuite/gcm-test.c (test_main): Enabled testcases 5 and 6,
with different IV lengths.
* gcm-aes.c (gcm_aes_set_iv): Updated for gcm_set_iv change.
* gcm.c (gcm_hash_sizes): New function.
(gcm_set_iv): Added support for IVs of arbitrary size. Needed
another argument, for the hash subkey.
(gcm_digest): Use gcm_hash_sizes.
* examples/nettle-benchmark.c (time_gmac): Use gcm_aes interface.
* testsuite/gcm-test.c (test_gcm_aes): New function, replacing
test_cipher_gcm and using the new gcm_aes interface.
(test_main): Updated to use test_gcm_aes.
* testsuite/testutils.c (test_cipher_gcm): Deleted function.
* Makefile.in (nettle_SOURCES): Added gcm-aes.c.
* gcm.c (gcm_set_key): Replaced context argument by a struct
gcm_key *.
(gcm_hash): Replaced context argument by a struct gcm_key * and a
pointer to the hashing state block.
(gcm_auth): Added struct gcm_key * argument.
(gcm_encrypt): Likewise.
(gcm_decrypt): Likewise.
(gcm_digest): Likewise.
* gcm-aes.c: New file.
(gcm_aes_set_key): New function.
(gcm_aes_set_iv): Likewise.
(gcm_aes_auth): Likewise.
(gcm_aes_encrypt): Likewise.
(gcm_aes_decrypt): Likewise.
(gcm_aes_digest): Likewise.
* gcm.h (struct gcm_key): Moved the key-dependent and
message-independent state to its own struct.
(struct gcm_ctx): ... and removed it here.
(GCM_CTX): New macro.
(GCM_SET_KEY): Likewise.
(GCM_AUTH): Likewise.
(GCM_ENCRYPT): Likewise.
(GCM_DECRYPT): Likewise.
(GCM_DIGEST): Likewise.
(struct gcm_aes_ctx): New struct.
2011-02-08 Niels Möller <nisse@lysator.liu.se>
* gcm.h (struct gcm_ctx): The hash key is now always an array,
named h, with array size depending on GCM_TABLE_BITS.
* gcm.c (gcm_gf_shift): Added a separate result argument.
(gcm_gf_mul): Compile bitwise version only when GCM_TABLE_BITS ==
0. Simplified interface with just two arguments pointing to
complete blocks.
(gcm_gf_shift_4, gcm_gf_shift_8): Renamed table-based functions, from...
(gcm_gf_shift_chunk): ... old name.
(gcm_gf_mul): Renamed both table-based versions and made the
argument types compatible with the bitwise gcm_gf_mul.
(gcm_gf_mul_chunk): ... the old name.
(gcm_set_key): Initialize the table using adds and shifts only.
When GCM_TABLE_BITS > 0, this eliminates the only use of the
bitwise multiplication.
(gcm_hash): Simplified, now that we have the same interface for
gcm_gf_mul, regardless of table size.
* gcm.c (GHASH_POLYNOMIAL): Use unsigned long for this constant.
(gcm_gf_shift_chunk): Fixed bugs for the big endian 64-bit case,
e.g., sparc64. For both 4-bit and 8-bit tables.
* gcm.c: Use the new union gcm_block for all gf operations.
* gcm.h (union gcm_block): New union, used to enforce alignment.
2011-02-07 Niels Möller <nisse@lysator.liu.se>
* gcm.c (gcm_gf_shift_chunk) : Bug fix for little-endian 8-bit
tables.
* gcm.c (gcm_gf_mul_chunk): Special case first and last iteration.
(gcm_gf_add): New function, a special case of memxor. Use it for
all memxor calls with word-aligned 16 byte blocks. Improves
performance to 152 cycles/byte with no tables, 28 cycles per byte
with 4-bit tables and 10.5 cycles per byte with 8-bit tables.
Introduced 8-bit tables. If enabled, gives gmac performance of 19
cycles per byte (still on intel x86_64).
* gcm.c (gcm_gf_shift_chunk): New implementation for 8-bit tables.
(gcm_gf_mul_chunk): Likewise.
(gcm_set_key): Generate 8-bit tables.
* Makefile.in (SOURCES): Added gcmdata.c.
* gcm.h (GCM_TABLE_BITS): Set to 4.
2011-02-06 Niels Möller <nisse@lysator.liu.se>
* Makefile.in (TARGETS): Added gcmdata.
(gcmdata): New rule.
Introduced 4-bit tables. Gives gmac performance of 45 cycles per
byte (still on intel x86_64).
* gcm.c (gcm_gf_shift): Renamed. Tweaked little-endian masks.
(gcm_rightshift): ... old name.
(gcm_gf_mul): New argument for the output. Added length argument
for one of the inputs (implicitly padding with zeros).
(shift_table): New table (in 4-bit and 8-bit versions), generated
by gcmdata.
(gcm_gf_shift_chunk): New function shifting 4 bits at
a time.
(gcm_gf_mul_chunk): New function processing 4 bits at a time.
(gcm_set_key): Generation of 4-bit key table.
(gcm_hash): Use tables, when available.
* gcmdata.c (main): New file.
* gcm.c (gcm_rightshift): Moved the reduction of the shifted out
bit here.
(gcm_gf_mul): Updated for gcm_rightshift change. Improves gmac
performance to 181 cycles/byte.
* gcm.c (gcm_gf_mul): Rewrote. Still uses the bitwise algorithm from the
specification, but with separate byte and bit loops. Improves gmac
performance a bit further, to 227 cycles/byte.
* gcm.c (gcm_rightshift): Complete rewrite, to use word rather
than byte operations. Improves gmac performance from 830 cycles /
byte to (still poor) 268 cycles per byte on intel x86_64.
2011-02-05 Niels Möller <nisse@lysator.liu.se>
* examples/nettle-benchmark.c (time_gmac): New function.
(main): Call time_gmac.
* testsuite/Makefile.in (TS_NETTLE_SOURCES): Added gcm-test.c.
* testsuite/testutils.c (test_cipher_gcm): New function,
contributed by Nikos Mavrogiannopoulos.
* testsuite/gcm-test.c: New file, contributed by Nikos
Mavrogiannopoulos.
* Makefile.in (nettle_SOURCES): Added gcm.c.
(HEADERS): Added gcm.h.
* gcm.c: New file, contributed by Nikos Mavrogiannopoulos.
* gcm.h: New file, contributed by Nikos Mavrogiannopoulos.
* macros.h (INCREMENT): New macro, moved from ctr.c. Deleted third
argument.
* ctr.c: Use INCREMENT macro from macros.h, deleted local version.
2011-01-07 Niels Möller <nisse@lysator.liu.se>
* testsuite/Makefile.in (check): Add ../.lib to PATH, since that's
where w*ndows looks for dlls.
* testsuite/testutils.c (test_cipher_stream): More debug output on
failure.
2010-12-14 Niels Möller <nisse@lysator.liu.se>
* nettle-types.h: Deleted some unnecessary parenthesis from
function typedefs.
(nettle_realloc_func): Moved typedef here...
* realloc.h: ...from here.
* buffer.c (nettle_buffer_init_realloc): Use an explicit pointer
for realloc argument.
2010-12-07 Niels Möller <nisse@lysator.liu.se>
* nettle.texinfo (Copyright): Updated info on blowfish.
2010-11-26 Niels Möller <nisse@lysator.liu.se>
Reapplied optimizations (150% speedup on x86_32) and other fixes,
relicensing them as LGPL.
* blowfish.c (do_encrypt): Renamed, to...
(encrypt): ...new name.
(F): Added context argument. Shift input explicitly, instead of
reading individual bytes via memory.
(R): Added context argument.
(encrypt): Deleted a bunch of local variables. Using the context
pointer for everything should consume less registers.
(decrypt): Likewise.
(initial_ctx): Arrange constants into a struct, to simplify key
setup.
(blowfish_set_key): Some simplification.
2010-11-26 Simon Josefsson <simon@josefsson.org>
* blowfish.c: New version ported from libgcrypt. License changed
from GPL to LGPL.
2010-11-25 Niels Möller <nisse@lysator.liu.se>
* Makefile.in (install-shared-nettle): Use INSTALL_DATA, which
clears the execute permission bits.
(install-shared-hogweed): Likewise.
2010-11-16 Niels Möller <nisse@lysator.liu.se>
* configure.ac: Updated gmp url.
2010-11-01 Niels Möller <nisse@lysator.liu.se>
* tools/misc.c (werror): Don't call exit (copy&paste-error).
2010-10-26 Niels Möller <nisse@lysator.liu.se>
* examples/rsa-encrypt.c (main): No extra message for bad options.
* examples/rsa-keygen.c (main): Added long options. Deleted -?,
and fixed handling of bad options.
* examples/next-prime.c (main): Deleted -?, and fixed handling of
bad options.
* examples/random-prime.c (main): Likewise.
2010-10-22 Niels Möller <nisse@lysator.liu.se>
* examples/nettle-benchmark.c (main): Added long options. Deleted -?,
and fixed handling of bad options.
* examples/eratosthenes.c (main): Added long options. Deleted -?,
and fixed handling of bad options. Renamed -s to -q (long option
--quiet).
* tools/pkcs1-conv.c (main): Deleted short alias -? for --help,
and fixed handling of bad options.
* tools/sexp-conv.c (parse_options): Likewise.
2010-10-06 Niels Möller <nisse@lysator.liu.se>
* memxor.c (memxor3): Optimized.
(memxor3_common_alignment): New function.
(memxor3_different_alignment_b): New function.
(memxor3_different_alignment_ab): New function.
(memxor3_different_alignment_all): New function.
* examples/nettle-benchmark.c (time_function): Reorganized, to
reduce overhead.
(time_memxor): Also benchmark memxor3.
* x86_64/memxor.asm: New file.
* examples/nettle-benchmark.c (overhead): New global variable.
(time_function): Compensate for call overhead.
(bench_nothing, time_overhead): New functions.
(time_memxor): Tweaked src size, making it an integral number of
words.
(main): Call time_overhead.
2010-10-01 Niels Möller <nisse@lysator.liu.se>
* x86_64/camellia-crypt-internal.asm (ROUND): Reordered sbox
lookups.
* testsuite/memxor-test.c: Also test memxor3.
2010-09-30 Niels Möller <nisse@lysator.liu.se>
* configure.ac: Link in memxor.asm, if found.
* testsuite/testutils.c (test_cipher_cbc): Print more info when
failing.
* testsuite/memxor-test.c (test_xor): Added verbose printout.
* examples/nettle-benchmark.c (time_memxor): Count size of
unsigned long as "block size" for memxor.
2010-09-24 Niels Möller <nisse@lysator.liu.se>
* testsuite/.test-rules.make: Added rule for memxor-test.
* testsuite/Makefile.in (TS_NETTLE_SOURCES): Added memxor-test.c
* testsuite/memxor-test.c: New file.
* memxor.c (memxor_common_alignment): New function.
(memxor_different_alignment): New function.
(memxor): Optimized to do word-operations rather than byte
operations.
* configure.ac (HAVE_NATIVE_64_BIT): New config.h define.
Partial revert of 2010-09-20 changes.
* camellia-set-encrypt-key.c (camellia_set_encrypt_key):
Reintroduce CAMELLIA_F_HALF_INV, for 32-bit machines.
* camellia-crypt-internal.c (CAMELLIA_ROUNDSM): Two variants,
differing in where addition of the key is done.
* x86/camellia-crypt-internal.asm: Moved addition of key.
2010-09-22 Niels Möller <nisse@lysator.liu.se>
* examples/nettle-benchmark.c (BENCH_INTERVAL): Changed unit to
seconds.
(time_function): Use clock_gettime with CLOCK_PROCESS_CPUTIME_ID,
if available. This gives better accuracy, at least on recent
linux.
(BENCH_INTERVAL): Reduced to 0.1 s.
(struct bench_memxor_info): New struct.
(bench_memxor): New function.
(time_memxor): New function.
(main): Use time_memxor. Added optional argument used to limit the
algorithms being benchmarked.
(GET_CYCLE_COUNTER): Define also for x86_64.
(time_memxor): Improved display.
* examples/Makefile.in (nettle-benchmark): Link using
$(BENCH_LIBS) rather than $(LIBS).
* configure.ac: Check for clock_gettime, and add -lrt to
BENCH_LIBS if needed.
2010-09-20 Niels Möller <nisse@lysator.liu.se>
* configure.ac: Less quoting when invoking $CC, to allow CC="gcc
-m32".
* x86/camellia-crypt-internal.asm (ROUND): Adapted to new key
convention, moving key xor to the end.
* camellia-set-encrypt-key.c (CAMELLIA_F_HALF_INV): Deleted macro.
(camellia_set_encrypt_key): Deleted the CAMELLIA_F_HALF_INV
operations intended for moving the key xor into the middle of the
round.
* camellia-crypt-internal.c (CAMELLIA_ROUNDSM): Moved addition of
key to the end, to use a 64-bit xor operation.
* x86_64/camellia-crypt-internal.asm: New file.
* x86_64/machine.m4 (LREG, HREG, XREG): New macros.
2010-09-17 Niels Möller <nisse@lysator.liu.se>
* configure.ac: Support shared libraries (dlls) with mingw32.
Contributed by David Hoyt.
2010-07-25 Niels Möller <nisse@lysator.liu.se>
* configure.ac: Changed version number to nettle-2.2.
* Released nettle-2.1.
* configure.ac: Use camellia-crypt-internal.asm, if available.
Bumped soname to libnettle.so.4, and reset LIBNETTLE_MINOR to
zero.
* x86/machine.m4 (LREG, HREG): Moved macros here, from...
* x86/aes.m4: ...here.
* x86/camellia-crypt-internal.asm: New file.
* nettle.texinfo: Updated and expanded section on DSA.
Document aes_invert_key, and camellia. Added missing functions
rsa_sha512_verify and rsa_sha512_verify_digest.
* camellia.h (struct camellia_ctx): Eliminate the two unused
subkeys, and renumber the remaining ones.
* camellia-crypt-internal.c (_camellia_crypt): Updated for
renumbered subkeys.
* camellia-set-encrypt-key.c (camellia_set_encrypt_key): Likewise.
* camellia-set-decrypt-key.c (camellia_invert_key): Likewise.
* camellia-set-encrypt-key.c (camellia_set_encrypt_key): Inline
the expansion of camellia_setup128 and camellia_setup256, keeping
the unexpanded key in scalar variables.
(camellia_setup128): Deleted.
(camellia_setup256): Deleted.
2010-07-24 Niels Möller <nisse@lysator.liu.se>
* camellia-set-encrypt-key.c (camellia_set_encrypt_key): Reduced
code size, no complete loop unroll. Use one loop for each phase of
the post-processing.
* testsuite/camellia-test.c: New tests for camellia_invert_key.
* testsuite/aes-test.c: New tests for aes_invert_key.
* aes.h (aes_invert_key): Declare it.
* aes-set-decrypt-key.c (aes_invert_key): New function, key
inversion code extracted from aes_set_decrypt_key.
(aes_set_decrypt_key): Use aes_invert_key.
* camellia-set-encrypt-key.c (camellia_setup128): Generate
unmodified subkeys according to the spec. Moved clever combination
of subkeys to camellia_set_encrypt_key.
(camellia_setup256): Likewise.
(camellia_set_encrypt_key): Moved subkey post-processing code
here, and reduce code duplication between 128-bit keys and larger
keys.
* camellia.c: Deleted file, split into several new files...
* camellia-table.c (_camellia_table): New file with the constant
sbox tables.
* camellia-set-encrypt-key.c: New file.
(camellia_setup128): Generate unmodified subkeys according to the
spec. Moved clever combination of subkeys to camellia_set_encrypt_key.
(camellia_setup256): Likewise.
* camellia-set-decrypt-key.c: New file.
(camellia_invert_key): Key inversion function.
(camellia_set_decrypt_key): New key setup function.
* camellia-internal.h: New file.
* camellia-crypt.c (camellia_crypt): New file, new wrapper
function passing the sbox table to _camellia_crypt.
* camellia-crypt-internal.c (_camellia_crypt): New file, with main
encrypt/decrypt function.
* Makefile.in (nettle_SOURCES): Updated list of camellia source files.
(DISTFILES): Added camellia-internal.h.
2010-07-20 Niels Möller <nisse@lysator.liu.se>
* camellia-meta.c: Use _NETTLE_CIPHER_SEP_SET_KEY.
* camellia.h (struct camellia_ctx): Replaced flag camellia128 by
expanded key length nkeys.
* camellia.c (camellia_set_encrypt_key): Renamed, from...
(camellia_set_key): ... old name.
(camellia_invert_key): New function.
(camellia_set_decrypt_key): New function, using
camellia_invert_key.
(camellia_crypt): Renamed, from...
(camellia_encrypt): ... old name.
(camellia_decrypt): Deleted, no longer needed. camellia_crypt used
for both encryption and decryption.
* nettle-meta.h (_NETTLE_CIPHER_SEP_SET_KEY): New macro.
* dsa-keygen.c: Removed unnecessary include of memxor.h.
* camellia.c: Rewrote to use 64-bit type for subkeys and use
64-bit operations throughout. Performance on x86_32, when compiled
with gcc-4.4.4, is reduced by roughly 15%, this should be fixed
later.
* camellia.h (struct camellia_ctx): Use type uint64_t for subkeys.
2010-07-07 Niels Möller <nisse@lysator.liu.se>
* aes.h (aes_encrypt, aes_decrypt): Declare ctx argument as const.
Also updated implementation.
* blowfish.h (blowfish_encrypt, blowfish_decrypt): Likewise.
* cast128.h (cast128_encrypt, cast128_decrypt): Likewise.
* serpent.h (serpent_encrypt, serpent_decrypt): Likewise.
* twofish.h (twofish_encrypt, twofish_decrypt): Likewise.
* testsuite/Makefile.in (TS_NETTLE_SOURCES): Added
camellia-test.c.
* examples/nettle-benchmark.c: Added camellia ciphers.
* Makefile.in (nettle_SOURCES): Added camellia.c and
camellia-meta.c.
(HEADERS): Added camellia.h.
* nettle-meta.h (nettle_camellia128): Declare.
(nettle_camellia192): Likewise.
(nettle_camellia256): Likewise.
* camellia-meta.c: New file.
* camellia.h: Rewrote interface to match nettle conventions.
* camellia.c: Converted to nettle conventions.
(camellia_encrypt128, camellia_encrypt256): Unified to new
function...
(camellia_encrypt): ...New function, with a loop doing 6
regular rounds, one FL round and one FLINV round per iteration,
with iteration count depending on the key size.
(camellia_decrypt128, camellia_decrypt256): Similarly unified
as...
(camellia_decrypt): ...New function, analogous to
camellia_encrypt.
2010-07-06 Niels Möller <nisse@lysator.liu.se>
* camellia.c, camellia.h: New files, copied from
http://info.isl.ntt.co.jp/crypt/eng/camellia/dl/camellia-LGPL-1.2.0.tar.gz.
* testsuite/camellia-test.c: New file.
2010-07-05 Niels Möller <nisse@lysator.liu.se>
* nettle.texinfo: Document new conventions for weak key and des
parity checks. Document des_check_parity.
* testsuite/des-test.c (test_weak): Don't check the deleted status
attribute.
* des-compat.c (des_key_sched): Rewrote error checking logic for
the case of non-zero des_check_key.
* des3.c (des3_set_key): Changed weak key detection logic.
Complete key setup also for weak keys, and don't set the status
attribute.
* des.c (des_set_key): New iteration logic, to keep key pointer
unchanged. Moved weak key check to the end, and don't set the
status attribute.
(des_encrypt): Ignore status attribute.
(des_decrypt): Likewise.
* des.h (enum des_error): Deleted.
(struct des_ctx): Deleted status attribute.
(struct des3_ctx): Likewise.
* blowfish.c (initial_ctx): Deleted status value.
(blowfish_encrypt): Ignore status attribute.
(blowfish_decrypt): Likewise.
(blowfish_set_key): Return result from weak key check, without
setting the status attribute.
* blowfish.h (enum blowfish_error): Deleted.
(struct blowfish_ctx): Deleted status attribute.
* Makefile.in (des_headers): Deleted parity.h.
2010-06-30 Niels Möller <nisse@lysator.liu.se>
* testsuite/des-test.c (test_des): New function.
(test_weak): New function.
(test_main): Use test_des and test_weak. Added tests for all the
weak keys. Added some tests with invalid (to be ignored) parity
bits.
* des.c (parity_16): New smaller parity table.
(des_check_parity): New function.
(des_fix_parity): Use parity_16.
(des_weak_p): New weak-key detection. Ignores parity bits, and
uses a hash table.
(des_set_key): Deleted parity checking code. Replaced old weak-key
detection code by a call to des_weak_p.
2010-06-04 Niels Möller <nisse@lysator.liu.se>
* testsuite/testutils.c (test_dsa_key): Updated for new name
DSA_SHA1_MIN_P_BITS.
* dsa-keygen.c (dsa_generate_keypair): Use DSA_SHA1_MIN_P_BITS and
DSA_SHA256_MIN_P_BITS.
* dsa.h (DSA_MIN_P_BITS, DSA_Q_OCTETS, DSA_Q_BITS): Renamed to...
(DSA_SHA1_MIN_P_BITS, DSA_SHA1_Q_OCTETS, DSA_SHA1_Q_BITS): New
names.
* sexp2dsa.c (dsa_keypair_from_sexp_alist): New argument q_bits.
Renamed parameter limit to p_max_bits.
(dsa_sha1_keypair_from_sexp): Renamed, was dsa_keypair_from_sexp.
Updated to call dsa_keypair_from_sexp_alist with the new argument.
(dsa_sha256_keypair_from_sexp): New function.
(dsa_signature_from_sexp): New argument q_bits.
* der2dsa.c (dsa_params_from_der_iterator): Enforce 160-bit limit
on q. Renamed parameter limit to p_max_bits.
(dsa_openssl_private_key_from_der_iterator): Enforce 160-bit limit
on q and x. Renamed parameter limit to p_max_bits.
2010-06-03 Niels Möller <nisse@lysator.liu.se>
* testsuite/dsa-test.c (test_main): Added test for dsa-sha256.
2010-06-02 Niels Möller <nisse@lysator.liu.se>
* testsuite/dsa-test.c (test_main): Provide expected value of the
signature.
* testsuite/testutils.c (test_dsa160): Added argument for expected
signature.
(test_dsa256): Likewise.
2010-06-01 Niels Möller <nisse@lysator.liu.se>
* testsuite/rsa-keygen-test.c (test_main): Updated expected
signatures.
* examples/random-prime.c (main): Updated for nettle_random_prime
change.
* testsuite/random-prime-test.c (test_main): Likewise.
* rsa-keygen.c (bignum_random_prime): Deleted function.
(rsa_generate_keypair): Use new nettle_random_prime. Generate
secret factors p and q with the two most significant bits set.
* dsa-keygen.c (dsa_generate_keypair): Updated for changes in
nettle_random_prime and _nettle_generate_pocklington_prime. Invoke
progress callback.
* bignum-random-prime.c (_nettle_generate_pocklington_prime): New
argument top_bits_set, to optionally generate primes with the two
most significant bits set. Reordered argument list.
(nettle_random_prime): Likewise, added top_bits_set argument.
Invoke progress callback when a prime is generated.
2010-05-26 Niels Möller <nisse@lysator.liu.se>
* dsa-keygen.c (dsa_generate_keypair): Use
_nettle_generate_pocklington_prime. Deleted old key generation
code.
* bignum-random-prime.c (_nettle_generate_pocklington_prime): Also
return the used r. Updated caller.
* examples/random-prime.c (main): Allow sizes down to 3 bits.
* bignum-random-prime.c (_nettle_generate_pocklington_prime): New
function. Rely on mpz_probab_prime_p (for lack of a trial division
function) for trial division.
(nettle_random_prime): Rewritten. Uses the prime table for the
smallest sizes, then trial division using a new set of tables, and
then Maurer's algorithm, calling the new
_nettle_generate_pocklington_prime for the final search.
2010-05-25 Niels Möller <nisse@lysator.liu.se>
* testsuite/dsa-test.c (test_main): Updated for dsa testing
changes.
* testsuite/dsa-keygen-test.c (test_main): Test dsa256.
* testsuite/testutils.h (struct nettle_mac): New struct, currently
unused.
* testsuite/testutils.c (test_mac): New function (currently not
used).
(test_dsa): Replaced by two new functions...
(test_dsa160): New function.
(test_dsa256): New function.
(test_dsa_key): New argument q_size.
(DSA_VERIFY): Generalized.
* dsa-keygen.c (dsa_generate_keypair): Rewritten, now generating
primes using Pocklington's theorem. Takes both p_size and q_size
as arguments.
2010-05-20 Niels Möller <nisse@lysator.liu.se>
* bignum-random-prime.c (miller_rabin_pocklington): Fixed broken
logic when Miller-rabin succeeds early.
2010-04-09 Niels Möller <nisse@lysator.liu.se>
* bignum-next-prime.c: Include stdlib.h, needed for alloca on
freebsd.
* hmac.c: Likewise.
* examples/Makefile.in (SOURCES): Added random-prime.c.
* examples/random-prime.c: New program.
* testsuite/Makefile.in (TS_NETTLE_SOURCES): Moved
knuth-lfib-test.c, cbc-test.c, ctr-test.c, hmac-test.c here, from
TS_HOGWEED_SOURCES.
(TS_HOGWEED_SOURCES): Added random-prime-test.c.
* testsuite/random-prime-test.c: New test case.
* examples/next-prime.c (main): With no command line arguments.
exit after dislaying usage message.
* examples/io.c (simple_random): Free buffer when done.
* configure.ac: Changed message, say CC is the recommended
way to configure the ABI.
* bignum-random.c: Deleted test of HAVE_LIBGMP.
* bignum.c: Likewise.
* sexp2bignum.c: Likewise.
* Makefile.in (hogweed_SOURCES): Added bignum-random-prime.c.
* bignum-random-prime.c (nettle_random_prime): New file, new
function.
2010-03-31 Niels Möller <nisse@lysator.liu.se>
* examples/nettle-benchmark.c (main): Benchmark sha224.
2010-03-30 Niels Möller <nisse@lysator.liu.se>
* testsuite/testutils.c (DSA_VERIFY): Updated for dsa_sha1_verify
rename.
(test_dsa): Check return value from dsa_sha1_sign.
* Makefile.in (hogweed_SOURCES): Added dsa-sha1-sign.c,
dsa-sha1-verify.c, dsa-sha256-sign.c, and dsa-sha256-verify.c.
* dsa.h: Updated and added dsa declarations.
* dsa-sha256-verify.c (dsa_sha256_verify_digest): New file, new
function.
(dsa_sha256_verify): New function.
* dsa-sha256-sign.c (dsa_sha256_sign_digest): New file, new
function.
(dsa_sha256_sign): New function.
* dsa-sha1-verify.c (dsa_sha1_verify_digest): New file. Moved and
renamed function, from dsa_verify_digest, rewrote to use
_dsa_verify.
(dsa_sha1_verify): Analogous change, renamed from dsa_verify.
* dsa-sha1-sign.c (dsa_sha1_sign_digest): New file. Moved and
renamed function, from dsa_sign_digest, rewrote to use _dsa_sign,
and added return value.
(dsa_sha1_sign): Analogous change, renamed from dsa_sign.
* dsa-verify.c (_dsa_verify): New general verification function,
for any hash.
* dsa-sign.c (_dsa_sign): New general signing function, for any
hash. Returns success code, like the rsa signture functions.
2010-03-29 Niels Möller <nisse@lysator.liu.se>
* configure.ac (ABI): Attempt to use a better, ABI-dependant,
default value for libdir.
* x86/md5-compress.asm: Fixed function name in epilogue.
* asm.m4 (EPILOGUE): Use . to refer to current address.
* configure.ac (ABI): Detect which ABI the compiler is using.
On x86_64, also check for __arch64__.
2010-03-28 Niels Möller <nisse@lysator.liu.se>
* configure.ac (asm_path): For x86_64, check if compiler is
generating 32-bit code.
2010-03-27 Niels Möller <nisse@lysator.liu.se>
* testsuite/hmac-test.c (test_main): Rewrote rest of tests to use
HMAC_TEST, and added more tests from Daniel Kahn Gillmor and from
RFC 4231.
* Makefile.in (nettle_SOURCES): Added hmac-sha224.c and
hmac-sha384.c.
* hmac.h: Added declarations of hmac-sha224 and hmac-sha384.
* hmac-sha224.c: New file.
2010-03-26 Niels Möller <nisse@lysator.liu.se>
* testsuite/hmac-test.c (HMAC_TEST): New macro.
(test_main): Use HMAC_TEST for the md5 and sha1 tests, and add
test vectors from Daniel Kahn Gillmor.
* testsuite/Makefile.in (TS_NETTLE_SOURCES): Added sha224-test.c.
* Makefile.in (nettle_SOURCES): Added sha224-meta.c and
write-be32.c.
(DISTFILES): Added nettle-write.h.
* sha.h: Added declarations for sha224. Some are aliases for the
corresponding sha256 definition.
* sha256.c (sha256_digest): Use _nettle_write_be32.
(sha224_init): New function.
(sha224_digest): New function.
* sha1.c (sha1_digest): Use _nettle_write_be32.
* nettle-internal.h (NETTLE_MAX_HASH_BLOCK_SIZE)
(NETTLE_MAX_HASH_DIGEST_SIZE): Increased, to take sha512 into
account.
* nettle-write.h: New file.
* write-be32.c (_nettle_write_be32): New file, new function.
* sha224-meta.c: New file.
2010-03-25 Niels Möller <nisse@lysator.liu.se>
* hmac-sha384.c: New file.
* testsuite/sha224-test.c: New file.
* testsuite/md4-test.c (test_main): More test vectors, provided by
Daniel Kahn Gillmor.
* testsuite/md5-test.c (test_main): Likewise.
* testsuite/sha1-test.c (test_main): Likewise.
* testsuite/sha256-test.c (test_main): Likewise.
* testsuite/sha384-test.c (test_main): Likewise.
* testsuite/sha512-test.c (test_main): Likewise.
* configure.ac: Bumped version numbers. Package version
nettle-2.1, library versions libnettle.so.3.1, libhogweed.so.2.0.
* examples/nettle-benchmark.c (main): Benchmark sha384.
* testsuite/Makefile.in (TS_NETTLE_SOURCES): Added sha384-test.c.
* testsuite/sha384-test.c: New file.
* Makefile.in (nettle_SOURCES): Added sha384-meta.c.
* sha384-meta.c: New file.
* sha.h: Added declarations for sha384. Some are aliases for the
corresponding sha512 definition.
* sha512.c (sha512_write_digest): New function.
(sha512_digest): Use it.
(sha384_init): New function.
(sha384_digest): New function.
2010-03-24 Niels Möller <nisse@lysator.liu.se>
* sha512.c: (sha512_digest): Simplified handling of any final
partial word of the digest.
* sha512.c: Reorganized to use _nettle_sha512_compress.
* sha512-compress.c (_nettle_sha512_compress): Compression
function extracted from sha512.c to a new file.
* Makefile.in (nettle_SOURCES): Added sha256-compress.c and
sha512-compress.c.
* sha256.c: Reorganized to use _nettle_sha256_compress.
* sha256-compress.c (_nettle_sha256_compress): Compression
function extracted from sha256.c to a new file.
* examples/nettle-benchmark.c (main): Benchmark sha512.
* rsa-keygen.c (rsa_generate_keypair): Ensure that bit size of e
is less than bit size of n, and check for the unlikely case p = q.
* rsa.h (RSA_MINIMUM_N_OCTETS, RSA_MINIMUM_N_BITS): Reduced, to
correspond to pkcs#1 encryption of single byte messagees.
* pgp-encode.c (pgp_put_rsa_sha1_signature): Check return value
from rsa_sha1_sign.
* rsa-compat.c (R_SignFinal): Likewise.
* rsa-md5-sign.c (rsa_md5_sign): Check and propagate return value
from pkcs1_rsa_md5_encode.
(rsa_md5_sign_digest): Check and propagate return value from
pkcs1_rsa_md5_encode_digest.
* rsa-md5-verify.c (rsa_md5_verify): Check return value from
pkcs1_rsa_md5_encode.
(rsa_md5_verify_digest): Check return value from
pkcs1_rsa_md5_encode_digest.
* rsa-sha1-sign.c: Analogous changes.
* rsa-sha1-verify.c: Analogous changes.
* rsa-sha256-sign.c: Analogous changes.
* rsa-sha256-verify.c: Analogous changes.
* rsa-sha512-sign.c: Analogous changes.
* rsa-sha512-verify.c: Analogous changes.
* pkcs1-rsa-md5.c (pkcs1_rsa_md5_encode)
(pkcs1_rsa_md5_encode_digest): Added return value. Check and
propagate return value from pkcs1_signature_prefix.
* pkcs1-rsa-sha256.c (pkcs1_rsa_sha256_encode)
(pkcs1_rsa_sha256_encode_digest): Likewise.
* pkcs1-rsa-sha1.c (pkcs1_rsa_sha1_encode)
(pkcs1_rsa_sha1_encode_digest): Likewise.
* pkcs1-rsa-sha512.c (pkcs1_rsa_sha512_encode)
(pkcs1_rsa_sha512_encode_digest): Likewise.
* pkcs1.c (pkcs1_signature_prefix): Interface change, take both
the total size and digest size as arguments, and return a status
code to say if the size was large enough.
* testsuite/Makefile.in: Added hogweed dependency for the test
programs.
2010-03-23 Niels Möller <nisse@lysator.liu.se>
* testsuite/rsa-test.c (test_main): Test signing with sha512.
* testsuite/testutils.c (test_rsa_sha512): New function.
* Makefile.in (hogweed_SOURCES): Added pkcs1-rsa-sha512.c,
rsa-sha512-sign.c and rsa-sha512-verify.c.
* rsa.h: Added prototypes for sha512-related functions.
(RSA_MINIMUM_N_OCTETS, RSA_MINIMUM_N_BITS): Increased.
* pkcs1.h: Added prototypes for sha512-related functions.
* rsa-sha512-verify.c: New file.
* rsa-sha512-sign.c: New file.
* pkcs1-rsa-sha512.c: New file.
2010-03-22 Niels Möller <nisse@lysator.liu.se>
* Makefile.in (nettle_SOURCES): Added hmac-sha512.c.
* testsuite/hmac-test.c (test_main): Added test cases for
hmac-sha512.
* hmac.h: Declare functions sha512-related functions.
* hmac-sha512.c (hmac_sha512_set_key): New file.
Basic sha512 support.
* testsuite/Makefile.in (TS_NETTLE_SOURCES): Added sha512-test.c.
* testsuite/sha512-test.c: New file.
* macros.h (READ_UINT64, WRITE_UINT64): New macros.
* Makefile.in (nettle_SOURCES): Added sha512.c and sha512-meta.c.
* sha.h: Added sha512-related declarations.
* nettle-meta.h: Likewise.
* sha512-meta.c: New file.
* sha512.c: New file.
2010-03-06 Niels Möller <nisse@lysator.liu.se>
* Makefile.in (distdir): Include x86_64 assembler files.
2010-01-20 Niels Möller <nisse@lysator.liu.se>
* configure.ac: Check for mpz_powm_sec.
2010-01-13 Niels Möller <nisse@lysator.liu.se>
* Makefile.in ($(LIBHOGWEED_FORLINK)): Depend on
$(LIBNETTLE_FORLINK).
* configure.ac (LIBHOGWEED_LIBS): Added -lnettle -lgmp for the
default case. Follows debian, and also makes dlopen of
libhogweed.so work, without having to use RTLD_GLOBAL.
(LIBHOGWEED_LINK): Added -L., to find our libnettle.so.
2009-10-21 Niels Möller <nisse@lysator.liu.se>
* tools/Makefile.in (pkcs1-conv$(EXEEXT)): Added dependency on
../libhogweed.a.
2009-10-19 Niels Möller <nisse@lysator.liu.se>
* tools/pkcs1-conv.c: Updated for dsa/der interface change.
* der2dsa.c (dsa_public_key_from_der_iterators): Split into two
new functions...
(dsa_params_from_der_iterator): New function.
(dsa_public_key_from_der_iterator): New function.
(dsa_openssl_private_key_from_der_iterator): Renamed, was
dsa_private_key_from_der_iterator.
(dsa_openssl_private_key_from_der): Likewise.
* dsa.h: Corresponding changees to prototypes and #defines.
2009-10-12 Niels Möller <nisse@lysator.liu.se>
* sexp-format.c: Removed conditioning on HAVE_LIBGMP.
* tools/pkcs1-conv.c: Support for DSA keys, contributed by Magnus
Holmgren.
* Makefile.in (hogweed_SOURCES): Added dsa2sexp.c and der2dsa.c.
* der2dsa.c: New file, contributed by Magnus Holmgren.
* dsa2sexp.c: Likewise.
* dsa.h: Added prototypes.
* configure.ac (LIBHOGWEED_MINOR): Bumped libhogweed minor
version, now it's 1.1.
* testsuite/rsa2sexp-test.c (test_main): Updated testcase for
"rsa-pkcs1".
2009-10-11 Niels Möller <nisse@lysator.liu.se>
* rsa2sexp.c (rsa_keypair_to_sexp): Changed default algorithm name
to "rsa-pkcs1".
2009-09-20 Niels Möller <nisse@lysator.liu.se>
* x86/sha1-compress.asm: Improved performance by 17% on AMD K7,
by letting loopmix scramble the instruction order.
2009-09-15 Niels Möller <nisse@lysator.liu.se>
* x86/sha1-compress.asm: Cleanup, removing old cruft. Slight
improvement to ROUND_F1_NOEXP. Slight reduction of
dependency-chains.
2009-08-25 Niels Möller <nisse@lysator.liu.se>
* x86/sha1-compress.asm: Eliminated tmp variable for f3 rounds.
* examples/nettle-benchmark.c (bench_sha1_compress): New function,
for precise benchmarking of the compression function.
2009-06-08 Niels Möller <nisse@lysator.liu.se>
* Released nettle-2.0.
2009-06-04 Niels Möller <nisse@lysator.liu.se>
* configure.ac: Set version to 2.0
2009-05-30 Niels Möller <nisse@lysator.liu.se>
* Makefile.in (.texinfo.info): Don't use a temporary output file
$@T, trust makeinfo to remove output file on errors.
2009-05-19 Niels Möller <nisse@lysator.liu.se>
* nettle.texinfo: Changed license to public domain.
2009-05-11 Niels Möller <nisse@lysator.liu.se>
* nettle.texinfo: Fixes from Karl Berry. Added some more index
terms.
2009-03-06 Niels Möller <nisse@lysator.liu.se>
* x86_64/aes-encrypt-internal.asm: Reduced unrolling. Keep state
in %eax--%edx only.
* x86_64/aes-decrypt-internal.asm: Likewise.
* x86_64/aes.m4 (MOVE_HREG): Deleted, no longer needed.
(AES_STORE): Reduced offsets.
(AES_ROUND): Use HREG directly, not MOVE_HREG.
* x86_64/aes-decrypt-internal.asm: Rearrange register allocation.
Put SA--SD in %eax--%edx, so the second byte can be accessed as
%ah-%dh. TD is not needed, SD can be reused. Use the register that
is saved for the outer loop counter, getting it off the stack.
* x86_64/aes-encrypt-internal.asm: Likewise.
* x86_64/aes.m4 (HREG, MOVE_HREG): New macros.
(XREG): Fixed bug in handling of %r8 and %r9.
(AES_ROUND): Use MOVE_HREG.
2009-02-10 Niels Möller <nisse@lysator.liu.se>
* base16-meta.c (base16_encode_update_wrapper): Mark ctx argument
as UNUSED.
* testsuite/sexp-conv-test: Updated testcases for improved
handling of comments.
* tools/sexp-conv.c (sexp_convert_item): Use sexp_put_soft_newline
to terminate comments, and modify indentation for the case that a
list starts with a comment.
* tools/output.c (sexp_output_init): Initialize soft_newline.
(sexp_put_raw_char): Clear soft_newline.
(sexp_put_newline): Check and reset soft_newline.
(sexp_put_soft_newline): New function.
* tools/output.h (struct sexp_output): Removed union with single
element, and updated all users. New attribute soft_newline.
2008-12-22 Niels Möller <nisse@lysator.liu.se>
* Makefile.in ($(des_headers)): Create files in $(srcdir).
2008-11-28 Niels Möller <nisse@lysator.liu.se>
* testsuite/cxx-test.cxx: Include <cstdio>.
2008-11-22 Niels Möller <nisse@lysator.liu.se>
* yarrow256.c (yarrow256_fast_reseed): Set ctx->seeded = 1, so
that it is set if and only if the aes context has been initialized
with aes_set_encrypt_key.
(yarrow256_seed): No need to set ctx->seeded here.
(yarrow256_update): Likewise.
2008-11-04 Niels Möller <nisse@lysator.liu.se>
* examples/next-prime.c (main): Avoid using gmp_fprintf, to stay
compatible with gmp-3.1.
2008-11-01 Niels Möller <nisse@lysator.liu.se>
* nettle.texinfo: Updated for 2.0. New section on linking.
* nettle-types.h, nettle-meta.h: Moved all typedefs for function
types to nettle-types.h. Use non-pointer types, so that the types
can be used to declare functions. Updated all users.
2008-10-31 Niels Möller <nisse@lysator.liu.se>
* testsuite/yarrow-test.c (test_main): Updated for seed file
changes.
* sha-example.c (display_hex): Use %02x, not %2x.
2008-10-30 Niels Möller <nisse@lysator.liu.se>
* tools/sexp-conv.c (main): Fixed file locking.
2008-10-25 Niels Möller <nisse@lysator.liu.se>
* configure.ac: Set version to 2.0rc1.
* examples/Makefile.in (next-prime$(EXEEXT)): Added -lnettle to
linker.
2008-10-24 Niels Möller <nisse@lysator.liu.se>
* sha256.c (ROUND): Simplified macro.
* yarrow256.c (yarrow256_fast_reseed): Renamed (was
yarrow_fast_reseed) and made non-static. Don't generate seed file
here, let the application use yarrow256_random instead.
(yarrow256_slow_reseed): Renamed (was yarrow_slow_reseed) and made
non-static.
(yarrow256_force_reseed): Deleted function, use
yarrow256_slow_reseed instead. For backwards compatibility,
yarrow.h defines yarrow256_force_reseed as an alias for that
function.
* yarrow.h (struct yarrow256_ctx): Deleted seed_file buffer.
2008-09-17 Niels Möller <nisse@lysator.liu.se>
* x86/arcfour-crypt.asm: Improved loop logic, and unrolled
loop twice. Gave a modest speedup.
2008-09-15 Niels Möller <nisse@lysator.liu.se>
* yarrow256.c (yarrow256_seed): Disallow length == 0.
* base64-decode.c (decode_table): Added vertical tab (VT) and form
feed (FF) as white space characters.
* x86_64/aes-decrypt-internal.asm: New file.
2008-09-13 Niels Möller <nisse@lysator.liu.se>
* x86/aes-encrypt-internal.asm: Replaced pushl and popl in the
loop with movl. Eliminated redundant movl.
* x86/aes-decrypt-internal.asm: Likewise.
* x86_64/aes.m4: New file.
* x86/aes-encrypt-internal.asm: Updated for AES_FINAL_ROUND. Only
three times through the substitution loop.
* x86/aes-decrypt-internal.asm: Likewise.
* x86_64/aes-encrypt-internal.asm: Likewise.
* x86/aes.m4 (AES_FINAL_ROUND): Do the substitution on the least
significant byte here.
* x86/aes-encrypt-internal.asm: Updated use of AES_SUBST_BYTE. USe
decl for outer loop.
* x86/aes-decrypt-internal.asm: Likewise.
* x86/aes.m4 (LREG, HREG): New macros.
(AES_SUBST_BYTE): Take state registers as argument. Use LREG to
get the corresponding byte register.
(AES_ROUND): Use movzbl together with LREG and HREG.
(AES_SUBST_BYTE): Likewise.
2008-09-10 Niels Möller <nisse@lysator.liu.se>
* x86_64/sha1-compress.asm: Avoid using registers %rbx and %rbp,
which must be preserved.
2008-09-08 Niels Möller <nisse@lysator.liu.se>
* Makefile.in (stamp-h.in): Use $(AUTOHEADER).
* x86_64/sha1-compress.asm: New x86_64 assembler, based on the x86
version.
* configure.ac (asm_path): Set up asm_path for x86_64.
* x86_64/machine.m4: New file, new directory.
2008-08-28 Niels Möller <nisse@lysator.liu.se>
* examples/eratosthenes.c (main): Rewrote block-wise sieving to
use less memory. New options -s and -v.
2008-08-27 Niels Möller <nisse@lysator.liu.se>
* testsuite/sexp-conv-test (print_raw, print_nl): Use printf.
Updated testcases with comments; comments are now preserved.
* tools/sexp-conv.c (sexp_convert_item): Keep comments in advanced
output.
(parse_options): New --lock option.
(main): Optionally lock output file.
* tools/parse.c (sexp_check_token): Removed check for "any" token.
All callers specify the token they expect.
(sexp_parse): Pass on comment tokens.
* tools/output.c (sexp_put_data): Made non-static.
* tools/input.c (sexp_get_comment): New function.
(sexp_get_token): Use sexp_get_comment.
* tools/misc.h (enum sexp_token): Start enumeration with zero, zero
is no longer used to mean any type. New type SEXP_COMMENT.
* configure.ac: Check for fcntl file locking.
2008-08-26 Niels Möller <nisse@lysator.liu.se>
* Makefile.in (tags-here): Put TAGS file in the source directory.
* examples/Makefile.in (tags): Likewise.
* testsuite/Makefile.in (tags): Likewise.
* tools/Makefile.in (tags): Likewise.
2008-02-29 Niels Möller <nisse@lysator.liu.se>
* examples/Makefile.in (SOURCES): Added next-prime.c.
2008-01-05 Niels Möller <nisse@lysator.liu.se>
* examples/Makefile.in (TARGETS): Added eratosthenes and next-prime.
(next-prime, eratosthenes): New rules.
(nettle-benchmark): Don't rely on $@.
* examples/eratosthenes.c (find_first_one): Optimized, using
slightly larger table.
(main): Use atol, rather than atoi.
* testsuite/symbols-test: Check symbols also in libhogweed.
* examples/next-prime.c: New file.
Deleted code for detailed timing.
* Makefile.in (hogweed_SOURCES): Added bignum-next-prime.c.
(DISTFILES): Added prime-list.h.
(hogweed_OBJS): Removed $(LIBOBJS).
* bignum-next-prime.c (nettle_next_prime): Renamed function, for
name space reasons. Was bignum_next_prime. Updated call in
rsa-keygen.c.
(primes): Use prime-list.h.
(nettle_next_prime): Skip Fermat test. Use mpz_millerrabin
directly, rather than mpz_probab_prime_p, when the former is
available.
* bignum.h (nettle_next_prime): New prototype.
* rsa-keygen.c (bignum_next_prime): Deleted, moved to
bignum-next-prime.c. Call with a larger prime limit, this improves
the running time of lsh-keygen by roughly 25%.
* prime-list.h: List of odd primes < 2^16.
* configure.ac: Check for sizeof(long).
2008-01-03 Niels Möller <nisse@lysator.liu.se>
* examples/nettle-benchmark.c (main): Removed incorrect UNUSED
from declaration.
* bignum-next-prime.c: Moved the bignum_next_prime function to a
separate file.
2007-09-08 Niels Möller <nisse@lysator.liu.se>
* sparc64/aes-encrypt-internal.asm: The directory with the aes.m4
include file was renamed from "sparc" to "sparc32". Updated include.
* sparc64/aes-decrypt-internal.asm: Likewise.
* sparc32/aes-encrypt-internal.asm: Likewise.
* sparc32/aes-decrypt-internal.asm: Likewise.
2007-09-07 Niels Möller <nisse@lysator.liu.se>
* examples/read_rsa_key.c: Include stdlib.h.
2007-06-02 Niels Möller <nisse@lysator.liu.se>
* Makefile.in: Typo fixes to install targets, spotted by Magnus
Holmgren.
2007-05-14 Niels Möller <niels@s3.kth.se>
* configure.ac: Fixed copy-and-paste errors in shared library
name setup.
* config.make.in (LIBNETTLE_SONAME, LIBHOGWEED_SONAME): Define.
* Makefile.in (libnettle.so, libhogweed.so): Fixed rules.
* Makefile.in: Split nettle library into two files, libnettle.a
and libhogweed.a, and similarly for the shared libraries.
* configure.ac: Bumped nettle so-versions to 3.0. Set hogweed
so-versions to 1.0. New makefile conditionals IF_SHARED and
IF_HOGWEED. Renamed WITH_PUBLIC_KEY to WITH_HOGWEED. Deleted
SHLIBTARGET, SHLIBINSTALL, RSA_EXAMPLES and RSA_TOOLS.
* config.make.in: Updated for hogweed split.
* C source files: Don't use WITH_PUBLIC_KEY / WITH_HOGWEED, the
Makefile sorts out which files should be compiled.
* pgp.h: Include bignum.h, don't pretend to work without bignums.
* pgp-encode.c (pgp_put_mpi, pgp_put_public_rsa_key)
(pgp_put_rsa_sha1_signature): Define unconditionally. Removed the
checking of HAVE_LIBGMP and WITH_PUBLIC_KEY.
* examples/io.h: Use WITH_HOGWEED, not WITH_PUBLIC_KEY.
* examples/io.c (read_rsa_key): Deleted, moved to...
* examples/read_rsa_key.c: New file, extracted from io.c.
* examples/Makefile.in: Use IF_HOGWEED instead of RSA_EXAMPLES.
Link appropriate programs with -lhogweed.
(SOURCES): Added read_rsa_key.c.
* tools/Makefile.in (pkcs1-conv): Use IF_HOGWEED, not @RSA_TOOLS@,
for configuration. Link with -lhogweed.
* testsuite/testutils.h: Use WITH_HOGWEED, not WITH_PUBLIC_KEY.
* testsuite/testutils.c: Likewise.
* testsuite/Makefile.in (TS_NETTLE_SOURCES, TS_HOGWEED_SOURCES):
Separate test cases using nettle and those also using hogweed.
2007-04-05 Niels Möller <nisse@lysator.liu.se>
* Moved in CVS tree. Also renamed directory sparc to sparc32.
2007-02-24 Niels Möller <nisse@lysator.liu.se>
* Makefile.in (clean-here): Remove .lib directory.
(distclean-here): Remove machine.m4.
2006-12-05 Niels Möller <nisse@lysator.liu.se>
* configure.ac: AC_PREREQ 2.61, for AC_PROG_MKDIR_P.
* config.make.in (datarootdir): New directory variable (for
autoconf-2.61).
2006-11-28 Niels Möller <nisse@lysator.liu.se>
* configure.ac: Bumped version to 1.16.
* Released nettle-1.15.
2006-11-27 Niels Möller <nisse@lysator.liu.se>
* NEWS: New entry for nettle-1.15.
* configure.ac (SHLIBMINOR): Bumped version. Library name is now
libnettle.so.2.6.
* sha256.c: Changed copyright notice to use the LGPL.
* Makefile.in (DISTFILES): Added COPYING.LIB.
* COPYING.LIB: New file (previously only the plain GPL was
included in the distribution).
* nettle.texinfo: Updated vor nettle-1.15.
* testsuite/rsa-test.c (test_main): Use test_rsa_sha256.
* testsuite/testutils.c (test_rsa_sha256): New function.
* testsuite/Makefile.in (DISTFILES): Replaces rfc1750.txt by
gold-bug.txt.
* rsa.h (rsa_sha256_sign, rsa_sha256_verify)
(rsa_sha256_sign_digest, rsa_sha256_verify_digest): New declarations.
(RSA_MINIMUM_N_OCTETS, RSA_MINIMUM_N_BITS): Increased to
62 octets and 489 bits, respectively, for supporting sha256.
* pkcs1.h (pkcs1_rsa_sha256_encode)
(pkcs1_rsa_sha256_encode_digest): New declarations and name
mangling symbols.
* Makefile.in (nettle_SOURCES): Added pkcs1-rsa-sha256.c,
rsa-sha256-sign.c, rsa-sha256-verify.c.
* pkcs1-rsa-sha256.c, rsa-sha256-sign.c, rsa-sha256-verify.c: New
files.
* COPYING, INSTALL, install-sh, texinfo.tex: Updated files, from
automake-1.10.
2006-11-27 Niels Möller <niels@s3.kth.se>
* tools/Makefile.in (install): Use MKDIR_P to create installation
directory. Install only one file at a time.
* Makefile.in (MKDIR_P): Use MKDIR_P for creating installation
directories.
* configure.ac: Use AC_PROG_MKDIR_P.
2006-11-24 Niels Möller <nisse@lysator.liu.se>
* testsuite/yarrow-test.c (test_main): Use gold-bug.txt as input
file, instead of rfc1750.txt.
* testsuite/gold-bug.txt: New test input file for yarrow-test.
The copyright on this short story by Edgar Allan Poe has expired.
* testsuite/rfc1750.txt: Deleted file. Debian considers RFC:s
non-free, and it was expired anyway. Replaced by gold-bug.txt.
2006-11-24 Niels Möller <niels@s3.kth.se>
* Almost all header files: Added C++ guards.
* configure.ac: Test if the system has any C++ compiler.
* config.make.in (CXX, CXXFLAGS, COMPILE_CXX, LINK_CXX): New variables.
* testsuite/Makefile.in: New variables TS_C and TS_CXX. Setup for
compiling the C++ file cxx-test.cxx.
* testsuite/cxx-test.cxx: New testcase, trying to use nettle from
a C++ program.
2006-08-28 Niels Möller <niels@s3.kth.se>
* index.html: Added section on language bindings.
2006-06-10 Niels Möller <niels@s3.kth.se>
* configure.ac: Darwin shared library support, from Grant
Robinsson.
2006-05-18 Niels Möller <nisse@lysator.liu.se>
* src/nettle/x86/aes.asm: Deleted unused file.
* aes-decrypt.c (_aes_decrypt_table): Deleted the indexing array,
previously commented out.
* aes-encrypt-table.c (_aes_encrypt_table): Likewise.
* Makefile.in (.texinfo.info, .dvi.ps): Use more quotes with
basename.
(install-here, install-shared, install-info, install-headers): Use
plain mkdir, not $(INSTALL) -d.
2006-05-16 Niels Möller <niels@s3.kth.se>
Merged from the lsh experimental branch.
2006-04-26 Niels Möller <nisse@lysator.liu.se>
* examples/rsa-decrypt.c: Don't include "getopt.h", since it's not used.
* examples/nettle-benchmark.c: Include "getopt.h".
* examples/Makefile.in (GETOPT_OBJS): New variable.
(rsa-keygen, rsa-encrypt, nettle-benchmark): Depend on and link
with $(GETOPT_OBJS).
* x86/aes-decrypt-internal.asm: Use ALIGN.
* x86/aes-encrypt-internal.asm: Likewise.
* x86/arcfour-crypt.asm: Likewise.
* x86/md5-compress.asm: Likewise.
* x86/sha1-compress.asm: Likewise.
* config.m4.in (ASM_ALIGN_LOG): Substitute.
* configure.ac (ASM_ALIGN_LOG): Check if .align directive is
logarithmic.
* asm.m4 (ALIGN): New macro. Takes a logarithmic argument, and
expands to a .align directive.
2006-04-21 Niels Möller <nisse@lysator.liu.se>
* nettle.texinfo (Public-key algorithms): Say that the public key
operations are undocumented, not unsupported. Reported by Jeronimo
Pellegrini.
2006-04-08 Niels Möller <nisse@lysator.liu.se>
* tools/pkcs1-conv.c (read_pem): Fixed c99-style declaration.
Reported by Henrik Grubbström.
2006-01-31 Niels Möller <niels@s3.kth.se>
* examples/rsa-verify.c: Fixed typo in usage message.
2005-12-05 Niels Möller <nisse@lysator.liu.se>
* configure.ac: Bumped version to 1.15,
* Released nettle-1.14.
* NEWS: Updated for 1.14.
* configure.ac (SHLIBMINOR): Increased minor number. Library
version is now libnettle.so.2.5, soname still libnettle.so.2.
2005-11-28 Niels Möller <nisse@lysator.liu.se>
* config.make.in (INSTALL): Don't substitute INSTALL, INSTALL_DATA
and friends here, to get a correct a relative filename for
install-sh when used in tools/Makefile.
* tools/Makefile.in (INSTALL): Substitute INSTALL, INSTALL_DATA
and friends here.
* Makefile.in (INSTALL): Likewise.
2005-11-27 Niels Möller <nisse@lysator.liu.se>
* Makefile.in (.texinfo.pdf): New rule. Avoid dependency on
intermediate .dvi and .ps files.
* testsuite/Makefile.in (clean): Delete sha1-huge-test.
* Makefile.in (install-info, install-headers): Don't use $< and
$?; Solaris make doesn't support them in explicit rules.
2005-11-26 Niels Möller <nisse@lysator.liu.se>
* testsuite/Makefile.in: Include .test-rules.make, which contains
the rules for all the test executables.
(test-rules): New rule, to update this file.
(DISTFILES): Added $(EXTRA_SOURCES).
* testsuite/.test-rules.make: Automatically generated file for
building the test programs.
2005-11-25 Niels Möller <nisse@lysator.liu.se>
* configure.ac: Disable assembler when compiling with rntcl.
* tools/Makefile.in (pkcs1_conv_SOURCES): New variable.
(pkcs1-conv): Link with getopt.o and getopt1.o.
* Makefile.in (aesdata, desdata, shadata): Use explicit rules for
executables.
* testsuite/Makefile.in: Use %-rules for building the -test
executables, in addition to the suffix rules. Hopefully, this
should make all of GNU make, BSD make and Solaris make happy.
Use $(EXEEXT) and $(OBJEXT) more consistently.
* examples/Makefile.in: Use explicit rules for all executable
targets. Use $(EXEEXT) and $(OBJEXT) more consistently.
2005-11-25 Niels Möller <niels@s3.kth.se>
* testsuite/Makefile.in: Avoid using single-suffix rule to build
executables.
2005-11-24 Niels Möller <niels@s3.kth.se>
* Makefile.in (distdir): Use [ -f, not [ -e, since the latter
is less portable, and not supported by Solaris /bin/sh.
2005-11-23 Niels Möller <niels@s3.kth.se>
* testsuite/Makefile.in (DISTFILES): Added teardown-env.
* testsuite/teardown-env: New file. Delete files created by the
testsuite.
2005-11-21 Niels Möller <nisse@lysator.liu.se>
* testsuite/testutils.c (main): Fixed check for -v option. Spotted
by Goran K.
2005-11-21 Niels Möller <niels@s3.kth.se>
* ctr.h (CTR_CTX, CTR_CRYPT): Fixed bugs, spotted by Goran K.
2005-11-20 Niels Möller <nisse@lysator.liu.se>
* Makefile.in (nettle_SOURCES): Added der2rsa.c.
* testsuite/Makefile.in (TS_SH): Added pkcs1-conv-test.
* tools/Makefile.in (TARGETS): Added @RSA_TOOLS@.
(SOURCES): Added pkcs1-conv.c.
(pkcs1-conv): New rule.
* tools/pkcs1-conv.c: New program.
* testsuite/pkcs1-conv-test: New file.
* examples/rsa-verify-test: Use rsa-sign to create signature.
* examples/io.c (read_file): Fixed spelling in error message.
* rsa.h (rsa_public_key_from_der_iterator)
(rsa_private_key_from_der_iterator, rsa_keypair_from_der): Declare
functions.
* der2rsa.c: New file.
* der-iterator.c (asn1_der_iterator_init): Initialize length and
data.
(asn1_der_iterator_next): Support for lengths >= 0x80.
(asn1_der_decode_constructed_last, asn1_der_decode_bitstring)
(asn1_der_decode_bitstring_last): New functions.
(asn1_der_get_bignum): Check for non-mininal encodings.
* configure.ac (RSA_TOOLS): New substituted variable. Includes
pkcs1-conv, when public-key support is enabled.
* bignum.h (nettle_asn1_der_get_bignum): Include nettle_-prefix in
declaration.
* asn1.h: Added name mangling defines, and a few new declarations.
2005-11-13 Niels Möller <nisse@lysator.liu.se>
* Makefile.in (nettle_SOURCES): Added der-iterator.c.
(HEADERS): Added asn1.h.
* bignum.h (asn1_der_get_bignum): Declare function.
* der-iterator.c: New file.
* asn1.h: New file.
2005-11-07 Niels Möller <nisse@lysator.liu.se>
* examples/nettle-benchmark.c: Check HAVE_UNISTD_H.
* examples/Makefile.in (TARGETS): Use $(EXEEXT).
* tools/Makefile.in (TARGETS, sexp-conv, nettle-lfib-stream): Likewise.
* configure.ac: Use $host_cpu, not $host, when setting up the
assembler path. Use $host_os, not uname, when setting up shared
library flags.
* Makefile.in (des.$(OBJEXT)): Use OBJEXT.
* config.guess, config.sub: In the CVS tree, moved files to the
lsh top-level directory.
2005-10-23 Niels Möller <nisse@lysator.liu.se>
* sparc64/arcfour-crypt.asm: New file, almost the same as
sparc/arcfour-crypt.asm.
* examples/nettle-benchmark.c (display): Use two decimal places.
* sparc/arcfour-crypt.asm: Reorganized. Main loop unrolled four
times. Uses aligned 32-bit write accesses at DST. Still uses 8-bit
read accesses at SRC; could be improved int he case that SRC and
DST have compatible alignment.
2005-10-19 Niels Möller <niels@s3.kth.se>
* testsuite/arcfour-test.c (test_main): New testcase with 512
bytes of data.
2005-10-19 Niels Möller <nisse@lysator.liu.se>
* sparc/arcfour-crypt.asm: Fixed bug, spotted by Mikael Kalms. We
must order the store at [CTX+I] before the load of [CTX+SI+SJ].
2005-10-18 Niels Möller <nisse@lysator.liu.se>
* sparc/arcfour-crypt.asm: Special unrolled code if SRC and DST
have compatible alignment. Improves performance by 20%, but I'm
not sure it's worth the extra complexity.
* bignum.c (nettle_mpz_from_octets): Removed sign argument. If
mpz_import is available, define nettle_mpz_from_octets as a macro
calling mpz_import.
(nettle_mpz_from_octets): Start by setting x to zero; callers no
longer need to do that.
(nettle_mpz_set_str_256_s): New logic for the handling of negative
numbers. Convert in the same way as for positive numbers, and then
subtract the appropriate power of two.
2005-10-17 Niels Möller <nisse@lysator.liu.se>
* bignum.c (nettle_mpz_from_octets): Improved loop. Removed the
digit temporary (suggested by Torbjörn Granlund).
* sparc/arcfour-crypt.asm: Improved instruction scheduling.
* sparc/arcfour-crypt.asm: Bugfix, use lduh and stuh.
* sparc/arcfour-crypt.asm: New file.
* sparc64/aes.asm: Deleted unused file.
* x86/arcfour-crypt.asm: Use ARCFOUR_I and ARCFOUR_J
* asm.m4 (ARCFOUR): New struct.
2005-10-17 Niels Möller <niels@s3.kth.se>
* aes-internal.h (struct aes_table): Deleted idx and sparc_idx
arrays.
* aes-encrypt-table.c (_aes_encrypt_table): Likewise.
* aes-decrypt.c (_aes_decrypt_table): Likewise.
* asm.m4 (AES): Likewise
2005-10-16 Niels Möller <nisse@lysator.liu.se>
* tools/input.c (sexp_get_char): Use unsigned for the done flag.
* sparc64/aes-encrypt-internal.asm: Include sparc/aes.m4.
* sparc64/aes-decrypt-internal.asm: Likewise.
* sparc64/machine.m4: Use .register pseudo op to say that we use
%g2 and %g3 as scratch registers.
* sparc/aes-encrypt-internal.asm: Explicitly include sparc/aes.m4.
* sparc/aes-decrypt-internal.asm: Likewise.
* sparc/aes.m4: New file. Moved aes-related macros here...
* sparc/machine.m4: ... removed aes macros.
* x86/aes-encrypt-internal.asm: Explicitly include x86/aes.m4.
* x86/aes-decrypt-internal.asm: Likewise.
* x86/aes.m4: New file. Moved aes-related macros here, from...
* x86/machine.m4: ... removed aes macros.
* sparc64/aes-encrypt-internal.asm: New file.
* sparc64/aes-decrypt-internal.asm: New file.
* sparc64/machine.m4: Include the same aes macros used for
sparc32.
(BIAS): Define magic stack bias constant.
* sparc/aes-encrypt-internal.asm, sparc/aes-decrypt-internal.asm:
Reduced frame size to 104 bytes, since we no longer need wtxt and
tmp on the stack.
* sparc/aes.asm: Deleted old aes implementation.
* sparc/aes-decrypt-internal.asm: New file.
* sparc/machine.m4: Don't use m4 eval, instead rely on the
assembler's arithmetic.
* sparc/machine.m4 (AES_FINAL_ROUND): Better scheduling, by
interleaving independent operations.
* sparc/machine.m4 (TMP3): A third temporary register.
(AES_FINAL_ROUND): Prepared for scheduling.
* sparc/machine.m4 (AES_ROUND): Deleted unused argument T. Updated
all calls in aes-encrypt-internal.asm.
* sparc/machine.m4 (AES_ROUND): New loop invariants T0-T3, to
avoid the additions of the AES_TABLEx constants in the inner loop.
* sparc/machine.m4 (AES_ROUND): Better scheduling, by
interleaving independent operations.
* sparc/machine.m4 (AES_ROUND): Alternate between using TMP1 and
TMP2, to prepare for scheduling.
* sparc/aes-encrypt-internal.asm: Renamed Ti -> Xi.
* sparc/aes-encrypt-internal.asm: Fixed bugs. Now passes the
testsuite.
* sparc/machine.m4 (AES_ROUND, AES_FINAL_ROUND): Bugfixes. Put
NOPs in the load dely slots.
* sparc/aes-encrypt-internal.asm: Implemented. Not yet working,
and not optimized.
* sparc/machine.m4: Use TMP1 and TMP2, so we don't need to pass
them as arguments.
(AES_FINAL_ROUND): New macro.
2005-10-15 Niels Möller <nisse@lysator.liu.se>
* configure.ac (OBJDUMP): Substitute the program false if objdump
is not found.
* asm.m4 (PROLOGUE): Use TYPE_FUNCTION.
* config.m4.in: Substitute ASM_TYPE_FUNCTION as TYPE_FUNCTION.
* configure.ac (ASM_ELF_STYLE): Check for %function and #function,
but not for @function.
(ASM_TYPE_FUNCTION): New substituted variable.
* configure.ac (ASM_ELF_STYLE): Fixed .type foo,@function statement
used when checking for pseudo operations.
* sparc/machine.m4 (AES_LOAD, AES_ROUND): Started writing new AES
macros.
* sparc/aes-encrypt-internal.asm: New file.
2005-10-14 Niels Möller <nisse@lysator.liu.se>
* x86/aes-decrypt.asm, x86/aes-encrypt.asm: Deleted files.
* x86/aes-decrypt-internal.asm: New file.
* x86/machine.m4: Changed AES macros, to handle a table register.
Also take more of the used registers as argument.
* x86/aes-encrypt-internal.asm: Rewritten to match new interface,
with the table pointer as an argument. Unlike the old code, this
should really be position independent.
* configure.ac: When looking for assembler files, link in
aes-encrypt-internal.asm and aes-decrypt-internal.asm. Don't look
for aes.asm, aes-encrypt.asm and aes-decrypt.asm.
* configure.ac (OBJDUMP): Use AC_CHECK_TOOL to check for objdump.
(ASM_MARK_NOEXEC_STACK): Use $OBJDUMP when examining the object file.
* Makefile.in (nettle_SOURCES): Removed aes.c,
aes-decrypt-table.c. Added aes-decrypt-internal.c and aes-encrypt-internal.c.
* aes.c, aes-decrypt-table.c: Deleted files.
* aes-decrypt.c (_aes_decrypt_table): Moved table here, and made
static.
* aes-internal.h (_aes_decrypt_table): Don't declare, it's no
longer globally visible.
* aes-decrypt-internal.c (_nettle_aes_decrypt): New AES decryption
function, analogous to _nettle_aes_encrypt.
2005-10-14 Niels Möller <niels@s3.kth.se>
* aes-internal.h (AES_ROUND, AES_FINAL_ROUND): New macros.
* aes-encrypt-internal.c (_nettle_aes_encrypt): New AES encryption
function, avoiding the table-based indexing.
* sha1-compress.c: Added debugging code.
* md5-compress.c: Likewise.
2005-10-13 Niels Möller <niels@s3.kth.se>
* config.m4.in (ASM_MARK_NOEXEC_STACK): Use a diversion, to
substitute the value of ASM_MARK_NOEXEC_STACK at the end of each
assembler file.
* configure.ac (ASM_MARK_NOEXEC_STACK): Check if the C compiler
generates a .note.GNU-stack section. If so, we should do the same
in our assembler files.
* sparc64/aes.asm: New file. Copy of sparc/aes.asm, with minor
changes to the stack frame layout. Patch contributed by Henrik
Grubbström. Not yet tested.
* x86/md5-compress.asm: Skip copying of input to the stack, and
don't allocate space for it.
(F1): Fixed bug.
* testsuite/md5-test.c: Document intermediate values for first
test case.
* configure.ac (asm_path): Check for sparc64, and use sparc64
subdirectory. Link in md5-compress.asm, if it exists.
2005-10-13 Niels Möller <nisse@lysator.liu.se>
* x86/md5-compress.asm (REF): Fixed calculation of offset.
2005-10-12 Niels Möller <nisse@lysator.liu.se>
* x86/machine.m4 (OFFSET): Moved macro, used to be in...
* x86/sha1-compress.asm (OFFSET): ... removed macro.
* x86/md5-compress.asm: New file, with first attempt at md5
assembler. Not yet working.
2005-10-11 Niels Möller <nisse@lysator.liu.se>
* Makefile.in (nettle_SOURCES): Added md5-compress.c.
* md5.c: Reorganized to use _nettle_md5_compress, in analogy with
sha1.c.
* md5-compress.c (_nettle_md5_compress): New file and new function.
2005-10-10 Niels Möller <niels@s3.kth.se>
* testsuite/Makefile.in (EXTRA_SOURCES, EXTRA_TARGETS): New
variables, for test cases that are not run by default.
* testsuite/sha1-huge-test.c (test_main): New test case, with a
very large sha1 input.
* testsuite/testutils.c (test_hash_large): New function.
* sha1.c (sha1_block): Deleted function; inlined where used.
(SHA1_INCR): New macro for incrementing the block count.
2005-10-06 Niels Möller <nisse@lysator.liu.se>
* configure.ac: Bumped version to 1.14.
* Released nettle-1.13.
* configure.ac: Check for openssl/aes.h.
* Makefile.in (distdir): Use a loop to pick up the contents of
$(DISTFILES) from source and build directories. For some reason,
$? failed to find stamp-h.in in the source directory.
2005-10-05 Niels Möller <nisse@lysator.liu.se>
* x86/aes-decrypt.asm: Use C_NAME(_nettle_aes_decrypt_table) when
using the AES_SUBST_BYTE macro. Use PROLOGUE and EPILOGUE.
* x86/sha1-compress.asm: Use PROLOGUE and EPILOGUE.
* x86/arcfour-crypt.asm: Likewise.
* x86/aes-encrypt.asm: Likewise.
* config.m4.in (ELF_STYLE): Substitute configure's ASM_ELF_STYLE.
* asm.m4 (PROLOGUE, EPILOGUE): New macros, checking the value of
ELF_STYLE. So far, used and tested only for the x86 assembler
files, and needed to make the assembler happy both with ELF
(linux, solaris) and COFF (windows).
* configure.ac (NM): Use AC_CHECK_TOOL to check for nm.
(ASM_SYMBOL_PREFIX): Use $NM when examining the object file.
(ASM_ELF_STYLE): New variable. Set to 'yes' if assembling a file
with ELF-style .type and .size pseudo ops works.
* Makefile.in (TARGETS, DISTFILES): Added nettle.pdf.
(.texinfo.dvi, .dvi.ps, .ps.pdf): New targets, to build nettle.pdf.
(DOCTARGETS): New variable with targets that shouldn't be deleted
by make clean.
(maintainer-clean-here): New target. Deletes generated
documentation files.
* nettle.texinfo: Define AUTHOR with accents, when running in TeX
mode, which doesn't handle latin-1 properly. Set UPDATED-FOR to
1.13. Updated copyright years, and introduced a COPYRIGHT-YEARS
symbol. Updated copyright section, to mention assembler
implementations.
(Cipher modes): Transformed the Cipher Block Chaining to a section
Cipher modes, describing both CBC and the new CTR mode.
* src/nettle/x86/aes_tables.asm: Deleted unused file.
* x86/aes.asm: Deleted contents. This file is needed just to
override aes.c, which isn't needed for the x86 implementation.
* configure.ac (SHLIBMINOR): Increased minor number. Library
version is now libnettle.so.2.4, soname still libnettle.so.2.
* examples/nettle-benchmark.c (main): Reordered hash benchmarks.
* x86/sha1-compress.asm (EXPAND): Use % 16 instead of & 15 to
compute offsets mod 16, since m4 on FreeBSD 49.RELEASE and NetBSD
doesn't implement & correctly in eval.
2005-10-03 Niels Möller <nisse@lysator.liu.se>
* x86/sha1-compress.asm (OFFSET): New macro.
(F3): Eliminated a movl.
(ROUND): New argument, for k. When using F3, it's TMP3, on the
stack, otherwise, it is kept in TMP2, a register.
2005-10-03 Niels Möller <niels@s3.kth.se>
* examples/nettle-openssl.c: Use correct block sizes for openssl
ciphers.
* examples/nettle-benchmark.c: Also display cycles per block.
2005-10-02 Niels Möller <nisse@lysator.liu.se>
* sha1-compress.c (_nettle_sha1_compress): Updated to new
interface. Now responsible for byte conversion.
* x86/sha1-compress.asm (_nettle_sha1_compress): Do byte order
conversion, and store the input data on the stack. This leaves one
more register free for other uses.
* examples/nettle-benchmark.c: Now display cycles/byte, if the -f
option is used to say what the clock frequency is.
* sha1.c (sha1_block): Don't convert data from uint8_t to
uint32_t, that's now the responsibility of _nettle_sha1_compress.
* sha.h (_nettle_sha1_compress): Changed interface. Second
argument is now a pointer to the input data in unaligned,
big-endian form.
2005-09-28 Niels Möller <niels@s3.kth.se>
* sha1.c (sha1_final): Call sha1_block, don't call the compression
function _nettle_sha1_compress directly.
* nettle-internal.h (nettle_openssl_md5)
(nettle_openssl_sha1): Declare.
* examples/nettle-benchmark.c (main): Benchmark openssl md5 and
sha1.
* examples/nettle-openssl.c (nettle_openssl_md5)
(nettle_openssl_sha1): Added glue for openssl hash functions.
* nettle-internal.h (nettle_openssl_aes128, nettle_openssl_aes192)
(nettle_openssl_aes256, nettle_openssl_arcfour128): Declare.
* examples/nettle-benchmark.c: Check WITH_OPENSSL, not
HAVE_LIBCRYPTO. Benchmark openssl's aes and arcfour code.
* examples/nettle-openssl.c: Updated openssl des glue to use the
new openssl des interface. Added glue for arcfour and aes.
2005-09-27 Niels Möller <nisse@lysator.liu.se>
* nettle.texinfo (RSA): Improved text about the RSA patent.
Use @documentencoding ISO-8859-1.
2005-09-07 Niels Möller <niels@s3.kth.se>
* tools/sexp-conv.c (parse_options): New option --raw-hash, for
compatibility with lsh-1.x. Equivalent to --hash.
2005-09-06 Niels Möller <niels@s3.kth.se>
* tools/sexp-conv.c (main): With --hash, output a newline after
each hash.
2005-07-02 Niels Möller <nisse@lysator.liu.se>
* testsuite/Makefile.in (TS_SOURCES): Added ctr-test.c.
* testsuite/testutils.c (test_cipher_ctr): New function.
* testsuite/ctr-test.c: New file.
* testsuite/cbc-test.c (test_main): Use static const for msg.
* Makefile.in (nettle_SOURCES): Added ctr.c.
(HEADERS): Added ctr.h.
(HEADERS): Added nettle-types.h.
(INSTALL_HEADERS): Install nettle-stdint.h.
(distclean-here): Delete nettle-stdint.h, not nettle-types.h.
* ctr.c (ctr_crypt): New file, new function.
* memxor.c (memxor3): New function, suggested by Adam Langley.
* nettle-internal.h (NETTLE_MAX_CIPHER_BLOCK_SIZE): New constant.
* nettle.texinfo (Cipher functions): Fixed typo in prototype for
arctwo_encrypt (noticed by Adam Langley).
* nettle-meta.h: No longer needs to include cbc.h.
* cbc.h (nettle_crypt_func): Moved typedef to nettle-types.h.
(CBC_ENCRYPT, CBC_DECRYPT): Deleted older #if:ed out versions.
* configure.ac (AX_CREATE_STDINT_H): Use the file name
nettle-stdint.h, not nettle-types.h.
* nettle-types.h: New file. Automatically generated declarations
are now in nettle-stdint.h.
2005-03-17 Niels Möller <niels@s3.kth.se>
* config.guess: Support Solaris on x86_64. Fix by Henrik
Grubbström.
2005-01-03 Niels Möller <niels@s3.kth.se>
* examples/io.h: Include RSA declarations only when public key
algorithms are enabled. Problem reported by Meilof Veeningen
<meilof@gmail.com>.
2004-12-07 Niels Möller <nisse@lysator.liu.se>
* Makefile.in: Install directories, using $(INSTALL) -d, only if
they don't exist already.
2004-12-05 Niels Möller <nisse@lysator.liu.se>
* config.make.in (.PRECIOUS): Reverted earlier change. We need
.PRECIOUS to stop GNU make from deleting object files for the test
programs.
2004-12-02 Niels Möller <nisse@lysator.liu.se>
* Makefile.in (.SUFFIXES): Moved from Makefile.in to...
* config.make.in (.SUFFIXES): ... here. This helps compilation
with BSD make.
* testsuite/Makefile.in (.SUFFIXES): Deleted target.
* config.make.in (.c): Disable default rule for BSD-make.
* Makefile.in (all check install uninstall)
(clean distclean mostlyclean maintainer-clean): Don't use the -C
flag when invoking make, for compatibility with Solaris make.
2004-12-02 Niels Möller <niels@s3.kth.se>
* Makefile.in (aesdata, desdata): Commented out the explicit
targets.
(shadata): Avoid using $< in non-pattern rule.
2004-12-01 Niels Möller <nisse@lysator.liu.se>
* config.make.in: Added a default target.
2004-11-29 Niels Möller <nisse@lysator.liu.se>
* testsuite/Makefile.in: Use .$(OBJEXT). Explicitly set .SUFFIXES.
* Makefile.in: Use .$(OBJEXT).
2004-11-28 Niels Möller <nisse@lysator.liu.se>
* tools/Makefile.in (nettle-lfib-stream): Avoid using $< in
non-suffix rule.
* Makefile.in (distdir): Handle absolute $distdir.
Avoid using the GNU extension $^.
* examples/Makefile.in: Avoid using the GNU extension $^.
* tools/Makefile.in: Likewise.
* testsuite/Makefile.in: Likewise.
2004-11-24 Niels Möller <niels@s3.kth.se>
* configure.ac: Fixed typo, preventing the creation of dependency
files.
2004-11-23 Niels Möller <nisse@lysator.liu.se>
* Makefile.in: Use DEP_INCLUDE.
* tools/Makefile.in: Likewise.
* testsuite/Makefile.in: Likewise.
* examples/Makefile.in: Likewise.
* configure.ac (dummy-dep-files): Generate only of dependency
tracking is enabled.
2004-11-18 Niels Möller <nisse@lysator.liu.se>
* Makefile.in (clean-here): The clean target should not delete the
dependency files. Moved to the distclean target.
* examples/Makefile.in: Likewise.
* testsuite/Makefile.in: Likewise.
* tools/Makefile.in: Likewise.
* configure.ac (ASM_SYMBOL_PREFIX): Fixed test.
(dummy-dep-files): Added quotes to sed command.
2004-11-17 Niels Möller <nisse@lysator.liu.se>
* testsuite/symbols-test: Try plain nm if nm -g doesn't work.
* x86/sha1-compress.asm: Use C_NAME for global symbols.
* x86/aes-encrypt.asm: Likewise.
* x86/aes-decrypt.asm: Likewise.
* x86/arcfour-crypt.asm: Likewise.
* Makefile.in (config.m4): New rule.
* config.m4.in (C_NAME): New macro.
* configure.ac (ASM_SYMBOL_PREFIX): Check if global symbols have a
leading underscore.
2004-11-16 Niels Möller <nisse@lysator.liu.se>
* Deleted getopt.c, getopt.h and getopt1.c from the CVS tree. Link
them from shared copies in lsh/misc instead.
2004-11-14 Niels Möller <nisse@lysator.liu.se>
* Makefile.in (DEP_FILES): Try include with only one macro
argument to be expanted.
* configure.ac (dummy-dep-files): Create dummy dependency files,
so that they can be included by the makefiles.
2004-11-13 Niels Möller <nisse@lysator.liu.se>
* Makefile.in: Don't use -include, as it's GNU make specific.
* examples/Makefile.in, tools/Makefile.in, testsuite/Makefile.in:
Likewise.
* examples/nettle-openssl.c: Check WITH_OPENSSL, not HAVE_LIBCRYPTO.
* configure.ac: Check for individual openssl headers blowfish.h,
cast.h, des.h. Renamed symbol HAVE_LIBCRYPTO to WITH_OPENSSL. New
configure option --disable-openssl.
2004-11-04 Niels Möller <nisse@lysator.liu.se>
* configure.ac: Bumped version to 1.13.
* Released nettle-1.12.
2004-11-04 Niels Möller <niels@s3.kth.se>
* nettle.texinfo (UPDATED-FOR): Bumped to 1.12.
2004-11-02 Niels Möller <nisse@lysator.liu.se>
* nettle.texinfo (Cipher functions): Updated AES documentation,
for aes_set_encrypt_key and aes_set_decrypt_key.
(UPDATED-FOR): Set to 1.11. I think the manual should be updated
with all user-visible changes.
* aclocal.m4 (LSH_DEPENDENCY_TRACKING): Need extra quoting in case
pattern. (This file really lives in the lsh tree, as
lsh/acinclude.m4. For a complete ChangeLog, see lsh/Changelog).
2004-10-26 Niels Möller <nisse@lysator.liu.se>
* configure.ac: Bumped version to 1.12.
* Released nettle-1.11.
* Makefile.in (clean-here): Delete *.s files.
(PRE_CPPFLAGS): Use this variable, not INCLUDES. Removed
-I$(srcdir).
* x86/arcfour-crypt.asm: Use movzbl when extending %cl to 32 bits.
2004-10-24 Niels Möller <nisse@lysator.liu.se>
* x86/arcfour-crypt.asm: Reverted the latest two changes; update
bost src and dst pointers in the loop, and use plain addb when
updating j. These two previous changes slowed the code down on AMD
Duron.
2004-10-21 Niels Möller <nisse@lysator.liu.se>
* Makefile.in (install-shared): Use $(INSTALL_PROGRAM).
* configure.ac (SHLIBMINOR): Updated, shared library version is
now libnettle.so.2.3, soname still libnettle.so.2.
* Makefile.in (DISTFILES): Added asm.m4.
2004-10-21 Niels Möller <niels@s3.kth.se>
* examples/Makefile.in: Deleted all configure-related rules,
except the one rebuilding this Makefile. One should run make at
top level if other configure related files change.
* tools/Makefile.in: Likewise.
* testsuite/Makefile.in: Likewise.
* configure.ac: Replaced AC_OUTPUT(list...) with an AC_OUTPUT
without arguments, and AC_CONFIG_FILES listing the files.
* Makefile.in: Changed the assembler rules as suffix rules.
Rewrote the configure-related rules, mostly based on the example
in the autoconf manual.
2004-10-20 Niels Möller <nisse@lysator.liu.se>
* examples/nettle-openssl.c (NCOMPAT): Disable openssl backwards
compatibility.
* config.make.in: Insert $(PRE_CPPFLAGS) and $(PRE_LDFLAGS) before
$(CPPFLAGS) and $(LDFLAGS). This mechanism replaces $(INCLUDES).
* examples/Makefile.in (PRE_CPPFLAGS, PRE_LDFLAGS): Use these
flags to get -I.. and -L.. early on the command line.
* testsuite/Makefile.in: Likewise
* tools/Makefile.in: Likewise.
2004-10-20 Niels Möller <niels@s3.kth.se>
* Makefile.in: In the assembler rules, there's no need to look in
$(srcdir) for the input file.
* x86/arcfour-crypt.asm: Reduced inner loop by one instruction, by
precomputing the offset between src and dst.
* tools/Makefile.in (.c.$(OBJEXT)): Removed redundant -I.. flag.
* x86/arcfour-crypt.asm (nettle_arcfour_crypt): Replaced addb ->
addl + andl $0xff, improving speed on PPro by another 15%.
2004-10-20 Niels Möller <nisse@lysator.liu.se>
* tools/Makefile.in (install): Support DESTDIR.
(uninstall): New target.
* testsuite/Makefile.in (uninstall): New dummy target.
* config.sub: Copied from automake-1.8.5.
* examples/Makefile.in (SOURCES): Added rsa-sign.c and rsa-verify.c.
(DISTFILES): Added getopt.h.
(install uninstall): New dummy targets.
* config.make.in (.PHONY): Added more targets.
* Makefile.in (.texinfo.info, .texinfo.html): New targets. Added
support for uninstall and DESTDIR. Various fixes to install and
distcheck.
* examples/Makefile.in (INCLUDES): Added -I flags.
(distdir): Use $^ to refer to the files.
(distclean): New target.
* testsuite/Makefile.in: Likewise.
* tools/Makefile.in: Likewise.
* Makefile.in (INCLUDES): Need -I flags for VPATH build.
(clean distclean mostlyclean maintainer-clean): Clean
subdirectories first.
(DISTFILES): Added a bunch of files.
(des_headers): Added desCore rules.
(install-here): Split off target install-headers, which uses $^ to
refer to the files.
(distdir): Use $^ to refer to the files.
distcheck): Fixes.
* config.make.in (COMPILE): Add $(INCLUDE) to the line.
2004-10-19 Niels Möller <nisse@lysator.liu.se>
Stop using automake. Replaced each Makefile.am with a hand-written
Makefile.in.
* configure.ac: New output variable CCPIC_MAYBE. New output file
config.make. Replaced automake constructions.
* .bootstrap: Don't run aclocal and automake.
* config.make.in: New file, with shared Makefile variables and rules.
2004-10-18 Niels Möller <nisse@lysator.liu.se>
* x86/arcfour-crypt.asm (nettle_arcfour_crypt): Replace incb ->
incl + andl, to improve speed on PPro and PII. Suggested by
Fredrik Olsson.
2004-10-08 Niels Möller <niels@s3.kth.se>
* examples/rsa-encrypt-test: Avoid reading and executing a file at
the same time.
* examples/setup-env: Likewise.
2004-10-06 Niels Möller <niels@s3.kth.se>
* testsuite/symbols-test: Ignore __i686.get_pc_thunk.bx and
similar symbols.
2004-10-05 Niels Möller <nisse@lysator.liu.se>
* twofish.c (q_table): Use a const pointer array.
* sexp2dsa.c (dsa_keypair_from_sexp_alist): Use a const pointer
array for the keywords.
(dsa_signature_from_sexp): Likewise.
* sexp2rsa.c (rsa_keypair_from_sexp_alist): Likewise.
(rsa_keypair_from_sexp): Likewise.
* sexp.c (sexp_iterator_check_types): Use an argument of type
"const uint8_t * const *" for the types list.
(sexp_iterator_assoc): Likewise, for the keys list.
* list-obj-sizes.awk: Fixes to handle multiple .data and .rodata
sections. Also fixed to handle the last file correctly.
2004-09-23 Niels Möller <nisse@lysator.liu.se>
* configure.ac (SHLIBLINK, SHLIBLIBS): On cygwin, linking needs
-Wl,--whole-archive $(OBJECTS) -Wl,--no-whole-archive $(LIBS).
2004-09-22 Niels Möller <niels@s3.kth.se>
* configure.ac: Setup SHLIBFORLINK and friends for cygwin.
* list-obj-sizes.awk: Strip *_a-prefix from all file names.
* Makefile.am (libnettle_a_SOURCES): List only .c files. Headers
moved to noinst_HEADERS.
(SHLIBOBJECTS): Substitute from libnettle_a_SOURCES, not
am_libnettle_a_OBJECTS, since the latter includes
libnettle_a-prefixes with some automake versions.
(SHLIBSONAME): Check if this name is empty, which is the case on
cygwin, before using it.
2004-08-31 Niels Möller <nisse@lysator.liu.se>
* configure.ac: New command line option --disable-pic. Use
LSH_CCPIC.
* Makefile.am (libnettle_a_CFLAGS): Added $(CCPIC), to attempt to
build also the static library as position independent code.
2004-08-24 Niels Möller <nisse@lysator.liu.se>
* des-compat.c (des_cbc_cksum): Pad input with NUL's, if it's not
an integral number of blocks.
2004-08-24 Niels Möller <niels@s3.kth.se>
* testsuite/arctwo-test.c, arctwo.h, arctwo.c
(arctwo_set_key_ekb): Fixed typo; it should be "ekb", not "ebk".
Integrated arctwo patch from Simon Josefsson.
* testsuite/Makefile.am (noinst_PROGRAMS): Added arctwo-test.
* Makefile.am (libnettleinclude_HEADERS): Added arctwo.h.
(libnettle_a_SOURCES): Added arctwo.c, arctwo.h and arctwo-meta.c.
* nettle-meta.h (nettle_arctwo40, nettle_arctwo64)
(nettle_arctwo64, nettle_arctwo_gutmann128): Declare ciphers.
* arctwo-meta.c, arctwo.c, arctwo.h, testsuite/arctwo-test.c: New
files.
* macros.h (LE_READ_UINT16, LE_WRITE_UINT16): New macros.
2004-08-23 Niels Möller <nisse@lysator.liu.se>
* testsuite/md5-test.c (test_main): Added collision, found in 2004.
(test_main): Added second collision.
2004-08-23 Niels Möller <niels@s3.kth.se>
* testsuite/md5-test.c (test_main): Added first half of a
collision test case.
* des-compat.c (des_cbc_cksum): Changed input argument to be of
type const uint8_t * (was const des_cblock *).
* des-compat.h (const_des_cblock): New bogus type. Disabled use of
const, for compatibility with openssl.
2004-06-08 Niels Möller <niels@s3.kth.se>
* aesdata.c: Renamed log and ilog to gf2_log and gf2_exp.
2004-04-07 Niels Möller <nisse@lysator.liu.se>
* aes-set-encrypt-key.c (log, ilog): Deleted unused tables.
* aes-set-decrypt-key.c (gf2_log, gf2_exp, mult): Renamed tables,
were log and ilog.
2004-03-20 Niels Möller <nisse@lysator.liu.se>
* configure.ac: Use AC_CONFIG_AUX_DIR([.]).
2004-03-18 Niels Möller <niels@s3.kth.se>
* examples/io.c (read_file): Display a message if fopen fails.
2004-03-05 Niels Möller <nisse@lysator.liu.se>
* Released nettle-1.10.
* configure.ac (SHLIBMINOR): Shared library version is now 2.2.
2004-03-04 Niels Möller <nisse@lysator.liu.se>
* testsuite/symbols-test: Pass -g flag to nm.
2004-03-02 Niels Möller <nisse@lysator.liu.se>
* configure.ac: Fixed EXEEXT workaround.
2004-03-02 Niels Möller <niels@s3.kth.se>
* configure.ac: Added workaround to get the correct $(EXEEXT)=''
when compiling with rntcl.
2004-03-02 Niels Möller <nisse@lysator.liu.se>
* testsuite/Makefile.am (noinst_PROGRAMS): Put test program list
here, to let automake add $(EXEEXT).
* configure.ac (RSA_EXAMPLES): Append $(EXEEXT) to the filenames.
2004-03-01 Niels Möller <nisse@lysator.liu.se>
* examples/rsa-keygen.c, examples/rsa-encrypt.c,
examples/rsa-decrypt.c: Include "getopt.h" instead of <unistd.h>.
* examples/Makefile.am (rsa_encrypt_SOURCES, rsa_decrypt_SOURCES)
(rsa_keygen_SOURCES): Added getopt.h, getopt.c and getopt1.c.
* examples/getopt.h, examples/getopt.c, examples/getopt1.c: New
files.
* testsuite/des-compat-test.c: Don't include <unistd.h>.
* testsuite/testutils.c (main): Don't use getopt. Then we don't
need to include <unistd.h>.
2004-03-01 Niels Möller <niels@s3.kth.se>
* config.guess: Copied from automake-1.8.2. Hacked to recognize
Windows_NT (and Windows_95 and Windows_98) running on "x86" and
"686".
* install-sh: Removed from CVS repository. Let automake supply it.
2004-02-26 Niels Möller <nisse@lysator.liu.se>
* nettle-meta.h (nettle_crypt_func): Typedef moved to cbc.h.
Include cbc.h instead.
* des-compat.c: Reverted const change, now all the des_key_sched
arguments are not const. This is also what openssl's interface
looks like.
(cbc_crypt_func): Deleted typedef, use nettle_crypt_func instead.
* cbc.h (nettle_crypt_func): Moved typedef here.
* cbc.c (cbc_encrypt, cbc_decrypt_internal, cbc_decrypt): Use it
for typing the f argument. Reverted the const change, for
compatibility with nettle_crypt_func.
2004-02-25 Niels Möller <nisse@lysator.liu.se>
* testsuite/des-compat-test.c: Use des_cblock for typing more of
the variables. Use const. Got rid of most of the explicit casts.
Disabled the input/output alignment tests.
* des.c (des_encrypt, des_decrypt): Use a const context pointer.
* des3.c (des3_encrypt, des3_decrypt): Likewise.
* cbc.c (cbc_encrypt, cbc_decrypt): Use a _const_ void *ctx argument.
* des-compat.c: Use const for all unchanged arguments.
(des_key_sched): Use a copy of the key if we need to fix the
parity.
* testsuite/des-compat-test.c (C_Block, Key_schedule): Deleted
defines. Deleted some of the explicit casts.
* des-compat.c (des_cbc_cksum): Dereference DST pointer.
2004-02-25 Niels Möller <niels@s3.kth.se>
* pgp.h: Include nettle-types.h.
2004-02-24 Niels Möller <nisse@lysator.liu.se>
* testsuite/symbols-test: Allow symbols starting with double
underscores, like on darwin.
2004-02-17 Niels Möller <niels@s3.kth.se>
* Makefile.am: Protected %-rules used for building pure objects,
and for assembler files, by automake conditionals. Needed for
makes such as tru64's, which tries to understand %-patterns, but
doesn't get it right.
(SUFFIXES): Added .html.
(.texinfo.html): Rewrote rule to use a traditional suffix target.
* configure.ac (enable_assembler): Explicitly set
enable_assembler=no, on architectures where we have no assembler
files.
(ENABLE_ASSEMBLER, ENABLE_SHARED): New automake conditionals.
* testsuite/testutils.c (xalloc): xalloc(0) should work also on
systems where malloc(0) returns NULL.
2004-02-16 Niels Möller <niels@s3.kth.se>
* Makefile.am (%.o: %.asm): Added comment about OSF1 make problem.
2004-02-15 Niels Möller <nisse@lysator.liu.se>
* testsuite/testutils.h: #include nettle-types.h instead of
inttypes.h.
2004-02-12 Niels Möller <nisse@lysator.liu.se>
* examples/rsa-encrypt-test: Use -r option when invoking
rsa-encrypt. Needed for the test to work on systems with no
/dev/urandom.
2004-02-12 Niels Möller <niels@s3.kth.se>
* configure.ac (CPPFLAGS, LDFLAGS): No spaces after -I and -L, as
some C compilers, in particular True64 cc, don't like that.
2004-02-08 Niels Möller <nisse@lysator.liu.se>
* configure.ac: Bumped version number to 1.10.
2004-02-07 Niels Möller <nisse@lysator.liu.se>
* Released nettle-1.9.
* configure.ac (SHLIBMINOR): Bumped, library version is now 2.1.
* testsuite/sexp-format-test.c: Include bignum.h only if HAVE_LIBGMP.
* testsuite/rsa-encrypt-test.c: Include rsa.h only if WITH_PUBLIC_KEY.
* testsuite/pkcs1-test.c: Include pkcs1.h only if WITH_PUBLIC_KEY.
* pgp-encode.c [!HAVE_LIBGMP]: Kludge around the pgp.h's
dependency on gmp.h.
(pgp_put_mpi): Condition on HAVE_LIBGMP.
* pgp.h: Don't include bignum.h, to make it possible to compile
the non-bignum parts of pgp-encode.c without bignum support. Needs
to be fixed properly before the pgp interface is advertised.
* tools/sexp-conv.c (xalloc): New function.
(main): Use xalloc.
* tools/output.c (sexp_put_digest): Use TMP_DECL instead of alloca.
* testsuite/testutils.c (xalloc): New function. Made all other
functions use xalloc instead of alloca.
* examples/rsa-keygen.c (main): Use xalloc for allocation.
* examples/rsa-encrypt.c (write_bignum): Likewise.
* examples/rsa-decrypt.c (read_bignum): Likewise.
* testsuite/yarrow-test.c (open_file): Likewise.
* testsuite/rsa-encrypt-test.c (test_main): Likewise.
* testsuite/bignum-test.c (test_bignum): Likewise.
* examples/nettle-openssl.c: When calling des_key_sched and
des_ecb_encrypt, cst arguments to (void *). Openssl's typedefs
des_cblock and const_des_cblock are too broken.
* examples/nettle-benchmark.c (xalloc): New function. Use instead
of alloca, for better portability.
* examples/io.c (xalloc): New function.
* Makefile.am (nodist_libnettleinclude_HEADERS): nettle-types.h
should not be distributed.
2004-02-06 Niels Möller <niels@s3.kth.se>
* x86/sha1-compress.asm: Rename round -> ROUND.
* x86/sha1-compress.asm: Store the magic constants on stack.
Accessing them via %esp should be a little faster than using large
immediate operands.
* Makefile.am (EXTRA_DIST, DISTCLEANFILES): Handle
sha1-compress.asm.
* configure.ac: Use assembler file sha1-compress.asm if available.
* x86/sha1-compress.asm (EXPAND): Fixed the rotation part of the
data expansion.
2004-02-06 Niels Möller <nisse@lysator.liu.se>
* x86/sha1-compress.asm: Assembler implementation of
sha1_compress. (Not yet working).
* Makefile.am (libnettle_a_SOURCES): Added sha1-compress.c.
* sha1.c (sha1_transform): Function renamed to sha1_compress, and
moved to...
* sha1-compress.c: ... New file.
2004-02-05 Niels Möller <nisse@lysator.liu.se>
* examples/rsa-encrypt.c (process_file): Copy the leftover to the
start of the buffer, when preparing for the final processing.
* examples/nettle-benchmark.c (bench_hash, time_hash): New functions.
(main): Benchmark hash functions too.
(BENCH_BLOCK): Increased 10K.
(BENCH_INTERVAL): Decreased to 0.25s.
* examples/nettle-benchmark.c (time_function): Loop around calling
f, until 1s has elapsed. Returns seconds per call. Updated bench
functions to not loop themselves.
(display): Updated MB/s calculation.
* testsuite/arcfour-test.c (test_main): Use test_cipher_stream.
* testsuite/testutils.c (test_cipher_stream): New function, that
tries dividing the input into varying size blocks before
processing.
* x86/arcfour-crypt.asm (nettle_arcfour_crypt): Bug fix, half of
the S array swap was forgotten.
* arcfour.c (arcfour_stream): Likewise.
* arcfour-crypt.c (arcfour_crypt): Likewise.
2004-02-05 Niels Möller <niels@s3.kth.se>
* x86/arcfour-crypt.asm (nettle_arcfour_crypt): Must store the new
i, j at the end of the loop.
* Makefile.am (EXTRA_DIST): Make sure x86 assembler files are
distributed.
(DISTCLEANFILES): And that the symlinks and .s files are deleted.
* x86/aes-encrypt.asm, x86/aes-decrypt.asm, x86/arcfour-crypt.asm:
Fixed debug information.
* x86/arcfour-crypt.asm: New file. About three times faster than
the optimized C code.
* configure.ac: Use assembler file arcfour-crypt.asm if available.
* arcfour.c (arcfour_crypt): Moved function too...
* arcfour-crypt.c (arcfour_crypt): New file.
* arcfour.c (arcfour_crypt): Optimization suggested by Jonas
Walldén. Makes arcfour up to 50% faster on x86 and ppc, and
probably on other architectures as well.
2004-01-31 Niels Möller <nisse@lysator.liu.se>
* configure.ac (AX_CREATE_STDINT_H): Also look for uint32_t and
friends in sys/types.h.
2004-01-11 Niels Möller <nisse@harpo.hack.org>
* Makefile.am (libnettleinclude_HEADERS): Added bignum.h,
memxor.h, pkcs1.h and rsa-compat.h.
* configure.ac: Bumped version to 1.9.
2004-01-10 Niels Möller <nisse@harpo.hack.org>
* Released nettle-1.8.
* examples/teardown-env: Delete more test files.
* nettle.texinfo (Hash functions): Documented md2 and md4.
* configure.ac (SHLIBMAJOR): Bumped to 2.
2004-01-09 Niels Möller <nisse@harpo.hack.org>
* examples/rsa-encrypt-test: New testcase.
* examples/rsa-encrypt.c, examples/rsa-session.h: Expanded the
comment describing the file format, and moved to rsa-session.h.
* examples/rsa-decrypt.c (process_file): Finished this function.
(main): Initialize x. Check the size of the session key after rsa
decryption.
* examples/io.c (write_string): Treat short item count as an error.
2004-01-08 Niels Möller <niels@s3.kth.se>
* index.html: Added instructions for CVS access.
* dsa-keygen.c (dsa_nist_gen): Fixed declaration/statement order.
* rsa-keygen.c (bignum_next_prime): Fixed off-by-one error when
comparing input to the largest listed prime. General cleanup, as
prime_limit > 0 always. Use TMP_DECL and TMP_ALLOC.
* nettle-internal.h (TMP_DECL, TMP_ALLOC): New macros. When alloca
is unavailable, they work by allocating a fix amount of stack and
imposing a hard limit on what can be allocated. Updated all users
of alloca.
2004-01-07 Niels Möller <nisse@harpo.hack.org>
* nettle-types.h: New (generated) file, to be used instead of
including <inttypes.h> directly. Updated all users of inttypes.h.
* Makefile.am (DISTCLEANFILES, libnettleinclude_HEADERS): Added
nettle-types.h.
* configure.ac (AX_CREATE_STDINT_H): Create nettle-types.h.
2003-11-16 Niels Möller <nisse@harpo.hack.org>
* yarrow256.c (yarrow256_seed): Use const for the seed_file input.
2003-11-12 Niels Möller <niels@s3.kth.se>
* list-obj-sizes.awk: New function for decoding hex values, with a
new function hex2int. Also implemented calculation of total
storage, removed the dependence on the .comment section, and use
the $FILTER environment variable as a regexp for restricting the
object files that are considered.
2003-09-21 Niels Möller <nisse@cuckoo.hack.org>
* testsuite/rsa-encrypt-test.c (test_main): Don't use gmp_printf,
as it seems it's only available with the newer gmp. Use
mpz_out_str instead.
2003-09-19 Niels Möller <niels@s3.kth.se>
* examples/Makefile.am (EXTRA_DIST): Added rsa-session.h.
* tools/nettle-lfib-stream.c: New tool, which outputs a sequence
of pseudorandom (non-cryptographic) bytes, using Knuth's lagged
fibonacci generator.
* examples/rsa-decrypt.c: Fixes to get the file to compile. It
won't work yet.
* examples/Makefile.am (EXTRA_PROGRAMS): Added rsa-encrypt and
rsa-decrypt.
* examples/io.c (write_file): New function.
(write_string): Simplified error check, it's no real point in
calling ferror unless we also call fflush.
* examples/rsa-keygen.c (main): Check return value from
simple_random.
* examples/rsa-decrypt.c, examples/rsa-encrypt.c,
examples/rsa-session.h: New files, demonstrating rsa encryption
and decryption.
* configure.ac (RSA_EXAMPLES): Added rsa-encrypt and rsa-decrypt.
2003-09-01 Niels Möller <nisse@cuckoo.hack.org>
* testsuite/testutils.c (print_hex): Use const.
2003-08-30 Niels Möller <niels@s3.kth.se>
* md2.c, md2.h: Added reference to RFC 1319.
* md4.c, md4.h: Added reference to RFC 1320
2003-08-26 Niels Möller <niels@s3.kth.se>
* Makefile.am: Added md2 and md5 files. Deleted the print-path
hack.
* configure.ac: Bumped version to 1.8.
* testsuite/testutils.c (test_rsa_set_key_1): New function.
* testsuite/rsa-test.c (test_main): Use it.
* testsuite/dsa-keygen-test.c: Deleted definition of UNUSED, it's
now in config.h.
* testsuite/rsa-keygen-test.c: Likewise.
* testsuite/Makefile.am (TS_PROGS): Added rsa-encrypt-test,
md4-test, and md2-test.
* testsuite/rsa-encrypt-test.c, testsuite/md4-test.c,
testsuite/md2-test.c: New test cases.
* nettle-meta.h: Declare nettle_md2 and nettle_md4.
* md5.c: Reorderd functions, putting md5_final at the end.
* md2.c, md2.h, md2-meta.c: New files, implemented md2.
* md4.c, md4.h, md4-meta.c: New files, implemented md4.
2003-08-17 Niels Möller <nisse@cuckoo.hack.org>
* desCode.h (des_keymap, des_bigmap): Deleted extern declarations,
they conficted with the static definition in des.c. Reported by
Simon Josefsson.
* des.c (DesSmallFipsEncrypt, DesSmallFipsDecrypt): Moved
definitions after the definition of the des_kemap array.
2003-08-11 Niels Möller <nisse@cuckoo.hack.org>
* rsa-encrypt.c (rsa_encrypt): Bugfix contributed by
leg@terra.com.br.
2003-06-10 Niels Möller <niels@s3.kth.se>
* Makefile.am (EXTRA_DIST): Distribute sha-example.c.
2003-06-05 Niels Möller <nisse@lysator.liu.se>
* Makefile.am (DISTCLEANFILES): Delete .s files.
2003-05-27 Niels Möller <nisse@cuckoo.hack.org>
* testsuite/symbols-test: And allow symbols that start at the
beginning of the line, as output by AIX nm.
2003-05-26 Niels Möller <nisse@cuckoo.hack.org>
* testsuite/symbols-test: Allow symbols to start with a dot.
2003-05-14 Niels Möller <niels@s3.kth.se>
* pgp.h (enum pgp_subpacket_tag): Copied values from RFC 2440.
Renamed PGP_SUBPACKET_ISSUER to PGP_SUBPACKET_ISSUER_KEY_ID.
2003-05-13 Niels Möller <nisse@cuckoo.hack.org>
* pgp.h: Do proper namemangling for pgp_put_public_rsa_key and
pgp_put_rsa_sha1_signature.
* pgp-encode.c (pgp_put_mpi): Fixed nettle_mpz_get_str_256 call.
2003-05-12 Niels Möller <nisse@cuckoo.hack.org>
* rsa2openpgp.c (rsa_keypair_to_openpgp): Some bugfixes.
* pgp.h (enum pgp_subpacket_tag): New enum. Definition is bogus
and needs to be fixed.
Added forward declarations of structs, and prototypes for
pgp_put_public_rsa_key and pgp_put_rsa_sha1_signature.
* pgp-encode.c (pgp_put_mpi): Take a const mpz_t argument. Gugfix,
use nettle_mpz_get_str_256.
(pgp_put_public_rsa_key, pgp_put_rsa_sha1_signature):
Constification. Some bugfixes.
* Use "config.h", not <config.h>.
* Reordered includes in most or all .c-files. All should now
include config.h.
2003-05-12 Niels Möller <niels@s3.kth.se>
* configure.ac: Use LSH_FUNC_ALLOCA.
2003-04-25 Niels Möller <niels@s3.kth.se>
* Makefile.am (libnettle_a_SOURCES): Added hmac-sha256.c.
* testsuite/hmac-test.c (test_main): Added tests for hmac-sha256,
from draft-ietf-ipsec-ciph-sha-256-01.txt.
* hmac-sha256.c (hmac_sha256_digest): New file.
2003-04-22 Niels Möller <nisse@cuckoo.hack.org>
* sha-example.c (display_hex): Simplified by using printf better.
* nettle.texinfo (Example): Use @verbatiminclude to include the
example program.
* sha-example.c: Example program, for inclusion in the manual.
Fixed bugs reported by Mark Arking.
2003-04-14 Niels Möller <niels@s3.kth.se>
* x86/aes-encrypt.asm (nettle_aes_encrypt): Fixed references to
_nettle_aes_encrypt_table.
* x86/aes-decrypt.asm (nettle_aes_decrypt): Fixed references to
_nettle_aes_decrypt_table.
2003-04-12 Niels Möller <nisse@cuckoo.hack.org>
* testsuite/Makefile.am (TS_SH): New test case symbols-test.
(EXTRA_PROGRAMS): Added testutils, as a kludge to
get automake to track dependencies for testutils.o.
* x86/aes-encrypt.asm (nettle_aes_encrypt): Renamed function to
use the nettle_ prefix.
* x86/aes-decrypt.asm (nettle_aes_decrypt): Likewise.
* sparc/aes.asm (_nettle_aes_crypt): Likewise.
* examples/Makefile.am (EXTRA_PROGRAMS): Add "io", as a kludge to
get automake to track dependencies for io.o.
(LDADD): Added ../libnettle.a, for the dependency.
* des-compat.c: Use names with the nettle_ prefix when using
Nettle's des functions.
* base16-meta.c (base16_encode_update): Need to undef before
redefining.
* New name mangling, to reduce the risk of link collisions. All
functions (except memxor) now use a nettle_ or _nettle prefix when
seen by the linker. For most functions, the header file that
declares a function also use #define to provide a shorter more
readable name without the prefix.
2003-03-11 Niels Möller <nisse@cuckoo.hack.org>
* Released nettle-1.7.
* configure.ac: Bumped version to 1.7.
* nettle.texinfo (DSA): New section.
(RSA): Updated documentation.
2003-03-02 Niels Möller <nisse@cuckoo.hack.org>
* examples/nettle-benchmark.c (time_cipher): Don't use GNU C
non-constant initializers.
2003-02-23 Niels Moller <nisse@carduelis>
* configure.ac: Use LSH_GCC_ATTRIBUTES.
2003-02-19 Niels Möller <nisse@cuckoo.hack.org>
* acinclude.m4: Deleted file from cvs, use a link to lsh's
acinclude.m4 instead.
2003-02-16 Niels Möller <nisse@cuckoo.hack.org>
* Makefile.am (libnettleinclude_HEADERS): Added macros.h.
* tools/Makefile.am (EXTRA_DIST): Added getopt.h.
2003-02-14 Niels Möller <niels@s3.kth.se>
* Makefile.am (print_path): Added target to print the used PATH,
for debugging.
(print-path): Moved dependency to all-local.
2003-02-11 Niels Möller <niels@s3.kth.se>
* buffer.c (nettle_buffer_copy): Bug fix, it didn't return any
value.
2003-02-11 Niels Möller <nisse@cuckoo.hack.org>
* testsuite/sexp-format-test.c (test_main): Added test for %( and
%).
* sexp-format.c (sexp_vformat): Handle %( and %).
* realloc.c (nettle_xrealloc): Fixed out-of-memory check.
* configure.ac (SHLIBMAJOR): Bumped version number to 1.
* buffer.c (nettle_buffer_init_realloc): New function.
* buffer-init.c (nettle_buffer_init): Use nettle_buffer_init_realloc.
2003-02-10 Niels Möller <nisse@cuckoo.hack.org>
* testsuite/sexp-format-test.c (test_main): New test with tokens
in the format string.
(test_main): Test space-searated literals too.
* rsa2sexp.c (rsa_keypair_to_sexp): New argument ALGORITHM_NAME.
* examples/rsa-keygen.c (main): Updated call to rsa_keypair_to_sexp.
* testsuite/rsa2sexp-test.c (test_main): Likewise.
* sexp-format.c (sexp_vformat): Allow whitespace in format string.
* rsa2sexp.c (rsa_keypair_to_sexp): Use literals with sexp_format.
* sexp-format.c (format_string): New function.
(sexp_vformat): Implemented support for literals in the format
string.
2003-02-06 Niels Möller <nisse@lysator.liu.se>
* testsuite/sexp-conv-test (print_raw, print_nl): New functions.
The testfunctions use these instead of using echo directly.
Use the test input '3:"\x' instead of '2:"\', to be friendlier to
sysv echo.
2003-02-05 Niels Möller <nisse@lysator.liu.se>
* des-compat.h (des_set_key): Different name mangling, if this
file is included, des_set_key should refer to a function that
behaves like openssl's.
* des-compat.c (des_key_sched, des_is_weak_key): Use the name
nettle_des_set_key for referring to Nettle's function.
* des.h (des_set_key): Name mangling, linker symbols should use a
"nettle_" prefix, and this one collided with openssl. Perhaps all
symbols should be mangled in a similar way, but that's for later.
* configure.ac (LDFLAGS): --with-lib-path should add to LDFLAGS,
not replace it.
2003-01-30 Niels Möller <nisse@cuckoo.hack.org>
* tools/output.c (sexp_put_string): Fixed handling of escapable
characters. The code generated random escape sequences for
characters in the 0x10-0x1f range.
* testsuite/sexp-conv-test: More tests for hex and base64 input
and output.
2003-01-30 Niels Möller <niels@s3.kth.se>
* sexp2bignum.c (nettle_mpz_set_sexp): Call sexp_iterator_next on
success. That means the iterator argument can't be const.
2003-01-29 Niels Möller <niels@s3.kth.se>
* tools/Makefile.am (LDADD): Add libnettle.a, for the dependency.
2003-01-27 Niels Möller <nisse@cuckoo.hack.org>
* sexp2dsa.c (dsa_signature_from_sexp): New function.
RSA renaming. Updated all callers.
* rsa-sign.c (rsa_private_key_init, rsa_private_key_clear)
(rsa_private_key_prepare): Renamed functions.
* rsa.c (rsa_public_key_init, rsa_public_key_clear)
(rsa_public_key_prepare): Renamed functions.
2003-01-23 Niels Möller <nisse@cuckoo.hack.org>
* Makefile.am (libnettle_a_SOURCES): Added new rsa and pkcs1
files. Removed old rsa_md5.c and rsa_sha1.c.
* testsuite/Makefile.am (TS_PROGS): Added pkcs1-test.
* dsa-verify.c (dsa_verify_digest): New function.
(dsa_verify): Most of the code moved to dsa_verify_digest, which
is used here.
* dsa-sign.c (dsa_sign_digest): New function.
(dsa_sign): Most of the code moved to dsa_sign_digest, which is
used here.
* dsa.c (_dsa_hash): Deleted function.
* rsa_md5.c, rsa_sha1.c: Deleted files, contents spread over
several files for signing and verification.
* rsa-sign.c, rsa-sha1-verify.c, rsa-sha1-sign.c,
rsa-md5-verify.c, rsa-md5-sign.c: New files.
* rsa-sha1-verify.c (rsa_sha1_verify_digest): New function.
* rsa-sha1-sign.c (rsa_sha1_sign_digest): New function.
* rsa-md5-verify.c (rsa_md5_verify_digest): New function.
* rsa-md5-sign.c (rsa_md5_sign_digest): New function.
* rsa-verify.c (_rsa_verify): New file, new function.
* rsa.c (_rsa_check_size): Renamed from rsa_check_size, and made
non-static. Private key functions moved to rsa-sign.c.
* pkcs1.c, pkcs1.h, pkcs1-rsa-md5.c, pkcs1-rsa-sha1.c: New files.
(pkcs1_signature_prefix): New function.
* testsuite/pkcs1-test.c: New test.
2003-01-22 Niels Möller <niels@s3.kth.se>
* examples/Makefile.am (nettle_benchmark_LDADD): Use
OPENSSL_LIBFLAGS.
* configure.ac (OPENSSL_LIBFLAGS): If libcrypto is found, add
-lcrypto to OPENSSL_LIBFLAGS, not the plain LDFLAGS.
2003-01-20 Niels Möller <nisse@cuckoo.hack.org>
* testsuite/Makefile.am (CLEANFILES): Delete test.in, test1.out
and test2.out.
2003-01-17 Niels Möller <niels@s3.kth.se>
* examples/Makefile.am (AM_CPPFLAGS): Use AM_CPPFLAGS instead of
AM_CFLAGS.
* testsuite/Makefile.am (AM_CPPFLAGS): Likewise.
2003-01-16 Niels Möller <niels@s3.kth.se>
* testsuite/Makefile.am (check): Can't use quotes around
$(srcdir).
2003-01-14 Niels Möller <nisse@lysator.liu.se>
* testsuite/Makefile.am (check): Don't use "run-tests" as a
target, as it's confused with the file with the same name.
* .bootstrap: Added missing #! /bin/sh.
2003-01-12 Niels Möller <nisse@cuckoo.hack.org>
* buffer.c (nettle_buffer_reset): New function.
(nettle_buffer_copy): New function.
* tools/input.c, tools/input.h, tools/output.c, tools/output.h,
tools/parse.c, tools/parse.h, tools/misc.c, tools/misc.h: Moved
parts ov sexp-conv.c to separate files
* tools/sexp-conv.c (sexp_convert_list): Inlined into
sexp_convert_item.
* tools/sexp-conv.c (struct sexp_input): Deleted string attribute.
Changed all related functions to take a struct nettle_buffer *
argument instead.
(struct sexp_compound_token): New struct.
(sexp_compound_token_init, sexp_compound_token_clear): New
functions.
(struct sexp_parser): Added a struct sexp_compound_token
attribute, as a temporary measure.
(sexp_parse): Take a struct sexp_compound_token * as argument.
Updated all callers. Simplified handling of display types and
transport encoding.
* tools/sexp-conv.c (struct sexp_parser): Renamed struct (was
struct sexp_parse_state). Added input pointer. Updated users to
not pass around both parser and input.
(sexp_check_token): handle token == 0.
(sexp_parse): Simplified a little by calling sexp_check_token
unconditionally.
* tools/sexp-conv.c (sexp_convert_string): Deleted function.
(sexp_skip_token): Likewise.
* tools/sexp-conv.c (enum sexp_token): New constant SEXP_DISPLAY.
Start constants from 1, to keep 0 free for special uses.
(struct sexp_parse_state): New struct for keeping track of parser
state.
(sexp_parse_init): New function.
(sexp_check_token): New function, replacing sexp_skip_token.
(sexp_parse): New function.
(sexp_convert_item): Simplified by using sexp_parse.
(sexp_convert_list): Use sexp_parse.
(main): Likewise.
2003-01-08 Niels Möller <niels@s3.kth.se>
* tools/sexp-conv.c (parse_options): Initialize prefer_hex.
2003-01-07 Niels Möller <nisse@cuckoo.hack.org>
* Makefile.am (des_headers): Refer to the desdata binary using
$(EXEEXT).
2003-01-01 Niels Möller <nisse@cuckoo.hack.org>
* testsuite/sexp-conv-test: New tests for hex and base64 literal
output.
* tools/sexp-conv.c (sexp_put_string): Print binary strings using
either hex or base 64 (in advanced mode).
(parse_options): Implemented -s hex, for output using hex rather
than base64.
2002-12-30 Niels Möller <nisse@cuckoo.hack.org>
* testsuite/rsa2sexp-test.c: Don't include rsa.h (done by
testutils.h, if enabled).
* testsuite/sexp2rsa-test.c: Likewise.
* rsa-decrypt.c: Make compilation conditional on WITH_PUBLIC_KEY.
* rsa-encrypt.c: Likewise.
* rsa-compat.c: Likewise.
2002-12-04 Niels Möller <niels@s3.kth.se>
* testsuite/Makefile.am (LDADD): Added path to ../libnettle.a,
which is redundant except for the dependency.
2002-12-04 Niels Möller <nisse@cuckoo.hack.org>
* testsuite/sexp-format-test.c (test_main): Use %0s instead of %z.
New test for %t.
* sexp-format.c (format_length_string): Deleted function.
(format_string): Deleted function.
(sexp_vformat): New %t specifier, formatting an optional display
type. Deleted %z specifier. Instead, introduced a new modifier "0"
that can be used with %s, %l and %t, which says that the data is
NUL-terminated.
* rsa2sexp.c (rsa_keypair_to_sexp): Use %0s rather than %z, when
formatting s-expressions.
* buffer.c (nettle_buffer_grow): Fixed assertion.
2002-11-22 Niels Möller <niels@s3.kth.se>
* buffer.c: Include assert.h.
2002-11-21 Niels Möller <nisse@cuckoo.hack.org>
* testsuite/testutils.c (print_hex): Add line breaks.
* Makefile.am (libnettleinclude_HEADERS): Added realloc.h.
(libnettle_a_SOURCES): Added buffer-init.c and realloc.c.
* sexp.c (sexp_iterator_exit_lists): New function, #if:ed out for
now.
* desdata.c: Include config.h, to get definition of UNUSED.
* shadata.c: Likewise.
* buffer.c (nettle_buffer_grow): New function, replacing
grow_realloc.
(nettle_buffer_clear): Rewritten to use buffer->realloc.
* buffer.h (struct nettle_buffer): Replaced the GROW function
pointer with a nettle_realloc_func pointer and a
void *realloc_ctx.
(NETTLE_BUFFER_GROW): Deleted macro, use function instead.
* buffer-init.c (nettle_buffer_init): Moved to a separate file.
* realloc.c (nettle_realloc): New function.
(nettle_xrealloc): New function.
* realloc.h (nettle_realloc_func): New typedef.
* configure.ac: Check for gcc:s __attribute__.
2002-11-16 Niels Möller <nisse@cuckoo.hack.org>
* sexp2dsa.c, sexp2rsa.c: (macro GET): Check sign of parsed
numbers.
* sexp2bignum.c (nettle_mpz_set_sexp): In the first check against
limit, added some margin to allow for sign octets.
2002-11-15 Niels Möller <nisse@cuckoo.hack.org>
* testsuite/testutils.h (LDATA): Use sizeof instead of strlen. Now
handles strings including NUL-characters. But works only with
literals and character arrays, no char pointers.
(LLENGTH): New macro, computing length the same way as LDATA.
* testsuite/sexp-test.c (test_main): Test sexp_iterator_get_uint32.
* testsuite/sexp-format-test.c (test_main): Check that %i and %b
generate leading zeroes when needed. Check that %b handles
negative numbers.
* testsuite/rsa2sexp-test.c (test_main): Updated test, one leading
zero is needed in the private key expression. In verbose mode,
print the generated keys.
* testsuite/sexp2rsa-test.c (test_main): Added a leading zero in
the private key expression.
* testsuite/bignum-test.c (test_bignum): Use
nettle_mpz_init_set_str_256_s.
(test_size): New function.
(test_main): Test size computation and formatting of negative
numbers.
* sexp2bignum.c (nettle_mpz_set_sexp): Use
nettle_mpz_set_str_256_s, to handle negative numbers correctly.
* sexp-format.c (sexp_vformat): For %i, output a leading zero when
needed to get a correct, positive, sign. For %b, use
nettle_mpz_sizeinbase_256_s, to handle negative numbers properly.
* bignum.c (nettle_mpz_sizeinbase_256_s): New function.
(nettle_mpz_sizeinbase_256_u): New name, was
nettle_mpz_sizeinbase_256. Updated all callers.
(nettle_mpz_to_octets): New function.
(nettle_mpz_get_str_256): Handle negative numbers.
(nettle_mpz_from_octets): New function.
(nettle_mpz_set_str_256_u): New name, was nettle_mpz_set_str_256.
(nettle_mpz_init_set_str_256_u): New name, was
nettle_mpz_init_set_str_256.
(nettle_mpz_set_str_256_s): New function, handling negative two's
complement numbers.
(nettle_mpz_init_set_str_256_s): And an init variant.
* sexp.c (sexp_iterator_get_uint32): New function.
2002-11-10 Niels Möller <nisse@cuckoo.hack.org>
* testsuite/sexp-conv-test: Use input files without any trailing
newline character, in order to stress the end of file handling.
* tools/sexp-conv.c (sexp_get_token_string): Fixed end of file
handling.
(sexp_get_string): Fixed end of encoding/end of file handling.
(parse_options): Check for negative width and complain.
* tools/sexp-conv.c: Use supplied getopt.
(werror): New function.
(sexp_output_hash_init): New function.
(sexp_put_char): Made base64 linebreaking configurable.
Implemented hashing.
(sexp_put_code_start, sexp_put_code_end): Don't output any
delimiters here.
(sexp_put_string): Output base64 delimiters.
(sexp_put_digest): New function.
(sexp_convert_item): Output transport delimiters.
(sexp_convert_file): Deleted function, folded with main.
(parse_options): New function.
(main): Implemented --hash and --once, needed by lsh-authorize.
* sexp.h (struct sexp_iterator): New field start.
* sexp.c (sexp_iterator_subexpr): New function.
(sexp_iterator_parse): Initialize ITERATOR->start.
* sexp-format.c (sexp_vformat): Abort if format string contains
unhandled characters.
2002-11-08 Niels Möller <niels@s3.kth.se>
* des-compat.c (des_ecb3_encrypt): Don't use struct initialization
(c89 doesn't allow non-constant initializers). Reported by James
Ralston.
(des_ede3_cbc_encrypt): Likewise.
* examples/nettle-openssl.c: Moved from the top-level directory.
Should *not* be included in the nettle library.
2002-11-08 Niels Möller <nisse@cuckoo.hack.org>
* testsuite/testutils.c (test_dsa_key): Bugfix for renamed DSA
constant (noted by James Ralston).
2002-11-07 Niels Möller <niels@s3.kth.se>
* testsuite/run-tests: Copied new version rom lsh/src/testsuite.
This version handles test scripts located in $srcdir.
* examples/Makefile.am (AM_CFLAGS): We need -I$(top_srcdir).
* tools/Makefile.am (AM_CFLAGS): Likewise.
* testsuite/Makefile.am (AM_CFLAGS): Likewise.
2002-11-07 Niels Möller <nisse@cuckoo.hack.org>
* Makefile.am (SUBDIRS): Added tools.
(libnettle_a_SOURCES): Added sexp-transport-format.c,
sexp2bignum.c, sexp2dsa.c.
* sexp2dsa.c (dsa_keypair_from_sexp_alist, dsa_keypair_from_sexp):
New file, new functions.
* rsa2sexp.c (rsa_keypair_to_sexp): %s -> %z renaming.
* sexp-transport.c (sexp_transport_iterator_first): Fixed bug,
length was mishandled.
* sexp-transport-format.c (sexp_transport_format,
sexp_transport_vformat): New file, new functions.
* sexp-format.c (sexp_format): Return length of output. Allow
buffer == NULL, and only compute the needed length in this case.
Renamed %s to %z. New format specifiers %s, %i, and %l.
(sexp_vformat): New function.
(format_prefix): Rewrote to not use snprintf.
* sexp2rsa.c (rsa_keypair_from_sexp): New limit argument. Use
nettle_mpz_set_sexp.
* dsa-keygen.c (dsa_generate_keypair): Added some newlines to
progress display. Use DSA_P_MIN_BITS.
* dsa.h (DSA_MIN_P_BITS): New constant (was DSA_MINIMUM_BITS).
(DSA_Q_OCTETS, DSA_Q_BITS): New constants.
(dsa_keypair_from_sexp_alist, dsa_keypair_from_sexp): New
prototypes.
* configure.ac: Output tools/Makefile.
* sexp2bignum.c (nettle_mpz_set_sexp): New file, and new function.
Moved from sexp2rsa.c:get_value.
* examples/io.c (read_rsa_key): New limit argument in
call of rsa_keypair_from_sexp_alist.
* examples/Makefile.am (noinst_PROGRAMS): Removed sexp-conv.
* tools/sexp-conv.c: Moved file from examples directory.
* testsuite/Makefile.am (TS_SH): New variable. Added
sexp-conv-test.
* testsuite/testutils.h (LDUP): New macro.
* testsuite/sexp2rsa-test.c (test_main): New limit argument in
call of rsa_keypair_from_sexp_alist.
* testsuite/sexp-test.c (test_main): Added test for lengths with
more than one digit. Added tests for transport mode decoding.
* testsuite/sexp-format-test.c (test_main): Added tests for %i and
%l.
* testsuite/sexp-conv-test: Moved test from examples directory.
Updated path to sexp-conv, now in ../tools/sexp-conv.
2002-11-03 Niels Möller <nisse@cuckoo.hack.org>
* sexp-format.c, sexp_format.c: Renamed sexp_format.c to
sexp-format.c.
* Makefile.am (libnettle_a_SOURCES): Renamed sexp_format.c to
sexp-format.c.
* examples/Makefile.am: Don't set CFLAGS or CPPFLAGS explicitly,
let automake handle that.
* testsuite/Makefile.am: Likewise.
* sexp2rsa.c (rsa_keypair_from_sexp_alist): New function.
(rsa_keypair_from_sexp): Use it.
2002-11-01 Niels Möller <niels@s3.kth.se>
* examples/Makefile.am (LDADD): Use -lnettle, instead of an
explicit filename libnettle.a, so that we will use the shared
library, if it exists.
(AM_LDFLAGS): Added -L.., so we can find -lnettle.
(run-tests): Set LD_LIBRARY_PATH to ../.lib, when running the
testsuite.
* testsuite/Makefile.am: Similar changes.
* Makefile.am (LIBOBJS): Put @LIBOBJS@ into the make variable
LIBOBJS.
(CLEANFILES): Delete libnettle.so.
(clean-local): Delete the .lib linkfarm.
($(SHLIBFORLINK)): When building libnettle.so, create a link from
.lib/$SHLIBSONAME. Needed at runtime, for the testsuite.
2002-11-01 Niels Möller <nisse@lysator.liu.se>
* configure.ac: Fixed definitions using SHLIBMAJOR and SHLIBMINOR.
Also AC_SUBST SHLIBMAJOR and SHLIBMINOR. Reported by James
Ralston.
2002-10-31 Niels Möller <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.
2002-10-30 Niels Möller <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 Möller <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 Möller <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.
2002-10-25 Niels Möller <niels@s3.kth.se>
* 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.
2002-10-25 Niels Möller <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 Möller <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 Möller <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 Möller <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.
2002-10-21 Pontus Sköld <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 Möller <nisse@lysator.liu.se>
* examples/sexp-conv.c: New sexp conversion program.
2002-10-21 Niels Möller <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.
2002-10-19 Niels Möller <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 Möller <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.
* 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.
* 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 Möller <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 Möller <nisse@cuckoo.hack.org>
* 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.
* Makefile.am: Added openpgp files.
* 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 Möller <niels@s3.kth.se>
* examples/rsa-keygen.c: Use malloc, instead of asprintf.
2002-10-03 Niels Möller <nisse@cuckoo.hack.org>
* Released nettle-1.6.
* NEWS: Note the aes api change.
* examples/Makefile.am (EXTRA_DIST): Distribute setup-env and
teardown-env.
2002-10-02 Niels Möller <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 Möller <niels@s3.kth.se>
* Makefile.am: Fixed assembler rules, and shared libraries.
* configure.ac: Fixed the enable-shared option.
2002-10-01 Niels Möller <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.
2002-10-01 Niels Möller <niels@s3.kth.se>
* 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/rsa-keygen.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 Möller <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 Möller <niels@s3.kth.se>
* sexp_format.c (sexp_format): Don't mix code and declarations.
2002-09-29 Niels Möller <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 Möller <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 Möller <niels@s3.kth.se>
* Makefile.am (DISTCLEANFILES): make distclean should delete the
assembler-related symlinks.
2002-08-26 Niels Möller <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 Möller <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).
2002-05-16 Niels Möller <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 of 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 Möller <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.
2002-05-15 Niels Möller <niels@s3.kth.se>
* 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.
* 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 Möller <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 Möller <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.
2002-05-14 Niels Möller <niels@s3.kth.se>
* 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.
2002-05-07 Niels Möller <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 Möller <niels@s3.kth.se>
* configure.ac (CFLAGS): Don't enable -Waggregate-return.
2002-05-05 Niels Möller <nisse@lysator.liu.se>
* configure.ac: Pass no arguments to AM_INIT_AUTOMAKE.
2002-05-05 Niels Möller <nisse@cuckoo.hack.org>
* configure.ac: Update for automake-1.6.
* configure.ac: Renamed file, used to be configure.in.
2002-03-20 Niels Möller <nisse@cuckoo.hack.org>
* testsuite/run-tests (test_program): Added missing single quote.
2002-03-20 Niels Möller <nisse@lysator.liu.se>
* testsuite/run-tests (test_program): Test the exit status of the
right process.
2002-03-19 Pontus Sköld <pont@it.uu.se>
* testsuite/run-tests: Removed /bin/bashisms to use with /bin/sh.
2002-03-18 Niels Möller <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 Möller <nisse@cuckoo.hack.org>
* configure.in (asm_path): AC_CONFIG_LINKS adds $srcdir
automatically.
2002-03-14 Niels Möller <nisse@cuckoo.hack.org>
* 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.
Bumped version to 1.6.
2002-02-25 Niels Möller <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 Möller <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 Möller <nisse@cuckoo.hack.org>
* configure.in (asm_path): Renamed "path" to "asm_path". Also look
for a machine.m4.
2002-02-16 Niels Möller <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 Möller <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 Möller <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.
* 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.
2002-02-13 Niels Möller <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.
2002-02-12 Niels Möller <nisse@cuckoo.hack.org>
* 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.
* 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 Möller <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).
2002-02-11 Niels Möller <nisse@lysator.liu.se>
* x86/aes.asm, x86/aes_tables.asm: New assembler implementation by
Rafael Sevilla.
2002-02-06 Niels Möller <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).
2002-02-01 Niels Möller <nisse@cuckoo.hack.org>
* Released nettle-1.5.
2002-01-31 Niels Möller <nisse@cuckoo.hack.org>
* acinclude.m4: Commented out gmp-related macros, they're probably
not needed anymore.
2002-01-31 Niels Möller <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.
2002-01-31 Niels Möller <nisse@cuckoo.hack.org>
* nettle.texinfo (Randomness): New subsection on Yarrow.
2002-01-30 Niels Möller <nisse@cuckoo.hack.org>
* nettle.texinfo (Randomness): New chapter.
Spell checking and ispell configuration.
* md5.c: Added reference to RFC 1321.
2002-01-24 Niels Möller <nisse@cuckoo.hack.org>
* nettle.texinfo (Public-key algorithms): Minor fixes.
2002-01-22 Niels Möller <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.
(Public-key algorithms): New chapter.
* 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.
2002-01-16 Niels Möller <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.
2002-01-15 Niels Möller <nisse@cuckoo.hack.org>
* hmac-sha1.c: New file.
2002-01-14 Niels Möller <nisse@cuckoo.hack.org>
* configure.in: Bumped version to 1.1.
* 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.
* 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.
2002-01-12 Niels Möller <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 Möller <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.
2002-01-09 Niels Möller <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.
* testsuite/md5-test.m4, testsuite/sha1-test.m4,
testsuite/sha256-test.m4, testsuite/yarrow-test.c: Updated for new
hash function interface.
* yarrow256.c: Removed calls of sha256_final and and some calls of
sha256_init.
* md5-compat.c (MD5Final): Call only md5_digest.
* md5.c (md5_digest): Call md5_final and md5_init.
(md5_final): Declared static.
sha1.c, sha256.c: Analogous changes.
* bignum.c (nettle_mpz_get_str_256): Declare the input argument
const.
2001-12-14 Niels Möller <nisse@cuckoo.hack.org>
* Makefile.am (EXTRA_DIST): Added $(des_headers). Changed
dependencies for $(des_headers) to depend only on the source file
desdata.c, not on the executable.
2001-12-12 Niels Möller <nisse@cuckoo.hack.org>
* testsuite/yarrow-test.c (main): Updated testcase to match fixed
generator. Send verbose output to stdout, not stderr.
* yarrow256.c (yarrow_slow_reseed): Bug fix, update the fast pool
with the digest of the slow pool.
(yarrow256_init): Initialize seed_file and counter to zero, to
ease debugging.
2001-12-07 Niels Möller <nisse@cuckoo.hack.org>
* bignum.c (nettle_mpz_get_str_256): Fixed handling of leading
zeroes.
2001-12-05 Niels Möller <nisse@cuckoo.hack.org>
* testsuite/yarrow-test.c (main): Updated test to match the fixed
key event estimator.
* yarrow_key_event.c (yarrow_key_event_estimate): Fixed handling
of timing info.
* nettle.texinfo (Copyright): Say that under certain
circumstances, Nettle can be used as if under the LGPL.
* README: Added a paragraph on copyright.
2001-11-15 Niels Möller <nisse@cuckoo.hack.org>
* yarrow256.c (yarrow256_force_reseed): New function.
2001-11-14 Niels Möller <nisse@ehand.com>
* testsuite/yarrow-test.c (main): Use yarrow256_is_seeded.
* yarrow256.c (yarrow256_needed_sources): New function.
(yarrow256_is_seeded): New function.
(yarrow256_update): Use yarrow256_needed_sources.
2001-11-14 Niels Möller <nisse@cuckoo.hack.org>
* testsuite/yarrow-test.out: Updated, to match the seed-file aware
generator.
* testsuite/yarrow-test.c: Updated expected_output. Check the seed
file contents at the end.
* yarrow256.c (yarrow256_seed): New function.
(yarrow_fast_reseed): Create new seed file contents.
2001-11-13 Niels Möller <nisse@cuckoo.hack.org>
* yarrow.h: Deleted yarrow160 declarations.
2001-11-02 Niels Möller <nisse@ehand.com>
* yarrow256.c (yarrow256_init): Fixed order of code and
declarations.
2001-10-30 Niels Möller <nisse@ehand.com>
* rsa-compat.h: Added real prototypes and declarations.
* Makefile.am (libnettle_a_SOURCES): Added rsa-compat.h and
rsa-compat.c.
* rsa-compat.c: New file, implementing RSA ref signature and
verification functions.
* configure.in: Check for libgmp. Deleted tests for SIZEOF_INT and
friends.
* rsa_sha1.c: New file, PKCS#1 rsa-sha1 signatures.
* rsa_md5.c: New file, PKCS#1 rsa-md5 signatures.
* rsa.c: New file with general rsa functions.
* Makefile.am (libnettle_a_SOURCES): Added rsa and bignum files.
* bignum.c, bignum.h: New file, with base256 functions missing in
gmp.
* testsuite/Makefile.am: Added bignum-test.
* testsuite/run-tests (test_program): Check the exit code more
carefully, and treat 77 as skip. This convention was borrowed from
autotest.
* testsuite/macros.m4: New macro SKIP which exits with code 77.
* testsuite/bignum-test.m4: New file.
2001-10-15 Niels Möller <nisse@ehand.com>
* testsuite/Makefile.am (EXTRA_DIST): Include rfc1750.txt in the
distribution.
2001-10-14 Niels Möller <nisse@cuckoo.hack.org>
* testsuite/des-test.m4: Added testcase taken from applied
cryptography.
* testsuite/yarrow-test.c: Use sha256 instead of sha1 for checking
input and output. Updated the expected values.
* yarrow256.c (YARROW_RESEED_ITERATIONS): New constant.
(yarrow_iterate): New function.
(yarrow_fast_reseed): Call yarrow_iterate.
* testsuite/yarrow-test.c: Added verbose flag, disabled by
default.
2001-10-12 Niels Möller <nisse@ehand.com>
* examples/nettle-benchmark.c: Added more ciphers.
* Makefile.am (SUBDIRS): Added the examples subdir.
* configure.in: Output examples/Makefile.
2001-10-12 Niels Möller <nisse@cuckoo.hack.org>
* examples/nettle-benchmark.c: New benchmarking program.
2001-10-10 Niels Möller <nisse@ehand.com>
* testsuite/yarrow-test.c: Open rfc1750.txt. Hash input and
output, and compare to expected values.
* testsuite/Makefile.am (CFLAGS): Don't disable optimization.
(run-tests): Set srcdir in the environment when running run-tests.
* testsuite/rfc1750.txt: Added this rfc as test input for yarrow.
* yarrow_key_event.c (yarrow_key_event_estimate): Check if
previous is zero.
(yarrow_key_event_init): Initialize previous to zero.
* yarrow256.c: Added debug some output.
* testsuite/yarrow-test.c (main): Better output of entropy
estimates at the end.
2001-10-09 Niels Möller <nisse@ehand.com>
* testsuite/Makefile.am (TS_PROGS): Added yarrow-test.
* testsuite/yarrow-test.c: New file.
* yarrow256.c (yarrow256_init): Initialize the sources.
(yarrow256_random): Fixed loop condition.
* yarrow.h (YARROW_KEY_EVENT_BUFFER): New constant.
* yarrow_key_event.c: New file.
* Makefile.am (libnettle_a_SOURCES): Added yarrow_key_event.c.
2001-10-08 Niels Möller <nisse@cuckoo.hack.org>
* yarrow.h (struct yarrow_key_event_ctx): New struct.
* yarrow256.c (yarrow_fast_reseed): Generate two block of output
using the old key and feed into the pool.
* yarrow.h (struct yarrow256_ctx): Deleted buffer, index and
block_count.
* yarrow256.c (yarrow_fast_reseed): New function.
(yarrow_slow_reseed): New function.
(yarrow256_update): Check seed/reseed thresholds.
(yarrow_gate): New function, extracted from
yarrow_generate_block_with_gate which was deleted.
(yarrow_generate_block_with_gate): Deleted function.
(yarrow256_random): Don't buffer any output, instead gate after
each request.
(YARROW_GATE_THRESHOLD): Deleted constant.
2001-10-07 Niels Möller <nisse@cuckoo.hack.org>
* Makefile.am: Added yarrow files.
* yarrow256.c: New file, implementing Yarrow. Work in progress.
* sha256.c: New file, implementing sha256.
* testsuite/Makefile.am (CFLAGS): Added sha256-test.
* testsuite/sha256-test.m4: New testcases for sha256.
* shadata.c: New file, for generating sha256 constants.
* sha.h: Renamed sha1.h to sha.h, and added declarations for
sha256.
2001-10-05 Niels Möller <nisse@ehand.com>
* testsuite/aes-test.m4: Added a comment with NIST test vectors.
2001-10-04 Niels Möller <nisse@ehand.com>
* rsa.h, rsa-compat.h, yarrow.h: New files.
2001-09-25 Niels Möller <nisse@cuckoo.hack.org>
* Released version 1.0.
2001-09-25 Niels Möller <nisse@ehand.com>
* sha1.c: Include stdlib.h, for abort.
* md5.c: Include string.h, for memcpy.
* testsuite/Makefile.am (M4_FILES): New variable. Explicitly list
those C source files that should be generated by m4.
* configure.in: Changed package name from "libnettle" to "nettle".
* Makefile.am (EXTRA_DIST): Added .bootstrap.
* AUTHORS: Added a reference to the manual.
2001-09-25 Niels Möller <nisse@lysator.liu.se>
* des-compat.c (des_cbc_cksum): Bug fix, local variable was
declared in the middle of a block.
2001-09-19 Niels Möller <nisse@cuckoo.hack.org>
* nettle.texinfo (Compatibility functions): New section,
mentioning md5-compat.h and des-compat.h.
2001-09-18 Niels Möller <nisse@ehand.com>
* index.html: New file.
2001-09-16 Niels Möller <nisse@cuckoo.hack.org>
* nettle.texinfo: Added description of des3. Minor fixes.
* testsuite/des-compat-test.c (cbc_data): Shorten to 32 bytes (4
blocks), the last block of zeroes wasn't used anyway.
* des-compat.c (des_compat_des3_decrypt): Decrypt in the right
order.
(des_ncbc_encrypt): Bug fixed.
(des_cbc_encrypt): Rewritten as a wrapper around des_ncbc_encrypt.
2001-09-14 Niels Möller <nisse@ehand.com>
* testsuite/des-compat-test.c: New file, copied from libdes
(freeswan). All implemented functions but des_cbc_cksum seems to
work now.
* testsuite/Makefile.am (TS_PROGS): Added des-compat-test.
* des-compat.c: Added libdes typedef:s. Had to remove all use of
const in the process.
(des_check_key): New global variable, checked by des_set_key.
* des.c (des_set_key): Go on and expand the key even if it is
weak.
* des-compat.c (des_cbc_cksum): Implemented.
(des_key_sched): Fixed return values.
2001-09-11 Niels Möller <nisse@cuckoo.hack.org>
* Makefile.am: Added des-compat.c and des-compat.h
* des-compat.c: Bugfixes, more functions implemented.
* des-compat.h: Define DES_ENCRYPT and DES_DECRYPT. Bugfixes.
2001-09-10 Niels Möller <nisse@ehand.com>
* nettle.texinfo (Copyright): Added copyright information for
serpent.
(Miscellaneous functions): Started writing documentation on the CBC
functions.
(Cipher Block Chaining): This section more or less complete now.
2001-09-09 Niels Möller <nisse@cuckoo.hack.org>
* testsuite/cbc-test.m4: Record intermediate values in a comment.
* testsuite/des3-test.m4: Likewise.
* testsuite/aes-test.m4: Added test case that appeared broken in
the cbc test.
* cbc.c (cbc_encrypt): Bug fix, encrypt block *after* XOR:ing the
iv.
* Makefile.am (libnettleinclude_HEADERS): Added cbc.h. Deleted
des3.h.
(libnettle_a_SOURCES): Added des3.c.
* testsuite/Makefile.am (TS_PROGS): Added des3-test and cbc-test.
* testsuite/cbc-test.m4: New testcase.
* testsuite/des3-test.m4: New testcase.
* cbc.h (CBC_CTX): New macro.
(CBC_ENCRYPT): New macro.
(CBC_DECRYPT): New macro.
* des.c (des_fix_parity): New function.
* des3.c: New file, implementing triple des.
2001-09-06 Niels Möller <nisse@cuckoo.hack.org>
* cbc.c, cbc.h: New files, for general CBC encryption.
* des-compat.h: Added some prototypes.
2001-09-05 Niels Möller <nisse@ehand.com>
* testsuite/Makefile.am (TS_PROGS): Added md5-compat-test.
* README: Copied introduction from the manual.
* configure.in: Bumped version to 1.0.
* Makefile.am (libnettleinclude_HEADERS): Added missing includes.
(libnettle_a_SOURCES): Added md5-compat.c and md5-compat.h.
* md5-compat.c, md5-compat.h: New files, implementing an RFC
1321-style interface.
2001-09-02 Niels Möller <nisse@cuckoo.hack.org>
* twofish.c (twofish_decrypt): Fixed for();-bug in the block-loop.
Spotted by Jean-Pierre.
(twofish_encrypt): Likewise.
2001-07-03 Niels Möller <nisse@ehand.com>
* testsuite/testutils.c: Include string.h.
* twofish.c: Include string.h.
2001-06-17 Niels Möller <nisse@lysator.liu.se>
* Makefile.am (des_headers): Dont use $(srcdir)/-prefixes as that
seems to break with GNU make 3.79.1.
* testsuite/testutils.c, testsuite/testutils.h: Use <inttypes.h>,
not <stdint.h>.
Include <stdlib.h>.
2001-06-17 Niels Möller <nisse@cuckoo.hack.org>
* Use <inttypes.h>, not <stdint.h>.
* blowfish.h (BLOWFISH_MAX_KEY_SIZE): Fixed, should be 56.
* Fixed copyright notices.
* Makefile.am (libnettle_a_SOURCES): Added desinfo.h and
desCode.h.
(info_TEXINFOS): Added manual.
(EXTRA_DIST): Added nettle.html.
(%.html): Added rule for building nettle.html.
* nettle.texinfo: New manual.
* configure.in: Bumped version to 0.2.
* testsuite/Makefile.am (TS_PROGS): Added cast128 test.
* Added CAST128.
* testsuite/serpent-test.m4: Added a few rudimentary tests
extracted from the serpent package.
* twofish.c: Adapted to nettle. Made constant tables const.
Deleted bytes_to_word and word_to_bytes; use LE_READ_UINT32 and
LE_WRITE_UINT32 instead.
(twofish_selftest): Deleted. Moved the tests to the external
testsuite.
(twofish_set_key): Don't silently truncate too large keys.
* sha1.c (sha1_update): Use unsigned for length.
* serpent.c (serpent_set_key): Read the key backwards. Fixed
padding (but there are no test vectors for key_size not a multiple
of 4).
(serpent_encrypt): Read and write data in the strange order used
by the reference implementation.
(serpent_decrypt): Likewise.
* macros.h (FOR_BLOCKS): New macro, taken from lsh.
* blowfish.h (struct blowfish_ctx): Use a two-dimensional array
for s.
* blowfish.c (initial_ctx): Arrange constants into a struct, to
simplify key setup.
(F): Deleted all but one definitions of the F function/macro.
Added a context argument, and use that to find the subkeys.
(R): Added context argument, and use that to find the subkeys.
(blowfish_set_key): Some simplification.
(encrypt): Deleted code for non-standard number of rounds. Deleted
a bunch of local variables. Using the context pointer for
everything should consume less registers.
(decrypt): Likewise.
* Makefile.am (libnettle_a_SOURCES): Added twofish.
2001-06-16 Niels Möller <nisse@cuckoo.hack.org>
* testsuite/blowfish-test.m4: Fixed test.
* Added twofish implementation.
* blowfish.h (struct blowfish_ctx): Use the correct size for the p
array.
2001-06-15 Niels Möller <nisse@ehand.com>
* testsuite/blowfish-test.m4: Fixed testcase, use correct key
length.
* Makefile.am (libnettle_a_SOURCES): Added blowfish files.
($(des_headers)): Strip directory part when passing file name to
desdata.
* testsuite/blowfish-test.m4: Added one test, from GNUPG.
* Created blowfish.c and blowfish.h (from GNUPG via LSH). Needs
more work.
* aes.h: Fixed copyright notice to not mention GNU MP. XXX: Review
all nettle copyrights.
* testsuite/Makefile.am (TS_PROGS): Added tests for twofish and
blowfish.
2001-06-13 Niels Möller <nisse@ehand.com>
* Makefile.am (libnettle_a_SOURCES): Added serpent files.
2001-06-12 Niels Möller <nisse@cuckoo.hack.org>
* des.c (des_encrypt, des_decrypt): Assert that the key setup was
successful.
* testsuite/Makefile.am (TS_PROGS): Added tests for des and sha1.
* testsuite/sha1-test.m4: New file.
* testsuite/des-test.m4: New file.
* Added sha1 files.
* Added desCore files.
* Makefile.am: Added desCore and sha1.
2001-04-17 Niels Möller <nisse@cuckoo.hack.org>
* install-sh: Copied the standard install script.
* testsuite/Makefile.am (CFLAGS): Disable optimization. Add
$(top_srcdir) to the include path.
(EXTRA_DIST): Added testutils.h, testutils.c and run-tests.
(run-tests): Fixed path to run-tests.
* Makefile.am (EXTRA_DIST): Added memxor.h.
(libnettleinclude_HEADERS): Install headers in
$(libnettleincludedir).
2001-04-13 Niels Möller <nisse@cuckoo.hack.org>
* Initial checkin.