scanoss 0.12.2 → 0.13.1

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 (39) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/assets/ReportHTMLTemplate/index.html +82 -37
  3. package/build/main/cli/bin/cli-bin.js +2 -1
  4. package/build/main/cli/commands/crypto.js +5 -2
  5. package/build/main/cli/commands/scan.js +3 -1
  6. package/build/main/sdk/Cryptography/CryptoCfg.d.ts +10 -2
  7. package/build/main/sdk/Cryptography/CryptoCfg.js +11 -4
  8. package/build/main/sdk/Cryptography/CryptoProvider/LocalCrypto.d.ts +3 -8
  9. package/build/main/sdk/Cryptography/CryptoProvider/LocalCrypto.js +10 -43
  10. package/build/main/sdk/Cryptography/CryptographyScanner.js +2 -2
  11. package/build/main/sdk/Cryptography/Worker/ThreadPool.d.ts +21 -0
  12. package/build/main/sdk/Cryptography/Worker/ThreadPool.js +86 -0
  13. package/build/main/sdk/Cryptography/Worker/Worker.d.ts +16 -0
  14. package/build/main/sdk/Cryptography/Worker/Worker.js +68 -0
  15. package/build/main/sdk/Cryptography/utils/adapters/cryptoAdapters.js +2 -2
  16. package/build/main/sdk/Report/DataLayer/DataLayerTypes.d.ts +13 -0
  17. package/build/main/sdk/Report/DataLayer/DataProviderManager.js +2 -1
  18. package/build/main/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.d.ts +14 -0
  19. package/build/main/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.js +54 -0
  20. package/build/main/tsconfig.tsbuildinfo +72 -14
  21. package/build/module/cli/bin/cli-bin.js +2 -1
  22. package/build/module/cli/commands/crypto.js +5 -2
  23. package/build/module/cli/commands/scan.js +3 -1
  24. package/build/module/sdk/Cryptography/CryptoCfg.d.ts +10 -2
  25. package/build/module/sdk/Cryptography/CryptoCfg.js +11 -4
  26. package/build/module/sdk/Cryptography/CryptoProvider/LocalCrypto.d.ts +3 -8
  27. package/build/module/sdk/Cryptography/CryptoProvider/LocalCrypto.js +10 -40
  28. package/build/module/sdk/Cryptography/CryptographyScanner.js +2 -2
  29. package/build/module/sdk/Cryptography/Worker/ThreadPool.d.ts +21 -0
  30. package/build/module/sdk/Cryptography/Worker/ThreadPool.js +83 -0
  31. package/build/module/sdk/Cryptography/Worker/Worker.d.ts +16 -0
  32. package/build/module/sdk/Cryptography/Worker/Worker.js +65 -0
  33. package/build/module/sdk/Cryptography/utils/adapters/cryptoAdapters.js +2 -2
  34. package/build/module/sdk/Report/DataLayer/DataLayerTypes.d.ts +13 -0
  35. package/build/module/sdk/Report/DataLayer/DataProviderManager.js +2 -1
  36. package/build/module/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.d.ts +14 -0
  37. package/build/module/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.js +51 -0
  38. package/build/module/tsconfig.module.tsbuildinfo +72 -14
  39. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  import { CryptoItem } from '../Scanneable/CryptoItem';
2
2
  import { createCryptoKeywordMapper, getCryptoMapper, } from '../CryptoDef/CryptoDef';
3
- import fs from 'fs';
3
+ import { ThreadPool } from '../Worker/ThreadPool';
4
4
  /**
5
5
  * Represents a CryptoCalculator used for searching cryptographic algorithms in files.
6
6
  */
