mirror of
https://github.com/hierynomus/sshj.git
synced 2025-12-06 15:20:54 +03:00
Update BC dependency to 1.50.
This commit is contained in:
6
pom.xml
6
pom.xml
@@ -49,18 +49,18 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.bouncycastle</groupId>
|
<groupId>org.bouncycastle</groupId>
|
||||||
<artifactId>bcpkix-jdk15on</artifactId>
|
<artifactId>bcpkix-jdk15on</artifactId>
|
||||||
<version>1.49</version>
|
<version>1.50</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.bouncycastle</groupId>
|
<groupId>org.bouncycastle</groupId>
|
||||||
<artifactId>bcprov-jdk15on</artifactId>
|
<artifactId>bcprov-jdk15on</artifactId>
|
||||||
<version>1.49</version>
|
<version>1.50</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.jcraft</groupId>
|
<groupId>com.jcraft</groupId>
|
||||||
<artifactId>jzlib</artifactId>
|
<artifactId>jzlib</artifactId>
|
||||||
<version>1.1.2</version>
|
<version>1.1.3</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|||||||
@@ -15,6 +15,12 @@
|
|||||||
*/
|
*/
|
||||||
package net.schmizz.sshj.userauth.keyprovider;
|
package net.schmizz.sshj.userauth.keyprovider;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.security.KeyPair;
|
||||||
|
import java.security.PrivateKey;
|
||||||
|
import java.security.PublicKey;
|
||||||
|
|
||||||
import net.schmizz.sshj.common.IOUtils;
|
import net.schmizz.sshj.common.IOUtils;
|
||||||
import net.schmizz.sshj.common.KeyType;
|
import net.schmizz.sshj.common.KeyType;
|
||||||
import net.schmizz.sshj.userauth.password.PasswordFinder;
|
import net.schmizz.sshj.userauth.password.PasswordFinder;
|
||||||
@@ -22,17 +28,17 @@ import net.schmizz.sshj.userauth.password.PasswordUtils;
|
|||||||
import net.schmizz.sshj.userauth.password.PrivateKeyFileResource;
|
import net.schmizz.sshj.userauth.password.PrivateKeyFileResource;
|
||||||
import net.schmizz.sshj.userauth.password.PrivateKeyStringResource;
|
import net.schmizz.sshj.userauth.password.PrivateKeyStringResource;
|
||||||
import net.schmizz.sshj.userauth.password.Resource;
|
import net.schmizz.sshj.userauth.password.Resource;
|
||||||
|
|
||||||
import org.bouncycastle.openssl.EncryptionException;
|
import org.bouncycastle.openssl.EncryptionException;
|
||||||
import org.bouncycastle.openssl.PEMReader;
|
import org.bouncycastle.openssl.PEMDecryptorProvider;
|
||||||
|
import org.bouncycastle.openssl.PEMEncryptedKeyPair;
|
||||||
|
import org.bouncycastle.openssl.PEMKeyPair;
|
||||||
|
import org.bouncycastle.openssl.PEMParser;
|
||||||
|
import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter;
|
||||||
|
import org.bouncycastle.openssl.jcajce.JcePEMDecryptorProviderBuilder;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.security.KeyPair;
|
|
||||||
import java.security.PrivateKey;
|
|
||||||
import java.security.PublicKey;
|
|
||||||
|
|
||||||
/** Represents a PKCS8-encoded key file. This is the format used by OpenSSH and OpenSSL. */
|
/** Represents a PKCS8-encoded key file. This is the format used by OpenSSH and OpenSSL. */
|
||||||
public class PKCS8KeyFile
|
public class PKCS8KeyFile
|
||||||
implements FileKeyProvider {
|
implements FileKeyProvider {
|
||||||
@@ -119,14 +125,26 @@ public class PKCS8KeyFile
|
|||||||
throws IOException {
|
throws IOException {
|
||||||
KeyPair kp = null;
|
KeyPair kp = null;
|
||||||
org.bouncycastle.openssl.PasswordFinder pFinder = makeBouncyPasswordFinder();
|
org.bouncycastle.openssl.PasswordFinder pFinder = makeBouncyPasswordFinder();
|
||||||
PEMReader r = null;
|
PEMParser r = null;
|
||||||
Object o = null;
|
Object o = null;
|
||||||
try {
|
try {
|
||||||
for (; ; ) {
|
for (; ; ) {
|
||||||
// while the PasswordFinder tells us we should retry
|
// while the PasswordFinder tells us we should retry
|
||||||
try {
|
try {
|
||||||
r = new PEMReader(resource.getReader(), pFinder);
|
r = new PEMParser(resource.getReader());
|
||||||
o = r.readObject();
|
o = r.readObject();
|
||||||
|
|
||||||
|
JcaPEMKeyConverter pemConverter = new JcaPEMKeyConverter();
|
||||||
|
pemConverter.setProvider("BC");
|
||||||
|
if (pFinder != null && o instanceof PEMEncryptedKeyPair) {
|
||||||
|
JcePEMDecryptorProviderBuilder decryptorBuilder = new JcePEMDecryptorProviderBuilder();
|
||||||
|
PEMDecryptorProvider pemDecryptor = decryptorBuilder.build(pFinder.getPassword());
|
||||||
|
o = pemConverter.getKeyPair(((PEMEncryptedKeyPair) o).decryptKeyPair(pemDecryptor));
|
||||||
|
}
|
||||||
|
if (o instanceof PEMKeyPair) {
|
||||||
|
o = pemConverter.getKeyPair((PEMKeyPair) o);
|
||||||
|
}
|
||||||
|
|
||||||
} catch (EncryptionException e) {
|
} catch (EncryptionException e) {
|
||||||
if (pwdf.shouldRetry(resource))
|
if (pwdf.shouldRetry(resource))
|
||||||
continue;
|
continue;
|
||||||
@@ -154,4 +172,4 @@ public class PKCS8KeyFile
|
|||||||
public String toString() {
|
public String toString() {
|
||||||
return "PKCS8KeyFile{resource=" + resource + "}";
|
return "PKCS8KeyFile{resource=" + resource + "}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user