scanoss 0.11.5 → 0.12.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 (42) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/main/cli/bin/cli-bin.js +14 -1
  3. package/build/main/cli/commands/crypto.d.ts +1 -0
  4. package/build/main/cli/commands/crypto.js +37 -0
  5. package/build/main/index.d.ts +3 -0
  6. package/build/main/index.js +5 -1
  7. package/build/main/sdk/Cryptography/CryptoCfg.d.ts +16 -0
  8. package/build/main/sdk/Cryptography/CryptoCfg.js +23 -0
  9. package/build/main/sdk/Cryptography/CryptoDef/CryptoDef.d.ts +15 -0
  10. package/build/main/sdk/Cryptography/CryptoDef/CryptoDef.js +38 -0
  11. package/build/main/sdk/Cryptography/CryptoProvider/LocalCrypto.d.ts +25 -0
  12. package/build/main/sdk/Cryptography/CryptoProvider/LocalCrypto.js +61 -0
  13. package/build/main/sdk/Cryptography/CryptographyScanner.d.ts +31 -0
  14. package/build/main/sdk/Cryptography/CryptographyScanner.js +57 -0
  15. package/build/main/sdk/Cryptography/CryptographyTypes.d.ts +14 -0
  16. package/build/main/sdk/Cryptography/CryptographyTypes.js +2 -0
  17. package/build/main/sdk/Cryptography/Scanneable/CryptoItem.d.ts +28 -0
  18. package/build/main/sdk/Cryptography/Scanneable/CryptoItem.js +38 -0
  19. package/build/main/sdk/Cryptography/utils/adapters/cryptoAdapters.d.ts +8 -0
  20. package/build/main/sdk/Cryptography/utils/adapters/cryptoAdapters.js +15 -0
  21. package/build/main/tsconfig.tsbuildinfo +123 -3
  22. package/build/module/cli/bin/cli-bin.js +14 -1
  23. package/build/module/cli/commands/crypto.d.ts +1 -0
  24. package/build/module/cli/commands/crypto.js +31 -0
  25. package/build/module/index.d.ts +3 -0
  26. package/build/module/index.js +5 -1
  27. package/build/module/sdk/Cryptography/CryptoCfg.d.ts +16 -0
  28. package/build/module/sdk/Cryptography/CryptoCfg.js +20 -0
  29. package/build/module/sdk/Cryptography/CryptoDef/CryptoDef.d.ts +15 -0
  30. package/build/module/sdk/Cryptography/CryptoDef/CryptoDef.js +34 -0
  31. package/build/module/sdk/Cryptography/CryptoProvider/LocalCrypto.d.ts +25 -0
  32. package/build/module/sdk/Cryptography/CryptoProvider/LocalCrypto.js +55 -0
  33. package/build/module/sdk/Cryptography/CryptographyScanner.d.ts +31 -0
  34. package/build/module/sdk/Cryptography/CryptographyScanner.js +51 -0
  35. package/build/module/sdk/Cryptography/CryptographyTypes.d.ts +14 -0
  36. package/build/module/sdk/Cryptography/CryptographyTypes.js +2 -0
  37. package/build/module/sdk/Cryptography/Scanneable/CryptoItem.d.ts +28 -0
  38. package/build/module/sdk/Cryptography/Scanneable/CryptoItem.js +35 -0
  39. package/build/module/sdk/Cryptography/utils/adapters/cryptoAdapters.d.ts +8 -0
  40. package/build/module/sdk/Cryptography/utils/adapters/cryptoAdapters.js +12 -0
  41. package/build/module/tsconfig.module.tsbuildinfo +123 -3
  42. package/package.json +1 -1
@@ -1171,6 +1171,41 @@
1171
1171
  "signature": "5d9644c1037366ae98c6d23ab915e2d8ff089adf2e674f016c7322ccecee7856",
1172
1172
  "affectsGlobalScope": false
1173
1173
  },
