@tonysamperi/krypto 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 (196) hide show
  1. package/LICENCE +21 -0
  2. package/README.md +119 -0
  3. package/dist/cjs/algo/aes.class.d.cts +16 -0
  4. package/dist/cjs/algo/des.class.d.cts +19 -0
  5. package/dist/cjs/algo/index.d.cts +7 -0
  6. package/dist/cjs/algo/md5.class.d.cts +13 -0
  7. package/dist/cjs/algo/sha1.class.d.cts +9 -0
  8. package/dist/cjs/algo/sha256.class.d.cts +9 -0
  9. package/dist/cjs/algo/sha512.class.d.cts +9 -0
  10. package/dist/cjs/algo/triple-des.class.d.cts +16 -0
  11. package/dist/cjs/enc/base64.class.d.cts +31 -0
  12. package/dist/cjs/enc/encoder.model.d.cts +6 -0
  13. package/dist/cjs/enc/hex.class.d.cts +27 -0
  14. package/dist/cjs/enc/index.d.cts +6 -0
  15. package/dist/cjs/enc/latin1.class.d.cts +27 -0
  16. package/dist/cjs/enc/utf16.class.d.cts +28 -0
  17. package/dist/cjs/enc/utf8.class.d.cts +28 -0
  18. package/dist/cjs/format/formatter.interface.d.cts +5 -0
  19. package/dist/cjs/format/open-ssl.class.d.cts +27 -0
  20. package/dist/cjs/helpers/aes.helper.d.cts +2 -0
  21. package/dist/cjs/helpers/des.helper.d.cts +2 -0
  22. package/dist/cjs/helpers/index.d.cts +7 -0
  23. package/dist/cjs/helpers/md5.helper.d.cts +2 -0
  24. package/dist/cjs/helpers/sha1.helper.d.cts +2 -0
  25. package/dist/cjs/helpers/sha256.helper.d.cts +2 -0
  26. package/dist/cjs/helpers/sha512.helper.d.cts +2 -0
  27. package/dist/cjs/helpers/triple-des.helper.d.cts +2 -0
  28. package/dist/cjs/index.cjs +1 -0
  29. package/dist/cjs/index.d.cts +7 -0
  30. package/dist/cjs/kdf/evpkdf.class.d.cts +42 -0
  31. package/dist/cjs/kdf/index.d.cts +3 -0
  32. package/dist/cjs/kdf/kdf.model.d.cts +7 -0
  33. package/dist/cjs/kdf/open-ssl-kdf.class.d.cts +21 -0
  34. package/dist/cjs/kdf/pbkdf2.class.d.cts +18 -0
  35. package/dist/cjs/lib/block-cipher.class.d.cts +13 -0
  36. package/dist/cjs/lib/buffered-block-algorithm-config.interface.d.cts +13 -0
  37. package/dist/cjs/lib/buffered-block-algorithm.class.d.cts +54 -0
  38. package/dist/cjs/lib/cipher-helper.class.d.cts +10 -0
  39. package/dist/cjs/lib/cipher-params.class.d.cts +53 -0
  40. package/dist/cjs/lib/cipher.class.d.cts +112 -0
  41. package/dist/cjs/lib/hasher-constructor.type.d.cts +3 -0
  42. package/dist/cjs/lib/hasher-helper.type.d.cts +3 -0
  43. package/dist/cjs/lib/hasher.class.d.cts +58 -0
  44. package/dist/cjs/lib/hmac.class.d.cts +11 -0
  45. package/dist/cjs/lib/index.d.cts +8 -0
  46. package/dist/cjs/lib/password-based-cipher.class.d.cts +54 -0
  47. package/dist/cjs/lib/serializable-cipher.class.d.cts +73 -0
  48. package/dist/cjs/lib/word-array.class.d.cts +75 -0
  49. package/dist/cjs/lib/x64-word-array.class.d.cts +10 -0
  50. package/dist/cjs/lib/x64-word.class.d.cts +14 -0
  51. package/dist/cjs/mode/block-cipher-mode-algorithm.class.d.cts +20 -0
  52. package/dist/cjs/mode/block-cipher-mode.class.d.cts +28 -0
  53. package/dist/cjs/mode/cbc/cbc-decryptor.class.d.cts +17 -0
  54. package/dist/cjs/mode/cbc/cbc-encryptor.class.d.cts +17 -0
  55. package/dist/cjs/mode/cbc/cbc.class.d.cts +10 -0
  56. package/dist/cjs/mode/ctr/ctr-decryptor.class.d.cts +3 -0
  57. package/dist/cjs/mode/ctr/ctr-encryptor.class.d.cts +16 -0
  58. package/dist/cjs/mode/ctr/ctr.class.d.cts +10 -0
  59. package/dist/cjs/mode/ecb/ecb-decryptor.class.d.cts +14 -0
  60. package/dist/cjs/mode/ecb/ecb-encryptor.class.d.cts +14 -0
  61. package/dist/cjs/mode/ecb/ecb.class.d.cts +10 -0
  62. package/dist/cjs/mode/index.d.cts +11 -0
  63. package/dist/cjs/pad/index.d.cts +4 -0
  64. package/dist/cjs/pad/no-padding.class.d.cts +25 -0
  65. package/dist/cjs/pad/padding.model.d.cts +6 -0
  66. package/dist/cjs/pad/pkcs7.class.d.cts +25 -0
  67. package/dist/cjs/pad/zero-padding.class.d.cts +25 -0
  68. package/dist/esm/algo/aes.class.d.ts +16 -0
  69. package/dist/esm/algo/aes.class.js +138 -0
  70. package/dist/esm/algo/des.class.d.ts +19 -0
  71. package/dist/esm/algo/des.class.js +733 -0
  72. package/dist/esm/algo/index.d.ts +7 -0
  73. package/dist/esm/algo/index.js +7 -0
  74. package/dist/esm/algo/md5.class.d.ts +13 -0
  75. package/dist/esm/algo/md5.class.js +137 -0
  76. package/dist/esm/algo/sha1.class.d.ts +9 -0
  77. package/dist/esm/algo/sha1.class.js +66 -0
  78. package/dist/esm/algo/sha256.class.d.ts +9 -0
  79. package/dist/esm/algo/sha256.class.js +96 -0
  80. package/dist/esm/algo/sha512.class.d.ts +9 -0
  81. package/dist/esm/algo/sha512.class.js +221 -0
  82. package/dist/esm/algo/triple-des.class.d.ts +16 -0
  83. package/dist/esm/algo/triple-des.class.js +37 -0
  84. package/dist/esm/enc/base64.class.d.ts +31 -0
  85. package/dist/esm/enc/base64.class.js +80 -0
  86. package/dist/esm/enc/encoder.model.d.ts +6 -0
  87. package/dist/esm/enc/encoder.model.js +5 -0
  88. package/dist/esm/enc/hex.class.d.ts +27 -0
  89. package/dist/esm/enc/hex.class.js +45 -0
  90. package/dist/esm/enc/index.d.ts +6 -0
  91. package/dist/esm/enc/index.js +6 -0
  92. package/dist/esm/enc/latin1.class.d.ts +27 -0
  93. package/dist/esm/enc/latin1.class.js +44 -0
  94. package/dist/esm/enc/utf16.class.d.ts +28 -0
  95. package/dist/esm/enc/utf16.class.js +46 -0
  96. package/dist/esm/enc/utf8.class.d.ts +28 -0
  97. package/dist/esm/enc/utf8.class.js +39 -0
  98. package/dist/esm/format/formatter.interface.d.ts +5 -0
  99. package/dist/esm/format/formatter.interface.js +0 -0
  100. package/dist/esm/format/open-ssl.class.d.ts +27 -0
  101. package/dist/esm/format/open-ssl.class.js +57 -0
  102. package/dist/esm/helpers/aes.helper.d.ts +2 -0
  103. package/dist/esm/helpers/aes.helper.js +6 -0
  104. package/dist/esm/helpers/des.helper.d.ts +2 -0
  105. package/dist/esm/helpers/des.helper.js +6 -0
  106. package/dist/esm/helpers/index.d.ts +7 -0
  107. package/dist/esm/helpers/index.js +16 -0
  108. package/dist/esm/helpers/md5.helper.d.ts +2 -0
  109. package/dist/esm/helpers/md5.helper.js +6 -0
  110. package/dist/esm/helpers/sha1.helper.d.ts +2 -0
  111. package/dist/esm/helpers/sha1.helper.js +6 -0
  112. package/dist/esm/helpers/sha256.helper.d.ts +2 -0
  113. package/dist/esm/helpers/sha256.helper.js +6 -0
  114. package/dist/esm/helpers/sha512.helper.d.ts +2 -0
  115. package/dist/esm/helpers/sha512.helper.js +6 -0
  116. package/dist/esm/helpers/triple-des.helper.d.ts +2 -0
  117. package/dist/esm/helpers/triple-des.helper.js +6 -0
  118. package/dist/esm/index.d.ts +7 -0
  119. package/dist/esm/index.js +43 -0
  120. package/dist/esm/kdf/evpkdf.class.d.ts +42 -0
  121. package/dist/esm/kdf/evpkdf.class.js +59 -0
  122. package/dist/esm/kdf/index.d.ts +3 -0
  123. package/dist/esm/kdf/index.js +3 -0
  124. package/dist/esm/kdf/kdf.model.d.ts +7 -0
  125. package/dist/esm/kdf/kdf.model.js +5 -0
  126. package/dist/esm/kdf/open-ssl-kdf.class.d.ts +21 -0
  127. package/dist/esm/kdf/open-ssl-kdf.class.js +32 -0
  128. package/dist/esm/kdf/pbkdf2.class.d.ts +18 -0
  129. package/dist/esm/kdf/pbkdf2.class.js +43 -0
  130. package/dist/esm/lib/block-cipher.class.d.ts +13 -0
  131. package/dist/esm/lib/block-cipher.class.js +55 -0
  132. package/dist/esm/lib/buffered-block-algorithm-config.interface.d.ts +13 -0
  133. package/dist/esm/lib/buffered-block-algorithm-config.interface.js +0 -0
  134. package/dist/esm/lib/buffered-block-algorithm.class.d.ts +54 -0
  135. package/dist/esm/lib/buffered-block-algorithm.class.js +99 -0
  136. package/dist/esm/lib/cipher-helper.class.d.ts +10 -0
  137. package/dist/esm/lib/cipher-helper.class.js +24 -0
  138. package/dist/esm/lib/cipher-params.class.d.ts +53 -0
  139. package/dist/esm/lib/cipher-params.class.js +89 -0
  140. package/dist/esm/lib/cipher.class.d.ts +112 -0
  141. package/dist/esm/lib/cipher.class.js +112 -0
  142. package/dist/esm/lib/hasher-constructor.type.d.ts +3 -0
  143. package/dist/esm/lib/hasher-constructor.type.js +0 -0
  144. package/dist/esm/lib/hasher-helper.type.d.ts +3 -0
  145. package/dist/esm/lib/hasher-helper.type.js +0 -0
  146. package/dist/esm/lib/hasher.class.d.ts +58 -0
  147. package/dist/esm/lib/hasher.class.js +77 -0
  148. package/dist/esm/lib/hmac.class.d.ts +11 -0
  149. package/dist/esm/lib/hmac.class.js +39 -0
  150. package/dist/esm/lib/index.d.ts +8 -0
  151. package/dist/esm/lib/index.js +18 -0
  152. package/dist/esm/lib/password-based-cipher.class.d.ts +54 -0
  153. package/dist/esm/lib/password-based-cipher.class.js +92 -0
  154. package/dist/esm/lib/serializable-cipher.class.d.ts +73 -0
  155. package/dist/esm/lib/serializable-cipher.class.js +108 -0
  156. package/dist/esm/lib/word-array.class.d.ts +75 -0
  157. package/dist/esm/lib/word-array.class.js +123 -0
  158. package/dist/esm/lib/x64-word-array.class.d.ts +10 -0
  159. package/dist/esm/lib/x64-word-array.class.js +25 -0
  160. package/dist/esm/lib/x64-word.class.d.ts +14 -0
  161. package/dist/esm/lib/x64-word.class.js +47 -0
  162. package/dist/esm/mode/block-cipher-mode-algorithm.class.d.ts +20 -0
  163. package/dist/esm/mode/block-cipher-mode-algorithm.class.js +22 -0
  164. package/dist/esm/mode/block-cipher-mode.class.d.ts +28 -0
  165. package/dist/esm/mode/block-cipher-mode.class.js +36 -0
  166. package/dist/esm/mode/cbc/cbc-decryptor.class.d.ts +17 -0
  167. package/dist/esm/mode/cbc/cbc-decryptor.class.js +40 -0
  168. package/dist/esm/mode/cbc/cbc-encryptor.class.d.ts +17 -0
  169. package/dist/esm/mode/cbc/cbc-encryptor.class.js +39 -0
  170. package/dist/esm/mode/cbc/cbc.class.d.ts +10 -0
  171. package/dist/esm/mode/cbc/cbc.class.js +10 -0
  172. package/dist/esm/mode/ctr/ctr-decryptor.class.d.ts +3 -0
  173. package/dist/esm/mode/ctr/ctr-decryptor.class.js +6 -0
  174. package/dist/esm/mode/ctr/ctr-encryptor.class.d.ts +16 -0
  175. package/dist/esm/mode/ctr/ctr-encryptor.class.js +33 -0
  176. package/dist/esm/mode/ctr/ctr.class.d.ts +10 -0
  177. package/dist/esm/mode/ctr/ctr.class.js +10 -0
  178. package/dist/esm/mode/ecb/ecb-decryptor.class.d.ts +14 -0
  179. package/dist/esm/mode/ecb/ecb-decryptor.class.js +19 -0
  180. package/dist/esm/mode/ecb/ecb-encryptor.class.d.ts +14 -0
  181. package/dist/esm/mode/ecb/ecb-encryptor.class.js +19 -0
  182. package/dist/esm/mode/ecb/ecb.class.d.ts +10 -0
  183. package/dist/esm/mode/ecb/ecb.class.js +10 -0
  184. package/dist/esm/mode/index.d.ts +11 -0
  185. package/dist/esm/mode/index.js +24 -0
  186. package/dist/esm/pad/index.d.ts +4 -0
  187. package/dist/esm/pad/index.js +8 -0
  188. package/dist/esm/pad/no-padding.class.d.ts +25 -0
  189. package/dist/esm/pad/no-padding.class.js +28 -0
  190. package/dist/esm/pad/padding.model.d.ts +6 -0
  191. package/dist/esm/pad/padding.model.js +5 -0
  192. package/dist/esm/pad/pkcs7.class.d.ts +25 -0
  193. package/dist/esm/pad/pkcs7.class.js +40 -0
  194. package/dist/esm/pad/zero-padding.class.d.ts +25 -0
  195. package/dist/esm/pad/zero-padding.class.js +38 -0
  196. package/package.json +82 -0
