This directory contains various per-hash values that are used in the testsuite.

Each file contains lines containing a key-value pair; blank lines and lines
starting with `#` are ignored.  The key and value are separated by whitespace
(specifically, those whitespace in the default `$IFS`).  The key consists only
of shell identifier characters, and the value consists of a hash algorithm,
colon, and value.  The hash algorithm also consists only of shell identifier
characters; it should match the value in object-file.c.

For example, the following lines map the key "rawsz" to "20" if SHA-1 is in use
and to "32" if SHA-256 is in use:

----
rawsz sha1:20
rawsz sha256:32
----

The keys and values used here are loaded by `test_oid_init` (see the README file
in the "t" directory) and are used by calling `test_oid`.
