package org.ovirt.engine.core.uutils.ssh;
/*
* Example of execution:
* $ mvn -Dssh-host=host1 -Dssh-test-port=22 -Dssh-test-user=root -Dssh-test-password=password -Dssh-test-p12=a.p12 -Dssh-test-p12-password=password -Dssh-test-large-file-size=50000000
*
* Create PKCS#12:
* $ openssl req -newkey rsa:2048 -x509 -days 365 -out a.crt -keyout a.key
* $ openssl pkcs12 -export -inkey a.key -in a.crt -out a.p12
*
* Extract openssh public from PKCS#12:
* $ openssl pkcs12 -in /tmp/a.p12 -nokeys | openssl x509 -pubkey -noout | ssh-keygen -i -m PKCS8 -f /proc/self/fd/0
*/
import java.io.FileInputStream;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.KeyStore;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Test class for SSHClient.
*/
public class TestCommon {
private static Logger log = LoggerFactory.getLogger(TestCommon.class);
static String host;
static int port;
static String user;
static String password;
static KeyPair keyPair;
static long largeTestFileSize;
static long largeTestHardTimeout;
static SSHD sshd;
@BeforeClass
public static void initialize() throws Exception {
host = System.getProperty("ssh-host");
if (host == null) {
log.warn("WARNING: using internal daemon");
keyPair = KeyPairGenerator.getInstance("RSA").generateKeyPair();
host = "localhost";
user = "root";
password = "password";
sshd = new SSHD();
sshd.setUser(user, password, keyPair.getPublic());
sshd.start();
port = sshd.getPort();
} else {
port = Integer.parseInt(System.getProperty("ssh-test-port", "22"));
user = System.getProperty("ssh-test-user", "root");
password = System.getProperty("ssh-test-password", "password");
String p12 = System.getProperty("ssh-test-p12");
String p12_password = System.getProperty("ssh-test-p12-password", "password");
try (FileInputStream fis = new FileInputStream(p12)) {
KeyStore keyStore = KeyStore.getInstance("PKCS12");
keyStore.load(fis, p12_password.toCharArray());
KeyStore.PrivateKeyEntry entry = (KeyStore.PrivateKeyEntry) keyStore.getEntry("1",
new KeyStore.PasswordProtection(p12_password.toCharArray()));
keyPair = new KeyPair(entry.getCertificate().getPublicKey(), entry.getPrivateKey());
}
}
largeTestFileSize = Long.parseLong(System.getProperty("ssh-test-large-file-size", "50000000"));
largeTestHardTimeout = Long.parseLong(System.getProperty("ssh-test-long-hard-timeout", "0"));
}
/**
* Terminate.
*/
@AfterClass
public static void terminate() {
if (sshd != null) {
sshd.stop();
sshd = null;
}
}
}