Skip to content

Commit b0e7742

Browse files
committed
Fixed some bugs in codegenerator plugin
Signed-off-by: Rakshit Krishnappa Ravi <rakshitkrishnapparavi@gmail.com> - correct the package names of SecretKeySpec, SecretKey, PBEKeySpec - fixed NPE in setUpTemplateClass method - removed unwanted logger in isSubType method - fixed a bug in collectParameterTypes method - removed JDialog to increase the runtime further - refactored setUpTemplateClass method to improve runtime
1 parent 661fbd8 commit b0e7742

7 files changed

Lines changed: 17 additions & 27 deletions

File tree

plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/crysl/templates/encryption/SecureEncryptor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ public javax.crypto.SecretKey getKey(char[] pwd) {
2020
byte[] salt = new byte[32];
2121
javax.crypto.SecretKey encryptionKey = null;
2222
int keysize = 128;
23-
CrySLCodeGenerator.getInstance().includeClass("java.security.SecureRandom").addParameter(salt, "next").includeClass("java.security.PBEKeySpec")
24-
.addParameter(pwd, "password").addParameter(keysize, "keylength").includeClass("javax.crypto.SecretKeyFactory").includeClass("java.security.SecretKey")
25-
.includeClass("javax.crypto.SecretKeySpec").addParameter(encryptionKey, "this").generate();
23+
CrySLCodeGenerator.getInstance().includeClass("java.security.SecureRandom").addParameter(salt, "next").includeClass("javax.crypto.spec.PBEKeySpec")
24+
.addParameter(pwd, "password").addParameter(keysize, "keylength").includeClass("javax.crypto.SecretKeyFactory").includeClass("javax.crypto.SecretKey")
25+
.includeClass("javax.crypto.spec.SecretKeySpec").addParameter(encryptionKey, "this").generate();
2626

2727
return encryptionKey;
2828
}

plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/crysl/templates/encryptionfiles/SecureEncryptor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ public javax.crypto.SecretKey getKey(char[] pwd) {
2424
byte[] salt = new byte[32];
2525
javax.crypto.SecretKey encryptionKey = null;
2626
int keysize = 128;
27-
CrySLCodeGenerator.getInstance().includeClass("java.security.SecureRandom").addParameter(salt, "next").includeClass("java.security.PBEKeySpec")
28-
.addParameter(pwd, "password").addParameter(keysize, "keylength").includeClass("javax.crypto.SecretKeyFactory").includeClass("java.security.SecretKey")
29-
.includeClass("javax.crypto.SecretKeySpec").addParameter(encryptionKey, "this").generate();
27+
CrySLCodeGenerator.getInstance().includeClass("java.security.SecureRandom").addParameter(salt, "next").includeClass("javax.crypto.spec.PBEKeySpec")
28+
.addParameter(pwd, "password").addParameter(keysize, "keylength").includeClass("javax.crypto.SecretKeyFactory").includeClass("javax.crypto.SecretKey")
29+
.includeClass("javax.crypto.spec.SecretKeySpec").addParameter(encryptionKey, "this").generate();
3030

3131
return encryptionKey;
3232
}

plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/crysl/templates/encryptionstrings/SecureEncryptor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ public javax.crypto.SecretKey getKey(char[] pwd) {
2424
byte[] salt = new byte[32];
2525
javax.crypto.SecretKey encryptionKey = null;
2626
int keysize = 128;
27-
CrySLCodeGenerator.getInstance().includeClass("java.security.SecureRandom").addParameter(salt, "next").includeClass("java.security.PBEKeySpec")
28-
.addParameter(pwd, "password").addParameter(keysize, "keylength").includeClass("javax.crypto.SecretKeyFactory").includeClass("java.security.SecretKey")
29-
.includeClass("javax.crypto.SecretKeySpec").addParameter(encryptionKey, "this").generate();
27+
CrySLCodeGenerator.getInstance().includeClass("java.security.SecureRandom").addParameter(salt, "next").includeClass("javax.crypto.spec.PBEKeySpec")
28+
.addParameter(pwd, "password").addParameter(keysize, "keylength").includeClass("javax.crypto.SecretKeyFactory").includeClass("javax.crypto.SecretKey")
29+
.includeClass("javax.crypto.spec.SecretKeySpec").addParameter(encryptionKey, "this").generate();
3030

3131
return encryptionKey;
3232
}

plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/crysl/templates/securepassword/PasswordHasher.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ public static java.lang.String createPWHash(char[] pwd) throws GeneralSecurityEx
2323
byte[] pwdHashBytes = null;
2424
int keysize = 160;
2525

26-
CrySLCodeGenerator.getInstance().includeClass("java.security.SecureRandom").addParameter(salt, "next").includeClass("java.security.PBEKeySpec")
27-
.addParameter(pwd, "password").addParameter(salt, "salt").addParameter(keysize, "keylength").includeClass("javax.crypto.SecretKeyFactory").includeClass("java.security.SecretKey").addParameter(pwdHashBytes, "keyMaterial").generate();
26+
CrySLCodeGenerator.getInstance().includeClass("java.security.SecureRandom").addParameter(salt, "next").includeClass("javax.crypto.spec.PBEKeySpec")
27+
.addParameter(pwd, "password").addParameter(salt, "salt").addParameter(keysize, "keylength").includeClass("javax.crypto.SecretKeyFactory").includeClass("javax.crypto.SecretKey").addParameter(pwdHashBytes, "keyMaterial").generate();
2828

