SECHASH(2)SECHASH(2)
NAME
md4, md5, ripemd160, sha1, sha2_224, sha2_256, sha2_384, sha2_512, sha3_224, sha3_256, sha3_384, sha3_512, shake_128_in, shake_128_out, shake_128_conv, shake_128, shake_256_in, shake_256_out, shake_256_conv, shake_256, hmac_x, hmac_md5, hmac_sha1, hmac_sha2_224, hmac_sha2_256, hmac_sha2_384, hmac_sha2_512, blake2s_128, blake2s_256, mac_blake2s_128, mac_blake2s_256, hmac_blake2s_256, poly1305 – cryptographically secure hashes
SYNOPSIS
unhandled troff command .nr
unhandled troff command .nr
unhandled troff command .de
unhandled troff command .in
unhandled troff command .ti
unhandled troff command .nh
unhandled troff command ..
#include <u.h> #include <libc.h> #include <mp.h> #include <libsec.h> #define DS DigestState /* only to abbreviate SYNOPSIS */ #define XS XOFState /* only to abbreviate SYNOPSIS */
unhandled troff command .Ti
DS* md4(uchar *data, ulong dlen, uchar *digest, DS *state)
unhandled troff command .Ti
DS* md5(uchar *data, ulong dlen, uchar *digest, DS *state)
unhandled troff command .Ti
DS* ripemd160(uchar *data, ulong dlen, uchar *digest, DS *state)
unhandled troff command .Ti
DS* sha1(uchar *data, ulong dlen, uchar *digest, DS *state)
unhandled troff command .Ti
DS* sha2_224(uchar *data, ulong dlen, uchar *digest, DS *state)
unhandled troff command .Ti
DS* sha2_256(uchar *data, ulong dlen, uchar *digest, DS *state)
unhandled troff command .Ti
DS* sha2_384(uchar *data, ulong dlen, uchar *digest, DS *state)
unhandled troff command .Ti
DS* sha2_512(uchar *data, ulong dlen, uchar *digest, DS *state)
unhandled troff command .Ti
DS* sha3_224(uchar *data, ulong dlen, uchar *digest, DS *state)
unhandled troff command .Ti
DS* sha3_256(uchar *data, ulong dlen, uchar *digest, DS *state)
unhandled troff command .Ti
DS* sha3_384(uchar *data, ulong dlen, uchar *digest, DS *state)
unhandled troff command .Ti
DS* sha3_512(uchar *data, ulong dlen, uchar *digest, DS *state)
unhandled troff command .Ti
DS* shake_128_in(uchar *data, ulong dlen, DS *state)
unhandled troff command .Ti
XS* shake_128_conv(XS *out, DS *in)
unhandled troff command .Ti
void shake_128_out(uchar *out, ulong olen, XS *state)
unhandled troff command .Ti
DS* shake_128(uchar *data, ulong dlen, uchar *digest, ulong olen)
unhandled troff command .Ti
DS* shake_256_in(uchar *data, ulong dlen, DS *state)
unhandled troff command .Ti
XS* shake_256_conv(XS *out, DS *in)
unhandled troff command .Ti
void shake_256_out(uchar *out, ulong olen, XS *state)
unhandled troff command .Ti
DS* shake_256(uchar *data, ulong dlen, uchar *digest, ulong olen)
unhandled troff command .Ti
DS* shake_256(uchar *data, ulong dlen, uchar *digest, ulong olen)
unhandled troff command .Ti
DS* blake2s_128(uchar *data, ulong dlen, uchar *digest, DS *state)
unhandled troff command .Ti
DS* blake2s_256(uchar *data, ulong dlen, uchar *digest, DS *state)
unhandled troff command .Ti
DS* hmac_x(uchar *p, ulong len, uchar *key, ulong klen, uchar *digest, DS *s, DS*(*x)(uchar*, ulong, uchar*, DS*), int xlen, int B)
unhandled troff command .Ti
DS* hmac_md5(uchar *data, ulong dlen, uchar *key, ulong klen, uchar *digest, DS *state)
unhandled troff command .Ti
DS* hmac_sha1(uchar *data, ulong dlen, uchar *key, ulong klen, uchar *digest, DS *state)
unhandled troff command .Ti
DS* hmac_sha2_224(uchar *data, ulong dlen, uchar *key, ulong klen, uchar *digest, DS *state)
unhandled troff command .Ti
DS* hmac_sha2_256(uchar *data, ulong dlen, uchar *key, ulong klen, uchar *digest, DS *state)
unhandled troff command .Ti
DS* hmac_sha2_384(uchar *data, ulong dlen, uchar *key, ulong klen, uchar *digest, DS *state)
unhandled troff command .Ti
DS* hmac_sha2_512(uchar *data, ulong dlen, uchar *key, ulong klen, uchar *digest, DS *state)
unhandled troff command .Ti
DS* hmac_sha3_224(uchar *data, ulong dlen, uchar *key, ulong klen, uchar *digest, DS *state)
unhandled troff command .Ti
DS* hmac_sha3_256(uchar *data, ulong dlen, uchar *key, ulong klen, uchar *digest, DS *state)
unhandled troff command .Ti
DS* hmac_sha3_384(uchar *data, ulong dlen, uchar *key, ulong klen, uchar *digest, DS *state)
unhandled troff command .Ti
DS* hmac_sha3_512(uchar *data, ulong dlen, uchar *key, ulong klen, uchar *digest, DS *state)
unhandled troff command .Ti
DS* hmac_blake2s_256(uchar *data, ulong dlen, uchar *key, ulong klen, uchar *digest, DS *state)
unhandled troff command .Ti
DS* poly1305(uchar *p, ulong len, uchar *key, ulong klen, uchar *digest, DS *state)
unhandled troff command .Ti
DS* mac_blake2s_128(uchar *p, ulong len, uchar *key, ulong klen, uchar *digest, DS *state)
unhandled troff command .Ti
DS* mac_blake2s_256(uchar *p, ulong len, uchar *key, ulong klen, uchar *digest, DS *state)
DESCRIPTION
unhandled troff command .DT
The output of a hash is called a
The routines
The constants
EXAMPLES
To hash a single buffer using
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);
To give incremental input and take incremental output from
uchar buf[256]; uchar output[1024]; DigestState *ds; XOFState *xs; for(ds = nil; (n = read(fd, buf, 256)) > 0;) ds = shake_128_in(buf, n, ds); xs = shake_128_conv(nil, ds); shake_128_out(output, 512, xs); shake_128_out(output + 512, 512, xs); shake_128_out(nil, 0, xs);
SOURCE
SEE
HMAC specification