Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorisaacs <i@izs.me>2013-05-03 05:38:04 +0400
committerisaacs <i@izs.me>2013-05-15 00:51:43 +0400
commita241deb19a6f5a8e95909127858b7b26cd64ae93 (patch)
tree8744708407fd768783afe981d86db8244b4715eb
parentc1e8c8de1cdef4ecf2a65e21b14e2aa75f1e6716 (diff)
crypto: Pass encodings for Hmac digest
-rw-r--r--lib/crypto.js5
-rw-r--r--src/node_crypto.cc10
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);
}