summaryrefslogtreecommitdiff
path: root/test/parallel/test-crypto-des3-wrap.js
diff options
context:
space:
mode:
authorYihong Wang <yh.wang@ibm.com>2018-04-26 16:15:12 -0700
committerTobias Nießen <tniessen@tnie.de>2018-05-04 11:16:16 +0200
commitf7cdeba5486ac6c36bee59580832994aadfd264a (patch)
treeb7bee81e38084db47ea85f778c68147f042d1ca5 /test/parallel/test-crypto-des3-wrap.js
parentcd8ed1c447518af1cb54ad73f0cde34e44cbc320 (diff)
downloadandroid-node-v8-f7cdeba5486ac6c36bee59580832994aadfd264a.tar.gz
android-node-v8-f7cdeba5486ac6c36bee59580832994aadfd264a.tar.bz2
android-node-v8-f7cdeba5486ac6c36bee59580832994aadfd264a.zip
crypto: allocate more memory for cipher.update()
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>
Diffstat (limited to 'test/parallel/test-crypto-des3-wrap.js')
-rw-r--r--test/parallel/test-crypto-des3-wrap.js25
1 files changed, 25 insertions, 0 deletions
diff --git a/test/parallel/test-crypto-des3-wrap.js b/test/parallel/test-crypto-des3-wrap.js
new file mode 100644
index 0000000000..75c8cd574f
--- /dev/null
+++ b/test/parallel/test-crypto-des3-wrap.js
@@ -0,0 +1,25 @@
+'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);