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);
if ('OPENSSH PRIVATE KEY' === ssh.type) {
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) {
ssh.elements = ssh.elements.slice(0, 3);
}
@ -155,15 +160,15 @@ SSH.parsePublicKey = function (ssh) {
if (3 === els.length) {
ssh.jwk = {
kty: 'RSA'
, n: Enc.bufToUrlBase64(els[2])
, e: Enc.bufToUrlBase64(els[1])
, n: Enc.bufToUrlBase64(els[2])
};
} else {
console.log('len:', els.length);
ssh.jwk = {
kty: 'RSA'
, n: Enc.bufToUrlBase64(els[2])
, e: Enc.bufToUrlBase64(els[1])
, n: Enc.bufToUrlBase64(els[2])
, d: Enc.bufToUrlBase64(els[3])
, p: Enc.bufToUrlBase64(els[5])
, q: Enc.bufToUrlBase64(els[6])

View File

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