/* $OpenBSD: hmac.h,v 1.9 2014/06/24 01:13:21 djm Exp $ *//* * Copyright (c) 2014 Markus Friedl. All rights reserved. * * 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. */#ifndef _HMAC_H#define _HMAC_H/* Returns the algorithm's digest length in bytes or 0 for invalid algorithm */size_tssh_hmac_bytes(intalg);structsshbuf;structssh_hmac_ctx;structssh_hmac_ctx*ssh_hmac_start(intalg);/* Sets the state of the HMAC or resets the state if key == NULL */intssh_hmac_init(structssh_hmac_ctx*ctx,constvoid*key,size_tklen)__attribute__((__bounded__(__buffer__,2,3)));intssh_hmac_update(structssh_hmac_ctx*ctx,constvoid*m,size_tmlen)__attribute__((__bounded__(__buffer__,2,3)));intssh_hmac_update_buffer(structssh_hmac_ctx*ctx,conststructsshbuf*b);intssh_hmac_final(structssh_hmac_ctx*ctx,u_char*d,size_tdlen)__attribute__((__bounded__(__buffer__,2,3)));voidssh_hmac_free(structssh_hmac_ctx*ctx);#endif /* _HMAC_H */