Allow info messages in UsernamePasswordCredentialsProvider

o.e.j.ssh.apache produces passphrase prompts containing
InformationalMessage items to show the fingerprint of the key
the passphrase is being asked for. Allow this so that the credentials
provider can be used with o.e.j.ssh.apache.

Change-Id: Ibc2ffd3a987d3118952726091b9b80442972dfd8
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
This commit is contained in:
Thomas Wolf 2021-03-20 18:54:17 +01:00
parent 1de2a9fbe7
commit 0c91bf4e17
1 changed files with 17 additions and 7 deletions

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2010, Google Inc. and others
* Copyright (C) 2010, 2021 Google Inc. and others
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Distribution License v. 1.0 which is available at
@ -58,14 +58,21 @@ public boolean isInteractive() {
@Override
public boolean supports(CredentialItem... items) {
for (CredentialItem i : items) {
if (i instanceof CredentialItem.Username)
if (i instanceof CredentialItem.InformationalMessage) {
continue;
else if (i instanceof CredentialItem.Password)
}
if (i instanceof CredentialItem.Username) {
continue;
else
return false;
}
if (i instanceof CredentialItem.Password) {
continue;
}
if (i instanceof CredentialItem.StringType) {
if (i.getPromptText().equals("Password: ")) { //$NON-NLS-1$
continue;
}
}
return false;
}
return true;
}
@ -75,6 +82,9 @@ else if (i instanceof CredentialItem.Password)
public boolean get(URIish uri, CredentialItem... items)
throws UnsupportedCredentialItem {
for (CredentialItem i : items) {
if (i instanceof CredentialItem.InformationalMessage) {
continue;
}
if (i instanceof CredentialItem.Username) {
((CredentialItem.Username) i).setValue(username);
continue;