1174
+ "../../src/sdk/Cryptography/CryptographyTypes.ts": {
1175
+ "version": "25675fca55ba8f9036ed50d0d1b8b058f82193980323ea5060b69817a463027e",
1176
+ "signature": "b3a3e0a31ea7d31dcf081d3dfa2f1f0e94e5ea5e4872165f034da91bd71dc307",
1177
+ "affectsGlobalScope": false
1178
+ },
1179
+ "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts": {
1180
+ "version": "9f914f3cae87f1518c2ef2a8b7e15c605f9dd64f49b6f18091a3b45c813903d2",
1181
+ "signature": "60ae90ef5fbb62ed86c1de8af5c36a15e0fb65b7279152d38ce6a997247a5eae",
1182
+ "affectsGlobalScope": false
1183
+ },
1184
+ "../../src/sdk/Cryptography/CryptoDef/CryptoDef.ts": {
1185
+ "version": "7e01c6aca879acd4827eec54d0e223845c48adaf197bc69a44e71632df48a16b",
1186
+ "signature": "42ef1caff70c5da8c9c6ebc82ac2ebdc21bf60274786a6a4707b7d983e47f50c",
1187
+ "affectsGlobalScope": false
1188
+ },
1189
+ "../../src/sdk/Cryptography/CryptoProvider/LocalCrypto.ts": {
1190
+ "version": "3d167fb6fb9cc11c3570057b00b9d140cd8df17431a5e46fb2ee7206c218f8b8",
1191
+ "signature": "8d1b028eee8cf7e8d9ee571a7dbf68590cae4845e222c8aa9d5291820caae168",
1192
+ "affectsGlobalScope": false
1193
+ },
1194
+ "../../src/sdk/Cryptography/CryptoCfg.ts": {
1195
+ "version": "cde8ab1bc0cbad549e3488209bba6151e1e11130df8244d2c1bf35564e6020ae",
1196
+ "signature": "a230323c3aafd7a51a3733970951b1112863fcf2c7df0facea9a16fb2ddbe0bc",
1197
+ "affectsGlobalScope": false
1198
+ },
1199
+ "../../src/sdk/Cryptography/utils/adapters/cryptoAdapters.ts": {
1200
+ "version": "49a17f0d412d5bdd4274d19b085f0ccac77e161d1bbf0faafc82152d7487d01d",
1201
+ "signature": "07fb866e2304237f9fde84da70e3443430d2a377c0b463ec475ac50ab69ce8e3",
1202
+ "affectsGlobalScope": false
1203
+ },
1204
+ "../../src/sdk/Cryptography/CryptographyScanner.ts": {
1205
+ "version": "8ca3b8bca5a4c29a5e855ba13fe5d2764ec116b49b2eb5a12e291b60305a7aff",
1206
+ "signature": "8c3e8e247c583b1144e13ee4ffe30b01377687eb25d88af8828d69e96f17ddd4",
1207
+ "affectsGlobalScope": false
1208
+ },
1174
1209
  "../../src/sdk/Report/DataLayer/DataLayerTypes.ts": {
1175
1210
  "version": "641389472be3cfd22bc2c141ebe675fbbb46cf6425ca06f439fe18323ca424b8",
1176
1211
  "signature": "1b2a1117187fd2aac63880654d10f52bd4522e9b118e5e1df2c86182669cd776",
@@ -1272,8 +1307,8 @@
1272
1307
  "affectsGlobalScope": false
1273
1308
  },
1274
1309
  "../../src/index.ts": {
1275
- "version": "c5f148bb3951d9035fa4182986a0ce88e48c17d36c42915dd4053f138d7154c7",
1276
- "signature": "3086302a4cd8ed02ddb696b9f6e499d752797c5a15c70af536ccd75223702aef",
1310
+ "version": "ccc57d85aed5a59a07192344dc1fc31adf05c6b87b23d7b8ac7e68414be34dfb",
1311
+ "signature": "89ee158584f4ac7e705e531efb85e9ac4d1b66819319235e2cad2d92011123f2",
1277
1312
  "affectsGlobalScope": false
1278
1313
  },
1279
1314
  "../../node_modules/commander/typings/index.d.ts": {
@@ -1326,8 +1361,13 @@
1326
1361
  "signature": "2f1d9f3ac804ba0f5ef9dfb34eebc0ba9f00e5cd98092ae23f3d50fc49de8298",
1327
1362
  "affectsGlobalScope": false
1328
1363
  },
1364
+ "../../src/cli/commands/crypto.ts": {
1365
+ "version": "36ea796bd2111c4136de425e2af61e14cd7d815a18ccb27a74f9f61c0400e7ab",
1366
+ "signature": "7facac4a5ac19854614a21eacbcb2f83eaadab500bd6f73aa80c7f8100cce221",
1367
+ "affectsGlobalScope": false
1368
+ },
1329
1369
  "../../src/cli/bin/cli-bin.ts": {
1330
- "version": "a8ff5700585d91ed30894270755b42e51d8c1b42fff9aa0cb826c45d4f6bea16",
1370
+ "version": "97a46e7ab889cdf6d8c511f28e6dcf95ca4282c997b8622a2037668e7272e256",
1331
1371
  "signature": "43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012",
1332
1372
  "affectsGlobalScope": false
1333
1373
  },
@@ -2499,11 +2539,23 @@
2499
2539
  "../../src/cli/bin/cli-bin.ts": [
2500
2540
  "../../node_modules/@types/node/util.d.ts",
2501
2541
  "../../node_modules/commander/typings/index.d.ts",
2542
+ "../../src/cli/commands/crypto.ts",
2502
2543
  "../../src/cli/commands/dep.ts",
2503
2544
  "../../src/cli/commands/scan.ts",
2504
2545
  "../../src/cli/commands/wfp.ts",
2505
2546
  "../../src/sdk/Utils/Utils.ts"
2506
2547
  ],
2548
+ "../../src/cli/commands/crypto.ts": [
2549
+ "../../node_modules/@types/node/fs.d.ts",
2550
+ "../../node_modules/@types/node/util.d.ts",
2551
+ "../../src/cli/commands/helpers.ts",
2552
+ "../../src/sdk/Cryptography/CryptoCfg.ts",
2553
+ "../../src/sdk/Cryptography/CryptographyScanner.ts",
2554
+ "../../src/sdk/Dependencies/DependencyScanner.ts",
2555
+ "../../src/sdk/Dependencies/DependencyScannerCfg.ts",
2556
+ "../../src/sdk/tree/Filters/DependencyFilter.ts",
2557
+ "../../src/sdk/tree/Tree.ts"
2558
+ ],
2507
2559
  "../../src/cli/commands/dep.ts": [
2508
2560
  "../../node_modules/@types/node/fs.d.ts",
2509
2561
  "../../node_modules/@types/node/util.d.ts",
@@ -2556,6 +2608,9 @@
2556
2608
  ],
