1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CRYPTO_SHA2_H_
6#define CRYPTO_SHA2_H_
7
8#include <stddef.h>
9
10#include <string>
11
12#include "base/strings/string_piece.h"
13#include "crypto/crypto_export.h"
14
15namespace crypto {
16
17// These functions perform SHA-256 operations.
18//
19// Functions for SHA-384 and SHA-512 can be added when the need arises.
20
21static const size_t kSHA256Length = 32; // Length in bytes of a SHA-256 hash.
22
23// Computes the SHA-256 hash of the input string 'str' and stores the first
24// 'len' bytes of the hash in the output buffer 'output'. If 'len' > 32,
25// only 32 bytes (the full hash) are stored in the 'output' buffer.
26CRYPTO_EXPORT void SHA256HashString(base::StringPiece str,
27 void* output,
28 size_t len);
29
30// Convenience version of the above that returns the result in a 32-byte
31// string.
32CRYPTO_EXPORT std::string SHA256HashString(base::StringPiece str);
33
34} // namespace crypto
35
36#endif // CRYPTO_SHA2_H_
37