Skip to content

Commit 5f39888

Browse files
Jami CogswellJami Cogswell
authored andcommitted
minor code restructure
1 parent 2714c7f commit 5f39888

File tree

2 files changed

+33
-20
lines changed

2 files changed

+33
-20
lines changed

java/ql/lib/semmle/code/java/security/Encryption.qll

Lines changed: 32 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -323,20 +323,21 @@ class JavaxCryptoSecretKey extends JavaxCryptoAlgoSpec {
323323
}
324324
}
325325

326-
/** The Java class `javax.crypto.spec.DHGenParameterSpec`. */
327-
class DhGenParameterSpec extends RefType {
328-
DhGenParameterSpec() { this.hasQualifiedName("javax.crypto.spec", "DHGenParameterSpec") }
329-
}
330-
331326
class JavaxCryptoKeyGenerator extends JavaxCryptoAlgoSpec {
332327
JavaxCryptoKeyGenerator() {
328+
exists(Constructor c | c.getAReference() = this | c.getDeclaringType() instanceof KeyGenerator)
329+
or
333330
exists(Method m | m.getAReference() = this |
334331
m.getDeclaringType() instanceof KeyGenerator and
335332
m.getName() = "getInstance"
336333
)
337334
}
338335

339-
override Expr getAlgoSpec() { result = this.(MethodAccess).getArgument(0) }
336+
override Expr getAlgoSpec() {
337+
exists(Call c | c = this |
338+
if c.getNumArgument() = 3 then result = c.getArgument(2) else result = c.getArgument(0)
339+
)
340+
}
340341
}
341342

342343
class JavaxCryptoKeyAgreement extends JavaxCryptoAlgoSpec {
@@ -388,29 +389,41 @@ class JavaSecuritySignature extends JavaSecurityAlgoSpec {
388389
override Expr getAlgoSpec() { result = this.(ConstructorCall).getArgument(0) }
389390
}
390391

392+
/** A method call to the Java class `java.security.KeyPairGenerator`. */
393+
class JavaSecurityKeyPairGenerator extends JavaSecurityAlgoSpec {
394+
JavaSecurityKeyPairGenerator() {
395+
exists(Constructor c | c.getAReference() = this |
396+
c.getDeclaringType() instanceof KeyPairGenerator
397+
)
398+
or
399+
exists(Method m | m.getAReference() = this |
400+
m.getDeclaringType() instanceof KeyPairGenerator and
401+
m.getName() = "getInstance"
402+
)
403+
}
404+
405+
override Expr getAlgoSpec() { result = this.(Call).getArgument(0) }
406+
}
407+
408+
/** The Java interface `java.security.spec.AlgorithmParameterSpec` */
409+
abstract class AlgorithmParameterSpec extends RefType { }
410+
391411
/** The Java class `java.security.spec.ECGenParameterSpec`. */
392-
class EcGenParameterSpec extends RefType {
412+
class EcGenParameterSpec extends AlgorithmParameterSpec {
393413
EcGenParameterSpec() { this.hasQualifiedName("java.security.spec", "ECGenParameterSpec") }
394414
}
395415

396416
/** The Java class `java.security.spec.RSAKeyGenParameterSpec`. */
397-
class RsaKeyGenParameterSpec extends RefType {
417+
class RsaKeyGenParameterSpec extends AlgorithmParameterSpec {
398418
RsaKeyGenParameterSpec() { this.hasQualifiedName("java.security.spec", "RSAKeyGenParameterSpec") }
399419
}
400420

401421
/** The Java class `java.security.spec.DSAGenParameterSpec`. */
402-
class DsaGenParameterSpec extends RefType {
422+
class DsaGenParameterSpec extends AlgorithmParameterSpec {
403423
DsaGenParameterSpec() { this.hasQualifiedName("java.security.spec", "DSAGenParameterSpec") }
404424
}
405425

406-
/** A method call to the Java class `java.security.KeyPairGenerator`. */
407-
class JavaSecurityKeyPairGenerator extends JavaxCryptoAlgoSpec {
408-
JavaSecurityKeyPairGenerator() {
409-
exists(Method m | m.getAReference() = this |
410-
m.getDeclaringType() instanceof KeyPairGenerator and
411-
m.getName() = "getInstance"
412-
)
413-
}
414-
415-
override Expr getAlgoSpec() { result = this.(MethodAccess).getArgument(0) }
426+
/** The Java class `javax.crypto.spec.DHGenParameterSpec`. */
427+
class DhGenParameterSpec extends AlgorithmParameterSpec {
428+
DhGenParameterSpec() { this.hasQualifiedName("javax.crypto.spec", "DHGenParameterSpec") }
416429
}

java/ql/lib/semmle/code/java/security/InsufficientKeySize.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ private class SymmetricInitMethodAccess extends KeyGenInitMethodAccess {
124124
}
125125

126126
/** An instance of a key generator. */
127-
abstract class KeyGeneratorObject extends JavaxCryptoAlgoSpec {
127+
abstract class KeyGeneratorObject extends CryptoAlgoSpec {
128128
string getAlgoName() { result = this.getAlgoSpec().(StringLiteral).getValue().toUpperCase() }
129129
}
130130

0 commit comments

Comments
 (0)