/* * ==================================================================== * Copyright (c) 2004-2012 TMate Software Ltd. All rights reserved. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms * are also available at http://svnkit.com/license.html * If newer versions of this license are posted there, you may use a * newer version instead, at your option. * ==================================================================== */ package org.tmatesoft.svn.core.auth; import org.tmatesoft.svn.core.SVNURL; import org.tmatesoft.svn.core.internal.util.SVNEncodingUtil; /** * The <b>SVNPasswordAuthentication</b> class represents a simple * user credential pair - a username and password. * * <p> * To obtain a password credential, specify the {@link ISVNAuthenticationManager#PASSWORD PASSWORD} * kind to credentials getter method of <b>ISVNAuthenticationManager</b>: * {@link ISVNAuthenticationManager#getFirstAuthentication(String, String, org.tmatesoft.svn.core.SVNURL) getFirstAuthentication()}, * {@link ISVNAuthenticationManager#getNextAuthentication(String, String, org.tmatesoft.svn.core.SVNURL) getNextAuthentication()}. * * @version 1.3 * @author TMate Software Ltd. * @since 1.2 */ public class SVNPasswordAuthentication extends SVNAuthentication { /** * Creates a password user credential object given a username and password. * * @param userName the name of a user to authenticate * @param password the user's password * @param storageAllowed if <span class="javakeyword">true</span> then * this credential is allowed to be stored in the * global auth cache, otherwise not * @param url url these credentials are applied to * @param isPartial whether this object only contains part of credentials information * * @since 1.8.9 */ public static SVNPasswordAuthentication newInstance(String userName, char[] password, boolean storageAllowed, SVNURL url, boolean isPartial) { return new SVNPasswordAuthentication(userName, password, storageAllowed, url, isPartial); } private char[] myPassword; /** * Creates a password user credential object given a username and password. * * @deprecated use {@link #newInstance(String, char[], boolean, SVNURL, boolean)} * * @param userName the name of a user to authenticate * @param password the user's password * @param storageAllowed if <span class="javakeyword">true</span> then * this credential is allowed to be stored in the * global auth cache, otherwise not */ public SVNPasswordAuthentication(String userName, String password, boolean storageAllowed) { this(userName, password == null ? new char[0] : password.toCharArray(), storageAllowed, null, false); } /** * Creates a password user credential object given a username and password. * * @deprecated use {@link #newInstance(String, char[], boolean, SVNURL, boolean)} * * @param userName the name of a user to authenticate * @param password the user's password * @param storageAllowed if <span class="javakeyword">true</span> then * this credential is allowed to be stored in the * global auth cache, otherwise not * @param url url these credentials are applied to * @since 1.3.1 */ public SVNPasswordAuthentication(String userName, String password, boolean storageAllowed, SVNURL url, boolean isPartial) { this(userName, password == null ? new char[0] : password.toCharArray(), storageAllowed, url, isPartial); } private SVNPasswordAuthentication(String userName, char[] password, boolean storageAllowed, SVNURL url, boolean isPartial) { super(ISVNAuthenticationManager.PASSWORD, userName, storageAllowed, url, isPartial); myPassword = password == null ? new char[0] : password; } /** * Returns password. * * @deprecated Use {@link #getPasswordValue()} method * * @return password */ public String getPassword() { return new String(myPassword); } /** * Returns password. * * @since 1.8.9 * @return password */ public char[] getPasswordValue() { return myPassword; } @Override public void dismissSensitiveData() { super.dismissSensitiveData(); SVNEncodingUtil.clearArray(myPassword); } @Override public SVNAuthentication copy() { return new SVNPasswordAuthentication(getUserName(), copyOf(myPassword), isStorageAllowed(), getURL(), isPartial()); } }