From a241deb19a6f5a8e95909127858b7b26cd64ae93 Mon Sep 17 00:00:00 2001 From: isaacs Date: Thu, 2 May 2013 18:38:04 -0700 Subject: [PATCH] crypto: Pass encodings for Hmac digest --- lib/crypto.js | 5 +---- src/node_crypto.cc | 10 ++++++++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/crypto.js b/lib/crypto.js index 0a6b47f2c1..4650067fe6 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 3a5b9da5f4..774550c995 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 outString; @@ -2771,9 +2776,10 @@ class Hmac : public ObjectWrap { md_len = 0; } - outString = Encode(md_value, md_len, BUFFER); + outString = StringBytes::Encode( + reinterpret_cast(md_value), md_len, encoding); - delete [] md_value; + delete[] md_value; return scope.Close(outString); }