// Copyright 2013 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CRYPTO_HKDF_H_ #define CRYPTO_HKDF_H_ #include #include #include #include #include #include "base/check.h" #include "base/containers/span.h" #include "crypto/crypto_export.h" #include "third_party/boringssl/src/include/openssl/digest.h" #include "third_party/boringssl/src/include/openssl/hkdf.h" namespace crypto { CRYPTO_EXPORT std::string HkdfSha256(std::string_view secret, std::string_view salt, std::string_view info, size_t derived_key_size); template std::array HkdfSha256(base::span secret, base::span salt, base::span info) { std::array ret; int result = ::HKDF(ret.data(), KeySize, EVP_sha256(), secret.data(), secret.size(), salt.data(), salt.size(), info.data(), info.size()); DCHECK(result); return ret; } } // namespace crypto #endif // CRYPTO_HKDF_H_