]> source.dussan.org Git - jgit.git/commitdiff
Allow info messages in UsernamePasswordCredentialsProvider 43/178743/1
authorThomas Wolf <thomas.wolf@paranor.ch>
Sat, 20 Mar 2021 17:54:17 +0000 (18:54 +0100)
committerThomas Wolf <thomas.wolf@paranor.ch>
Thu, 1 Apr 2021 17:01:24 +0000 (19:01 +0200)
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>
org.eclipse.jgit/src/org/eclipse/jgit/transport/UsernamePasswordCredentialsProvider.java

index 979961f2ae55ddf9a0e53226bd7b273e93403803..c0de42cb57845153f3e247f9e7fff925b88a4a67 100644 (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 class UsernamePasswordCredentialsProvider extends CredentialsProvider {
        @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 @@ public class UsernamePasswordCredentialsProvider extends CredentialsProvider {
        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;