Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(922)

Side by Side Diff: base/sha2.cc

Issue 6276002: Abstracts SHA256 context for NSS / OpenSSL. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Implements SHA256Context abstracting NSS / OpenSSL. Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/sha2.h" 5 #include "base/sha2.h"
6 6
7 #include "base/stl_util-inl.h" 7 #include "base/stl_util-inl.h"
8 #include "base/third_party/nss/blapi.h" 8 #include "base/third_party/nss/blapi.h"
9 #include "base/third_party/nss/sha256.h" 9 #include "base/third_party/nss/sha256.h"
10 10
11 namespace base { 11 namespace base {
12 12
13 void SHA256HashString(const std::string& str, void* output, size_t len) { 13 void SHA256HashString(const std::string& str, void* output, size_t len) {
14 SHA256Context ctx; 14 ::SHA256Context ctx;
15 15
16 SHA256_Begin(&ctx); 16 SHA256_Begin(&ctx);
17 SHA256_Update(&ctx, reinterpret_cast<const unsigned char*>(str.data()), 17 SHA256_Update(&ctx, reinterpret_cast<const unsigned char*>(str.data()),
18 static_cast<unsigned int>(str.length())); 18 static_cast<unsigned int>(str.length()));
19 SHA256_End(&ctx, static_cast<unsigned char*>(output), NULL, 19 SHA256_End(&ctx, static_cast<unsigned char*>(output), NULL,
20 static_cast<unsigned int>(len)); 20 static_cast<unsigned int>(len));
21 } 21 }
22 22
23 std::string SHA256HashString(const std::string& str) { 23 std::string SHA256HashString(const std::string& str) {
24 std::string output(SHA256_LENGTH, 0); 24 std::string output(SHA256_LENGTH, 0);
25 SHA256HashString(str, string_as_array(&output), output.size()); 25 SHA256HashString(str, string_as_array(&output), output.size());
26 return output; 26 return output;
27 } 27 }
28 28
29 namespace {
30
31 class SHA256ContextNSS : public SHA256Context {
32 public:
33 SHA256ContextNSS() {
34 SHA256_Begin(&ctx_);
35 }
36
37 virtual ~SHA256ContextNSS() {
38 }
39
40 virtual void Update(const std::string& str) {
41 SHA256_Update(&ctx_, reinterpret_cast<const unsigned char*>(str.data()),
42 static_cast<unsigned int>(str.length()));
43
44 }
45
46 virtual void Finish(void* output, size_t len) {
47 SHA256_End(&ctx_, static_cast<unsigned char*>(output), NULL,
48 static_cast<unsigned int>(len));
49 }
50
51 private:
52 ::SHA256Context ctx_;
53 };
54
55 } // namespace
56
57 SHA256Context* SHA256Context::Create() {
58 return new SHA256ContextNSS();
59 }
60
29 } // namespace base 61 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698