0

Change HMAC::Sign() to take base::StringPiece instead of string.

Do this to avoid memory copying when signning data in char*.
base::StringPiece nicely handles both cases.

BUG=None
TEST=crypto_unittests

Review URL: http://codereview.chromium.org/7033035

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@88049 0039d316-1c4b-4281-b951-d872f2087c98
This commit is contained in:
hclam@chromium.org
2011-06-06 22:00:11 +00:00
parent 083072ff2d
commit c28986ee4a
5 changed files with 7 additions and 9 deletions

@ -9,10 +9,9 @@
#define CRYPTO_HMAC_H_
#pragma once
#include <string>
#include "base/basictypes.h"
#include "base/memory/scoped_ptr.h"
#include "base/string_piece.h"
namespace crypto {
@ -42,7 +41,7 @@ class HMAC {
// Initializes this instance using |key|. Call Init only once. It returns
// false on the second or later calls.
bool Init(const std::string& key) {
bool Init(const base::StringPiece& key) {
return Init(reinterpret_cast<const unsigned char*>(key.data()),
static_cast<int>(key.size()));
}
@ -51,8 +50,7 @@ class HMAC {
// to the constructor and the key supplied to the Init method. The HMAC is
// returned in |digest|, which has |digest_length| bytes of storage available.
// TODO(abarth): digest_length should be a size_t.
bool Sign(const std::string& data,
unsigned char* digest,
bool Sign(const base::StringPiece& data, unsigned char* digest,
int digest_length) const;
// TODO(albertb): Add a Verify method.

@ -39,7 +39,7 @@ HMAC::~HMAC() {
plat_->key_.reserve(0);
}
bool HMAC::Sign(const std::string& data,
bool HMAC::Sign(const base::StringPiece& data,
unsigned char* digest,
int digest_length) const {
CCHmacAlgorithm algorithm;

@ -73,7 +73,7 @@ bool HMAC::Init(const unsigned char *key, int key_length) {
return true;
}
bool HMAC::Sign(const std::string& data,
bool HMAC::Sign(const base::StringPiece& data,
unsigned char* digest,
int digest_length) const {
if (!plat_->sym_key_.get()) {

@ -40,7 +40,7 @@ HMAC::~HMAC() {
STLClearObject(&plat_->key);
}
bool HMAC::Sign(const std::string& data,
bool HMAC::Sign(const base::StringPiece& data,
unsigned char* digest,
int digest_length) const {
DCHECK_GE(digest_length, 0);

@ -154,7 +154,7 @@ bool HMAC::Init(const unsigned char* key, int key_length) {
HMAC::~HMAC() {
}
bool HMAC::Sign(const std::string& data,
bool HMAC::Sign(const base::StringPiece& data,
unsigned char* digest,
int digest_length) const {
if (hash_alg_ == SHA256) {