diff options
author | isaacs <i@izs.me> | 2013-05-03 05:38:04 +0400 |
---|---|---|
committer | isaacs <i@izs.me> | 2013-05-15 00:51:43 +0400 |
commit | a241deb19a6f5a8e95909127858b7b26cd64ae93 (patch) | |
tree | 8744708407fd768783afe981d86db8244b4715eb | |
parent | c1e8c8de1cdef4ecf2a65e21b14e2aa75f1e6716 (diff) |
crypto: Pass encodings for Hmac digest
-rw-r--r-- | lib/crypto.js | 5 | ||||
-rw-r--r-- | src/node_crypto.cc | 10 |
2 files changed, 9 insertions, 6 deletions
diff --git a/lib/crypto.js b/lib/crypto.js index 0a6b47f2c19..4650067fe6d 100644 --- a/lib/crypto.js +++ b/lib/crypto.js @@ -213,10 +213,7 @@ Hash.prototype.update = function(data, encoding) { Hash.prototype.digest = function(outputEncoding) { outputEncoding = outputEncoding || exports.DEFAULT_ENCODING; - var ret = this._binding.digest(outputEncoding); - if (outputEncoding !== 'buffer' && Buffer.isBuffer(ret)) - ret = ret.toString(outputEncoding); - return ret; + return this._binding.digest(outputEncoding); }; diff --git a/src/node_crypto.cc b/src/node_crypto.cc index 3a5b9da5f44..774550c9956 100644 --- a/src/node_crypto.cc +++ b/src/node_crypto.cc @@ -2761,6 +2761,11 @@ class Hmac : public ObjectWrap { HandleScope scope; + enum encoding encoding = BUFFER; + if (args.Length() >= 1) { + encoding = ParseEncoding(args[0]->ToString(), BUFFER); + } + unsigned char* md_value = NULL; unsigned int md_len = 0; Local<Value> outString; @@ -2771,9 +2776,10 @@ class Hmac : public ObjectWrap { md_len = 0; } - outString = Encode(md_value, md_len, BUFFER); + outString = StringBytes::Encode( + reinterpret_cast<const char*>(md_value), md_len, encoding); - delete [] md_value; + delete[] md_value; return scope.Close(outString); } |