home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / java / security / MessageDigest.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  3.6 KB  |  186 lines

  1. package java.security;
  2.  
  3. import java.io.ByteArrayOutputStream;
  4. import java.io.PrintStream;
  5.  
  6. public abstract class MessageDigest extends MessageDigestSpi {
  7.    private String algorithm;
  8.    private static final int INITIAL = 0;
  9.    private static final int IN_PROGRESS = 1;
  10.    private int state = 0;
  11.    private Provider provider;
  12.  
  13.    protected MessageDigest(String var1) {
  14.       this.algorithm = var1;
  15.    }
  16.  
  17.    public static MessageDigest getInstance(String var0) throws NoSuchAlgorithmException {
  18.       try {
  19.          Object[] var1 = Security.getImpl(var0, "MessageDigest", (String)null);
  20.          if (var1[0] instanceof MessageDigest) {
  21.             MessageDigest var4 = (MessageDigest)var1[0];
  22.             var4.provider = (Provider)var1[1];
  23.             return var4;
  24.          } else {
  25.             Delegate var2 = new Delegate((MessageDigestSpi)var1[0], var0);
  26.             var2.provider = (Provider)var1[1];
  27.             return var2;
  28.          }
  29.       } catch (NoSuchProviderException var3) {
  30.          throw new NoSuchAlgorithmException(var0 + " not found");
  31.       }
  32.    }
  33.  
  34.    public static MessageDigest getInstance(String var0, String var1) throws NoSuchAlgorithmException, NoSuchProviderException {
  35.       if (var1 != null && var1.length() != 0) {
  36.          Object[] var2 = Security.getImpl(var0, "MessageDigest", var1);
  37.          if (var2[0] instanceof MessageDigest) {
  38.             MessageDigest var4 = (MessageDigest)var2[0];
  39.             var4.provider = (Provider)var2[1];
  40.             return var4;
  41.          } else {
  42.             Delegate var3 = new Delegate((MessageDigestSpi)var2[0], var0);
  43.             var3.provider = (Provider)var2[1];
  44.             return var3;
  45.          }
  46.       } else {
  47.          throw new IllegalArgumentException("missing provider");
  48.       }
  49.    }
  50.  
  51.    public final Provider getProvider() {
  52.       return this.provider;
  53.    }
  54.  
  55.    public void update(byte var1) {
  56.       ((MessageDigestSpi)this).engineUpdate(var1);
  57.       this.state = 1;
  58.    }
  59.  
  60.    public void update(byte[] var1, int var2, int var3) {
  61.       if (var1 == null) {
  62.          throw new IllegalArgumentException("No input buffer given");
  63.       } else if (var1.length - var2 < var3) {
  64.          throw new IllegalArgumentException("Input buffer too short");
  65.       } else {
  66.          ((MessageDigestSpi)this).engineUpdate(var1, var2, var3);
  67.          this.state = 1;
  68.       }
  69.    }
  70.  
  71.    public void update(byte[] var1) {
  72.       ((MessageDigestSpi)this).engineUpdate(var1, 0, var1.length);
  73.       this.state = 1;
  74.    }
  75.  
  76.    public byte[] digest() {
  77.       byte[] var1 = ((MessageDigestSpi)this).engineDigest();
  78.       this.state = 0;
  79.       return var1;
  80.    }
  81.  
  82.    public int digest(byte[] var1, int var2, int var3) throws DigestException {
  83.       if (var1 == null) {
  84.          throw new IllegalArgumentException("No output buffer given");
  85.       } else if (var1.length - var2 < var3) {
  86.          throw new IllegalArgumentException("Output buffer too small for specified offset and length");
  87.       } else {
  88.          int var4 = ((MessageDigestSpi)this).engineDigest(var1, var2, var3);
  89.          this.state = 0;
  90.          return var4;
  91.       }
  92.    }
  93.  
  94.    public byte[] digest(byte[] var1) {
  95.       this.update(var1);
  96.       return this.digest();
  97.    }
  98.  
  99.    public String toString() {
  100.       ByteArrayOutputStream var1 = new ByteArrayOutputStream();
  101.       PrintStream var2 = new PrintStream(var1);
  102.       var2.print(this.algorithm + " Message Digest from " + this.provider.getName() + ", ");
  103.       switch (this.state) {
  104.          case 0:
  105.             var2.print("<initialized>");
  106.             break;
  107.          case 1:
  108.             var2.print("<in progress>");
  109.       }
  110.  
  111.       var2.println();
  112.       return var1.toString();
  113.    }
  114.  
  115.    public static boolean isEqual(byte[] var0, byte[] var1) {
  116.       if (var0.length != var1.length) {
  117.          return false;
  118.       } else {
  119.          for(int var2 = 0; var2 < var0.length; ++var2) {
  120.             if (var0[var2] != var1[var2]) {
  121.                return false;
  122.             }
  123.          }
  124.  
  125.          return true;
  126.       }
  127.    }
  128.  
  129.    public void reset() {
  130.       ((MessageDigestSpi)this).engineReset();
  131.       this.state = 0;
  132.    }
  133.  
  134.    public final String getAlgorithm() {
  135.       return this.algorithm;
  136.    }
  137.  
  138.    public final int getDigestLength() {
  139.       int var1 = ((MessageDigestSpi)this).engineGetDigestLength();
  140.       if (var1 == 0) {
  141.          try {
  142.             MessageDigest var2 = (MessageDigest)this.clone();
  143.             byte[] var3 = var2.digest();
  144.             return var3.length;
  145.          } catch (CloneNotSupportedException var4) {
  146.             return var1;
  147.          }
  148.       } else {
  149.          return var1;
  150.       }
  151.    }
  152.  
  153.    public Object clone() throws CloneNotSupportedException {
  154.       if (this instanceof Cloneable) {
  155.          return super.clone();
  156.       } else {
  157.          throw new CloneNotSupportedException();
  158.       }
  159.    }
  160.  
  161.    // $FF: synthetic method
  162.    static String access$000(MessageDigest var0) {
  163.       return var0.algorithm;
  164.    }
  165.  
  166.    // $FF: synthetic method
  167.    static Provider access$102(MessageDigest var0, Provider var1) {
  168.       return var0.provider = var1;
  169.    }
  170.  
  171.    // $FF: synthetic method
  172.    static Provider access$100(MessageDigest var0) {
  173.       return var0.provider;
  174.    }
  175.  
  176.    // $FF: synthetic method
  177.    static int access$202(MessageDigest var0, int var1) {
  178.       return var0.state = var1;
  179.    }
  180.  
  181.    // $FF: synthetic method
  182.    static int access$200(MessageDigest var0) {
  183.       return var0.state;
  184.    }
  185. }
  186.