@@ -8,11 +8,12 @@ export class LocalCrypto {
8
8
  /**
9
9
  * Constructs a new LocalCrypto.
10
10
  * @param cryptoRules An array of CryptoAlgorithmRules used to create the search rules.
11
+ * @param threads Number of threads to be use to scan local cryptography (default = 5).
11
12
  */
12
- constructor(cryptoRules) {
13
- this.MAX_FILE_SIZE = 2 * 1024 * 1024 * 1024;
13
+ constructor(cryptoRules, threads) {
14
14
  this.cryptoRules = createCryptoKeywordMapper(cryptoRules);
15
15
  this.cryptoMapper = getCryptoMapper(cryptoRules);
16
+ this.threads = threads;
16
17
  }
17
18
  /**
18
19
  * Searches for cryptographic algorithms in the content of a files.
@@ -21,43 +22,12 @@ export class LocalCrypto {
21
22
  async search(files) {
22
23
  if (files.length <= 0)
23
24
  return [];
24
- const cryptoItems = files.map((f) => { return new CryptoItem(f); });
25
- for (let c of cryptoItems) {
26
- await this.searchCrypto(c);
27
- }
28
- return cryptoItems;
29
- }
30
- /**
31
- * Asynchronously searches for cryptographic algorithms in the content of a file.
32
- * @param cryptoItem The CryptoItem to search for cryptographic algorithms.
33
- * @returns A promise that resolves when the search is complete.
34
- */
35
- async searchCrypto(cryptoItem) {
36
- const cryptoFound = new Array();
37
- const stats = await fs.promises.stat(cryptoItem.getPath());
38
- if (stats.size > this.MAX_FILE_SIZE) {
39
- cryptoItem.setAlgorithms([]);
40
- return;
41
- }
42
- let content = await fs.promises.readFile(cryptoItem.getPath(), 'utf-8');
43
- this.cryptoRules.forEach((value, key) => {
44
- try {
45
- const matches = content.match(value);
46
- if (matches) {
47
- cryptoFound.push(key);
48
- }
49
- }
50
- catch (e) {
51
- console.error(e);
52
- }
53
- });
54
- // Release memory
55
- content = null;
56
- const results = [];
57
- cryptoFound.forEach((cf) => {
58
- results.push(this.cryptoMapper.get(cf));
25
+ const threadPool = new ThreadPool(this.threads, this.cryptoRules, this.cryptoMapper);
26
+ files.forEach((f) => {
27
+ threadPool.enqueueTask(new CryptoItem(f));
59
28
  });
60
- cryptoItem.setAlgorithms(results);
29
+ await threadPool.init();
30
+ return await threadPool.processQueue();
61
31
  }
62
32
  }
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxDcnlwdG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0NyeXB0b2dyYXBoeS9DcnlwdG9Qcm92aWRlci9Mb2NhbENyeXB0by50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUNMLHlCQUF5QixFQUFFLGVBQWUsR0FDM0MsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFHcEI7O0dBRUc7QUFDSCxNQUFNLE9BQU8sV0FBVztJQVF0Qjs7O09BR0c7SUFDSCxZQUFZLFdBQXdDO1FBTm5DLGtCQUFhLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBT3RELElBQUksQ0FBQyxXQUFXLEdBQUcseUJBQXlCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLFlBQVksR0FBRyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDbEQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBb0I7UUFDdEMsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNqQyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsR0FBRyxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbEUsS0FBSSxJQUFJLENBQUMsSUFBSSxXQUFXLEVBQUU7WUFDeEIsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzVCO1FBRUQsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQXNCO1FBQy9DLE1BQU0sV0FBVyxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFDeEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMzRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNuQyxVQUFVLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzdCLE9BQU87U0FDUjtRQUNELElBQUksT0FBTyxHQUFHLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ3RDLElBQUk7Z0JBQ0YsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDckMsSUFBSSxPQUFPLEVBQUU7b0JBQ1gsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDdkI7YUFDRjtZQUFDLE9BQU8sQ0FBQyxFQUFDO2dCQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbEI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILGlCQUFpQjtRQUNqQixPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2YsTUFBTSxPQUFPLEdBQTJCLEVBQUUsQ0FBQztRQUMzQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFDLEVBQUU7WUFDeEIsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsVUFBVSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwQyxDQUFDO0NBRUYifQ==
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxDcnlwdG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0NyeXB0b2dyYXBoeS9DcnlwdG9Qcm92aWRlci9Mb2NhbENyeXB0by50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUNMLHlCQUF5QixFQUFFLGVBQWUsR0FDM0MsTUFBTSx3QkFBd0IsQ0FBQztBQUdoQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHbEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sV0FBVztJQVF0Qjs7OztPQUlHO0lBQ0gsWUFBWSxXQUF3QyxFQUFFLE9BQWU7UUFDbkUsSUFBSSxDQUFDLFdBQVcsR0FBRyx5QkFBeUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsWUFBWSxHQUFHLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFvQjtRQUN0QyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ2pDLE1BQU0sVUFBVSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDckYsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2xCLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUMzQyxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hCLE9BQU8sTUFBTSxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekMsQ0FBQztDQUNGIn0=
@@ -21,7 +21,7 @@ export class CryptographyScanner {
21
21
  */
22
22
  async scan(files) {
23
23
  const cryptographyRules = await this.loadRules(this.cryptoConfig.getRulesPath());
24
- const localCrypto = new LocalCrypto(cryptographyRules);
24
+ const localCrypto = new LocalCrypto(cryptographyRules, this.cryptoConfig.getNumberOfThreads());
25
25
  const cryptoItems = await localCrypto.search(files);
26
26
  return mapToILocalCryptographyResponse(cryptoItems);
27
27
  }
@@ -48,4 +48,4 @@ export class CryptographyScanner {
48
48
  return JSON.parse(rules);
49
49
  }
50
50
  }
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvZ3JhcGh5U2Nhbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZGsvQ3J5cHRvZ3JhcGh5L0NyeXB0b2dyYXBoeVNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBTTNELE9BQU8sRUFDTCwrQkFBK0IsRUFDaEMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFFeEI7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBRzlCOzs7T0FHRztJQUNILFlBQVksU0FBb0I7UUFDOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQW9CO1FBQ3BDLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUNqRixNQUFNLFdBQVcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sV0FBVyxHQUFHLE1BQU0sV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRCxPQUFPLCtCQUErQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBWTtRQUNsQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFO1lBQ2hELE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUN2RCxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixPQUFPLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFpQjtRQUN2QyxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLElBQUksQ0FDckQsU0FBUyxFQUNULGlEQUFpRCxDQUFDLENBQUM7UUFDckQsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUMsT0FBTyxDQUFDLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7Q0FFRiJ9
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvZ3JhcGh5U2Nhbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZGsvQ3J5cHRvZ3JhcGh5L0NyeXB0b2dyYXBoeVNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBTTNELE9BQU8sRUFDTCwrQkFBK0IsRUFDaEMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFFeEI7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBRzlCOzs7T0FHRztJQUNILFlBQVksU0FBb0I7UUFDOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQW9CO1FBQ3BDLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUNqRixNQUFNLFdBQVcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUMvRixNQUFNLFdBQVcsR0FBRyxNQUFNLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEQsT0FBTywrQkFBK0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQVk7UUFDbEMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRTtZQUNoRCxNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFDdkQsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsT0FBTyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7T0FHRztJQUNLLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBaUI7UUFDdkMsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxJQUFJLENBQ3JELFNBQVMsRUFDVCxpREFBaUQsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sS0FBSyxHQUFHLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0NBRUYifQ==
@@ -0,0 +1,21 @@
1
+ import { CryptoAlgorithm } from '../CryptographyTypes';
2
+ import { CryptoItem } from '../Scanneable/CryptoItem';
3
+ export declare class ThreadPool {
4
+ private readonly maxWorkers;
5
+ private readonly workers;
6
+ private readonly jobsQueue;
7
+ private readonly cryptoRules;
8
+ private readonly cryptoMapper;
9
+ private results;
10
+ private activeWorkers;
11
+ private resolve;
12
+ private reject;
13
+ constructor(maxWorkers: number, rules: Map<string, RegExp>, cryptoMapper: Map<string, CryptoAlgorithm>);
14
+ enqueueTask(item: CryptoItem): Promise<unknown>;
15
+ init(): Promise<void>;
16
+ private releaseWorker;
17
+ private next;
18
+ private destroyAllWorkers;
19
+ processQueue(): Promise<Array<CryptoItem>>;
20
+ private processItem;
21
+ }
@@ -0,0 +1,83 @@
1
+ import { Worker } from './Worker';
2
+ export class ThreadPool {
3
+ constructor(maxWorkers = 3, rules, cryptoMapper) {
4
+ this.workers = [];
5
+ this.results = [];
6
+ this.activeWorkers = 0;
7
+ this.maxWorkers = maxWorkers;
8
+ this.workers = [];
9
+ this.jobsQueue = [];
10
+ this.cryptoRules = rules;
11
+ this.cryptoMapper = cryptoMapper;
12
+ }
13
+ enqueueTask(item) {
14
+ return new Promise((resolve, reject) => {
15
+ const job = { item, resolve, reject };
16
+ this.jobsQueue.push(job);
17
+ });
18
+ }
19
+ async init() {
20
+ for (let i = 0; i < this.maxWorkers; i++) {
21
+ const worker = new Worker();
22
+ worker.on('message', async (item) => {
23
+ this.results.push(item.result);
24
+ this.releaseWorker(item.id);
25
+ await this.next();
26
+ });
27
+ // TODO: See what can be done in case an error on the thread
28
+ worker.on('error', async (error) => {
29
+ console.log(error);
30
+ this.releaseWorker(worker.getId());
31
+ await this.next();
32
+ });
33
+ this.workers.push(worker);
34
+ }
35
+ }
36
+ releaseWorker(id) {
37
+ const wId = this.workers.findIndex(w => w.getId() === id);
38
+ const w = this.workers[wId];
39
+ w.release();
40
+ return w.getId();
41
+ }
42
+ async next() {
43
+ this.activeWorkers -= 1;
44
+ if (this.activeWorkers === 0 && this.jobsQueue.length === 0) {
45
+ await this.destroyAllWorkers();
46
+ this.resolve(this.results);
47
+ }
48
+ else {
49
+ this.processItem();
50
+ }
51
+ }
52
+ async destroyAllWorkers() {
53
+ for (const worker of this.workers) {
54
+ await worker.terminate(); // Terminate each worker
55
+ }
56
+ }
57
+ async processQueue() {
58
+ return new Promise(async (resolve, reject) => {
59
+ this.resolve = resolve;
60
+ this.reject = reject;
61
+ this.processItem();
62
+ });
63
+ }
64
+ processItem() {
65
+ if (this.workers.length > 0 && this.jobsQueue.length > 0) {
66
+ const freeWorkerIndices = this.workers.reduce((indices, worker, index) => {
67
+ if (worker.isFree()) {
68
+ indices.push(index);
69
+ }
70
+ return indices;
71
+ }, []);
72
+ freeWorkerIndices.forEach(workerIndex => {
73
+ if (this.jobsQueue.length <= 0)
74
+ return;
75
+ const { item, reject } = this.jobsQueue.shift();
76
+ const worker = this.workers[workerIndex];
77
+ worker.run({ item, rules: this.cryptoRules, cryptoMapper: this.cryptoMapper });
78
+ this.activeWorkers += 1;
79
+ });
80
+ }
81
+ }
82
+ }
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGhyZWFkUG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvQ3J5cHRvZ3JhcGh5L1dvcmtlci9UaHJlYWRQb29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBbUIsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRW5ELE1BQU0sT0FBTyxVQUFVO0lBbUJyQixZQUFZLFVBQVUsR0FBRyxDQUFDLEVBQUUsS0FBeUIsRUFBRSxZQUEwQztRQWZoRixZQUFPLEdBQWtCLEVBQUUsQ0FBQztRQVFyQyxZQUFPLEdBQUcsRUFBRSxDQUFDO1FBRWIsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFNeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDbkMsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFnQjtRQUMxQixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLE1BQU0sR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFHLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3hDLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7WUFDNUIsTUFBTSxD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
@@ -0,0 +1,16 @@
1
+ /// <reference types="node" />
2
+ import { TransferListItem, Worker as W } from 'worker_threads';
3
+ import { CryptoItem } from '../Scanneable/CryptoItem';
4
+ export interface IWorkerResponse {
5
+ result: CryptoItem;
6
+ id: number;
7
+ }
8
+ export declare class Worker extends W {
9
+ private free;
10
+ constructor();
11
+ getId(): number;
12
+ release(): void;
13
+ isFree(): boolean;
14
+ on(event: any, listener: any): this;
15
+ run(value: any, transferList?: ReadonlyArray<TransferListItem>): void;
16
+ }
@@ -0,0 +1,65 @@
1
+ import { Worker as W } from 'worker_threads';
2
+ const stringWorker = `
3
+ const { parentPort } = require('worker_threads');
4
+ const fs = require('fs');
5
+
6
+ parentPort.on('message', async (data) => {
7
+
8
+ const MAX_FILE_SIZE = 2 * 1024 * 1024 * 1024;
9
+
10
+ const { item, rules , cryptoMapper, id } = data;
11
+
12
+ const cryptoFound = new Array();
13
+ const stats = await fs.promises.stat(item.file);
14
+ if (stats.size > MAX_FILE_SIZE) {
15
+ item.algorithms = [];
16
+ parentPort.postMessage({ result: item, id });
17
+ return;
18
+ }
19
+
20
+ let content = fs.readFileSync(item.file, 'utf-8');
21
+ rules.forEach((value, key) => {
22
+ try {
23
+ const matches = content.match(value);
24
+ if (matches) {
25
+ cryptoFound.push(key);
26
+ }
27
+ } catch (e){
28
+ console.error(e);
29
+ }
30
+ });
31
+ const results = [];
32
+ cryptoFound.forEach((cf)=>{
33
+ results.push(cryptoMapper.get(cf));
34
+ });
35
+ item.algorithms = results;
36
+ parentPort.postMessage({ result: item, id });
37
+ });
38
+ `;
39
+ export class Worker extends W {
40
+ constructor() {
41
+ super(stringWorker, { eval: true });
42
+ this.free = true;
43
+ }
44
+ getId() {
45
+ return this.threadId;
46
+ }
47
+ release() {
48
+ this.free = true;
49
+ }
50
+ isFree() {
51
+ return this.free;
52
+ }
53
+ on(event, listener) {
54
+ if (event === 'error') {
55
+ this.free = true;
56
+ }
57
+ // Call super.on with the provided arguments
58
+ return super.on(event, listener);
59
+ }
60
+ run(value, transferList) {
61
+ this.free = false;
62
+ this.postMessage({ ...value, id: this.threadId });
63
+ }
64
+ }
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV29ya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay9DcnlwdG9ncmFwaHkvV29ya2VyL1dvcmtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLE1BQU0sSUFBSSxDQUFDLEVBQWlCLE1BQU0sZ0JBQWdCLENBQUM7QUFJOUUsTUFBTSxZQUFZLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW9DcEIsQ0FBQztBQU9GLE1BQU0sT0FBTyxNQUFPLFNBQVEsQ0FBQztJQUszQjtRQUNFLEtBQUssQ0FBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRU0sS0FBSztRQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFTSxNQUFNO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCxFQUFFLENBQUMsS0FBSyxFQUFFLFFBQVE7UUFDaEIsSUFBSSxLQUFLLEtBQUssT0FBTyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQ2xCO1FBQ0QsNENBQTRDO1FBQzNDLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFcEMsQ0FBQztJQUNNLEdBQUcsQ0FBRSxLQUFVLEVBQUUsWUFBOEM7UUFDcEUsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFDLEdBQUcsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0NBRUYifQ==
@@ -4,9 +4,9 @@
4
4
  * @returns An ILocalCryptographyResponse object containing mapped cryptographic items.
5
5
  */
6
6
  export function mapToILocalCryptographyResponse(ci) {
7
- const fileList = ci.map((c) => ({ file: c.getPath(), algorithms: c.getAlgorithms() }));
7
+ const fileList = ci.map((c) => ({ file: c.file, algorithms: c.algorithms }));
8
8
  return {
9
9
  fileList
10
10
  };
11
11
  }
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvQWRhcHRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0NyeXB0b2dyYXBoeS91dGlscy9hZGFwdGVycy9jcnlwdG9BZGFwdGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLCtCQUErQixDQUFDLEVBQXFCO0lBQ25FLE1BQU0sUUFBUSxHQUF1QixFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRyxVQUFVLEVBQUUsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVHLE9BQU87UUFDTCxRQUFRO0tBQ1QsQ0FBQTtBQUNILENBQUMifQ==
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvQWRhcHRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0NyeXB0b2dyYXBoeS91dGlscy9hZGFwdGVycy9jcnlwdG9BZGFwdGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLCtCQUErQixDQUFDLEVBQXFCO0lBQ25FLE1BQU0sUUFBUSxHQUF1QixFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUcsVUFBVSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEcsT0FBTztRQUNMLFFBQVE7S0FDVCxDQUFBO0FBQ0gsQ0FBQyJ9
@@ -1,3 +1,5 @@
1
+ import { CryptoAlgorithm } from '../../Cryptography/CryptographyTypes';
2
+ import { CryptoItem } from '../../Cryptography/Scanneable/CryptoItem';
1
3
  /************* Component interface definition *************/
2
4
  export interface ComponentDataLayer {
3
5
  key: string;
@@ -101,6 +103,16 @@ export interface SummaryDataLayer {
101
103
  noMatchFiles: number;
102
104
  totalFiles: number;
103
105
  }
106
+ export interface ComponentCryptography {
107
+ purl: string;
108
+ version: string;
109
+ algorithms: Array<CryptoAlgorithm>;
110
+ }
111
+ /*********************** Files ****************************/
112
+ export interface CryptographyDataLayer {
113
+ files: Array<CryptoItem>;
114
+ components: Array<ComponentCryptography>;
115
+ }
104
116
  export interface IDataLayers {
105
117
  licenses: LicenseDataLayer[];
106
118
  licensesObligations: LicenseObligation[];
@@ -108,6 +120,7 @@ export interface IDataLayers {
108
120
  dependencies: DependencyDataLayer[];
109
121
  vulnerabilities: VulnerabilityDataLayer[];
110
122
  summary: SummaryDataLayer;
123
+ cryptography: CryptographyDataLayer;
111
124
  }
112
125
  export interface DataProvider {
113
126
  getData(): Promise<IDataLayers>;
@@ -13,10 +13,11 @@ export class DataProviderManager {
13
13
  summary: null,
14
14
  licenses: null,
15
15
  licensesObligations: null,
16
+ cryptography: null,
16
17
  };
17
18
  for (const layer of this.dataLayersProviders)
18
19
  Object.assign(dataLayer, await layer.getData());
19
20
  return dataLayer;
20
21
  }
21
22
  }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVByb3ZpZGVyTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvUmVwb3J0L0RhdGFMYXllci9EYXRhUHJvdmlkZXJNYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxtQkFBbUI7SUFHOUI7UUFDRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxlQUFlLENBQUMsQ0FBZTtRQUNwQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTSxLQUFLLENBQUMsWUFBWTtRQUN2QixJQUFJLFNBQVMsR0FBZ0I7WUFDM0IsU0FBUyxFQUFFLElBQUk7WUFDZixZQUFZLEVBQUUsSUFBSTtZQUNsQixlQUFlLEVBQUUsSUFBSTtZQUNyQixPQUFPLEVBQUUsSUFBSTtZQUNiLFFBQVEsRUFBRSxJQUFJO1lBQ2QsbUJBQW1CLEVBQUUsSUFBSTtTQUMxQixDQUFDO1FBRUYsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsbUJBQW1CO1lBQzFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDbEQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztDQUNGIn0=
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVByb3ZpZGVyTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvUmVwb3J0L0RhdGFMYXllci9EYXRhUHJvdmlkZXJNYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxtQkFBbUI7SUFHOUI7UUFDRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxlQUFlLENBQUMsQ0FBZTtRQUNwQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTSxLQUFLLENBQUMsWUFBWTtRQUN2QixJQUFJLFNBQVMsR0FBZ0I7WUFDM0IsU0FBUyxFQUFFLElBQUk7WUFDZixZQUFZLEVBQUUsSUFBSTtZQUNsQixlQUFlLEVBQUUsSUFBSTtZQUNyQixPQUFPLEVBQUUsSUFBSTtZQUNiLFFBQVEsRUFBRSxJQUFJO1lBQ2QsbUJBQW1CLEVBQUUsSUFBSTtZQUN6QixZQUFZLEVBQUUsSUFBSTtTQUNuQixDQUFDO1FBRUYsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsbUJBQW1CO1lBQzFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDbEQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztDQUNGIn0=
@@ -0,0 +1,14 @@
1
+ import { DataProvider, IDataLayers } from '../DataLayerTypes';
2
+ import { ScannerResults } from '../../../scanner/ScannerTypes';
3
+ import { ICryptoItem } from '../../../Cryptography/CryptographyTypes';
4
+ export declare class CryptographyDataProvider implements DataProvider {
5
+ private files;
6
+ private scanRawResults;
7
+ private componentList;
8
+ constructor(files: Array<ICryptoItem>, scanRawResults: ScannerResults);
9
+ getData(): Promise<IDataLayers>;
10
+ private getCrypto;
11
+ private normalizeAlgorithms;
12
+ private removeRepeatedAlgorithms;
13
+ getLayerName(): string;
14
+ }
@@ -0,0 +1,51 @@
1
+ export class CryptographyDataProvider {
2
+ constructor(files, scanRawResults) {
3
+ this.files = files;
4
+ this.scanRawResults = scanRawResults;
5
+ }
6
+ async getData() {
7
+ if (!this.files && !this.scanRawResults)
8
+ return { cryptography: null };
9
+ this.componentList = Object.values(this.scanRawResults).flat();
10
+ this.componentList = this.componentList.filter((component) => component.id !== 'none');
11
+ const componentCryptography = this.getCrypto(this.componentList);
12
+ return {
13
+ cryptography: {
14
+ files: this.files,
15
+ components: componentCryptography,
16
+ }
17
+ };
18
+ }
19
+ getCrypto(scanComponents) {
20
+ const componentCrypto = [];
21
+ scanComponents.forEach((c) => {
22
+ if (c.cryptography.length > 0) {
23
+ const crypto = {
24
+ purl: c.purl,
25
+ version: c.version,
26
+ algorithms: c.cryptography
27
+ };
28
+ componentCrypto.push(crypto);
29
+ }
30
+ });
31
+ return this.normalizeAlgorithms(componentCrypto);
32
+ }
33
+ normalizeAlgorithms(crypto) {
34
+ crypto.forEach((c) => {
35
+ c.algorithms = this.removeRepeatedAlgorithms(c.algorithms);
36
+ });
37
+ return crypto;
38
+ }
39
+ removeRepeatedAlgorithms(algorithms) {
40
+ const algorithmsMapper = new Map();
41
+ algorithms.forEach((a) => {
42
+ const algorithmToLowerCase = a.algorithm.toLowerCase();
43
+ algorithmsMapper.set(algorithmToLowerCase, { ...a, algorithm: algorithmToLowerCase });
44
+ });
45
+ return Array.from(algorithmsMapper.values());
46
+ }
47
+ getLayerName() {
48
+ return '';
49
+ }
50
+ }
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvZ3JhcGh5RGF0YVByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay9SZXBvcnQvRGF0YUxheWVyL0RhdGFQcm92aWRlcnMvQ3J5cHRvZ3JhcGh5RGF0YVByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWVBLE1BQU0sT0FBTyx3QkFBd0I7SUFJbkMsWUFBWSxLQUF5QixFQUFJLGNBQThCO1FBQ3JFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO0lBQ3ZDLENBQUM7SUFDRCxLQUFLLENBQUMsT0FBTztRQUVYLElBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWM7WUFBRSxPQUFvQixFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQTtRQUVsRixJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9ELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQzVDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FDdkMsQ0FBQztRQUVGLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFbEUsT0FBb0I7WUFDakIsWUFBWSxFQUFDO2dCQUNYLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsVUFBVSxFQUFFLHFCQUFxQjthQUNsQztTQUNILENBQUE7SUFDRixDQUFDO0lBRU8sU0FBUyxDQUFDLGNBQXVDO1FBQ3ZELE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUMzQixjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUU7WUFDeEIsSUFBRyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUM7Z0JBQzNCLE1BQU0sTUFBTSxHQUFHO29CQUNiLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtvQkFDWixPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU87b0JBQ2xCLFVBQVUsRUFBRSxDQUFDLENBQUMsWUFBWTtpQkFDM0IsQ0FBQTtnQkFDRCxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzlCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsQ0FBQTtJQUNsRCxDQUFDO0lBRU8sbUJBQW1CLENBQUMsTUFBb0M7UUFDOUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFO1lBQ2xCLENBQUMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM3RCxDQUFDLENBQUMsQ0FBQTtRQUVGLE9BQU8sTUFBTSxDQUFDO0lBRWhCLENBQUM7SUFFTyx3QkFBd0IsQ0FBQyxVQUFrQztRQUNqRSxNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFtRCxDQUFDO1FBQ3BGLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN2QixNQUFNLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkQsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLG9CQUFvQixFQUFFLEVBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFDLENBQUMsQ0FBQTtRQUNyRixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0NBQ0YifQ==
@@ -1186,33 +1186,43 @@
1186
1186
  "signature": "42ef1caff70c5da8c9c6ebc82ac2ebdc21bf60274786a6a4707b7d983e47f50c",
1187
1187
  "affectsGlobalScope": false
1188
1188
  },
1189
+ "../../src/sdk/Cryptography/Worker/Worker.ts": {
1190
+ "version": "63d1850409c989b9486228d957316f536f1ff586ab0731eb763ab888148ea822",
1191
+ "signature": "ccb42ecdc7e2a04167368763d46f7eb3c79a44fbeda79498b8b42f0223c72909",
1192
+ "affectsGlobalScope": false
1193
+ },
1194
+ "../../src/sdk/Cryptography/Worker/ThreadPool.ts": {
1195
+ "version": "e8c8885745c6d05a2ed9c216322bf729908e3e60a8a1e47a08140557c9fb15ca",
1196
+ "signature": "37421d8f7f9700f710ad8a654635bdc1a42d46e8cf101604eedc49a23e6f877c",
1197
+ "affectsGlobalScope": false
1198
+ },
1189
1199
  "../../src/sdk/Cryptography/CryptoProvider/LocalCrypto.ts": {
1190
- "version": "cae73a110cfc88f323420359fd201321416e2a161da7dee8a44c7991456b18fc",
1191
- "signature": "d2613a844321f7df744aefdf3defdf4d1c9705ff987c7b7639bd6d3c2a5ea6f1",
1200
+ "version": "7eff76625475ea0d15e0026797b4ba166acc54a6e8373e4993c32b85b12ac7da",
1201
+ "signature": "a26649da45a1cb7044e9ff16c813111ca599f24fde0b7a275ad4cafa200556fe",
1192
1202
  "affectsGlobalScope": false
1193
1203
  },
1194
1204
  "../../src/sdk/Cryptography/CryptoCfg.ts": {
1195
- "version": "cde8ab1bc0cbad549e3488209bba6151e1e11130df8244d2c1bf35564e6020ae",
1196
- "signature": "a230323c3aafd7a51a3733970951b1112863fcf2c7df0facea9a16fb2ddbe0bc",
1205
+ "version": "9d7472e2a06ed91f0d97cdb0be0aab4e805fe7b89d1b99024e0dc7bea2bd9975",
1206
+ "signature": "556b688ca25d64662be634b41ba6613f442f17b9e34608105f0d6c01c5e821b3",
1197
1207
  "affectsGlobalScope": false
1198
1208
  },
1199
1209
  "../../src/sdk/Cryptography/utils/adapters/cryptoAdapters.ts": {
1200
- "version": "49a17f0d412d5bdd4274d19b085f0ccac77e161d1bbf0faafc82152d7487d01d",
1210
+ "version": "ca0db37074d84c4c8d2a3ef96d5d3811ad92e4def2a03349ee05e08000d7fbbe",
1201
1211
  "signature": "07fb866e2304237f9fde84da70e3443430d2a377c0b463ec475ac50ab69ce8e3",
1202
1212
  "affectsGlobalScope": false
1203
1213
  },
1204
1214
  "../../src/sdk/Cryptography/CryptographyScanner.ts": {
1205
- "version": "8ca3b8bca5a4c29a5e855ba13fe5d2764ec116b49b2eb5a12e291b60305a7aff",
1215
+ "version": "6468e7d976bd50b3388685836539234a8fad3b9feae5c36c72f88dc7312c4f98",
1206
1216
  "signature": "8c3e8e247c583b1144e13ee4ffe30b01377687eb25d88af8828d69e96f17ddd4",
1207
1217
  "affectsGlobalScope": false
1208
1218
  },
1209
1219
  "../../src/sdk/Report/DataLayer/DataLayerTypes.ts": {
1210
- "version": "641389472be3cfd22bc2c141ebe675fbbb46cf6425ca06f439fe18323ca424b8",
1211
- "signature": "1b2a1117187fd2aac63880654d10f52bd4522e9b118e5e1df2c86182669cd776",
1220
+ "version": "e9e9d3016d8d3270231816877a3cb30bb3247b4b36bd0b76ccc1b8de561dd23a",
1221
+ "signature": "8eab1457b27a3bf565d75952fc5732a583a732f58caf45aa8e09b102073b8b2e",
1212
1222
  "affectsGlobalScope": false
1213
1223
  },
1214
1224
  "../../src/sdk/Report/DataLayer/DataProviderManager.ts": {
1215
- "version": "94a1e2787a3fbcdef34e7b2844a45bed9e4c64c29774cb6eefcbc161acb09ace",
1225
+ "version": "2bdc1567cf4a01b31a828630cecb537236aa179f7844f11fe290303fd6678d06",
1216
1226
  "signature": "6ac2d5cf00bfdf922dd4a044ca9a615bec171bc37f6fc7a15f9b0e37428f24b4",
1217
1227
  "affectsGlobalScope": false
1218
1228
  },
@@ -1351,8 +1361,13 @@
1351
1361
  "signature": "32757bb69660a0ac7cf0e6e1d6d76b506613a499b56d4ef09ca08905945cb13d",
1352
1362
  "affectsGlobalScope": false
1353
1363
  },
1364
+ "../../src/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.ts": {
1365
+ "version": "1d5eb05485e6990d80095ca9b8182c8dd0474e4fea5b1f96488bc5027ad4ead3",
1366
+ "signature": "17526d69c3c8accab8f9f30a1ffe9449da6f5a6a39811b3938dfa2b690300e7d",
1367
+ "affectsGlobalScope": false
1368
+ },
1354
1369
  "../../src/cli/commands/scan.ts": {
1355
- "version": "44cc53d031719e25fc24b9b79b55addfb97cae803c465087dfc7da9ffbf177a5",
1370
+ "version": "28f9db3f8331f3109295e4bdb1f49f27c8cb32e8b05492b3084335dd604658c3",
1356
1371
  "signature": "f2270f14186fb9298c65d83f391db3cefc5e9c40bfae8007515176acc583e131",
1357
1372
  "affectsGlobalScope": false
1358
1373
  },
@@ -1362,12 +1377,12 @@
1362
1377
  "affectsGlobalScope": false
1363
1378
  },
1364
1379
  "../../src/cli/commands/crypto.ts": {
1365
- "version": "a4b982e1d7d51fc42c1edcb79c19b3deb56043152d86708dde2200bc091e1d39",
1380
+ "version": "406a726fb9349e5bc24ac82927f6cbc01b7029fae72362a47f4ac71d34ec4193",
1366
1381
  "signature": "7facac4a5ac19854614a21eacbcb2f83eaadab500bd6f73aa80c7f8100cce221",
1367
1382
  "affectsGlobalScope": false
1368
1383
  },
1369
1384
  "../../src/cli/bin/cli-bin.ts": {
1370
- "version": "97a46e7ab889cdf6d8c511f28e6dcf95ca4282c997b8622a2037668e7272e256",
1385
+ "version": "8556937d76e99dfb660e52ff7f714829ebe1cb548ded334a65d7d36c770d9bb3",
1371
1386
  "signature": "43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012",
1372
1387
  "affectsGlobalScope": false
1373
1388
  },
@@ -2581,6 +2596,7 @@
2581
2596
  "../../src/sdk/Dependencies/DependencyTypes.ts",
2582
2597
  "../../src/sdk/Report/DataLayer/DataProviderManager.ts",
2583
2598
  "../../src/sdk/Report/DataLayer/DataProviders/ComponentDataProvider.ts",
2599
+ "../../src/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.ts",
2584
2600
  "../../src/sdk/Report/DataLayer/DataProviders/DependencyDataProvider.ts",
2585
2601
  "../../src/sdk/Report/DataLayer/DataProviders/LicenseDataProvider.ts",
2586
2602
  "../../src/sdk/Report/DataLayer/DataProviders/LicenseObligationDataProvider.ts",
@@ -2656,7 +2672,8 @@
2656
2672
  "../../node_modules/@types/node/util.d.ts",
2657
2673
  "../../src/sdk/Cryptography/CryptoDef/CryptoDef.ts",
2658
2674
  "../../src/sdk/Cryptography/CryptographyTypes.ts",
2659
- "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
2675
+ "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts",
2676
+ "../../src/sdk/Cryptography/Worker/ThreadPool.ts"
2660
2677
  ],
