| // Copyright 2015 The Weave Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "src/privet/openssl_utils.h" |
| |
| #include <algorithm> |
| |
| #include <base/logging.h> |
| |
| extern "C" { |
| #include "third_party/libuweave/src/crypto_hmac.h" |
| } |
| |
| namespace weave { |
| namespace privet { |
| |
| std::vector<uint8_t> HmacSha256(const std::vector<uint8_t>& key, |
| const std::vector<uint8_t>& data) { |
| std::vector<uint8_t> mac(kSha256OutputSize); |
| const UwCryptoHmacMsg messages[] = {{data.data(), data.size()}}; |
| CHECK(uw_crypto_hmac_(key.data(), key.size(), messages, arraysize(messages), |
| mac.data(), mac.size())); |
| return mac; |
| } |
| |
| } // namespace privet |
| } // namespace weave |