v1.2.3: bugfix RSA swapped n and e values (private key)

This commit is contained in:
AJ ONeal 2018-12-09 21:03:38 -07:00
parent b5c919b557
commit bc838df0d1
2 changed files with 8 additions and 3 deletions

View File

@ -9,6 +9,11 @@ SSH.parse = function (opts) {
var ssh = SSH.parseBlock(pub); var ssh = SSH.parseBlock(pub);
if ('OPENSSH PRIVATE KEY' === ssh.type) { if ('OPENSSH PRIVATE KEY' === ssh.type) {
ssh = SSH.parsePrivateElements(ssh); ssh = SSH.parsePrivateElements(ssh);
if (7 === ssh.elements.length) {
// RSA Private Keys have the `e` and `n` swapped (which is actually more normal)
// but we have to reswap them to make them consistent with the public key format
ssh.elements.splice(1, 0, ssh.elements.splice(2 ,1)[0]);
}
if (opts.public) { if (opts.public) {
ssh.elements = ssh.elements.slice(0, 3); ssh.elements = ssh.elements.slice(0, 3);
} }
@ -155,15 +160,15 @@ SSH.parsePublicKey = function (ssh) {
if (3 === els.length) { if (3 === els.length) {
ssh.jwk = { ssh.jwk = {
kty: 'RSA' kty: 'RSA'
, n: Enc.bufToUrlBase64(els[2])
, e: Enc.bufToUrlBase64(els[1]) , e: Enc.bufToUrlBase64(els[1])
, n: Enc.bufToUrlBase64(els[2])
}; };
} else { } else {
console.log('len:', els.length); console.log('len:', els.length);
ssh.jwk = { ssh.jwk = {
kty: 'RSA' kty: 'RSA'
, n: Enc.bufToUrlBase64(els[2])
, e: Enc.bufToUrlBase64(els[1]) , e: Enc.bufToUrlBase64(els[1])
, n: Enc.bufToUrlBase64(els[2])
, d: Enc.bufToUrlBase64(els[3]) , d: Enc.bufToUrlBase64(els[3])
, p: Enc.bufToUrlBase64(els[5]) , p: Enc.bufToUrlBase64(els[5])
, q: Enc.bufToUrlBase64(els[6]) , q: Enc.bufToUrlBase64(els[6])

View File

@ -1,6 +1,6 @@
{ {
"name": "ssh-to-jwk", "name": "ssh-to-jwk",
"version": "1.2.2", "version": "1.2.3",
"description": "💯 SSH to JWK in a lightweight, zero-dependency library.", "description": "💯 SSH to JWK in a lightweight, zero-dependency library.",
"homepage": "https://git.coolaj86.com/coolaj86/ssh-to-jwk.js", "homepage": "https://git.coolaj86.com/coolaj86/ssh-to-jwk.js",
"main": "index.js", "main": "index.js",