@carecard/auth-util 2.0.0 → 3.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 (53) hide show
  1. package/index.js +1 -9
  2. package/lib/cryptoUtilAuth.js +20 -49
  3. package/lib/jwtUtilAuth.js +46 -3
  4. package/lib/keyGen.js +18 -11
  5. package/lib/stringUtilAuth.js +2 -3
  6. package/package.json +2 -4
  7. package/coverage/clover.xml +0 -179
  8. package/coverage/coverage-final.json +0 -8
  9. package/coverage/lcov-report/base.css +0 -224
  10. package/coverage/lcov-report/block-navigation.js +0 -87
  11. package/coverage/lcov-report/cryptoUtilAuth.ts.html +0 -418
  12. package/coverage/lcov-report/favicon.png +0 -0
  13. package/coverage/lcov-report/index.html +0 -206
  14. package/coverage/lcov-report/index.ts.html +0 -103
  15. package/coverage/lcov-report/jwtUtilAuth.ts.html +0 -340
  16. package/coverage/lcov-report/keyGen.ts.html +0 -127
  17. package/coverage/lcov-report/prettify.css +0 -1
  18. package/coverage/lcov-report/prettify.js +0 -2
  19. package/coverage/lcov-report/pwdUtilAuth.ts.html +0 -319
  20. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  21. package/coverage/lcov-report/sorter.js +0 -210
  22. package/coverage/lcov-report/strEncryptUtil.ts.html +0 -562
  23. package/coverage/lcov-report/stringUtilAuth.ts.html +0 -391
  24. package/coverage/lcov.info +0 -298
  25. package/dist/cjs/cryptoUtilAuth.cjs +0 -124
  26. package/dist/cjs/cryptoUtilAuth.d.ts +0 -48
  27. package/dist/cjs/index.cjs +0 -22
  28. package/dist/cjs/index.d.ts +0 -6
  29. package/dist/cjs/jwtUtilAuth.cjs +0 -110
  30. package/dist/cjs/jwtUtilAuth.d.ts +0 -35
  31. package/dist/cjs/keyGen.cjs +0 -16
  32. package/dist/cjs/keyGen.d.ts +0 -11
  33. package/dist/cjs/pwdUtilAuth.cjs +0 -97
  34. package/dist/cjs/pwdUtilAuth.d.ts +0 -39
  35. package/dist/cjs/strEncryptUtil.cjs +0 -138
  36. package/dist/cjs/strEncryptUtil.d.ts +0 -46
  37. package/dist/cjs/stringUtilAuth.cjs +0 -107
  38. package/dist/cjs/stringUtilAuth.d.ts +0 -64
  39. package/dist/esm/cryptoUtilAuth.d.ts +0 -48
  40. package/dist/esm/cryptoUtilAuth.js +0 -82
  41. package/dist/esm/index.d.ts +0 -6
  42. package/dist/esm/index.js +0 -6
  43. package/dist/esm/jwtUtilAuth.d.ts +0 -35
  44. package/dist/esm/jwtUtilAuth.js +0 -69
  45. package/dist/esm/keyGen.d.ts +0 -11
  46. package/dist/esm/keyGen.js +0 -12
  47. package/dist/esm/pwdUtilAuth.d.ts +0 -39
  48. package/dist/esm/pwdUtilAuth.js +0 -56
  49. package/dist/esm/strEncryptUtil.d.ts +0 -46
  50. package/dist/esm/strEncryptUtil.js +0 -97
  51. package/dist/esm/stringUtilAuth.d.ts +0 -64
  52. package/dist/esm/stringUtilAuth.js +0 -96
  53. package/lib/strEncryptUtil.js +0 -113
