/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.embedded.ssh.internal; import java.math.BigInteger; import java.security.KeyFactory; import java.security.NoSuchAlgorithmException; import java.security.PublicKey; import java.security.spec.InvalidKeySpecException; import java.security.spec.KeySpec; import java.security.spec.RSAPublicKeySpec; import java.util.ArrayList; import java.util.List; /** * Class with utility methods for the SSH console test classes. * * @author Sebastian Holtappels */ public final class SshTestUtils { private static final int DEFAULT_TEST_PORT = 31005; private static final String NOT_RESTRICTED_ROLE = SshConstants.ROLE_NAME_DEVELOPER; private static final String RESTRICTED_ROLE = SshConstants.ROLE_NAME_LOCAL_ADMIN; private static final String PUBLIC_KEY = "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAty3XzVa62Gj6qDpXRiBq+EH72YItRfagVcFedx3+FR7VUzMytZ3BQ/egFu7i" + "IK08bptGdSzOgOStykPCYt4594EkTY6zfACguHyUSzqyZoqvpZ534pFC/Nd6i/A7rRcRO1Q7i5xkq0HogkoQTWazCrkwRi" + "L0475vnY0qkT6ob8cJe9tTVZYUXuwRjfOPJ52H1c9RdpdCD9NFWwvP0O1ONEdBUST8zyaa/YBaKx2IgArCIIVjB3AkNmsH" + "ImnkFWtHhlh/wTp69rlZHPvwUqYD7Nprtk31zHR22ICLvRr/4xL+kPtyZNYkHoe6DnKOS+7WaPczLFAfyMH3TgAyVo0Tbw== imported-openssh-key"; private SshTestUtils() {}; /** * * Get a valid configuration for test cases. * * @return a valid configuration */ public static SshConfiguration getValidConfig() { SshConfiguration configuration = new SshConfiguration(); configuration.setPort(DEFAULT_TEST_PORT); configuration.setEnabled(true); // add user configuration.setAccounts(getValidUsers()); return configuration; } /** * * Get a list of valid users... * * @return a list of valid users */ public static List<SshAccountImpl> getValidUsers() { List<SshAccountImpl> users = new ArrayList<SshAccountImpl>(); users.add(new SshAccountImpl("admin", "adminadmin", null, null, NOT_RESTRICTED_ROLE)); users.add(new SshAccountImpl("developer", "developerdeveloper", null, null, NOT_RESTRICTED_ROLE)); users.add(new SshAccountImpl("user", "useruser", null, null, RESTRICTED_ROLE)); // Testing some special characters and numbers users.add(new SshAccountImpl("_1€üöä()!.:,;_-<>[]{}", "_2$1()!.:,;_€üöä-<>[]{}", null, null, RESTRICTED_ROLE)); users.add(new SshAccountImpl("publicKeyTester", "", null, PUBLIC_KEY, RESTRICTED_ROLE)); users.add(new SshAccountImpl("default", "default", null, null, RESTRICTED_ROLE)); return users; } public static SshAccountImpl getValidUser() { return getValidUsers().get(0); } public static SshAccountImpl getValidPublicKeyUser() { return getValidUsers().get(4); } /** * Create disabled ssh account. * * @return A SshAcountImpl that is disabled. */ public static SshAccountImpl getDisabledUser() { SshAccountImpl disabled = new SshAccountImpl("disabled", "disabled", null, null, RESTRICTED_ROLE); disabled.setEnabled(false); return disabled; } /** * Create disabled account with public key. * * @return A SshAcountImpl that is disabled. */ public static SshAccountImpl getDisabledPublicKeyUser() { SshAccountImpl disabled = new SshAccountImpl("disabled_with_key", "", null, PUBLIC_KEY, RESTRICTED_ROLE); disabled.setEnabled(false); return disabled; } /** * Creates a valid public key that does not match the key of the "publicKeyTester" account. * * @return A public key object * * @author Brigitte Boden */ public static PublicKey createIncorrectPublicKey() { String mod = "1194457323795445980561452000539327328778638467996523849895883037375273287439705598832111464872863171" + "68142202446955508902936035124709397221178664495721428029984726868375359168203283442617134197706515425366188" + "396513684446494070223079865755643116690165578452542158755074958452695530623055205290232290667934914919"; String exp = "42535"; KeySpec spec = new RSAPublicKeySpec(new BigInteger(mod), new BigInteger(exp)); KeyFactory kf; PublicKey key; try { kf = KeyFactory.getInstance("RSA"); key = kf.generatePublic(spec); } catch (NoSuchAlgorithmException | InvalidKeySpecException e) { key = null; } return key; } public static List<SshAccountRole> getValidRoles() { return getValidConfig().getRoles(); } }