diff --git a/ChangeLog b/ChangeLog
index 0f281f7dee2eab11d7edc4df974ec85e60407c7f..aca0d5a6bf6f1f7c08be57202d6ac964c70a96d0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,48 @@
+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
diff --git a/testsuite/.cvsignore b/testsuite/.cvsignore
index 0d066cd7e60235a3345cd2059efbc04f171d1f7c..52b923fc3f1fefeac9cef6edcdbdeb239c309e81 100644
--- a/testsuite/.cvsignore
+++ b/testsuite/.cvsignore
@@ -6,6 +6,7 @@ arcfour-test
 base64-test
 bignum-test
 blowfish-test
+buffer-test
 cast128-test
 cbc-test
 des-compat-test
@@ -17,8 +18,11 @@ md5-compat-test
 md5-test
 rsa-keygen-test
 rsa-test
+rsa2sexp-test
 serpent-test
+sexp-format-test
 sexp-test
+sexp2rsa-test
 sha1-test
 sha256-test
 twofish-test
diff --git a/testsuite/.gitignore b/testsuite/.gitignore
index 6a3f61baf282037782970ca319dfde63a27e2936..5a57094739b9ed95eec82b06770b474157556a6e 100644
--- a/testsuite/.gitignore
+++ b/testsuite/.gitignore
@@ -6,6 +6,7 @@
 /base64-test
 /bignum-test
 /blowfish-test
+/buffer-test
 /cast128-test
 /cbc-test
 /des-compat-test
@@ -17,8 +18,11 @@
 /md5-test
 /rsa-keygen-test
 /rsa-test
+/rsa2sexp-test
 /serpent-test
+/sexp-format-test
 /sexp-test
+/sexp2rsa-test
 /sha1-test
 /sha256-test
 /twofish-test