There's actually no signing going on in here, just hashing, so all these functions should be re-named. Where does the actual signing and verification take place? (Note that verification only needs the public key, the message (i.e. the hash), and the signature -- the private key is only needed during signing). I'd still like to see this get signed by a larger/more protected key (perhaps that exists only on a box that's not serving any public web services, and just reads/writes the files to sign from a shared disk).