diff --git a/ChangeLog b/ChangeLog
index 25f77464bc558aa892734027d331bff2189ffd5e..a21dd049d7c1a2b501393445fa600dfdfc1b5ba7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,38 @@
+2011-08-29  Niels M�ller  <nisse@lysator.liu.se>
+
+	* 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. 
+	(ripemd160_digest): Use _nettle_write_le32.
 
 	* Makefile.in (nettle_SOURCES): Added write-le32.c.
 
diff --git a/NEWS b/NEWS
index 774d201b5f59069d87e2c1e16c1a4c3513c9dfc6..1c284a17defb998207a5b1aa9025d234bb8663f1 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,11 @@
+NEWS for the 2.3 release
+
+	Misc:
+
+	* In the context struct sha1_ctx renamed the attribute
+	  "digest" to "state". Applications should not peek inside
+	  this struct, and the ABI is unchanged.
+
 NEWS for the 2.2 release
 
 	Licensing change: