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.
Files changed (131) hide show
  1. package/CHANGELOG.md +53 -87
  2. package/LICENSE +20 -20
  3. package/README.md +75 -3
  4. package/assets/ReportHTMLTemplate/index.html +11 -8
  5. package/assets/data/scanoss-crypto-library-rules.json +2930 -0
  6. package/build/main/cli/bin/cli-bin.js +6 -2
  7. package/build/main/cli/commands/crypto.js +14 -7
  8. package/build/main/cli/commands/scan.js +68 -25
  9. package/build/main/sdk/Cryptography/Algorithm/Components/ComponentAlgorithmScanner.d.ts +19 -0
  10. package/build/main/sdk/Cryptography/Algorithm/Components/ComponentAlgorithmScanner.js +27 -0
  11. package/build/main/sdk/Cryptography/Algorithm/Files/AlgorithmProcessor.d.ts +1 -0
  12. package/build/main/sdk/Cryptography/Algorithm/Files/AlgorithmProcessor.js +39 -0
  13. package/build/main/sdk/Cryptography/Algorithm/Files/FileAlgorithmScanner.d.ts +42 -0
  14. package/build/main/sdk/Cryptography/Algorithm/Files/FileAlgorithmScanner.js +87 -0
  15. package/build/main/sdk/Cryptography/{CryptoDef/CryptoDef.d.ts → Algorithm/Files/Helper/Helper.d.ts} +1 -1
  16. package/build/main/sdk/Cryptography/{CryptoDef/CryptoDef.js → Algorithm/Files/Helper/Helper.js} +1 -1
  17. package/build/main/sdk/Cryptography/{Scanneable → Algorithm/Files/Scanneable}/CryptoItem.d.ts +2 -2
  18. package/build/main/sdk/Cryptography/{Scanneable → Algorithm/Files/Scanneable}/CryptoItem.js +1 -1
  19. package/build/main/sdk/Cryptography/BaseCryptographyScanner.d.ts +25 -0
  20. package/build/main/sdk/Cryptography/BaseCryptographyScanner.js +23 -0
  21. package/build/main/sdk/Cryptography/CryptoCfg.d.ts +32 -5
  22. package/build/main/sdk/Cryptography/CryptoCfg.js +35 -5
  23. package/build/main/sdk/Cryptography/CryptographyScanner.d.ts +15 -21
  24. package/build/main/sdk/Cryptography/CryptographyScanner.js +31 -41
  25. package/build/main/sdk/Cryptography/CryptographyTypes.d.ts +47 -3
  26. package/build/main/sdk/Cryptography/Helper/ResultCollector/Component/ComponentCryptographyResultColletor.d.ts +32 -0
  27. package/build/main/sdk/Cryptography/Helper/ResultCollector/Component/ComponentCryptographyResultColletor.js +66 -0
  28. package/build/main/sdk/Cryptography/Helper/ResultCollector/File/FileCryptographyResultCollector.d.ts +36 -0
  29. package/build/main/sdk/Cryptography/Helper/ResultCollector/File/FileCryptographyResultCollector.js +65 -0
  30. package/build/main/sdk/Cryptography/Hint/Components/ComponentHintScanner.d.ts +19 -0
  31. package/build/main/sdk/Cryptography/Hint/Components/ComponentHintScanner.js +27 -0
  32. package/build/main/sdk/Cryptography/Hint/Files/FileHintScanner.d.ts +35 -0
  33. package/build/main/sdk/Cryptography/Hint/Files/FileHintScanner.js +69 -0
  34. package/build/main/sdk/Cryptography/Hint/Files/HintProcessor.d.ts +1 -0
  35. package/build/main/sdk/Cryptography/Hint/Files/HintProcessor.js +34 -0
  36. package/build/main/sdk/Filtering/Filtering.js +1 -2
  37. package/build/main/sdk/Logger.d.ts +2 -0
  38. package/build/main/sdk/Logger.js +7 -2
  39. package/build/main/sdk/Report/DataLayer/DataLayerTypes.d.ts +8 -4
  40. package/build/main/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.d.ts +7 -7
  41. package/build/main/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.js +71 -11
  42. package/build/main/sdk/Services/Grpc/BaseService.js +1 -1
  43. package/build/main/sdk/Services/Grpc/CryptographyService.d.ts +3 -0
  44. package/build/main/sdk/Services/Grpc/CryptographyService.js +16 -1
  45. package/build/main/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb.d.ts +72 -0
  46. package/build/main/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb.js +87 -3
  47. package/build/main/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_pb.js +1987 -127
  48. package/build/main/sdk/Utils/Concurrency/Job.d.ts +8 -0
  49. package/build/main/sdk/Utils/Concurrency/Job.js +17 -0
  50. package/build/main/sdk/Utils/Concurrency/JobProcessor.d.ts +10 -0
  51. package/build/main/sdk/Utils/Concurrency/JobProcessor.js +51 -0
  52. package/build/main/sdk/Utils/Concurrency/WorkerPool.d.ts +14 -0
  53. package/build/main/sdk/Utils/Concurrency/WorkerPool.js +69 -0
  54. package/build/main/sdk/Utils/Concurrency/types.d.ts +18 -0
  55. package/build/main/sdk/Utils/Concurrency/types.js +3 -0
  56. package/build/main/sdk/scanner/Scanner.d.ts +1 -1
  57. package/build/main/sdk/scanner/Scanner.js +16 -6
  58. package/build/main/sdk/scanner/ScannerTypes.js +1 -1
  59. package/build/main/tsconfig.tsbuildinfo +1 -1
  60. package/build/module/cli/bin/cli-bin.js +6 -2
  61. package/build/module/cli/commands/crypto.js +14 -7
  62. package/build/module/cli/commands/scan.js +89 -46
  63. package/build/module/sdk/Cryptography/Algorithm/Components/ComponentAlgorithmScanner.d.ts +19 -0
  64. package/build/module/sdk/Cryptography/Algorithm/Components/ComponentAlgorithmScanner.js +23 -0
  65. package/build/module/sdk/Cryptography/Algorithm/Files/AlgorithmProcessor.d.ts +1 -0
  66. package/build/module/sdk/Cryptography/Algorithm/Files/AlgorithmProcessor.js +36 -0
  67. package/build/module/sdk/Cryptography/Algorithm/Files/FileAlgorithmScanner.d.ts +42 -0
  68. package/build/module/sdk/Cryptography/Algorithm/Files/FileAlgorithmScanner.js +80 -0
  69. package/build/module/sdk/Cryptography/{CryptoDef/CryptoDef.d.ts → Algorithm/Files/Helper/Helper.d.ts} +1 -1
  70. package/build/module/sdk/Cryptography/{CryptoDef/CryptoDef.js → Algorithm/Files/Helper/Helper.js} +1 -1
  71. package/build/module/sdk/Cryptography/{Scanneable → Algorithm/Files/Scanneable}/CryptoItem.d.ts +2 -2
  72. package/build/module/sdk/Cryptography/{Scanneable → Algorithm/Files/Scanneable}/CryptoItem.js +1 -1
  73. package/build/module/sdk/Cryptography/BaseCryptographyScanner.d.ts +25 -0
  74. package/build/module/sdk/Cryptography/BaseCryptographyScanner.js +21 -0
  75. package/build/module/sdk/Cryptography/CryptoCfg.d.ts +32 -5
  76. package/build/module/sdk/Cryptography/CryptoCfg.js +39 -6
  77. package/build/module/sdk/Cryptography/CryptographyScanner.d.ts +15 -21
  78. package/build/module/sdk/Cryptography/CryptographyScanner.js +32 -39
  79. package/build/module/sdk/Cryptography/CryptographyTypes.d.ts +47 -3
  80. package/build/module/sdk/Cryptography/Helper/ResultCollector/Component/ComponentCryptographyResultColletor.d.ts +32 -0
  81. package/build/module/sdk/Cryptography/Helper/ResultCollector/Component/ComponentCryptographyResultColletor.js +60 -0
  82. package/build/module/sdk/Cryptography/Helper/ResultCollector/File/FileCryptographyResultCollector.d.ts +36 -0
  83. package/build/module/sdk/Cryptography/Helper/ResultCollector/File/FileCryptographyResultCollector.js +59 -0
  84. package/build/module/sdk/Cryptography/Hint/Components/ComponentHintScanner.d.ts +19 -0
  85. package/build/module/sdk/Cryptography/Hint/Components/ComponentHintScanner.js +23 -0
  86. package/build/module/sdk/Cryptography/Hint/Files/FileHintScanner.d.ts +35 -0
  87. package/build/module/sdk/Cryptography/Hint/Files/FileHintScanner.js +62 -0
  88. package/build/module/sdk/Cryptography/Hint/Files/HintProcessor.d.ts +1 -0
  89. package/build/module/sdk/Cryptography/Hint/Files/HintProcessor.js +31 -0
  90. package/build/module/sdk/Filtering/Filtering.js +1 -2
  91. package/build/module/sdk/Logger.d.ts +2 -0
  92. package/build/module/sdk/Logger.js +8 -2
  93. package/build/module/sdk/Report/DataLayer/DataLayerTypes.d.ts +8 -4
  94. package/build/module/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.d.ts +7 -7
  95. package/build/module/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.js +73 -14
  96. package/build/module/sdk/Services/Grpc/BaseService.js +1 -1
  97. package/build/module/sdk/Services/Grpc/CryptographyService.d.ts +3 -0
  98. package/build/module/sdk/Services/Grpc/CryptographyService.js +16 -1
  99. package/build/module/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb.d.ts +72 -0
  100. package/build/module/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb.js +87 -3
  101. package/build/module/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_pb.js +1987 -127
  102. package/build/module/sdk/Utils/Concurrency/Job.d.ts +8 -0
  103. package/build/module/sdk/Utils/Concurrency/Job.js +14 -0
  104. package/build/module/sdk/Utils/Concurrency/JobProcessor.d.ts +10 -0
  105. package/build/module/sdk/Utils/Concurrency/JobProcessor.js +47 -0
  106. package/build/module/sdk/Utils/Concurrency/WorkerPool.d.ts +14 -0
  107. package/build/module/sdk/Utils/Concurrency/WorkerPool.js +65 -0
  108. package/build/module/sdk/Utils/Concurrency/types.d.ts +18 -0
  109. package/build/module/sdk/Utils/Concurrency/types.js +2 -0
  110. package/build/module/sdk/scanner/Scanner.d.ts +1 -1
  111. package/build/module/sdk/scanner/Scanner.js +16 -7
  112. package/build/module/sdk/scanner/ScannerTypes.js +1 -1
  113. package/build/module/tsconfig.module.tsbuildinfo +1 -1
  114. package/package.json +1 -1
  115. package/build/main/sdk/Cryptography/CryptoProvider/LocalCrypto.d.ts +0 -21
  116. package/build/main/sdk/Cryptography/CryptoProvider/LocalCrypto.js +0 -37
  117. package/build/main/sdk/Cryptography/Worker/ThreadPool.d.ts +0 -21
  118. package/build/main/sdk/Cryptography/Worker/ThreadPool.js +0 -87
  119. package/build/main/sdk/Cryptography/Worker/Worker.d.ts +0 -15
  120. package/build/main/sdk/Cryptography/Worker/Worker.js +0 -69
  121. package/build/main/sdk/Cryptography/utils/adapters/cryptoAdapters.d.ts +0 -8
  122. package/build/main/sdk/Cryptography/utils/adapters/cryptoAdapters.js +0 -15
  123. package/build/module/sdk/Cryptography/CryptoProvider/LocalCrypto.d.ts +0 -21
  124. package/build/module/sdk/Cryptography/CryptoProvider/LocalCrypto.js +0 -36
  125. package/build/module/sdk/Cryptography/Worker/ThreadPool.d.ts +0 -21
  126. package/build/module/sdk/Cryptography/Worker/ThreadPool.js +0 -89
  127. package/build/module/sdk/Cryptography/Worker/Worker.d.ts +0 -15
  128. package/build/module/sdk/Cryptography/Worker/Worker.js +0 -66
  129. package/build/module/sdk/Cryptography/utils/adapters/cryptoAdapters.d.ts +0 -8
  130. package/build/module/sdk/Cryptography/utils/adapters/cryptoAdapters.js +0 -12
  131. /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("-r, --rules <rules>", "Crypto rules"));
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWJpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGkvYmluL2NsaS1iaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EseUNBQXNEO0FBRXRELGlEQUE4QztBQUM5Qyx5Q0FBNkM7QUFDN0MsMkNBQStDO0FBQy9DLHlDQUE2QztBQUM3QywrQ0FBbUQ7QUFFbkQsU0FBUyxlQUFlLENBQUMsQ0FBUTtJQUMvQixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDO0FBRUQsS0FBSyxVQUFVLElBQUk7SUFFakIsTUFBTSxJQUFJLEdBQUcsSUFBSSxtQkFBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxvQkFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDM0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLGlFQUFpRSxDQUFDLENBQUM7SUFFN0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLGtCQUFNLENBQUMsV0FBVyxFQUFFLHNDQUFzQyxDQUFDLENBQUMsQ0FBQztJQUNoRixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksa0JBQU0sQ0FBQyxZQUFZLEVBQUUsOENBQThDLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxrQkFBTSxDQUFDLGVBQWUsRUFBRSw2RUFBNkUsQ0FBQyxDQUFDLENBQUM7SUFDM0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLGtCQUFNLENBQUMsd0JBQXdCLEVBQUUsK0NBQStDLENBQUMsQ0FBQyxDQUFDO0lBQ3RHLElBQUks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
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 cryptoRules = null;
20
- if (options.rules)
21
- cryptoRules = options.rules;
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 cryptoScanner = new CryptographyScanner_1.CryptographyScanner(new CryptoCfg_1.CryptoCfg({ threads, rulesPath: cryptoRules }));
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.scan(fileList);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NsaS9jb21tYW5kcy9jcnlwdG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFpQkEsc0NBZ0NDO0FBakRELHVDQUFxQztBQUtyQyxvRkFFb0Q7QUFDcEQsOENBQTJDO0FBRTNDLGdFQUE2RDtBQUM3RCw0Q0FBb0I7QUFDcEIsc0VBQW1FO0FBQ25FLGtFQUErRDtBQUMvRCxnRUFBNkQ7QUFHdEQsS0FBSyxVQUFVLGFBQWEsQ0FBQyxRQUFnQixFQUFFLE9BQVk7SUFDaEUsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUUsa0NBQWtDO0lBQzNFLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUUsMENBQTBDO0lBQ2hHLE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBQSxrQkFBUSxFQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTlDLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQztJQUN2QixJQUFHLE9BQU8sQ0FBQyxLQUFLO1FBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFFOUMsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ25CLElBQUcsT0FBTyxDQUFDLE9BQU87UUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUU5QyxNQUFNLGFBQWEsR0FBRyxJQUFJLHlDQUFtQixDQUFDLElBQUkscUJBQVMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWhHLElBQUksUUFBUSxHQUFrQixFQUFFLENBQUM7SUFDakMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV4QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxHQUFHLElBQUksV0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUkscUJBQVMsQ0FBQyxDQUFDLElBQUksMkJBQVksRUFBRSxFQUFFLElBQUksdUJBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFBO0lBQ2xELE1BQU0sT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUVuRCxJQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNsQixNQUFNLFlBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7QUFFSCxDQUFDIn0=
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, 'utf-8');
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
- scannerInput.settings = JSON.parse(fs_1.default.readFileSync(settingsFilePath, "utf-8"));
80
- scannerInput.sbomMode = ScannerTypes_1.SbomMode.SBOM_IDENTIFY;
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('\nReading directory... ');
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('Searching archives files...');
103
+ const archives = tree.getFileList(new DecompressionFilter_1.DecompressionFilter(""));
104
+ console.error("Searching archives files...");
104
105
  if (archives.length) {
105
- console.error('Extracting archives...');
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('Reindexing files...');
109
+ console.error("Reindexing files...");
109
110
  tree.build();
110
111
  }
