diff --git a/node_modules/ssh2/lib/protocol/keyParser.js b/node_modules/ssh2/lib/protocol/keyParser.js index 9860e3f..ee82e51 100644 --- a/node_modules/ssh2/lib/protocol/keyParser.js +++ b/node_modules/ssh2/lib/protocol/keyParser.js @@ -15,6 +15,7 @@ const { sign: sign_, verify: verify_, } = require('crypto'); +const { createVerify: createVerifyDSS } = require('browserify-sign') const supportedOpenSSLCiphers = getCiphers(); const { Ber } = require('asn1'); @@ -404,6 +405,17 @@ const BaseKey = { return new Error('No public key available'); if (!algo || typeof algo !== 'string') algo = this[SYM_HASH_ALGO]; + + if (algo === 'dss1') { + const verifier = createVerifyDSS('DSA-SHA1'); + verifier.update(data); + try { + return verifier.verify(pem, signature); + } catch (ex) { + return ex; + } + } + try { return verify_(algo, data, pem, signature); } catch (ex) { @@ -1343,7 +1355,7 @@ function parseDER(data, baseType, comment, fullType) { return new Error('Malformed OpenSSH public key'); pubPEM = genOpenSSLDSAPub(p, q, g, y); pubSSH = genOpenSSHDSAPub(p, q, g, y); - algo = 'sha1'; + algo = 'dss1'; break; } case 'ssh-ed25519': {