postquant 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/README.md +58 -8
  2. package/dist/commands/analyze.d.ts +9 -0
  3. package/dist/commands/analyze.d.ts.map +1 -0
  4. package/dist/commands/analyze.js +119 -0
  5. package/dist/commands/analyze.js.map +1 -0
  6. package/dist/index.js +45 -2
  7. package/dist/index.js.map +1 -1
  8. package/dist/output/cbom.d.ts +3 -0
  9. package/dist/output/cbom.d.ts.map +1 -0
  10. package/dist/output/cbom.js +235 -0
  11. package/dist/output/cbom.js.map +1 -0
  12. package/dist/output/json-code.d.ts +3 -0
  13. package/dist/output/json-code.d.ts.map +1 -0
  14. package/dist/output/json-code.js +29 -0
  15. package/dist/output/json-code.js.map +1 -0
  16. package/dist/output/sarif.d.ts +3 -0
  17. package/dist/output/sarif.d.ts.map +1 -0
  18. package/dist/output/sarif.js +240 -0
  19. package/dist/output/sarif.js.map +1 -0
  20. package/dist/output/terminal-code.d.ts +7 -0
  21. package/dist/output/terminal-code.d.ts.map +1 -0
  22. package/dist/output/terminal-code.js +95 -0
  23. package/dist/output/terminal-code.js.map +1 -0
  24. package/dist/output/terminal.d.ts.map +1 -1
  25. package/dist/output/terminal.js +14 -2
  26. package/dist/output/terminal.js.map +1 -1
  27. package/dist/scanner/code/classifier.d.ts +9 -0
  28. package/dist/scanner/code/classifier.d.ts.map +1 -0
  29. package/dist/scanner/code/classifier.js +19 -0
  30. package/dist/scanner/code/classifier.js.map +1 -0
  31. package/dist/scanner/code/discovery.d.ts +17 -0
  32. package/dist/scanner/code/discovery.d.ts.map +1 -0
  33. package/dist/scanner/code/discovery.js +167 -0
  34. package/dist/scanner/code/discovery.js.map +1 -0
  35. package/dist/scanner/code/grader.d.ts +27 -0
  36. package/dist/scanner/code/grader.d.ts.map +1 -0
  37. package/dist/scanner/code/grader.js +115 -0
  38. package/dist/scanner/code/grader.js.map +1 -0
  39. package/dist/scanner/code/matcher.d.ts +11 -0
  40. package/dist/scanner/code/matcher.d.ts.map +1 -0
  41. package/dist/scanner/code/matcher.js +208 -0
  42. package/dist/scanner/code/matcher.js.map +1 -0
  43. package/dist/scanner/code/patterns/go.d.ts +3 -0
  44. package/dist/scanner/code/patterns/go.d.ts.map +1 -0
  45. package/dist/scanner/code/patterns/go.js +226 -0
  46. package/dist/scanner/code/patterns/go.js.map +1 -0
  47. package/dist/scanner/code/patterns/index.d.ts +11 -0
  48. package/dist/scanner/code/patterns/index.d.ts.map +1 -0
  49. package/dist/scanner/code/patterns/index.js +20 -0
  50. package/dist/scanner/code/patterns/index.js.map +1 -0
  51. package/dist/scanner/code/patterns/java.d.ts +3 -0
  52. package/dist/scanner/code/patterns/java.d.ts.map +1 -0
  53. package/dist/scanner/code/patterns/java.js +239 -0
  54. package/dist/scanner/code/patterns/java.js.map +1 -0
  55. package/dist/scanner/code/patterns/javascript.d.ts +3 -0
  56. package/dist/scanner/code/patterns/javascript.d.ts.map +1 -0
  57. package/dist/scanner/code/patterns/javascript.js +243 -0
  58. package/dist/scanner/code/patterns/javascript.js.map +1 -0
  59. package/dist/scanner/code/patterns/python.d.ts +3 -0
  60. package/dist/scanner/code/patterns/python.d.ts.map +1 -0
  61. package/dist/scanner/code/patterns/python.js +255 -0
  62. package/dist/scanner/code/patterns/python.js.map +1 -0
  63. package/dist/types/index.d.ts +118 -0
  64. package/dist/types/index.d.ts.map +1 -1
  65. package/package.json +1 -1
