// Copyright 2019 The Chromium 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 "util/crypto/sha2.h" #include #include #include "util/crypto/secure_hash.h" #include "util/std_util.h" namespace openscreen { Error SHA256HashString(absl::string_view str, uint8_t output[SHA256_DIGEST_LENGTH]) { bssl::UniquePtr context(EVP_MD_CTX_new()); if (!EVP_Digest(str.data(), str.size(), output, nullptr, EVP_sha256(), nullptr)) { return Error::Code::kSha256HashFailure; } return Error::None(); } ErrorOr SHA256HashString(absl::string_view str) { std::string output(SHA256_DIGEST_LENGTH, 0); const Error error = SHA256HashString(str, reinterpret_cast(data(output))); if (error != Error::None()) { return error; } return output; } } // namespace openscreen