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

Side by Side Diff: base/md5.cc

Issue 7466003: MD5Update function uses StringPiece instead of raw buffer. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove line from license. Created 9 years, 4 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
« no previous file with comments | « base/md5.h ('k') | base/md5_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
1 // The original file was copied from sqlite, and was in the public domain. 5 // The original file was copied from sqlite, and was in the public domain.
2 // Modifications Copyright 2006 Google Inc. All Rights Reserved
3 6
4 /* 7 /*
5 * This code implements the MD5 message-digest algorithm. 8 * This code implements the MD5 message-digest algorithm.
6 * The algorithm is due to Ron Rivest. This code was 9 * The algorithm is due to Ron Rivest. This code was
7 * written by Colin Plumb in 1993, no copyright is claimed. 10 * written by Colin Plumb in 1993, no copyright is claimed.
8 * This code is in the public domain; do with it what you wish. 11 * This code is in the public domain; do with it what you wish.
9 * 12 *
10 * Equivalent code is available from RSA Data Security, Inc. 13 * Equivalent code is available from RSA Data Security, Inc.
11 * This code has been tested against that, and is equivalent, 14 * This code has been tested against that, and is equivalent,
12 * except that you don't need to include two pages of legalese 15 * except that you don't need to include two pages of legalese
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 ctx->buf[2] = 0x98badcfe; 160 ctx->buf[2] = 0x98badcfe;
158 ctx->buf[3] = 0x10325476; 161 ctx->buf[3] = 0x10325476;
159 ctx->bits[0] = 0; 162 ctx->bits[0] = 0;
160 ctx->bits[1] = 0; 163 ctx->bits[1] = 0;
161 } 164 }
162 165
163 /* 166 /*
164 * Update context to reflect the concatenation of another buffer full 167 * Update context to reflect the concatenation of another buffer full
165 * of bytes. 168 * of bytes.
166 */ 169 */
167 void MD5Update(MD5Context* context, const void* inbuf, size_t len) { 170 void MD5Update(MD5Context* context, const StringPiece& data) {
171 const unsigned char* inbuf = (const unsigned char*)data.data();
172 size_t len = data.size();
168 struct Context *ctx = (struct Context *)context; 173 struct Context *ctx = (struct Context *)context;
169 const unsigned char* buf = (const unsigned char*)inbuf; 174 const unsigned char* buf = (const unsigned char*)inbuf;
170 uint32 t; 175 uint32 t;
171 176
172 /* Update bitcount */ 177 /* Update bitcount */
173 178
174 t = ctx->bits[0]; 179 t = ctx->bits[0];
175 if ((ctx->bits[0] = t + ((uint32)len << 3)) < t) 180 if ((ctx->bits[0] = t + ((uint32)len << 3)) < t)
176 ctx->bits[1]++; /* Carry from low to high */ 181 ctx->bits[1]++; /* Carry from low to high */
177 ctx->bits[1] += static_cast<uint32>(len >> 29); 182 ctx->bits[1] += static_cast<uint32>(len >> 29);
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 int a = digest.a[i]; 271 int a = digest.a[i];
267 ret[j++] = zEncode[(a>>4)&0xf]; 272 ret[j++] = zEncode[(a>>4)&0xf];
268 ret[j++] = zEncode[a & 0xf]; 273 ret[j++] = zEncode[a & 0xf];
269 } 274 }
270 return ret; 275 return ret;
271 } 276 }
272 277
273 void MD5Sum(const void* data, size_t length, MD5Digest* digest) { 278 void MD5Sum(const void* data, size_t length, MD5Digest* digest) {
274 MD5Context ctx; 279 MD5Context ctx;
275 MD5Init(&ctx); 280 MD5Init(&ctx);
276 MD5Update(&ctx, static_cast<const unsigned char*>(data), length); 281 MD5Update(&ctx,
282 StringPiece(reinterpret_cast<const char*>(data), length));
277 MD5Final(digest, &ctx); 283 MD5Final(digest, &ctx);
278 } 284 }
279 285
280 std::string MD5String(const std::string& str) { 286 std::string MD5String(const StringPiece& str) {
281 MD5Digest digest; 287 MD5Digest digest;
282 MD5Sum(str.data(), str.length(), &digest); 288 MD5Sum(str.data(), str.length(), &digest);
283 return MD5DigestToBase16(digest); 289 return MD5DigestToBase16(digest);
284 } 290 }
285 291
286 } // namespace base 292 } // namespace base
OLDNEW
« no previous file with comments | « base/md5.h ('k') | base/md5_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698