home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 2001 December / dppcpro1201.iso / Extras / maple / Viewer / WebEQ / MMLViewerInstall.cab / MMLViewerApplet.cab / webeq3 / License.class (.txt) < prev    next >
Encoding:
Java Class File  |  2001-05-24  |  4.9 KB  |  292 lines

  1. package webeq3;
  2.  
  3. import java.util.Date;
  4.  
  5. public class License {
  6.    private static int[] signature = new int[]{12, 45, 64, 23, 22, 31, 45, 21};
  7.    private static int IN_COOKIE = 853973;
  8.    private static int OUT_COOKIE = 115572;
  9.    int cookie;
  10.    private boolean goodcookie;
  11.    private String key;
  12.  
  13.    public License(int var1) {
  14.       this.goodcookie = false;
  15.       this.setCookie(var1);
  16.    }
  17.  
  18.    public License(String var1, int var2) {
  19.       this(var2);
  20.       this.key = var1;
  21.    }
  22.  
  23.    public void setCookie(int var1) {
  24.       this.cookie = var1;
  25.       this.goodcookie = var1 == IN_COOKIE;
  26.    }
  27.  
  28.    public int getCookie() {
  29.       return this.cookie;
  30.    }
  31.  
  32.    public void setDSIKey(String var1) {
  33.       if (this.goodcookie) {
  34.          this.key = var1 + "-" + this.getRegNumSuffix(var1);
  35.       }
  36.  
  37.    }
  38.  
  39.    public void setKeyFromDateAndString(String var1, String var2) {
  40.       if (this.goodcookie) {
  41.          Date var3 = stringToDate(var1);
  42.          this.key = this.makeKey(var3, var2);
  43.       }
  44.  
  45.    }
  46.  
  47.    public void setKeyFromDateAndString(Date var1, String var2) {
  48.       if (this.goodcookie) {
  49.          this.key = this.makeKey(var1, var2);
  50.       }
  51.  
  52.    }
  53.  
  54.    public String getKey() {
  55.       return this.goodcookie ? this.key : "";
  56.    }
  57.  
  58.    public boolean keyIsValid() {
  59.       if (this.keyIsEval()) {
  60.          try {
  61.             if (this.key == null) {
  62.                return false;
  63.             } else {
  64.                int var1 = this.key.length();
  65.                if (var1 < 10) {
  66.                   return false;
  67.                } else {
  68.                   int var2;
  69.                   try {
  70.                      var2 = Integer.parseInt(this.key.substring(8, 10));
  71.                   } catch (NumberFormatException var6) {
  72.                      return false;
  73.                   }
  74.  
  75.                   if (var1 < 10 + var2) {
  76.                      return false;
  77.                   } else {
  78.                      String var3 = this.key.substring(0, 10 + var2);
  79.                      String var4 = var3 + this.encode(var3);
  80.                      this.setCookie(OUT_COOKIE);
  81.                      boolean var5 = this.key.equals(var4);
  82.                      return var5;
  83.                   }
  84.                }
  85.             }
  86.          } catch (Exception var7) {
  87.             ((Throwable)var7).printStackTrace();
  88.             return false;
  89.          }
  90.       } else {
  91.          this.setCookie(OUT_COOKIE);
  92.          return this.key.length() == 12 && this.key.substring(0, 3).equals("625") && this.isNumeric(this.key.substring(0, 8)) && this.isNumeric(this.key.substring(9, 12)) && this.key.charAt(8) == '-' && this.getRegNumSuffix(this.key.substring(0, 8)).equals(this.key.substring(9, 12));
  93.       }
  94.    }
  95.  
  96.    public boolean keyIsEval() {
  97.       try {
  98.          if (this.key == null) {
  99.             return false;
  100.          } else {
  101.             int var1 = this.key.length();
  102.             if (var1 < 10) {
  103.                return false;
  104.             } else {
  105.                int var2;
  106.                try {
  107.                   var2 = Integer.parseInt(this.key.substring(8, 10));
  108.                } catch (NumberFormatException var5) {
  109.                   return false;
  110.                }
  111.  
  112.                if (var2 >= 0 && var1 >= 10 + var2) {
  113.                   String var3 = this.key.substring(10, 10 + var2);
  114.                   this.setCookie(OUT_COOKIE);
  115.                   boolean var4 = var3.equals("DSEval");
  116.                   return var4;
  117.                } else {
  118.                   return false;
  119.                }
  120.             }
  121.          }
  122.       } catch (Exception var6) {
  123.          ((Throwable)var6).printStackTrace();
  124.          return false;
  125.       }
  126.    }
  127.  
  128.    public boolean keyIsCurrent() {
  129.       if (!this.keyIsEval()) {
  130.          return true;
  131.       } else {
  132.          try {
  133.             if (this.key == null) {
  134.                return false;
  135.             } else {
  136.                Date var1 = stringToDate(this.key);
  137.                var1.setDate(var1.getDate() + 1);
  138.                Date var2 = new Date();
  139.                this.setCookie(OUT_COOKIE);
  140.                return var2.before(var1);
  141.             }
  142.          } catch (Exception var3) {
  143.             return false;
  144.          }
  145.       }
  146.    }
  147.  
  148.    public int[] getSignature() {
  149.       return this.goodcookie ? signature : null;
  150.    }
  151.  
  152.    private static Date stringToDate(String var0) {
  153.       int var1 = Integer.parseInt(var0.substring(0, 4)) - 1900;
  154.       int var2 = Integer.parseInt(var0.substring(4, 6)) - 1;
  155.       int var3 = Integer.parseInt(var0.substring(6, 8));
  156.       String var4 = System.getProperty("os.name");
  157.       if (var4.equals("Mac OS")) {
  158.          --var3;
  159.       }
  160.  
  161.       return new Date(var1, var2, var3);
  162.    }
  163.  
  164.    private String encode(String var1) {
  165.       char[] var3 = var1.toCharArray();
  166.       int var4 = var3.length / 2 + var3.length % 2;
  167.       char[] var5 = new char[var4];
  168.  
  169.       for(int var2 = 0; var2 < var4; ++var2) {
  170.          var5[var2] = var3[var2];
  171.          if (var2 + var4 < var3.length) {
  172.             var5[var2] += var3[var3.length - 1 - var2];
  173.          }
  174.       }
  175.  
  176.       for(int var14 = 0; var14 < var5.length; ++var14) {
  177.          var5[var14] = (char)(var5[var14] + signature[var14 % signature.length]);
  178.       }
  179.  
  180.       byte var6 = 3;
  181.       int var7 = var5.length / var6;
  182.       int var8 = var5.length % var6;
  183.       int var9 = var7 + (var8 == 0 ? 0 : 1);
  184.       int[] var10 = new int[var9];
  185.  
  186.       for(int var15 = 0; var15 < var9; ++var15) {
  187.          var10[var15] = 0;
  188.  
  189.          for(int var11 = 0; var11 < var6; ++var11) {
  190.             if (var15 * var6 + var11 < var5.length) {
  191.                var10[var15] += var5[var15 * var6 + var11];
  192.             }
  193.          }
  194.       }
  195.  
  196.       String var12 = "";
  197.  
  198.       for(int var16 = 0; var16 < var9; ++var16) {
  199.          String var13 = toHexString(var10[var16]);
  200.          var12 = var12 + var13;
  201.       }
  202.  
  203.       return var12;
  204.    }
  205.  
  206.    private String intString(int var1, int var2) {
  207.       boolean var3 = var1 < 0;
  208.       if (var3) {
  209.          var1 = -var1;
  210.       }
  211.  
  212.       String var4 = Integer.toString(var1);
  213.       int var5 = var2 - var4.length();
  214.       if (var3) {
  215.          --var5;
  216.       }
  217.  
  218.       for(int var6 = 0; var6 < var5; ++var6) {
  219.          var4 = "0" + var4;
  220.       }
  221.  
  222.       if (var3) {
  223.          var4 = "-" + var4;
  224.       }
  225.  
  226.       return var4;
  227.    }
  228.  
  229.    private String dateString(Date var1) {
  230.       int var2 = var1.getYear() + 1900;
  231.       int var3 = var1.getMonth() + 1;
  232.       int var4 = var1.getDate();
  233.       return this.intString(var2, 4) + this.intString(var3, 2) + this.intString(var4, 2);
  234.    }
  235.  
  236.    private String makeKey(Date var1, String var2) {
  237.       String var3 = this.dateString(var1);
  238.       if (var2.length() > 99) {
  239.          var2 = var2.substring(0, 99);
  240.       }
  241.  
  242.       var3 = var3 + this.intString(var2.length(), 2);
  243.       var3 = var3 + var2;
  244.       String var4 = this.encode(var3);
  245.       var3 = var3 + var4;
  246.       return var3;
  247.    }
  248.  
  249.    private static String toHexString(int var0) {
  250.       String[] var1 = new String[]{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};
  251.       String var2 = "";
  252.       int var3 = 16;
  253.       int var4 = 1;
  254.       int var5 = 0;
  255.       if (var0 == 0) {
  256.          var2 = "0";
  257.       } else {
  258.          while(var0 > 0) {
  259.             var5 = var0 % var3 / var4;
  260.             var2 = var1[var5] + var2;
  261.             var0 -= var5 * var4;
  262.             var4 = var3;
  263.             var3 *= 16;
  264.          }
  265.       }
  266.  
  267.       return var2;
  268.    }
  269.  
  270.    private String getRegNumSuffix(String var1) {
  271.       long var2;
  272.       try {
  273.          var2 = Long.parseLong(var1);
  274.       } catch (NumberFormatException var5) {
  275.          return "0";
  276.       }
  277.  
  278.       var2 = (var2 % 137L + 1L) * (var2 % 97L + 1L) * 101L;
  279.       var2 = var2 % 899L + 101L;
  280.       return (new Long(var2)).toString();
  281.    }
  282.  
  283.    private boolean isNumeric(String var1) {
  284.       try {
  285.          Integer.parseInt(var1);
  286.          return true;
  287.       } catch (NumberFormatException var3) {
  288.          return false;
  289.       }
  290.    }
  291. }
  292.