Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 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 | 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/sha1.h" | 5 #include "base/sha1.h" |
| 6 | 6 |
| 7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include <cstring> | |
|
wtc
2011/03/11 18:46:15
1. Nit: I recommend including the C header <string
hans
2011/03/13 19:48:16
done
| |
| 8 | 9 |
| 9 namespace base { | 10 namespace base { |
| 10 | 11 |
| 11 // Implementation of SHA-1. Only handles data in byte-sized blocks, | 12 // Implementation of SHA-1. Only handles data in byte-sized blocks, |
| 12 // which simplifies the code a fair bit. | 13 // which simplifies the code a fair bit. |
| 13 | 14 |
| 14 // Identifier names follow notation in FIPS PUB 180-3, where you'll | 15 // Identifier names follow notation in FIPS PUB 180-3, where you'll |
| 15 // also find a description of the algorithm: | 16 // also find a description of the algorithm: |
| 16 // http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf | 17 // http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf |
| 17 | 18 |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 187 // e. | 188 // e. |
| 188 H[0] += A; | 189 H[0] += A; |
| 189 H[1] += B; | 190 H[1] += B; |
| 190 H[2] += C; | 191 H[2] += C; |
| 191 H[3] += D; | 192 H[3] += D; |
| 192 H[4] += E; | 193 H[4] += E; |
| 193 | 194 |
| 194 cursor = 0; | 195 cursor = 0; |
| 195 } | 196 } |
| 196 | 197 |
| 197 std::string SHA1HashString(const std::string& str) { | 198 std::string SHA1HashString(const std::string& str) { |
|
wtc
2011/03/11 18:46:15
Nit: ideally this function should be reimplemented
hans
2011/03/13 19:48:16
Done.
| |
| 198 SecureHashAlgorithm sha; | 199 SecureHashAlgorithm sha; |
| 199 sha.Update(str.c_str(), str.length()); | 200 sha.Update(str.c_str(), str.length()); |
| 200 sha.Final(); | 201 sha.Final(); |
| 201 std::string out(reinterpret_cast<const char*>(sha.Digest()), | 202 std::string out(reinterpret_cast<const char*>(sha.Digest()), |
| 202 SecureHashAlgorithm::kDigestSizeBytes); | 203 SecureHashAlgorithm::kDigestSizeBytes); |
| 203 return out; | 204 return out; |
| 204 } | 205 } |
| 205 | 206 |
| 207 void SHA1HashBytes(const unsigned char* data, size_t len, | |
| 208 unsigned char* hash_array) { | |
| 209 SecureHashAlgorithm sha; | |
| 210 sha.Update(data, len); | |
| 211 sha.Final(); | |
| 212 | |
| 213 std::memcpy(hash_array, sha.Digest(), SecureHashAlgorithm::kDigestSizeBytes); | |
| 214 } | |
| 215 | |
| 206 } // namespace base | 216 } // namespace base |
| OLD | NEW |