1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Use of this source code is governed by a BSD-style license that can be
3ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// found in the LICENSE file.
4ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
5ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "crypto/sha2.h"
6ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/scoped_ptr.h"
8ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/stl_util-inl.h"
9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "crypto/secure_hash.h"
10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsennamespace crypto {
12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid SHA256HashString(const std::string& str, void* output, size_t len) {
14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  scoped_ptr<SecureHash> ctx(SecureHash::Create(SecureHash::SHA256));
15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  ctx->Update(str.data(), str.length());
16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  ctx->Finish(output, len);
17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}
18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenstd::string SHA256HashString(const std::string& str) {
20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  std::string output(SHA256_LENGTH, 0);
21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  SHA256HashString(str, string_as_array(&output), output.size());
22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  return output;
23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}
24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}  // namespace crypto
26