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
diff --git a/crypto/hmac.h b/crypto/hmac.h
index c0706d8e..d31373a 100644
--- a/crypto/hmac.h
+++ b/crypto/hmac.h
@@ -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 @@
 
   // 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 @@
   // 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.