@@ -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-
331326class 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
342343class 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}
0 commit comments