mirror of
https://github.com/hierynomus/sshj.git
synced 2025-12-07 15:50:57 +03:00
Add overloaded init methods that take the public key from a stream an… (#908)
* Add overloaded init methods that take the public key from a stream and properly initialize. Resolves #907. * Override public key.
This commit is contained in:
@@ -34,38 +34,47 @@ public abstract class BaseFileKeyProvider implements FileKeyProvider {
|
||||
|
||||
@Override
|
||||
public void init(Reader location) {
|
||||
assert location != null;
|
||||
resource = new PrivateKeyReaderResource(location);
|
||||
this.init(location, (PasswordFinder) null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(Reader location, PasswordFinder pwdf) {
|
||||
init(location);
|
||||
this.init(location, null, pwdf);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(Reader privateKey, Reader publicKey) {
|
||||
this.init(privateKey, publicKey, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(Reader privateKey, Reader publicKey, PasswordFinder pwdf) {
|
||||
assert publicKey == null;
|
||||
this.resource = new PrivateKeyReaderResource(privateKey);
|
||||
this.pwdf = pwdf;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(File location) {
|
||||
assert location != null;
|
||||
resource = new PrivateKeyFileResource(location.getAbsoluteFile());
|
||||
this.init(location, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(File location, PasswordFinder pwdf) {
|
||||
init(location);
|
||||
this.resource = new PrivateKeyFileResource(location.getAbsoluteFile());
|
||||
this.pwdf = pwdf;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(String privateKey, String publicKey) {
|
||||
assert privateKey != null;
|
||||
assert publicKey == null;
|
||||
resource = new PrivateKeyStringResource(privateKey);
|
||||
this.init(privateKey, publicKey, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(String privateKey, String publicKey, PasswordFinder pwdf) {
|
||||
init(privateKey, publicKey);
|
||||
assert privateKey != null;
|
||||
assert publicKey == null;
|
||||
this.resource = new PrivateKeyStringResource(privateKey);
|
||||
this.pwdf = pwdf;
|
||||
}
|
||||
|
||||
|
||||
@@ -30,6 +30,10 @@ public interface FileKeyProvider
|
||||
|
||||
void init(Reader location);
|
||||
|
||||
void init(Reader privateKey, Reader publicKey);
|
||||
|
||||
void init(Reader privateKey, Reader publicKey, PasswordFinder pwdf);
|
||||
|
||||
void init(Reader location, PasswordFinder pwdf);
|
||||
|
||||
void init(String privateKey, String publicKey);
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
package net.schmizz.sshj.userauth.keyprovider;
|
||||
|
||||
import com.hierynomus.sshj.userauth.keyprovider.OpenSSHKeyFileUtil;
|
||||
import net.schmizz.sshj.userauth.password.PasswordFinder;
|
||||
|
||||
import java.io.*;
|
||||
import java.security.PublicKey;
|
||||
@@ -54,21 +55,22 @@ public class OpenSSHKeyFile
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(File location) {
|
||||
public void init(File location, PasswordFinder pwdf) {
|
||||
// try cert key location first
|
||||
File pubKey = OpenSSHKeyFileUtil.getPublicKeyFile(location);
|
||||
if (pubKey != null)
|
||||
if (pubKey != null) {
|
||||
try {
|
||||
initPubKey(new FileReader(pubKey));
|
||||
} catch (IOException e) {
|
||||
// let super provide both public & private key
|
||||
log.warn("Error reading public key file: {}", e.toString());
|
||||
}
|
||||
super.init(location);
|
||||
}
|
||||
super.init(location, pwdf);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(String privateKey, String publicKey) {
|
||||
public void init(String privateKey, String publicKey, PasswordFinder pwdf) {
|
||||
if (publicKey != null) {
|
||||
try {
|
||||
initPubKey(new StringReader(publicKey));
|
||||
@@ -77,7 +79,20 @@ public class OpenSSHKeyFile
|
||||
log.warn("Error reading public key: {}", e.toString());
|
||||
}
|
||||
}
|
||||
super.init(privateKey, null);
|
||||
super.init(privateKey, null, pwdf);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(Reader privateKey, Reader publicKey, PasswordFinder pwdf) {
|
||||
if (publicKey != null) {
|
||||
try {
|
||||
initPubKey(publicKey);
|
||||
} catch (IOException e) {
|
||||
// let super provide both public & private key
|
||||
log.warn("Error reading public key: {}", e.toString());
|
||||
}
|
||||
}
|
||||
super.init(privateKey, null, pwdf);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user