exodus-framework 2.2.105 → 2.2.106
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.
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as joseCjs from 'node-jose';
|
|
2
2
|
import { Service } from '../app/index.js';
|
|
3
3
|
import { TSignData } from '../contracts/security.js';
|
|
4
4
|
declare class SecurityService extends Service {
|
|
@@ -10,57 +10,57 @@ declare class SecurityService extends Service {
|
|
|
10
10
|
private loadPrivateKey;
|
|
11
11
|
private loadPublicKey;
|
|
12
12
|
createKeyPairs(): Promise<{
|
|
13
|
-
publicKey:
|
|
14
|
-
privateKey:
|
|
13
|
+
publicKey: any;
|
|
14
|
+
privateKey: any;
|
|
15
15
|
}>;
|
|
16
16
|
loadServicePublicKey(): Promise<void>;
|
|
17
|
-
loadKeyByStr(data: string): Promise<
|
|
17
|
+
loadKeyByStr(data: string): Promise<any>;
|
|
18
18
|
/**
|
|
19
19
|
* Chave privada emitida por este serviço
|
|
20
20
|
*
|
|
21
21
|
* @memberof SecurityService
|
|
22
22
|
*/
|
|
23
|
-
getPrivateKey(): JWK.Key;
|
|
23
|
+
getPrivateKey(): joseCjs.JWK.Key;
|
|
24
24
|
/**
|
|
25
25
|
* Chave publica emitida por este serviço
|
|
26
26
|
*
|
|
27
27
|
* @memberof SecurityService
|
|
28
28
|
*/
|
|
29
|
-
getPublicKey(): JWK.Key;
|
|
29
|
+
getPublicKey(): joseCjs.JWK.Key;
|
|
30
30
|
/**
|
|
31
31
|
* Chave publica emitida pelo serviço do hub se sessões
|
|
32
32
|
*
|
|
33
33
|
* @memberof SecurityService
|
|
34
34
|
*/
|
|
35
|
-
getServicePublicKey(): JWK.Key;
|
|
35
|
+
getServicePublicKey(): joseCjs.JWK.Key;
|
|
36
36
|
/**
|
|
37
37
|
* Criptografía utilizando chave publica
|
|
38
38
|
*
|
|
39
39
|
* @param {TSignData} data
|
|
40
40
|
* @memberof SecurityService
|
|
41
41
|
*/
|
|
42
|
-
encrypt(data: TSignData, publicKey: JWK.Key): Promise<
|
|
42
|
+
encrypt(data: TSignData, publicKey: joseCjs.JWK.Key): Promise<any>;
|
|
43
43
|
/**
|
|
44
44
|
* Descriptografia utilizando chave privada
|
|
45
45
|
*
|
|
46
46
|
* @param {string} encryptedData
|
|
47
47
|
* @memberof SecurityService
|
|
48
48
|
*/
|
|
49
|
-
decrypt<T = any>(encryptedData: string, privateKey: JWK.Key): Promise<T | false>;
|
|
49
|
+
decrypt<T = any>(encryptedData: string, privateKey: joseCjs.JWK.Key): Promise<T | false>;
|
|
50
50
|
/**
|
|
51
51
|
* Realiza uma assinatura usando chave privada
|
|
52
52
|
*
|
|
53
53
|
* @param {TSignData} data
|
|
54
54
|
* @memberof SecurityService
|
|
55
55
|
*/
|
|
56
|
-
sign(data: TSignData, privateKey: JWK.Key): Promise<string | undefined>;
|
|
56
|
+
sign(data: TSignData, privateKey: joseCjs.JWK.Key): Promise<string | undefined>;
|
|
57
57
|
/**
|
|
58
58
|
* Verifica assinatura utilizando chave publica
|
|
59
59
|
*
|
|
60
60
|
* @param {string} signature
|
|
61
61
|
* @memberof SecurityService
|
|
62
62
|
*/
|
|
63
|
-
verifySignature<T = any>(signature: string, publicKey: JWK.Key): Promise<(TSignData<T> & Record<string, any>) | false>;
|
|
63
|
+
verifySignature<T = any>(signature: string, publicKey: joseCjs.JWK.Key): Promise<(TSignData<T> & Record<string, any>) | false>;
|
|
64
64
|
/**
|
|
65
65
|
* Criptografía de dados utilizando um buffer automático ao invés de chaves
|
|
66
66
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/services/security.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/services/security.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AAErC,OAAO,EAAQ,OAAO,EAAgB,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAIrD,cAAM,eAAgB,SAAQ,OAAO;IACnC,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,gBAAgB,CAAmB;IAE9B,OAAO;IAWpB,OAAO,CAAC,UAAU;YAMJ,cAAc;YAad,aAAa;IAMd,cAAc;;;;IASd,oBAAoB;IAUpB,YAAY,CAAC,IAAI,EAAE,MAAM;IAItC;;;;OAIG;IACI,aAAa;IAGpB;;;;OAIG;IACI,YAAY;IAGnB;;;;OAIG;IACI,mBAAmB;IAG1B;;;;;OAKG;IACU,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG;IAmBhE;;;;;OAKG;IACU,OAAO,CAAC,CAAC,GAAG,GAAG,EAC1B,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,GAC1B,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC;IAYrB;;;;;OAKG;IACU,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG;IAsB9D;;;;;OAKG;IACU,eAAe,CAAC,CAAC,GAAG,GAAG,EAClC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,GACzB,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;IAaxD;;;;;OAKG;IACI,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAa7D;;;;;;OAMG;IACI,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK;CAqBhE;AAED,eAAe,eAAe,CAAC"}
|
package/lib/services/security.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import * as crypto from 'crypto';
|
|
2
2
|
import * as fs from 'fs';
|
|
3
|
-
import
|
|
3
|
+
import * as joseCjs from 'node-jose';
|
|
4
4
|
import path from 'path';
|
|
5
5
|
import { Core, Service, ErrorHandler } from '../app/index.js';
|
|
6
|
+
// Corrige a exportação CJS/ESM
|
|
7
|
+
const jose = joseCjs.default || joseCjs;
|
|
6
8
|
class SecurityService extends Service {
|
|
7
9
|
privateKey;
|
|
8
10
|
publicKey;
|
|
@@ -24,11 +26,11 @@ class SecurityService extends Service {
|
|
|
24
26
|
const privateKeyPath = path.join(Core.settings.getAuthentication().certPath, 'private_key.pem');
|
|
25
27
|
if (fs.existsSync(privateKeyPath)) {
|
|
26
28
|
const pem = fs.readFileSync(privateKeyPath, 'utf8');
|
|
27
|
-
this.privateKey = await JWK.asKey(pem, 'pem');
|
|
29
|
+
this.privateKey = await jose.JWK.asKey(pem, 'pem');
|
|
28
30
|
}
|
|
29
31
|
else {
|
|
30
32
|
const { privateKey } = await this.createKeyPairs();
|
|
31
|
-
this.privateKey = await JWK.asKey(privateKey, 'pem');
|
|
33
|
+
this.privateKey = await jose.JWK.asKey(privateKey, 'pem');
|
|
32
34
|
const pem = this.privateKey.toPEM(true);
|
|
33
35
|
fs.writeFileSync(privateKeyPath, pem, 'utf8');
|
|
34
36
|
}
|
|
@@ -36,11 +38,11 @@ class SecurityService extends Service {
|
|
|
36
38
|
async loadPublicKey() {
|
|
37
39
|
const publicKeyPath = path.join(Core.settings.getAuthentication().certPath, 'public_key.pem');
|
|
38
40
|
const pem = this.privateKey.toPEM(false);
|
|
39
|
-
this.publicKey = await JWK.asKey(pem, 'pem');
|
|
41
|
+
this.publicKey = await jose.JWK.asKey(pem, 'pem');
|
|
40
42
|
fs.writeFileSync(publicKeyPath, pem, 'utf8');
|
|
41
43
|
}
|
|
42
44
|
async createKeyPairs() {
|
|
43
|
-
const keyPair = await JWK.createKey('RSA', 2048, {
|
|
45
|
+
const keyPair = await jose.JWK.createKey('RSA', 2048, {
|
|
44
46
|
alg: 'RS256',
|
|
45
47
|
use: 'sig',
|
|
46
48
|
iss: Core.settings.getAuthentication().issuer
|
|
@@ -50,14 +52,14 @@ class SecurityService extends Service {
|
|
|
50
52
|
async loadServicePublicKey() {
|
|
51
53
|
if (fs.existsSync(Core.settings.getAuthentication().servicePublicKeyPath)) {
|
|
52
54
|
const pem = fs.readFileSync(Core.settings.getAuthentication().servicePublicKeyPath, 'utf8');
|
|
53
|
-
this.servicePublicKey = await JWK.asKey(pem, 'pem');
|
|
55
|
+
this.servicePublicKey = await jose.JWK.asKey(pem, 'pem');
|
|
54
56
|
}
|
|
55
57
|
else {
|
|
56
58
|
throw new Error('Não foi possível localizar o certificado de serviço. Verifique o caminho nas configurações');
|
|
57
59
|
}
|
|
58
60
|
}
|
|
59
61
|
async loadKeyByStr(data) {
|
|
60
|
-
return await JWK.asKey(data, 'pem');
|
|
62
|
+
return await jose.JWK.asKey(data, 'pem');
|
|
61
63
|
}
|
|
62
64
|
/**
|
|
63
65
|
* Chave privada emitida por este serviço
|
|
@@ -98,7 +100,7 @@ class SecurityService extends Service {
|
|
|
98
100
|
};
|
|
99
101
|
const payload = JSON.stringify({ ...defaults, ...data });
|
|
100
102
|
try {
|
|
101
|
-
const encrypted = await JWE.createEncrypt({ format: 'compact' }, publicKey)
|
|
103
|
+
const encrypted = await jose.JWE.createEncrypt({ format: 'compact' }, publicKey)
|
|
102
104
|
.update(payload)
|
|
103
105
|
.final();
|
|
104
106
|
return encrypted;
|
|
@@ -116,7 +118,7 @@ class SecurityService extends Service {
|
|
|
116
118
|
*/
|
|
117
119
|
async decrypt(encryptedData, privateKey) {
|
|
118
120
|
try {
|
|
119
|
-
const decrypted = await JWE.createDecrypt(privateKey).decrypt(encryptedData);
|
|
121
|
+
const decrypted = await jose.JWE.createDecrypt(privateKey).decrypt(encryptedData);
|
|
120
122
|
const result = decrypted.plaintext.toString();
|
|
121
123
|
const parserd = JSON.parse(result);
|
|
122
124
|
// Tenta parsear como JSON se for objeto
|
|
@@ -142,7 +144,7 @@ class SecurityService extends Service {
|
|
|
142
144
|
};
|
|
143
145
|
try {
|
|
144
146
|
const payload = JSON.stringify({ ...defaults, ...data });
|
|
145
|
-
const signature = (await JWS.createSign({ compact: true, fields: { typ: 'jwt' } }, privateKey)
|
|
147
|
+
const signature = (await jose.JWS.createSign({ compact: true, fields: { typ: 'jwt' } }, privateKey)
|
|
146
148
|
.update(payload, 'utf8')
|
|
147
149
|
.final());
|
|
148
150
|
return signature;
|
|
@@ -159,7 +161,7 @@ class SecurityService extends Service {
|
|
|
159
161
|
*/
|
|
160
162
|
async verifySignature(signature, publicKey) {
|
|
161
163
|
try {
|
|
162
|
-
const result = await JWS.createVerify(publicKey).verify(signature);
|
|
164
|
+
const result = await jose.JWS.createVerify(publicKey).verify(signature);
|
|
163
165
|
const payload = result.payload.toString();
|
|
164
166
|
return JSON.parse(payload);
|
|
165
167
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/services/security.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/services/security.ts"],"names":[],"mappings":"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"}
|