2557
2609
  "../../src/index.ts": [
2558
2610
  "../../node_modules/@types/node/util.d.ts",
2611
+ "../../src/sdk/Cryptography/CryptoCfg.ts",
2612
+ "../../src/sdk/Cryptography/CryptographyScanner.ts",
2613
+ "../../src/sdk/Cryptography/CryptographyTypes.ts",
2559
2614
  "../../src/sdk/Decompress/DecompressionManager.ts",
2560
2615
  "../../src/sdk/Dependencies/DependencyScanner.ts",
2561
2616
  "../../src/sdk/Dependencies/DependencyScannerCfg.ts",
@@ -2589,6 +2644,42 @@
2589
2644
  "../../src/sdk/Constants.ts": [
2590
2645
  "../../node_modules/@types/node/util.d.ts"
2591
2646
  ],
2647
+ "../../src/sdk/Cryptography/CryptoCfg.ts": [
2648
+ "../../node_modules/@types/node/util.d.ts"
2649
+ ],
2650
+ "../../src/sdk/Cryptography/CryptoDef/CryptoDef.ts": [
2651
+ "../../node_modules/@types/node/util.d.ts",
2652
+ "../../src/sdk/Cryptography/CryptographyTypes.ts"
2653
+ ],
2654
+ "../../src/sdk/Cryptography/CryptoProvider/LocalCrypto.ts": [
2655
+ "../../node_modules/@types/node/fs.d.ts",
2656
+ "../../node_modules/@types/node/util.d.ts",
2657
+ "../../src/sdk/Cryptography/CryptoDef/CryptoDef.ts",
2658
+ "../../src/sdk/Cryptography/CryptographyTypes.ts",
2659
+ "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
2660
+ ],
2661
+ "../../src/sdk/Cryptography/CryptographyScanner.ts": [
2662
+ "../../node_modules/@types/node/fs.d.ts",
2663
+ "../../node_modules/@types/node/path.d.ts",
2664
+ "../../node_modules/@types/node/util.d.ts",
2665
+ "../../src/sdk/Cryptography/CryptoCfg.ts",
2666
+ "../../src/sdk/Cryptography/CryptoProvider/LocalCrypto.ts",
2667
+ "../../src/sdk/Cryptography/CryptographyTypes.ts",
2668
+ "../../src/sdk/Cryptography/utils/adapters/cryptoAdapters.ts",
2669
+ "../../src/sdk/tree/Tree.ts"
2670
+ ],
2671
+ "../../src/sdk/Cryptography/CryptographyTypes.ts": [
2672
+ "../../node_modules/@types/node/util.d.ts"
2673
+ ],
2674
+ "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts": [
2675
+ "../../node_modules/@types/node/util.d.ts",
2676
+ "../../src/sdk/Cryptography/CryptographyTypes.ts"
2677
+ ],
2678
+ "../../src/sdk/Cryptography/utils/adapters/cryptoAdapters.ts": [
2679
+ "../../node_modules/@types/node/util.d.ts",
2680
+ "../../src/sdk/Cryptography/CryptographyTypes.ts",
2681
+ "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
2682
+ ],
2592
2683
  "../../src/sdk/Decompress/DecompressionManager.ts": [
2593
2684
  "../../node_modules/@types/node/fs.d.ts",
2594
2685
  "../../node_modules/@types/node/path.d.ts",
@@ -4109,6 +4200,9 @@
4109
4200
  "../../node_modules/@types/node/util.d.ts"
4110
4201
  ],
4111
4202
  "../../src/index.ts": [
4203
+ "../../src/sdk/Cryptography/CryptoCfg.ts",
4204
+ "../../src/sdk/Cryptography/CryptographyScanner.ts",
4205
+ "../../src/sdk/Cryptography/CryptographyTypes.ts",
4112
4206
  "../../src/sdk/Decompress/DecompressionManager.ts",
4113
4207
  "../../src/sdk/Dependencies/DependencyScanner.ts",
4114
4208
  "../../src/sdk/Dependencies/DependencyScannerCfg.ts",
@@ -4134,6 +4228,24 @@
4134
4228
  "../../src/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.ts",
4135
4229
  "../../src/sdk/scanner/WfpProvider/WfpProvider.ts"
4136
4230
  ],
4231
+ "../../src/sdk/Cryptography/CryptoDef/CryptoDef.ts": [
4232
+ "../../src/sdk/Cryptography/CryptographyTypes.ts"
4233
+ ],
4234
+ "../../src/sdk/Cryptography/CryptoProvider/LocalCrypto.ts": [
4235
+ "../../src/sdk/Cryptography/CryptographyTypes.ts",
4236
+ "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
4237
+ ],
4238
+ "../../src/sdk/Cryptography/CryptographyScanner.ts": [
4239
+ "../../src/sdk/Cryptography/CryptoCfg.ts",
4240
+ "../../src/sdk/Cryptography/CryptographyTypes.ts"
4241
+ ],
4242
+ "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts": [
4243
+ "../../src/sdk/Cryptography/CryptographyTypes.ts"
4244
+ ],
4245
+ "../../src/sdk/Cryptography/utils/adapters/cryptoAdapters.ts": [
4246
+ "../../src/sdk/Cryptography/CryptographyTypes.ts",
4247
+ "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
4248
+ ],
4137
4249
  "../../src/sdk/Decompress/DecompressionManager.ts": [
4138
4250
  "../../src/sdk/Decompress/Decompressor/Decompressor.ts"
4139
4251
  ],
@@ -4544,6 +4656,7 @@
4544
4656
  "../../node_modules/typescript/lib/lib.esnext.intl.d.ts",
4545
4657
  "../../node_modules/xml-js/types/index.d.ts",
4546
4658
  "../../src/cli/bin/cli-bin.ts",
4659
+ "../../src/cli/commands/crypto.ts",
4547
4660
  "../../src/cli/commands/dep.ts",
4548
4661
  "../../src/cli/commands/helpers.ts",
4549
4662
  "../../src/cli/commands/scan.ts",
@@ -4551,6 +4664,13 @@
4551
4664
  "../../src/index.ts",
4552
4665
  "../../src/sdk/BaseConfig.ts",
4553
4666
  "../../src/sdk/Constants.ts",
4667
+ "../../src/sdk/Cryptography/CryptoCfg.ts",
4668
+ "../../src/sdk/Cryptography/CryptoDef/CryptoDef.ts",
4669
+ "../../src/sdk/Cryptography/CryptoProvider/LocalCrypto.ts",
4670
+ "../../src/sdk/Cryptography/CryptographyScanner.ts",
4671
+ "../../src/sdk/Cryptography/CryptographyTypes.ts",
4672
+ "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts",
4673
+ "../../src/sdk/Cryptography/utils/adapters/cryptoAdapters.ts",
4554
4674
  "../../src/sdk/Decompress/DecompressionManager.ts",
4555
4675
  "../../src/sdk/Decompress/Decompressor/DecompressTgz.ts",
4556
4676
  "../../src/sdk/Decompress/Decompressor/DecompressZips.ts",
@@ -4,6 +4,7 @@ import { Utils } from "../../sdk/Utils/Utils";
4
4
  import { depHandler } from "../commands/dep";
5
5
  import { scanHandler } from "../commands/scan";
6
6
  import { wfpHandler } from "../commands/wfp";
7
+ import { cryptoHandler } from '../commands/crypto';
7
8
  function CLIErrorHandler(e) {
8
9
  console.error(" ");
9
10
  console.error(e);
@@ -65,12 +66,24 @@ async function main() {
65
66
  CLIErrorHandler(e);
66
67
  });
67
68
  });
