crypto: fix base64 padding regression

Commit 9901b69c introduces a small regression where the trailing base64
padding is no longer written out when Cipher#final is called. Rectify
that.

Fixes #4837.
This commit is contained in:
Ben Noordhuis 2013-02-23 23:43:52 +01:00
parent 8df893c62e
commit 4231dab39f
2 changed files with 8 additions and 1 deletions

View File

@ -258,7 +258,7 @@ Cipher.prototype.final = function(outputEncoding) {
if (outputEncoding && outputEncoding !== 'buffer') {
this._decoder = getDecoder(this._decoder, outputEncoding);
ret = this._decoder.write(ret);
ret = this._decoder.end(ret);
}
return ret;

View File

@ -858,3 +858,10 @@ assertSorted(crypto.getHashes());
var c = crypto.createDecipher('aes-128-ecb', '');
assert.throws(function() { c.final('utf8') }, /invalid public key/);
})();
// Base64 padding regression test, see #4837.
(function() {
var c = crypto.createCipher('aes-256-cbc', 'secret');
var s = c.update('test', 'utf8', 'base64') + c.final('base64');
assert.equal(s, '375oxUQCIocvxmC5At+rvA==');
})();