You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
976 B
39 lines
976 B
// 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 <stddef.h>
|
|
|
|
#include <memory>
|
|
|
|
#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<EVP_MD_CTX> 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<std::string> SHA256HashString(absl::string_view str) {
|
|
std::string output(SHA256_DIGEST_LENGTH, 0);
|
|
const Error error =
|
|
SHA256HashString(str, reinterpret_cast<uint8_t*>(data(output)));
|
|
if (error != Error::None()) {
|
|
return error;
|
|
}
|
|
|
|
return output;
|
|
}
|
|
|
|
} // namespace openscreen
|