sechash man page on Plan9

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

SECHASH(2)							    SECHASH(2)

NAME
       md4,  md5,  sha1,  sha2_224, sha2_256, sha2_384, sha2_512, aes, hmac_x,
       hmac_md5,  hmac_sha1,  hmac_sha2_224,   hmac_sha2_256,	hmac_sha2_384,
       hmac_sha2_512,	 hmac_aes,    md5pickle,    md5unpickle,   sha1pickle,
       sha1unpickle - cryptographically secure hashes

SYNOPSIS
       #include <u.h>
       #include <libc.h>
       #include <mp.h>
       #include <libsec.h>
       #define DS DigestState /* only to abbreviate SYNOPSIS */

       DS* md4(uchar *data, ulong dlen, uchar *digest, DS *state)

       DS* md5(uchar *data, ulong dlen, uchar *digest, DS *state)

       char*	  md5pickle(MD5state *state)

       MD5state*  md5unpickle(char *p);

       DS* sha1(uchar *data, ulong dlen, uchar *digest, DS *state)

       char*	  sha1pickle(SHA1state *state)

       SHA1state* sha1unpickle(char *p);

       DS* sha2_224(uchar *data, ulong dlen, uchar *digest, DS *state)

       DS* sha2_256(uchar *data, ulong dlen, uchar *digest, DS *state)

       DS* sha2_384(uchar *data, ulong dlen, uchar *digest, DS *state)

       DS* sha2_512(uchar *data, ulong dlen, uchar *digest, DS *state)

       DS* aes(uchar *data, ulong dlen, uchar *digest, DS *state)

       DS* hmac_x(uchar *p, ulong len, uchar *key, ulong klen, uchar  *digest,
	     DS *s, DS*(*x)(uchar*, ulong, uchar*, DS*), int xlen)

       DS* hmac_md5(uchar  *data,  ulong  dlen,	 uchar *key, ulong klen, uchar
	     *digest, DS *state)

       DS* hmac_sha1(uchar *data, ulong dlen, uchar *key,  ulong  klen,	 uchar
	     *digest, DS *state)

       DS* hmac_sha2_224(uchar	*data,	ulong  dlen,  uchar  *key, ulong klen,
	     uchar *digest, DS *state)

       DS* hmac_sha2_256(uchar *data, ulong  dlen,  uchar  *key,  ulong	 klen,
	     uchar *digest, DS *state)

       DS* hmac_sha2_384(uchar	*data,	ulong  dlen,  uchar  *key, ulong klen,
	     uchar *digest, DS *state)

       DS* hmac_sha2_512(uchar *data, ulong  dlen,  uchar  *key,  ulong	 klen,
	     uchar *digest, DS *state)

       DS* hmac_aes(uchar  *data,  ulong  dlen,	 uchar *key, ulong klen, uchar
	     *digest, DS *state)

DESCRIPTION
       We support several secure hash functions.  The  output  of  a  hash  is
       called  a  digest.   A hash is secure if, given the hashed data and the
       digest, it is difficult to predict the change to the  digest  resulting
       from  some  change  to  the  data  without  rehashing  the  whole data.
       Therefore, if a secret is part of the hashed data, the  digest  can  be
       used as an integrity check of the data by anyone possessing the secret.

       The  routines  md4,  md5, sha1, sha2_224, sha2_256, sha2_384, sha2_512,
       aes, hmac_md5, hmac_sha1, hmac_sha2_224, hmac_sha2_256,	hmac_sha2_384,
       hmac_sha2_512,  and hmac_aes differ only in the length of the resulting
       digest and in the security of the hash.	Sha2_* and hmac_sha2_* are the
       SHA-2 functions; the number after the final underscore is the number of
       bits in the resulting digest.  Usage for each is the same.   The	 first
       call  to the routine should have nil as the state parameter.  This call
       returns a state which can be used to chain subsequent calls.  The  last
       call  should  have digest Digest must point to a buffer of at least the
       size of the digest produced.  This last call will free  the  state  and
       copy the result into digest.

       The  constants  MD4dlen, MD5dlen, SHA1dlen, SHA2_224dlen, SHA2_256dlen,
       SHA2_384dlen, SHA2_512dlen, and	AESdlen	 define	 the  lengths  of  the
       digests.

       Hmac_md5,   hmac_sha1,	hmac_sha2_224,	hmac_sha2_256,	hmac_sha2_384,
       hmac_sha2_512, and hmac_aes are used slightly differently.  These  hash
       algorithms  are	keyed and require a key to be specified on every call.
       The digest lengths for these hashes are the obvious ones from the above
       list  of	 length constants.  These routines all call hmac_x internally,
       but hmac_x is not intended for general use.

       The functions md5pickle and sha1pickle marshal the state	 of  a	digest
       for  transmission.   Md5unpickle	 and  sha1unpickle unmarshal a pickled
       digest.	All four routines return a  pointer  to	 a  newly  malloc(2)'d
       object.

EXAMPLES
       To hash a single buffer using md5:

	      uchar digest[MD5dlen];

	      md5(data, len, digest, nil);

       To  chain  a  number  of	 buffers together, bounded on each end by some
       secret:

	      char buf[256];
	      uchar digest[MD5dlen];
	      DigestState *s;

	      s = md5("my password", 11, nil, nil);
	      while((n = read(fd, buf, 256)) > 0)
		   md5(buf, n, nil, s);
	      md5("drowssap ym", 11, digest, s);

SOURCE
       /sys/src/libsec

SEE ALSO
       aes(2), blowfish(2), des(2), elgamal(2), rc4(2), rsa(2)
       /lib/rfc/rfc2104
	      HMAC specification

								    SECHASH(2)
[top]
                             _         _         _ 
                            | |       | |       | |     
                            | |       | |       | |     
                         __ | | __ __ | | __ __ | | __  
                         \ \| |/ / \ \| |/ / \ \| |/ /  
                          \ \ / /   \ \ / /   \ \ / /   
                           \   /     \   /     \   /    
                            \_/       \_/       \_/ 
More information is available in HTML format for server Plan9

List of man pages available for Plan9

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