1 /*
2  * Check
3  *
4  * Author: Lasse Collin <lasse.collin@tukaani.org>
5  *
6  * This file has been put into the public domain.
7  * You can do whatever you want with this file.
8  */
9 
10 package org.tukaani.xz.check;
11 
12 import org.tukaani.xz.XZ;
13 import org.tukaani.xz.UnsupportedOptionsException;
14 
15 public abstract class Check {
16     int size;
17     String name;
18 
update(byte[] buf, int off, int len)19     public abstract void update(byte[] buf, int off, int len);
finish()20     public abstract byte[] finish();
21 
update(byte[] buf)22     public void update(byte[] buf) {
23         update(buf, 0, buf.length);
24     }
25 
getSize()26     public int getSize() {
27         return size;
28     }
29 
getName()30     public String getName() {
31         return name;
32     }
33 
getInstance(int checkType)34     public static Check getInstance(int checkType)
35             throws UnsupportedOptionsException {
36         switch (checkType) {
37             case XZ.CHECK_NONE:
38                 return new None();
39 
40             case XZ.CHECK_CRC32:
41                 return new CRC32();
42 
43             case XZ.CHECK_CRC64:
44                 return new CRC64();
45 
46             case XZ.CHECK_SHA256:
47                 try {
48                     return new SHA256();
49                 } catch (java.security.NoSuchAlgorithmException e) {}
50 
51                 break;
52         }
53 
54         throw new UnsupportedOptionsException(
55                 "Unsupported Check ID " + checkType);
56     }
57 }
58