1*3f982cf4SFabien Sanglard // Copyright 2019 The Chromium Authors. All rights reserved. 2*3f982cf4SFabien Sanglard // Use of this source code is governed by a BSD-style license that can be 3*3f982cf4SFabien Sanglard // found in the LICENSE file. 4*3f982cf4SFabien Sanglard 5*3f982cf4SFabien Sanglard #ifndef UTIL_CRYPTO_SHA2_H_ 6*3f982cf4SFabien Sanglard #define UTIL_CRYPTO_SHA2_H_ 7*3f982cf4SFabien Sanglard 8*3f982cf4SFabien Sanglard #include <openssl/sha.h> 9*3f982cf4SFabien Sanglard #include <stddef.h> 10*3f982cf4SFabien Sanglard 11*3f982cf4SFabien Sanglard #include <string> 12*3f982cf4SFabien Sanglard 13*3f982cf4SFabien Sanglard #include "absl/strings/string_view.h" 14*3f982cf4SFabien Sanglard #include "platform/base/error.h" 15*3f982cf4SFabien Sanglard 16*3f982cf4SFabien Sanglard namespace openscreen { 17*3f982cf4SFabien Sanglard 18*3f982cf4SFabien Sanglard // These functions perform SHA-256 operations. 19*3f982cf4SFabien Sanglard // 20*3f982cf4SFabien Sanglard // Functions for SHA-384 and SHA-512 can be added when the need arises. 21*3f982cf4SFabien Sanglard 22*3f982cf4SFabien Sanglard // Computes the SHA-256 hash of the input string 'str' and stores the first 23*3f982cf4SFabien Sanglard // 'len' bytes of the hash in the output buffer 'output'. If 'len' > 32, 24*3f982cf4SFabien Sanglard // only 32 bytes (the full hash) are stored in the 'output' buffer. 25*3f982cf4SFabien Sanglard Error SHA256HashString(absl::string_view str, 26*3f982cf4SFabien Sanglard uint8_t output[SHA256_DIGEST_LENGTH]); 27*3f982cf4SFabien Sanglard 28*3f982cf4SFabien Sanglard // Convenience version of the above that returns the result in a 32-byte 29*3f982cf4SFabien Sanglard // string. 30*3f982cf4SFabien Sanglard ErrorOr<std::string> SHA256HashString(absl::string_view str); 31*3f982cf4SFabien Sanglard 32*3f982cf4SFabien Sanglard } // namespace openscreen 33*3f982cf4SFabien Sanglard 34*3f982cf4SFabien Sanglard #endif // UTIL_CRYPTO_SHA2_H_ 35