include "keyring.m"; keyring := load Keyring Keyring->PATH; sha1: fn(buf: array of byte, n: int, digest: array of byte, state: ref DigestState): ref DigestState; md4: fn(buf: array of byte, n: int, digest: array of byte, state: ref DigestState): ref DigestState; md5: fn(buf: array of byte, n: int, digest: array of byte, state: ref DigestState): ref DigestState; hmac_sha1: fn(buf: array of byte, n: int, key: array of byte, digest: array of byte, state: ref DigestState): ref DigestState; hmac_md5: fn(buf: array of byte, n: int, key: array of byte, digest: array of byte, state: ref DigestState): ref DigestState; sign: fn(sk: ref SK, exp: int, state: ref DigestState, ha: string): ref Certificate; verify: fn(pk: ref PK, cert: ref Certificate, state: ref DigestState): int;
Hmac_sha1 and hmac_md5 are keyed versions of the hashing functions, following Internet RFC2104. The key must be provided in each call, but otherwise the calling conventions are those of sha1. The key must currently be no more than 64 bytes.
Sign creates a digital signature of a digest from the concatenation of: a message, the name of the signer, and an expiration time. State is the digest state after running sha1, md4 or md5 over the message. Ha is a string specifying the hash algorithm to use: "sha", "sha1", "md4" or "md5". Sign extends the digest to cover the signer's name (taken from the private key, sk) and the expiration time. It returns a certificate containing the digital signature of the digest, signer name, hash algorithm and signature algorithm. If any parameter is invalid, sign returns nil. The signature algorithm is implied by the type of the private key.
Verify uses public key pk to verify a certificate. It returns non-zero (true) if the certificate is valid; zero (false) otherwise. State is the digest state after running the chosen digest algorithm over the message.
state: ref DigestState = nil; while((n := sys->read(fd, buf, len buf)) > 0) state = kr->sha1(buf, n, nil, state); digest := array[kr->SHA1dlen] of byte; kr->sha1(buf, 0, digest, state);
KEYRING-SHA1(2 ) | Rev: Tue Mar 31 02:42:39 GMT 2015 |