mirror of
https://github.com/nodejs/node.git
synced 2024-12-01 16:10:02 +01:00
f7cdeba548
For key wrapping algorithms, calling EVP_CipherUpdate() with null output could obtain the size for the ciphertext. Then use the returned size to allocate output buffer. Also add a test case to verify des3-wrap. Signed-off-by: Yihong Wang <yh.wang@ibm.com> PR-URL: https://github.com/nodejs/node/pull/20370 Fixes: https://github.com/nodejs/node/issues/19655 Reviewed-By: Tobias Nießen <tniessen@tnie.de> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: James M Snell <jasnell@gmail.com>
26 lines
885 B
JavaScript
26 lines
885 B
JavaScript
'use strict';
|
|
const common = require('../common');
|
|
if (!common.hasCrypto)
|
|
common.skip('missing crypto');
|
|
|
|
const assert = require('assert');
|
|
const crypto = require('crypto');
|
|
|
|
// Test case for des-ede3 wrap/unwrap. des3-wrap needs extra 2x blocksize
|
|
// then plaintext to store ciphertext.
|
|
const test = {
|
|
key: Buffer.from('3c08e25be22352910671cfe4ba3652b1220a8a7769b490ba', 'hex'),
|
|
iv: Buffer.alloc(0),
|
|
plaintext: '32|RmVZZkFUVmpRRkp0TmJaUm56ZU9qcnJkaXNNWVNpTTU*|iXmckfRWZBG' +
|
|
'WWELweCBsThSsfUHLeRe0KCsK8ooHgxie0zOINpXxfZi/oNG7uq9JWFVCk70gfzQH8ZU' +
|
|
'JjAfaFg**'
|
|
};
|
|
|
|
const cipher = crypto.createCipheriv('des3-wrap', test.key, test.iv);
|
|
const ciphertext = cipher.update(test.plaintext, 'utf8');
|
|
|
|
const decipher = crypto.createDecipheriv('des3-wrap', test.key, test.iv);
|
|
const msg = decipher.update(ciphertext, 'buffer', 'utf8');
|
|
|
|
assert.strictEqual(msg, test.plaintext);
|