Index: Makefile =================================================================== RCS file: /cvs/src/share/man/man9/Makefile,v retrieving revision 1.220 diff -u -p -r1.220 Makefile --- Makefile 8 Oct 2014 07:39:46 -0000 1.220 +++ Makefile 4 Nov 2014 04:01:03 -0000 @@ -28,7 +28,8 @@ MAN= aml_evalnode.9 atomic_add_int.9 ato radio.9 arc4random.9 rasops.9 ratecheck.9 resettodr.9 rssadapt.9 \ rt_ifa_add.9 rt_timer_add.9 route.9 rtable_add.9 rtlabel_id2name.9 \ rtrequest1.9 rwlock.9 sensor_attach.9 \ - shutdownhook_establish.9 tsleep.9 spl.9 startuphook_establish.9 \ + shutdownhook_establish.9 tsleep.9 SipHash24.9 spl.9 \ + startuphook_establish.9 \ socreate.9 sosplice.9 style.9 syscall.9 systrace.9 sysctl_int.9 \ task_add.9 tc_init.9 time.9 timeout.9 tvtohz.9 uiomove.9 uvm.9 \ usbd_transfer.9 \ @@ -352,6 +353,8 @@ MLINKS+=sensor_attach.9 sensordev_instal sensor_attach.9 sensor_task_register.9 \ sensor_attach.9 sensor_task_unregister.9 MLINKS+=shutdownhook_establish.9 shutdownhook_disestablish.9 +MLINKS+=SipHash24.9 SipHash24_Init.9 SipHash24.9 SipHash24_Update.9 \ + SipHash24.9 SipHash24_End.9 SipHash24.9 SipHash24_Final.9 \ MLINKS+=socreate.9 sobind.9 socreate.9 soclose.9 socreate.9 soconnect.9 \ socreate.9 sogetopt.9 socreate.9 soreceive.9 socreate.9 sosetopt.9 \ socreate.9 sosend.9 socreate.9 soshutdown.9 Index: SipHash24.9 =================================================================== RCS file: SipHash24.9 diff -N SipHash24.9 --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ SipHash24.9 4 Nov 2014 04:01:03 -0000 @@ -0,0 +1,109 @@ +.\" $OpenBSD$ +.\" +.\" Copyright (c) 2014 David Gwynne +.\" +.\" Permission to use, copy, modify, and distribute this software for any +.\" purpose with or without fee is hereby granted, provided that the above +.\" copyright notice and this permission notice appear in all copies. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +.\" +.Dd $Mdocdate: October 4 2014 $ +.Dt SIPHASH24 9 +.Os +.Sh NAME +.Nm SipHash24_Init , +.Nm SipHash24_Update , +.Nm SipHash24_End , +.Nm SipHash24_Final , +.Nm SipHash24 +.Nd calculate SipHash24 hashes +.Sh SYNOPSIS +.In crypto/siphash.h +.Ft void +.Fn "SipHash24_Init" "SIPHASH_CTX *ctx" "const SIPHASH_KEY *key" +.Ft void +.Fn "SipHash24_Update" "SIPHASH_CTX *ctx" "const void *data" "size_t len" +.Ft u_int64_t +.Fn "SipHash24_End" "SIPHASH_CTX *ctx" +.Ft void +.Fn "SipHash24_Final" "void *digest" "SIPHASH_CTX *ctx" +.Ft u_int64_t +.Fn "SipHash24" "const SIPHASH_KEY *key" "const void *data" "size_t len" +.Sh DESCRIPTION +The SipHash algorithm is a keyed hash algorithm optimised for short +inputs and produces a 64-bit digest of data. +The SipHash24 functions implement the algorithm with 2 compression +rounds and 4 finalisation rounds. +.Pp +.Fn SipHash24_Init +initialises a +.Vt SIPHASH_CTX +context +.Fa ctx +with the secret +.Fa key . +.Pp +.Fn SipHash24_Update +adds +.Fa data +of length +.Fa len +to the context +.Fa ctx . +.Pp +.Fn SipHash24_End +is called after all data has been added to +.Fa ctx +via +.Fn SipHash24_Update +and returns a message digest in the hosts native endian. +.Pp +.Fn SipHash24_Final +is called after all data has been added to +.Fa ctx +via +.Fn SipHash24_Update +and stores the message digest at the address specified by the +.Fa digest +parameter. +The buffer at +.Fa digest +must be +.Dv SIPHASH_DIGEST_LENGTH +bytes long. +.Pp +.Fn SipHash24 +calculates the digest of +.Fa data +of length +.Fa len +with the secret +.Fa key . +.Pp +If SipHash is being used to mitigate against hash-table flooding +attacks, it is recommended that the +.Vt SIPHASH_KEY +key be generated with +.Xr arc4random_buf 9 . +.Sh CONTEXT +.Fn SipHash24_Init , +.Fn SipHash24_Update , +.Fn SipHash24_End , +.Fn SipHash24_Final +and +.Fn SipHash24 +can be called during autoconf, from process context, or from interrupt context. +.Sh RETURN VALUES +.Fn SipHash24_End +and +.Fn SipHash24 +returns the 64-bit message digest in the hosts native endian representation. +.Sh SEE ALSO +.Xr arc4random_buf 9