@siegesailor/cryptography 1.0.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 (95) hide show
  1. package/LICENSE.md +19 -0
  2. package/README.md +79 -0
  3. package/build/algorithms/baby-step-giant-step/index.js +89 -0
  4. package/build/algorithms/baby-step-giant-step/index.js.map +1 -0
  5. package/build/algorithms/baby-step-giant-step/index.test.js +32 -0
  6. package/build/algorithms/baby-step-giant-step/index.test.js.map +1 -0
  7. package/build/algorithms/blum-blum-shub/index.js +88 -0
  8. package/build/algorithms/blum-blum-shub/index.js.map +1 -0
  9. package/build/algorithms/blum-blum-shub/index.test.js +74 -0
  10. package/build/algorithms/blum-blum-shub/index.test.js.map +1 -0
  11. package/build/algorithms/chinese-remainder/index.js +111 -0
  12. package/build/algorithms/chinese-remainder/index.js.map +1 -0
  13. package/build/algorithms/chinese-remainder/index.test.js +28 -0
  14. package/build/algorithms/chinese-remainder/index.test.js.map +1 -0
  15. package/build/algorithms/euclidean/index.js +60 -0
  16. package/build/algorithms/euclidean/index.js.map +1 -0
  17. package/build/algorithms/euclidean/index.test.js +22 -0
  18. package/build/algorithms/euclidean/index.test.js.map +1 -0
  19. package/build/algorithms/extended-euclidean/index.js +77 -0
  20. package/build/algorithms/extended-euclidean/index.js.map +1 -0
  21. package/build/algorithms/extended-euclidean/index.test.js +22 -0
  22. package/build/algorithms/extended-euclidean/index.test.js.map +1 -0
  23. package/build/algorithms/fast-modular-exponentiation/index.js +80 -0
  24. package/build/algorithms/fast-modular-exponentiation/index.js.map +1 -0
  25. package/build/algorithms/fast-modular-exponentiation/index.test.js +31 -0
  26. package/build/algorithms/fast-modular-exponentiation/index.test.js.map +1 -0
  27. package/build/algorithms/miller-rabin-primarily-test/index.js +87 -0
  28. package/build/algorithms/miller-rabin-primarily-test/index.js.map +1 -0
  29. package/build/algorithms/miller-rabin-primarily-test/index.test.js +78 -0
  30. package/build/algorithms/miller-rabin-primarily-test/index.test.js.map +1 -0
  31. package/build/algorithms/multiplicative-inverse/index.js +83 -0
  32. package/build/algorithms/multiplicative-inverse/index.js.map +1 -0
  33. package/build/algorithms/multiplicative-inverse/index.test.js +30 -0
  34. package/build/algorithms/multiplicative-inverse/index.test.js.map +1 -0
  35. package/build/algorithms/naor-reingo/index.js +85 -0
  36. package/build/algorithms/naor-reingo/index.js.map +1 -0
  37. package/build/algorithms/naor-reingo/index.test.js +27 -0
  38. package/build/algorithms/naor-reingo/index.test.js.map +1 -0
  39. package/build/algorithms/pollard-p-1-factorization/index.js +92 -0
  40. package/build/algorithms/pollard-p-1-factorization/index.js.map +1 -0
  41. package/build/algorithms/pollard-p-1-factorization/index.test.js +32 -0
  42. package/build/algorithms/pollard-p-1-factorization/index.test.js.map +1 -0
  43. package/build/algorithms/pollard-rho/index.js +82 -0
  44. package/build/algorithms/pollard-rho/index.js.map +1 -0
  45. package/build/algorithms/pollard-rho/index.test.js +26 -0
  46. package/build/algorithms/pollard-rho/index.test.js.map +1 -0
  47. package/build/algorithms/primitive-root-search/index.js +95 -0
  48. package/build/algorithms/primitive-root-search/index.js.map +1 -0
  49. package/build/algorithms/primitive-root-search/index.test.js +46 -0
  50. package/build/algorithms/primitive-root-search/index.test.js.map +1 -0
  51. package/build/command.js +79 -0
  52. package/build/command.js.map +1 -0
  53. package/build/entry-point.js +31 -0
  54. package/build/entry-point.js.map +1 -0
  55. package/build/key-encryptions/DiffieHellman.js +56 -0
  56. package/build/key-encryptions/DiffieHellman.js.map +1 -0
  57. package/build/key-encryptions/ElGamal.js +83 -0
  58. package/build/key-encryptions/ElGamal.js.map +1 -0
  59. package/build/key-encryptions/RSA.js +102 -0
  60. package/build/key-encryptions/RSA.js.map +1 -0
  61. package/build/shared/algorithm/math.js +9 -0
  62. package/build/shared/algorithm/math.js.map +1 -0
  63. package/build/shared/algorithm/random.js +52 -0
  64. package/build/shared/algorithm/random.js.map +1 -0
  65. package/build/shared/algorithm/wasm.js +105 -0
  66. package/build/shared/algorithm/wasm.js.map +1 -0
  67. package/build/shared/algorithm/wrap.js +57 -0
  68. package/build/shared/algorithm/wrap.js.map +1 -0
  69. package/build/shared/cli/Procedure.js +51 -0
  70. package/build/shared/cli/Procedure.js.map +1 -0
  71. package/build/shared/cli/chalk.js +48 -0
  72. package/build/shared/cli/chalk.js.map +1 -0
  73. package/build/shared/cli/inquirer.js +13 -0
  74. package/build/shared/cli/inquirer.js.map +1 -0
  75. package/build/shared/cli/prompt.js +98 -0
  76. package/build/shared/cli/prompt.js.map +1 -0
  77. package/build/shared/cli/utilities.js +145 -0
  78. package/build/shared/cli/utilities.js.map +1 -0
  79. package/build/shared/constants.js +21 -0
  80. package/build/shared/constants.js.map +1 -0
  81. package/build/shared/testing/wasm.js +78 -0
  82. package/build/shared/testing/wasm.js.map +1 -0
  83. package/build/source/algorithms/baby-step-giant-step/main.wasm +0 -0
  84. package/build/source/algorithms/blum-blum-shub/main.wasm +0 -0
  85. package/build/source/algorithms/chinese-remainder/main.wasm +0 -0
  86. package/build/source/algorithms/euclidean/main.wasm +0 -0
  87. package/build/source/algorithms/extended-euclidean/main.wasm +0 -0
  88. package/build/source/algorithms/fast-modular-exponentiation/main.wasm +0 -0
  89. package/build/source/algorithms/miller-rabin-primarily-test/main.wasm +0 -0
  90. package/build/source/algorithms/multiplicative-inverse/main.wasm +0 -0
  91. package/build/source/algorithms/naor-reingo/main.wasm +0 -0
  92. package/build/source/algorithms/pollard-p-1-factorization/main.wasm +0 -0
  93. package/build/source/algorithms/pollard-rho/main.wasm +0 -0
  94. package/build/source/algorithms/primitive-root-search/main.wasm +0 -0
  95. package/package.json +79 -0
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const STYLE_CODES = {
4
+ bold: 1,
5
+ italic: 3,
6
+ red: 31,
7
+ cyan: 36,
8
+ gray: 90,
9
+ greenBright: 92,
10
+ bgCyan: 46,
11
+ };
12
+ function applyStyle(codes, value) {
13
+ const text = String(value);
14
+ if (codes.length === 0) {
15
+ return text;
16
+ }
17
+ return `\u001b[${codes.join(";")}m${text}\u001b[0m`;
18
+ }
19
+ function createStyle(codes = []) {
20
+ const style = ((value) => applyStyle(codes, value));
21
+ Object.defineProperties(style, {
22
+ bold: {
23
+ get: () => createStyle([...codes, STYLE_CODES.bold]),
24
+ },
25
+ italic: {
26
+ get: () => createStyle([...codes, STYLE_CODES.italic]),
27
+ },
28
+ red: {
29
+ get: () => createStyle([...codes, STYLE_CODES.red]),
30
+ },
31
+ cyan: {
32
+ get: () => createStyle([...codes, STYLE_CODES.cyan]),
33
+ },
34
+ gray: {
35
+ get: () => createStyle([...codes, STYLE_CODES.gray]),
36
+ },
37
+ greenBright: {
38
+ get: () => createStyle([...codes, STYLE_CODES.greenBright]),
39
+ },
40
+ bgCyan: {
41
+ get: () => createStyle([...codes, STYLE_CODES.bgCyan]),
42
+ },
43
+ });
44
+ return style;
45
+ }
46
+ const chalk = createStyle();
47
+ exports.default = chalk;
48
+ //# sourceMappingURL=chalk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chalk.js","sourceRoot":"","sources":["../../../source/shared/cli/chalk.ts"],"names":[],"mappings":";;AAUA,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,GAAG,EAAE,EAAE;IACP,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;IACR,WAAW,EAAE,EAAE;IACf,MAAM,EAAE,EAAE;CACF,CAAC;AAEX,SAAS,UAAU,CAAC,KAAe,EAAE,KAAc;IACjD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,UAAU,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,WAAW,CAAC;AACtD,CAAC;AAED,SAAS,WAAW,CAAC,QAAkB,EAAE;IACvC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAgB,CAAC;IAE5E,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE;QAC7B,IAAI,EAAE;YACJ,GAAG,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,GAAG,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;SACrD;QACD,MAAM,EAAE;YACN,GAAG,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,GAAG,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;SACvD;QACD,GAAG,EAAE;YACH,GAAG,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,GAAG,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;SACpD;QACD,IAAI,EAAE;YACJ,GAAG,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,GAAG,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;SACrD;QACD,IAAI,EAAE;YACJ,GAAG,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,GAAG,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;SACrD;QACD,WAAW,EAAE;YACX,GAAG,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,GAAG,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;SAC5D;QACD,MAAM,EAAE;YACN,GAAG,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,GAAG,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;SACvD;KACF,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;AAE5B,kBAAe,KAAK,CAAC"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getInquirer = getInquirer;
4
+ let cachedInquirer = null;
5
+ async function getInquirer() {
6
+ if (cachedInquirer) {
7
+ return cachedInquirer;
8
+ }
9
+ const moduleNamespace = (await Function('return import("inquirer")')());
10
+ cachedInquirer = (moduleNamespace.default ?? moduleNamespace);
11
+ return cachedInquirer;
12
+ }
13
+ //# sourceMappingURL=inquirer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inquirer.js","sourceRoot":"","sources":["../../../source/shared/cli/inquirer.ts"],"names":[],"mappings":";;AAMA,kCAUC;AAZD,IAAI,cAAc,GAAyB,IAAI,CAAC;AAEzC,KAAK,UAAU,WAAW;IAC/B,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,MAAM,eAAe,GAAG,CAAC,MAAM,QAAQ,CACrC,2BAA2B,CAC5B,EAAE,CAAgC,CAAC;IACpC,cAAc,GAAG,CAAC,eAAe,CAAC,OAAO,IAAI,eAAe,CAAkB,CAAC;IAC/E,OAAO,cAAc,CAAC;AACxB,CAAC"}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createAlgorithmPrompt = createAlgorithmPrompt;
4
+ const inquirer_1 = require("../../shared/cli/inquirer");
5
+ function serialize(value) {
6
+ return JSON.stringify(value, (_, currentValue) => {
7
+ if (typeof currentValue === "bigint") {
8
+ return currentValue.toString();
9
+ }
10
+ if (currentValue instanceof Error) {
11
+ return {
12
+ name: currentValue.name,
13
+ message: currentValue.message,
14
+ };
15
+ }
16
+ return currentValue;
17
+ });
18
+ }
19
+ function normalizeOptions(options) {
20
+ return {
21
+ answers: options.answers ?? {},
22
+ interactive: options.interactive ?? true,
23
+ outputFormat: options.outputFormat ?? "text",
24
+ errorFormat: options.errorFormat ?? "throw",
25
+ writer: options.writer ?? ((message) => console.log(message)),
26
+ };
27
+ }
28
+ function createAlgorithmPrompt(algorithm, execute) {
29
+ return async (options = {}) => {
30
+ const normalizedOptions = normalizeOptions(options);
31
+ const transcript = [];
32
+ const writeLine = (value) => {
33
+ const message = String(value);
34
+ transcript.push(message);
35
+ if (normalizedOptions.outputFormat === "text") {
36
+ normalizedOptions.writer(message);
37
+ }
38
+ };
39
+ const context = {
40
+ options: normalizedOptions,
41
+ async ask(questions) {
42
+ const normalizedQuestions = Array.isArray(questions)
43
+ ? questions
44
+ : [questions];
45
+ const presetAnswers = { ...normalizedOptions.answers };
46
+ const pendingQuestions = normalizedQuestions.filter((question) => {
47
+ return question.name && !(question.name in presetAnswers);
48
+ });
49
+ if (pendingQuestions.length === 0) {
50
+ return presetAnswers;
51
+ }
52
+ if (!normalizedOptions.interactive) {
53
+ throw new Error(`Missing prompt answers: ${pendingQuestions
54
+ .map((question) => String(question.name))
55
+ .join(", ")}.`);
56
+ }
57
+ const inquirer = await (0, inquirer_1.getInquirer)();
58
+ const answers = await inquirer.prompt(pendingQuestions);
59
+ return {
60
+ ...presetAnswers,
61
+ ...answers,
62
+ };
63
+ },
64
+ writeLine,
65
+ };
66
+ try {
67
+ const result = await execute(context);
68
+ const payload = {
69
+ algorithm,
70
+ success: true,
71
+ result,
72
+ transcript,
73
+ };
74
+ if (normalizedOptions.outputFormat === "json") {
75
+ normalizedOptions.writer(serialize(payload));
76
+ }
77
+ return payload;
78
+ }
79
+ catch (error) {
80
+ const payload = {
81
+ algorithm,
82
+ success: false,
83
+ error: error instanceof Error ? error.message : String(error),
84
+ transcript,
85
+ };
86
+ if (normalizedOptions.errorFormat === "json") {
87
+ normalizedOptions.writer(serialize(payload));
88
+ return payload;
89
+ }
90
+ if (normalizedOptions.errorFormat === "text") {
91
+ normalizedOptions.writer(payload.error ?? "Unknown prompt error.");
92
+ return payload;
93
+ }
94
+ throw error;
95
+ }
96
+ };
97
+ }
98
+ //# sourceMappingURL=prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../source/shared/cli/prompt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.inquire = exports.log = exports.format = void 0;
40
+ const fs_1 = require("fs");
41
+ const path_1 = require("path");
42
+ const chalk_1 = __importDefault(require("../../shared/cli/chalk"));
43
+ const Procedure_1 = __importDefault(require("../../shared/cli/Procedure"));
44
+ const inquirer_1 = require("../../shared/cli/inquirer");
45
+ function resolveProcedureIndex(arrayOfFile, fileFormatter, selection) {
46
+ if (selection === undefined) {
47
+ return null;
48
+ }
49
+ if (typeof selection === "number") {
50
+ if (!Number.isInteger(selection) ||
51
+ selection < 0 ||
52
+ selection >= arrayOfFile.length) {
53
+ throw new Error(`Unknown procedure selection: ${selection}`);
54
+ }
55
+ return selection;
56
+ }
57
+ const normalizedSelection = selection.trim().toLowerCase();
58
+ const index = arrayOfFile.findIndex((file) => {
59
+ return (file.toLowerCase() === normalizedSelection ||
60
+ fileFormatter(file).toLowerCase() === normalizedSelection);
61
+ });
62
+ if (index === -1) {
63
+ throw new Error(`Unknown procedure selection: ${selection}`);
64
+ }
65
+ return index;
66
+ }
67
+ exports.format = {
68
+ foldername: (foldername) => {
69
+ return foldername
70
+ .split("-")
71
+ .map((word) => {
72
+ return word[0].toUpperCase() + word.slice(1);
73
+ })
74
+ .join(" ");
75
+ },
76
+ filename: (filename) => {
77
+ return filename.split(".")[0];
78
+ },
79
+ };
80
+ exports.log = {
81
+ highlight: (input) => {
82
+ console.log("\n" + chalk_1.default.bold.cyan(input));
83
+ },
84
+ list: (listOfItem) => {
85
+ listOfItem.forEach(({ name, value }) => {
86
+ console.log(`\t${name}: ${chalk_1.default.gray(value)}`);
87
+ });
88
+ },
89
+ };
90
+ exports.inquire = {
91
+ continue: async (title, callback) => {
92
+ try {
93
+ exports.log.highlight(title);
94
+ const inquirer = await (0, inquirer_1.getInquirer)();
95
+ await inquirer.prompt({
96
+ type: "input",
97
+ name: "_",
98
+ message: "Press Enter to continue.",
99
+ });
100
+ return await callback();
101
+ }
102
+ catch (error) {
103
+ throw error;
104
+ }
105
+ },
106
+ procedure: async (procedurePath, message, fileFormatter, options = {}) => {
107
+ try {
108
+ const targetPath = (0, path_1.isAbsolute)(procedurePath)
109
+ ? procedurePath
110
+ : (0, path_1.join)(process.cwd(), procedurePath);
111
+ const arrayOfFile = (0, fs_1.readdirSync)(targetPath);
112
+ let index = resolveProcedureIndex(arrayOfFile, fileFormatter, options.selection);
113
+ if (index === null) {
114
+ const inquirer = await (0, inquirer_1.getInquirer)();
115
+ const answer = await inquirer.prompt([
116
+ {
117
+ type: "rawlist",
118
+ name: "_",
119
+ message,
120
+ choices: arrayOfFile.map((foldername, index) => {
121
+ return {
122
+ name: fileFormatter(foldername),
123
+ value: index,
124
+ };
125
+ }),
126
+ pageSize: Number.MAX_VALUE,
127
+ },
128
+ ]);
129
+ index = answer._;
130
+ }
131
+ const name = fileFormatter(arrayOfFile[index]);
132
+ console.log(chalk_1.default.gray(name));
133
+ const { prompt } = await Promise.resolve(`${(0, path_1.join)(targetPath, arrayOfFile[index])}`).then(s => __importStar(require(s)));
134
+ if (!prompt) {
135
+ throw new Error("The file is not ready for interactive commands.");
136
+ }
137
+ const procedure = new Procedure_1.default(name, () => prompt(options.promptOptions), { restartable: options.restartable });
138
+ await procedure.run();
139
+ }
140
+ catch (error) {
141
+ throw error;
142
+ }
143
+ },
144
+ };
145
+ //# sourceMappingURL=utilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilities.js","sourceRoot":"","sources":["../../../source/shared/cli/utilities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ACTORS = exports.SYMBOLS = exports.CHOICES = void 0;
4
+ exports.CHOICES = {
5
+ DEMONSTRATE: "Demonstrate a cryptography procedure",
6
+ EXECUTE: "Execute individual algorithm",
7
+ EXIT: "Exit",
8
+ };
9
+ exports.SYMBOLS = {
10
+ CONGRUENT: "\u2245",
11
+ ARROW_MODIFIER_TOP: "\u2227",
12
+ ARROW_MODIFIER_BOTTOM: "\u2228",
13
+ ARROW_DOWNLOAD_TOP: "\u2191",
14
+ ARROW_DOWNLOAD_BOTTOM: "\u2193",
15
+ };
16
+ exports.ACTORS = {
17
+ ALICE: "Alice",
18
+ BOB: "Bob",
19
+ EVE: "Eve",
20
+ };
21
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../source/shared/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG;IACrB,WAAW,EAAE,sCAAsC;IACnD,OAAO,EAAE,8BAA8B;IACvC,IAAI,EAAE,MAAM;CACJ,CAAC;AAEE,QAAA,OAAO,GAAG;IACrB,SAAS,EAAE,QAAQ;IACnB,kBAAkB,EAAE,QAAQ;IAC5B,qBAAqB,EAAE,QAAQ;IAC/B,kBAAkB,EAAE,QAAQ;IAC5B,qBAAqB,EAAE,QAAQ;CACvB,CAAC;AAEE,QAAA,MAAM,GAAG;IACpB,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;CACF,CAAC"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.runWithoutWASM = runWithoutWASM;
37
+ exports.expectSameResultWithAndWithoutWASM = expectSameResultWithAndWithoutWASM;
38
+ exports.expectSameErrorWithAndWithoutWASM = expectSameErrorWithAndWithoutWASM;
39
+ const wasm = __importStar(require("../../shared/algorithm/wasm"));
40
+ function captureError(execute) {
41
+ try {
42
+ execute();
43
+ return null;
44
+ }
45
+ catch (error) {
46
+ return error instanceof Error ? error.message : String(error);
47
+ }
48
+ }
49
+ function runWithoutWASM(execute) {
50
+ const getAlgorithmWASMExportsSpy = jest
51
+ .spyOn(wasm, "getAlgorithmWASMExports")
52
+ .mockReturnValue(null);
53
+ try {
54
+ return execute();
55
+ }
56
+ finally {
57
+ getAlgorithmWASMExportsSpy.mockRestore();
58
+ }
59
+ }
60
+ function expectSameResultWithAndWithoutWASM(execute, compare) {
61
+ const actualResult = execute();
62
+ const fallbackResult = runWithoutWASM(execute);
63
+ if (compare) {
64
+ compare(actualResult, fallbackResult);
65
+ return;
66
+ }
67
+ expect(fallbackResult).toEqual(actualResult);
68
+ }
69
+ function expectSameErrorWithAndWithoutWASM(execute, expectedMessage) {
70
+ const actualError = captureError(execute);
71
+ const fallbackError = runWithoutWASM(() => captureError(execute));
72
+ expect(actualError).not.toBeNull();
73
+ if (expectedMessage !== undefined) {
74
+ expect(actualError).toEqual(expectedMessage);
75
+ }
76
+ expect(fallbackError).toEqual(actualError);
77
+ }
78
+ //# sourceMappingURL=wasm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasm.js","sourceRoot":"","sources":["../../../source/shared/testing/wasm.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,wCAUC;AAED,gFAaC;AAED,8EAcC;AAzDD,8DAAgD;AAOhD,SAAS,YAAY,CAAC,OAAsB;IAC1C,IAAI,CAAC;QACH,OAAO,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED,SAAgB,cAAc,CAAU,OAAsB;IAC5D,MAAM,0BAA0B,GAAG,IAAI;SACpC,KAAK,CAAC,IAAI,EAAE,yBAAyB,CAAC;SACtC,eAAe,CAAC,IAAI,CAAC,CAAC;IAEzB,IAAI,CAAC;QACH,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;YAAS,CAAC;QACT,0BAA0B,CAAC,WAAW,EAAE,CAAC;IAC3C,CAAC;AACH,CAAC;AAED,SAAgB,kCAAkC,CAChD,OAAsB,EACtB,OAAoC;IAEpC,MAAM,YAAY,GAAG,OAAO,EAAE,CAAC;IAC/B,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAE/C,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QACtC,OAAO;IACT,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAC/C,CAAC;AAED,SAAgB,iCAAiC,CAC/C,OAAsB,EACtB,eAAwB;IAExB,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,aAAa,GAAG,cAAc,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAElE,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IAEnC,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAC7C,CAAC"}
package/package.json ADDED
@@ -0,0 +1,79 @@
1
+ {
2
+ "author": "SiegeSailor",
3
+ "bin": {
4
+ "@siegesailor/cryptography": "./build/command.js"
5
+ },
6
+ "bugs": {
7
+ "url": "https://github.com/SiegeSailor/Cryptography/issues"
8
+ },
9
+ "dependencies": {
10
+ "chalk": "5.6.2",
11
+ "inquirer": "13.3.2",
12
+ "nanospinner": "1.2.2"
13
+ },
14
+ "description": "Provide a collection of cryptography functions and a CLI.",
15
+ "devDependencies": {
16
+ "@semantic-release/commit-analyzer": "13.0.1",
17
+ "@semantic-release/github": "11.0.6",
18
+ "@semantic-release/npm": "12.0.2",
19
+ "@semantic-release/release-notes-generator": "14.1.0",
20
+ "@types/jest": "30.0.0",
21
+ "@types/node": "25.5.0",
22
+ "conventional-changelog-conventionalcommits": "9.3.1",
23
+ "jest": "30.3.0",
24
+ "semantic-release": "24.2.9",
25
+ "ts-jest": "29.4.6",
26
+ "ts-node": "10.9.2",
27
+ "tsc-alias": "1.8.16",
28
+ "tsconfig-paths": "4.2.0",
29
+ "typescript": "5.9.3"
30
+ },
31
+ "engines": {
32
+ "node": ">= 25.2.1",
33
+ "npm": ">= 11.6.2"
34
+ },
35
+ "files": [
36
+ "./build/**/*"
37
+ ],
38
+ "homepage": "https://github.com/SiegeSailor/Cryptography#readme",
39
+ "keywords": [
40
+ "command-line-tool",
41
+ "cryptography",
42
+ "typescript",
43
+ "webassembly"
44
+ ],
45
+ "license": "ISC",
46
+ "main": "./build/source/entry-point.js",
47
+ "publishConfig": {
48
+ "access": "public",
49
+ "registry": "https://registry.npmjs.org/"
50
+ },
51
+ "types": "./build/source/entry-point.d.ts",
52
+ "exports": {
53
+ ".": {
54
+ "types": "./build/source/entry-point.d.ts",
55
+ "default": "./build/source/entry-point.js"
56
+ },
57
+ "./package.json": "./package.json"
58
+ },
59
+ "name": "@siegesailor/cryptography",
60
+ "repository": {
61
+ "type": "git",
62
+ "url": "git+https://github.com/SiegeSailor/Cryptography.git"
63
+ },
64
+ "scripts": {
65
+ "build": "npm run build:wasm && npm run build:typescript && npm run build:wasm-assets",
66
+ "build:clean": "rm -rf ./build ./build-cache",
67
+ "build:typescript": "tsc && npx --no-install tsc-alias",
68
+ "build:wasm": "node ./scripts/compile-wasm.js",
69
+ "build:wasm-assets": "node ./scripts/copy-wasm.js",
70
+ "build:wasm:check": "node ./scripts/verify-wasm.js",
71
+ "build:wasm:strict": "WASM_STRICT=1 node ./scripts/compile-wasm.js",
72
+ "release": "semantic-release",
73
+ "start:cli": "clear && ts-node -r tsconfig-paths/register ./source/command.ts",
74
+ "start:cli:compiled": "node ./build/command.js",
75
+ "test": "jest",
76
+ "test:coverage": "jest --coverage"
77
+ },
78
+ "version": "1.0.0"
79
+ }