sshpk
Advanced tools
Comparing version 1.9.0 to 1.9.1
@@ -131,7 +131,16 @@ // Copyright 2016 Joyent, Inc. | ||
Certificate.prototype.signWith = function (key) { | ||
utils.assertCompatible(key, PrivateKey, [1, 2], 'key'); | ||
var fmts = Object.keys(formats); | ||
var didOne = false; | ||
for (var i = 0; i < fmts.length; ++i) { | ||
if (fmts[i] !== 'pem') | ||
formats[fmts[i]].sign(this, key); | ||
if (fmts[i] !== 'pem') { | ||
var ret = formats[fmts[i]].sign(this, key); | ||
if (ret === true) | ||
didOne = true; | ||
} | ||
} | ||
if (!didOne) { | ||
throw (new Error('Failed to sign the certificate for any ' + | ||
'available certificate formats')); | ||
} | ||
}; | ||
@@ -138,0 +147,0 @@ |
@@ -61,2 +61,4 @@ // Copyright 2016 Joyent, Inc. | ||
throw (new Error('SSH certificate algorithm mismatch')); | ||
if (algo === undefined) | ||
algo = innerAlgo; | ||
@@ -172,11 +174,18 @@ var cert = {}; | ||
function sign(cert, key) { | ||
assert.ok(PrivateKey.isPrivateKey(key, [1, 2])); | ||
if (cert.signatures.openssh === undefined) | ||
cert.signatures.openssh = {}; | ||
try { | ||
var blob = toBuffer(cert, true); | ||
} catch (e) { | ||
delete (cert.signatures.openssh); | ||
return (false); | ||
} | ||
var sig = cert.signatures.openssh; | ||
var blob = toBuffer(cert, true); | ||
var signer = key.createSign(); | ||
var hashAlgo = undefined; | ||
if (key.type === 'rsa' || key.type === 'dsa') | ||
hashAlgo = 'sha1'; | ||
var signer = key.createSign(hashAlgo); | ||
signer.write(blob); | ||
sig.signature = signer.sign(); | ||
return (true); | ||
} | ||
@@ -267,2 +276,4 @@ | ||
return ('ecdsa'); | ||
if (certType === 'ssh-ed25519-cert-v01@openssh.com') | ||
return ('ed25519'); | ||
throw (new Error('Unsupported cert type ' + certType)); | ||
@@ -278,3 +289,5 @@ } | ||
return ('ecdsa-sha2-' + key.curve + '-cert-v01@openssh.com'); | ||
if (key.type === 'ed25519') | ||
return ('ssh-ed25519-cert-v01@openssh.com'); | ||
throw (new Error('Unsupported key type ' + key.type)); | ||
} |
@@ -341,3 +341,4 @@ // Copyright 2016 Joyent, Inc. | ||
sig.algo = key.type + '-' + key.defaultHashAlgorithm(); | ||
assert.string(SIGN_ALGS[sig.algo]); | ||
if (SIGN_ALGS[sig.algo] === undefined) | ||
return (false); | ||
@@ -352,2 +353,4 @@ var der = new asn1.BerWriter(); | ||
cert.signatures.x509.signature = signer.sign(); | ||
return (true); | ||
} | ||
@@ -354,0 +357,0 @@ |
{ | ||
"name": "sshpk", | ||
"version": "1.9.0", | ||
"version": "1.9.1", | ||
"description": "A library for finding and using SSH public keys", | ||
@@ -5,0 +5,0 @@ "main": "lib/index.js", |
168262
4166