2661
2678
  "../../src/sdk/Cryptography/CryptographyScanner.ts": [
2662
2679
  "../../node_modules/@types/node/fs.d.ts",
@@ -2675,6 +2692,18 @@
2675
2692
  "../../node_modules/@types/node/util.d.ts",
2676
2693
  "../../src/sdk/Cryptography/CryptographyTypes.ts"
2677
2694
  ],
2695
+ "../../src/sdk/Cryptography/Worker/ThreadPool.ts": [
2696
+ "../../node_modules/@types/node/util.d.ts",
2697
+ "../../src/sdk/Cryptography/CryptographyTypes.ts",
2698
+ "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts",
2699
+ "../../src/sdk/Cryptography/Worker/Worker.ts"
2700
+ ],
2701
+ "../../src/sdk/Cryptography/Worker/Worker.ts": [
2702
+ "../../node_modules/@types/node/url.d.ts",
2703
+ "../../node_modules/@types/node/util.d.ts",
2704
+ "../../node_modules/@types/node/worker_threads.d.ts",
2705
+ "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
2706
+ ],
2678
2707
  "../../src/sdk/Cryptography/utils/adapters/cryptoAdapters.ts": [
2679
2708
  "../../node_modules/@types/node/util.d.ts",
2680
2709
  "../../src/sdk/Cryptography/CryptographyTypes.ts",
@@ -2842,7 +2871,9 @@
2842
2871
  "../../node_modules/@types/node/util.d.ts"
2843
2872
  ],
