1// Copyright 2015 The Weave Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef LIBUWEAVE_SRC_CRYPTO_HMAC_H_ 6#define LIBUWEAVE_SRC_CRYPTO_HMAC_H_ 7 8#include <stdbool.h> 9#include <stddef.h> 10#include <stdint.h> 11 12typedef struct { 13 const uint8_t* bytes; 14 size_t num_bytes; 15} UwCryptoHmacMsg; 16 17/** 18 * Compute HMAC over a list of messages, which is equivalent to computing HMAC 19 * over the concatenation of all the messages. The HMAC output will be truncated 20 * to the desired length truncated_digest_len, and written into trucated_digest. 21 */ 22bool uw_crypto_hmac_(const uint8_t* key, 23 size_t key_len, 24 const UwCryptoHmacMsg messages[], 25 size_t num_messages, 26 uint8_t* truncated_digest, 27 size_t truncated_digest_len); 28 29#endif // LIBUWEAVE_SRC_CRYPTO_HMAC_H_ 30