2929
java.lang.String pwdHash = toBase64(salt) + ":" + toBase64(pwdHashBytes);
3030
return pwdHash;
@@ -36,8 +36,8 @@ public static boolean verifyPWHash(char[] pwd, java.lang.String pwdhash) throws
3636
byte[] res = null;
3737
int keysize = 160;
3838

39-
CrySLCodeGenerator.getInstance().includeClass("java.security.PBEKeySpec").addParameter(pwd, "password").addParameter(salt, "salt").addParameter(keysize, "keylength")
40-
.includeClass("javax.crypto.SecretKeyFactory").includeClass("java.security.SecretKey").addParameter(res, "keyMaterial").generate();
39+
CrySLCodeGenerator.getInstance().includeClass("javax.crypto.spec.PBEKeySpec").addParameter(pwd, "password").addParameter(salt, "salt").addParameter(keysize, "keylength")
40+
.includeClass("javax.crypto.SecretKeyFactory").includeClass("javax.crypto.SecretKey").addParameter(res, "keyMaterial").generate();
4141

4242
Boolean areEqual = slowEquals(res, fromBase64(parts[1]));
4343
return areEqual;

plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/generator/CrySLBasedCodeGenerator.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -683,11 +683,11 @@ private Class<?>[] collectParameterTypes(List<Entry<String, String>> parameters)
683683
} else {
684684
try {
685685
methodParameter[i] = Class.forName(parameter.getValue());
686-
i++;
687686
} catch (ClassNotFoundException e) {
688687
Activator.getDefault().logError(e, "No class found for type: " + parameter.getValue().toString());
689688
}
690689
}
690+
i++;
691691
}
692692
return methodParameter;
693693
}
@@ -1232,6 +1232,7 @@ public GeneratorClass setUpTemplateClass(String pathToTemplateFile) {
12321232
Map<SimpleName, CrySLObject> postCGVars = new HashMap<SimpleName, CrySLObject>();
12331233

12341234
List<CodeGenCrySLRule> rules = new ArrayList<CodeGenCrySLRule>();
1235+
List<CrySLRule> rulesFromSootRunner = SootRunner.getRules(getDeveloperProject().project);
12351236

12361237
@SuppressWarnings({ "unchecked", "rawtypes" })
12371238
@Override
@@ -1256,11 +1257,9 @@ public boolean visit(MethodInvocation node) {
12561257
}
12571258
} else if ("includeClass".equals(calledMethodName)) {
12581259
String rule = Utils.filterQuotes(arguments.get(0).toString());
1259-
List<CrySLRule> rulesFromSootRunner = SootRunner.getRules(getDeveloperProject().project);
1260-
String simpleRuleName = rule.substring(rule.lastIndexOf(".") + 1);
12611260
CrySLRule crySLRule = null;//CrySLUtils.getCrySLRule(simpleRuleName);
12621261
for (CrySLRule crySLRuleFromSootRunner : rulesFromSootRunner) {
1263-
if(crySLRuleFromSootRunner.getClassName().contains(simpleRuleName)) {
1262+
if(crySLRuleFromSootRunner.getClassName().equals(rule)) {
12641263
crySLRule = crySLRuleFromSootRunner;
12651264
}
12661265
}

plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/AltConfigWizard.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -238,12 +238,6 @@ public boolean performFinish() {
238238
IResource targetFile = (IResource) currentPage.getSelectedResource().getFirstElement();
239239

240240
String taskName = selectedTask.getName();
241-
JOptionPane optionPane = new JOptionPane("CogniCrypt is now generating code that implements " + selectedTask.getDescription() + "\ninto file " + ((targetFile != null)
242-
? targetFile.getName()
243-
: "Output.java") + ". This should take no longer than a few seconds.", JOptionPane.INFORMATION_MESSAGE, JOptionPane.DEFAULT_OPTION, null, new Object[] {}, null);
244-
JDialog waitingDialog = optionPane.createDialog("Generating Code");
245-
waitingDialog.setModal(false);
246-
waitingDialog.setVisible(true);
247241
Configuration chosenConfig = null;
248242
try {
249243
String codeTemplate = selectedTask.getCodeTemplate();
@@ -294,9 +288,6 @@ public boolean performFinish() {
294288

295289
} catch (Exception ex) {
296290
Activator.getDefault().logError(ex, Constants.CodeGenerationErrorMessage);
297-
} finally {
298-
waitingDialog.setVisible(false);
299-
waitingDialog.dispose();
300291
}
301292

302293
return ret;

plugins/de.cognicrypt.core/src/de/cognicrypt/utils/Utils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ public static boolean isSubType(String typeOne, String typeTwo) {
295295
subTypes = Class.forName(typeOne).isAssignableFrom(Class.forName(typeTwo));
296296
}
297297
catch (ClassNotFoundException e) {
298-
Activator.getDefault().logError(e);
298+
// It's fine if above throws a ClassNotFoundException
299299
}
300300
}
301301
return subTypes;

0 commit comments

Comments
 (0)