OSDN Git Service

update
[stigmata/stigmata-plugins.git] / wsp / src / main / java / jp / sourceforge / stigmata / birthmarks / wsp / StackPatternBasedBirthmarkService.java
1 package jp.sourceforge.stigmata.birthmarks.wsp;
2
3 /*
4  * $Id$
5  */
6
7 import jp.sourceforge.stigmata.BirthmarkComparator;
8 import jp.sourceforge.stigmata.BirthmarkElement;
9 import jp.sourceforge.stigmata.BirthmarkExtractor;
10 import jp.sourceforge.stigmata.BirthmarkPreprocessor;
11 import jp.sourceforge.stigmata.birthmarks.AbstractBirthmarkService;
12
13 /**
14  * Weighted Stack Pattern based birthmark.
15  *
16  * this birthmark is proposed by LIM et al. in following papers.
17  * <ul>
18  * <li>Hyun-il Lim, Heewan Park, Seokwoo Choi, Taisook Han, ``Detecting Theft
19  * of Java Applications via a Static Birthmark Based on Weighted Stack
20  * Patterns,'' IEICE Transactions on Information and Systems, Vol.E91-D No.9
21  * pp.2323-2332, September 2008.</li>
22  * <li>Heewan Park, Hyun-il Lim, Seokwoo Choi and Taisook Han, ``A Static Java
23  * Birthmark Based on Operand Stack Behaviors,'' In Proc. of 2008 International
24  * Conference on Information Security and Assurance, pp.133-136, April 2008.</li>
25  * </ul>
26  *
27  * @author Haruaki Tamada
28  * @version $Revision$
29  */
30 public class StackPatternBasedBirthmarkService extends AbstractBirthmarkService{
31     private BirthmarkPreprocessor preprocessor = new OpcodeWeightCalculatePreprocessor(this);
32     private BirthmarkExtractor extractor = new StackPatternBasedBirthmarkExtractor(this);
33     private BirthmarkComparator comparator = new StackPatternBasedBirthmarkComparator(this);
34
35     @Override
36     public String getDefaultDescription(){
37         return "Weighted stack pattern based birthmark";
38     }
39
40     @Override
41     public boolean isUserDefined(){
42         return false;
43     }
44
45     @Override
46     public boolean isExperimental(){
47         return true;
48     }
49
50     @Override
51     public String getType(){
52         return "wsp";
53     }
54
55     @Override
56     public BirthmarkComparator getComparator(){
57         return comparator;
58     }
59
60     @Override
61     public BirthmarkExtractor getExtractor(){
62         return extractor;
63     }
64
65     @Override
66     public BirthmarkPreprocessor getPreprocessor(){
67         return preprocessor;
68     }
69
70     @Override
71     public BirthmarkElement buildBirthmarkElement(String value){
72         return new StackPatternBasedBirthmarkElement(value);
73     }
74
75     @Override
76     public String getDisplayType(){
77         return "Weighted Stack Pattern Based Birthmark";
78     }
79 }