111
112
  else
112
- console.error('No archives found.');
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: 'utf-8' });
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: 'Scan Progress: [{bar}] {percentage}% | Scanned {value} files of {total}',
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
- pScanner,
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(scannersResults, null, 2);
160
- if (options.format && options.format.toLowerCase() === 'html') {
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(null, scannersResults.scanner));
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGkvY29tbWFuZHMvc2Nhbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQXlDQSxrQ0FnTUM7QUF6T0QsNENBQW9CO0FBQ3BCLHVEQUFvRDtBQUNwRCxpRUFNd0M7QUFDeEMsNkRBQTBEO0FBQzFELDhDQUEyQztBQUMzQyxnRUFBdUM7QUFFdkMsdUNBSW1CO0FBRW5CLHNGQUFtRjtBQUNuRixnRkFBNkU7QUFFN0Usa0VBQStEO0FBQy9ELDhFQUEyRTtBQUMzRSxvREFBaUQ7QUFDakQsd0ZBQXFGO0FBQ3JGLDBHQUF1RztBQUN2Ryw0R0FBeUc7QUFDekcsc0dBQW1HO0FBQ25HLHNHQUFtRztBQUNuRyxvRkFBaUY7QUFDakYsb0ZBQWlGO0FBQ2pGLGdEQUF3QjtBQUN4QiwwSEFBdUg7QUFDdkgsZ0hBRTJFO0FBS3BFLEtBQUssVUFBVSxXQUFXLENBQy9CLFFBQWdCLEVBQ2hCLE9BQVk7SUFFWixRQUFRLEdBQUcsY0FBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUEsa0JBQVEsRUFBQyxRQUFRLENBQUMsQ0FBQztJQUM5QyxNQUFNLFdBQVcsR0FBRyxJQUFBLGdDQUFzQixFQUFDLFFBQVEsQ0FBQyxDQUFDO0lBSXJELCtDQUErQztJQUMvQyxJQUFJLGVBQWUsR0FBa0IsRUFBRSxDQUFDO0lBQ3hDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSwyQ0FBb0IsRUFBRSxDQUFDO0lBQ3hELElBQUksT0FBTyxDQUFDLE9BQU87UUFBRSxvQkFBb0IsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUNwRSxJQUFJLE9BQU8sQ0FBQyxVQUFVO1FBQUUsb0JBQW9CLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7SUFDN0UsTUFBTSxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsQ0FB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
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==
@@ -1,4 +1,4 @@
1
- import { CryptoAlgorithm, CryptoAlgorithmRules } from '../CryptographyTypes';
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.
@@ -35,4 +35,4 @@ function getCryptoMapper(cryptoDefinitions) {
35
35
  });
