@Override public LoginCredentials apply(@Nullable EncryptedPasswordAndPrivateKey dataAndKey) { if (dataAndKey == null) return null; try { KeySpec keySpec = Pems.privateKeySpec(dataAndKey.getPrivateKey()); KeyFactory kf = crypto.rsaKeyFactory(); PrivateKey privKey = kf.generatePrivate(keySpec); Cipher cipher = crypto.cipher("RSA"); cipher.init(Cipher.DECRYPT_MODE, privKey); byte[] cipherText = base64().decode(whitespace.matcher(dataAndKey.getEncryptedPassword()).replaceAll("")); byte[] plainText = cipher.doFinal(cipherText); String password = new String(plainText, UTF_8); return LoginCredentials.builder() .user("Administrator") .password(password) .noPrivateKey() .build(); } catch (Exception e) { throw Throwables.propagate(e); } } }
private void conditionallyCheckSSH() { if (vm.getPassword() != null && loginCredentials.getOptionalPassword() == null) loginCredentials = loginCredentials.toBuilder().password(vm.getPassword()).build(); assert HostSpecifier.isValid(vm.getIPAddress()); if (!InetAddresses2.isPrivateIPAddress(vm.getIPAddress())) { // not sure if the network is public or not, so we have to test HostAndPort socket = HostAndPort.fromParts(vm.getIPAddress(), 22); System.err.printf("testing socket %s%n", socket); System.err.printf("testing ssh %s%n", socket); checkSSH(socket); } else { System.err.printf("skipping ssh %s, as private%n", vm.getIPAddress()); } }
public void testCreateVm() { if (networksDisabled) return; String defaultTemplate = templateBuilderSpec != null ? templateBuilderSpec.getImageId() : null; vm = VirtualMachineApiLiveTest.createVirtualMachineInNetwork(network, defaultTemplateOrPreferredInZone(defaultTemplate, client, network.getZoneId()), client, jobComplete, virtualMachineRunning); if (vm.getPassword() != null && !loginCredentials.getOptionalPassword().isPresent()) loginCredentials = loginCredentials.toBuilder().password(vm.getPassword()).build(); }
public void testCreateVm() { if (networksDisabled) return; String defaultTemplate = template != null ? template.getImageId() : null; vm = VirtualMachineClientLiveTest.createVirtualMachineInNetwork(network, defaultTemplateOrPreferredInZone(defaultTemplate, client, network.getZoneId()), client, jobComplete, virtualMachineRunning); if (vm.getPassword() != null && loginCredentials.getOptionalPassword() == null) loginCredentials = loginCredentials.toBuilder().password(vm.getPassword()).build(); }
@Override public LoginCredentials apply(@Nullable PasswordDataAndPrivateKey dataAndKey) { if (dataAndKey == null) return null; try { KeySpec keySpec = Pems.privateKeySpec(dataAndKey.getPrivateKey()); KeyFactory kf = crypto.rsaKeyFactory(); PrivateKey privKey = kf.generatePrivate(keySpec); Cipher cipher = crypto.cipher("RSA"); cipher.init(Cipher.DECRYPT_MODE, privKey); byte[] cipherText = base64().decode(dataAndKey.getPasswordData().getPasswordData()); byte[] plainText = cipher.doFinal(cipherText); String password = new String(plainText, Charsets.US_ASCII); return LoginCredentials.builder() .user("Administrator") .password(password) .noPrivateKey() .build(); } catch(Exception e) { throw Throwables.propagate(e); } } }
@Override public LoginCredentials apply(Object resourceToAuthenticate) { if (creds != null) return creds; checkNotNull(resourceToAuthenticate); checkArgument(resourceToAuthenticate instanceof VAppTemplate, "Resource must be an VAppTemplate (for Terremark)"); VAppTemplate template = (VAppTemplate) resourceToAuthenticate; String search = template.getDescription() != null ? template.getDescription() : template.getName(); if (search.indexOf("Windows") >= 0) { return LoginCredentials.builder().user("Administrator").build(); } else { Matcher matcher = USER_PASSWORD_PATTERN.matcher(search); if (matcher.find()) { return LoginCredentials.builder().user(matcher.group(1)).password(matcher.group(2)).authenticateSudo(true).build(); } else { logger.warn("could not parse username/password for image: " + template.getHref() + "\n" + search); return null; } } } }
public void testWhenCredentialsNotPresentInImageTemplateOptionsReturnsFromParameter() { LoginCredentials expected = LoginCredentials.builder().user("foo").password("bar").build(); Image image = createMock(Image.class); Template template = createMock(Template.class); expect(template.getImage()).andReturn(image); expect(image.getDefaultCredentials()).andReturn(null); expect(template.getOptions()).andReturn(new TemplateOptions()); replay(template, image); assertEquals(fn.apply(template, expected), expected); verify(template); verify(image); }
public void testWhenLoginCredentialsPresentInImageOverridesCredentialFromLoginCredentialsInTemplateOptions() { Image image = createMock(Image.class); Template template = createMock(Template.class); expect(template.getImage()).andReturn(image); expect(image.getDefaultCredentials()).andReturn(LoginCredentials.builder().user("ubuntu").password("password2").build()); expect(template.getOptions()).andReturn(TemplateOptions.Builder.overrideLoginPassword("password")); replay(template, image); assertEquals(fn.apply(template), expected); verify(template, image); } }
public void testWhenLoginCredentialsPresentInImageOverridesIdentityFromLoginCredentialsInTemplateOptions() { Image image = createMock(Image.class); Template template = createMock(Template.class); expect(template.getImage()).andReturn(image); expect(image.getDefaultCredentials()).andReturn(LoginCredentials.builder().user("user").password("password").build()); expect(template.getOptions()).andReturn(TemplateOptions.Builder.overrideLoginUser("ubuntu")); replay(template, image); assertEquals(fn.apply(template), expected); verify(template, image); }
public void testWhenCredentialsNotPresentInImageReturnsCredentialFromTemplateOptionsAndUserFromParameter() { Credentials expected = new Credentials("ubuntu", "password"); Image image = createMock(Image.class); Template template = createMock(Template.class); expect(template.getImage()).andReturn(image); expect(image.getDefaultCredentials()).andReturn(null); expect(template.getOptions()).andReturn(TemplateOptions.Builder.overrideLoginUser("ubuntu")); replay(template, image); assertEquals(fn.apply(template, LoginCredentials.builder().user("foo").password("password").build()), expected); verify(template); verify(image); }
public void testWhenCredentialsNotPresentInImageTemplateOptionsReturnsFromParameter() { LoginCredentials expected = LoginCredentials.builder().user("foo").password("bar").build(); Image image = createMock(Image.class); Template template = createMock(Template.class); expect(template.getImage()).andReturn(image); expect(image.getDefaultCredentials()).andReturn(null); expect(template.getOptions()).andReturn(new TemplateOptions()); replay(template, image); assertEquals(fn.apply(template, expected), expected); verify(template); verify(image); }
@Test public void testExpectedBindingsWhenCredentialIsNotNull() { ProviderMetadata md = AnonymousProviderMetadata.forClientMappedToAsyncClientOnEndpoint( IntegrationTestClient.class, IntegrationTestAsyncClient.class, "http://localhost"); Supplier<Credentials> creds = Suppliers.<Credentials> ofInstance(LoginCredentials.builder().user("user") .password("password").build()); ExpectedBindings bindings = Guice.createInjector(new BindProviderMetadataContextAndCredentials(md, creds)) .getInstance(ExpectedBindings.class); assertEquals(bindings.creds.identity, "user"); assertEquals(bindings.creds.credential, "password"); }
public void testWhenCredentialsNotPresentAndProviderPropertyHasUserAndPasswordAndSudo() { @SuppressWarnings("unchecked") Map<String, Credentials> credstore = createMock(Map.class); LoginCredentials expected = LoginCredentials.builder().user("ubuntu").password("password").authenticateSudo(true) .build(); ValueOfConfigurationKeyOrNull config = createMock(ValueOfConfigurationKeyOrNull.class); expect(credstore.containsKey("image")).andReturn(false); expect(config.apply("provider.image.login-user")).andReturn("ubuntu:password"); expect(config.apply("provider.image.authenticate-sudo")).andReturn("true"); expect(credstore.put("image", expected)).andReturn(null); replay(config); replay(credstore); GetLoginForProviderFromPropertiesAndStoreCredentialsOrReturnNull fn = new GetLoginForProviderFromPropertiesAndStoreCredentialsOrReturnNull( "provider", config, credstore); assertEquals(fn.get(), expected); verify(config); verify(credstore); }
public void testWhenLoginCredentialsPresentInImageOverridesCredentialFromLoginCredentialsInTemplateOptions() { Image image = createMock(Image.class); Template template = createMock(Template.class); expect(template.getImage()).andReturn(image); expect(image.getDefaultCredentials()).andReturn(LoginCredentials.builder().user("ubuntu").password("password2").build()); expect(template.getOptions()).andReturn(TemplateOptions.Builder.overrideLoginPassword("password")); replay(template, image); assertEquals(fn.apply(template), expected); verify(template, image); } }
public void testWhenCredentialsNotPresentInTemplateOptionsReturnsOneInImageAndNotParameter() { LoginCredentials expected = LoginCredentials.builder().user("ubuntu").password("password").build(); Image image = createMock(Image.class); Template template = createMock(Template.class); expect(template.getImage()).andReturn(image); expect(image.getDefaultCredentials()).andReturn(expected); expect(template.getOptions()).andReturn(new TemplateOptions()); replay(template, image); assertEquals(fn.apply(template, LoginCredentials.builder().user("foo").password("bar").build()), expected); verify(template); verify(image); }
@BeforeMethod(groups = { "unit" }) public void init() { sshClient = createMock(SshClient.class); sshFactory = new Function<NodeMetadata, SshClient>() { @Override public SshClient apply(@Nullable NodeMetadata nodeMetadata) { return sshClient; } }; node = createMock(NodeMetadata.class); expect(node.getCredentials()).andReturn(LoginCredentials.builder().user("tester").password("notalot").build()).atLeastOnce(); replay(node); }
public void testWhenCredentialsNotPresentInImageReturnsCredentialFromTemplateOptionsAndUserFromParameter() { Credentials expected = new Credentials("ubuntu", "password"); Image image = createMock(Image.class); Template template = createMock(Template.class); expect(template.getImage()).andReturn(image); expect(image.getDefaultCredentials()).andReturn(null); expect(template.getOptions()).andReturn(TemplateOptions.Builder.overrideLoginUser("ubuntu")); replay(template, image); assertEquals(fn.apply(template, LoginCredentials.builder().user("foo").password("password").build()), expected); verify(template); verify(image); }
public void testWhenLoginCredentialsPresentInImageOverridesIdentityFromLoginCredentialsInTemplateOptions() { Image image = createMock(Image.class); Template template = createMock(Template.class); expect(template.getImage()).andReturn(image); expect(image.getDefaultCredentials()).andReturn(LoginCredentials.builder().user("user").password("password").build()); expect(template.getOptions()).andReturn(TemplateOptions.Builder.overrideLoginUser("ubuntu")); replay(template, image); assertEquals(fn.apply(template), expected); verify(template, image); }
public LoginCredentials apply(Template template, LoginCredentials fromNode) { LoginCredentials creds = fromNode; LoginCredentials credsFromParameters = credentialsFromImageOrTemplateOptions.apply(template); if (credsFromParameters != null) { Builder builder = LoginCredentials.builder(creds); if (credsFromParameters.getUser() != null) builder.user(credsFromParameters.getUser()); if (credsFromParameters.getOptionalPassword().isPresent()) builder.password(credsFromParameters.getOptionalPassword().get()); if (credsFromParameters.getOptionalPrivateKey().isPresent()) builder.privateKey(credsFromParameters.getOptionalPrivateKey().get()); if (credsFromParameters.shouldAuthenticateSudo()) builder.authenticateSudo(true); creds = builder.build(); } return creds; }
public void testWhenCredentialsNotPresentInImageReturnsOneInTemplateOptionsAndNotParameter() { LoginCredentials expected = LoginCredentials.builder().user("ubuntu").password("password").build(); Image image = createMock(Image.class); Template template = createMock(Template.class); expect(template.getImage()).andReturn(image); expect(image.getDefaultCredentials()).andReturn(null); expect(template.getOptions()).andReturn(TemplateOptions.Builder.overrideLoginCredentials(expected)); replay(template, image); assertEquals(fn.apply(template, LoginCredentials.builder().user("foo").password("bar").build()), expected); verify(template); verify(image); }