src/pqc_lint/patterns/java.py
1.5 KB · 32 lines · python Raw
1 """Java crypto patterns."""
2
3 from __future__ import annotations
4
5 from pqc_lint.patterns.base import PatternMatcher, compile_patterns
6
7
8 class JavaMatcher(PatternMatcher):
9 language = "java"
10 file_extensions = (".java", ".kt")
11 patterns = compile_patterns([
12 # KeyPairGenerator / KeyFactory
13 ("PQC001", r"""KeyPairGenerator\.getInstance\s*\(\s*"RSA"\s*\)"""),
14 ("PQC001", r"""Signature\.getInstance\s*\(\s*"SHA\d+withRSA"""),
15 ("PQC002", r"""KeyPairGenerator\.getInstance\s*\(\s*"EC"\s*\)"""),
16 ("PQC002", r"""Signature\.getInstance\s*\(\s*"SHA\d+withECDSA"""),
17 ("PQC003", r"""KeyPairGenerator\.getInstance\s*\(\s*"Ed25519"\s*\)"""),
18 ("PQC004", r"""KeyPairGenerator\.getInstance\s*\(\s*"DSA"\s*\)"""),
19 ("PQC004", r"""Signature\.getInstance\s*\(\s*"SHA\d+withDSA"""),
20 # KeyAgreement
21 ("PQC101", r"""KeyAgreement\.getInstance\s*\(\s*"ECDH"\s*\)"""),
22 ("PQC102", r"""KeyAgreement\.getInstance\s*\(\s*"DH"\s*\)"""),
23 ("PQC102", r"""KeyAgreement\.getInstance\s*\(\s*"DiffieHellman"\s*\)"""),
24 ("PQC103", r"""KeyAgreement\.getInstance\s*\(\s*"XDH"\s*\)"""),
25 # Cipher
26 ("PQC201", r"""Cipher\.getInstance\s*\(\s*"RSA/.*/OAEPWith"""),
27 ("PQC202", r"""Cipher\.getInstance\s*\(\s*"RSA/.*/PKCS1Padding"""),
28 # hashes
29 ("PQC301", r"""MessageDigest\.getInstance\s*\(\s*"MD5"\s*\)"""),
30 ("PQC302", r"""MessageDigest\.getInstance\s*\(\s*"SHA-?1"\s*\)"""),
31 ])
32