@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.
- package/LICENCE +21 -0
- package/README.md +119 -0
- package/dist/cjs/algo/aes.class.d.cts +16 -0
- package/dist/cjs/algo/des.class.d.cts +19 -0
- package/dist/cjs/algo/index.d.cts +7 -0
- package/dist/cjs/algo/md5.class.d.cts +13 -0
- package/dist/cjs/algo/sha1.class.d.cts +9 -0
- package/dist/cjs/algo/sha256.class.d.cts +9 -0
- package/dist/cjs/algo/sha512.class.d.cts +9 -0
- package/dist/cjs/algo/triple-des.class.d.cts +16 -0
- package/dist/cjs/enc/base64.class.d.cts +31 -0
- package/dist/cjs/enc/encoder.model.d.cts +6 -0
- package/dist/cjs/enc/hex.class.d.cts +27 -0
- package/dist/cjs/enc/index.d.cts +6 -0
- package/dist/cjs/enc/latin1.class.d.cts +27 -0
- package/dist/cjs/enc/utf16.class.d.cts +28 -0
- package/dist/cjs/enc/utf8.class.d.cts +28 -0
- package/dist/cjs/format/formatter.interface.d.cts +5 -0
- package/dist/cjs/format/open-ssl.class.d.cts +27 -0
- package/dist/cjs/helpers/aes.helper.d.cts +2 -0
- package/dist/cjs/helpers/des.helper.d.cts +2 -0
- package/dist/cjs/helpers/index.d.cts +7 -0
- package/dist/cjs/helpers/md5.helper.d.cts +2 -0
- package/dist/cjs/helpers/sha1.helper.d.cts +2 -0
- package/dist/cjs/helpers/sha256.helper.d.cts +2 -0
- package/dist/cjs/helpers/sha512.helper.d.cts +2 -0
- package/dist/cjs/helpers/triple-des.helper.d.cts +2 -0
- package/dist/cjs/index.cjs +1 -0
- package/dist/cjs/index.d.cts +7 -0
- package/dist/cjs/kdf/evpkdf.class.d.cts +42 -0
- package/dist/cjs/kdf/index.d.cts +3 -0
- package/dist/cjs/kdf/kdf.model.d.cts +7 -0
- package/dist/cjs/kdf/open-ssl-kdf.class.d.cts +21 -0
- package/dist/cjs/kdf/pbkdf2.class.d.cts +18 -0
- package/dist/cjs/lib/block-cipher.class.d.cts +13 -0
- package/dist/cjs/lib/buffered-block-algorithm-config.interface.d.cts +13 -0
- package/dist/cjs/lib/buffered-block-algorithm.class.d.cts +54 -0
- package/dist/cjs/lib/cipher-helper.class.d.cts +10 -0
- package/dist/cjs/lib/cipher-params.class.d.cts +53 -0
- package/dist/cjs/lib/cipher.class.d.cts +112 -0
- package/dist/cjs/lib/hasher-constructor.type.d.cts +3 -0
- package/dist/cjs/lib/hasher-helper.type.d.cts +3 -0
- package/dist/cjs/lib/hasher.class.d.cts +58 -0
- package/dist/cjs/lib/hmac.class.d.cts +11 -0
- package/dist/cjs/lib/index.d.cts +8 -0
- package/dist/cjs/lib/password-based-cipher.class.d.cts +54 -0
- package/dist/cjs/lib/serializable-cipher.class.d.cts +73 -0
- package/dist/cjs/lib/word-array.class.d.cts +75 -0
- package/dist/cjs/lib/x64-word-array.class.d.cts +10 -0
- package/dist/cjs/lib/x64-word.class.d.cts +14 -0
- package/dist/cjs/mode/block-cipher-mode-algorithm.class.d.cts +20 -0
- package/dist/cjs/mode/block-cipher-mode.class.d.cts +28 -0
- package/dist/cjs/mode/cbc/cbc-decryptor.class.d.cts +17 -0
- package/dist/cjs/mode/cbc/cbc-encryptor.class.d.cts +17 -0
- package/dist/cjs/mode/cbc/cbc.class.d.cts +10 -0
- package/dist/cjs/mode/ctr/ctr-decryptor.class.d.cts +3 -0
- package/dist/cjs/mode/ctr/ctr-encryptor.class.d.cts +16 -0
- package/dist/cjs/mode/ctr/ctr.class.d.cts +10 -0
- package/dist/cjs/mode/ecb/ecb-decryptor.class.d.cts +14 -0
- package/dist/cjs/mode/ecb/ecb-encryptor.class.d.cts +14 -0
- package/dist/cjs/mode/ecb/ecb.class.d.cts +10 -0
- package/dist/cjs/mode/index.d.cts +11 -0
- package/dist/cjs/pad/index.d.cts +4 -0
- package/dist/cjs/pad/no-padding.class.d.cts +25 -0
- package/dist/cjs/pad/padding.model.d.cts +6 -0
- package/dist/cjs/pad/pkcs7.class.d.cts +25 -0
- package/dist/cjs/pad/zero-padding.class.d.cts +25 -0
- package/dist/esm/algo/aes.class.d.ts +16 -0
- package/dist/esm/algo/aes.class.js +138 -0
- package/dist/esm/algo/des.class.d.ts +19 -0
- package/dist/esm/algo/des.class.js +733 -0
- package/dist/esm/algo/index.d.ts +7 -0
- package/dist/esm/algo/index.js +7 -0
- package/dist/esm/algo/md5.class.d.ts +13 -0
- package/dist/esm/algo/md5.class.js +137 -0
- package/dist/esm/algo/sha1.class.d.ts +9 -0
- package/dist/esm/algo/sha1.class.js +66 -0
- package/dist/esm/algo/sha256.class.d.ts +9 -0
- package/dist/esm/algo/sha256.class.js +96 -0
- package/dist/esm/algo/sha512.class.d.ts +9 -0
- package/dist/esm/algo/sha512.class.js +221 -0
- package/dist/esm/algo/triple-des.class.d.ts +16 -0
- package/dist/esm/algo/triple-des.class.js +37 -0
- package/dist/esm/enc/base64.class.d.ts +31 -0
- package/dist/esm/enc/base64.class.js +80 -0
- package/dist/esm/enc/encoder.model.d.ts +6 -0
- package/dist/esm/enc/encoder.model.js +5 -0
- package/dist/esm/enc/hex.class.d.ts +27 -0
- package/dist/esm/enc/hex.class.js +45 -0
- package/dist/esm/enc/index.d.ts +6 -0
- package/dist/esm/enc/index.js +6 -0
- package/dist/esm/enc/latin1.class.d.ts +27 -0
- package/dist/esm/enc/latin1.class.js +44 -0
- package/dist/esm/enc/utf16.class.d.ts +28 -0
- package/dist/esm/enc/utf16.class.js +46 -0
- package/dist/esm/enc/utf8.class.d.ts +28 -0
- package/dist/esm/enc/utf8.class.js +39 -0
- package/dist/esm/format/formatter.interface.d.ts +5 -0
- package/dist/esm/format/formatter.interface.js +0 -0
- package/dist/esm/format/open-ssl.class.d.ts +27 -0
- package/dist/esm/format/open-ssl.class.js +57 -0
- package/dist/esm/helpers/aes.helper.d.ts +2 -0
- package/dist/esm/helpers/aes.helper.js +6 -0
- package/dist/esm/helpers/des.helper.d.ts +2 -0
- package/dist/esm/helpers/des.helper.js +6 -0
- package/dist/esm/helpers/index.d.ts +7 -0
- package/dist/esm/helpers/index.js +16 -0
- package/dist/esm/helpers/md5.helper.d.ts +2 -0
- package/dist/esm/helpers/md5.helper.js +6 -0
- package/dist/esm/helpers/sha1.helper.d.ts +2 -0
- package/dist/esm/helpers/sha1.helper.js +6 -0
- package/dist/esm/helpers/sha256.helper.d.ts +2 -0
- package/dist/esm/helpers/sha256.helper.js +6 -0
- package/dist/esm/helpers/sha512.helper.d.ts +2 -0
- package/dist/esm/helpers/sha512.helper.js +6 -0
- package/dist/esm/helpers/triple-des.helper.d.ts +2 -0
- package/dist/esm/helpers/triple-des.helper.js +6 -0
- package/dist/esm/index.d.ts +7 -0
- package/dist/esm/index.js +43 -0
- package/dist/esm/kdf/evpkdf.class.d.ts +42 -0
- package/dist/esm/kdf/evpkdf.class.js +59 -0
- package/dist/esm/kdf/index.d.ts +3 -0
- package/dist/esm/kdf/index.js +3 -0
- package/dist/esm/kdf/kdf.model.d.ts +7 -0
- package/dist/esm/kdf/kdf.model.js +5 -0
- package/dist/esm/kdf/open-ssl-kdf.class.d.ts +21 -0
- package/dist/esm/kdf/open-ssl-kdf.class.js +32 -0
- package/dist/esm/kdf/pbkdf2.class.d.ts +18 -0
- package/dist/esm/kdf/pbkdf2.class.js +43 -0
- package/dist/esm/lib/block-cipher.class.d.ts +13 -0
- package/dist/esm/lib/block-cipher.class.js +55 -0
- package/dist/esm/lib/buffered-block-algorithm-config.interface.d.ts +13 -0
- package/dist/esm/lib/buffered-block-algorithm-config.interface.js +0 -0
- package/dist/esm/lib/buffered-block-algorithm.class.d.ts +54 -0
- package/dist/esm/lib/buffered-block-algorithm.class.js +99 -0
- package/dist/esm/lib/cipher-helper.class.d.ts +10 -0
- package/dist/esm/lib/cipher-helper.class.js +24 -0
- package/dist/esm/lib/cipher-params.class.d.ts +53 -0
- package/dist/esm/lib/cipher-params.class.js +89 -0
- package/dist/esm/lib/cipher.class.d.ts +112 -0
- package/dist/esm/lib/cipher.class.js +112 -0
- package/dist/esm/lib/hasher-constructor.type.d.ts +3 -0
- package/dist/esm/lib/hasher-constructor.type.js +0 -0
- package/dist/esm/lib/hasher-helper.type.d.ts +3 -0
- package/dist/esm/lib/hasher-helper.type.js +0 -0
- package/dist/esm/lib/hasher.class.d.ts +58 -0
- package/dist/esm/lib/hasher.class.js +77 -0
- package/dist/esm/lib/hmac.class.d.ts +11 -0
- package/dist/esm/lib/hmac.class.js +39 -0
- package/dist/esm/lib/index.d.ts +8 -0
- package/dist/esm/lib/index.js +18 -0
- package/dist/esm/lib/password-based-cipher.class.d.ts +54 -0
- package/dist/esm/lib/password-based-cipher.class.js +92 -0
- package/dist/esm/lib/serializable-cipher.class.d.ts +73 -0
- package/dist/esm/lib/serializable-cipher.class.js +108 -0
- package/dist/esm/lib/word-array.class.d.ts +75 -0
- package/dist/esm/lib/word-array.class.js +123 -0
- package/dist/esm/lib/x64-word-array.class.d.ts +10 -0
- package/dist/esm/lib/x64-word-array.class.js +25 -0
- package/dist/esm/lib/x64-word.class.d.ts +14 -0
- package/dist/esm/lib/x64-word.class.js +47 -0
- package/dist/esm/mode/block-cipher-mode-algorithm.class.d.ts +20 -0
- package/dist/esm/mode/block-cipher-mode-algorithm.class.js +22 -0
- package/dist/esm/mode/block-cipher-mode.class.d.ts +28 -0
- package/dist/esm/mode/block-cipher-mode.class.js +36 -0
- package/dist/esm/mode/cbc/cbc-decryptor.class.d.ts +17 -0
- package/dist/esm/mode/cbc/cbc-decryptor.class.js +40 -0
- package/dist/esm/mode/cbc/cbc-encryptor.class.d.ts +17 -0
- package/dist/esm/mode/cbc/cbc-encryptor.class.js +39 -0
- package/dist/esm/mode/cbc/cbc.class.d.ts +10 -0
- package/dist/esm/mode/cbc/cbc.class.js +10 -0
- package/dist/esm/mode/ctr/ctr-decryptor.class.d.ts +3 -0
- package/dist/esm/mode/ctr/ctr-decryptor.class.js +6 -0
- package/dist/esm/mode/ctr/ctr-encryptor.class.d.ts +16 -0
- package/dist/esm/mode/ctr/ctr-encryptor.class.js +33 -0
- package/dist/esm/mode/ctr/ctr.class.d.ts +10 -0
- package/dist/esm/mode/ctr/ctr.class.js +10 -0
- package/dist/esm/mode/ecb/ecb-decryptor.class.d.ts +14 -0
- package/dist/esm/mode/ecb/ecb-decryptor.class.js +19 -0
- package/dist/esm/mode/ecb/ecb-encryptor.class.d.ts +14 -0
- package/dist/esm/mode/ecb/ecb-encryptor.class.js +19 -0
- package/dist/esm/mode/ecb/ecb.class.d.ts +10 -0
- package/dist/esm/mode/ecb/ecb.class.js +10 -0
- package/dist/esm/mode/index.d.ts +11 -0
- package/dist/esm/mode/index.js +24 -0
- package/dist/esm/pad/index.d.ts +4 -0
- package/dist/esm/pad/index.js +8 -0
- package/dist/esm/pad/no-padding.class.d.ts +25 -0
- package/dist/esm/pad/no-padding.class.js +28 -0
- package/dist/esm/pad/padding.model.d.ts +6 -0
- package/dist/esm/pad/padding.model.js +5 -0
- package/dist/esm/pad/pkcs7.class.d.ts +25 -0
- package/dist/esm/pad/pkcs7.class.js +40 -0
- package/dist/esm/pad/zero-padding.class.d.ts +25 -0
- package/dist/esm/pad/zero-padding.class.js +38 -0
- 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,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,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
|
+
}
|