@@ -0,0 +1,243 @@
1
+ export const javascriptPatterns = [
2
+ {
3
+ id: 'js-rsa-keygen',
4
+ language: 'javascript',
5
+ category: 'asymmetric-encryption',
6
+ algorithm: 'RSA',
7
+ risk: 'critical',
8
+ confidence: 'high',
9
+ importPatterns: [
10
+ /import\s+\{[^}]*generateKeyPair(?:Sync)?\s*[^}]*\}\s+from\s+['"](?:node:)?crypto['"]/,
11
+ /(?:const|let|var)\s+\{[^}]*generateKeyPair(?:Sync)?\s*[^}]*\}\s*=\s*require\s*\(\s*['"]crypto['"]\s*\)/,
12
+ ],
13
+ callPatterns: [
14
+ /generateKeyPairSync\s*\(\s*['"]rsa['"]/,
15
+ /generateKeyPairSync\s*\(\s*['"]rsa-pss['"]/,
16
+ /generateKeyPair\s*\(\s*['"]rsa['"]/,
17
+ ],
18
+ keySizeExtractor: /modulusLength\s*:\s*(\d+)/,
19
+ description: "RSA key generation is vulnerable to quantum attacks via Shor's algorithm",
20
+ migration: 'Migrate to ML-KEM (FIPS 203) for encryption or ML-DSA (FIPS 204) for signatures',
21
+ nistRef: 'FIPS 203/204',
22
+ cweId: 'CWE-327',
23
+ },
24
+ {
25
+ id: 'js-ec-keygen',
26
+ language: 'javascript',
27
+ category: 'asymmetric-encryption',
28
+ algorithm: 'ECDSA',
29
+ risk: 'critical',
30
+ confidence: 'high',
31
+ callPatterns: [
32
+ /generateKeyPairSync\s*\(\s*['"]ec['"]/,
33
+ /generateKeyPair\s*\(\s*['"]ec['"]/,
34
+ ],
35
+ contextPatterns: [/namedCurve\s*:\s*['"](?:P-256|P-384|P-521|secp256k1)['"]/],
36
+ description: "EC key generation is vulnerable to quantum attacks via Shor's algorithm",
37
+ migration: 'Migrate to ML-DSA (FIPS 204) for signatures or ML-KEM (FIPS 203) for key exchange',
38
+ nistRef: 'FIPS 203/204',
39
+ cweId: 'CWE-327',
40
+ },
41
+ {
42
+ id: 'js-ed25519-keygen',
43
+ language: 'javascript',
44
+ category: 'digital-signature',
45
+ algorithm: 'Ed25519',
46
+ risk: 'critical',
47
+ confidence: 'high',
48
+ callPatterns: [
49
+ /generateKeyPairSync\s*\(\s*['"]ed25519['"]\s*\)/,
50
+ /generateKeyPairSync\s*\(\s*['"]ed448['"]\s*\)/,
51
+ /generateKeyPairSync\s*\(\s*['"]x25519['"]\s*\)/,
52
+ /generateKeyPairSync\s*\(\s*['"]x448['"]\s*\)/,
53
+ ],
54
+ description: "Ed25519/X25519 key generation is vulnerable to quantum attacks via Shor's algorithm",
55
+ migration: 'Migrate to ML-DSA (FIPS 204) for signatures or ML-KEM (FIPS 203) for key exchange',
56
+ nistRef: 'FIPS 203/204',
57
+ cweId: 'CWE-327',
58
+ },
59
+ {
60
+ id: 'js-dsa-keygen',
61
+ language: 'javascript',
62
+ category: 'digital-signature',
63
+ algorithm: 'DSA',
64
+ risk: 'critical',
65
+ confidence: 'high',
66
+ callPatterns: [
67
+ /generateKeyPairSync\s*\(\s*['"]dsa['"]/,
68
+ /generateKeyPair\s*\(\s*['"]dsa['"]/,
69
+ ],
70
+ description: "DSA key generation is vulnerable to quantum attacks via Shor's algorithm",
71
+ migration: 'Migrate to ML-DSA (FIPS 204) for digital signatures',
72
+ nistRef: 'FIPS 204',
73
+ cweId: 'CWE-327',
74
+ },
75
+ {
76
+ id: 'js-dh-exchange',
77
+ language: 'javascript',
78
+ category: 'key-exchange',
79
+ algorithm: 'DH',
80
+ risk: 'critical',
81
+ confidence: 'high',
82
+ importPatterns: [
83
+ /import\s+\{[^}]*createDiffieHellman[^}]*\}\s+from\s+['"](?:node:)?crypto['"]/,
84
+ /(?:const|let|var)\s+\{[^}]*createDiffieHellman[^}]*\}\s*=\s*require\s*\(\s*['"]crypto['"]\s*\)/,
85
+ ],
86
+ callPatterns: [/createDiffieHellman\s*\(/],
87
+ description: "Diffie-Hellman key exchange is vulnerable to quantum attacks via Shor's algorithm",
88
+ migration: 'Migrate to ML-KEM (FIPS 203) for key encapsulation',
89
+ nistRef: 'FIPS 203',
90
+ cweId: 'CWE-327',
91
+ },
92
+ {
93
+ id: 'js-ecdh-exchange',
94
+ language: 'javascript',
95
+ category: 'key-exchange',
96
+ algorithm: 'ECDH',
97
+ risk: 'critical',
98
+ confidence: 'high',
99
+ callPatterns: [/createECDH\s*\(/],
100
+ description: "ECDH key exchange is vulnerable to quantum attacks via Shor's algorithm",
101
+ migration: 'Migrate to ML-KEM (FIPS 203) for key encapsulation',
102
+ nistRef: 'FIPS 203',
103
+ cweId: 'CWE-327',
104
+ },
105
+ {
106
+ id: 'js-md5-hash',
107
+ language: 'javascript',
108
+ category: 'weak-hash',
109
+ algorithm: 'MD5',
110
+ risk: 'critical',
111
+ confidence: 'high',
112
+ callPatterns: [
113
+ /createHash\s*\(\s*['"]md5['"]\s*\)/,
114
+ /crypto\.subtle\.digest\s*\(\s*['"]MD5['"]/,
115
+ ],
116
+ description: 'MD5 is cryptographically broken and unsuitable for any security use',
117
+ migration: 'Migrate to SHA-256 or SHA-3 for hashing',
118
+ cweId: 'CWE-328',
119
+ },
120
+ {
121
+ id: 'js-sha1-hash',
122
+ language: 'javascript',
123
+ category: 'weak-hash',
124
+ algorithm: 'SHA-1',
125
+ risk: 'critical',
126
+ confidence: 'high',
127
+ callPatterns: [
128
+ /createHash\s*\(\s*['"]sha1['"]\s*\)/,
129
+ /crypto\.subtle\.digest\s*\(\s*['"]SHA-1['"]/,
130
+ ],
131
+ description: 'SHA-1 is cryptographically broken with practical collision attacks',
132
+ migration: 'Migrate to SHA-256 or SHA-3 for hashing',
133
+ cweId: 'CWE-328',
134
+ },
135
+ {
136
+ id: 'js-sha256-hash',
137
+ language: 'javascript',
138
+ category: 'safe-hash',
139
+ algorithm: 'SHA-256',
140
+ risk: 'safe',
141
+ confidence: 'high',
142
+ callPatterns: [
143
+ /createHash\s*\(\s*['"]sha256['"]\s*\)/,
144
+ /createHash\s*\(\s*['"]sha384['"]\s*\)/,
145
+ /createHash\s*\(\s*['"]sha512['"]\s*\)/,
146
+ /crypto\.subtle\.digest\s*\(\s*['"]SHA-256['"]/,
147
+ /crypto\.subtle\.digest\s*\(\s*['"]SHA-384['"]/,
148
+ /crypto\.subtle\.digest\s*\(\s*['"]SHA-512['"]/,
149
+ ],
150
+ description: 'SHA-256/384/512 are quantum-resistant hash functions',
151
+ migration: 'No migration needed — already quantum-safe',
152
+ },
153
+ {
154
+ id: 'js-aes',
155
+ language: 'javascript',
156
+ category: 'weak-symmetric',
157
+ algorithm: 'AES',
158
+ risk: 'moderate',
159
+ confidence: 'medium',
160
+ callPatterns: [
161
+ /createCipheriv\s*\(\s*['"]aes-\d+-/,
162
+ /createDecipheriv\s*\(\s*['"]aes-\d+-/,
163
+ ],
164
+ keySizeExtractor: /aes-(\d+)/,
165
+ keySizeRisk: (size) => (size >= 256 ? 'safe' : 'moderate'),
166
+ description: "AES-128 provides reduced security against quantum attacks (Grover's algorithm)",
167
+ migration: 'Use AES-256 for quantum-resistant symmetric encryption',
168
+ },
169
+ {
170
+ id: 'js-3des',
171
+ language: 'javascript',
172
+ category: 'broken-cipher',
173
+ algorithm: '3DES',
174
+ risk: 'critical',
175
+ confidence: 'high',
176
+ callPatterns: [
177
+ /createCipheriv\s*\(\s*['"]des-ede3-/,
178
+ /createDecipheriv\s*\(\s*['"]des-ede3-/,
179
+ ],
180
+ description: '3DES is deprecated with inadequate security margins',
181
+ migration: 'Migrate to AES-256-GCM for symmetric encryption',
182
+ cweId: 'CWE-327',
183
+ },
184
+ {
185
+ id: 'js-webcrypto-rsa',
186
+ language: 'javascript',
187
+ category: 'asymmetric-encryption',
188
+ algorithm: 'RSA',
189
+ risk: 'critical',
190
+ confidence: 'high',
191
+ callPatterns: [
192
+ /subtle\.generateKey\s*\(\s*\{[^}]*name\s*:\s*['"]RSA-OAEP['"]/,
193
+ /subtle\.generateKey\s*\(\s*\{[^}]*name\s*:\s*['"]RSA-PSS['"]/,
194
+ /subtle\.generateKey\s*\(\s*\{[^}]*name\s*:\s*['"]RSASSA-PKCS1-v1_5['"]/,
195
+ /subtle\.importKey\s*\([^)]*['"]RSA-OAEP['"]/,
196
+ ],
197
+ description: "WebCrypto RSA operations are vulnerable to quantum attacks via Shor's algorithm",
198
+ migration: 'Migrate to ML-KEM (FIPS 203) or ML-DSA (FIPS 204) when WebCrypto supports PQC',
199
+ nistRef: 'FIPS 203/204',
200
+ cweId: 'CWE-327',
201
+ },
202
+ {
203
+ id: 'js-webcrypto-ec',
204
+ language: 'javascript',
205
+ category: 'asymmetric-encryption',
206
+ algorithm: 'ECDSA',
207
+ risk: 'critical',
208
+ confidence: 'high',
209
+ callPatterns: [
210
+ /subtle\.generateKey\s*\(\s*\{[^}]*name\s*:\s*['"]ECDSA['"]/,
211
+ /subtle\.generateKey\s*\(\s*\{[^}]*name\s*:\s*['"]ECDH['"]/,
212
+ /subtle\.sign\s*\(\s*\{[^}]*name\s*:\s*['"]ECDSA['"]/,
213
+ ],
214
+ description: "WebCrypto EC operations are vulnerable to quantum attacks via Shor's algorithm",
215
+ migration: 'Migrate to ML-DSA (FIPS 204) for signatures or ML-KEM (FIPS 203) for key exchange',
216
+ nistRef: 'FIPS 203/204',
217
+ cweId: 'CWE-327',
218
+ },
219
+ {
220
+ id: 'js-jwt-sign',
221
+ language: 'javascript',
222
+ category: 'digital-signature',
223
+ algorithm: 'RSA/ECDSA',
224
+ risk: 'critical',
225
+ confidence: 'high',
226
+ importPatterns: [
227
+ /import\s+.*from\s+['"]jsonwebtoken['"]/,
228
+ /import\s+\{[^}]*SignJWT[^}]*\}\s+from\s+['"]jose['"]/,
229
+ /require\s*\(\s*['"]jsonwebtoken['"]\s*\)/,
230
+ ],
231
+ callPatterns: [
232
+ /jwt\.sign\s*\([^)]*algorithm\s*:\s*['"](?:RS|ES|PS)\d{3}['"]/,
233
+ /jwt\.sign\s*\([^)]*algorithm\s*:\s*['"]EdDSA['"]/,
234
+ /SignJWT\s*\([^)]*\).*setProtectedHeader\s*\(\s*\{[^}]*alg\s*:\s*['"](?:RS|ES|PS)\d{3}['"]/,
235
+ /SignJWT\s*\([^)]*\).*setProtectedHeader\s*\(\s*\{[^}]*alg\s*:\s*['"]EdDSA['"]/,
236
+ /generateKeyPair\s*\(\s*['"](?:RS|ES)\d{3}['"]\s*\)/,
237
+ ],
238
+ description: 'JWT signing with RSA/ECDSA/EdDSA uses quantum-vulnerable algorithms',
239
+ migration: 'Use HMAC-based JWT (HS256) for symmetric signing, or await PQC JWT standards',
240
+ cweId: 'CWE-327',
241
+ },
242
+ ];
243
+ //# sourceMappingURL=javascript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"javascript.js","sourceRoot":"","sources":["../../../../src/scanner/code/patterns/javascript.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CryptoPattern } from '../../../types/index.js';
2
+ export declare const pythonPatterns: CryptoPattern[];
3
+ //# sourceMappingURL=python.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../../../src/scanner/code/patterns/python.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAa,MAAM,yBAAyB,CAAC;AAExE,eAAO,MAAM,cAAc,EAAE,aAAa,EA6PzC,CAAC"}
@@ -0,0 +1,255 @@
1
+ export const pythonPatterns = [
2
+ {
3
+ id: 'python-rsa-keygen',
4
+ language: 'python',
5
+ category: 'asymmetric-encryption',
6
+ algorithm: 'RSA',
7
+ risk: 'critical',
8
+ confidence: 'high',
9
+ importPatterns: [
10
+ /from\s+cryptography\.hazmat\.primitives\.asymmetric\s+import\s+rsa/,
11
+ /from\s+Crypto\.PublicKey\s+import\s+RSA/,
12
+ ],
13
+ callPatterns: [
14
+ /rsa\.generate_private_key\s*\(/,
15
+ /RSA\.generate\s*\(/,
16
+ ],
17
+ keySizeExtractor: /key_size\s*=\s*(\d+)|RSA\.generate\s*\(\s*(\d+)/,
18
+ description: "RSA key generation is vulnerable to quantum attacks via Shor's algorithm",
19
+ migration: 'Migrate to ML-KEM (FIPS 203) for encryption or ML-DSA (FIPS 204) for signatures',
20
+ nistRef: 'FIPS 203/204',
21
+ cweId: 'CWE-327',
22
+ },
23
+ {
24
+ id: 'python-rsa-sign',
25
+ language: 'python',
26
+ category: 'digital-signature',
27
+ algorithm: 'RSA',
28
+ risk: 'critical',
29
+ confidence: 'high',
30
+ importPatterns: [
31
+ /from\s+cryptography\.hazmat\.primitives\.asymmetric\s+import\s+padding/,
32
+ /from\s+Crypto\.Signature\s+import/,
33
+ ],
34
+ callPatterns: [
35
+ /\.sign\s*\(.*padding\.(PSS|PKCS1v15)\s*\(/,
36
+ /pkcs1_15\.new\s*\(/,
37
+ /pss\.new\s*\(/,
38
+ ],
39
+ description: "RSA digital signatures are vulnerable to quantum attacks via Shor's algorithm",
40
+ migration: 'Migrate to ML-DSA (FIPS 204) for digital signatures',
41
+ nistRef: 'FIPS 204',
42
+ cweId: 'CWE-327',
43
+ },
44
+ {
45
+ id: 'python-ec-keygen',
46
+ language: 'python',
47
+ category: 'asymmetric-encryption',
48
+ algorithm: 'ECDSA',
49
+ risk: 'critical',
50
+ confidence: 'high',
51
+ importPatterns: [
52
+ /from\s+cryptography\.hazmat\.primitives\.asymmetric\s+import\s+ec/,
53
+ /from\s+Crypto\.PublicKey\s+import\s+ECC/,
54
+ ],
55
+ callPatterns: [
56
+ /ec\.generate_private_key\s*\(/,
57
+ /ECC\.generate\s*\(/,
58
+ ],
59
+ contextPatterns: [/SECP256R1|SECP384R1|SECP521R1|P-256|P-384|P-521/],
60
+ description: "Elliptic curve key generation is vulnerable to quantum attacks via Shor's algorithm",
61
+ migration: 'Migrate to ML-DSA (FIPS 204) for signatures or ML-KEM (FIPS 203) for key exchange',
62
+ nistRef: 'FIPS 203/204',
63
+ cweId: 'CWE-327',
64
+ },
65
+ {
66
+ id: 'python-ecdsa-sign',
67
+ language: 'python',
68
+ category: 'digital-signature',
69
+ algorithm: 'ECDSA',
70
+ risk: 'critical',
71
+ confidence: 'high',
72
+ callPatterns: [
73
+ /\.sign\s*\(.*ec\.ECDSA\s*\(/,
74
+ /DSS\.new\s*\(/,
75
+ ],
76
+ description: "ECDSA digital signatures are vulnerable to quantum attacks via Shor's algorithm",
77
+ migration: 'Migrate to ML-DSA (FIPS 204) for digital signatures',
78
+ nistRef: 'FIPS 204',
79
+ cweId: 'CWE-327',
80
+ },
81
+ {
82
+ id: 'python-ecdh-exchange',
83
+ language: 'python',
84
+ category: 'key-exchange',
85
+ algorithm: 'ECDH',
86
+ risk: 'critical',
87
+ confidence: 'high',
88
+ callPatterns: [/\.exchange\s*\(\s*ec\.ECDH\s*\(\)/],
89
+ description: "ECDH key exchange is vulnerable to quantum attacks via Shor's algorithm",
90
+ migration: 'Migrate to ML-KEM (FIPS 203) for key encapsulation',
91
+ nistRef: 'FIPS 203',
92
+ cweId: 'CWE-327',
93
+ },
94
+ {
95
+ id: 'python-x25519',
96
+ language: 'python',
97
+ category: 'key-exchange',
98
+ algorithm: 'X25519',
99
+ risk: 'critical',
100
+ confidence: 'high',
101
+ importPatterns: [
102
+ /from\s+cryptography\.hazmat\.primitives\.asymmetric\.x25519\s+import/,
103
+ /from\s+cryptography\.hazmat\.primitives\.asymmetric\.x448\s+import/,
104
+ ],
105
+ callPatterns: [
106
+ /X25519PrivateKey\.generate\s*\(/,
107
+ /X448PrivateKey\.generate\s*\(/,
108
+ ],
109
+ description: "X25519/X448 key exchange is vulnerable to quantum attacks via Shor's algorithm",
110
+ migration: 'Migrate to ML-KEM (FIPS 203) for key encapsulation',
111
+ nistRef: 'FIPS 203',
112
+ cweId: 'CWE-327',
113
+ },
114
+ {
115
+ id: 'python-ed25519',
116
+ language: 'python',
117
+ category: 'digital-signature',
118
+ algorithm: 'Ed25519',
119
+ risk: 'critical',
120
+ confidence: 'high',
121
+ importPatterns: [
122
+ /from\s+cryptography\.hazmat\.primitives\.asymmetric\.ed25519\s+import/,
123
+ /from\s+cryptography\.hazmat\.primitives\.asymmetric\.ed448\s+import/,
124
+ ],
125
+ callPatterns: [
126
+ /Ed25519PrivateKey\.generate\s*\(/,
127
+ /Ed448PrivateKey\.generate\s*\(/,
128
+ ],
129
+ description: "Ed25519/Ed448 signatures are vulnerable to quantum attacks via Shor's algorithm",
130
+ migration: 'Migrate to ML-DSA (FIPS 204) for digital signatures',
131
+ nistRef: 'FIPS 204',
132
+ cweId: 'CWE-327',
133
+ },
134
+ {
135
+ id: 'python-dsa-keygen',
136
+ language: 'python',
137
+ category: 'digital-signature',
138
+ algorithm: 'DSA',
139
+ risk: 'critical',
140
+ confidence: 'high',
141
+ importPatterns: [
142
+ /from\s+cryptography\.hazmat\.primitives\.asymmetric\s+import\s+dsa/,
143
+ /from\s+Crypto\.PublicKey\s+import\s+DSA/,
144
+ ],
145
+ callPatterns: [
146
+ /dsa\.generate_private_key\s*\(/,
147
+ /DSA\.generate\s*\(/,
148
+ ],
149
+ description: "DSA key generation is vulnerable to quantum attacks via Shor's algorithm",
150
+ migration: 'Migrate to ML-DSA (FIPS 204) for digital signatures',
151
+ nistRef: 'FIPS 204',
152
+ cweId: 'CWE-327',
153
+ },
154
+ {
155
+ id: 'python-dh-keygen',
156
+ language: 'python',
157
+ category: 'key-exchange',
158
+ algorithm: 'DH',
159
+ risk: 'critical',
160
+ confidence: 'high',
161
+ importPatterns: [
162
+ /from\s+cryptography\.hazmat\.primitives\.asymmetric\s+import\s+dh/,
163
+ ],
164
+ callPatterns: [/dh\.generate_parameters\s*\(/],
165
+ description: "Diffie-Hellman key exchange is vulnerable to quantum attacks via Shor's algorithm",
166
+ migration: 'Migrate to ML-KEM (FIPS 203) for key encapsulation',
167
+ nistRef: 'FIPS 203',
168
+ cweId: 'CWE-327',
169
+ },
170
+ {
171
+ id: 'python-md5',
172
+ language: 'python',
173
+ category: 'weak-hash',
174
+ algorithm: 'MD5',
175
+ risk: 'critical',
176
+ confidence: 'high',
177
+ importPatterns: [
178
+ /import\s+hashlib/,
179
+ /from\s+Crypto\.Hash\s+import\s+MD5/,
180
+ ],
181
+ callPatterns: [
182
+ /hashlib\.md5\s*\(/,
183
+ /hashlib\.new\s*\(\s*['"]md5['"]/,
184
+ /hashes\.MD5\s*\(/,
185
+ /MD5\.new\s*\(/,
186
+ ],
187
+ description: 'MD5 is cryptographically broken and unsuitable for any security use',
188
+ migration: 'Migrate to SHA-256 or SHA-3 for hashing',
189
+ cweId: 'CWE-328',
190
+ },
191
+ {
192
+ id: 'python-sha1',
193
+ language: 'python',
194
+ category: 'weak-hash',
195
+ algorithm: 'SHA-1',
196
+ risk: 'critical',
197
+ confidence: 'high',
198
+ importPatterns: [
199
+ /import\s+hashlib/,
200
+ /from\s+Crypto\.Hash\s+import\s+SHA1/,
201
+ ],
202
+ callPatterns: [
203
+ /hashlib\.sha1\s*\(/,
204
+ /hashlib\.new\s*\(\s*['"]sha1['"]/,
205
+ /hashes\.SHA1\s*\(/,
206
+ /SHA1\.new\s*\(/,
207
+ ],
208
+ description: 'SHA-1 is cryptographically broken with practical collision attacks',
209
+ migration: 'Migrate to SHA-256 or SHA-3 for hashing',
210
+ cweId: 'CWE-328',
211
+ },
212
+ {
213
+ id: 'python-sha256',
214
+ language: 'python',
215
+ category: 'safe-hash',
216
+ algorithm: 'SHA-256',
217
+ risk: 'safe',
218
+ confidence: 'high',
219
+ callPatterns: [
220
+ /hashlib\.sha256\s*\(/,
221
+ /hashlib\.sha384\s*\(/,
222
+ /hashlib\.sha512\s*\(/,
223
+ /hashlib\.sha3_256\s*\(/,
224
+ /hashlib\.sha3_384\s*\(/,
225
+ /hashlib\.sha3_512\s*\(/,
226
+ /hashes\.SHA256\s*\(/,
227
+ /hashes\.SHA384\s*\(/,
228
+ /hashes\.SHA512\s*\(/,
229
+ /hashes\.SHA3_256\s*\(/,
230
+ ],
231
+ description: 'SHA-256/384/512/SHA-3 are quantum-resistant hash functions',
232
+ migration: 'No migration needed — already quantum-safe',
233
+ },
234
+ {
235
+ id: 'python-aes',
236
+ language: 'python',
237
+ category: 'weak-symmetric',
238
+ algorithm: 'AES',
239
+ risk: 'moderate',
240
+ confidence: 'medium',
241
+ importPatterns: [
242
+ /from\s+cryptography\.hazmat\.primitives\.ciphers\s+import/,
243
+ /from\s+Crypto\.Cipher\s+import\s+AES/,
244
+ ],
245
+ callPatterns: [
246
+ /algorithms\.AES\s*\(/,
247
+ /AES\.new\s*\(/,
248
+ ],
249
+ keySizeExtractor: /AES(\d+)|key_size\s*=\s*(\d+)/,
250
+ keySizeRisk: (size) => (size >= 256 ? 'safe' : 'moderate'),
251
+ description: "AES-128 provides reduced security against quantum attacks (Grover's algorithm)",
252
+ migration: 'Use AES-256 for quantum-resistant symmetric encryption',
253
+ },
254
+ ];
255
+ //# sourceMappingURL=python.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python.js","sourceRoot":"","sources":["../../../../src/scanner/code/patterns/python.ts"],"names":[],"mappings":"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"}
@@ -73,4 +73,122 @@ export interface ScanOptions {
73
73
  failGrade: BaseGrade;
74
74
  file?: string;
75
75
  }
76
+ export type Language = 'python' | 'javascript' | 'go' | 'java';
77
+ export type CryptoCategory = 'asymmetric-encryption' | 'digital-signature' | 'key-exchange' | 'weak-symmetric' | 'weak-hash' | 'broken-cipher' | 'safe-symmetric' | 'safe-hash' | 'pqc-algorithm';
78
+ export type AnalyzeOutputFormat = 'terminal' | 'json' | 'sarif' | 'cbom';
79
+ export interface DiscoveredFile {
80
+ /** File path relative to scan root */
81
+ path: string;
82
+ /** Detected language */
83
+ language: Language;
84
+ }
85
+ export interface CryptoPattern {
86
+ /** Unique ID, e.g., 'python-rsa-keygen' */
87
+ id: string;
88
+ language: Language;
89
+ category: CryptoCategory;
90
+ /** Algorithm name, e.g., 'RSA-2048', 'ECDSA', 'AES-128' */
91
+ algorithm: string;
92
+ risk: RiskLevel;
93
+ confidence: 'high' | 'medium' | 'low';
94
+ /** Import/require/use statement patterns */
95
+ importPatterns?: RegExp[];
96
+ /** Function call / instantiation patterns (at least one required) */
97
+ callPatterns: RegExp[];
98
+ /** Nearby lines that increase confidence */
99
+ contextPatterns?: RegExp[];
100
+ /** Extract key size from matched line */
101
+ keySizeExtractor?: RegExp;
102
+ /** Evaluate key size to determine risk */
103
+ keySizeRisk?: (size: number) => RiskLevel;
104
+ description: string;
105
+ migration: string;
106
+ nistRef?: string;
107
+ cweId?: string;
108
+ }
109
+ export interface CodeFinding {
110
+ /** Pattern ID that matched */
111
+ patternId: string;
112
+ /** Source file path (relative to scan root) */
113
+ file: string;
114
+ /** Line number (1-indexed) */
115
+ line: number;
116
+ /** The matched line content (trimmed) */
117
+ matchedLine: string;
118
+ /** Detected language */
119
+ language: Language;
120
+ /** Crypto category */
121
+ category: CryptoCategory;
122
+ /** Algorithm name, e.g., 'RSA-2048', 'ECDSA-P256', 'AES-128' */
123
+ algorithm: string;
124
+ /** Key size if detected */
125
+ keySize?: number;
126
+ /** Elliptic curve name if detected */
127
+ curve?: string;
128
+ /** Risk level */
129
+ risk: RiskLevel;
130
+ /** Human-readable reason */
131
+ reason: string;
132
+ /** Migration recommendation */
133
+ migration?: string;
134
+ /** Match confidence */
135
+ confidence: 'high' | 'medium' | 'low';
136
+ }
137
+ export interface CodeScanResult {
138
+ /** Root directory that was scanned */
139
+ scanRoot: string;
140
+ /** All findings */
141
+ findings: CodeFinding[];
142
+ /** Files scanned count */
143
+ filesScanned: number;
144
+ /** Files with findings count */
145
+ filesWithFindings: number;
146
+ /** Languages detected */
147
+ languagesDetected: Language[];
148
+ /** Scan duration in milliseconds */
149
+ durationMs: number;
150
+ }
151
+ export interface FileBreakdown {
152
+ file: string;
153
+ language: Language;
154
+ findings: CodeFinding[];
155
+ criticalCount: number;
156
+ moderateCount: number;
157
+ safeCount: number;
158
+ }
159
+ export interface CodeGradedResult {
160
+ /** Root directory */
161
+ scanRoot: string;
162
+ /** Overall display grade (e.g., 'C+', 'B-') */
163
+ grade: Grade;
164
+ /** Base grade without modifier */
165
+ baseGrade: BaseGrade;
166
+ /** Grade modifier */
167
+ modifier: GradeModifier;
168
+ /** All findings */
169
+ findings: CodeFinding[];
170
+ /** Migration notes (unique) */
171
+ migrationNotes: string[];
172
+ /** Summary counts */
173
+ summary: {
174
+ critical: number;
175
+ moderate: number;
176
+ safe: number;
177
+ total: number;
178
+ filesScanned: number;
179
+ filesWithFindings: number;
180
+ };
181
+ /** Per-file breakdown */
182
+ fileBreakdown: FileBreakdown[];
183
+ }
184
+ export interface AnalyzeOptions {
185
+ format: AnalyzeOutputFormat;
186
+ language?: Language;
187
+ failGrade: BaseGrade;
188
+ ignore: string[];
189
+ ignoreFile: string;
190
+ maxFiles: number;
191
+ verbose: boolean;
192
+ noMigration: boolean;
193
+ }
76
194
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}