postquant 0.1.1 → 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.
- package/README.md +67 -12
- package/dist/commands/analyze.d.ts +9 -0
- package/dist/commands/analyze.d.ts.map +1 -0
- package/dist/commands/analyze.js +119 -0
- package/dist/commands/analyze.js.map +1 -0
- package/dist/commands/scan.d.ts.map +1 -1
- package/dist/commands/scan.js +1 -1
- package/dist/commands/scan.js.map +1 -1
- package/dist/index.js +45 -2
- package/dist/index.js.map +1 -1
- package/dist/output/cbom.d.ts +3 -0
- package/dist/output/cbom.d.ts.map +1 -0
- package/dist/output/cbom.js +235 -0
- package/dist/output/cbom.js.map +1 -0
- package/dist/output/json-code.d.ts +3 -0
- package/dist/output/json-code.d.ts.map +1 -0
- package/dist/output/json-code.js +29 -0
- package/dist/output/json-code.js.map +1 -0
- package/dist/output/json.d.ts.map +1 -1
- package/dist/output/json.js +2 -0
- package/dist/output/json.js.map +1 -1
- package/dist/output/sarif.d.ts +3 -0
- package/dist/output/sarif.d.ts.map +1 -0
- package/dist/output/sarif.js +240 -0
- package/dist/output/sarif.js.map +1 -0
- package/dist/output/terminal-code.d.ts +7 -0
- package/dist/output/terminal-code.d.ts.map +1 -0
- package/dist/output/terminal-code.js +95 -0
- package/dist/output/terminal-code.js.map +1 -0
- package/dist/output/terminal.d.ts.map +1 -1
- package/dist/output/terminal.js +20 -14
- package/dist/output/terminal.js.map +1 -1
- package/dist/scanner/code/classifier.d.ts +9 -0
- package/dist/scanner/code/classifier.d.ts.map +1 -0
- package/dist/scanner/code/classifier.js +19 -0
- package/dist/scanner/code/classifier.js.map +1 -0
- package/dist/scanner/code/discovery.d.ts +17 -0
- package/dist/scanner/code/discovery.d.ts.map +1 -0
- package/dist/scanner/code/discovery.js +167 -0
- package/dist/scanner/code/discovery.js.map +1 -0
- package/dist/scanner/code/grader.d.ts +27 -0
- package/dist/scanner/code/grader.d.ts.map +1 -0
- package/dist/scanner/code/grader.js +115 -0
- package/dist/scanner/code/grader.js.map +1 -0
- package/dist/scanner/code/matcher.d.ts +11 -0
- package/dist/scanner/code/matcher.d.ts.map +1 -0
- package/dist/scanner/code/matcher.js +208 -0
- package/dist/scanner/code/matcher.js.map +1 -0
- package/dist/scanner/code/patterns/go.d.ts +3 -0
- package/dist/scanner/code/patterns/go.d.ts.map +1 -0
- package/dist/scanner/code/patterns/go.js +226 -0
- package/dist/scanner/code/patterns/go.js.map +1 -0
- package/dist/scanner/code/patterns/index.d.ts +11 -0
- package/dist/scanner/code/patterns/index.d.ts.map +1 -0
- package/dist/scanner/code/patterns/index.js +20 -0
- package/dist/scanner/code/patterns/index.js.map +1 -0
- package/dist/scanner/code/patterns/java.d.ts +3 -0
- package/dist/scanner/code/patterns/java.d.ts.map +1 -0
- package/dist/scanner/code/patterns/java.js +239 -0
- package/dist/scanner/code/patterns/java.js.map +1 -0
- package/dist/scanner/code/patterns/javascript.d.ts +3 -0
- package/dist/scanner/code/patterns/javascript.d.ts.map +1 -0
- package/dist/scanner/code/patterns/javascript.js +243 -0
- package/dist/scanner/code/patterns/javascript.js.map +1 -0
- package/dist/scanner/code/patterns/python.d.ts +3 -0
- package/dist/scanner/code/patterns/python.d.ts.map +1 -0
- package/dist/scanner/code/patterns/python.js +255 -0
- package/dist/scanner/code/patterns/python.js.map +1 -0
- package/dist/scanner/grader.d.ts +2 -2
- package/dist/scanner/grader.d.ts.map +1 -1
- package/dist/scanner/grader.js +23 -10
- package/dist/scanner/grader.js.map +1 -1
- package/dist/types/index.d.ts +124 -2
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/types/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export type RiskLevel = 'critical' | 'moderate' | 'safe';
|
|
2
|
-
export type Grade = 'A+' | 'A' | 'B' | 'C' | 'D' | 'F';
|
|
2
|
+
export type Grade = 'A+' | 'A' | 'A-' | 'B+' | 'B' | 'B-' | 'C+' | 'C' | 'C-' | 'D+' | 'D' | 'D-' | 'F';
|
|
3
|
+
export type BaseGrade = 'A+' | 'A' | 'B' | 'C' | 'D' | 'F';
|
|
4
|
+
export type GradeModifier = '+' | '' | '-';
|
|
3
5
|
export type ComponentType = 'protocol' | 'certificate' | 'keyExchange' | 'cipher' | 'hash';
|
|
4
6
|
export type OutputFormat = 'terminal' | 'json';
|
|
5
7
|
export interface TlsScanResult {
|
|
@@ -48,6 +50,8 @@ export interface GradedResult {
|
|
|
48
50
|
host: string;
|
|
49
51
|
port: number;
|
|
50
52
|
grade: Grade;
|
|
53
|
+
baseGrade: BaseGrade;
|
|
54
|
+
modifier: GradeModifier;
|
|
51
55
|
findings: ClassifiedFinding[];
|
|
52
56
|
migrationNotes: string[];
|
|
53
57
|
summary: {
|
|
@@ -66,7 +70,125 @@ export interface ScanOptions {
|
|
|
66
70
|
format: OutputFormat;
|
|
67
71
|
timeout: number;
|
|
68
72
|
verbose: boolean;
|
|
69
|
-
failGrade:
|
|
73
|
+
failGrade: BaseGrade;
|
|
70
74
|
file?: string;
|
|
71
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
|
+
}
|
|
72
194
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AAEzD,MAAM,MAAM,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|