FileDocCategorySizeDatePackage
EasyDigestOutputStream.javaAPI DocExample1230Sun Mar 28 19:07:38 BST 1999com.macfaq.security

EasyDigestOutputStream.java

package com.macfaq.security;

import java.io.*;
import java.security.*;

public class EasyDigestOutputStream extends FilterOutputStream {

  private boolean on = true;
  private boolean closed = false;
  protected byte[] result = null;
  protected MessageDigest digest;

  public EasyDigestOutputStream(OutputStream out, String algorithm)
   throws NoSuchAlgorithmException {
    super(out);
    digest = MessageDigest.getInstance(algorithm);
  }

  public EasyDigestOutputStream(OutputStream out, String algorithm, String provider)
   throws NoSuchAlgorithmException, NoSuchProviderException {
    super(out);
    digest = MessageDigest.getInstance(algorithm, provider);
  }

  public void write(int b) throws IOException {
    if (on) digest.update((byte)b);
    out.write(b);
  }

  public void write(byte[] data, int offset, int length) throws IOException {
    if (on) digest.update(data, offset, length);
    out.write(data, offset, length);
  }

  public void on(boolean on) {
    this.on = on;
  }
  
  public void close() throws IOException {
    out.close();
    result = digest.digest();
    closed = true;
  }
  
  public byte[] getDigest() {
    return result;
  }

}