• Herbert Xu's avatar
    crypto: algif_hash - User-space interface for hash operations · fe869cdb
    Herbert Xu authored
    This patch adds the af_alg plugin for hash, corresponding to
    the ahash kernel operation type.
    
    Keys can optionally be set through the setsockopt interface.
    
    Each sendmsg call will finalise the hash unless sent with a MSG_MORE
    flag.
    
    Partial hash states can be cloned using accept(2).
    
    The interface is completely synchronous, all operations will
    complete prior to the system call returning.
    
    Both sendmsg(2) and splice(2) support reading the user-space
    data directly without copying (except that the Crypto API itself
    may copy the data if alignment is off).
    
    For now only the splice(2) interface supports performing digest
    instead of init/update/final.  In future the sendmsg(2) interface
    will also be modified to use digest/finup where possible so that
    hardware that cannot return a partial hash state can still benefit
    from this interface.
    
    Thakns to Miloslav Trmac for reviewing this and contributing
    fixes and improvements.
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    Acked-by: default avatarDavid S. Miller <davem@davemloft.net>
    Tested-by: default avatarMartin Willi <martin@strongswan.org>
    fe869cdb
algif_hash.c 6.73 KB