/*
* ====================================================================
* 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.wc.admin;
import java.io.IOException;
import java.io.InputStream;
import java.security.DigestInputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.tmatesoft.svn.core.internal.wc.SVNFileUtil;
/**
* @version 1.3
* @author TMate Software Ltd.
*/
public class SVNChecksumInputStream extends DigestInputStream {
public static final String MD5_ALGORITHM = "MD5";
private byte[] ourDirtyBuffer = new byte[4096*4];
public SVNChecksumInputStream(InputStream source, String algorithm) {
super(source, null);
algorithm = algorithm == null ? MD5_ALGORITHM : algorithm;
try {
setMessageDigest(MessageDigest.getInstance(algorithm));
} catch (NoSuchAlgorithmException e) {
}
on(getMessageDigest() != null);
}
public void close() throws IOException {
int r = 0;
do {
r = read(ourDirtyBuffer);
} while(r >= 0);
super.close();
}
public String getDigest() {
return getMessageDigest() != null ? SVNFileUtil.toHexDigest(getMessageDigest().digest()) : null;
}
}