Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: allow to use password encrypted keys #49

Merged
merged 4 commits into from
Sep 25, 2020
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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

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
-----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