36
36
  return cryptoMapper;
37
37
  }
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvRGVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay9DcnlwdG9ncmFwaHkvQ3J5cHRvRGVmL0NyeXB0b0RlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVNBLDhEQVlDO0FBUUQsMENBU0M7QUFuQ0Q7Ozs7O0dBS0c7QUFDSCxTQUFnQix5QkFBeUIsQ0FBQyxzQkFBbUQ7SUFDM0YsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQWlCLENBQUM7SUFDeEMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQSxFQUFFO1FBQ2hDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNqQixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFO1lBQ3RCLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDN0QsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUxQixDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixlQUFlLENBQUMsaUJBQThDO0lBQzNFLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxFQUFlLENBQUM7SUFFNUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDL0IsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbEMsZ0RBQWdEO1FBQ2hELFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQyJ9
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay9DcnlwdG9ncmFwaHkvQWxnb3JpdGhtL0ZpbGVzL0hlbHBlci9IZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFRQSw4REFZQztBQVFELDBDQVNDO0FBbkNEOzs7OztHQUtHO0FBQ0gsU0FBZ0IseUJBQXlCLENBQUMsc0JBQW1EO0lBQzNGLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFpQixDQUFDO0lBQ3hDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUEsRUFBRTtRQUNoQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDakIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRTtZQUN0QixNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzdELEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFMUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsZUFBZSxDQUFDLGlCQUE4QztJQUMzRSxNQUFNLFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQztJQUV4RCxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUMvQixNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNsQyxnREFBZ0Q7UUFDaEQsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLFlBQVksQ0FBQztBQUN0QixDQUFDIn0=
@@ -1,8 +1,8 @@
1
- import { CryptoAlgorithm, ICryptoItem } from '../CryptographyTypes';
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 implements ICryptoItem {
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvSXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvQ3J5cHRvZ3JhcGh5L1NjYW5uZWFibGUvQ3J5cHRvSXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQTs7R0FFRztBQUNILE1BQWEsVUFBVTtJQUtyQjs7O09BR0c7SUFDSCxZQUFZLElBQVk7UUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE9BQU87UUFDWixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxhQUFhLENBQUMsVUFBa0M7UUFDckQsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztDQUVGO0FBdENELGdDQXNDQyJ9
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
+ }