/*
* ====================================================================
* 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.internal.io.dav.http;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import org.tmatesoft.svn.core.auth.SVNPasswordAuthentication;
import org.tmatesoft.svn.core.internal.util.SVNBase64;
import org.tmatesoft.svn.core.internal.util.SVNEncodingUtil;
/**
* @version 1.3
* @author TMate Software Ltd.
*/
class HTTPBasicAuthentication extends HTTPAuthentication {
private String myCharset;
public HTTPBasicAuthentication (SVNPasswordAuthentication credentials, String charset) {
super(credentials);
myCharset = charset;
}
protected HTTPBasicAuthentication (String name, char[] password, String charset) {
super(name, password);
myCharset = charset;
}
protected HTTPBasicAuthentication (String charset) {
myCharset = charset;
}
public String authenticate() {
if (getUserName() == null || getPassword() == null) {
return null;
}
StringBuffer result = new StringBuffer();
final ByteArrayStream bos = new ByteArrayStream();
try {
bos.write(SVNEncodingUtil.getBytes(getUserName().toCharArray(), myCharset));
bos.write(SVNEncodingUtil.getBytes(new char[] {':'}, myCharset));
bos.write(SVNEncodingUtil.getBytes(getPassword(), myCharset));
} catch (IOException e) {
//
}
result.append("Basic ");
byte[] bytes = bos.toByteArray();
try {
result.append(SVNBase64.byteArrayToBase64(bos.toByteArray()));
} finally {
SVNEncodingUtil.clearArray(bos.getBuffer());
SVNEncodingUtil.clearArray(bytes);
}
return result.toString();
}
public String getAuthenticationScheme(){
return "Basic";
}
private static class ByteArrayStream extends ByteArrayOutputStream {
public byte[] getBuffer() {
return buf;
}
}
}