@@ -0,0 +1,33 @@
1
+ import { BlockCipherModeAlgorithm } from "../block-cipher-mode-algorithm.class.js";
2
+ class CTREncryptor extends BlockCipherModeAlgorithm {
3
+ constructor() {
4
+ super(...arguments);
5
+ this._counter = [];
6
+ }
7
+ /**
8
+ * Processes the data block at offset.
9
+ *
10
+ * @param words The data words to operate on.
11
+ * @param offset The offset where the block starts.
12
+ *
13
+ * @example
14
+ *
15
+ * mode.processBlock(data.words, offset);
16
+ */
17
+ processBlock(words, offset) {
18
+ const blockSize = this._cipher.cfg.blockSize;
19
+ if (this._iv) {
20
+ this._counter = this._iv.slice(0);
21
+ this._iv = void 0;
22
+ }
23
+ const keystream = this._counter.slice(0);
24
+ this._cipher.encryptBlock(keystream, 0);
25
+ this._counter[blockSize - 1] = this._counter[blockSize - 1] + 1 | 0;
26
+ for (let i = 0; i < blockSize; i++) {
27
+ words[offset + i] ^= keystream[i];
28
+ }
29
+ }
30
+ }
31
+ export {
32
+ CTREncryptor
33
+ };
@@ -0,0 +1,10 @@
1
+ import { BlockCipherMode } from "../block-cipher-mode.class.js";
2
+ import { CTREncryptor } from "./ctr-encryptor.class.js";
3
+ import { CTRDecryptor } from "./ctr-decryptor.class.js";
4
+ /**
5
+ * Counter mode.
6
+ */
7
+ export declare abstract class CTR extends BlockCipherMode {
8
+ static Decryptor: typeof CTRDecryptor;
9
+ static Encryptor: typeof CTREncryptor;
10
+ }
@@ -0,0 +1,10 @@
1
+ import { BlockCipherMode } from "../block-cipher-mode.class.js";
2
+ import { CTREncryptor } from "./ctr-encryptor.class.js";
3
+ import { CTRDecryptor } from "./ctr-decryptor.class.js";
4
+ class CTR extends BlockCipherMode {
5
+ }
6
+ CTR.Decryptor = CTRDecryptor;
7
+ CTR.Encryptor = CTREncryptor;
8
+ export {
9
+ CTR
10
+ };
@@ -0,0 +1,14 @@
1
+ import { BlockCipherModeAlgorithm } from "../block-cipher-mode-algorithm.class.js";
2
+ export declare class ECBDecryptor extends BlockCipherModeAlgorithm {
3
+ /**
4
+ * Processes the data block at offset.
5
+ *
6
+ * @param words The data words to operate on.
7
+ * @param offset The offset where the block starts.
8
+ *
9
+ * @example
10
+ *
11
+ * mode.processBlock(data.words, offset);
12
+ */
13
+ processBlock(words: number[], offset: number): void;
14
+ }
@@ -0,0 +1,19 @@
1
+ import { BlockCipherModeAlgorithm } from "../block-cipher-mode-algorithm.class.js";
2
+ class ECBDecryptor extends BlockCipherModeAlgorithm {
3
+ /**
4
+ * Processes the data block at offset.
5
+ *
6
+ * @param words The data words to operate on.
7
+ * @param offset The offset where the block starts.
8
+ *
9
+ * @example
10
+ *
11
+ * mode.processBlock(data.words, offset);
12
+ */
13
+ processBlock(words, offset) {
14
+ this._cipher.decryptBlock(words, offset);
15
+ }
16
+ }
17
+ export {
18
+ ECBDecryptor
19
+ };
@@ -0,0 +1,14 @@
1
+ import { BlockCipherModeAlgorithm } from "../block-cipher-mode-algorithm.class.js";
2
+ export declare class ECBEncryptor extends BlockCipherModeAlgorithm {
3
+ /**
4
+ * Processes the data block at offset.
5
+ *
6
+ * @param words The data words to operate on.
7
+ * @param offset The offset where the block starts.
8
+ *
9
+ * @example
10
+ *
11
+ * mode.processBlock(data.words, offset);
12
+ */
13
+ processBlock(words: number[], offset: number): void;
14
+ }
@@ -0,0 +1,19 @@
1
+ import { BlockCipherModeAlgorithm } from "../block-cipher-mode-algorithm.class.js";
2
+ class ECBEncryptor extends BlockCipherModeAlgorithm {
3
+ /**
4
+ * Processes the data block at offset.
5
+ *
6
+ * @param words The data words to operate on.
7
+ * @param offset The offset where the block starts.
8
+ *
9
+ * @example
10
+ *
11
+ * mode.processBlock(data.words, offset);
12
+ */
13
+ processBlock(words, offset) {
14
+ this._cipher.encryptBlock(words, offset);
15
+ }
16
+ }
17
+ export {
18
+ ECBEncryptor
19
+ };
@@ -0,0 +1,10 @@
1
+ import { BlockCipherMode } from "../block-cipher-mode.class.js";
2
+ import { ECBEncryptor } from "./ecb-encryptor.class.js";
3
+ import { ECBDecryptor } from "./ecb-decryptor.class.js";
4
+ /**
5
+ * Cipher Block Chaining mode.
6
+ */
7
+ export declare abstract class ECB extends BlockCipherMode {
8
+ static Decryptor: typeof ECBDecryptor;
9
+ static Encryptor: typeof ECBEncryptor;
10
+ }
@@ -0,0 +1,10 @@
1
+ import { BlockCipherMode } from "../block-cipher-mode.class.js";
2
+ import { ECBEncryptor } from "./ecb-encryptor.class.js";
3
+ import { ECBDecryptor } from "./ecb-decryptor.class.js";
4
+ class ECB extends BlockCipherMode {
5
+ }
6
+ ECB.Decryptor = ECBDecryptor;
7
+ ECB.Encryptor = ECBEncryptor;
8
+ export {
9
+ ECB
10
+ };
@@ -0,0 +1,11 @@
1
+ export { BlockCipherMode } from "./block-cipher-mode.class.js";
2
+ export { BlockCipherModeAlgorithm } from "./block-cipher-mode-algorithm.class.js";
3
+ export { CBC } from "./cbc/cbc.class.js";
4
+ export { CBCDecryptor } from "./cbc/cbc-decryptor.class.js";
5
+ export { CBCEncryptor } from "./cbc/cbc-encryptor.class.js";
6
+ export { CTR } from "./ctr/ctr.class.js";
7
+ export { CTRDecryptor } from "./ctr/ctr-decryptor.class.js";
8
+ export { CTREncryptor } from "./ctr/ctr-encryptor.class.js";
9
+ export { ECB } from "./ecb/ecb.class.js";
10
+ export { ECBDecryptor } from "./ecb/ecb-decryptor.class.js";
11
+ export { ECBEncryptor } from "./ecb/ecb-encryptor.class.js";
@@ -0,0 +1,24 @@
1
+ import { BlockCipherMode } from "./block-cipher-mode.class.js";
2
+ import { BlockCipherModeAlgorithm } from "./block-cipher-mode-algorithm.class.js";
3
+ import { CBC } from "./cbc/cbc.class.js";
4
+ import { CBCDecryptor } from "./cbc/cbc-decryptor.class.js";
5
+ import { CBCEncryptor } from "./cbc/cbc-encryptor.class.js";
6
+ import { CTR } from "./ctr/ctr.class.js";
7
+ import { CTRDecryptor } from "./ctr/ctr-decryptor.class.js";
8
+ import { CTREncryptor } from "./ctr/ctr-encryptor.class.js";
9
+ import { ECB } from "./ecb/ecb.class.js";
10
+ import { ECBDecryptor } from "./ecb/ecb-decryptor.class.js";
11
+ import { ECBEncryptor } from "./ecb/ecb-encryptor.class.js";
12
+ export {
13
+ BlockCipherMode,
14
+ BlockCipherModeAlgorithm,
15
+ CBC,
16
+ CBCDecryptor,
17
+ CBCEncryptor,
18
+ CTR,
19
+ CTRDecryptor,
20
+ CTREncryptor,
21
+ ECB,
22
+ ECBDecryptor,
23
+ ECBEncryptor
24
+ };
@@ -0,0 +1,4 @@
1
+ export { NoPadding } from "./no-padding.class.js";
2
+ export { Padding } from "./padding.model.js";
3
+ export { PKCS7 } from "./pkcs7.class.js";
4
+ export { ZeroPadding } from "./zero-padding.class.js";
@@ -0,0 +1,8 @@
1
+ import { NoPadding } from "./no-padding.class.js";
2
+ import { PKCS7 } from "./pkcs7.class.js";
3
+ import { ZeroPadding } from "./zero-padding.class.js";
4
+ export {
5
+ NoPadding,
6
+ PKCS7,
7
+ ZeroPadding
8
+ };
@@ -0,0 +1,25 @@
1
+ import { WordArray } from "../lib/word-array.class.js";
2
+ import { AbstractPadding } from "./padding.model.js";
3
+ export declare class NoPadding implements AbstractPadding {
4
+ /**
5
+ * Doesn't pad the data provided.
6
+ *
7
+ * @param _data_ The data to pad.
8
+ * @param _blockSize_ The multiple that the data should be padded to.
9
+ *
10
+ * @example
11
+ *
12
+ * NoPadding.pad(wordArray, 4);
13
+ */
14
+ static pad(_data_: WordArray, _blockSize_: number): void;
15
+ /**
16
+ * Doesn't un-pad the data provided.
17
+ *
18
+ * @param _data_ The data to un-pad.
19
+ *
20
+ * @example
21
+ *
22
+ * NoPadding.unpad(wordArray);
23
+ */
24
+ static unpad(_data_: WordArray): void;
25
+ }
@@ -0,0 +1,28 @@
1
+ class NoPadding {
2
+ /**
3
+ * Doesn't pad the data provided.
4
+ *
5
+ * @param _data_ The data to pad.
6
+ * @param _blockSize_ The multiple that the data should be padded to.
7
+ *
8
+ * @example
9
+ *
10
+ * NoPadding.pad(wordArray, 4);
11
+ */
12
+ static pad(_data_, _blockSize_) {
13
+ }
14
+ /**
15
+ * Doesn't un-pad the data provided.
16
+ *
17
+ * @param _data_ The data to un-pad.
18
+ *
19
+ * @example
20
+ *
21
+ * NoPadding.unpad(wordArray);
22
+ */
23
+ static unpad(_data_) {
24
+ }
25
+ }
26
+ export {
27
+ NoPadding
28
+ };
@@ -0,0 +1,6 @@
1
+ import { WordArray } from "../lib/word-array.class.js";
2
+ export declare abstract class AbstractPadding {
3
+ static pad: (data: WordArray, blockSize: number) => void;
4
+ static unpad: (data: WordArray) => void;
5
+ }
6
+ export type Padding = typeof AbstractPadding;
@@ -0,0 +1,5 @@
1
+ class AbstractPadding {
2
+ }
3
+ export {
4
+ AbstractPadding
5
+ };
@@ -0,0 +1,25 @@
1
+ import { WordArray } from "../lib/word-array.class.js";
2
+ import { AbstractPadding } from "./padding.model.js";
3
+ export declare class PKCS7 implements AbstractPadding {
4
+ /**
5
+ * Pads data using the algorithm defined in PKCS #5/7.
6
+ *
7
+ * @param data The data to pad.
8
+ * @param blockSize The multiple that the data should be padded to.
9
+ *
10
+ * @example
11
+ *
12
+ * PKCS7.pad(wordArray, 4);
13
+ */
14
+ static pad(data: WordArray, blockSize: number): void;
15
+ /**
16
+ * Unpads data that had been padded using the algorithm defined in PKCS #5/7.
17
+ *
18
+ * @param data The data to unpad.
19
+ *
20
+ * @example
21
+ *
22
+ * PKCS7.unpad(wordArray);
23
+ */
24
+ static unpad(data: WordArray): void;
25
+ }
@@ -0,0 +1,40 @@
1
+ import { WordArray } from "../lib/word-array.class.js";
2
+ class PKCS7 {
3
+ /**
4
+ * Pads data using the algorithm defined in PKCS #5/7.
5
+ *
6
+ * @param data The data to pad.
7
+ * @param blockSize The multiple that the data should be padded to.
8
+ *
9
+ * @example
10
+ *
11
+ * PKCS7.pad(wordArray, 4);
12
+ */
13
+ static pad(data, blockSize) {
14
+ const blockSizeBytes = blockSize * 4;
15
+ const nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;
16
+ const paddingWord = nPaddingBytes << 24 | nPaddingBytes << 16 | nPaddingBytes << 8 | nPaddingBytes;
17
+ const paddingWords = [];
18
+ for (let i = 0; i < nPaddingBytes; i += 4) {
19
+ paddingWords.push(paddingWord);
20
+ }
21
+ const padding = new WordArray(paddingWords, nPaddingBytes);
22
+ data.concat(padding);
23
+ }
24
+ /**
25
+ * Unpads data that had been padded using the algorithm defined in PKCS #5/7.
26
+ *
27
+ * @param data The data to unpad.
28
+ *
29
+ * @example
30
+ *
31
+ * PKCS7.unpad(wordArray);
32
+ */
33
+ static unpad(data) {
34
+ const nPaddingBytes = data.words[data.sigBytes - 1 >>> 2] & 255;
35
+ data.sigBytes -= nPaddingBytes;
36
+ }
37
+ }
38
+ export {
39
+ PKCS7
40
+ };
@@ -0,0 +1,25 @@
1
+ import { WordArray } from "../lib/word-array.class.js";
2
+ import { AbstractPadding } from "./padding.model.js";
3
+ export declare class ZeroPadding implements AbstractPadding {
4
+ /**
5
+ * Pads data using Zero padding algo
6
+ *
7
+ * @param data The data to pad.
8
+ * @param blockSize The multiple that the data should be padded to.
9
+ *
10
+ * @example
11
+ *
12
+ * ZeroPadding.pad(wordArray, 4);
13
+ */
14
+ static pad(data: WordArray, blockSize: number): void;
15
+ /**
16
+ * Unpads data using Zero padding algo
17
+ *
18
+ * @param data The data to un-pad.
19
+ *
20
+ * @example
21
+ *
22
+ * ZeroPadding.unpad(wordArray);
23
+ */
24
+ static unpad(data: WordArray): void;
25
+ }
@@ -0,0 +1,38 @@
1
+ class ZeroPadding {
2
+ /**
3
+ * Pads data using Zero padding algo
4
+ *
5
+ * @param data The data to pad.
6
+ * @param blockSize The multiple that the data should be padded to.
7
+ *
8
+ * @example
9
+ *
10
+ * ZeroPadding.pad(wordArray, 4);
11
+ */
12
+ static pad(data, blockSize) {
13
+ const blockSizeBytes = blockSize * 4;
14
+ data.clamp();
15
+ data.sigBytes += blockSizeBytes - (data.sigBytes % blockSizeBytes || blockSizeBytes);
16
+ }
17
+ /**
18
+ * Unpads data using Zero padding algo
19
+ *
20
+ * @param data The data to un-pad.
21
+ *
22
+ * @example
23
+ *
24
+ * ZeroPadding.unpad(wordArray);
25
+ */
26
+ static unpad(data) {
27
+ const dataWords = data.words;
28
+ for (let i = data.sigBytes - 1; i >= 0; i--) {
29
+ if (dataWords[i >>> 2] >>> 24 - i % 4 * 8 & 255) {
30
+ data.sigBytes = i + 1;
31
+ break;
32
+ }
33
+ }
34
+ }
35
+ }
36
+ export {
37
+ ZeroPadding
38
+ };
package/package.json ADDED
@@ -0,0 +1,82 @@
1
+ {
2
+ "name": "@tonysamperi/krypto",
3
+ "version": "1.0.0",
4
+ "author": "Tony Samperi",
5
+ "description": "Modern tree-shakeable TypeScript version of crypto-js",
6
+ "type": "module",
7
+ "types": "./dist/esm/index.d.ts",
8
+ "main": "./dist/cjs/index.cjs",
9
+ "module": "./dist/esm/index.js",
10
+ "unpkg": "./dist/cjs/index.cjs",
11
+ "exports": {
12
+ ".": {
13
+ "import": {
14
+ "types": "./dist/esm/index.d.ts",
15
+ "default": "./dist/esm/index.js"
16
+ },
17
+ "require": {
18
+ "types": "./dist/cjs/index.d.cts",
19
+ "default": "./dist/cjs/index.cjs"
20
+ },
21
+ "browser": {
22
+ "types": "./dist/esm/index.d.ts",
23
+ "default": "./dist/esm/index.js"
24
+ }
25
+ },
26
+ "./package.json": "./package.json"
27
+ },
28
+ "sideEffects": false,
29
+ "files": [
30
+ "dist/**",
31
+ "!dist/raw-esm",
32
+ "!dist/raw-types",
33
+ "README.md"
34
+ ],
35
+ "engines": {
36
+ "node": ">=18"
37
+ },
38
+ "scripts": {
39
+ "build": "npm run clean && NODE_ENV=production node build.config.js",
40
+ "clean": "rimraf dist",
41
+ "lint": "eslint && tsc --noEmit",
42
+ "lint:fix": "eslint --fix",
43
+ "publish:beta": "npm publish --tag beta",
44
+ "publish:next": "npm publish --tag next",
45
+ "test": "jest"
46
+ },
47
+ "homepage": "https://tonysamperi.github.io/crypto/",
48
+ "license": "MIT",
49
+ "keywords": [
50
+ "crypto-js",
51
+ "typescript",
52
+ "sync-crypto",
53
+ "crypto-ts",
54
+ "crypto"
55
+ ],
56
+ "repository": {
57
+ "type": "git",
58
+ "url": "git+https://github.com/tonysamperi/crypto.git"
59
+ },
60
+ "devDependencies": {
61
+ "@types/jest": "^29.5.4",
62
+ "@typescript-eslint/eslint-plugin": "^6.4.1",
63
+ "@typescript-eslint/parser": "^6.4.1",
64
+ "esbuild": "^0.25.1",
65
+ "eslint": "^9.22.0",
66
+ "eslint-plugin-import": "^2.31.0",
67
+ "fast-glob": "^3.3.3",
68
+ "jest": "^29.6.4",
69
+ "replace-in-file": "^8.3.0",
70
+ "rimraf": "^5.0.7",
71
+ "ts-jest": "^29.1.1",
72
+ "ts-node": "^10.9.2",
73
+ "tslib": "^2.0.0",
74
+ "typescript": "~5.8.2",
75
+ "typescript-eslint": "^8.26.1"
76
+ },
77
+ "optionalDependencies": {
78
+ "@types/crypto-js": "^4",
79
+ "crypto-js": "^4.2.0"
80
+ },
81
+ "packageManager": "yarn@4.7.0"
82
+ }