keyring-sha1 man page on Inferno

Man page or keyword search:  
man Server   579 pages
apropos Keyword Search (all sections)
Output format
Inferno logo
[printable version]

KEYRING-SHA1(2)						       KEYRING-SHA1(2)

NAME
       keyring:	 sha1,	md4,  md5, hmac_sha1, hmac_md5, sign, verify - crypto‐
       graphic digests and digital signatures

SYNOPSIS
       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;

DESCRIPTION
       Sha1, md4 and md5 are cryptographically secure hash functions that pro‐
       duce  output called a message digest.  Each function computes a hash of
       n bytes of the data in buf, and updates the current state.  They can be
       called  iteratively  to form a single digest for many data blocks.  The
       state is kept in the DigestState	 value	referenced  by	state  between
       calls.	State  should  be nil on the first call, and a newly allocated
       DigestState will be returned for use in subsequent calls.  On a call in
       which  digest  is  not  nil,  the hash is completed and copied into the
       digest array.  Sha1 produces a 20-byte hash (SHA1dlen), md4 and	md5  a
       16-byte one (MD4len and MD5len).

       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 cur‐
       rently 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 cer‐
       tificate 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.

EXAMPLES
       A program to read a file and hash it using SHA might contain  the  fol‐
       lowing inner loop:

	      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);

SOURCE
       /libinterp/keyring.c
       /libcrypt/hmac.c
       /libcrypt/md4.c
       /libcrypt/md5.c
       /libcrypt/sha1.c

BUGS
       The MD4 algorithm is included only to allow communication with software
       that might still use it; it should not otherwise be used	 now,  because
       it is easily broken.

							       KEYRING-SHA1(2)
[top]

List of man pages available for Inferno

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net