home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / rt.jar / java / security / MessageDigest.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-23  |  3.0 KB  |  134 lines

  1. package java.security;
  2.  
  3. import java.io.ByteArrayOutputStream;
  4. import java.io.PrintStream;
  5.  
  6. public abstract class MessageDigest {
  7.    private static boolean debug;
  8.    private byte[] digestBits;
  9.    private String algorithm;
  10.  
  11.    protected MessageDigest(String var1) {
  12.       this.algorithm = var1;
  13.    }
  14.  
  15.    public static MessageDigest getInstance(String var0) throws NoSuchAlgorithmException {
  16.       try {
  17.          return (MessageDigest)Security.getImpl(var0, "MessageDigest", (String)null);
  18.       } catch (NoSuchProviderException var1) {
  19.          throw new InternalError("please send a bug report via " + System.getProperty("java.vendor.url.bug"));
  20.       }
  21.    }
  22.  
  23.    public static MessageDigest getInstance(String var0, String var1) throws NoSuchAlgorithmException, NoSuchProviderException {
  24.       return (MessageDigest)Security.getImpl(var0, "MessageDigest", var1);
  25.    }
  26.  
  27.    public void update(byte var1) {
  28.       this.engineUpdate(var1);
  29.    }
  30.  
  31.    public void update(byte[] var1, int var2, int var3) {
  32.       this.engineUpdate(var1, var2, var3);
  33.    }
  34.  
  35.    public void update(byte[] var1) {
  36.       this.engineUpdate(var1, 0, var1.length);
  37.    }
  38.  
  39.    public byte[] digest() {
  40.       this.digestBits = this.engineDigest();
  41.       return this.digestBits;
  42.    }
  43.  
  44.    public byte[] digest(byte[] var1) {
  45.       this.update(var1);
  46.       return this.digest();
  47.    }
  48.  
  49.    private static void hexDigit(PrintStream var0, byte var1) {
  50.       char var2 = (char)(var1 >> 4 & 15);
  51.       if (var2 > '\t') {
  52.          var2 = (char)(var2 - 10 + 97);
  53.       } else {
  54.          var2 = (char)(var2 + 48);
  55.       }
  56.  
  57.       var0.write(var2);
  58.       var2 = (char)(var1 & 15);
  59.       if (var2 > '\t') {
  60.          var2 = (char)(var2 - 10 + 97);
  61.       } else {
  62.          var2 = (char)(var2 + 48);
  63.       }
  64.  
  65.       var0.write(var2);
  66.    }
  67.  
  68.    public String toString() {
  69.       ByteArrayOutputStream var1 = new ByteArrayOutputStream();
  70.       PrintStream var2 = new PrintStream(var1);
  71.       var2.print(this.getClass().getName() + " Message Digest ");
  72.       if (this.digestBits != null) {
  73.          var2.print("<");
  74.  
  75.          for(int var3 = 0; var3 < this.digestBits.length; ++var3) {
  76.             hexDigit(var2, this.digestBits[var3]);
  77.          }
  78.  
  79.          var2.print(">");
  80.       } else {
  81.          var2.print("<incomplete>");
  82.       }
  83.  
  84.       var2.println();
  85.       return var1.toString();
  86.    }
  87.  
  88.    public static boolean isEqual(byte[] var0, byte[] var1) {
  89.       if (var0.length != var1.length) {
  90.          return false;
  91.       } else {
  92.          for(int var2 = 0; var2 < var0.length; ++var2) {
  93.             if (var0[var2] != var1[var2]) {
  94.                return false;
  95.             }
  96.          }
  97.  
  98.          return true;
  99.       }
  100.    }
  101.  
  102.    public void reset() {
  103.       this.engineReset();
  104.       this.digestBits = null;
  105.    }
  106.  
  107.    public final String getAlgorithm() {
  108.       return this.algorithm;
  109.    }
  110.  
  111.    protected abstract void engineUpdate(byte var1);
  112.  
  113.    protected abstract void engineUpdate(byte[] var1, int var2, int var3);
  114.  
  115.    protected abstract byte[] engineDigest();
  116.  
  117.    protected abstract void engineReset();
  118.  
  119.    public Object clone() throws CloneNotSupportedException {
  120.       if (this instanceof Cloneable) {
  121.          return super.clone();
  122.       } else {
  123.          throw new CloneNotSupportedException();
  124.       }
  125.    }
  126.  
  127.    private void debug(String var1) {
  128.       if (debug) {
  129.          System.err.println(var1);
  130.       }
  131.  
  132.    }
  133. }
  134.