1// Copyright (c) 2011 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#pragma once
8
9#include <string>
10
11namespace crypto {
12
13// These functions perform SHA-256 operations.
14//
15// Functions for SHA-384 and SHA-512 can be added when the need arises.
16
17enum {
18  SHA256_LENGTH = 32  // length in bytes of a SHA-256 hash
19};
20
21// Computes the SHA-256 hash of the input string 'str' and stores the first
22// 'len' bytes of the hash in the output buffer 'output'.  If 'len' > 32,
23// only 32 bytes (the full hash) are stored in the 'output' buffer.
24void SHA256HashString(const std::string& str,
25                      void* output, size_t len);
26
27// Convenience version of the above that returns the result in a 32-byte
28// string.
29std::string SHA256HashString(const std::string& str);
30
31}  // namespace crypto
32
33#endif  // CRYPTO_SHA2_H_
34