scanoss 0.15.6 → 0.16.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/CHANGELOG.md +53 -87
- package/LICENSE +20 -20
- package/README.md +75 -3
- package/assets/ReportHTMLTemplate/index.html +11 -8
- package/assets/data/scanoss-crypto-library-rules.json +2930 -0
- package/build/main/cli/bin/cli-bin.js +6 -2
- package/build/main/cli/commands/crypto.js +14 -7
- package/build/main/cli/commands/scan.js +68 -25
- package/build/main/sdk/Cryptography/Algorithm/Components/ComponentAlgorithmScanner.d.ts +19 -0
- package/build/main/sdk/Cryptography/Algorithm/Components/ComponentAlgorithmScanner.js +27 -0
- package/build/main/sdk/Cryptography/Algorithm/Files/AlgorithmProcessor.d.ts +1 -0
- package/build/main/sdk/Cryptography/Algorithm/Files/AlgorithmProcessor.js +39 -0
- package/build/main/sdk/Cryptography/Algorithm/Files/FileAlgorithmScanner.d.ts +42 -0
- package/build/main/sdk/Cryptography/Algorithm/Files/FileAlgorithmScanner.js +87 -0
- package/build/main/sdk/Cryptography/{CryptoDef/CryptoDef.d.ts → Algorithm/Files/Helper/Helper.d.ts} +1 -1
- package/build/main/sdk/Cryptography/{CryptoDef/CryptoDef.js → Algorithm/Files/Helper/Helper.js} +1 -1
- package/build/main/sdk/Cryptography/{Scanneable → Algorithm/Files/Scanneable}/CryptoItem.d.ts +2 -2
- package/build/main/sdk/Cryptography/{Scanneable → Algorithm/Files/Scanneable}/CryptoItem.js +1 -1
- package/build/main/sdk/Cryptography/BaseCryptographyScanner.d.ts +25 -0
- package/build/main/sdk/Cryptography/BaseCryptographyScanner.js +23 -0
- package/build/main/sdk/Cryptography/CryptoCfg.d.ts +32 -5
- package/build/main/sdk/Cryptography/CryptoCfg.js +35 -5
- package/build/main/sdk/Cryptography/CryptographyScanner.d.ts +15 -21
- package/build/main/sdk/Cryptography/CryptographyScanner.js +31 -41
- package/build/main/sdk/Cryptography/CryptographyTypes.d.ts +47 -3
- package/build/main/sdk/Cryptography/Helper/ResultCollector/Component/ComponentCryptographyResultColletor.d.ts +32 -0
- package/build/main/sdk/Cryptography/Helper/ResultCollector/Component/ComponentCryptographyResultColletor.js +66 -0
- package/build/main/sdk/Cryptography/Helper/ResultCollector/File/FileCryptographyResultCollector.d.ts +36 -0
- package/build/main/sdk/Cryptography/Helper/ResultCollector/File/FileCryptographyResultCollector.js +65 -0
- package/build/main/sdk/Cryptography/Hint/Components/ComponentHintScanner.d.ts +19 -0
- package/build/main/sdk/Cryptography/Hint/Components/ComponentHintScanner.js +27 -0
- package/build/main/sdk/Cryptography/Hint/Files/FileHintScanner.d.ts +35 -0
- package/build/main/sdk/Cryptography/Hint/Files/FileHintScanner.js +69 -0
- package/build/main/sdk/Cryptography/Hint/Files/HintProcessor.d.ts +1 -0
- package/build/main/sdk/Cryptography/Hint/Files/HintProcessor.js +34 -0
- package/build/main/sdk/Filtering/Filtering.js +1 -2
- package/build/main/sdk/Logger.d.ts +2 -0
- package/build/main/sdk/Logger.js +7 -2
- package/build/main/sdk/Report/DataLayer/DataLayerTypes.d.ts +8 -4
- package/build/main/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.d.ts +7 -7
- package/build/main/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.js +71 -11
- package/build/main/sdk/Services/Grpc/BaseService.js +1 -1
- package/build/main/sdk/Services/Grpc/CryptographyService.d.ts +3 -0
- package/build/main/sdk/Services/Grpc/CryptographyService.js +16 -1
- package/build/main/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb.d.ts +72 -0
- package/build/main/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb.js +87 -3
- package/build/main/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_pb.js +1987 -127
- package/build/main/sdk/Utils/Concurrency/Job.d.ts +8 -0
- package/build/main/sdk/Utils/Concurrency/Job.js +17 -0
- package/build/main/sdk/Utils/Concurrency/JobProcessor.d.ts +10 -0
- package/build/main/sdk/Utils/Concurrency/JobProcessor.js +51 -0
- package/build/main/sdk/Utils/Concurrency/WorkerPool.d.ts +14 -0
- package/build/main/sdk/Utils/Concurrency/WorkerPool.js +69 -0
- package/build/main/sdk/Utils/Concurrency/types.d.ts +18 -0
- package/build/main/sdk/Utils/Concurrency/types.js +3 -0
- package/build/main/sdk/scanner/Scanner.d.ts +1 -1
- package/build/main/sdk/scanner/Scanner.js +16 -6
- package/build/main/sdk/scanner/ScannerTypes.js +1 -1
- package/build/main/tsconfig.tsbuildinfo +1 -1
- package/build/module/cli/bin/cli-bin.js +6 -2
- package/build/module/cli/commands/crypto.js +14 -7
- package/build/module/cli/commands/scan.js +89 -46
- package/build/module/sdk/Cryptography/Algorithm/Components/ComponentAlgorithmScanner.d.ts +19 -0
- package/build/module/sdk/Cryptography/Algorithm/Components/ComponentAlgorithmScanner.js +23 -0
- package/build/module/sdk/Cryptography/Algorithm/Files/AlgorithmProcessor.d.ts +1 -0
- package/build/module/sdk/Cryptography/Algorithm/Files/AlgorithmProcessor.js +36 -0
- package/build/module/sdk/Cryptography/Algorithm/Files/FileAlgorithmScanner.d.ts +42 -0
- package/build/module/sdk/Cryptography/Algorithm/Files/FileAlgorithmScanner.js +80 -0
- package/build/module/sdk/Cryptography/{CryptoDef/CryptoDef.d.ts → Algorithm/Files/Helper/Helper.d.ts} +1 -1
- package/build/module/sdk/Cryptography/{CryptoDef/CryptoDef.js → Algorithm/Files/Helper/Helper.js} +1 -1
- package/build/module/sdk/Cryptography/{Scanneable → Algorithm/Files/Scanneable}/CryptoItem.d.ts +2 -2
- package/build/module/sdk/Cryptography/{Scanneable → Algorithm/Files/Scanneable}/CryptoItem.js +1 -1
- package/build/module/sdk/Cryptography/BaseCryptographyScanner.d.ts +25 -0
- package/build/module/sdk/Cryptography/BaseCryptographyScanner.js +21 -0
- package/build/module/sdk/Cryptography/CryptoCfg.d.ts +32 -5
- package/build/module/sdk/Cryptography/CryptoCfg.js +39 -6
- package/build/module/sdk/Cryptography/CryptographyScanner.d.ts +15 -21
- package/build/module/sdk/Cryptography/CryptographyScanner.js +32 -39
- package/build/module/sdk/Cryptography/CryptographyTypes.d.ts +47 -3
- package/build/module/sdk/Cryptography/Helper/ResultCollector/Component/ComponentCryptographyResultColletor.d.ts +32 -0
- package/build/module/sdk/Cryptography/Helper/ResultCollector/Component/ComponentCryptographyResultColletor.js +60 -0
- package/build/module/sdk/Cryptography/Helper/ResultCollector/File/FileCryptographyResultCollector.d.ts +36 -0
- package/build/module/sdk/Cryptography/Helper/ResultCollector/File/FileCryptographyResultCollector.js +59 -0
- package/build/module/sdk/Cryptography/Hint/Components/ComponentHintScanner.d.ts +19 -0
- package/build/module/sdk/Cryptography/Hint/Components/ComponentHintScanner.js +23 -0
- package/build/module/sdk/Cryptography/Hint/Files/FileHintScanner.d.ts +35 -0
- package/build/module/sdk/Cryptography/Hint/Files/FileHintScanner.js +62 -0
- package/build/module/sdk/Cryptography/Hint/Files/HintProcessor.d.ts +1 -0
- package/build/module/sdk/Cryptography/Hint/Files/HintProcessor.js +31 -0
- package/build/module/sdk/Filtering/Filtering.js +1 -2
- package/build/module/sdk/Logger.d.ts +2 -0
- package/build/module/sdk/Logger.js +8 -2
- package/build/module/sdk/Report/DataLayer/DataLayerTypes.d.ts +8 -4
- package/build/module/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.d.ts +7 -7
- package/build/module/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.js +73 -14
- package/build/module/sdk/Services/Grpc/BaseService.js +1 -1
- package/build/module/sdk/Services/Grpc/CryptographyService.d.ts +3 -0
- package/build/module/sdk/Services/Grpc/CryptographyService.js +16 -1
- package/build/module/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb.d.ts +72 -0
- package/build/module/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb.js +87 -3
- package/build/module/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_pb.js +1987 -127
- package/build/module/sdk/Utils/Concurrency/Job.d.ts +8 -0
- package/build/module/sdk/Utils/Concurrency/Job.js +14 -0
- package/build/module/sdk/Utils/Concurrency/JobProcessor.d.ts +10 -0
- package/build/module/sdk/Utils/Concurrency/JobProcessor.js +47 -0
- package/build/module/sdk/Utils/Concurrency/WorkerPool.d.ts +14 -0
- package/build/module/sdk/Utils/Concurrency/WorkerPool.js +65 -0
- package/build/module/sdk/Utils/Concurrency/types.d.ts +18 -0
- package/build/module/sdk/Utils/Concurrency/types.js +2 -0
- package/build/module/sdk/scanner/Scanner.d.ts +1 -1
- package/build/module/sdk/scanner/Scanner.js +16 -7
- package/build/module/sdk/scanner/ScannerTypes.js +1 -1
- package/build/module/tsconfig.module.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/build/main/sdk/Cryptography/CryptoProvider/LocalCrypto.d.ts +0 -21
- package/build/main/sdk/Cryptography/CryptoProvider/LocalCrypto.js +0 -37
- package/build/main/sdk/Cryptography/Worker/ThreadPool.d.ts +0 -21
- package/build/main/sdk/Cryptography/Worker/ThreadPool.js +0 -87
- package/build/main/sdk/Cryptography/Worker/Worker.d.ts +0 -15
- package/build/main/sdk/Cryptography/Worker/Worker.js +0 -69
- package/build/main/sdk/Cryptography/utils/adapters/cryptoAdapters.d.ts +0 -8
- package/build/main/sdk/Cryptography/utils/adapters/cryptoAdapters.js +0 -15
- package/build/module/sdk/Cryptography/CryptoProvider/LocalCrypto.d.ts +0 -21
- package/build/module/sdk/Cryptography/CryptoProvider/LocalCrypto.js +0 -36
- package/build/module/sdk/Cryptography/Worker/ThreadPool.d.ts +0 -21
- package/build/module/sdk/Cryptography/Worker/ThreadPool.js +0 -89
- package/build/module/sdk/Cryptography/Worker/Worker.d.ts +0 -15
- package/build/module/sdk/Cryptography/Worker/Worker.js +0 -66
- package/build/module/sdk/Cryptography/utils/adapters/cryptoAdapters.d.ts +0 -8
- package/build/module/sdk/Cryptography/utils/adapters/cryptoAdapters.js +0 -12
- /package/assets/data/{defaultCryptoRules.json → scanoss-crypto-algorithm-rules.json} +0 -0
|
@@ -33,6 +33,9 @@ async function main() {
|
|
|
33
33
|
scan.addOption(new commander_1.Option("-M, --timeout <timeout>", "Timeout (in seconds) for API communication (optional -default 120)"));
|
|
34
34
|
scan.addOption(new commander_1.Option(" --obfuscate", "Obfuscate fingerprints"));
|
|
35
35
|
scan.addOption(new commander_1.Option("-D, --dependencies", "Add dependency scanning"));
|
|
36
|
+
scan.addOption(new commander_1.Option("-C, --cryptography", "Add cryptography scanning"));
|
|
37
|
+
scan.addOption(new commander_1.Option("-ar, --algorithm-rules <algorithm_rules>", "Path to crypto algorithms rules file (optional)."));
|
|
38
|
+
scan.addOption(new commander_1.Option("-lr, --library-rules <library_rules>", "Path to crypto library rules file (optional)."));
|
|
36
39
|
scan.addOption(new commander_1.Option(" --apiurl <apiurl>", "SCANOSS API URL (optional - default: https://api.osskb.org/scan/direct)"));
|
|
37
40
|
scan.addOption(new commander_1.Option(" --api2url <api2url>", "SCANOSS gRPC API 2.0 URL (optional - default: api.scanoss.com:443)"));
|
|
38
41
|
scan.addOption(new commander_1.Option("-k, --key <key>", "SCANOSS API Key token (optional - not required for default OSSKB URL)"));
|
|
@@ -74,7 +77,8 @@ async function main() {
|
|
|
74
77
|
cryptography.description("Scan local cryptography");
|
|
75
78
|
cryptography.addArgument(new commander_1.Argument("<source>"));
|
|
76
79
|
// Options
|
|
77
|
-
cryptography.addOption(new commander_1.Option("-
|
|
80
|
+
cryptography.addOption(new commander_1.Option("-ar, --algorithm-rules <algorithm_rules>", "Path to crypto algorithms rules file (optional)."));
|
|
81
|
+
cryptography.addOption(new commander_1.Option("-lr, --library-rules <library_rules>", "Path to crypto library rules file (optional)."));
|
|
78
82
|
cryptography.addOption(new commander_1.Option("-o, --output <filename>", "Output result file name (optional - default stdout)"));
|
|
79
83
|
cryptography.addOption(new commander_1.Option("-T, --threads <threads>", "Number of threads to use while scanning (optional - default 5)"));
|
|
80
84
|
cryptography.action((source, options) => {
|
|
@@ -98,4 +102,4 @@ catch (e) {
|
|
|
98
102
|
console.error(e);
|
|
99
103
|
process.exit(1);
|
|
100
104
|
}
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWJpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGkvYmluL2NsaS1iaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EseUNBQXNEO0FBRXRELGlEQUE4QztBQUM5Qyx5Q0FBNkM7QUFDN0MsMkNBQStDO0FBQy9DLHlDQUE2QztBQUM3QywrQ0FBbUQ7QUFFbkQsU0FBUyxlQUFlLENBQUMsQ0FBUTtJQUMvQixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDO0FBRUQsS0FBSyxVQUFVLElBQUk7SUFFakIsTUFBTSxJQUFJLEdBQUcsSUFBSSxtQkFBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxvQkFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDM0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLGlFQUFpRSxDQUFDLENBQUM7SUFFN0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLGtCQUFNLENBQUMsV0FBVyxFQUFFLHNDQUFzQyxDQUFDLENBQUMsQ0FBQztJQUNoRixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksa0JBQU0sQ0FBQyxZQUFZLEVBQUUsOENBQThDLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxrQkFBTSxDQUFDLGVBQWUsRUFBRSw2RUFBNkUsQ0FBQyxDQUFDLENBQUM7SUFDM0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLGtCQUFNLENBQUMsd0JBQXdCLEVBQUUsK0NBQStDLENBQUMsQ0FBQyxDQUFDO0lBQ3RHLElBQUks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
|
|
@@ -5,24 +5,28 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.cryptoHandler = cryptoHandler;
|
|
7
7
|
const helpers_1 = require("./helpers");
|
|
8
|
-
const CryptographyScanner_1 = require("../../sdk/Cryptography/CryptographyScanner");
|
|
9
8
|
const Tree_1 = require("../../sdk/tree/Tree");
|
|
10
9
|
const CryptoCfg_1 = require("../../sdk/Cryptography/CryptoCfg");
|
|
11
10
|
const fs_1 = __importDefault(require("fs"));
|
|
12
11
|
const BinaryFilter_1 = require("../../sdk/tree/Filters/BinaryFilter");
|
|
13
12
|
const ScanFilter_1 = require("../../sdk/tree/Filters/ScanFilter");
|
|
14
13
|
const FilterAND_1 = require("../../sdk/tree/Filters/FilterAND");
|
|
14
|
+
const CryptographyScanner_1 = require("../../sdk/Cryptography/CryptographyScanner");
|
|
15
15
|
async function cryptoHandler(rootPath, options) {
|
|
16
16
|
rootPath = rootPath.replace(/\/$/, ''); // Remove trailing slash if exists
|
|
17
17
|
rootPath = rootPath.replace(/^\./, process.env.PWD); // Convert relative path to absolute path.
|
|
18
18
|
const pathIsFolder = await (0, helpers_1.isFolder)(rootPath);
|
|
19
|
-
let
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
let algorithmRules = null;
|
|
20
|
+
let libraryRules = null;
|
|
21
|
+
if (options.algorithmRules)
|
|
22
|
+
algorithmRules = options.algorithmRules;
|
|
23
|
+
if (options.libraryRules)
|
|
24
|
+
libraryRules = options.libraryRules;
|
|
22
25
|
let threads = null;
|
|
23
26
|
if (options.threads)
|
|
24
27
|
threads = options.threads;
|
|
25
|
-
const
|
|
28
|
+
const cfg = new CryptoCfg_1.CryptoCfg({ threads, algorithmRulesPath: algorithmRules, libraryRulesPath: libraryRules });
|
|
29
|
+
const cryptoScanner = new CryptographyScanner_1.CryptographyScanner(cfg);
|
|
26
30
|
let fileList = [];
|
|
27
31
|
fileList.push(rootPath);
|
|
28
32
|
if (pathIsFolder) {
|
|
@@ -31,7 +35,10 @@ async function cryptoHandler(rootPath, options) {
|
|
|
31
35
|
fileList = tree.getFileList(new FilterAND_1.FilterAND([new BinaryFilter_1.BinaryFilter(), new ScanFilter_1.ScanFilter('')]));
|
|
32
36
|
}
|
|
33
37
|
console.log("Searching for local cryptography...");
|
|
34
|
-
const results = await cryptoScanner.
|
|
38
|
+
const results = await cryptoScanner.scanFiles(fileList);
|
|
39
|
+
results.fileList.forEach((c) => {
|
|
40
|
+
c.file = c.file.replace(rootPath, "");
|
|
41
|
+
});
|
|
35
42
|
if (options.output) {
|
|
36
43
|
await fs_1.default.promises.writeFile(options.output, JSON.stringify(results, null, 2));
|
|
37
44
|
console.log(`Results found in ${options.output}`);
|
|
@@ -40,4 +47,4 @@ async function cryptoHandler(rootPath, options) {
|
|
|
40
47
|
console.log(JSON.stringify(results, null, 2));
|
|
41
48
|
}
|
|
42
49
|
}
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NsaS9jb21tYW5kcy9jcnlwdG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFxQkEsc0NBc0NDO0FBM0RELHVDQUFxQztBQVFyQyw4Q0FBMkM7QUFFM0MsZ0VBQTZEO0FBQzdELDRDQUFvQjtBQUNwQixzRUFBbUU7QUFDbkUsa0VBQStEO0FBQy9ELGdFQUE2RDtBQUM3RCxvRkFFb0Q7QUFJN0MsS0FBSyxVQUFVLGFBQWEsQ0FBQyxRQUFnQixFQUFFLE9BQVk7SUFDaEUsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUUsa0NBQWtDO0lBQzNFLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUUsMENBQTBDO0lBQ2hHLE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBQSxrQkFBUSxFQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlDLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQztJQUMxQixJQUFJLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDeEIsSUFBRyxPQUFPLENBQUMsY0FBYztRQUFFLGNBQWMsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDO0lBQ25FLElBQUcsT0FBTyxDQUFDLFlBQVk7UUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQztJQUU3RCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDbkIsSUFBRyxPQUFPLENBQUMsT0FBTztRQUFFLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBRTlDLE1BQU0sR0FBRyxHQUFHLElBQUkscUJBQVMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQTtJQUV6RyxNQUFNLGFBQWEsR0FBRyxJQUFJLHlDQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRW5ELElBQUksUUFBUSxHQUFrQixFQUFFLENBQUM7SUFDakMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV4QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxHQUFHLElBQUksV0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUkscUJBQVMsQ0FBQyxDQUFDLElBQUksMkJBQVksRUFBRSxFQUFFLElBQUksdUJBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFBO0lBQ2xELE1BQU0sT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4RCxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFO1FBQzVCLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbEIsTUFBTSxZQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlFLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0FBRUgsQ0FBQyJ9
|
|
@@ -26,7 +26,10 @@ const DecompressionManager_1 = require("../../sdk/Decompress/DecompressionManage
|
|
|
26
26
|
const path_1 = __importDefault(require("path"));
|
|
27
27
|
const LicenseObligationDataProvider_1 = require("../../sdk/Report/DataLayer/DataProviders/LicenseObligationDataProvider");
|
|
28
28
|
const CryptographyDataProvider_1 = require("../../sdk/Report/DataLayer/DataProviders/CryptographyDataProvider");
|
|
29
|
+
const CryptoCfg_1 = require("../../sdk/Cryptography/CryptoCfg");
|
|
30
|
+
const CryptographyScanner_1 = require("../../sdk/Cryptography/CryptographyScanner");
|
|
29
31
|
async function scanHandler(rootPath, options) {
|
|
32
|
+
// TODO: Add flag to enable debug. False by default. logger.enableDebug(options.debug);
|
|
30
33
|
rootPath = path_1.default.resolve(rootPath);
|
|
31
34
|
const pathIsFolder = await (0, helpers_1.isFolder)(rootPath);
|
|
32
35
|
const projectName = (0, helpers_1.getProjectNameFromPath)(rootPath);
|
|
@@ -68,7 +71,7 @@ async function scanHandler(rootPath, options) {
|
|
|
68
71
|
let scannerInput = { fileList: [] };
|
|
69
72
|
// SBOM Ingestion
|
|
70
73
|
if (options.ignore) {
|
|
71
|
-
scannerInput.sbom = fs_1.default.readFileSync(options.ignore,
|
|
74
|
+
scannerInput.sbom = fs_1.default.readFileSync(options.ignore, "utf-8");
|
|
72
75
|
scannerInput.sbomMode = ScannerTypes_1.SbomMode.SBOM_IGNORE;
|
|
73
76
|
}
|
|
74
77
|
// Settings Ingestion
|
|
@@ -76,8 +79,8 @@ async function scanHandler(rootPath, options) {
|
|
|
76
79
|
const settingsFilePath = await (0, helpers_1.getSettingsFilePath)(options.settings, rootPath);
|
|
77
80
|
if (settingsFilePath) {
|
|
78
81
|
try {
|
|
79
|
-
|
|
80
|
-
scannerInput.
|
|
82
|
+
const scanossSettings = JSON.parse(fs_1.default.readFileSync(settingsFilePath, "utf-8"));
|
|
83
|
+
scannerInput.settings = scanossSettings;
|
|
81
84
|
}
|
|
82
85
|
catch (e) {
|
|
83
86
|
throw new Error(`SCANOSS Settings file cannot be found at: ${settingsFilePath}.`);
|
|
@@ -89,30 +92,28 @@ async function scanHandler(rootPath, options) {
|
|
|
89
92
|
scannerInput.engineFlags = options.flags;
|
|
90
93
|
if (options.wfp)
|
|
91
94
|
scannerInput.wfpPath = rootPath;
|
|
92
|
-
const wfpMode = options.hpsm
|
|
93
|
-
? ScannerTypes_1.WinnowingMode.FULL_WINNOWING_HPSM
|
|
94
|
-
: ScannerTypes_1.WinnowingMode.FULL_WINNOWING;
|
|
95
|
+
const wfpMode = options.hpsm ? ScannerTypes_1.WinnowingMode.FULL_WINNOWING_HPSM : ScannerTypes_1.WinnowingMode.FULL_WINNOWING;
|
|
95
96
|
scannerInput.winnowing = { mode: wfpMode };
|
|
96
97
|
if (!options.wfp) {
|
|
97
98
|
if (pathIsFolder) {
|
|
98
|
-
console.error(
|
|
99
|
+
console.error("\nReading directory... ");
|
|
99
100
|
const tree = new Tree_1.Tree(rootPath);
|
|
100
101
|
tree.build();
|
|
101
102
|
if (options.extract) {
|
|
102
|
-
const archives = tree.getFileList(new DecompressionFilter_1.DecompressionFilter(
|
|
103
|
-
console.error(
|
|
103
|
+
const archives = tree.getFileList(new DecompressionFilter_1.DecompressionFilter(""));
|
|
104
|
+
console.error("Searching archives files...");
|
|
104
105
|
if (archives.length) {
|
|
105
|
-
console.error(
|
|
106
|
+
console.error("Extracting archives...");
|
|
106
107
|
const decompressionManager = new DecompressionManager_1.DecompressionManager(options.extractDeep, options.extractSuffix, options.extractOverwrite);
|
|
107
108
|
await decompressionManager.decompress(archives);
|
|
108
|
-
console.error(
|
|
109
|
+
console.error("Reindexing files...");
|
|
109
110
|
tree.build();
|
|
110
111
|
}
|
|
111
112
|
else
|
|
112
|
-
console.error(
|
|
113
|
+
console.error("No archives found.");
|
|
113
114
|
}
|
|
114
|
-
scannerInput.fileList = tree.getFileList(new ScanFilter_1.ScanFilter(
|
|
115
|
-
dependencyInput = tree.getFileList(new DependencyFilter_1.DependencyFilter(
|
|
115
|
+
scannerInput.fileList = tree.getFileList(new ScanFilter_1.ScanFilter(""));
|
|
116
|
+
dependencyInput = tree.getFileList(new DependencyFilter_1.DependencyFilter(""));
|
|
116
117
|
}
|
|
117
118
|
else {
|
|
118
119
|
scannerInput.fileList = [rootPath];
|
|
@@ -120,12 +121,12 @@ async function scanHandler(rootPath, options) {
|
|
|
120
121
|
}
|
|
121
122
|
}
|
|
122
123
|
else {
|
|
123
|
-
const winnowing = fs_1.default.readFileSync(rootPath, { encoding:
|
|
124
|
+
const winnowing = fs_1.default.readFileSync(rootPath, { encoding: "utf-8" });
|
|
124
125
|
scannerInput.fileList.length = [...winnowing.matchAll(/file=/g)].length;
|
|
125
126
|
}
|
|
126
127
|
if (!options.verbose) {
|
|
127
128
|
const optBar1 = {
|
|
128
|
-
format:
|
|
129
|
+
format: "Scan Progress: [{bar}] {percentage}% | Scanned {value} files of {total}",
|
|
129
130
|
};
|
|
130
131
|
const bar1 = new cli_progress_1.default.SingleBar(optBar1, cli_progress_1.default.Presets.shades_classic);
|
|
131
132
|
bar1.start(scannerInput.fileList.length, 0);
|
|
@@ -146,25 +147,67 @@ async function scanHandler(rootPath, options) {
|
|
|
146
147
|
}
|
|
147
148
|
//Launch parallel scanners
|
|
148
149
|
const pScanner = scanner.scan([scannerInput]);
|
|
149
|
-
const [scannerResultPath, depResults] = await Promise.all([
|
|
150
|
-
|
|
151
|
-
pDependencyScanner,
|
|
152
|
-
]);
|
|
153
|
-
let scannerResults = JSON.parse(await fs_1.default.promises.readFile(scannerResultPath, 'utf-8'));
|
|
150
|
+
const [scannerResultPath, depResults] = await Promise.all([pScanner, pDependencyScanner]);
|
|
151
|
+
let scannerResults = JSON.parse(await fs_1.default.promises.readFile(scannerResultPath, "utf-8"));
|
|
154
152
|
//TODO Unify results.json and dependency.json. What happens with result.json that includes dependencies?
|
|
155
153
|
const scannersResults = {
|
|
156
154
|
scanner: scannerResults,
|
|
157
155
|
...(options.dependencies && { dependencies: depResults }),
|
|
158
156
|
};
|
|
159
|
-
let scannerResultsString = JSON.stringify(
|
|
160
|
-
|
|
157
|
+
let scannerResultsString = JSON.stringify(scannerResults, null, 2);
|
|
158
|
+
// Crypto
|
|
159
|
+
const resultsWithCrypto = {
|
|
160
|
+
scanner: scannerResults,
|
|
161
|
+
...{
|
|
162
|
+
cryptography: {
|
|
163
|
+
files: [],
|
|
164
|
+
components: [],
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
};
|
|
168
|
+
if (options.cryptography) {
|
|
169
|
+
// Load rules
|
|
170
|
+
let algorithmRules = null;
|
|
171
|
+
let libraryRules = null;
|
|
172
|
+
if (options.algorithmRules)
|
|
173
|
+
algorithmRules = options.algorithmRules;
|
|
174
|
+
if (options.libraryRules)
|
|
175
|
+
libraryRules = options.libraryRules;
|
|
176
|
+
// Local Cryptography
|
|
177
|
+
const cryptoCfg = new CryptoCfg_1.CryptoCfg({
|
|
178
|
+
threads: 5,
|
|
179
|
+
libraryRulesPath: libraryRules,
|
|
180
|
+
algorithmRulesPath: algorithmRules,
|
|
181
|
+
apiKey: options.key,
|
|
182
|
+
proxy: options.proxy,
|
|
183
|
+
});
|
|
184
|
+
const cryptoScanner = new CryptographyScanner_1.CryptographyScanner(cryptoCfg);
|
|
185
|
+
let localCrypto = await cryptoScanner.scanFiles(scannerInput.fileList);
|
|
186
|
+
localCrypto.fileList = localCrypto.fileList.map((c) => {
|
|
187
|
+
return { ...c, file: c.file.replace(rootPath, "") };
|
|
188
|
+
});
|
|
189
|
+
resultsWithCrypto.cryptography.files = localCrypto.fileList;
|
|
190
|
+
// Component Cryptography
|
|
191
|
+
if (options.key) {
|
|
192
|
+
let componentList = Object.values(scannersResults.scanner).flat();
|
|
193
|
+
componentList = componentList.filter((component) => component.id !== "none");
|
|
194
|
+
const cryptoRequest = {
|
|
195
|
+
purlsList: componentList.map((c) => {
|
|
196
|
+
return { purl: c.purl[0], requirement: c.version };
|
|
197
|
+
}),
|
|
198
|
+
};
|
|
199
|
+
resultsWithCrypto.cryptography.components = await cryptoScanner.scanComponents(cryptoRequest);
|
|
200
|
+
}
|
|
201
|
+
scannerResultsString = JSON.stringify(resultsWithCrypto, null, 2);
|
|
202
|
+
}
|
|
203
|
+
if (options.format && options.format.toLowerCase() === "html") {
|
|
161
204
|
const dataProviderManager = new DataProviderManager_1.DataProviderManager();
|
|
162
205
|
dataProviderManager.addDataProvider(new ComponentDataProvider_1.ComponentDataProvider(scannersResults.scanner, scannersResults.dependencies));
|
|
163
206
|
dataProviderManager.addDataProvider(new DependencyDataProvider_1.DependencyDataProvider(scannersResults.dependencies));
|
|
164
207
|
dataProviderManager.addDataProvider(new LicenseDataProvider_1.LicenseDataProvider(scannersResults.scanner, scannersResults.dependencies));
|
|
165
208
|
dataProviderManager.addDataProvider(new SummaryDataProvider_1.SummaryDataProvider(projectName, new Date(), scannersResults.scanner));
|
|
166
209
|
dataProviderManager.addDataProvider(new LicenseObligationDataProvider_1.LicenseObligationDataProvider(scannersResults.scanner, scannersResults.dependencies));
|
|
167
|
-
dataProviderManager.addDataProvider(new CryptographyDataProvider_1.CryptographyDataProvider(
|
|
210
|
+
dataProviderManager.addDataProvider(new CryptographyDataProvider_1.CryptographyDataProvider(resultsWithCrypto.cryptography.files, resultsWithCrypto.cryptography.components));
|
|
168
211
|
const report = new Report_1.Report(dataProviderManager);
|
|
169
212
|
scannerResultsString = await report.getHTML();
|
|
170
213
|
}
|
|
@@ -173,4 +216,4 @@ async function scanHandler(rootPath, options) {
|
|
|
173
216
|
else
|
|
174
217
|
console.log(scannerResultsString);
|
|
175
218
|
}
|
|
176
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGkvY29tbWFuZHMvc2Nhbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQXlDQSxrQ0FnTUM7QUF6T0QsNENBQW9CO0FBQ3BCLHVEQUFvRDtBQUNwRCxpRUFNd0M7QUFDeEMsNkRBQTBEO0FBQzFELDhDQUEyQztBQUMzQyxnRUFBdUM7QUFFdkMsdUNBSW1CO0FBRW5CLHNGQUFtRjtBQUNuRixnRkFBNkU7QUFFN0Usa0VBQStEO0FBQy9ELDhFQUEyRTtBQUMzRSxvREFBaUQ7QUFDakQsd0ZBQXFGO0FBQ3JGLDBHQUF1RztBQUN2Ryw0R0FBeUc7QUFDekcsc0dBQW1HO0FBQ25HLHNHQUFtRztBQUNuRyxvRkFBaUY7QUFDakYsb0ZBQWlGO0FBQ2pGLGdEQUF3QjtBQUN4QiwwSEFBdUg7QUFDdkgsZ0hBRTJFO0FBS3BFLEtBQUssVUFBVSxXQUFXLENBQy9CLFFBQWdCLEVBQ2hCLE9BQVk7SUFFWixRQUFRLEdBQUcsY0FBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUEsa0JBQVEsRUFBQyxRQUFRLENBQUMsQ0FBQztJQUM5QyxNQUFNLFdBQVcsR0FBRyxJQUFBLGdDQUFzQixFQUFDLFFBQVEsQ0FBQyxDQUFDO0lBSXJELCtDQUErQztJQUMvQyxJQUFJLGVBQWUsR0FBa0IsRUFBRSxDQUFDO0lBQ3hDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSwyQ0FBb0IsRUFBRSxDQUFDO0lBQ3hELElBQUksT0FBTyxDQUFDLE9BQU87UUFBRSxvQkFBb0IsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUNwRSxJQUFJLE9BQU8sQ0FBQyxVQUFVO1FBQUUsb0JBQW9CLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7SUFDN0UsTUFBTSxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN0QyxNQUFNLGlCQUFpQixHQUFHLElBQUkscUNBQWlCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUV0RSxnREFBZ0Q7SUFDaEQsTUFBTSxVQUFVLEdBQUcsSUFBSSx1QkFBVSxFQUFFLENBQUM7SUFDcEMsSUFBSSxPQUFPLENBQUMsV0FBVztRQUNyQixVQUFVLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMvRCxJQUFJLE9BQU8sQ0FBQyxRQUFRO1FBQ2xCLFVBQVUsQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNuRSxJQUFJLE9BQU8sQ0FBQyxNQUFNO1FBQUUsVUFBVSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBQ3hELElBQUksT0FBTyxDQUFDLEdBQUc7UUFBRSxVQUFVLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFDbEQsSUFBSSxPQUFPLENBQUMsT0FBTztRQUFFLFVBQVUsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDakUsSUFBSSxPQUFPLENBQUMsUUFBUTtRQUNsQixVQUFVLENBQUMsbUNBQW1DLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUNwRSxJQUFJLE9BQU8sQ0FBQyxNQUFNO1FBQUUsVUFBVSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBQ3hELElBQUksT0FBTyxDQUFDLGdCQUFnQjtRQUFFLFVBQVUsQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7SUFFbkUsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbEIsVUFBVSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQ3ZDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxPQUFPLENBQUMsU0FBUztRQUFFLFVBQVUsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO0lBRXpELE1BQU0sVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLE1BQU0sT0FBTyxHQUFHLElBQUksaUJBQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUV4QyxJQUFJLFlBQVksR0FBaUIsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFFbEQsaUJBQWlCO0lBQ2pCLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ25CLFlBQVksQ0FBQyxJQUFJLEdBQUcsWUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzdELFlBQVksQ0FBQyxRQUFRLEdBQUcsdUJBQVEsQ0FBQyxXQUFXLENBQUM7SUFDL0MsQ0FBQztJQUVELHFCQUFxQjtJQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDOUIsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLElBQUEsNkJBQW1CLEVBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvRSxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDO2dCQUNILFlBQVksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFFLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxDQUF3QixDQUFDO2dCQUN0RyxZQUFZLENBQUMsUUFBUSxHQUFHLHVCQUFRLENBQUMsYUFBYSxDQUFDO1lBQ2pELENBQUM7WUFBQyxPQUFNLENBQUMsRUFBRSxDQUFDO2dCQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztZQUNwRixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsVUFBVSxHQUFHLFFBQVEsR0FBRyxjQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsMkRBQTJEO0lBQzFHLElBQUksT0FBTyxDQUFDLEtBQUs7UUFBRSxZQUFZLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDNUQsSUFBSSxPQUFPLENBQUMsR0FBRztRQUFFLFlBQVksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDO0lBRWpELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJO1FBQzFCLENBQUMsQ0FBQyw0QkFBYSxDQUFDLG1CQUFtQjtRQUNuQyxDQUFDLENBQUMsNEJBQWEsQ0FBQyxjQUFjLENBQUM7SUFDakMsWUFBWSxDQUFDLFNBQVMsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUUzQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsT0FBTyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1lBQzFDLE1BQU0sSUFBSSxHQUFHLElBQUksV0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUViLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNwQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUkseUNBQW1CLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDL0QsT0FBTyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDcEIsT0FBTyxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO29CQUN4QyxNQUFNLG9CQUFvQixHQUFHLElBQUksMkNBQW9CLENBQ25ELE9BQU8sQ0FBQyxXQUFXLEVBQ25CLE9BQU8sQ0FBQyxhQUFhLEVBQ3JCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FDekIsQ0FBQztvQkFDRixNQUFNLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDaEQsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO29CQUNyQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2YsQ0FBQzs7b0JBQU0sT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFDRCxZQUFZLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSx1QkFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDN0QsZUFBZSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxtQ0FBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9ELENBQUM7YUFBTSxDQUFDO1lBQ04sWUFBWSxDQUFDLFFBQVEsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ25DLGVBQWUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9CLENBQUM7SUFDSCxDQUFDO1NBQU0sQ0FBQztRQUNOLE1BQU0sU0FBUyxHQUFHLFlBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDbkUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDMUUsQ0FBQztJQUVELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDckIsTUFBTSxPQUFPLEdBQUc7WUFDZCxNQUFNLEVBQ0oseUVBQXlFO1NBQzVFLENBQUM7UUFDRixNQUFNLElBQUksR0FBRyxJQUFJLHNCQUFXLENBQUMsU0FBUyxDQUNwQyxPQUFPLEVBQ1Asc0JBQVcsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUNuQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU1QyxPQUFPLENBQUMsRUFBRSxDQUNSLDRCQUFhLENBQUMsbUJBQW1CLEVBQ2pDLENBQUMsUUFBNEIsRUFBRSxFQUFFO1lBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BELENBQUMsQ0FDRixDQUFDO1FBRUYsT0FBTyxDQUFDLEVBQUUsQ0FBQyw0QkFBYSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUU7WUFDdkQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sQ0FBQyxFQUFFLENBQUMsNEJBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQscUJBQXFCO0lBQ3JCLElBQUksa0JBQWtCLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBc0IsRUFBRSxDQUFDLENBQUM7SUFDbEUsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDekIsa0JBQWtCLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCwwQkFBMEI7SUFDMUIsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFFOUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLFVBQVUsQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUN4RCxRQUFRO1FBQ1Isa0JBQWtCO0tBQ25CLENBQUMsQ0FBQztJQUNILElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQzdCLE1BQU0sWUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLENBQ3ZELENBQUM7SUFHRix3R0FBd0c7SUFDeEcsTUFBTSxlQUFlLEdBQUc7UUFDdEIsT0FBTyxFQUFFLGNBQWdDO1FBQ3pDLEdBQUcsQ0FBQyxPQUFPLENBQUMsWUFBWSxJQUFJLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxDQUFDO0tBQzFELENBQUM7SUFFRixJQUFJLG9CQUFvQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVwRSxJQUFJLE9BQU8sQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsS0FBSyxNQUFNLEVBQUUsQ0FBQztRQUM5RCxNQUFNLG1CQUFtQixHQUFHLElBQUkseUNBQW1CLEVBQUUsQ0FBQztRQUN0RCxtQkFBbUIsQ0FBQyxlQUFlLENBQ2pDLElBQUksNkNBQXFCLENBQ3ZCLGVBQWUsQ0FBQyxPQUFPLEVBQ3ZCLGVBQWUsQ0FBQyxZQUFZLENBQzdCLENBQ0YsQ0FBQztRQUNGLG1CQUFtQixDQUFDLGVBQWUsQ0FDakMsSUFBSSwrQ0FBc0IsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQ3pELENBQUM7UUFDRixtQkFBbUIsQ0FBQyxlQUFlLENBQ2pDLElBQUkseUNBQW1CLENBQ3JCLGVBQWUsQ0FBQyxPQUFPLEVBQ3ZCLGVBQWUsQ0FBQyxZQUFZLENBQzdCLENBQ0YsQ0FBQztRQUNGLG1CQUFtQixDQUFDLGVBQWUsQ0FDakMsSUFBSSx5Q0FBbUIsQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxlQUFlLENBQUMsT0FBTyxDQUFDLENBQzFFLENBQUM7UUFFRixtQkFBbUIsQ0FBQyxlQUFlLENBQ2pDLElBQUksNkRBQTZCLENBQy9CLGVBQWUsQ0FBQyxPQUFPLEVBQ3ZCLGVBQWUsQ0FBQyxZQUFZLENBQzdCLENBQ0YsQ0FBQztRQUVGLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxJQUFJLG1EQUF3QixDQUFDLElBQUksRUFBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUVoRyxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQy9DLG9CQUFvQixHQUFHLE1BQU0sTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxNQUFNO1FBQ2hCLE1BQU0sWUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxvQkFBb0IsQ0FBQyxDQUFDOztRQUMvRCxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFDekMsQ0FBQyJ9
|
|
219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGkvY29tbWFuZHMvc2Nhbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQThCQSxrQ0EwTUM7QUF4T0QsNENBQW9CO0FBQ3BCLHVEQUFvRDtBQUNwRCxpRUFBc0g7QUFDdEgsNkRBQTBEO0FBQzFELDhDQUEyQztBQUMzQyxnRUFBdUM7QUFFdkMsdUNBQWtGO0FBRWxGLHNGQUFtRjtBQUNuRixnRkFBNkU7QUFFN0Usa0VBQStEO0FBQy9ELDhFQUEyRTtBQUMzRSxvREFBaUQ7QUFDakQsd0ZBQXFGO0FBQ3JGLDBHQUF1RztBQUN2Ryw0R0FBeUc7QUFDekcsc0dBQW1HO0FBQ25HLHNHQUFtRztBQUNuRyxvRkFBaUY7QUFDakYsb0ZBQWlGO0FBQ2pGLGdEQUF3QjtBQUN4QiwwSEFBdUg7QUFDdkgsZ0hBQTZHO0FBRTdHLGdFQUE2RDtBQUM3RCxvRkFBaUY7QUFHMUUsS0FBSyxVQUFVLFdBQVcsQ0FBQyxRQUFnQixFQUFFLE9BQVk7SUFDOUQsd0ZBQXdGO0lBQ3hGLFFBQVEsR0FBRyxjQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBQSxrQkFBUSxFQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sV0FBVyxHQUFHLElBQUEsZ0NBQXNCLEVBQUMsUUFBUSxDQUFDLENBQUM7SUFFckQsK0NBQStDO0lBQy9DLElBQUksZUFBZSxHQUFrQixFQUFFLENBQUM7SUFDeEMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLDJDQUFvQixFQUFFLENBQUM7SUFDeEQsSUFBSSxPQUFPLENBQUMsT0FBTztRQUFFLG9CQUFvQixDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQ3BFLElBQUksT0FBTyxDQUFDLFVBQVU7UUFBRSxvQkFBb0IsQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FB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
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ComponentCryptographyResultCollector } from "../../Helper/ResultCollector/Component/ComponentCryptographyResultColletor";
|
|
2
|
+
import { AlgorithmResponse } from "../../../Services/Grpc/CryptographyService";
|
|
3
|
+
import { PurlRequest } from "../../../Services/Grpc/BaseService";
|
|
4
|
+
import { BaseCryptographyScanner } from "../../BaseCryptographyScanner";
|
|
5
|
+
/**
|
|
6
|
+
* Scanner for detecting cryptographic algorithms in software components.
|
|
7
|
+
* This class extends the base cryptography scanner to specifically handle
|
|
8
|
+
* component-level cryptographic algorithm detection using a remote service.
|
|
9
|
+
*/
|
|
10
|
+
export declare class ComponentAlgorithmScanner extends BaseCryptographyScanner<ComponentCryptographyResultCollector, PurlRequest, AlgorithmResponse> {
|
|
11
|
+
/**
|
|
12
|
+
* Scans components identified by PURL for cryptographic algorithms.
|
|
13
|
+
* This method connects to a cryptography service to retrieve algorithm
|
|
14
|
+
* information for the specified components.
|
|
15
|
+
* @param req A request containing PURL (Package URL) identifiers for components to scan.
|
|
16
|
+
* @returns {AlgorithmResponse} A promise that resolves to an AlgorithmResponse containing detected cryptographic algorithms.
|
|
17
|
+
*/
|
|
18
|
+
scan(req: PurlRequest): Promise<AlgorithmResponse>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ComponentAlgorithmScanner = void 0;
|
|
4
|
+
const CryptographyService_1 = require("../../../Services/Grpc/CryptographyService");
|
|
5
|
+
const BaseCryptographyScanner_1 = require("../../BaseCryptographyScanner");
|
|
6
|
+
/**
|
|
7
|
+
* Scanner for detecting cryptographic algorithms in software components.
|
|
8
|
+
* This class extends the base cryptography scanner to specifically handle
|
|
9
|
+
* component-level cryptographic algorithm detection using a remote service.
|
|
10
|
+
*/
|
|
11
|
+
class ComponentAlgorithmScanner extends BaseCryptographyScanner_1.BaseCryptographyScanner {
|
|
12
|
+
/**
|
|
13
|
+
* Scans components identified by PURL for cryptographic algorithms.
|
|
14
|
+
* This method connects to a cryptography service to retrieve algorithm
|
|
15
|
+
* information for the specified components.
|
|
16
|
+
* @param req A request containing PURL (Package URL) identifiers for components to scan.
|
|
17
|
+
* @returns {AlgorithmResponse} A promise that resolves to an AlgorithmResponse containing detected cryptographic algorithms.
|
|
18
|
+
*/
|
|
19
|
+
async scan(req) {
|
|
20
|
+
const cryptographyService = new CryptographyService_1.CryptographyService(this.config.getApikey(), this.config.getProxy());
|
|
21
|
+
const results = await cryptographyService.getAlgorithms(req);
|
|
22
|
+
this.resultCollector.collectAlgorithmResults(results);
|
|
23
|
+
return results;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.ComponentAlgorithmScanner = ComponentAlgorithmScanner;
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcG9uZW50QWxnb3JpdGhtU2Nhbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvQ3J5cHRvZ3JhcGh5L0FsZ29yaXRobS9Db21wb25lbnRzL0NvbXBvbmVudEFsZ29yaXRobVNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0Esb0ZBR29EO0FBRXBELDJFQUF3RTtBQUV4RTs7OztHQUlHO0FBQ0gsTUFBYSx5QkFDWCxTQUFRLGlEQUdZO0lBRXBCOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBZ0I7UUFDaEMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLHlDQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQ3pFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMxQixNQUFNLE9BQU8sR0FBcUIsTUFBTSxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0UsSUFBSSxDQUFDLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0NBQ0Y7QUFwQkQsOERBb0JDIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const cryptographyAlgorithmProcessor = "\nconst { parentPort } = require('worker_threads');\nconst fs = require('fs');\n\nparentPort.on('message', async (job) => {\n\n const MAX_FILE_SIZE = 2 * 1024 * 1024 * 1024;\n const { data } = job;\n const { file, rules, cryptoMapper } = data;\n\n const cryptoFound = new Array();\n const stats = await fs.promises.stat(file);\n if (stats.size > MAX_FILE_SIZE) {\n parentPort.postMessage({ file, algorithms:[] });\n return;\n }\n\n let content = fs.readFileSync(file, 'utf-8');\n rules.forEach((value, key) => {\n try {\n const matches = content.match(value);\n if (matches) {\n cryptoFound.push(key);\n }\n } catch (e){\n console.error(e);\n }\n });\n const algorithms = [];\n cryptoFound.forEach((cf)=>{\n algorithms.push(cryptoMapper.get(cf));\n });\n parentPort.postMessage({ file, algorithms });\n });\n";
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cryptographyAlgorithmProcessor = void 0;
|
|
4
|
+
exports.cryptographyAlgorithmProcessor = `
|
|
5
|
+
const { parentPort } = require('worker_threads');
|
|
6
|
+
const fs = require('fs');
|
|
7
|
+
|
|
8
|
+
parentPort.on('message', async (job) => {
|
|
9
|
+
|
|
10
|
+
const MAX_FILE_SIZE = 2 * 1024 * 1024 * 1024;
|
|
11
|
+
const { data } = job;
|
|
12
|
+
const { file, rules, cryptoMapper } = data;
|
|
13
|
+
|
|
14
|
+
const cryptoFound = new Array();
|
|
15
|
+
const stats = await fs.promises.stat(file);
|
|
16
|
+
if (stats.size > MAX_FILE_SIZE) {
|
|
17
|
+
parentPort.postMessage({ file, algorithms:[] });
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
let content = fs.readFileSync(file, 'utf-8');
|
|
22
|
+
rules.forEach((value, key) => {
|
|
23
|
+
try {
|
|
24
|
+
const matches = content.match(value);
|
|
25
|
+
if (matches) {
|
|
26
|
+
cryptoFound.push(key);
|
|
27
|
+
}
|
|
28
|
+
} catch (e){
|
|
29
|
+
console.error(e);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
const algorithms = [];
|
|
33
|
+
cryptoFound.forEach((cf)=>{
|
|
34
|
+
algorithms.push(cryptoMapper.get(cf));
|
|
35
|
+
});
|
|
36
|
+
parentPort.postMessage({ file, algorithms });
|
|
37
|
+
});
|
|
38
|
+
`;
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWxnb3JpdGhtUHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay9DcnlwdG9ncmFwaHkvQWxnb3JpdGhtL0ZpbGVzL0FsZ29yaXRobVByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBYSxRQUFBLDhCQUE4QixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBa0M3QyxDQUFDIn0=
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { CryptoCfg } from '../../CryptoCfg';
|
|
2
|
+
import { CryptoAlgorithmJobResponse } from "../../CryptographyTypes";
|
|
3
|
+
import { BaseCryptographyScanner } from "../../BaseCryptographyScanner";
|
|
4
|
+
import { FileCryptographyResultCollector } from "../../Helper/ResultCollector/File/FileCryptographyResultCollector";
|
|
5
|
+
/**
|
|
6
|
+
* A class responsible for scanning files for cryptographic items.
|
|
7
|
+
*/
|
|
8
|
+
export declare class FileAlgorithmScanner extends BaseCryptographyScanner<FileCryptographyResultCollector, Array<string>, Array<CryptoAlgorithmJobResponse>> {
|
|
9
|
+
private readonly DEFAULT_CRYPTO_ALGORITHM_RULE_FILENAME;
|
|
10
|
+
/**
|
|
11
|
+
* Constructs a new CryptographyScanner.
|
|
12
|
+
* @param cryptoCfg The cryptographic configuration.
|
|
13
|
+
* @param resultCollector cryptography results collector
|
|
14
|
+
*/
|
|
15
|
+
constructor(cryptoCfg: CryptoCfg, resultCollector: FileCryptographyResultCollector);
|
|
16
|
+
/**
|
|
17
|
+
Builds a collection of cryptographic algorithm analysis jobs from an array of files.
|
|
18
|
+
This method loads cryptography rules, creates required mappers, and initializes
|
|
19
|
+
job objects for each file that will be used for crypto pattern detection.
|
|
20
|
+
@param files An array of file paths to analyze for cryptographic algorithm usage.
|
|
21
|
+
@returns A promise that resolves to an array of job objects configured for crypto analysis.
|
|
22
|
+
*/
|
|
23
|
+
private buildJobs;
|
|
24
|
+
/**
|
|
25
|
+
* Scans an array of files for cryptographic items.
|
|
26
|
+
* @param files An array of file paths to scan.
|
|
27
|
+
* @returns A promise that resolves to an ILocalCryptographyResponse.
|
|
28
|
+
*/
|
|
29
|
+
scan(files: Array<string>): Promise<Array<CryptoAlgorithmJobResponse>>;
|
|
30
|
+
/**
|
|
31
|
+
* Scans a folder for cryptographic items.
|
|
32
|
+
* @param path The path of the folder to scan.
|
|
33
|
+
* @returns A promise that resolves to an ILocalCryptographyResponse.
|
|
34
|
+
* @throws Error if the specified path is not a directory.
|
|
35
|
+
*/
|
|
36
|
+
scanFolder(path: string): Promise<Array<CryptoAlgorithmJobResponse>>;
|
|
37
|
+
/**
|
|
38
|
+
* Loads custom cryptographic rules from a file.
|
|
39
|
+
* @returns A promise that resolves to the loaded rules.
|
|
40
|
+
*/
|
|
41
|
+
private loadRules;
|
|
42
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.FileAlgorithmScanner = void 0;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const Tree_1 = require("../../../tree/Tree");
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const Helper_1 = require("./Helper/Helper");
|
|
11
|
+
const Job_1 = require("../../../Utils/Concurrency/Job");
|
|
12
|
+
const WorkerPool_1 = require("../../../Utils/Concurrency/WorkerPool");
|
|
13
|
+
const AlgorithmProcessor_1 = require("./AlgorithmProcessor");
|
|
14
|
+
const BaseCryptographyScanner_1 = require("../../BaseCryptographyScanner");
|
|
15
|
+
/**
|
|
16
|
+
* A class responsible for scanning files for cryptographic items.
|
|
17
|
+
*/
|
|
18
|
+
class FileAlgorithmScanner extends BaseCryptographyScanner_1.BaseCryptographyScanner {
|
|
19
|
+
/**
|
|
20
|
+
* Constructs a new CryptographyScanner.
|
|
21
|
+
* @param cryptoCfg The cryptographic configuration.
|
|
22
|
+
* @param resultCollector cryptography results collector
|
|
23
|
+
*/
|
|
24
|
+
constructor(cryptoCfg, resultCollector) {
|
|
25
|
+
super(cryptoCfg, resultCollector);
|
|
26
|
+
this.DEFAULT_CRYPTO_ALGORITHM_RULE_FILENAME = 'scanoss-crypto-algorithm-rules.json';
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
Builds a collection of cryptographic algorithm analysis jobs from an array of files.
|
|
30
|
+
This method loads cryptography rules, creates required mappers, and initializes
|
|
31
|
+
job objects for each file that will be used for crypto pattern detection.
|
|
32
|
+
@param files An array of file paths to analyze for cryptographic algorithm usage.
|
|
33
|
+
@returns A promise that resolves to an array of job objects configured for crypto analysis.
|
|
34
|
+
*/
|
|
35
|
+
async buildJobs(files) {
|
|
36
|
+
const cryptographyRules = await this.loadRules(this.config.getAlgorithmRulesPath());
|
|
37
|
+
const rules = (0, Helper_1.createCryptoKeywordMapper)(cryptographyRules);
|
|
38
|
+
const cryptoMapper = (0, Helper_1.getCryptoMapper)(cryptographyRules);
|
|
39
|
+
const localCryptoJobs = [];
|
|
40
|
+
files.forEach((f) => {
|
|
41
|
+
const newJob = new Job_1.Job({
|
|
42
|
+
file: f,
|
|
43
|
+
rules,
|
|
44
|
+
cryptoMapper
|
|
45
|
+
});
|
|
46
|
+
localCryptoJobs.push(newJob);
|
|
47
|
+
});
|
|
48
|
+
return localCryptoJobs;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Scans an array of files for cryptographic items.
|
|
52
|
+
* @param files An array of file paths to scan.
|
|
53
|
+
* @returns A promise that resolves to an ILocalCryptographyResponse.
|
|
54
|
+
*/
|
|
55
|
+
async scan(files) {
|
|
56
|
+
const workerPool = new WorkerPool_1.WorkerPool(AlgorithmProcessor_1.cryptographyAlgorithmProcessor, this.config.getNumberOfThreads());
|
|
57
|
+
const jobs = await this.buildJobs(files);
|
|
58
|
+
workerPool.loadJobs(jobs);
|
|
59
|
+
const results = await workerPool.run();
|
|
60
|
+
this.resultCollector.collectAlgorithmResults(results);
|
|
61
|
+
return results;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Scans a folder for cryptographic items.
|
|
65
|
+
* @param path The path of the folder to scan.
|
|
66
|
+
* @returns A promise that resolves to an ILocalCryptographyResponse.
|
|
67
|
+
* @throws Error if the specified path is not a directory.
|
|
68
|
+
*/
|
|
69
|
+
async scanFolder(path) {
|
|
70
|
+
if (!(await fs_1.default.promises.lstat(path)).isDirectory())
|
|
71
|
+
throw new Error('Specified path is not a directory');
|
|
72
|
+
const tree = new Tree_1.Tree(path);
|
|
73
|
+
tree.build();
|
|
74
|
+
return await this.scan(tree.getFileList());
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Loads custom cryptographic rules from a file.
|
|
78
|
+
* @returns A promise that resolves to the loaded rules.
|
|
79
|
+
*/
|
|
80
|
+
async loadRules(rulePath) {
|
|
81
|
+
const cryptoRulePath = rulePath ? rulePath : path_1.default.join(__dirname, '../../../../../../assets/data', this.DEFAULT_CRYPTO_ALGORITHM_RULE_FILENAME);
|
|
82
|
+
const rules = await fs_1.default.promises.readFile(cryptoRulePath, 'utf-8');
|
|
83
|
+
return JSON.parse(rules);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
exports.FileAlgorithmScanner = FileAlgorithmScanner;
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlsZUFsZ29yaXRobVNjYW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0NyeXB0b2dyYXBoeS9BbGdvcml0aG0vRmlsZXMvRmlsZUFsZ29yaXRobVNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNENBQW9CO0FBQ3BCLDZDQUEwQztBQVExQyxnREFBd0I7QUFDeEIsNENBR3lCO0FBQ3pCLHdEQUFxRDtBQUNyRCxzRUFBbUU7QUFDbkUsNkRBQXNFO0FBQ3RFLDJFQUF3RTtBQU14RTs7R0FFRztBQUNILE1BQWEsb0JBQXFCLFNBQVEsaURBR047SUFJbEM7Ozs7T0FJRztJQUNILFlBQVksU0FBb0IsRUFBRSxlQUFnRDtRQUNoRixLQUFLLENBQUMsU0FBUyxFQUFDLGVBQWUsQ0FBQyxDQUFDO1FBUmxCLDJDQUFzQyxHQUFHLHFDQUFxQyxDQUFDO0lBU2hHLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxLQUFLLENBQUUsU0FBUyxDQUFDLEtBQWU7UUFDdEMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUM7UUFDcEYsTUFBTSxLQUFLLEdBQUcsSUFBQSxrQ0FBeUIsRUFBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzNELE1BQU0sWUFBWSxHQUFHLElBQUEsd0JBQWUsRUFBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sZUFBZSxHQUF3QyxFQUFFLENBQUM7UUFDaEUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2xCLE1BQU0sTUFBTSxHQUFHLElBQUksU0FBRyxDQUEwQjtnQkFDOUMsSUFBSSxFQUFDLENBQUM7Z0JBQ04sS0FBSztnQkFDTCxZQUFZO2FBQ2IsQ0FBQyxDQUFDO1lBQ0gsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUM5QixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFvQjtRQUNwQyxNQUFNLFVBQVUsR0FBRyxJQUFJLHVCQUFVLENBQXNELG1EQUE4QixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBQ3pKLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3pCLE1BQU0sT0FBTyxHQUFHLE1BQU0sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxlQUFlLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFZO1FBQ2xDLElBQUksQ0FBQyxDQUFDLE1BQU0sWUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUU7WUFDaEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sSUFBSSxHQUFHLElBQUksV0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLE9BQU8sTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7O09BR0c7SUFDSyxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQWlCO1FBQ3ZDLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBRSxjQUFJLENBQUMsSUFBSSxDQUNyRCxTQUFTLEVBQ1QsK0JBQStCLEVBQUUsSUFBSSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7UUFDaEYsTUFBTSxLQUFLLEdBQUcsTUFBTSxZQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUMsT0FBTyxDQUFDLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7Q0FFRjtBQS9FRCxvREErRUMifQ==
|
package/build/main/sdk/Cryptography/{CryptoDef/CryptoDef.d.ts → Algorithm/Files/Helper/Helper.d.ts}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CryptoAlgorithm, CryptoAlgorithmRules } from '
|
|
1
|
+
import { CryptoAlgorithm, CryptoAlgorithmRules } from '../../../CryptographyTypes';
|
|
2
2
|
/**
|
|
3
3
|
* Function to create a mapping of regular expressions based on provided crypto definitions.
|
|
4
4
|
* @param cryptoRulesDefinitions An array of objects containing cryptographic definitions.
|
package/build/main/sdk/Cryptography/{CryptoDef/CryptoDef.js → Algorithm/Files/Helper/Helper.js}
RENAMED
|
@@ -35,4 +35,4 @@ function getCryptoMapper(cryptoDefinitions) {
|
|
|
35
35
|
});
|
|
36
36
|
return cryptoMapper;
|
|
37
37
|
}
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay9DcnlwdG9ncmFwaHkvQWxnb3JpdGhtL0ZpbGVzL0hlbHBlci9IZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFRQSw4REFZQztBQVFELDBDQVNDO0FBbkNEOzs7OztHQUtHO0FBQ0gsU0FBZ0IseUJBQXlCLENBQUMsc0JBQW1EO0lBQzNGLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFpQixDQUFDO0lBQ3hDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUEsRUFBRTtRQUNoQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDakIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRTtZQUN0QixNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzdELEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFMUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsZUFBZSxDQUFDLGlCQUE4QztJQUMzRSxNQUFNLFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQztJQUV4RCxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUMvQixNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNsQyxnREFBZ0Q7UUFDaEQsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLFlBQVksQ0FBQztBQUN0QixDQUFDIn0=
|
package/build/main/sdk/Cryptography/{Scanneable → Algorithm/Files/Scanneable}/CryptoItem.d.ts
RENAMED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { CryptoAlgorithm
|
|
1
|
+
import { CryptoAlgorithm } from '../../../CryptographyTypes';
|
|
2
2
|
/**
|
|
3
3
|
* Represents a cryptographic item containing information about a file and cryptographic algorithms found in it.
|
|
4
4
|
*/
|
|
5
|
-
export declare class CryptoItem
|
|
5
|
+
export declare class CryptoItem {
|
|
6
6
|
file: string;
|
|
7
7
|
algorithms: Array<CryptoAlgorithm>;
|
|
8
8
|
/**
|
|
@@ -36,4 +36,4 @@ class CryptoItem {
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
exports.CryptoItem = CryptoItem;
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvSXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvQ3J5cHRvZ3JhcGh5L0FsZ29yaXRobS9GaWxlcy9TY2FubmVhYmxlL0NyeXB0b0l0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUE7O0dBRUc7QUFDSCxNQUFhLFVBQVU7SUFLckI7OztPQUdHO0lBQ0gsWUFBWSxJQUFZO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxPQUFPO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRDs7O09BR0c7SUFDSSxhQUFhO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksYUFBYSxDQUFDLFVBQWtDO1FBQ3JELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7Q0FFRjtBQXRDRCxnQ0FzQ0MifQ==
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { CryptoCfg } from "./CryptoCfg";
|
|
2
|
+
/**
|
|
3
|
+
* Abstract base class for cryptography scanners.
|
|
4
|
+
* Provides common functionality for different types of cryptography scanners.
|
|
5
|
+
* @template C Type of result collector
|
|
6
|
+
* @template I Type of input to be scanned
|
|
7
|
+
* @template R Type of returned scan result
|
|
8
|
+
*/
|
|
9
|
+
export declare abstract class BaseCryptographyScanner<C, I, R> {
|
|
10
|
+
protected config: CryptoCfg;
|
|
11
|
+
protected resultCollector: C;
|
|
12
|
+
/**
|
|
13
|
+
* Creates a new instance of a cryptography scanner.
|
|
14
|
+
* @param cfg Configuration settings for the scanner.
|
|
15
|
+
* @param cryptoResultCollector Collector for storing scan results.
|
|
16
|
+
*/
|
|
17
|
+
constructor(cfg: CryptoCfg, cryptoResultCollector: C);
|
|
18
|
+
/**
|
|
19
|
+
* Scans the provided input for cryptographic items.
|
|
20
|
+
* This method must be implemented by derived classes.
|
|
21
|
+
* @param files Input to be scanned.
|
|
22
|
+
* @returns A promise that resolves to the scan result.
|
|
23
|
+
*/
|
|
24
|
+
abstract scan(files: I): Promise<R>;
|
|
25
|
+
}
|