2844
2873
  "../../src/sdk/Report/DataLayer/DataLayerTypes.ts": [
2845
- "../../node_modules/@types/node/util.d.ts"
2874
+ "../../node_modules/@types/node/util.d.ts",
2875
+ "../../src/sdk/Cryptography/CryptographyTypes.ts",
2876
+ "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
2846
2877
  ],
2847
2878
  "../../src/sdk/Report/DataLayer/DataProviderManager.ts": [
2848
2879
  "../../node_modules/@types/node/util.d.ts",
@@ -2854,6 +2885,13 @@
2854
2885
  "../../src/sdk/Report/DataLayer/DataLayerTypes.ts",
2855
2886
  "../../src/sdk/scanner/ScannerTypes.ts"
2856
2887
  ],
2888
+ "../../src/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.ts": [
2889
+ "../../node_modules/@types/node/util.d.ts",
2890
+ "../../src/sdk/Cryptography/CryptographyTypes.ts",
2891
+ "../../src/sdk/Dependencies/DependencyTypes.ts",
2892
+ "../../src/sdk/Report/DataLayer/DataLayerTypes.ts",
2893
+ "../../src/sdk/scanner/ScannerTypes.ts"
2894
+ ],
2857
2895
  "../../src/sdk/Report/DataLayer/DataProviders/DependencyDataProvider.ts": [
2858
2896
  "../../node_modules/@types/node/util.d.ts",
2859
2897
  "../../src/sdk/Dependencies/DependencyTypes.ts",
@@ -4242,6 +4280,14 @@
4242
4280
  "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts": [
4243
4281
  "../../src/sdk/Cryptography/CryptographyTypes.ts"
4244
4282
  ],
4283
+ "../../src/sdk/Cryptography/Worker/ThreadPool.ts": [
4284
+ "../../src/sdk/Cryptography/CryptographyTypes.ts",
4285
+ "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
4286
+ ],
4287
+ "../../src/sdk/Cryptography/Worker/Worker.ts": [
4288
+ "../../node_modules/@types/node/worker_threads.d.ts",
4289
+ "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
4290
+ ],
4245
4291
  "../../src/sdk/Cryptography/utils/adapters/cryptoAdapters.ts": [
4246
4292
  "../../src/sdk/Cryptography/CryptographyTypes.ts",
4247
4293
  "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
@@ -4301,6 +4347,10 @@
4301
4347
  "../../src/sdk/Filtering/DefaultFilterForScanning.ts": [
4302
4348
  "../../src/sdk/Filtering/Filtering.ts"
4303
4349
  ],
4350
+ "../../src/sdk/Report/DataLayer/DataLayerTypes.ts": [
4351
+ "../../src/sdk/Cryptography/CryptographyTypes.ts",
4352
+ "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
4353
+ ],
4304
4354
  "../../src/sdk/Report/DataLayer/DataProviderManager.ts": [
4305
4355
  "../../src/sdk/Report/DataLayer/DataLayerTypes.ts"
4306
4356
  ],
@@ -4309,6 +4359,11 @@
4309
4359
  "../../src/sdk/Report/DataLayer/DataLayerTypes.ts",
4310
4360
  "../../src/sdk/scanner/ScannerTypes.ts"
4311
4361
  ],
4362
+ "../../src/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.ts": [
4363
+ "../../src/sdk/Cryptography/CryptographyTypes.ts",
4364
+ "../../src/sdk/Report/DataLayer/DataLayerTypes.ts",
4365
+ "../../src/sdk/scanner/ScannerTypes.ts"
4366
+ ],
4312
4367
  "../../src/sdk/Report/DataLayer/DataProviders/DependencyDataProvider.ts": [
4313
4368
  "../../src/sdk/Dependencies/DependencyTypes.ts",
4314
4369
  "../../src/sdk/Report/DataLayer/DataLayerTypes.ts"
@@ -4670,6 +4725,8 @@
4670
4725
  "../../src/sdk/Cryptography/CryptographyScanner.ts",
4671
4726
  "../../src/sdk/Cryptography/CryptographyTypes.ts",
4672
4727
  "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts",
4728
+ "../../src/sdk/Cryptography/Worker/ThreadPool.ts",
4729
+ "../../src/sdk/Cryptography/Worker/Worker.ts",
4673
4730
  "../../src/sdk/Cryptography/utils/adapters/cryptoAdapters.ts",
4674
4731
  "../../src/sdk/Decompress/DecompressionManager.ts",
4675
4732
  "../../src/sdk/Decompress/Decompressor/DecompressTgz.ts",
@@ -4702,6 +4759,7 @@
4702
4759
  "../../src/sdk/Report/DataLayer/DataLayerTypes.ts",
4703
4760
  "../../src/sdk/Report/DataLayer/DataProviderManager.ts",
4704
4761
  "../../src/sdk/Report/DataLayer/DataProviders/ComponentDataProvider.ts",
4762
+ "../../src/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.ts",
4705
4763
  "../../src/sdk/Report/DataLayer/DataProviders/DependencyDataProvider.ts",
4706
4764
  "../../src/sdk/Report/DataLayer/DataProviders/LicenseDataProvider.ts",
4707
4765
  "../../src/sdk/Report/DataLayer/DataProviders/LicenseObligationDataProvider.ts",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "scanoss",
3
- "version": "0.12.2",
3
+ "version": "0.13.1",
4
4
  "description": "The SCANOSS JS package provides a simple, easy to consume module for interacting with SCANOSS APIs/Engine.",
5
5
  "main": "build/main/index.js",
6
6
  "typings": "build/main/index.d.ts",