593 lines
17 KiB
Java
593 lines
17 KiB
Java
/*
|
|
* Decompiled with CFR 0.152.
|
|
*
|
|
* Could not load the following classes:
|
|
* javax.baja.nre.util.TextUtil
|
|
* javax.baja.xml.XContent
|
|
* javax.baja.xml.XElem
|
|
* javax.baja.xml.XText
|
|
*/
|
|
package com.tridium.sys.license;
|
|
|
|
import java.io.ByteArrayOutputStream;
|
|
import java.io.IOException;
|
|
import java.io.OutputStream;
|
|
import java.security.KeyFactory;
|
|
import java.security.PublicKey;
|
|
import java.security.Signature;
|
|
import java.security.spec.X509EncodedKeySpec;
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.ArrayList;
|
|
import java.util.Date;
|
|
import java.util.GregorianCalendar;
|
|
import java.util.StringTokenizer;
|
|
import javax.baja.license.LicenseException;
|
|
import javax.baja.nre.util.TextUtil;
|
|
import javax.baja.xml.XContent;
|
|
import javax.baja.xml.XElem;
|
|
import javax.baja.xml.XText;
|
|
|
|
public class LicenseUtil {
|
|
private static PublicKey masterPublicKey;
|
|
private static byte[] masterPublicKeyData;
|
|
|
|
public static String toKey(String string, String string2) {
|
|
StringBuffer stringBuffer = new StringBuffer();
|
|
stringBuffer.append(TextUtil.toLowerCase((String)string)).append(':').append(TextUtil.toLowerCase((String)string2));
|
|
return stringBuffer.toString();
|
|
}
|
|
|
|
public static String[] parseList(String string) throws LicenseException {
|
|
ArrayList<String> arrayList = new ArrayList<String>();
|
|
StringTokenizer stringTokenizer = new StringTokenizer(string, ";");
|
|
while (stringTokenizer.hasMoreTokens()) {
|
|
arrayList.add(stringTokenizer.nextToken().trim());
|
|
}
|
|
return arrayList.toArray(new String[arrayList.size()]);
|
|
}
|
|
|
|
public static String formatDate(long l) {
|
|
if (l == Long.MAX_VALUE) {
|
|
return "never";
|
|
}
|
|
return new SimpleDateFormat("yyyy-MM-dd").format(new Date(l));
|
|
}
|
|
|
|
public static long parseDate(String string) throws LicenseException {
|
|
if (string.equalsIgnoreCase("never")) {
|
|
return Long.MAX_VALUE;
|
|
}
|
|
try {
|
|
StringTokenizer stringTokenizer = new StringTokenizer(string, "- ");
|
|
int n = Integer.parseInt(stringTokenizer.nextToken()) - 1900;
|
|
int n2 = Integer.parseInt(stringTokenizer.nextToken()) - 1;
|
|
int n3 = Integer.parseInt(stringTokenizer.nextToken());
|
|
Date date = new GregorianCalendar(n + 1900, n2, n3, 23, 59).getTime();
|
|
return date.getTime();
|
|
}
|
|
catch (Exception exception) {
|
|
throw new LicenseException("Invalid expiration format YYYY-MM-DD: " + string);
|
|
}
|
|
}
|
|
|
|
public static byte[] encode(XElem xElem) {
|
|
try {
|
|
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
|
|
LicenseUtil.encode((OutputStream)byteArrayOutputStream, xElem);
|
|
byteArrayOutputStream.flush();
|
|
return byteArrayOutputStream.toByteArray();
|
|
}
|
|
catch (Exception exception) {
|
|
throw new IllegalStateException();
|
|
}
|
|
}
|
|
|
|
private static final void encode(OutputStream outputStream, XElem xElem) throws IOException {
|
|
LicenseUtil.encode(outputStream, "<");
|
|
LicenseUtil.encode(outputStream, xElem.qname());
|
|
int n = 0;
|
|
while (n < xElem.attrSize()) {
|
|
LicenseUtil.encode(outputStream, " ");
|
|
LicenseUtil.encode(outputStream, xElem.attrName(n));
|
|
LicenseUtil.encode(outputStream, "=\"");
|
|
LicenseUtil.encode(outputStream, xElem.attrValue(n));
|
|
LicenseUtil.encode(outputStream, "\"");
|
|
++n;
|
|
}
|
|
LicenseUtil.encode(outputStream, ">\n");
|
|
n = 0;
|
|
while (n < xElem.contentSize()) {
|
|
XContent xContent = xElem.content(n);
|
|
if (xContent instanceof XElem) {
|
|
LicenseUtil.encode(outputStream, (XElem)xContent);
|
|
} else {
|
|
LicenseUtil.encode(outputStream, ((XText)xContent).string());
|
|
LicenseUtil.encode(outputStream, "\n");
|
|
}
|
|
++n;
|
|
}
|
|
LicenseUtil.encode(outputStream, "</");
|
|
LicenseUtil.encode(outputStream, xElem.qname());
|
|
LicenseUtil.encode(outputStream, ">\n");
|
|
}
|
|
|
|
private static final void encode(OutputStream outputStream, String string) throws IOException {
|
|
int n = 0;
|
|
while (n < string.length()) {
|
|
outputStream.write(string.charAt(n));
|
|
++n;
|
|
}
|
|
}
|
|
|
|
public static boolean verify(byte[] byArray, byte[] byArray2, byte[] byArray3) throws Exception {
|
|
X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(byArray3);
|
|
KeyFactory keyFactory = KeyFactory.getInstance("DSA");
|
|
PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec);
|
|
return LicenseUtil.verify(byArray, byArray2, publicKey);
|
|
}
|
|
|
|
public static boolean verify(byte[] byArray, byte[] byArray2, PublicKey publicKey) throws Exception {
|
|
Signature signature = Signature.getInstance("DSA");
|
|
signature.initVerify(publicKey);
|
|
signature.update(byArray);
|
|
return signature.verify(byArray2);
|
|
}
|
|
|
|
static PublicKey toPublicKey(byte[] byArray) throws Exception {
|
|
X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(byArray);
|
|
KeyFactory keyFactory = KeyFactory.getInstance("DSA");
|
|
return keyFactory.generatePublic(x509EncodedKeySpec);
|
|
}
|
|
|
|
static PublicKey getMasterPublicKey() throws Exception {
|
|
if (masterPublicKey == null) {
|
|
masterPublicKey = LicenseUtil.toPublicKey(masterPublicKeyData);
|
|
}
|
|
return masterPublicKey;
|
|
}
|
|
|
|
static {
|
|
byte[] byArray = new byte[444];
|
|
byArray[0] = 48;
|
|
byArray[1] = -126;
|
|
byArray[2] = 1;
|
|
byArray[3] = -72;
|
|
byArray[4] = 48;
|
|
byArray[5] = -126;
|
|
byArray[6] = 1;
|
|
byArray[7] = 44;
|
|
byArray[8] = 6;
|
|
byArray[9] = 7;
|
|
byArray[10] = 42;
|
|
byArray[11] = -122;
|
|
byArray[12] = 72;
|
|
byArray[13] = -50;
|
|
byArray[14] = 56;
|
|
byArray[15] = 4;
|
|
byArray[16] = 1;
|
|
byArray[17] = 48;
|
|
byArray[18] = -126;
|
|
byArray[19] = 1;
|
|
byArray[20] = 31;
|
|
byArray[21] = 2;
|
|
byArray[22] = -127;
|
|
byArray[23] = -127;
|
|
byArray[25] = -3;
|
|
byArray[26] = 127;
|
|
byArray[27] = 83;
|
|
byArray[28] = -127;
|
|
byArray[29] = 29;
|
|
byArray[30] = 117;
|
|
byArray[31] = 18;
|
|
byArray[32] = 41;
|
|
byArray[33] = 82;
|
|
byArray[34] = -33;
|
|
byArray[35] = 74;
|
|
byArray[36] = -100;
|
|
byArray[37] = 46;
|
|
byArray[38] = -20;
|
|
byArray[39] = -28;
|
|
byArray[40] = -25;
|
|
byArray[41] = -10;
|
|
byArray[42] = 17;
|
|
byArray[43] = -73;
|
|
byArray[44] = 82;
|
|
byArray[45] = 60;
|
|
byArray[46] = -17;
|
|
byArray[47] = 68;
|
|
byArray[49] = -61;
|
|
byArray[50] = 30;
|
|
byArray[51] = 63;
|
|
byArray[52] = -128;
|
|
byArray[53] = -74;
|
|
byArray[54] = 81;
|
|
byArray[55] = 38;
|
|
byArray[56] = 105;
|
|
byArray[57] = 69;
|
|
byArray[58] = 93;
|
|
byArray[59] = 64;
|
|
byArray[60] = 34;
|
|
byArray[61] = 81;
|
|
byArray[62] = -5;
|
|
byArray[63] = 89;
|
|
byArray[64] = 61;
|
|
byArray[65] = -115;
|
|
byArray[66] = 88;
|
|
byArray[67] = -6;
|
|
byArray[68] = -65;
|
|
byArray[69] = -59;
|
|
byArray[70] = -11;
|
|
byArray[71] = -70;
|
|
byArray[72] = 48;
|
|
byArray[73] = -10;
|
|
byArray[74] = -53;
|
|
byArray[75] = -101;
|
|
byArray[76] = 85;
|
|
byArray[77] = 108;
|
|
byArray[78] = -41;
|
|
byArray[79] = -127;
|
|
byArray[80] = 59;
|
|
byArray[81] = -128;
|
|
byArray[82] = 29;
|
|
byArray[83] = 52;
|
|
byArray[84] = 111;
|
|
byArray[85] = -14;
|
|
byArray[86] = 102;
|
|
byArray[87] = 96;
|
|
byArray[88] = -73;
|
|
byArray[89] = 107;
|
|
byArray[90] = -103;
|
|
byArray[91] = 80;
|
|
byArray[92] = -91;
|
|
byArray[93] = -92;
|
|
byArray[94] = -97;
|
|
byArray[95] = -97;
|
|
byArray[96] = -24;
|
|
byArray[97] = 4;
|
|
byArray[98] = 123;
|
|
byArray[99] = 16;
|
|
byArray[100] = 34;
|
|
byArray[101] = -62;
|
|
byArray[102] = 79;
|
|
byArray[103] = -69;
|
|
byArray[104] = -87;
|
|
byArray[105] = -41;
|
|
byArray[106] = -2;
|
|
byArray[107] = -73;
|
|
byArray[108] = -58;
|
|
byArray[109] = 27;
|
|
byArray[110] = -8;
|
|
byArray[111] = 59;
|
|
byArray[112] = 87;
|
|
byArray[113] = -25;
|
|
byArray[114] = -58;
|
|
byArray[115] = -88;
|
|
byArray[116] = -90;
|
|
byArray[117] = 21;
|
|
byArray[118] = 15;
|
|
byArray[119] = 4;
|
|
byArray[120] = -5;
|
|
byArray[121] = -125;
|
|
byArray[122] = -10;
|
|
byArray[123] = -45;
|
|
byArray[124] = -59;
|
|
byArray[125] = 30;
|
|
byArray[126] = -61;
|
|
byArray[127] = 2;
|
|
byArray[128] = 53;
|
|
byArray[129] = 84;
|
|
byArray[130] = 19;
|
|
byArray[131] = 90;
|
|
byArray[132] = 22;
|
|
byArray[133] = -111;
|
|
byArray[134] = 50;
|
|
byArray[135] = -10;
|
|
byArray[136] = 117;
|
|
byArray[137] = -13;
|
|
byArray[138] = -82;
|
|
byArray[139] = 43;
|
|
byArray[140] = 97;
|
|
byArray[141] = -41;
|
|
byArray[142] = 42;
|
|
byArray[143] = -17;
|
|
byArray[144] = -14;
|
|
byArray[145] = 34;
|
|
byArray[146] = 3;
|
|
byArray[147] = 25;
|
|
byArray[148] = -99;
|
|
byArray[149] = -47;
|
|
byArray[150] = 72;
|
|
byArray[151] = 1;
|
|
byArray[152] = -57;
|
|
byArray[153] = 2;
|
|
byArray[154] = 21;
|
|
byArray[156] = -105;
|
|
byArray[157] = 96;
|
|
byArray[158] = 80;
|
|
byArray[159] = -113;
|
|
byArray[160] = 21;
|
|
byArray[161] = 35;
|
|
byArray[162] = 11;
|
|
byArray[163] = -52;
|
|
byArray[164] = -78;
|
|
byArray[165] = -110;
|
|
byArray[166] = -71;
|
|
byArray[167] = -126;
|
|
byArray[168] = -94;
|
|
byArray[169] = -21;
|
|
byArray[170] = -124;
|
|
byArray[171] = 11;
|
|
byArray[172] = -16;
|
|
byArray[173] = 88;
|
|
byArray[174] = 28;
|
|
byArray[175] = -11;
|
|
byArray[176] = 2;
|
|
byArray[177] = -127;
|
|
byArray[178] = -127;
|
|
byArray[180] = -9;
|
|
byArray[181] = -31;
|
|
byArray[182] = -96;
|
|
byArray[183] = -123;
|
|
byArray[184] = -42;
|
|
byArray[185] = -101;
|
|
byArray[186] = 61;
|
|
byArray[187] = -34;
|
|
byArray[188] = -53;
|
|
byArray[189] = -68;
|
|
byArray[190] = -85;
|
|
byArray[191] = 92;
|
|
byArray[192] = 54;
|
|
byArray[193] = -72;
|
|
byArray[194] = 87;
|
|
byArray[195] = -71;
|
|
byArray[196] = 121;
|
|
byArray[197] = -108;
|
|
byArray[198] = -81;
|
|
byArray[199] = -69;
|
|
byArray[200] = -6;
|
|
byArray[201] = 58;
|
|
byArray[202] = -22;
|
|
byArray[203] = -126;
|
|
byArray[204] = -7;
|
|
byArray[205] = 87;
|
|
byArray[206] = 76;
|
|
byArray[207] = 11;
|
|
byArray[208] = 61;
|
|
byArray[209] = 7;
|
|
byArray[210] = -126;
|
|
byArray[211] = 103;
|
|
byArray[212] = 81;
|
|
byArray[213] = 89;
|
|
byArray[214] = 87;
|
|
byArray[215] = -114;
|
|
byArray[216] = -70;
|
|
byArray[217] = -44;
|
|
byArray[218] = 89;
|
|
byArray[219] = 79;
|
|
byArray[220] = -26;
|
|
byArray[221] = 113;
|
|
byArray[222] = 7;
|
|
byArray[223] = 16;
|
|
byArray[224] = -127;
|
|
byArray[225] = -128;
|
|
byArray[226] = -76;
|
|
byArray[227] = 73;
|
|
byArray[228] = 22;
|
|
byArray[229] = 113;
|
|
byArray[230] = 35;
|
|
byArray[231] = -24;
|
|
byArray[232] = 76;
|
|
byArray[233] = 40;
|
|
byArray[234] = 22;
|
|
byArray[235] = 19;
|
|
byArray[236] = -73;
|
|
byArray[237] = -49;
|
|
byArray[238] = 9;
|
|
byArray[239] = 50;
|
|
byArray[240] = -116;
|
|
byArray[241] = -56;
|
|
byArray[242] = -90;
|
|
byArray[243] = -31;
|
|
byArray[244] = 60;
|
|
byArray[245] = 22;
|
|
byArray[246] = 122;
|
|
byArray[247] = -117;
|
|
byArray[248] = 84;
|
|
byArray[249] = 124;
|
|
byArray[250] = -115;
|
|
byArray[251] = 40;
|
|
byArray[252] = -32;
|
|
byArray[253] = -93;
|
|
byArray[254] = -82;
|
|
byArray[255] = 30;
|
|
byArray[256] = 43;
|
|
byArray[257] = -77;
|
|
byArray[258] = -90;
|
|
byArray[259] = 117;
|
|
byArray[260] = -111;
|
|
byArray[261] = 110;
|
|
byArray[262] = -93;
|
|
byArray[263] = 127;
|
|
byArray[264] = 11;
|
|
byArray[265] = -6;
|
|
byArray[266] = 33;
|
|
byArray[267] = 53;
|
|
byArray[268] = 98;
|
|
byArray[269] = -15;
|
|
byArray[270] = -5;
|
|
byArray[271] = 98;
|
|
byArray[272] = 122;
|
|
byArray[273] = 1;
|
|
byArray[274] = 36;
|
|
byArray[275] = 59;
|
|
byArray[276] = -52;
|
|
byArray[277] = -92;
|
|
byArray[278] = -15;
|
|
byArray[279] = -66;
|
|
byArray[280] = -88;
|
|
byArray[281] = 81;
|
|
byArray[282] = -112;
|
|
byArray[283] = -119;
|
|
byArray[284] = -88;
|
|
byArray[285] = -125;
|
|
byArray[286] = -33;
|
|
byArray[287] = -31;
|
|
byArray[288] = 90;
|
|
byArray[289] = -27;
|
|
byArray[290] = -97;
|
|
byArray[291] = 6;
|
|
byArray[292] = -110;
|
|
byArray[293] = -117;
|
|
byArray[294] = 102;
|
|
byArray[295] = 94;
|
|
byArray[296] = -128;
|
|
byArray[297] = 123;
|
|
byArray[298] = 85;
|
|
byArray[299] = 37;
|
|
byArray[300] = 100;
|
|
byArray[301] = 1;
|
|
byArray[302] = 76;
|
|
byArray[303] = 59;
|
|
byArray[304] = -2;
|
|
byArray[305] = -49;
|
|
byArray[306] = 73;
|
|
byArray[307] = 42;
|
|
byArray[308] = 3;
|
|
byArray[309] = -127;
|
|
byArray[310] = -123;
|
|
byArray[312] = 2;
|
|
byArray[313] = -127;
|
|
byArray[314] = -127;
|
|
byArray[316] = -117;
|
|
byArray[317] = -24;
|
|
byArray[318] = 19;
|
|
byArray[319] = 70;
|
|
byArray[320] = 80;
|
|
byArray[321] = -13;
|
|
byArray[322] = -91;
|
|
byArray[323] = 91;
|
|
byArray[324] = 33;
|
|
byArray[325] = -33;
|
|
byArray[326] = 99;
|
|
byArray[327] = -67;
|
|
byArray[328] = 97;
|
|
byArray[329] = -80;
|
|
byArray[330] = 1;
|
|
byArray[331] = -34;
|
|
byArray[332] = -33;
|
|
byArray[333] = 25;
|
|
byArray[334] = -80;
|
|
byArray[335] = 27;
|
|
byArray[336] = 121;
|
|
byArray[337] = -11;
|
|
byArray[338] = 71;
|
|
byArray[339] = 26;
|
|
byArray[340] = -70;
|
|
byArray[341] = -126;
|
|
byArray[342] = -85;
|
|
byArray[343] = -95;
|
|
byArray[344] = -106;
|
|
byArray[345] = -84;
|
|
byArray[346] = 45;
|
|
byArray[347] = -73;
|
|
byArray[348] = -9;
|
|
byArray[349] = 71;
|
|
byArray[350] = -87;
|
|
byArray[351] = -43;
|
|
byArray[352] = 113;
|
|
byArray[353] = 70;
|
|
byArray[354] = -59;
|
|
byArray[355] = -24;
|
|
byArray[356] = -122;
|
|
byArray[357] = 31;
|
|
byArray[358] = 58;
|
|
byArray[359] = 100;
|
|
byArray[360] = 3;
|
|
byArray[361] = -95;
|
|
byArray[362] = 91;
|
|
byArray[363] = -27;
|
|
byArray[364] = -104;
|
|
byArray[365] = -99;
|
|
byArray[366] = -119;
|
|
byArray[367] = 16;
|
|
byArray[368] = -42;
|
|
byArray[369] = 85;
|
|
byArray[370] = -36;
|
|
byArray[371] = -67;
|
|
byArray[372] = -102;
|
|
byArray[373] = -52;
|
|
byArray[374] = 78;
|
|
byArray[375] = -93;
|
|
byArray[376] = -95;
|
|
byArray[377] = 94;
|
|
byArray[378] = 67;
|
|
byArray[379] = 53;
|
|
byArray[380] = -34;
|
|
byArray[381] = 13;
|
|
byArray[382] = -13;
|
|
byArray[383] = 72;
|
|
byArray[384] = -57;
|
|
byArray[385] = -115;
|
|
byArray[386] = 82;
|
|
byArray[387] = 56;
|
|
byArray[388] = 82;
|
|
byArray[389] = 60;
|
|
byArray[390] = -23;
|
|
byArray[391] = 98;
|
|
byArray[392] = 113;
|
|
byArray[393] = -128;
|
|
byArray[394] = -56;
|
|
byArray[395] = -105;
|
|
byArray[396] = 81;
|
|
byArray[397] = -4;
|
|
byArray[398] = 63;
|
|
byArray[399] = -75;
|
|
byArray[400] = 81;
|
|
byArray[401] = 3;
|
|
byArray[402] = 38;
|
|
byArray[403] = 38;
|
|
byArray[404] = 103;
|
|
byArray[405] = -48;
|
|
byArray[406] = -33;
|
|
byArray[407] = -108;
|
|
byArray[408] = -128;
|
|
byArray[409] = -1;
|
|
byArray[410] = 25;
|
|
byArray[411] = 83;
|
|
byArray[412] = -112;
|
|
byArray[413] = -61;
|
|
byArray[414] = 57;
|
|
byArray[415] = 84;
|
|
byArray[416] = 68;
|
|
byArray[417] = -94;
|
|
byArray[418] = -24;
|
|
byArray[419] = 15;
|
|
byArray[420] = -80;
|
|
byArray[421] = -44;
|
|
byArray[422] = -106;
|
|
byArray[423] = -19;
|
|
byArray[424] = 55;
|
|
byArray[425] = 5;
|
|
byArray[426] = 14;
|
|
byArray[427] = 40;
|
|
byArray[428] = 75;
|
|
byArray[429] = 35;
|
|
byArray[430] = 42;
|
|
byArray[431] = -17;
|
|
byArray[432] = 47;
|
|
byArray[433] = 53;
|
|
byArray[434] = -15;
|
|
byArray[435] = 77;
|
|
byArray[436] = 56;
|
|
byArray[437] = -106;
|
|
byArray[438] = -63;
|
|
byArray[439] = 100;
|
|
byArray[440] = -11;
|
|
byArray[441] = -96;
|
|
byArray[442] = -114;
|
|
byArray[443] = -106;
|
|
masterPublicKeyData = byArray;
|
|
}
|
|
}
|
|
|