5htp-core 0.2.7-2 → 0.2.7-4
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/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "5htp-core",
|
|
3
3
|
"description": "Convenient TypeScript framework designed for Performance and Productivity.",
|
|
4
|
-
"version": "0.2.7-
|
|
4
|
+
"version": "0.2.7-4",
|
|
5
5
|
"author": "Gaetan Le Gac (https://github.com/gaetanlegac)",
|
|
6
6
|
"repository": "git://github.com/gaetanlegac/5htp-core.git",
|
|
7
7
|
"license": "MIT",
|
|
@@ -213,6 +213,8 @@ export default class Console extends Service<Config, Hooks, Application> {
|
|
|
213
213
|
console.error(`Error caused by this query:`, printedQuery);
|
|
214
214
|
}
|
|
215
215
|
console.error(LogPrefix, `Sending bug report for the following error:`, error);
|
|
216
|
+
if (error.dataForDebugging !== undefined)
|
|
217
|
+
console.error(LogPrefix, `More data about the error:`, error.dataForDebugging);
|
|
216
218
|
|
|
217
219
|
// Prevent spamming the mailbox if infinite loop
|
|
218
220
|
const bugId = ['server', request?.user?.name, undefined, error.message].filter(e => !!e).join('::');
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
----------------------------------*/
|
|
4
4
|
|
|
5
5
|
// Nodejs
|
|
6
|
-
import crypto from 'crypto';
|
|
6
|
+
import crypto, { Encoding } from 'crypto';
|
|
7
7
|
|
|
8
8
|
// Core
|
|
9
9
|
import Application, { Service } from '@server/app';
|
|
@@ -20,7 +20,11 @@ import { Forbidden } from '@common/errors';
|
|
|
20
20
|
|
|
21
21
|
export type Config = {
|
|
22
22
|
debug?: boolean,
|
|
23
|
+
// Initialisation vector
|
|
24
|
+
// Generate one here: https://www.allkeysgenerator.com/Random/Security-Encryption-Key-Generator.aspx
|
|
23
25
|
iv: string,
|
|
26
|
+
// Define usage-specific keys
|
|
27
|
+
// You can also generate one via the link upper
|
|
24
28
|
keys: {[keyName: string]: string}
|
|
25
29
|
}
|
|
26
30
|
|
|
@@ -28,6 +32,14 @@ export type Hooks = {
|
|
|
28
32
|
|
|
29
33
|
}
|
|
30
34
|
|
|
35
|
+
type TEncryptOptions = {
|
|
36
|
+
encoding: Encoding
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
type TDecryptOptions = {
|
|
40
|
+
encoding: Encoding
|
|
41
|
+
}
|
|
42
|
+
|
|
31
43
|
/*----------------------------------
|
|
32
44
|
- SERVICE
|
|
33
45
|
----------------------------------*/
|
|
@@ -41,27 +53,31 @@ export default class AES<TConfig extends Config = Config> extends Service<TConfi
|
|
|
41
53
|
|
|
42
54
|
}
|
|
43
55
|
|
|
44
|
-
public encrypt( keyName: keyof TConfig["keys"], data: any
|
|
56
|
+
public encrypt( keyName: keyof TConfig["keys"], data: any, options: TEncryptOptions = {
|
|
57
|
+
encoding: 'base64url'
|
|
58
|
+
}) {
|
|
45
59
|
|
|
46
60
|
const encKey = this.config.keys[ keyName as keyof typeof this.config.keys ];
|
|
47
61
|
|
|
48
62
|
data = JSON.stringify(data);
|
|
49
63
|
|
|
50
64
|
let cipher = crypto.createCipheriv('aes-256-cbc', encKey, this.config.iv);
|
|
51
|
-
let encrypted = cipher.update(data, 'utf8',
|
|
52
|
-
encrypted += cipher.final(
|
|
65
|
+
let encrypted = cipher.update(data, 'utf8', options.encoding);
|
|
66
|
+
encrypted += cipher.final(options.encoding);
|
|
53
67
|
return encrypted;
|
|
54
68
|
|
|
55
69
|
}
|
|
56
70
|
|
|
57
|
-
public decrypt( keyName: keyof TConfig["keys"], data: string
|
|
71
|
+
public decrypt( keyName: keyof TConfig["keys"], data: string, options: TDecryptOptions = {
|
|
72
|
+
encoding: 'base64url'
|
|
73
|
+
}) {
|
|
58
74
|
|
|
59
75
|
const encKey = this.config.keys[ keyName as keyof typeof this.config.keys ];
|
|
60
76
|
|
|
61
77
|
try {
|
|
62
78
|
|
|
63
79
|
let decipher = crypto.createDecipheriv('aes-256-cbc', encKey, this.config.iv);
|
|
64
|
-
let decrypted = decipher.update(data,
|
|
80
|
+
let decrypted = decipher.update(data, options.encoding, 'utf8');
|
|
65
81
|
return JSON.parse(decrypted + decipher.final('utf8'));
|
|
66
82
|
|
|
67
83
|
} catch (error) {
|