Bogus test cases on http://cr.yp.to/sigs/h0.html?

Matthew Dempsky <[email protected]> Mon, 29 Aug 2005 21:15:08 +0000
Newsgroups gmane.comp.djb.sigs
Message-ID <[email protected]>
--=-zdpUN5rupyv/SQU6lxb8
Content-Type: multipart/mixed; boundary="=-1UcagcMYkMTS7DyUfNC1"


--=-1UcagcMYkMTS7DyUfNC1
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Following the description on http://cr.yp.to/sigs/h0.html, I wrote a
routine to expand a SHA-1 hash into a 1536-bit hash (the complete source
code is attached):

static void
expand_h (uint32_t h[48])
{
  int i;
  for (i =3D 5; i < 48; ++i)
    h[i] =3D h[i-5] + ((h[i-2] + s[i]) ^ ROT (h[i-1], 5));
}

When I use this routine to expand the 5 test cases following the
description, none of them fully coincide.  The first and third columns
match one value, the second and fourth columns match two values, and the
fifth column matches a whopping six values.

Are the test cases bogus, or did I misunderstand the hash expand
function?

--=20
Matthew Dempsky <[email protected]>

--=-1UcagcMYkMTS7DyUfNC1
Content-Disposition: attachment; filename=h0.c
Content-Type: text/x-csrc; name=h0.c; charset=UTF-8
Content-Transfer-Encoding: base64

I2luY2x1ZGUgPHN0ZGlvLmg+DQoNCnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQzMl90Ow0KDQpz
dGF0aWMgY29uc3QgdWludDMyX3Qgc1s0OF0gPSB7DQogIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAs
IDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsDQogIDB4MDAwMDAwMDAsIDB4NmEwOWU2NjcsIDB4M2M2
ZWYzNzIsIDB4ZDQxM2NjY2YsDQogIDB4NTEwZTUyN2YsIDB4YmRkZDQyMmQsIDB4MWY4M2Q5YWIs
IDB4NzhkZGU2ZTUsDQogIDB4Y2JiYjlkNWQsIDB4MTk1OTU3YzQsIDB4NjI5YTI5MmEsIDB4YTgy
Nzk5OWYsDQogIDB4ZWE4NDM0NjQsIDB4MmExNzA5M2QsIDB4NjczMzI2NjcsIDB4YTIxY2E0ZmYs
DQogIDB4ZGIwYzJlMGQsIDB4MTIzMTgwMDcsIDB4NDdiNTQ4MWQsIDB4N2JiYTg0NWEsDQogIDB4
YWU1ZjkxNTYsIDB4ZGZiZWZhZTMsIDB4MGZmMDFmYjAsIDB4M2YwN2IzNTcsDQogIDB4NmQxODI2
Y2EsIDB4OWEzMWZkMWIsIDB4YzY2NDEwZWIsIDB4ZjFiYmNkY2IsDQogIDB4MWM0NTYwMDIsIDB4
NDYwYmRjOTksIDB4NmYxOTYzMzEsIDB4OTc3NzNhYmIsDQogIDB4YmYyZGVhMDcsIDB4ZTY0NTRj
ZDcsIDB4MGNjNGE2MTEsIDB4MzJiMmFmODksDQogIDB4NmI4YjQ1NjcsIDB4MzI3YjIzYzYsIDB4
NjQzYzk4NjksIDB4NjYzMzQ4NzMsDQogIDB4NzRiMGRjNTEsIDB4YjFiMWVhNWIsIDB4YWI1ODlm
MWIsIDB4NzU2NjQ0MjgsDQp9Ow0KDQojZGVmaW5lIFJPVCh4LCBuKSAoKCh4KSA8PCAobikpIHwg
KCh4KSA+PiAoMzIgLSAobikpKSkNCg0Kc3RhdGljIHZvaWQNCmV4cGFuZF9oICh1aW50MzJfdCBo
WzQ4XSkNCnsNCiAgaW50IGk7DQogIGZvciAoaSA9IDU7IGkgPCA0ODsgKytpKQ0KICAgIGhbaV0g
PSBoW2ktNV0gKyAoKGhbaS0yXSArIHNbaV0pIF4gUk9UIChoW2ktMV0sIDUpKTsNCn0NCg0KdWlu
dDMyX3QgYVs0OF0gPSB7IDB4NmI4YjQ1NjcsIDB4MzI3YjIzYzYsIDB4NjQzYzk4NjksIDB4NjYz
MzQ4NzMsIDB4NzRiMGRjNTEsIH07DQp1aW50MzJfdCBiWzQ4XSA9IHsgMHgxOTQ5NWNmZiwgMHgy
YWU4OTQ0YSwgMHg2MjU1NThlYywgMHgyMzhlMWYyOSwgMHg0NmU4N2NjZCwgfTsNCnVpbnQzMl90
IGNbNDhdID0geyAweDNkMWI1OGJhLCAweDUwN2VkN2FiLCAweDJlYjE0MWYyLCAweDQxYjcxZWZi
LCAweDc5ZTJhOWUzLCB9Ow0KdWludDMyX3QgZFs0OF0gPSB7IDB4NzU0NWUxNDYsIDB4NTE1ZjAw
N2MsIDB4NWJkMDYyYzIsIDB4MTIyMDA4NTQsIDB4NGRiMTI3ZjgsIH07DQp1aW50MzJfdCBlWzQ4
XSA9IHsgMHgwMjE2MjMxYiwgMHgxZjE2ZTllOCwgMHgxMTkwY2RlNywgMHg2NmVmNDM4ZCwgMHgx
NDBlMGY3NiwgfTsNCg0KaW50DQptYWluICgpDQp7DQogIGludCBpOw0KDQogIGV4cGFuZF9oIChh
KTsNCiAgZXhwYW5kX2ggKGIpOw0KICBleHBhbmRfaCAoYyk7DQogIGV4cGFuZF9oIChkKTsNCiAg
ZXhwYW5kX2ggKGUpOw0KDQogIGZvciAoaSA9IDA7IGkgPCA0ODsgKytpKQ0KICAgIHByaW50ZiAo
IjB4JTA4eCAweCUwOHggMHglMDh4IDB4JTA4eCAweCUwOHggMHglMDh4XG4iLCANCiAgICAgICAg
ICAgIHNbaV0sIGFbaV0sIGJbaV0sIGNbaV0sIGRbaV0sIGVbaV0pOw0KDQogIHJldHVybiAwOw0K
fQ0K


--=-1UcagcMYkMTS7DyUfNC1--

--=-zdpUN5rupyv/SQU6lxb8
Content-Type: application/pgp-signature; name=signature.asc
Content-Description: This is a digitally signed message part

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)

iD8DBQBDE3rcgrzsjdJhC9ARAvrRAKCLZAsbQav0hFA0cPk4jHrHymJ5gwCfd1XV
eO4uQ9lC3k2px+xe2NP3TjA=
=Wv89
-----END PGP SIGNATURE-----

--=-zdpUN5rupyv/SQU6lxb8--