Skip to content

Commit c795083

Browse files
tniessenUlisesGascon
authored andcommittedSep 10, 2023
crypto: remove default encoding from Hash/Hmac
getDefaultEncoding() always returns 'buffer' in Node.js 20. It requires some careful justification but the default encoding can be eliminated from hash.js entirely. The reasoning is almost identical with that in #49145 so I won't repeat it here. Refs: #47182 PR-URL: #49167 Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Filip Skokan <panva.ip@gmail.com>
1 parent de103a4 commit c795083

File tree

1 file changed

+7
-10
lines changed

1 file changed

+7
-10
lines changed
 

‎lib/internal/crypto/hash.js

+7-10
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ const {
1414
} = internalBinding('crypto');
1515

1616
const {
17-
getDefaultEncoding,
1817
getStringOption,
1918
jobPromise,
2019
normalizeHashName,
@@ -95,8 +94,6 @@ Hash.prototype._flush = function _flush(callback) {
9594
};
9695

9796
Hash.prototype.update = function update(data, encoding) {
98-
encoding = encoding || getDefaultEncoding();
99-
10097
const state = this[kState];
10198
if (state[kFinalized])
10299
throw new ERR_CRYPTO_HASH_FINALIZED();
@@ -118,10 +115,9 @@ Hash.prototype.digest = function digest(outputEncoding) {
118115
const state = this[kState];
119116
if (state[kFinalized])
120117
throw new ERR_CRYPTO_HASH_FINALIZED();
121-
outputEncoding = outputEncoding || getDefaultEncoding();
122118

123-
// Explicit conversion for backward compatibility.
124-
const ret = this[kHandle].digest(`${outputEncoding}`);
119+
// Explicit conversion of truthy values for backward compatibility.
120+
const ret = this[kHandle].digest(outputEncoding && `${outputEncoding}`);
125121
state[kFinalized] = true;
126122
return ret;
127123
};
@@ -147,15 +143,16 @@ Hmac.prototype.update = Hash.prototype.update;
147143

148144
Hmac.prototype.digest = function digest(outputEncoding) {
149145
const state = this[kState];
150-
outputEncoding = outputEncoding || getDefaultEncoding();
151146

152147
if (state[kFinalized]) {
153148
const buf = Buffer.from('');
154-
return outputEncoding === 'buffer' ? buf : buf.toString(outputEncoding);
149+
if (outputEncoding && outputEncoding !== 'buffer')
150+
return buf.toString(outputEncoding);
151+
return buf;
155152
}
156153

157-
// Explicit conversion for backward compatibility.
158-
const ret = this[kHandle].digest(`${outputEncoding}`);
154+
// Explicit conversion of truthy values for backward compatibility.
155+
const ret = this[kHandle].digest(outputEncoding && `${outputEncoding}`);
159156
state[kFinalized] = true;
160157
return ret;
161158
};

0 commit comments

Comments
 (0)