@@ -1,124 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.decryptStringBase64ToAscii = exports.encryptStringAsciiToBase64 = exports.createSaltBase64 = exports.createHmacBase64 = exports.verifyBase64SignatureOfToken = exports.createBase64SignatureOfToken = void 0;
37
- const crypto = __importStar(require("crypto"));
38
- /**
39
- * Signs a token returns signature string
40
- * @param token
41
- * @param privateKey
42
- * @param signingAlgorithm
43
- * @returns {string}
44
- */
45
- const createBase64SignatureOfToken = function (token = '', privateKey, signingAlgorithm) {
46
- const sign = crypto.createSign(signingAlgorithm);
47
- sign.write(token);
48
- sign.end();
49
- return sign.sign(privateKey, 'base64');
50
- };
51
- exports.createBase64SignatureOfToken = createBase64SignatureOfToken;
52
- /**
53
- * Verifies the signature returns true or false
54
- * @param token
55
- * @param signature
56
- * @param publicKey
57
- * @param signingAlgorithm
58
- * @returns {boolean}
59
- */
60
- const verifyBase64SignatureOfToken = function (token = '', signature, publicKey, signingAlgorithm) {
61
- const verify = crypto.createVerify(signingAlgorithm);
62
- verify.update(token);
63
- verify.end();
64
- return verify.verify(publicKey, signature, 'base64');
65
- };
66
- exports.verifyBase64SignatureOfToken = verifyBase64SignatureOfToken;
67
- /**
68
- * Creates the hash of given string
69
- * @param string
70
- * @param secret
71
- * @param algorithm
72
- * @returns {string}
73
- */
74
- const createHmacBase64 = function (string = '', secret, algorithm) {
75
- const hmac = crypto.createHmac(algorithm, secret);
76
- hmac.update(string);
77
- return hmac.digest('base64');
78
- };
79
- exports.createHmacBase64 = createHmacBase64;
80
- /**
81
- * Create random salt
82
- * @returns {string}
83
- */
84
- const createSaltBase64 = () => {
85
- const date = new Date().valueOf();
86
- const hmac = crypto.createHmac('SHA256', date.toString());
87
- hmac.update(date.toString());
88
- return hmac.digest('base64');
89
- };
90
- exports.createSaltBase64 = createSaltBase64;
91
- /**
92
- * Encrypt given string
93
- * @param string
94
- * @param salt
95
- * @param secret
96
- * @param algorithm
97
- * @returns {string}
98
- */
99
- const encryptStringAsciiToBase64 = (string, salt, secret, algorithm) => {
100
- const key = crypto.scryptSync(secret, salt, 24);
101
- const iv = Buffer.alloc(16, 0);
102
- const cipher = crypto.createCipheriv(algorithm, key, iv);
103
- let encrypted = cipher.update(string, 'ascii', 'base64');
104
- encrypted += cipher.final('base64');
105
- return encrypted;
106
- };
107
- exports.encryptStringAsciiToBase64 = encryptStringAsciiToBase64;
108
- /**
109
- * Decrypts given string
110
- * @param encryptedString
111
- * @param salt
112
- * @param secret
113
- * @param algorithm
114
- * @returns {string}
115
- */
116
- const decryptStringBase64ToAscii = (encryptedString, salt, secret, algorithm) => {
117
- const key = crypto.scryptSync(secret, salt, 24);
118
- const iv = Buffer.alloc(16, 0);
119
- const decipher = crypto.createDecipheriv(algorithm, key, iv);
120
- let decrypted = decipher.update(encryptedString, 'base64', 'ascii');
121
- decrypted += decipher.final('ascii');
122
- return decrypted;
123
- };
124
- exports.decryptStringBase64ToAscii = decryptStringBase64ToAscii;
@@ -1,48 +0,0 @@
1
- /**
2
- * Signs a token returns signature string
3
- * @param token
4
- * @param privateKey
5
- * @param signingAlgorithm
6
- * @returns {string}
7
- */
8
- export declare const createBase64SignatureOfToken: (token: string | undefined, privateKey: string, signingAlgorithm: string) => string;
9
- /**
10
- * Verifies the signature returns true or false
11
- * @param token
12
- * @param signature
13
- * @param publicKey
14
- * @param signingAlgorithm
15
- * @returns {boolean}
16
- */
17
- export declare const verifyBase64SignatureOfToken: (token: string | undefined, signature: string, publicKey: string, signingAlgorithm: string) => boolean;
18
- /**
19
- * Creates the hash of given string
20
- * @param string
21
- * @param secret
22
- * @param algorithm
23
- * @returns {string}
24
- */
25
- export declare const createHmacBase64: (string: string | undefined, secret: string, algorithm: string) => string;
26
- /**
27
- * Create random salt
28
- * @returns {string}
29
- */
30
- export declare const createSaltBase64: () => string;
31
- /**
32
- * Encrypt given string
33
- * @param string
34
- * @param salt
35
- * @param secret
36
- * @param algorithm
37
- * @returns {string}
38
- */
39
- export declare const encryptStringAsciiToBase64: (string: string, salt: string, secret: string, algorithm: string) => string;
40
- /**
41
- * Decrypts given string
42
- * @param encryptedString
43
- * @param salt
44
- * @param secret
45
- * @param algorithm
46
- * @returns {string}
47
- */
48
- export declare const decryptStringBase64ToAscii: (encryptedString: string, salt: string, secret: string, algorithm: string) => string;
@@ -1,22 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./cryptoUtilAuth"), exports);
18
- __exportStar(require("./jwtUtilAuth"), exports);
19
- __exportStar(require("./keyGen"), exports);
20
- __exportStar(require("./pwdUtilAuth"), exports);
21
- __exportStar(require("./strEncryptUtil"), exports);
22
- __exportStar(require("./stringUtilAuth"), exports);
@@ -1,6 +0,0 @@
1
- export * from './cryptoUtilAuth';
2
- export * from './jwtUtilAuth';
3
- export * from './keyGen';
4
- export * from './pwdUtilAuth';
5
- export * from './strEncryptUtil';
6
- export * from './stringUtilAuth';
@@ -1,110 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.getHeaderPayloadFromJwt = exports.verifyJwtSignature = exports.createSignedJwtFromObject = exports._splitJwtInToHeaderPayloadSignature = exports._assembleJwt = void 0;
37
- const stringUtilAuth = __importStar(require("./stringUtilAuth"));
38
- const cryptoUtilAuth = __importStar(require("./cryptoUtilAuth"));
39
- /**
40
- * User supplied header, payload and signature create jwt.
41
- * @returns {string|null}
42
- * @param headerBase64
43
- * @param payloadBase64
44
- * @param signatureBase64
45
- */
46
- const _assembleJwt = (headerBase64, payloadBase64, signatureBase64) => {
47
- return headerBase64 + '.' + payloadBase64 + '.' + signatureBase64;
48
- };
49
- exports._assembleJwt = _assembleJwt;
50
- /**
51
- * User supplied header, payload and signature create jwt.
52
- * @returns {{payload: *, signature: *, header: *}}
53
- * @param jwt
54
- */
55
- const _splitJwtInToHeaderPayloadSignature = (jwt) => {
56
- return stringUtilAuth.dotConnectedStringToHeaderPayloadSignature(jwt);
57
- };
58
- exports._splitJwtInToHeaderPayloadSignature = _splitJwtInToHeaderPayloadSignature;
59
- /**
60
- * Creates Url safe jwt
61
- * @param headerObject
62
- * @param payloadObject
63
- * @param privateKey
64
- * @return {string|null}
65
- */
66
- const createSignedJwtFromObject = (headerObject, payloadObject, privateKey) => {
67
- try {
68
- const algorithm = headerObject.alg;
69
- const headerBase64UrlSafe = stringUtilAuth.objectToBase64UrlSafeString(headerObject);
70
- const payloadBase64UrlSafe = stringUtilAuth.objectToBase64UrlSafeString(payloadObject);
71
- const token = headerBase64UrlSafe + '.' + payloadBase64UrlSafe;
72
- const signature = cryptoUtilAuth.createBase64SignatureOfToken(token, privateKey, algorithm);
73
- const urlSafeSignature = stringUtilAuth.makeStringUrlSafe(signature);
74
- return (0, exports._assembleJwt)(headerBase64UrlSafe, payloadBase64UrlSafe, urlSafeSignature);
75
- }
76
- catch (error) {
77
- return null;
78
- }
79
- };
80
- exports.createSignedJwtFromObject = createSignedJwtFromObject;
81
- /**
82
- * Verify signature of jwt
83
- * @param jwt
84
- * @param publicKey
85
- * @return {boolean}
86
- */
87
- const verifyJwtSignature = (jwt, publicKey) => {
88
- try {
89
- const { header, payload, signature } = (0, exports._splitJwtInToHeaderPayloadSignature)(jwt);
90
- const token = header + '.' + payload;
91
- const headerObject = stringUtilAuth.urlSafeBase64ToObject(header);
92
- return cryptoUtilAuth.verifyBase64SignatureOfToken(token, signature, publicKey, headerObject.alg);
93
- }
94
- catch (error) {
95
- return false;
96
- }
97
- };
98
- exports.verifyJwtSignature = verifyJwtSignature;
99
- /**
100
- * Returns header and payload object for jwt.
101
- * @param jwt
102
- * @return {{payload: any, header: any}}
103
- */
104
- const getHeaderPayloadFromJwt = (jwt) => {
105
- const { header, payload } = (0, exports._splitJwtInToHeaderPayloadSignature)(jwt);
106
- let headerAscii = stringUtilAuth.base64ToAscii(header);
107
- let payloadAscii = stringUtilAuth.base64ToAscii(payload);
108
- return { header: JSON.parse(headerAscii), payload: JSON.parse(payloadAscii) };
109
- };
110
- exports.getHeaderPayloadFromJwt = getHeaderPayloadFromJwt;
@@ -1,35 +0,0 @@
1
- /**
2
- * User supplied header, payload and signature create jwt.
3
- * @returns {string|null}
4
- * @param headerBase64
5
- * @param payloadBase64
6
- * @param signatureBase64
7
- */
8
- export declare const _assembleJwt: (headerBase64: string, payloadBase64: string, signatureBase64: string) => string;
9
- /**
10
- * User supplied header, payload and signature create jwt.
11
- * @returns {{payload: *, signature: *, header: *}}
12
- * @param jwt
13
- */
14
- export declare const _splitJwtInToHeaderPayloadSignature: (jwt: string) => any;
15
- /**
16
- * Creates Url safe jwt
17
- * @param headerObject
18
- * @param payloadObject
19
- * @param privateKey
20
- * @return {string|null}
21
- */
22
- export declare const createSignedJwtFromObject: (headerObject: any, payloadObject: any, privateKey: string) => any;
23
- /**
24
- * Verify signature of jwt
25
- * @param jwt
26
- * @param publicKey
27
- * @return {boolean}
28
- */
29
- export declare const verifyJwtSignature: (jwt: string, publicKey: string) => boolean;
30
- /**
31
- * Returns header and payload object for jwt.
32
- * @param jwt
33
- * @return {{payload: any, header: any}}
34
- */
35
- export declare const getHeaderPayloadFromJwt: (jwt: string) => any;
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateKeyPair = void 0;
4
- const node_crypto_1 = require("node:crypto");
5
- const generateKeyPair = (modulusLength = 4096) => (0, node_crypto_1.generateKeyPairSync)('rsa', {
6
- modulusLength: modulusLength,
7
- publicKeyEncoding: {
8
- type: 'spki',
9
- format: 'pem',
10
- },
11
- privateKeyEncoding: {
12
- type: 'pkcs8',
13
- format: 'pem',
14
- },
15
- });
16
- exports.generateKeyPair = generateKeyPair;
@@ -1,11 +0,0 @@
1
- export declare const generateKeyPair: (modulusLength?: number) => import("node:crypto").KeyPairExportResult<{
2
- modulusLength: number;
3
- publicKeyEncoding: {
4
- type: "spki";
5
- format: "pem";
6
- };
7
- privateKeyEncoding: {
8
- type: "pkcs8";
9
- format: "pem";
10
- };
11
- }>;
@@ -1,97 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.createPasswordHashBasedOnSavedAlgorithmSalt = exports.createPasswordHashWithRandomSalt = exports._createPasswordHash = exports._disassemblePasswordHash = exports._assemblePasswordHash = void 0;
37
- const cryptoUtilAuth = __importStar(require("./cryptoUtilAuth"));
38
- const stringUtilAuth = __importStar(require("./stringUtilAuth"));
39
- /**
40
- * Just assemble password together
41
- * @param algorithmBase64
42
- * @param hashBase64
43
- * @param saltBase64
44
- * @return {string}
45
- */
46
- const _assemblePasswordHash = (algorithmBase64, hashBase64, saltBase64) => {
47
- return '$1$' + algorithmBase64 + '$' + hashBase64 + '$' + saltBase64 + '$';
48
- };
49
- exports._assemblePasswordHash = _assemblePasswordHash;
50
- /**
51
- * Break password into its parts does not reverse base64 encoding.
52
- * @param passwordHashStored
53
- * @return {{salt: *, version: *, alg: *, hash: *}}
54
- */
55
- const _disassemblePasswordHash = (passwordHashStored) => {
56
- return stringUtilAuth.dollarSignConnectedStringToAlgorithmHashSalt(passwordHashStored);
57
- };
58
- exports._disassemblePasswordHash = _disassemblePasswordHash;
59
- /**
60
- * Creates password hash ready to be saved in database.
61
- * @param password
62
- * @param secret
63
- * @param salt
64
- * @param algorithm
65
- * @return {string}
66
- */
67
- const _createPasswordHash = (password, secret, salt, algorithm) => {
68
- const algorithmBase64 = stringUtilAuth.asciiToBase64(algorithm);
69
- const hashBase64 = cryptoUtilAuth.createHmacBase64(password, secret, algorithm);
70
- return (0, exports._assemblePasswordHash)(algorithmBase64, hashBase64, salt);
71
- };
72
- exports._createPasswordHash = _createPasswordHash;
73
- /**
74
- * Automatically adds random salt.
75
- * @param password
76
- * @param secret
77
- * @param algorithm
78
- * @return {string}
79
- */
80
- const createPasswordHashWithRandomSalt = (password, secret, algorithm) => {
81
- const salt = cryptoUtilAuth.createSaltBase64();
82
- return (0, exports._createPasswordHash)(password, secret, salt, algorithm);
83
- };
84
- exports.createPasswordHashWithRandomSalt = createPasswordHashWithRandomSalt;
85
- /**
86
- * Creates hash based on saved hash in database.
87
- * @param password
88
- * @param savedPasswordHash
89
- * @param secret
90
- * @return {string}
91
- */
92
- const createPasswordHashBasedOnSavedAlgorithmSalt = (password, savedPasswordHash, secret) => {
93
- const { alg, salt } = (0, exports._disassemblePasswordHash)(savedPasswordHash);
94
- const algorithm = stringUtilAuth.base64ToAscii(alg);
95
- return (0, exports._createPasswordHash)(password, secret, salt, algorithm);
96
- };
97
- exports.createPasswordHashBasedOnSavedAlgorithmSalt = createPasswordHashBasedOnSavedAlgorithmSalt;
@@ -1,39 +0,0 @@
1
- /**
2
- * Just assemble password together
3
- * @param algorithmBase64
4
- * @param hashBase64
5
- * @param saltBase64
6
- * @return {string}
7
- */
8
- export declare const _assemblePasswordHash: (algorithmBase64: string, hashBase64: string, saltBase64: string) => string;
9
- /**
10
- * Break password into its parts does not reverse base64 encoding.
11
- * @param passwordHashStored
12
- * @return {{salt: *, version: *, alg: *, hash: *}}
13
- */
14
- export declare const _disassemblePasswordHash: (passwordHashStored: string) => any;
15
- /**
16
- * Creates password hash ready to be saved in database.
17
- * @param password
18
- * @param secret
19
- * @param salt
20
- * @param algorithm
21
- * @return {string}
22
- */
23
- export declare const _createPasswordHash: (password: string, secret: string, salt: string, algorithm: string) => string;
24
- /**
25
- * Automatically adds random salt.
26
- * @param password
27
- * @param secret
28
- * @param algorithm
29
- * @return {string}
30
- */
31
- export declare const createPasswordHashWithRandomSalt: (password: string, secret: string, algorithm: string) => string;
32
- /**
33
- * Creates hash based on saved hash in database.
34
- * @param password
35
- * @param savedPasswordHash
36
- * @param secret
37
- * @return {string}
38
- */
39
- export declare const createPasswordHashBasedOnSavedAlgorithmSalt: (password: string, savedPasswordHash: string, secret: string) => string;
@@ -1,138 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.decryptByKey = exports.encryptByKey = exports.decryptByPublicKey = exports.encryptByPrivateKey = void 0;
37
- exports.createKey = createKey;
38
- // src/strEncryptUtil.ts
39
- const crypto = __importStar(require("crypto"));
40
- /**
41
- * Derive a key using scrypt.
42
- */
43
- function createKey(key, keyLength = 32) {
44
- // scryptSync returns a Buffer
45
- return crypto.scryptSync(key, key, keyLength);
46
- }
47
- /* --------------------------------------------------
48
- * Helpers
49
- * -------------------------------------------------- */
50
- function getErrorCodeOrFallback(error) {
51
- // Safely narrow 'unknown' to read 'code' when available
52
- if (typeof error === 'object' &&
53
- error !== null &&
54
- 'code' in error &&
55
- typeof error.code === 'string') {
56
- return error.code;
57
- }
58
- if (error instanceof Error) {
59
- // You can return message or name; using name keeps it short
60
- return `ERROR:${error.name}`;
61
- }
62
- return 'UNKNOWN_ERROR';
63
- }
64
- /* --------------------------------------------------
65
- * Asymmetric Encryption (RSA or similar)
66
- * -------------------------------------------------- */
67
- /**
68
- * Encrypts text using a private key, returning an encoded cipher text string.
69
- * On error, returns a code string if present, otherwise a fallback.
70
- */
71
- const encryptByPrivateKey = (encryptionConfigObj, textToEncrypt) => {
72
- try {
73
- const encrypted = crypto.privateEncrypt(encryptionConfigObj.privateKey, Buffer.from(textToEncrypt, 'utf8'));
74
- return encrypted.toString(encryptionConfigObj.encryptedTextEncoding);
75
- }
76
- catch (error) {
77
- return getErrorCodeOrFallback(error);
78
- }
79
- };
80
- exports.encryptByPrivateKey = encryptByPrivateKey;
81
- /**
82
- * Decrypts text using a public key, returning a plain text string.
83
- * On error, returns a code string if present, otherwise a fallback.
84
- */
85
- const decryptByPublicKey = (decryptionConfigObj, textToDecrypt) => {
86
- try {
87
- const decrypted = crypto.publicDecrypt(decryptionConfigObj.publicKey, Buffer.from(textToDecrypt, decryptionConfigObj.encryptedTextEncoding));
88
- return decrypted.toString(decryptionConfigObj.plainTextEncoding);
89
- }
90
- catch (error) {
91
- return getErrorCodeOrFallback(error);
92
- }
93
- };
94
- exports.decryptByPublicKey = decryptByPublicKey;
95
- /* --------------------------------------------------
96
- * Symmetric Encryption (AES or similar)
97
- * -------------------------------------------------- */
98
- /**
99
- * Encrypts text using a symmetric algorithm and derived key, returning an encoded cipher string.
100
- * On error, returns a code string if present, otherwise a fallback.
101
- *
102
- * NOTE: This uses a zero IV (Buffer.alloc(16, 0)) which is generally **not recommended** for production.
103
- * Prefer a random IV per encryption and prepend/append it to the output for decryption.
104
- */
105
- const encryptByKey = (encryptConfigObj, textToEncrypt) => {
106
- try {
107
- const iv = Buffer.alloc(16, 0); // ⚠️ consider using a random IV for security
108
- const key = createKey(encryptConfigObj.encryptionKey, encryptConfigObj.keyLength);
109
- const cipher = crypto.createCipheriv(encryptConfigObj.cipherAlgorithm, key, iv);
110
- let encrypted = cipher.update(textToEncrypt, encryptConfigObj.plainTextEncoding, encryptConfigObj.encryptedTextEncoding);
111
- encrypted += cipher.final(encryptConfigObj.encryptedTextEncoding);
112
- return encrypted;
113
- }
114
- catch (error) {
115
- return getErrorCodeOrFallback(error);
116
- }
117
- };
118
- exports.encryptByKey = encryptByKey;
119
- /**
120
- * Decrypts a cipher string using a symmetric algorithm and derived key,
121
- * returning the plain text string. On error, returns a code string or fallback.
122
- *
123
- * NOTE: Must use the same IV that was used during encryption. Here it assumes a zero IV.
124
- */
125
- const decryptByKey = (encryptConfigObj, textToDecrypt) => {
126
- try {
127
- const iv = Buffer.alloc(16, 0); // ⚠️ must match the IV used in encryptByKey
128
- const key = createKey(encryptConfigObj.encryptionKey, encryptConfigObj.keyLength);
129
- const decipher = crypto.createDecipheriv(encryptConfigObj.cipherAlgorithm, key, iv);
130
- let decrypted = decipher.update(textToDecrypt, encryptConfigObj.encryptedTextEncoding, encryptConfigObj.plainTextEncoding);
131
- decrypted += decipher.final(encryptConfigObj.plainTextEncoding);
132
- return decrypted;
133
- }
134
- catch (error) {
135
- return getErrorCodeOrFallback(error);
136
- }
137
- };
138
- exports.decryptByKey = decryptByKey;