/* * 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 * https://www.eclipse.org/org/documents/edl-v10.php. * * SPDX-License-Identifier: BSD-3-Clause */ package org.eclipse.jgit.transport; import java.util.Arrays; import org.eclipse.jgit.errors.UnsupportedCredentialItem; /** * Simple {@link org.eclipse.jgit.transport.CredentialsProvider} that always * uses the same information. */ public class UsernamePasswordCredentialsProvider extends CredentialsProvider { private String username; private char[] password; /** * Initialize the provider with a single username and password. * * @param username * user name * @param password * password */ public UsernamePasswordCredentialsProvider(String username, String password) { this(username, password.toCharArray()); } /** * Initialize the provider with a single username and password. * * @param username * user name * @param password * password */ public UsernamePasswordCredentialsProvider(String username, char[] password) { this.username = username; this.password = password; } @Override public boolean isInteractive() { return false; } @Override public boolean supports(CredentialItem... items) { for (CredentialItem i : items) { if (i instanceof CredentialItem.InformationalMessage) { continue; } if (i instanceof CredentialItem.Username) { continue; } if (i instanceof CredentialItem.Password) { continue; } if (i instanceof CredentialItem.StringType) { if (i.getPromptText().equals("Password: ")) { //$NON-NLS-1$ continue; } } return false; } return true; } @Override 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; } if (i instanceof CredentialItem.Password) { ((CredentialItem.Password) i).setValue(password); continue; } if (i instanceof CredentialItem.StringType) { if (i.getPromptText().equals("Password: ")) { //$NON-NLS-1$ ((CredentialItem.StringType) i).setValue(new String( password)); continue; } } throw new UnsupportedCredentialItem(uri, i.getClass().getName() + ":" + i.getPromptText()); //$NON-NLS-1$ } return true; } /** * Destroy the saved username and password.. */ public void clear() { username = null; if (password != null) { Arrays.fill(password, (char) 0); password = null; } } }