mirror of
https://github.com/hierynomus/sshj.git
synced 2025-12-06 07:10:53 +03:00
Merge pull request #266 from joval/master
Decryption fix and junit test updates for PKCS5
This commit is contained in:
@@ -183,7 +183,7 @@ public class PKCS5KeyFile
|
||||
} else {
|
||||
throw new FormatException("Not a supported algorithm: " + algorithm);
|
||||
}
|
||||
iv = Arrays.copyOfRange(DatatypeConverter.parseHexBinary(line.substring(ptr+1)), 0, Math.min(cipher.getIVSize(), 8));
|
||||
iv = Arrays.copyOfRange(DatatypeConverter.parseHexBinary(line.substring(ptr+1)), 0, cipher.getIVSize());
|
||||
}
|
||||
} else if (line.length() > 0) {
|
||||
sb.append(line);
|
||||
@@ -261,7 +261,7 @@ public class PKCS5KeyFile
|
||||
md5.update(tmp, 0, tmp.length);
|
||||
}
|
||||
md5.update(passphrase, 0, passphrase.length);
|
||||
md5.update(iv, 0, iv.length);
|
||||
md5.update(iv, 0, iv.length > 8 ? 8 : iv.length);
|
||||
tmp = md5.digest();
|
||||
System.arraycopy(tmp, 0, hn, i, tmp.length);
|
||||
i += tmp.length;
|
||||
|
||||
@@ -39,14 +39,8 @@ public class PKCS5KeyFileTest {
|
||||
static final String pubExp = "23";
|
||||
static final String privExp = "57bcee2e2656eb2c94033d802dd62d726c6705fabad1fd0df86b67600a96431301620d395cbf5871c7af3d3974dfe5c30f5c60d95d7e6e75df69ed6c5a36a9c8aef554b5058b76a719b8478efa08ad1ebf08c8c25fe4b9bc0bfbb9be5d4f60e6213b4ab1c26ad33f5bba7d93e1cd65f65f5a79eb6ebfb32f930a2b0244378b4727acf83b5fb376c38d4abecc5dc3fc399e618e792d4c745d2dbbb9735242e5033129f2985ca3e28fa33cad2afe3e70e1b07ed2b6ec8a3f843fb4bffe3385ad211c6600618488f4ac70397e8eb036b82d811283dc728504cddbe1533c4dd31b1ec99ffa74fd0e3883a9cb3e2315cc1a56f55d38ed40520dd9ec91b4d2dd790d1b";
|
||||
|
||||
static final String g = "23b0484f5ad9cba2b3dba7129419fbec7f8c014e22d3b19de4ebbca20d0ebd2e9f5225dabdd48de75f87e3193377fb1072c08433f82f6e6e581a319d4fc7d283cdcd2ae2000fe572c0a800fd47b7590d6a6afe3df54aedd57696c6538029daebf11d9e277edc0c7e905e237d3b9e6a6f674d83da5cc0131ac0be2e55ac69730e";
|
||||
static final String p = "92b746cf7c0e9ea35fd9b09b0c3dbdfde453468984698ff168fefef3f0457d29bcf81c88830ac1099223d00745423e44cdef66f4cdc3fad1d95ce2868b3e885c1d518c9fcda597d5c373f05f6f323553f60bd992404183dab41d82ab6d3b3ecf2dfc3c136fa67c4312ec0b7bbac77a634e1eb5dd9a62efd0ddab477d0b49c0b9";
|
||||
static final String q = "96a05e07b9e52d6f1137d11d5d270b568b94162f";
|
||||
static final String x = "8981aebb71c60b5951f0ab3ed1a00b5307742f43";
|
||||
static final String y = "7e845aada202d31004c52ab170cbe62ce9a962b9f4acbc67a57f62eb090a67b3faa53d38050f87b2b66ddf1185472f27842c3e3e58d025f9148a28f49ebdfb6efefee8ee10fe84a2d56535dddb301dfee15538108639e8a0ec7aa237ddb999f35b6a5c6b875052998233374163ad031f974d29c2631394436ae186b418348193";
|
||||
final char[] correctPassphrase = "test_passphrase".toCharArray();
|
||||
final char[] incorrectPassphrase = new char[]{' '};
|
||||
|
||||
final char[] correctPassphrase = "passphrase".toCharArray();
|
||||
final char[] incorrectPassphrase = "incorrect".toCharArray();
|
||||
|
||||
@Before
|
||||
public void setUp()
|
||||
@@ -89,8 +83,9 @@ public class PKCS5KeyFileTest {
|
||||
@Test
|
||||
public void retries()
|
||||
throws IOException, GeneralSecurityException {
|
||||
FileKeyProvider dsa = new PKCS5KeyFile();
|
||||
dsa.init(new File("src/test/resources/id_dsa"), givesOn3rdTry);
|
||||
assertEquals(KeyUtil.newDSAPrivateKey(x, p, q, g), dsa.getPrivate());
|
||||
FileKeyProvider rsa = new PKCS5KeyFile();
|
||||
rsa.init(new File("src/test/resources/rsa.pk5"), givesOn3rdTry);
|
||||
assertEquals(KeyUtil.newRSAPublicKey(modulus, pubExp), rsa.getPublic());
|
||||
assertEquals(KeyUtil.newRSAPrivateKey(modulus, privExp), rsa.getPrivate());
|
||||
}
|
||||
}
|
||||
|
||||
30
src/test/resources/rsa.pk5
Normal file
30
src/test/resources/rsa.pk5
Normal file
@@ -0,0 +1,30 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
Proc-Type: 4,ENCRYPTED
|
||||
DEK-Info: AES-128-CBC,AE7ED92A1A2D5FB584B537DAB45A62E5
|
||||
|
||||
J/o72rIJRjtdVzgu862AH79AXyZaSakgRh9SbzGQ00msDss6jKY6GxHhaZFutilO
|
||||
BX0bc3sOx+8XWlqnNpMiWy6ImorTMH6gr95SotrUQ3LuZ3rVW4u4FI+VQ/Jc7Dm9
|
||||
LkLj7N7hHGfsVw6SsywKtfYdnAu/ySg5hlngVDB+pTKNDon1Fzs8vYI4n0ou1OAM
|
||||
G/XjqMEbcQdqhhbdlLmmTElNRzIJE6Ojrx5swXmeVj31teH4oXKLiOVKNJQg37A+
|
||||
CN51VN8GNalqPBXeZ/DcguB18M/CMb8YTlk3V3XaOwgLLc1vXpDBz2rtkaluhcD+
|
||||
GzmquGZbcX9saP89Gq2HWzWzIMCuMFGHGSJlZvNp805PCVX0nF+iIqcwIArNRetA
|
||||
gAWxBIm6Y9f5Kp4kQE2UNFsaLKrQlKQHIPAwdQFBmIyQulYJ1qMJeCQvCTB8jPkk
|
||||
yrl2diiaK/TxexRaKgxeuML8jcSjfY8dYsaSda7gt8i/zCn+rSjc4CfOGSlCnSwl
|
||||
DDh3i9Yv0enZ+oHzRjYjwUFXxfQBg8MFSoth4YkPV2oMn+pKXyaIqe4AcFmlyYX7
|
||||
q3Vw+w86QA4gTX9d82nwW+svpiab1KqvnH78YJf4qYkcla54VbeuXApODE7INe9a
|
||||
+Hd9g3cQTnrJ7M5TiZViT/LPtRQHz6y9mckHHS0HsLZjHGrhrvlZHYPvdlE3AwJ8
|
||||
O6wGA7Ni51D1TjMPcTukb/H8VW+JhF4oUswVTjNkYE1C467GeT6q4H2oQ/Z9cIyR
|
||||
8IiI8jh4etL8QGyh3oFwQJ+j3i22zThyGylc58tyg6DbWF3modeOwd2p07tfuKH0
|
||||
M8ojQM9uo2SLZ5aOS65UzmawGXKQD7JjiuhQBupQrlb1w3tp1BNc0bSdcsckhGHK
|
||||
VZjCZNPTBbeoofsZf3xfUlxOG9HnWtJZ1ra8jlyQLTAD7VR+rjhZFSnRkY0POMg6
|
||||
iQFbJ4mM3i79Ut2MNz2kbYkL6uhHL0SDM1GABKWHxzhZ8+gb+ET6kraGJbxf5OTa
|
||||
JbVH5HmAkOaoLk8vnvhTG32gvEAF9ZDYQBiUq6g8jdbSVwh7XooIeJtU3zjiuzSv
|
||||
KRc1AbU/GDI6N5HZCQ0T7wr53dyEsUMdLRsVHrEN5wJrZFfV2hFi/zzgkTAcgYqf
|
||||
fHwjunoy8q2YyLKljR2WZpr5DJ+nFMsNedrhJSmr7N9wYMAWc5HO6ZmXOHVgkjlR
|
||||
ELUZDWHT7JImCpsqyBb1oAbPvX5Ehk6ONhwcAH0HW3XJ1B160wXkqwmS60fZVSgp
|
||||
Pyx1pzmAUP2yuc/gZqKo32jLbsh53ASScLgnhbjhwFgdK5dybUrK4traFOf9wabJ
|
||||
qBKqiJK8v6IAsZ6v0mCOSyS+uBat5+xOQlwuoKySNpbZRwHiQ3XdO+SsqrFMPDkc
|
||||
ZhJwE+Tw7tufE49IDaOG2CPLTj4MP+9jtl+GYe65xzvYS5CYMROUeA9lmzNxoDR5
|
||||
EqC8Dy/+T+mVZ+qD+w3kko9ShHEMf4NBWcrnv/bl3bia8KaiaXM3647H5P25il+E
|
||||
I9OzXdKPX937ozPzdb4jebRZZEHlviIm5bZLrIpqgtZIxTsQ8CY1gedL8nyX7EWX
|
||||
-----END RSA PRIVATE KEY-----
|
||||
Reference in New Issue
Block a user