69
+ const cryptography = new Command("crypto");
70
+ cryptography.description("Scan local cryptography");
71
+ cryptography.addArgument(new Argument("<source>"));
72
+ // Options
73
+ cryptography.addOption(new Option("-r, --rules <rules>", "Crypto rules"));
74
+ cryptography.addOption(new Option("-o, --output <filename>", "Output result file name (optional - default stdout)"));
75
+ cryptography.action((source, options) => {
76
+ cryptoHandler(source, options).catch((e) => {
77
+ CLIErrorHandler(e);
78
+ });
79
+ });
68
80
  const program = new Command();
69
81
  program.version(Utils.getPackageVersion());
70
82
  program.description("The SCANOSS JS package provides a simple, easy to consume module for interacting with SCANOSS APIs/Engine.");
71
83
  program.addCommand(scan);
72
84
  program.addCommand(dependencies);
73
85
  program.addCommand(fingerprint);
86
+ program.addCommand(cryptography);
74
87
  await program.parseAsync(process.argv);
75
88
  }
76
89
  try {
@@ -80,4 +93,4 @@ catch (e) {
80
93
  console.error(e);
81
94
  process.exit(1);
82
95
  }
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWJpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGkvYmluL2NsaS1iaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV0RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFN0MsU0FBUyxlQUFlLENBQUMsQ0FBUTtJQUMvQixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDO0FBRUQsS0FBSyxVQUFVLElBQUk7SUFFakIsTUFBTSxJQUFJLEdBQUcsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQzNDLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUN2QyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxpRUFBaUUsQ0FBQyxDQUFDO0lBRTdGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFLHNDQUFzQyxDQUFDLENBQUMsQ0FBQztJQUNoRixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRSw4Q0FBOEMsQ0FBQyxDQUFDLENBQUM7SUFDekYsSUFBSSxD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
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWJpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGkvYmluL2NsaS1iaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV0RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRW5ELFNBQVMsZUFBZSxDQUFDLENBQVE7SUFDL0IsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEIsQ0FBQztBQUVELEtBQUssVUFBVSxJQUFJO0lBRWpCLE1BQU0sSUFBSSxHQUFHLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsaUVBQWlFLENBQUMsQ0FBQztJQUU3RixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRSxzQ0FBc0MsQ0FBQyxDQUFDLENBQUM7SUFDaEYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsOENBQThDLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsZUFBZSxFQUFFLDZFQUE2RSxDQUFDLENBQUMsQ0FBQztJQUMzSCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHdCQUF3QixFQUFFLCtDQUErQyxDQUFDLENBQUMsQ0FBQztJQUN0RyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLDRCQUE0QixFQUFFLGlDQUFpQyxDQUFDLENBQUMsQ0FBQztJQUM1RixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLDhCQUE4QixFQUFFLGlDQUFpQyxDQUFDLENBQUMsQ0FBQztJQUM5RixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLDRCQUE0QixFQUFFLCtFQUErRSxDQUFDLENBQUMsQ0FBQztJQUMxSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHVCQUF1QixFQUFFLDhDQUE4QyxDQUFDLENBQUMsQ0FBQztJQUNwRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHlCQUF5QixFQUFFLHFEQUFxRCxDQUFDLENBQUMsQ0FBQztJQUM3RyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHVCQUF1QixFQUFFLHNCQUFzQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHFCQUFxQixFQUFFLG1SQUFtUixDQUFDLENBQUMsQ0FBQztJQUN2VSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLDJCQUEyQixFQUFFLGlGQUFpRixDQUFDLENBQUMsQ0FBQztJQUMzSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHlCQUF5QixFQUFFLDJEQUEyRCxDQUFDLENBQUMsQ0FBQztJ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
@@ -0,0 +1 @@
1
+ export declare function cryptoHandler(rootPath: string, options: any): Promise<void>;
@@ -0,0 +1,31 @@
1
+ import { isFolder } from './helpers';
2
+ import { CryptographyScanner } from '../../sdk/Cryptography/CryptographyScanner';
3
+ import { Tree } from '../../sdk/tree/Tree';
4
+ import { CryptoCfg } from '../../sdk/Cryptography/CryptoCfg';
5
+ import fs from 'fs';
6
+ export async function cryptoHandler(rootPath, options) {
7
+ rootPath = rootPath.replace(/\/$/, ''); // Remove trailing slash if exists
8
+ rootPath = rootPath.replace(/^\./, process.env.PWD); // Convert relative path to absolute path.
9
+ const pathIsFolder = await isFolder(rootPath);
10
+ let cryptoRules = null;
11
+ if (options.rules)
12
+ cryptoRules = options.rules;
13
+ const cryptoScanner = new CryptographyScanner(new CryptoCfg(cryptoRules));
14
+ let fileList = [];
15
+ fileList.push(rootPath);
16
+ if (pathIsFolder) {
17
+ const tree = new Tree(rootPath);
18
+ tree.build();
19
+ fileList = tree.getFileList(null);
20
+ }
21
+ console.log("Searching for local cryptography...");
22
+ const results = await cryptoScanner.scan(fileList);
23
+ if (options.output) {
24
+ await fs.promises.writeFile(options.output, JSON.stringify(results, null, 2));
25
+ console.log(`Results found in ${options.output}`);
26
+ }
27
+ else {
28
+ console.log(JSON.stringify(results, null, 2));
29
+ }
30
+ }
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NsaS9jb21tYW5kcy9jcnlwdG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUtyQyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ3BCLE1BQU0sNENBQTRDLENBQUM7QUFDcEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFFcEIsTUFBTSxDQUFDLEtBQUssVUFBVSxhQUFhLENBQUMsUUFBZ0IsRUFBRSxPQUFZO0lBQ2hFLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFFLGtDQUFrQztJQUMzRSxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFFLDBDQUEwQztJQUNoRyxNQUFNLFlBQVksR0FBRyxNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUU5QyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDdkIsSUFBRyxPQUFPLENBQUMsS0FBSztRQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBRzlDLE1BQU0sYUFBYSxHQUFHLElBQUksbUJBQW1CLENBQUMsSUFBSSxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUcxRSxJQUFJLFFBQVEsR0FBa0IsRUFBRSxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFeEIsSUFBSSxZQUFZLEVBQUU7UUFDaEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDbkM7SUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLHFDQUFxQyxDQUFDLENBQUE7SUFDbEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRW5ELElBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRTtRQUNqQixNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7S0FDbkQ7U0FBTTtRQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDL0M7QUFFSCxDQUFDIn0=
@@ -8,6 +8,9 @@ export * from './sdk/Dependencies/DependencyTypes';
8
8
  export * from './sdk/Dependencies/DependencyScannerCfg';
9
9
  export * from './sdk/Dependencies/DependencyScanner';
10
10
  export * from './sdk/Dependencies/LocalDependency/LocalDependency';
11
+ export * from './sdk/Cryptography/CryptographyScanner';
12
+ export * from './sdk/Cryptography/CryptoCfg';
13
+ export * from './sdk/Cryptography/CryptographyTypes';
11
14
  export * from './sdk/Report/Report';
12
15
  export * from './sdk/Report/DataLayer/DataLayerTypes';
13
16
  export * from './sdk/Report/DataLayer/DataProviderManager';
@@ -10,6 +10,10 @@ export * from './sdk/Dependencies/DependencyTypes';
10
10
  export * from './sdk/Dependencies/DependencyScannerCfg';
11
11
  export * from './sdk/Dependencies/DependencyScanner';
12
12
  export * from './sdk/Dependencies/LocalDependency/LocalDependency';
13
+ // *** Cryptography scanner exports *** //
14
+ export * from './sdk/Cryptography/CryptographyScanner';
15
+ export * from './sdk/Cryptography/CryptoCfg';
16
+ export * from './sdk/Cryptography/CryptographyTypes';
13
17
  // *** Report export *** //
14
18
  export * from './sdk/Report/Report';
15
19
  export * from './sdk/Report/DataLayer/DataLayerTypes';
@@ -25,4 +29,4 @@ export * from './sdk/FileCount/FileCount';
25
29
  export * from './sdk/Services/Grpc/CryptographyService';
26
30
  export * from './sdk/Services/Grpc/DependencyService';
27
31
  export { logger } from './sdk/Logger';
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0NBQWtDO0FBQ2xDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsdURBQXVELENBQUM7QUFFdEUsaUNBQWlDO0FBQ2pDLGNBQWMsMkJBQTJCLENBQUM7QUFHMUMsd0NBQXdDO0FBQ3hDLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsb0RBQW9ELENBQUM7QUFFbkUsMkJBQTJCO0FBQzNCLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsMERBQTBELENBQUM7QUFDekUsY0FBYywwREFBMEQsQ0FBQztBQUN6RSxjQUFjLDZEQUE2RCxDQUFDO0FBQzVFLGNBQWMsNERBQTRELENBQUM7QUFFM0UsbUJBQW1CO0FBQ25CLGNBQWMsdUNBQXVDLENBQUM7QUFFdEQsdUJBQXVCO0FBQ3ZCLGNBQWMsMkJBQTJCLENBQUM7QUFHMUMsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHVDQUF1QyxDQUFDO0FBR3RELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUMifQ==
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0NBQWtDO0FBQ2xDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsdURBQXVELENBQUM7QUFFdEUsaUNBQWlDO0FBQ2pDLGNBQWMsMkJBQTJCLENBQUM7QUFHMUMsd0NBQXdDO0FBQ3hDLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsb0RBQW9ELENBQUM7QUFFbkUsMENBQTBDO0FBQzFDLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHNDQUFzQyxDQUFDO0FBRXJELDJCQUEyQjtBQUMzQixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLDBEQUEwRCxDQUFDO0FBQ3pFLGNBQWMsMERBQTBELENBQUM7QUFDekUsY0FBYyw2REFBNkQsQ0FBQztBQUM1RSxjQUFjLDREQUE0RCxDQUFDO0FBRTNFLG1CQUFtQjtBQUNuQixjQUFjLHVDQUF1QyxDQUFDO0FBRXRELHVCQUF1QjtBQUN2QixjQUFjLDJCQUEyQixDQUFDO0FBRzFDLGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyx1Q0FBdUMsQ0FBQztBQUd0RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDIn0=
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Represents a configuration for cryptography scanner.
3
+ */
4
+ export declare class CryptoCfg {
5
+ private readonly rulesPath;
6
+ /**
7
+ * Creates an instance of CryptoCfg.
8
+ * @param rulesPath Optional. Path to the cryptography rules file.
9
+ */
10
+ constructor(rulesPath?: string);
11
+ /**
12
+ * Gets the path to the cryptography rules file.
13
+ * @returns The path to the cryptography rules file.
14
+ */
15
+ getRulesPath(): string;
16
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Represents a configuration for cryptography scanner.
3
+ */
4
+ export class CryptoCfg {
5
+ /**
6
+ * Creates an instance of CryptoCfg.
7
+ * @param rulesPath Optional. Path to the cryptography rules file.
8
+ */
9
+ constructor(rulesPath) {
10
+ this.rulesPath = rulesPath;
11
+ }
12
+ /**
13
+ * Gets the path to the cryptography rules file.
14
+ * @returns The path to the cryptography rules file.
15
+ */
16
+ getRulesPath() {
17
+ return this.rulesPath;
18
+ }
19
+ }
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvQ2ZnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Nkay9DcnlwdG9ncmFwaHkvQ3J5cHRvQ2ZnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFNBQVM7SUFJcEI7OztPQUdHO0lBQ0YsWUFBWSxTQUFrQjtRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBRUY7OztPQUdHO0lBQ0ssWUFBWTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztDQUVIIn0=
@@ -0,0 +1,15 @@
1
+ import { CryptoAlgorithm, CryptoAlgorithmRules } from '../CryptographyTypes';
2
+ /**
3
+ * Function to create a mapping of regular expressions based on provided crypto definitions.
4
+ * @param cryptoRulesDefinitions An array of objects containing cryptographic definitions.
5
+ * @returns A Map where each key is a cryptographic algorithm and each value is a regular expression
6
+ * that matches keywords associated with that algorithm.
7
+ */
8
+ export declare function createCryptoKeywordMapper(cryptoRulesDefinitions: Array<CryptoAlgorithmRules>): Map<string, RegExp>;
9
+ /**
10
+ * Function to create a mapping of cryptographic algorithms and their strengths.
11
+ * @param cryptoDefinitions An array of objects containing cryptographic definitions.
12
+ * @returns A Map where each key is a cryptographic algorithm and each value is an object
13
+ * containing the algorithm's name and strength.
14
+ */
15
+ export declare function getCryptoMapper(cryptoDefinitions: Array<CryptoAlgorithmRules>): Map<string, CryptoAlgorithm>;
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Function to create a mapping of regular expressions based on provided crypto definitions.
3
+ * @param cryptoRulesDefinitions An array of objects containing cryptographic definitions.
4
+ * @returns A Map where each key is a cryptographic algorithm and each value is a regular expression
5
+ * that matches keywords associated with that algorithm.
6
+ */
7
+ export function createCryptoKeywordMapper(cryptoRulesDefinitions) {
8
+ const mapper = new Map();
9
+ cryptoRulesDefinitions.forEach(c => {
10
+ const words = [];
11
+ c.keywords.forEach((k) => {
12
+ const escapedWord = k.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
13
+ words.push(escapedWord);
14
+ });
15
+ mapper.set(c.algorithm, new RegExp(words.join('|'), 'gi'));
16
+ });
17
+ return mapper;
18
+ }
19
+ /**
20
+ * Function to create a mapping of cryptographic algorithms and their strengths.
21
+ * @param cryptoDefinitions An array of objects containing cryptographic definitions.
22
+ * @returns A Map where each key is a cryptographic algorithm and each value is an object
23
+ * containing the algorithm's name and strength.
24
+ */
25
+ export function getCryptoMapper(cryptoDefinitions) {
26
+ const cryptoMapper = new Map();
27
+ cryptoDefinitions.forEach((c) => {
28
+ const { algorithm, strength } = c;
29
+ // Add the algorithm and its details to the map.
30
+ cryptoMapper.set(c.algorithm, { algorithm, strength });
31
+ });
32
+ return cryptoMapper;
33
+ }
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvRGVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay9DcnlwdG9ncmFwaHkvQ3J5cHRvRGVmL0NyeXB0b0RlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxzQkFBbUQ7SUFDM0YsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQWlCLENBQUM7SUFDeEMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQSxFQUFFO1FBQ2hDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNqQixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFO1lBQ3RCLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDN0QsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUxQixDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLGlCQUE4QztJQUMzRSxNQUFNLFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBZSxDQUFDO0lBRTVDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQy9CLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLGdEQUFnRDtRQUNoRCxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUMifQ==
@@ -0,0 +1,25 @@
1
+ import { CryptoItem } from '../Scanneable/CryptoItem';
2
+ import { CryptoAlgorithmRules } from '../CryptographyTypes';
3
+ /**
4
+ * Represents a CryptoCalculator used for searching cryptographic algorithms in files.
5
+ */
6
+ export declare class LocalCrypto {
7
+ private cryptoMapper;
8
+ private cryptoRules;
9
+ /**
10
+ * Constructs a new LocalCrypto.
11
+ * @param cryptoRules An array of CryptoAlgorithmRules used to create the search rules.
12
+ */
13
+ constructor(cryptoRules: Array<CryptoAlgorithmRules>);
14
+ /**
15
+ * Searches for cryptographic algorithms in the content of a files.
16
+ * @param files The files to search.
17
+ */
18
+ search(files: Array<string>): Promise<Array<CryptoItem>>;
19
+ /**
20
+ * Asynchronously searches for cryptographic algorithms in the content of a file.
21
+ * @param cryptoItem The CryptoItem to search for cryptographic algorithms.
22
+ * @returns A promise that resolves when the search is complete.
23
+ */
24
+ private searchCrypto;
25
+ }
@@ -0,0 +1,55 @@
1
+ import { CryptoItem } from '../Scanneable/CryptoItem';
2
+ import { createCryptoKeywordMapper, getCryptoMapper, } from '../CryptoDef/CryptoDef';
3
+ import fs from 'fs';
4
+ /**
5
+ * Represents a CryptoCalculator used for searching cryptographic algorithms in files.
6
+ */
7
+ export class LocalCrypto {
8
+ /**
9
+ * Constructs a new LocalCrypto.
10
+ * @param cryptoRules An array of CryptoAlgorithmRules used to create the search rules.
11
+ */
12
+ constructor(cryptoRules) {
13
+ this.cryptoRules = createCryptoKeywordMapper(cryptoRules);
14
+ this.cryptoMapper = getCryptoMapper(cryptoRules);
15
+ }
16
+ /**
17
+ * Searches for cryptographic algorithms in the content of a files.
18
+ * @param files The files to search.
19
+ */
20
+ async search(files) {
21
+ if (files.length <= 0)
22
+ return [];
23
+ const cryptoItems = files.map((f) => { return new CryptoItem(f); });
24
+ await Promise.all(cryptoItems.map(async (c) => {
25
+ await this.searchCrypto(c);
26
+ }));
27
+ return cryptoItems;
28
+ }
29
+ /**
30
+ * Asynchronously searches for cryptographic algorithms in the content of a file.
31
+ * @param cryptoItem The CryptoItem to search for cryptographic algorithms.
32
+ * @returns A promise that resolves when the search is complete.
33
+ */
34
+ async searchCrypto(cryptoItem) {
35
+ const cryptoFound = new Array();
36
+ let content = await fs.promises.readFile(cryptoItem.getPath(), 'utf-8');
37
+ this.cryptoRules.forEach((value, key) => {
38
+ try {
39
+ const matches = content.match(value);
40
+ if (matches) {
41
+ cryptoFound.push(key);
42
+ }
43
+ }
44
+ catch (e) {
45
+ console.error(e);
46
+ }
47
+ });
48
+ const results = [];
49
+ cryptoFound.forEach((cf) => {
50
+ results.push(this.cryptoMapper.get(cf));
51
+ });
52
+ cryptoItem.setAlgorithms(results);
53
+ }
54
+ }
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxDcnlwdG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0NyeXB0b2dyYXBoeS9DcnlwdG9Qcm92aWRlci9Mb2NhbENyeXB0by50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUNMLHlCQUF5QixFQUFFLGVBQWUsR0FDM0MsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFHcEI7O0dBRUc7QUFDSCxNQUFNLE9BQU8sV0FBVztJQU10Qjs7O09BR0c7SUFDSCxZQUFZLFdBQXdDO1FBQ2xELElBQUksQ0FBQyxXQUFXLEdBQUcseUJBQXlCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLFlBQVksR0FBRyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDbEQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBb0I7UUFDdEMsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNqQyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsR0FBRyxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEUsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzVDLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ0osT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQXNCO1FBQy9DLE1BQU0sV0FBVyxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFDeEMsSUFBSSxPQUFPLEdBQUksTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDdEMsSUFBSTtnQkFDRixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLE9BQU8sRUFBRTtvQkFDWCxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUN2QjthQUNGO1lBQUMsT0FBTyxDQUFDLEVBQUM7Z0JBQ1QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNsQjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQTJCLEVBQUUsQ0FBQztRQUMzQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFDLEVBQUU7WUFDeEIsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsVUFBVSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwQyxDQUFDO0NBQ0YifQ==
@@ -0,0 +1,31 @@
1
+ import { CryptoCfg } from './CryptoCfg';
2
+ import { ILocalCryptographyResponse } from './CryptographyTypes';
3
+ /**
4
+ * A class responsible for scanning files for cryptographic items.
5
+ */
6
+ export declare class CryptographyScanner {
7
+ private cryptoConfig;
8
+ /**
9
+ * Constructs a new CryptographyScanner.
10
+ * @param cryptoCfg The cryptographic configuration.
11
+ */
12
+ constructor(cryptoCfg: CryptoCfg);
13
+ /**
14
+ * Scans an array of files for cryptographic items.
15
+ * @param files An array of file paths to scan.
16
+ * @returns A promise that resolves to an ILocalCryptographyResponse.
17
+ */
18
+ scan(files: Array<string>): Promise<ILocalCryptographyResponse>;
19
+ /**
20
+ * Scans a folder for cryptographic items.
21
+ * @param path The path of the folder to scan.
22
+ * @returns A promise that resolves to an ILocalCryptographyResponse.
23
+ * @throws Error if the specified path is not a directory.
24
+ */
25
+ scanFolder(path: string): Promise<ILocalCryptographyResponse>;
26
+ /**
27
+ * Loads custom cryptographic rules from a file.
28
+ * @returns A promise that resolves to the loaded rules.
29
+ */
30
+ private loadRules;
31
+ }
@@ -0,0 +1,51 @@
1
+ import fs from 'fs';
2
+ import { Tree } from '../tree/Tree';
3
+ import { LocalCrypto } from './CryptoProvider/LocalCrypto';
4
+ import { mapToILocalCryptographyResponse } from './utils/adapters/cryptoAdapters';
5
+ import path from 'path';
6
+ /**
7
+ * A class responsible for scanning files for cryptographic items.
8
+ */
9
+ export class CryptographyScanner {
10
+ /**
11
+ * Constructs a new CryptographyScanner.
12
+ * @param cryptoCfg The cryptographic configuration.
13
+ */
14
+ constructor(cryptoCfg) {
15
+ this.cryptoConfig = cryptoCfg;
16
+ }
17
+ /**
18
+ * Scans an array of files for cryptographic items.
19
+ * @param files An array of file paths to scan.
20
+ * @returns A promise that resolves to an ILocalCryptographyResponse.
21
+ */
22
+ async scan(files) {
23
+ const cryptographyRules = await this.loadRules(this.cryptoConfig.getRulesPath());
24
+ const localCrypto = new LocalCrypto(cryptographyRules);
25
+ const cryptoItems = await localCrypto.search(files);
26
+ return mapToILocalCryptographyResponse(cryptoItems);
27
+ }
28
+ /**
29
+ * Scans a folder for cryptographic items.
30
+ * @param path The path of the folder to scan.
31
+ * @returns A promise that resolves to an ILocalCryptographyResponse.
32
+ * @throws Error if the specified path is not a directory.
33
+ */
34
+ async scanFolder(path) {
35
+ if (!(await fs.promises.lstat(path)).isDirectory())
36
+ throw new Error('Specified path is not a directory');
37
+ const tree = new Tree(path);
38
+ tree.build();
39
+ return await this.scan(tree.getFileList());
40
+ }
41
+ /**
42
+ * Loads custom cryptographic rules from a file.
43
+ * @returns A promise that resolves to the loaded rules.
44
+ */
45
+ async loadRules(rulePath) {
46
+ const cryptoRulePath = rulePath ? rulePath : path.join(__dirname, '../../../../assets/data/defaultCryptoRules.json');
47
+ const rules = await fs.promises.readFile(cryptoRulePath, 'utf-8');
48
+ return JSON.parse(rules);
49
+ }
50
+ }
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvZ3JhcGh5U2Nhbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZGsvQ3J5cHRvZ3JhcGh5L0NyeXB0b2dyYXBoeVNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBTTNELE9BQU8sRUFDTCwrQkFBK0IsRUFDaEMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFFeEI7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBRzlCOzs7T0FHRztJQUNILFlBQVksU0FBb0I7UUFDOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQW9CO1FBQ3BDLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUNqRixNQUFNLFdBQVcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sV0FBVyxHQUFHLE1BQU0sV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRCxPQUFPLCtCQUErQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBWTtRQUNsQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFO1lBQ2hELE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUN2RCxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixPQUFPLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFpQjtRQUN2QyxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLElBQUksQ0FDckQsU0FBUyxFQUNULGlEQUFpRCxDQUFDLENBQUM7UUFDckQsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUMsT0FBTyxDQUFDLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7Q0FFRiJ9
@@ -0,0 +1,14 @@
1
+ export interface CryptoAlgorithm {
2
+ algorithm: string;
3
+ strength: string;
4
+ }
5
+ export interface CryptoAlgorithmRules extends CryptoAlgorithm {
6
+ keywords: Array<string>;
7
+ }
8
+ export interface ICryptoItem {
9
+ file: string;
10
+ algorithms: Array<CryptoAlgorithm>;
11
+ }
12
+ export interface ILocalCryptographyResponse {
13
+ fileList: Array<ICryptoItem>;
14
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvZ3JhcGh5VHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2RrL0NyeXB0b2dyYXBoeS9DcnlwdG9ncmFwaHlUeXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=