Skip to content

Commit c7a6c68

Browse files
author
Alex Wilson
committed
#58 des-ede3-cbc encrypted keys broken
Reviewed by: Cody Peter Mello <[email protected]>
1 parent 2ab4f2a commit c7a6c68

File tree

5 files changed

+48
-2
lines changed

5 files changed

+48
-2
lines changed

lib/utils.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ function assertCompatible(obj, klass, needVer, name) {
8787
}
8888

8989
var CIPHER_LEN = {
90-
'des-ede3-cbc': { key: 7, iv: 8 },
90+
'des-ede3-cbc': { key: 24, iv: 8 },
9191
'aes-128-cbc': { key: 16, iv: 16 },
9292
'aes-256-cbc': { key: 32, iv: 16 }
9393
};

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "sshpk",
3-
"version": "1.15.1",
3+
"version": "1.15.2",
44
"description": "A library for finding and using SSH public keys",
55
"main": "lib/index.js",
66
"scripts": {

test/assets/3des.pem

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
Proc-Type: 4,ENCRYPTED
3+
DEK-Info: DES-EDE3-CBC,91DE47E39A642704
4+
5+
T5h5N8sO/mT8zRfqVDc2Kmgy5Az9w63T91Gvl57XhAxd7jD2vZhbAdD3qdnYc9Ue
6+
h4uve27OcJXQXHTUaAZY2ZR/9e9NFIkSnbEQHVzMa0W5I7v7JvN9Ms8z9WJuxd9k
7+
9M8t6rYiLQXbdKG3RhEyS+m5O/tU1dxWakwIxlE9fpLcHWgEO2YEPwKjiM/WY0Uj
8+
+eH02oaPIVIC6Eyni7CTCjkhgTn8xI+yHfIow94IUYg4OJNes27dhruH/nybPYPt
9+
gW6eQfENrXZNTCzp3E71/WB/27JVI8eNkTtluoFTn8KAeiDNIB0b/KFpJoIFTgWX
10+
ysYqiv6a5q7Q+mxEet+krZ40LBsh2cNLqJGCRh/nGU3Zs8hozyUfkhBMzjvLc36E
11+
F2cqtjBGeds1kHvBAdbBBNLel11icRkTzIw0cMa1YulYdJARf+cgWugk+NVgEOpK
12+
g3G6QymJiVm4DudbtTcmBqgfYju9bo8X1hkGB1w+eUZMjLDCv0ZfCZCKovpZorkD
13+
PJa+y12fwEQ79NZxmfUKCBLVzO4n5Bh2MzWJZQSh3oLSP90fRyWS0Rq8l6N4z90m
14+
RowD62laYR9zydLZX+gkjGiIEjNxwcEY/iuHi32ufONyFTTDUcidZ/RZJdd0zk5r
15+
1t6FbrTcM0tIukN0behKri6jbTMd91DYSpO7xB+fKugfka+grYWyLeQc0brqbqNn
16+
Pwt+FuM+qVoXe2FdY4cy/Jhqb/hYsvXuhPJ5IowN3QNnvsSduq0NwM2wXGNF+l8s
17+
z40HsTZly5lVChold8EjbNi9xZLWRQL5UtPdacgr+U2NTqiM7Eup0YfU9wn50GNg
18+
/pjzkTY8fpkio3mjkIRcfEfSnERYRnOP0zDMkd+bJdQcb0sjCpdxS8vXfFvLQ1Af
19+
zBz5DLa1vq8Cc7C0vsLjBEC2LQygv0q9nU7fvg9TMuSQNXj0TJY3I2i8ZZHvyPVL
20+
j4u6Pfpg0bjAYsnBoeyMzt7ii1wJk76e23SeZQxOz5+1z1L8J9NyzH4zZeTOSXqq
21+
MZ1eW8tQRnYSnfyQVyXRyKHvH+aPYrMo3ElLfseRDdU0sikQ/XVneMOGQCI0+pCx
22+
RIXpcnUgIcT2f3sCAQ+t0jmxWeirhLYpBMmAs3TLrdDyG5n/DReV6utXRSvJMC6/
23+
yWF5w4IGhvjkERFisugqPsMTXfW4xWHwq+MU6IU1TurRIJRZHPs3WgICPeCOJFBv
24+
bQHvwtHmHZJ6ijIF+SPkTV0PoHxRXv8O2QsqiFSVp03FjImrShxeU2iIz3SzB3Di
25+
gpaYyBhXQitMTNvtCAPPdFUHrpB5ZZ+qI3sStvMTMaSb8EpSU1H79L/7Olv6wtLx
26+
w3PCtCaz56P0X8cZP57MSGt+E7x3+GKYNFC5znNyVthgKz66z/z33epzD2j2Zf4b
27+
VvRE6W/RzHN2UOhnqdk6IX7SO7ynPO5Sx/bKL+ARVRD51NpOSzTUujBEoeB0ObFN
28+
B4PWao7GOeh/WUTF83AYOtEk+J/8CYMNB1IClrpZszcCyAAkx26OdoOPAGMBD1V/
29+
HnE2S4h22855esmjQOggwNCtf0Tg6PG7+jhb8MwerYwaiqfn2hQpAz6ZKff2Qeh5
30+
-----END RSA PRIVATE KEY-----

test/assets/3des.pub

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLISAQ2h/VFo0tGe3irSmk3KU5x5IYtPke1yk8hSgd/AKbJlDuqPF3BfbEkmV/gA7EpxPhr5QkfcLCkAjWZhUJccn0Dmz6Ypd615IQrEPMS48wFl4yRSDaPyGcOi+lcgrgclcnTG9/vEqRfqw7y8aRZIq880nNoxHe/TQbeQuuGf0Zdts4t5YFbm8MkwCMSlY+DRSy462YZ4h7zBYOA6TDcSJvvHVGe937xqavMK2btj9wIij2qtCP4L23zDl2QCM+c9DxC+FvNY6fyNrePs2pbyZb2z3Bg+SR/J+hSqMUSYKLBYzQnG/c0T8xE59bk1P8jOeJGVgQGS6m9CSwVOgZ test

test/pem.js

+15
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
// Copyright 2011 Joyent, Inc. All rights reserved.
22

33
var test = require('tape').test;
4+
var path = require('path');
5+
var fs = require('fs');
46

57
var sshpk = require('../lib/index');
68
var Buffer = require('safer-buffer').Buffer;
@@ -177,6 +179,8 @@ var ECDSA_PEM = '-----BEGIN PUBLIC KEY-----\n' +
177179
var RFC_AUTO = Buffer.from('AAAAC3NzaC1lZDI1NTE5AAAAIEi0pkfPe/+kbmnTSH0mfr0J' +
178180
'4Fq7M7bshFAKB6uCyLDm', 'base64');
179181

182+
var testDir = path.join(__dirname, 'assets');
183+
180184
///--- Tests
181185

182186
test('1024b pem to rsa ssh key', function(t) {
@@ -341,3 +345,14 @@ test('encrypted ecdsa private key with pw', function(t) {
341345
t.equal(k.type, 'ecdsa');
342346
t.end();
343347
});
348+
349+
test('encrypted rsa private key (3des)', function (t) {
350+
var keyPem = fs.readFileSync(path.join(testDir, '3des.pem'));
351+
var key = sshpk.parsePrivateKey(keyPem, 'pem',
352+
{ passphrase: 'testing123' });
353+
t.equal(key.type, 'rsa');
354+
key.comment = 'test';
355+
var keySsh = fs.readFileSync(path.join(testDir, '3des.pub'), 'ascii');
356+
t.equal(key.toPublic().toString('ssh'), keySsh.trim());
357+
t.end();
358+
});

0 commit comments

Comments
 (0)