Create a signed CRC32 hash. I'm not absolutely sure it's correct. At least it fixes the unit tests and doesn't create a different hash than Python 2.x
diff --git a/Modules/zlibmodule.c b/Modules/zlibmodule.c
index a978370..551fd3e 100644
--- a/Modules/zlibmodule.c
+++ b/Modules/zlibmodule.c
@@ -940,7 +940,7 @@
     if (!PyArg_ParseTuple(args, "s#|k:crc32", &buf, &len, &crc32val))
 	return NULL;
     crc32val = crc32(crc32val, buf, len);
-    return PyLong_FromUnsignedLong(crc32val & 0xffffffff);
+    return PyLong_FromLong(crc32val & 0xffffffff);
 }