@sparted/shared-library 1.6.0 → 1.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/crypto/aes256.d.ts +15 -0
- package/crypto/aes256.js +47 -0
- package/crypto/aes256.js.map +1 -0
- package/crypto/index.d.ts +1 -0
- package/crypto/index.js +11 -0
- package/crypto/index.js.map +1 -0
- package/index.d.ts +1 -0
- package/index.js +3 -0
- package/index.js.map +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Encrypt data using AES-256-CBC
|
|
3
|
+
* @param data
|
|
4
|
+
* @param key Must be a 256 bits hex string
|
|
5
|
+
* @param iv Must be a 128 bits hex string
|
|
6
|
+
*/
|
|
7
|
+
declare function encrypt(data: string, key: string, iv: string): string;
|
|
8
|
+
/**
|
|
9
|
+
* Decrypt data using AES-256-CBC
|
|
10
|
+
* @param data
|
|
11
|
+
* @param key Must be a 256 bits hex string
|
|
12
|
+
* @param iv Must be a 128 bits hex string
|
|
13
|
+
*/
|
|
14
|
+
declare function decrypt(data: string, key: string, iv: string): string;
|
|
15
|
+
export { encrypt, decrypt };
|
package/crypto/aes256.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var aes = require('crypto-js/aes');
|
|
6
|
+
var cryptoJs = require('crypto-js');
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Encrypt data using AES-256-CBC
|
|
10
|
+
* @param data
|
|
11
|
+
* @param key Must be a 256 bits hex string
|
|
12
|
+
* @param iv Must be a 128 bits hex string
|
|
13
|
+
*/
|
|
14
|
+
function encrypt(data, key, iv) {
|
|
15
|
+
if (key.length !== 64)
|
|
16
|
+
throw new Error('Key must be 256 bits long');
|
|
17
|
+
if (iv.length !== 32)
|
|
18
|
+
throw new Error('IV must be 128 bits long');
|
|
19
|
+
const cipher = aes.encrypt(data, cryptoJs.enc.Hex.parse(key), {
|
|
20
|
+
mode: cryptoJs.mode.CBC,
|
|
21
|
+
padding: cryptoJs.pad.Pkcs7,
|
|
22
|
+
iv: cryptoJs.enc.Hex.parse(iv),
|
|
23
|
+
});
|
|
24
|
+
return cryptoJs.enc.Base64.stringify(cipher.ciphertext);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Decrypt data using AES-256-CBC
|
|
28
|
+
* @param data
|
|
29
|
+
* @param key Must be a 256 bits hex string
|
|
30
|
+
* @param iv Must be a 128 bits hex string
|
|
31
|
+
*/
|
|
32
|
+
function decrypt(data, key, iv) {
|
|
33
|
+
if (key.length !== 64)
|
|
34
|
+
throw new Error('Key must be 256 bits long');
|
|
35
|
+
if (iv.length !== 32)
|
|
36
|
+
throw new Error('IV must be 128 bits long');
|
|
37
|
+
const cipher = aes.decrypt(data, cryptoJs.enc.Hex.parse(key), {
|
|
38
|
+
mode: cryptoJs.mode.CBC,
|
|
39
|
+
padding: cryptoJs.pad.Pkcs7,
|
|
40
|
+
iv: cryptoJs.enc.Hex.parse(iv),
|
|
41
|
+
});
|
|
42
|
+
return cryptoJs.enc.Utf8.stringify(cipher);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
exports.decrypt = decrypt;
|
|
46
|
+
exports.encrypt = encrypt;
|
|
47
|
+
//# sourceMappingURL=aes256.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aes256.js","sources":["../../src/crypto/aes256.ts"],"sourcesContent":["import { encrypt as cryptoEncrypt, decrypt as cryptoDecript } from 'crypto-js/aes';\nimport { enc, mode, pad } from 'crypto-js';\n\n/**\n * Encrypt data using AES-256-CBC\n * @param data\n * @param key Must be a 256 bits hex string\n * @param iv Must be a 128 bits hex string\n */\nfunction encrypt(data: string, key: string, iv: string): string {\n if (key.length !== 64) throw new Error('Key must be 256 bits long');\n if (iv.length !== 32) throw new Error('IV must be 128 bits long');\n const cipher = cryptoEncrypt(data, enc.Hex.parse(key), {\n mode: mode.CBC,\n padding: pad.Pkcs7,\n iv: enc.Hex.parse(iv),\n });\n return enc.Base64.stringify(cipher.ciphertext);\n}\n\n/**\n * Decrypt data using AES-256-CBC\n * @param data\n * @param key Must be a 256 bits hex string\n * @param iv Must be a 128 bits hex string\n */\nfunction decrypt(data: string, key: string, iv: string): string {\n if (key.length !== 64) throw new Error('Key must be 256 bits long');\n if (iv.length !== 32) throw new Error('IV must be 128 bits long');\n const cipher = cryptoDecript(data, enc.Hex.parse(key), {\n mode: mode.CBC,\n padding: pad.Pkcs7,\n iv: enc.Hex.parse(iv),\n });\n return enc.Utf8.stringify(cipher);\n}\n\nexport { encrypt, decrypt };\n"],"names":["cryptoEncrypt","enc","mode","pad","cryptoDecript"],"mappings":";;;;;;;AAGA;;;;;AAKG;AACH,SAAS,OAAO,CAAC,IAAY,EAAE,GAAW,EAAE,EAAU,EAAA;AACpD,IAAA,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AACpE,IAAA,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;AAClE,IAAA,MAAM,MAAM,GAAGA,WAAa,CAAC,IAAI,EAAEC,YAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QACrD,IAAI,EAAEC,aAAI,CAAC,GAAG;QACd,OAAO,EAAEC,YAAG,CAAC,KAAK;QAClB,EAAE,EAAEF,YAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;AACtB,KAAA,CAAC,CAAC;IACH,OAAOA,YAAG,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACjD,CAAC;AAED;;;;;AAKG;AACH,SAAS,OAAO,CAAC,IAAY,EAAE,GAAW,EAAE,EAAU,EAAA;AACpD,IAAA,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AACpE,IAAA,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;AAClE,IAAA,MAAM,MAAM,GAAGG,WAAa,CAAC,IAAI,EAAEH,YAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QACrD,IAAI,EAAEC,aAAI,CAAC,GAAG;QACd,OAAO,EAAEC,YAAG,CAAC,KAAK;QAClB,EAAE,EAAEF,YAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;AACtB,KAAA,CAAC,CAAC;IACH,OAAOA,YAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACpC;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { encrypt, decrypt } from './aes256';
|
package/crypto/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
|
package/index.d.ts
CHANGED
package/index.js
CHANGED
|
@@ -38,6 +38,7 @@ var delay = require('./promise/delay.js');
|
|
|
38
38
|
var replaceInTemplate = require('./string/replace-in-template.js');
|
|
39
39
|
var isStringLengthWithinRange = require('./string/is-string-length-within-range.js');
|
|
40
40
|
var getContrastColor = require('./color/get-contrast-color.js');
|
|
41
|
+
var aes256 = require('./crypto/aes256.js');
|
|
41
42
|
|
|
42
43
|
|
|
43
44
|
|
|
@@ -84,4 +85,6 @@ exports.delay = delay.delay;
|
|
|
84
85
|
exports.replaceInTemplate = replaceInTemplate.replaceInTemplate;
|
|
85
86
|
exports.isStringLengthWithinRange = isStringLengthWithinRange.isStringLengthWithinRange;
|
|
86
87
|
exports.getContrastColor = getContrastColor.getContrastColor;
|
|
88
|
+
exports.decrypt = aes256.decrypt;
|
|
89
|
+
exports.encrypt = aes256.encrypt;
|
|
87
90
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sparted/shared-library",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.1",
|
|
4
4
|
"repository": "git@github.com:Sparted/shared-library.git",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Sparted",
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
"build-and-publish": "yarn test && yarn build && (cd ./dist && yarn publish)"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
+
"@types/crypto-js": "^4.2.2",
|
|
25
26
|
"@types/glob": "^8.0.0",
|
|
26
27
|
"@types/jest": "^29.0.3",
|
|
27
28
|
"@types/ungap__structured-clone": "^0.3.0",
|
|
@@ -61,6 +62,7 @@
|
|
|
61
62
|
},
|
|
62
63
|
"dependencies": {
|
|
63
64
|
"@ungap/structured-clone": "^1.2.0",
|
|
65
|
+
"crypto-js": "^4.2.0",
|
|
64
66
|
"ts-essentials": "^9.4.1"
|
|
65
67
|
}
|
|
66
68
|
}
|