diff options
Diffstat (limited to 'man/man3/sechash.html')
-rw-r--r-- | man/man3/sechash.html | 195 |
1 files changed, 195 insertions, 0 deletions
diff --git a/man/man3/sechash.html b/man/man3/sechash.html new file mode 100644 index 00000000..2e055465 --- /dev/null +++ b/man/man3/sechash.html @@ -0,0 +1,195 @@ +<head> +<title>sechash(3) - Plan 9 from User Space</title> +<meta content="text/html; charset=utf-8" http-equiv=Content-Type> +</head> +<body bgcolor=#ffffff> +<table border=0 cellpadding=0 cellspacing=0 width=100%> +<tr height=10><td> +<tr><td width=20><td> +<tr><td width=20><td><b>SECHASH(3)</b><td align=right><b>SECHASH(3)</b> +<tr><td width=20><td colspan=2> + <br> +<p><font size=+1><b>NAME </b></font><br> + +<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + md4, md5, sha1, hmac_md5, hmac_sha1, md5pickle, md5unpickle, sha1pickle, + sha1unpickle – cryptographically secure hashes<br> + +</table> +<p><font size=+1><b>SYNOPSIS </b></font><br> + +<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + <tt><font size=+1>#include <u.h><br> + #include <libc.h><br> + #include <mp.h><br> + #include <libsec.h> + <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table> + </font></tt> + <tt><font size=+1>DigestState* md4(uchar *data, ulong dlen, uchar *digest, DigestState + *state) + <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table> + </font></tt> + <tt><font size=+1>DigestState* md5(uchar *data, ulong dlen, uchar *digest, DigestState + *state) + <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table> + </font></tt> + <tt><font size=+1>char* md5pickle(MD5state *state) + <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table> + </font></tt> + <tt><font size=+1>MD5state* md5unpickle(char *p); + <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table> + </font></tt> + <tt><font size=+1>DigestState* sha1(uchar *data, ulong dlen, uchar *digest, DigestState + *state) + <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table> + </font></tt> + <tt><font size=+1>char* sha1pickle(MD5state *state) + <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table> + </font></tt> + <tt><font size=+1>MD5state* sha1unpickle(char *p); + <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table> + </font></tt> + <tt><font size=+1>DigestState* hmac_md5(uchar *data, ulong dlen,<br> + + <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + + <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + uchar *key, ulong klen,<br> + uchar *digest, DigestState *state) + <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table> + + </table> + + </table> + </font></tt> + <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + + <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + + + </table> + + </table> + <tt><font size=+1>DigestState* hmac_sha1(uchar *data, ulong dlen,<br> + + <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + + <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + uchar *key, ulong klen,<br> + uchar *digest, DigestState *state)<br> + + </table> + + </table> + </font></tt> +</table> +<p><font size=+1><b>DESCRIPTION </b></font><br> + +<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table> + + +<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + These functions implement the cryptographic hash functions MD4, + MD5, and SHA1. The output of the hash is called a <i>digest</i>. 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. + + <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table> + + The routines <i>md4</i>, <i>md5</i>, <i>sha1</i>, <i>hmac_md5</i>, and <i>hmac_sha1</i> differ only + in the length of the resulting digest and in the security of the + hash. Usage for each is the same. The first call to the routine + should have <tt><font size=+1>nil</font></tt> as the <i>state</i> parameter. This call returns a state + which can be used to chain subsequent calls. The last call + should have digest non-nil. <i>Digest</i> 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 <i>digest</i>. For example, to hash + a single buffer using <i>md5</i>:<br> + + <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + <tt><font size=+1>uchar digest[MD5dlen];<br> + md5(data, len, digest, nil);<br> + + <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table> + </font></tt> + + </table> + To chain a number of buffers together, bounded on each end by + some secret:<br> + + <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + <tt><font size=+1>char buf[256];<br> + uchar digest[MD5dlen];<br> + DigestState *s;<br> + s = md5("my password", 11, nil, nil);<br> + while((n = read(fd, buf, 256)) > 0)<br> + + <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + md5(buf, n, nil, s);<br> + + </table> + md5("drowssap ym", 11, digest, s);<br> + + <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table> + </font></tt> + + </table> + The constants <i>MD4dlen</i>, <i>MD5dlen</i>, and <i>SHA1dlen</i> define the lengths + of the digests. + <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table> + + <i>Hmac_md5</i> and <i>hmac_sha1</i> 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 <i>MD5dlen</i> and <i>SHA1dlen</i> + respectively. + <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table> + + The functions <i>md5pickle</i> and <i>sha1pickle</i> marshal the state of a + digest for transmission. <i>Md5unpickle</i> and <i>sha1unpickle</i> unmarshal + a pickled digest. All four routines return a pointer to a newly + <a href="../man3/malloc.html"><i>malloc</i>(3)</a>’d object.<br> + +</table> +<p><font size=+1><b>SOURCE </b></font><br> + +<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + <tt><font size=+1>/usr/local/plan9/src/libsec<br> + </font></tt> +</table> +<p><font size=+1><b>SEE ALSO </b></font><br> + +<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td> + + <a href="../man3/aes.html"><i>aes</i>(3)</a>, <a href="../man3/blowfish.html"><i>blowfish</i>(3)</a>, <a href="../man3/des.html"><i>des</i>(3)</a>, <a href="../man3/elgamal.html"><i>elgamal</i>(3)</a>, <a href="../man3/rc4.html"><i>rc4</i>(3)</a>, <a href="../man3/rsa.html"><i>rsa</i>(3)</a><br> + +</table> + +<td width=20> +<tr height=20><td> +</table> +<!-- TRAILER --> +<table border=0 cellpadding=0 cellspacing=0 width=100%> +<tr height=15><td width=10><td><td width=10> +<tr><td><td> +<center> +<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a> +</center> +</table> +<!-- TRAILER --> +</body></html> |