Skip to content

Commit

Permalink
[WIP] fix: allow to use password encrypted keys (#49)
Browse files Browse the repository at this point in the history
* fix: set Triple DES cipher name

* fix: allow to use password encrypted keys

* chore: refactor and some javadoc

* Update src/com/trilead/ssh2/crypto/PEMDecoder.java

Co-authored-by: Matt Sicker <[email protected]>

Co-authored-by: Matt Sicker <[email protected]>
  • Loading branch information
kuisathaverat and jvz authored Sep 25, 2020
1 parent 9b89770 commit e52ed03
Show file tree
Hide file tree
Showing 10 changed files with 536 additions and 196 deletions.
347 changes: 158 additions & 189 deletions src/com/trilead/ssh2/crypto/PEMDecoder.java

Large diffs are not rendered by default.

39 changes: 38 additions & 1 deletion src/com/trilead/ssh2/crypto/PEMStructure.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@

package com.trilead.ssh2.crypto;

import java.util.Arrays;
import java.util.Objects;

/**
* Parsed PEM structure.
*
Expand All @@ -11,11 +14,45 @@
public class PEMStructure
{
int pemType;
String dekInfo[];
String[] dekInfo;
String procType[];
byte[] data;

public byte[] getData() {
return data;
}

@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
PEMStructure that = (PEMStructure) o;
return pemType == that.pemType
&& Arrays.equals(dekInfo, that.dekInfo)
&& Arrays.equals(procType, that.procType)
&& Arrays.equals(data, that.data);
}

@Override
public int hashCode() {
int result = Objects.hash(pemType);
result = 31 * result + Arrays.hashCode(dekInfo);
result = 31 * result + Arrays.hashCode(procType);
result = 31 * result + Arrays.hashCode(data);
return result;
}

@Override
public String toString() {
final StringBuilder sb = new StringBuilder("PEMStructure{");
sb.append("pemType=").append(pemType);
sb.append(", dekInfo=").append(Arrays.toString(dekInfo));
sb.append(", procType=").append(Arrays.toString(procType));
sb.append(", data=").append(java.util.Base64.getEncoder().encodeToString(data));
sb.append(", data.length=").append(data.length);
sb.append('}');
return sb.toString();
}
}
96 changes: 90 additions & 6 deletions test/com/trilead/ssh2/crypto/cipher/JreCipherWrapperTest.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,21 @@
package com.trilead.ssh2.crypto.cipher;

import org.junit.Test;

import java.security.SecureRandom;
import java.util.Arrays;
import java.util.logging.Logger;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.SecureRandom;
import java.util.Arrays;

import com.trilead.ssh2.crypto.PEMDecoder;
import com.trilead.ssh2.crypto.PEMStructure;
import org.apache.commons.io.IOUtils;
import org.junit.Test;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;

public class JreCipherWrapperTest {
Logger LOGGER = Logger.getLogger(JreCipherWrapperTest.class.getName());

@Test
public void shouldMatchJreBehavior() throws Exception {
SecureRandom rng = SecureRandom.getInstanceStrong();
Expand Down Expand Up @@ -49,4 +53,84 @@ public void shouldMatchJreBehavior() throws Exception {
}
assertArrayEquals(plaintext, decrypted);
}
}

@Test
public void testEncryptedKeyDES() throws Exception {
char[] des_cbc = IOUtils.toCharArray(getClass().getResourceAsStream("des_cbc.pem"));
char[] unencrypted = IOUtils.toCharArray(getClass().getResourceAsStream("key.pem"));
String password = "password";

PEMStructure psOrg = PEMDecoder.parsePEM(unencrypted);
LOGGER.info(psOrg.toString());

PEMStructure ps = PEMDecoder.parsePEM(des_cbc);
LOGGER.info(ps.toString());
PEMDecoder.decryptPEM(ps, password);
PEMDecoder.decodeKeyPair(des_cbc, password);
assertEquals(psOrg, ps);
}

@Test
public void testEncryptedKeyTripleDES() throws Exception {
char[] des_ede3_cbc = IOUtils.toCharArray(getClass().getResourceAsStream("des_ede3_cbc.pem"));
char[] unencrypted = IOUtils.toCharArray(getClass().getResourceAsStream("key.pem"));
String password = "password";

PEMStructure psOrg = PEMDecoder.parsePEM(unencrypted);
LOGGER.info(psOrg.toString());

PEMStructure ps = PEMDecoder.parsePEM(des_ede3_cbc);
LOGGER.info(ps.toString());
PEMDecoder.decryptPEM(ps, password);
PEMDecoder.decodeKeyPair(des_ede3_cbc, password);
assertEquals(psOrg, ps);
}

@Test
public void testEncryptedKeyAES128() throws Exception {
char[] aes128_cbc = IOUtils.toCharArray(getClass().getResourceAsStream("aes128_cbc.pem"));
char[] unencrypted = IOUtils.toCharArray(getClass().getResourceAsStream("key.pem"));
String password = "password";

PEMStructure psOrg = PEMDecoder.parsePEM(unencrypted);
LOGGER.info(psOrg.toString());

PEMStructure ps = PEMDecoder.parsePEM(aes128_cbc);
LOGGER.info(ps.toString());
PEMDecoder.decryptPEM(ps, password);
PEMDecoder.decodeKeyPair(aes128_cbc, password);
assertEquals(psOrg, ps);
}

@Test
public void testEncryptedKeyAES192() throws Exception {
char[] aes192_cbc = IOUtils.toCharArray(getClass().getResourceAsStream("aes192_cbc.pem"));
char[] unencrypted = IOUtils.toCharArray(getClass().getResourceAsStream("key.pem"));
String password = "password";

PEMStructure psOrg = PEMDecoder.parsePEM(unencrypted);
LOGGER.info(psOrg.toString());

PEMStructure ps = PEMDecoder.parsePEM(aes192_cbc);
LOGGER.info(ps.toString());
PEMDecoder.decryptPEM(ps, password);
PEMDecoder.decodeKeyPair(aes192_cbc, password);
assertEquals(psOrg, ps);
}

@Test
public void testEncryptedKeyAES256() throws Exception {
char[] aes256_cbc = IOUtils.toCharArray(getClass().getResourceAsStream("aes256_cbc.pem"));
char[] unencrypted = IOUtils.toCharArray(getClass().getResourceAsStream("key.pem"));
String password = "password";

PEMStructure psOrg = PEMDecoder.parsePEM(unencrypted);
LOGGER.info(psOrg.toString());

PEMStructure ps = PEMDecoder.parsePEM(aes256_cbc);
LOGGER.info(ps.toString());
PEMDecoder.decryptPEM(ps, password);
PEMDecoder.decodeKeyPair(aes256_cbc, password);
assertEquals(psOrg, ps);
}
}
42 changes: 42 additions & 0 deletions test/com/trilead/ssh2/crypto/cipher/aes128_cbc.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,18AD07B8BCA0F89B291203ADF5C5473F

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
-----END RSA PRIVATE KEY-----
42 changes: 42 additions & 0 deletions test/com/trilead/ssh2/crypto/cipher/aes192_cbc.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-192-CBC,23B1FE3232AD91E486B13D2FC25E7AFE

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
-----END RSA PRIVATE KEY-----
42 changes: 42 additions & 0 deletions test/com/trilead/ssh2/crypto/cipher/aes256_cbc.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-256-CBC,6D278FC468CBC14D66A0F4E44460967F

AQg/1YJ4uso8i18zg6KAA2GIDkezatupVhrOF/CT3GInsVNWYdxdMCkCv0acBK4R
kQkjgdIUfUzq3Qe1qOyzRBZSIrUPtP0deiW9/CkppxsKfFc0JAjG4WWIVuAYyEbN
cbbIfnRCvMZ7kYuE5lDZLx/4s0xWeQGHTTFtUcOx71RsY8I/V0KDoJ6XpVM2fWXj
uoQ6+pppfxixGhPGiO7O2PA2+/ZQlm2OKbptThCyXXRgsSBXHHM8EJE92CWi2ogC
PE9dg3dAqGUTmJOZ8oo9PucI+mp5LTsEuAJZj3lksHkk0wPaNgXmUQNh2P9qzqL7
t/MiaHTw2pgWdh8UndGTitzktwbysQtk5dc3XKkTrSXYzEDMmdODBVguUr+LBSEj
LXmG4O0+tZp7aNy+Bq2czWwNh5bURvKjLUVSql7ICZm2s7lRwwqW0tqYnbds1ktQ
vcyQVaE5W/hIthHJdb+nClw5SqhkDaoi0GCzPVWP36IeSMf4hu/8nEb5OW/PfhLP
wRWyrsekqfRroMEElV/OYkD8ObZ6t+vGwX8hNwWqO8kjlaEdypgoBNLeRK6/uVTq
vKcMPMsyJe7cyx+dpsAmb6IrhE/DPHVmgT1DP6Pi6JrAhMugYHVGG9TSQ/6jRQtj
MZPvxLeecTXRODSHMVSEdpBAkSvLbsPc7O9EvTLWLkK2tLqSnTBVCy5ZCQC0xHqH
76+TItb7PyhsMqhBM0RpC9div+2NW0q808z90Li7mP2IocqagsMTA8mQ++pdWn2h
GR4ChC5WwCEmVsHAuXq5VL2gzDcM0LkVBrcEbnsyMuG0m/12YqoVRGOOr8E4thPe
SUXVdXEF1GOotWMXOR3v7vml/g1dNiI5b5Ru/DIp0/M8RJrVJZQqWTp2Fb+XC+qb
9+51XqZVmyKBjVEpoja8w6/IR3S6HekLiFp+6iRX8xumVpqTLcP88g7JXgTm2vww
f0edYoeTaCkYxTRfpgaeM4X1sLAMGJwf2iJwAFBGzEfbI32u0zoZeVF77ENSHvsC
lePxDrqPKQZWuo78os9IalLvBLzDtdFCOicVywdqckKPMkFk2BttK2/TX4JM6DC2
u5xEOpMnGoaLE35xC4kvVL0f1T4ok4XZeht4M6+gaEPBoTEr7DF0Ghk4OdIIDmcq
MlTdDtmu9f30RkOJQUUCNDSgZbPg4z4j+KWGETRbaNqxQw/QT51PLGSi1HrDnmVz
NIkmFhxR4mxfOOAkDx2d9X+3HiWqGXpGEsfF3zp2wWTopoe5lnVjefPYFeHox1su
U5G+SUpQhJKZdcgZ/lriyBF/I+yLbai4C7vgBj67AFXRE6OEirbpZpRViUIDlJqj
ZYNUpsRd/SxDkWQlo3rNMaI+kTGgYns+VFBWONGbbqU8mb5CsFxdAkos93Suj9fF
QMm+taLGN5YGdhkSiJ3hk8E4oCDDbjUalhVRaW/zibomWkwASLZ7N1VMdRLk4b0W
G/LOFmMfopmfY2SkrWb65XDJTFxVatoccp3ThZHven4LyG3OxkNISimq89v56TrA
fmN1JPnAeKKPLt8oS/dhtSEvitYXOzMXjcopWlhS/ICn0Iycv0G2fABArT9BD1vc
60Rw/rC6MQEDNZp0KFNh27D7/BOqffCH3bV1vFMhMmhMxhAZ6piQe+OfFDEVsTG8
Q0CcnpFzfboN3E4fVtJgOMu47j+qt6W6lfzqjcH2zfbBwo0ZDw8LrlQaWkpMUDqn
DbCYZgJILcUDzJ7U/rvmwu4p3l8y6OXhEqXdkCCLfXEpY4rQ3yl2LYygIXB9rw4/
zugiHdITA25oSQ2vfSl3nSKB5IEnU627ajLgdd/7O6cj4x9BonkJEb/XIdCMrAus
TStP7cA5SDSGyisrAiX+YmNj0bSaLNj1rXsdREQMxF2vMOr3zQ01my1ZZn0RXZNE
cKJgtIMBrQUFjnoUDZ9Sjd1apUeTKkh7rq+DOOyv4eKCO1yBlIBjg7HuqpSpZ3qy
BAko7UBZByTIA7sGXosT9IFZk5sPceVVUYvMP4Z3K3Ik57412YBMN0zUWxt1BYTY
PhbOF6vi1MnkBpCcuJjZDV0YsUVsxRuFemjR7q30jwR+a1yIySlNKYxF8kVgARY0
x0GikoPg97hYaEB0hBmEeZXe3cWNxyUxfkkUkXwnAhh061piULAVNjXLGqzqtKJX
++RDmdhYgrz2gi/UtRV9ggZUStfsO91vIZJq9pYuBA8+Onnw37QSd8hq3vgR+ZWI
ClNzk4T/esFiiM+ejteAIlaVW8RRI6oXRKayDCgaoelOiPLrf9fWIH//VdQTAzkq
xbkDsQk7BMCt6FSmJNiRTLFiXjZZ+JaO6KO+4d9cwtiTq0ubsYYDdfu1s8hZHprH
-----END RSA PRIVATE KEY-----
42 changes: 42 additions & 0 deletions test/com/trilead/ssh2/crypto/cipher/des_cbc.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-CBC,8A9DE62E259C14CA

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
-----END RSA PRIVATE KEY-----
42 changes: 42 additions & 0 deletions test/com/trilead/ssh2/crypto/cipher/des_ede3_cbc.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,9381ED9C147F8F47

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
-----END RSA PRIVATE KEY-----
Loading

0 comments on commit e52ed03

Please sign in to comment.