common-header-lib 0.0.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/README.md +24 -0
- package/assets/.gitkeep +0 -0
- package/assets/i18n/ar.json +83 -0
- package/assets/i18n/de.json +83 -0
- package/assets/i18n/en.json +83 -0
- package/assets/i18n/es.json +83 -0
- package/assets/i18n/fr.json +83 -0
- package/assets/i18n/hi.json +83 -0
- package/assets/i18n/ja.json +83 -0
- package/assets/i18n/ko.json +83 -0
- package/assets/images/APP019.svg +6 -0
- package/assets/images/APP020.svg +4 -0
- package/assets/images/APP021.svg +6 -0
- package/assets/images/APP022.svg +6 -0
- package/assets/images/APP023.svg +11 -0
- package/assets/images/APP024.svg +9 -0
- package/assets/images/APP025.svg +8 -0
- package/assets/images/APP026.svg +4 -0
- package/assets/images/APP027.svg +5 -0
- package/assets/images/APP028.svg +6 -0
- package/assets/images/APP029.svg +12 -0
- package/assets/images/APP030.svg +20 -0
- package/assets/images/APP031.svg +14 -0
- package/assets/images/APP032.svg +17 -0
- package/assets/images/Frame.svg +104 -0
- package/assets/images/apps-1.svg +22 -0
- package/assets/images/bell-icon.svg +3 -0
- package/assets/images/check_circle.svg +3 -0
- package/assets/images/close copy.svg +5 -0
- package/assets/images/close.svg +5 -0
- package/assets/images/copy-img.svg +3 -0
- package/assets/images/cross-search.svg +4 -0
- package/assets/images/domain_img.svg +3 -0
- package/assets/images/east.svg +3 -0
- package/assets/images/error.svg +3 -0
- package/assets/images/filepath.svg +8 -0
- package/assets/images/flag1.svg +3 -0
- package/assets/images/gc-mail.svg +3 -0
- package/assets/images/grey-arrow.svg +3 -0
- package/assets/images/info.svg +3 -0
- package/assets/images/local.svg +3 -0
- package/assets/images/lock-pass.svg +3 -0
- package/assets/images/lock1.svg +3 -0
- package/assets/images/login-bg/default_bg.svg +448 -0
- package/assets/images/login-bg/visibility.svg +3 -0
- package/assets/images/login-bg/visibility_off.svg +3 -0
- package/assets/images/logo.png +0 -0
- package/assets/images/logout.svg +3 -0
- package/assets/images/mail-icon.svg +3 -0
- package/assets/images/marker-pin.svg +4 -0
- package/assets/images/noti_ticket.svg +3 -0
- package/assets/images/pass-img.svg +3 -0
- package/assets/images/refresh-1.svg +3 -0
- package/assets/images/schedule.svg +1 -0
- package/assets/images/search-filter.svg +3 -0
- package/assets/images/search-icon.svg +3 -0
- package/assets/images/settings.svg +3 -0
- package/assets/images/successful.svg +10 -0
- package/assets/images/user-name.svg +3 -0
- package/assets/scss/_sidebar.scss +267 -0
- package/assets/scss/styles.scss +577 -0
- package/esm2020/common-header-lib.mjs +5 -0
- package/esm2020/lib/Validators/noSpaceAllowed.mjs +16 -0
- package/esm2020/lib/common-header-lib.component.mjs +612 -0
- package/esm2020/lib/common-header-lib.module.mjs +208 -0
- package/esm2020/lib/common-header-lib.service.mjs +200 -0
- package/esm2020/lib/components/confirm-dialog/confirm-dialog.component.mjs +49 -0
- package/esm2020/lib/components/general-configuration/general-configuration.component.mjs +402 -0
- package/esm2020/lib/components/general-configuration/landingpg-config/landingpg-config.component.mjs +124 -0
- package/esm2020/lib/components/general-configuration/timezone-configuration/timezone-configuration.component.mjs +138 -0
- package/esm2020/lib/components/grid-pagination/grid-pagination.component.mjs +39 -0
- package/esm2020/lib/components/ng-translation/ng-translation.component.mjs +65 -0
- package/esm2020/lib/components/no-service-my-access-pg/no-service-my-access-pg.component.mjs +19 -0
- package/esm2020/lib/components/notification-sidebar/notification-sidebar.component.mjs +40 -0
- package/esm2020/lib/components/side-popup/side-popup.component.mjs +34 -0
- package/esm2020/lib/components/user-mailbox/user-mailbox.component.mjs +173 -0
- package/esm2020/lib/components/user-sidebar/user-sidebar.component.mjs +279 -0
- package/esm2020/lib/components/viewpassword-popup/viewpassword-popup.component.mjs +196 -0
- package/esm2020/lib/model/data_model.mjs +217 -0
- package/esm2020/lib/pipes/custome-dateformat.pipe.mjs +27 -0
- package/esm2020/lib/pipes/date-diff.pipe.mjs +56 -0
- package/esm2020/lib/pipes/slice-to-two.pipe.mjs +34 -0
- package/esm2020/lib/services/EncrypDecryp_RSA.service.mjs +100 -0
- package/esm2020/lib/services/async-passwordcheck.service.mjs +72 -0
- package/esm2020/lib/services/cookie-storage-manager.service.mjs +78 -0
- package/esm2020/lib/services/encrpdata.service.mjs +55 -0
- package/esm2020/lib/services/encrydecrydata.service.mjs +207 -0
- package/esm2020/lib/services/event.service.mjs +133 -0
- package/esm2020/lib/services/http/http-common.service.mjs +216 -0
- package/esm2020/lib/services/http/http-general-config.service.mjs +84 -0
- package/esm2020/lib/services/rest-login-form.service.mjs +296 -0
- package/esm2020/lib/services/rest-signalr.service.mjs +100 -0
- package/esm2020/lib/services/storage.service.mjs +33 -0
- package/esm2020/lib/services/toast-msg.service.mjs +95 -0
- package/esm2020/lib/services/vapt-validation.service.mjs +31 -0
- package/esm2020/public-api.mjs +13 -0
- package/fesm2015/common-header-lib.mjs +4165 -0
- package/fesm2015/common-header-lib.mjs.map +1 -0
- package/fesm2020/common-header-lib.mjs +4146 -0
- package/fesm2020/common-header-lib.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/Validators/noSpaceAllowed.d.ts +2 -0
- package/lib/common-header-lib.component.d.ts +148 -0
- package/lib/common-header-lib.module.d.ts +43 -0
- package/lib/common-header-lib.service.d.ts +25 -0
- package/lib/components/confirm-dialog/confirm-dialog.component.d.ts +13 -0
- package/lib/components/general-configuration/general-configuration.component.d.ts +86 -0
- package/lib/components/general-configuration/landingpg-config/landingpg-config.component.d.ts +37 -0
- package/lib/components/general-configuration/timezone-configuration/timezone-configuration.component.d.ts +38 -0
- package/lib/components/grid-pagination/grid-pagination.component.d.ts +20 -0
- package/lib/components/ng-translation/ng-translation.component.d.ts +22 -0
- package/lib/components/no-service-my-access-pg/no-service-my-access-pg.component.d.ts +8 -0
- package/lib/components/notification-sidebar/notification-sidebar.component.d.ts +16 -0
- package/lib/components/side-popup/side-popup.component.d.ts +14 -0
- package/lib/components/user-mailbox/user-mailbox.component.d.ts +40 -0
- package/lib/components/user-sidebar/user-sidebar.component.d.ts +61 -0
- package/lib/components/viewpassword-popup/viewpassword-popup.component.d.ts +47 -0
- package/lib/model/data_model.d.ts +184 -0
- package/lib/pipes/custome-dateformat.pipe.d.ts +8 -0
- package/lib/pipes/date-diff.pipe.d.ts +9 -0
- package/lib/pipes/slice-to-two.pipe.d.ts +7 -0
- package/lib/services/EncrypDecryp_RSA.service.d.ts +15 -0
- package/lib/services/async-passwordcheck.service.d.ts +18 -0
- package/lib/services/cookie-storage-manager.service.d.ts +16 -0
- package/lib/services/encrpdata.service.d.ts +12 -0
- package/lib/services/encrydecrydata.service.d.ts +33 -0
- package/lib/services/event.service.d.ts +30 -0
- package/lib/services/http/http-common.service.d.ts +30 -0
- package/lib/services/http/http-general-config.service.d.ts +15 -0
- package/lib/services/rest-login-form.service.d.ts +39 -0
- package/lib/services/rest-signalr.service.d.ts +23 -0
- package/lib/services/storage.service.d.ts +11 -0
- package/lib/services/toast-msg.service.d.ts +21 -0
- package/lib/services/vapt-validation.service.d.ts +7 -0
- package/package.json +49 -0
- package/public-api.d.ts +8 -0
- package/src/assets/i18n/ar.json +83 -0
- package/src/assets/i18n/de.json +83 -0
- package/src/assets/i18n/en.json +83 -0
- package/src/assets/i18n/es.json +83 -0
- package/src/assets/i18n/fr.json +83 -0
- package/src/assets/i18n/hi.json +83 -0
- package/src/assets/i18n/ja.json +83 -0
- package/src/assets/i18n/ko.json +83 -0
- package/src/assets/images/APP019.svg +6 -0
- package/src/assets/images/APP020.svg +4 -0
- package/src/assets/images/APP021.svg +6 -0
- package/src/assets/images/APP022.svg +6 -0
- package/src/assets/images/APP023.svg +11 -0
- package/src/assets/images/APP024.svg +9 -0
- package/src/assets/images/APP025.svg +8 -0
- package/src/assets/images/APP026.svg +4 -0
- package/src/assets/images/APP027.svg +5 -0
- package/src/assets/images/APP028.svg +6 -0
- package/src/assets/images/APP029.svg +12 -0
- package/src/assets/images/APP030.svg +20 -0
- package/src/assets/images/APP031.svg +14 -0
- package/src/assets/images/APP032.svg +17 -0
- package/src/assets/images/Frame.svg +104 -0
- package/src/assets/images/apps-1.svg +22 -0
- package/src/assets/images/bell-icon.svg +3 -0
- package/src/assets/images/check_circle.svg +3 -0
- package/src/assets/images/close copy.svg +5 -0
- package/src/assets/images/close.svg +5 -0
- package/src/assets/images/copy-img.svg +3 -0
- package/src/assets/images/cross-search.svg +4 -0
- package/src/assets/images/domain_img.svg +3 -0
- package/src/assets/images/east.svg +3 -0
- package/src/assets/images/error.svg +3 -0
- package/src/assets/images/filepath.svg +8 -0
- package/src/assets/images/flag1.svg +3 -0
- package/src/assets/images/gc-mail.svg +3 -0
- package/src/assets/images/grey-arrow.svg +3 -0
- package/src/assets/images/info.svg +3 -0
- package/src/assets/images/local.svg +3 -0
- package/src/assets/images/lock-pass.svg +3 -0
- package/src/assets/images/lock1.svg +3 -0
- package/src/assets/images/login-bg/default_bg.svg +448 -0
- package/src/assets/images/login-bg/visibility.svg +3 -0
- package/src/assets/images/login-bg/visibility_off.svg +3 -0
- package/src/assets/images/logo.png +0 -0
- package/src/assets/images/logout.svg +3 -0
- package/src/assets/images/mail-icon.svg +3 -0
- package/src/assets/images/marker-pin.svg +4 -0
- package/src/assets/images/noti_ticket.svg +3 -0
- package/src/assets/images/pass-img.svg +3 -0
- package/src/assets/images/refresh-1.svg +3 -0
- package/src/assets/images/schedule.svg +1 -0
- package/src/assets/images/search-filter.svg +3 -0
- package/src/assets/images/search-icon.svg +3 -0
- package/src/assets/images/settings.svg +3 -0
- package/src/assets/images/successful.svg +10 -0
- package/src/assets/images/user-name.svg +3 -0
- package/src/assets/scss/_sidebar.scss +267 -0
- package/src/assets/scss/styles.scss +577 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class SliceToTwoPipe {
|
|
4
|
+
transform(textName) {
|
|
5
|
+
if (textName === null || textName === '') {
|
|
6
|
+
return 'NA';
|
|
7
|
+
}
|
|
8
|
+
textName = textName?.trim();
|
|
9
|
+
let result = '';
|
|
10
|
+
if (textName && textName.includes(' ')) {
|
|
11
|
+
let splitStringArr = textName.split(' ');
|
|
12
|
+
result =
|
|
13
|
+
splitStringArr[0][0] + splitStringArr[splitStringArr.length - 1][0];
|
|
14
|
+
}
|
|
15
|
+
else if (textName && textName.includes('_')) {
|
|
16
|
+
let splitStringArr = textName.split('_');
|
|
17
|
+
result =
|
|
18
|
+
splitStringArr[0][0] + splitStringArr[splitStringArr.length - 1][0];
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
result = textName[0] + textName[1];
|
|
22
|
+
}
|
|
23
|
+
return result.toLocaleUpperCase();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
SliceToTwoPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SliceToTwoPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
27
|
+
SliceToTwoPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: SliceToTwoPipe, name: "sliceToTwo" });
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SliceToTwoPipe, decorators: [{
|
|
29
|
+
type: Pipe,
|
|
30
|
+
args: [{
|
|
31
|
+
name: 'sliceToTwo',
|
|
32
|
+
}]
|
|
33
|
+
}] });
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2UtdG8tdHdvLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24taGVhZGVyLWxpYi9zcmMvbGliL3BpcGVzL3NsaWNlLXRvLXR3by5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQUtwRCxNQUFNLE9BQU8sY0FBYztJQUN6QixTQUFTLENBQUMsUUFBZ0I7UUFDeEIsSUFBSSxRQUFRLEtBQUssSUFBSSxJQUFJLFFBQVEsS0FBSyxFQUFFLEVBQUU7WUFDeEMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELFFBQVEsR0FBRyxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDNUIsSUFBSSxNQUFNLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDdEMsSUFBSSxjQUFjLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6QyxNQUFNO2dCQUNKLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2RTthQUFNLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDN0MsSUFBSSxjQUFjLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6QyxNQUFNO2dCQUNKLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2RTthQUFNO1lBQ0wsTUFBTSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDcEM7UUFDRCxPQUFPLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ3BDLENBQUM7OzJHQW5CVSxjQUFjO3lHQUFkLGNBQWM7MkZBQWQsY0FBYztrQkFIMUIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsWUFBWTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ3NsaWNlVG9Ud28nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2xpY2VUb1R3b1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICB0cmFuc2Zvcm0odGV4dE5hbWU6IHN0cmluZyk6IGFueSB7XHJcbiAgICBpZiAodGV4dE5hbWUgPT09IG51bGwgfHwgdGV4dE5hbWUgPT09ICcnKSB7XHJcbiAgICAgIHJldHVybiAnTkEnO1xyXG4gICAgfVxyXG4gICAgdGV4dE5hbWUgPSB0ZXh0TmFtZT8udHJpbSgpO1xyXG4gICAgbGV0IHJlc3VsdDogc3RyaW5nID0gJyc7XHJcbiAgICBpZiAodGV4dE5hbWUgJiYgdGV4dE5hbWUuaW5jbHVkZXMoJyAnKSkge1xyXG4gICAgICBsZXQgc3BsaXRTdHJpbmdBcnIgPSB0ZXh0TmFtZS5zcGxpdCgnICcpO1xyXG4gICAgICByZXN1bHQgPVxyXG4gICAgICAgIHNwbGl0U3RyaW5nQXJyWzBdWzBdICsgc3BsaXRTdHJpbmdBcnJbc3BsaXRTdHJpbmdBcnIubGVuZ3RoIC0gMV1bMF07XHJcbiAgICB9IGVsc2UgaWYgKHRleHROYW1lICYmIHRleHROYW1lLmluY2x1ZGVzKCdfJykpIHtcclxuICAgICAgbGV0IHNwbGl0U3RyaW5nQXJyID0gdGV4dE5hbWUuc3BsaXQoJ18nKTtcclxuICAgICAgcmVzdWx0ID1cclxuICAgICAgICBzcGxpdFN0cmluZ0FyclswXVswXSArIHNwbGl0U3RyaW5nQXJyW3NwbGl0U3RyaW5nQXJyLmxlbmd0aCAtIDFdWzBdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmVzdWx0ID0gdGV4dE5hbWVbMF0gKyB0ZXh0TmFtZVsxXTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQudG9Mb2NhbGVVcHBlckNhc2UoKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as CryptoJS from 'crypto-js';
|
|
3
|
+
import JSEncrypt from 'jsencrypt';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class EncrydecryRSAdataService {
|
|
6
|
+
generateAESKey() {
|
|
7
|
+
const publicKey = this.getPublicKey();
|
|
8
|
+
const symmetricKey = this.generateKeyAndIV();
|
|
9
|
+
const gkey = symmetricKey.key.toString();
|
|
10
|
+
const giv = symmetricKey.iv.toString();
|
|
11
|
+
const key = gkey + ',' + giv;
|
|
12
|
+
const encryptedSymmetricKey = this.encryptSymmetricKey(gkey, publicKey);
|
|
13
|
+
const encryptedSymmetriciv = this.encryptSymmetricKey(giv, publicKey);
|
|
14
|
+
return String(encryptedSymmetricKey + ',' + encryptedSymmetriciv);
|
|
15
|
+
}
|
|
16
|
+
encryptViaRSA(simpleText) {
|
|
17
|
+
const { symmKey, symmIV } = this.getRSAsymmetricKeyIV();
|
|
18
|
+
const encryptedText = this.encryptText(simpleText, symmKey, symmIV);
|
|
19
|
+
return encryptedText;
|
|
20
|
+
}
|
|
21
|
+
decryptViaRSA(encrpyText) {
|
|
22
|
+
const { symmKey, symmIV } = this.getRSAsymmetricKeyIV();
|
|
23
|
+
const decryptedText = this.decryptText(encrpyText, symmKey, symmIV);
|
|
24
|
+
return decryptedText;
|
|
25
|
+
}
|
|
26
|
+
generateKeyAndIV() {
|
|
27
|
+
const key = CryptoJS.lib.WordArray.random(32); // 32 bytes for AES-256
|
|
28
|
+
const iv = CryptoJS.lib.WordArray.random(16); // 16 bytes IV
|
|
29
|
+
return { key, iv };
|
|
30
|
+
}
|
|
31
|
+
encryptText(plaintext, hkey, hiv) {
|
|
32
|
+
//* If the data is Object then converting the object into JSON.stringify()
|
|
33
|
+
if (typeof plaintext === 'object' && plaintext !== null) {
|
|
34
|
+
plaintext = JSON.stringify(plaintext);
|
|
35
|
+
}
|
|
36
|
+
const key = CryptoJS.enc.Hex.parse(hkey);
|
|
37
|
+
const iv = CryptoJS.enc.Hex.parse(hiv);
|
|
38
|
+
const encrypted = CryptoJS.AES.encrypt(plaintext, key, {
|
|
39
|
+
iv: iv,
|
|
40
|
+
mode: CryptoJS.mode.CBC,
|
|
41
|
+
padding: CryptoJS.pad.Pkcs7,
|
|
42
|
+
});
|
|
43
|
+
return encrypted.toString();
|
|
44
|
+
}
|
|
45
|
+
encryptSymmetricKey(key, publicKey) {
|
|
46
|
+
try {
|
|
47
|
+
const rsa = new JSEncrypt();
|
|
48
|
+
rsa.setPublicKey(publicKey);
|
|
49
|
+
const encryptedKey = rsa.encrypt(key);
|
|
50
|
+
if (!encryptedKey)
|
|
51
|
+
throw new Error('Encryption failed. The key might be improperly formatted.');
|
|
52
|
+
return encryptedKey;
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
console.error(`Encryption error: ${error.message}`);
|
|
56
|
+
return '';
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
decryptText(encryptedBase64, hkey, hiv) {
|
|
60
|
+
const key = CryptoJS.enc.Hex.parse(hkey);
|
|
61
|
+
const iv = CryptoJS.enc.Hex.parse(hiv);
|
|
62
|
+
const decrypted = CryptoJS.AES.decrypt(encryptedBase64, key, {
|
|
63
|
+
iv: iv,
|
|
64
|
+
mode: CryptoJS.mode.CBC,
|
|
65
|
+
padding: CryptoJS.pad.Pkcs7,
|
|
66
|
+
});
|
|
67
|
+
return decrypted.toString(CryptoJS.enc.Utf8);
|
|
68
|
+
}
|
|
69
|
+
getPublicKey() {
|
|
70
|
+
const publicKey = this.base64ToPem(localStorage.getItem('001-SAC-GEC') || '');
|
|
71
|
+
return publicKey;
|
|
72
|
+
}
|
|
73
|
+
getRSAsymmetricKeyIV() {
|
|
74
|
+
let symmKey = '';
|
|
75
|
+
let symmIV = '';
|
|
76
|
+
const key = localStorage.getItem('001-SAC-GEC');
|
|
77
|
+
if (key?.includes(',')) {
|
|
78
|
+
const syymArr = key.split(',');
|
|
79
|
+
symmKey = syymArr[0];
|
|
80
|
+
symmIV = syymArr[1];
|
|
81
|
+
}
|
|
82
|
+
return { symmKey, symmIV };
|
|
83
|
+
}
|
|
84
|
+
base64ToPem(base64Key) {
|
|
85
|
+
const pemHeader = '-----BEGIN PUBLIC KEY-----';
|
|
86
|
+
const pemFooter = '-----END PUBLIC KEY-----';
|
|
87
|
+
const chunkSize = 64; // Standard line length for PEM files
|
|
88
|
+
const formattedKey = base64Key.match(new RegExp(`.{1,${chunkSize}}`, 'g'))?.join('\n') || '';
|
|
89
|
+
return `${pemHeader}\n${formattedKey}\n${pemFooter}`;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
EncrydecryRSAdataService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EncrydecryRSAdataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
93
|
+
EncrydecryRSAdataService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EncrydecryRSAdataService, providedIn: 'root' });
|
|
94
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EncrydecryRSAdataService, decorators: [{
|
|
95
|
+
type: Injectable,
|
|
96
|
+
args: [{
|
|
97
|
+
providedIn: 'root',
|
|
98
|
+
}]
|
|
99
|
+
}] });
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW5jcnlwRGVjcnlwX1JTQS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9uLWhlYWRlci1saWIvc3JjL2xpYi9zZXJ2aWNlcy9FbmNyeXBEZWNyeXBfUlNBLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLFNBQVMsTUFBTSxXQUFXLENBQUM7O0FBS2xDLE1BQU0sT0FBTyx3QkFBd0I7SUFDNUIsY0FBYztRQUNuQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDN0MsTUFBTSxJQUFJLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QyxNQUFNLEdBQUcsR0FBRyxZQUFZLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBRTdCLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN4RSxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDdEUsT0FBTyxNQUFNLENBQUMscUJBQXFCLEdBQUcsR0FBRyxHQUFHLG9CQUFvQixDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVNLGFBQWEsQ0FBQyxVQUFlO1FBQ2xDLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDeEQsTUFBTSxh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QzFFLE9BQU8sR0FBRyxTQUFTLEtBQUssWUFBWSxLQUFLLFNBQVMsRUFBRSxDQUFDO0lBQ3ZELENBQUM7O3FIQXBHVSx3QkFBd0I7eUhBQXhCLHdCQUF3QixjQUZ2QixNQUFNOzJGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIENyeXB0b0pTIGZyb20gJ2NyeXB0by1qcyc7XHJcbmltcG9ydCBKU0VuY3J5cHQgZnJvbSAnanNlbmNyeXB0JztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFbmNyeWRlY3J5UlNBZGF0YVNlcnZpY2Uge1xyXG4gIHB1YmxpYyBnZW5lcmF0ZUFFU0tleSgpIHtcclxuICAgIGNvbnN0IHB1YmxpY0tleSA9IHRoaXMuZ2V0UHVibGljS2V5KCk7XHJcbiAgICBjb25zdCBzeW1tZXRyaWNLZXkgPSB0aGlzLmdlbmVyYXRlS2V5QW5kSVYoKTtcclxuICAgIGNvbnN0IGdrZXkgPSBzeW1tZXRyaWNLZXkua2V5LnRvU3RyaW5nKCk7XHJcbiAgICBjb25zdCBnaXYgPSBzeW1tZXRyaWNLZXkuaXYudG9TdHJpbmcoKTtcclxuICAgIGNvbnN0IGtleSA9IGdrZXkgKyAnLCcgKyBnaXY7XHJcblxyXG4gICAgY29uc3QgZW5jcnlwdGVkU3ltbWV0cmljS2V5ID0gdGhpcy5lbmNyeXB0U3ltbWV0cmljS2V5KGdrZXksIHB1YmxpY0tleSk7XHJcbiAgICBjb25zdCBlbmNyeXB0ZWRTeW1tZXRyaWNpdiA9IHRoaXMuZW5jcnlwdFN5bW1ldHJpY0tleShnaXYsIHB1YmxpY0tleSk7XHJcbiAgICByZXR1cm4gU3RyaW5nKGVuY3J5cHRlZFN5bW1ldHJpY0tleSArICcsJyArIGVuY3J5cHRlZFN5bW1ldHJpY2l2KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBlbmNyeXB0VmlhUlNBKHNpbXBsZVRleHQ6IGFueSkge1xyXG4gICAgY29uc3QgeyBzeW1tS2V5LCBzeW1tSVYgfSA9IHRoaXMuZ2V0UlNBc3ltbWV0cmljS2V5SVYoKTtcclxuICAgIGNvbnN0IGVuY3J5cHRlZFRleHQgPSB0aGlzLmVuY3J5cHRUZXh0KHNpbXBsZVRleHQsIHN5bW1LZXksIHN5bW1JVik7XHJcbiAgICByZXR1cm4gZW5jcnlwdGVkVGV4dDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWNyeXB0VmlhUlNBKGVuY3JweVRleHQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgeyBzeW1tS2V5LCBzeW1tSVYgfSA9IHRoaXMuZ2V0UlNBc3ltbWV0cmljS2V5SVYoKTtcclxuICAgIGNvbnN0IGRlY3J5cHRlZFRleHQgPSB0aGlzLmRlY3J5cHRUZXh0KGVuY3JweVRleHQsIHN5bW1LZXksIHN5bW1JVik7XHJcbiAgICByZXR1cm4gZGVjcnlwdGVkVGV4dDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2VuZXJhdGVLZXlBbmRJVigpIHtcclxuICAgIGNvbnN0IGtleSA9IENyeXB0b0pTLmxpYi5Xb3JkQXJyYXkucmFuZG9tKDMyKTsgLy8gMzIgYnl0ZXMgZm9yIEFFUy0yNTZcclxuICAgIGNvbnN0IGl2ID0gQ3J5cHRvSlMubGliLldvcmRBcnJheS5yYW5kb20oMTYpOyAvLyAxNiBieXRlcyBJVlxyXG4gICAgcmV0dXJuIHsga2V5LCBpdiB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbmNyeXB0VGV4dChwbGFpbnRleHQ6IGFueSwgaGtleTogc3RyaW5nLCBoaXY6IHN0cmluZykge1xyXG4gICAgLy8qIElmIHRoZSBkYXRhIGlzIE9iamVjdCB0aGVuIGNvbnZlcnRpbmcgdGhlIG9iamVjdCBpbnRvIEpTT04uc3RyaW5naWZ5KClcclxuICAgIGlmICh0eXBlb2YgcGxhaW50ZXh0ID09PSAnb2JqZWN0JyAmJiBwbGFpbnRleHQgIT09IG51bGwpIHtcclxuICAgICAgcGxhaW50ZXh0ID0gSlNPTi5zdHJpbmdpZnkocGxhaW50ZXh0KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBrZXkgPSBDcnlwdG9KUy5lbmMuSGV4LnBhcnNlKGhrZXkpO1xyXG4gICAgY29uc3QgaXYgPSBDcnlwdG9KUy5lbmMuSGV4LnBhcnNlKGhpdik7XHJcbiAgICBjb25zdCBlbmNyeXB0ZWQgPSBDcnlwdG9KUy5BRVMuZW5jcnlwdChwbGFpbnRleHQsIGtleSwge1xyXG4gICAgICBpdjogaXYsXHJcbiAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuQ0JDLFxyXG4gICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuUGtjczcsXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBlbmNyeXB0ZWQudG9TdHJpbmcoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW5jcnlwdFN5bW1ldHJpY0tleShrZXk6IHN0cmluZywgcHVibGljS2V5OiBzdHJpbmcpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJzYSA9IG5ldyBKU0VuY3J5cHQoKTtcclxuICAgICAgcnNhLnNldFB1YmxpY0tleShwdWJsaWNLZXkpO1xyXG4gICAgICBjb25zdCBlbmNyeXB0ZWRLZXkgPSByc2EuZW5jcnlwdChrZXkpO1xyXG4gICAgICBpZiAoIWVuY3J5cHRlZEtleSlcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgICAnRW5jcnlwdGlvbiBmYWlsZWQuIFRoZSBrZXkgbWlnaHQgYmUgaW1wcm9wZXJseSBmb3JtYXR0ZWQuJ1xyXG4gICAgICAgICk7XHJcbiAgICAgIHJldHVybiBlbmNyeXB0ZWRLZXk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGBFbmNyeXB0aW9uIGVycm9yOiAkeyhlcnJvciBhcyBFcnJvcikubWVzc2FnZX1gKTtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkZWNyeXB0VGV4dChlbmNyeXB0ZWRCYXNlNjQ6IHN0cmluZywgaGtleTogc3RyaW5nLCBoaXY6IHN0cmluZykge1xyXG4gICAgY29uc3Qga2V5ID0gQ3J5cHRvSlMuZW5jLkhleC5wYXJzZShoa2V5KTtcclxuICAgIGNvbnN0IGl2ID0gQ3J5cHRvSlMuZW5jLkhleC5wYXJzZShoaXYpO1xyXG4gICAgY29uc3QgZGVjcnlwdGVkID0gQ3J5cHRvSlMuQUVTLmRlY3J5cHQoZW5jcnlwdGVkQmFzZTY0LCBrZXksIHtcclxuICAgICAgaXY6IGl2LFxyXG4gICAgICBtb2RlOiBDcnlwdG9KUy5tb2RlLkNCQyxcclxuICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlBrY3M3LFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZGVjcnlwdGVkLnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UHVibGljS2V5KCkge1xyXG4gICAgY29uc3QgcHVibGljS2V5ID0gdGhpcy5iYXNlNjRUb1BlbShcclxuICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJzAwMS1TQUMtR0VDJykgfHwgJydcclxuICAgICk7XHJcbiAgICByZXR1cm4gcHVibGljS2V5O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRSU0FzeW1tZXRyaWNLZXlJVigpIHtcclxuICAgIGxldCBzeW1tS2V5ID0gJyc7XHJcbiAgICBsZXQgc3ltbUlWID0gJyc7XHJcbiAgICBjb25zdCBrZXkgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnMDAxLVNBQy1HRUMnKTtcclxuICAgIGlmIChrZXk/LmluY2x1ZGVzKCcsJykpIHtcclxuICAgICAgY29uc3Qgc3l5bUFyciA9IGtleS5zcGxpdCgnLCcpO1xyXG4gICAgICBzeW1tS2V5ID0gc3l5bUFyclswXTtcclxuICAgICAgc3ltbUlWID0gc3l5bUFyclsxXTtcclxuICAgIH1cclxuICAgIHJldHVybiB7IHN5bW1LZXksIHN5bW1JViB9O1xyXG4gIH1cclxuXHJcbiAgYmFzZTY0VG9QZW0oYmFzZTY0S2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcGVtSGVhZGVyID0gJy0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tJztcclxuICAgIGNvbnN0IHBlbUZvb3RlciA9ICctLS0tLUVORCBQVUJMSUMgS0VZLS0tLS0nO1xyXG4gICAgY29uc3QgY2h1bmtTaXplID0gNjQ7IC8vIFN0YW5kYXJkIGxpbmUgbGVuZ3RoIGZvciBQRU0gZmlsZXNcclxuICAgIGNvbnN0IGZvcm1hdHRlZEtleSA9XHJcbiAgICAgIGJhc2U2NEtleS5tYXRjaChuZXcgUmVnRXhwKGAuezEsJHtjaHVua1NpemV9fWAsICdnJykpPy5qb2luKCdcXG4nKSB8fCAnJztcclxuICAgIHJldHVybiBgJHtwZW1IZWFkZXJ9XFxuJHtmb3JtYXR0ZWRLZXl9XFxuJHtwZW1Gb290ZXJ9YDtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { catchError, debounceTime, switchMap, take, map } from 'rxjs/operators';
|
|
3
|
+
import { Subject, of } from 'rxjs';
|
|
4
|
+
import { EncrydecryRSAdataService } from './EncrypDecryp_RSA.service';
|
|
5
|
+
import { HttpCommonService } from './http/http-common.service';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "./http/http-common.service";
|
|
8
|
+
import * as i2 from "./EncrypDecryp_RSA.service";
|
|
9
|
+
export class ASYNCPasswordcheckService {
|
|
10
|
+
constructor(httpCommonService, encryptService) {
|
|
11
|
+
this.httpCommonService = httpCommonService;
|
|
12
|
+
this.encryptService = encryptService;
|
|
13
|
+
this.pwdErrorMsg = '';
|
|
14
|
+
this.pwdValidation = new Subject();
|
|
15
|
+
}
|
|
16
|
+
createValidator() {
|
|
17
|
+
return (control) => {
|
|
18
|
+
//For AES Encrp/Dec
|
|
19
|
+
const userPassword = this.encryptService.encryptViaRSA(control.value);
|
|
20
|
+
let useDetails = {
|
|
21
|
+
userARCXWD: userPassword,
|
|
22
|
+
// userId: LoggedInUserInfo.userId,
|
|
23
|
+
// userName: LoggedInUserInfo.userName,
|
|
24
|
+
};
|
|
25
|
+
return control.valueChanges.pipe(debounceTime(500), take(1), switchMap((_) => this.httpCommonService.validatePassword(useDetails).pipe(map((data) => {
|
|
26
|
+
if (data['success']) {
|
|
27
|
+
this.pwdErrorMsg = data['message'];
|
|
28
|
+
// console.log(this.pwdErrorMsg);
|
|
29
|
+
this.emitValidationMsg(this.pwdErrorMsg);
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
this.pwdErrorMsg = data['errorMessage'];
|
|
34
|
+
this.emitValidationMsg(this.pwdErrorMsg);
|
|
35
|
+
// console.log(this.pwdErrorMsg);
|
|
36
|
+
return { pwdInvalid: true };
|
|
37
|
+
}
|
|
38
|
+
}), catchError(() => of({ pwdInvalid: true })))));
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
emitValidationMsg(msg) {
|
|
42
|
+
this.pwdValidation.next(msg);
|
|
43
|
+
}
|
|
44
|
+
listValidationMsg() {
|
|
45
|
+
return this.pwdValidation.asObservable();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
ASYNCPasswordcheckService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ASYNCPasswordcheckService, deps: [{ token: i1.HttpCommonService }, { token: i2.EncrydecryRSAdataService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
49
|
+
ASYNCPasswordcheckService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ASYNCPasswordcheckService, providedIn: 'root' });
|
|
50
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ASYNCPasswordcheckService, decorators: [{
|
|
51
|
+
type: Injectable,
|
|
52
|
+
args: [{
|
|
53
|
+
providedIn: 'root',
|
|
54
|
+
}]
|
|
55
|
+
}], ctorParameters: function () { return [{ type: i1.HttpCommonService }, { type: i2.EncrydecryRSAdataService }]; } });
|
|
56
|
+
export function ConfirmedValidator(controlName, matchingControlName) {
|
|
57
|
+
return (formGroup) => {
|
|
58
|
+
const control = formGroup.controls[controlName];
|
|
59
|
+
const matchingControl = formGroup.controls[matchingControlName];
|
|
60
|
+
if (matchingControl.errors &&
|
|
61
|
+
!matchingControl.errors['confirmedValidator']) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (control.value !== matchingControl.value) {
|
|
65
|
+
matchingControl.setErrors({ confirmedValidator: true });
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
matchingControl.setErrors(null);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtcGFzc3dvcmRjaGVjay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9uLWhlYWRlci1saWIvc3JjL2xpYi9zZXJ2aWNlcy9hc3luYy1wYXNzd29yZGNoZWNrLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hGLE9BQU8sRUFBYyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBSy9ELE1BQU0sT0FBTyx5QkFBeUI7SUFJcEMsWUFDbUIsaUJBQW9DLEVBQ3BDLGNBQXdDO1FBRHhDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsbUJBQWMsR0FBZCxjQUFjLENBQTBCO1FBTDNELGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ2pCLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztJQUszQyxDQUFDO0lBRUosZUFBZTtRQUNiLE9BQU8sQ0FDTCxPQUF3QixFQUNtQixFQUFFO1lBQzdDLG1CQUFtQjtZQUNuQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFdEUsSUFBSSxVQUFVLEdBQUc7Z0JBQ2YsVUFBVSxFQUFFLFlBQVk7Z0JBQ3hCLG1DQUFtQztnQkFDbkMsdUNBQXVDO2FBQ3hDLENBQUM7WUFDRixPQUFPLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUM5QixZQUFZLENBQUMsR0FBRyxDQUFDLEVBQ2pCLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNkLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQ3RELEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUNoQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTtvQkFDbkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ25DLGlDQUFpQztvQkFDakMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDekMsT0FBTyxJQUFJLENBQUM7aUJBQ2I7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7b0JBQ3hDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBQ3pDLGlDQUFpQztvQkFDakMsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQztpQkFDN0I7WUFDSCxDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FDM0MsQ0FDRixDQUNGLENBQUM7UUFDSixDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsaUJBQWlCLENBQUMsR0FBVztRQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNDLENBQUM7O3NIQXBEVSx5QkFBeUI7MEhBQXpCLHlCQUF5QixjQUZ4QixNQUFNOzJGQUVQLHlCQUF5QjtrQkFIckMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBd0RELE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsV0FBbUIsRUFDbkIsbUJBQTJCO0lBRTNCLE9BQU8sQ0FBQyxTQUFvQixFQUFFLEVBQUU7UUFDOUIsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoRCxNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDaEUsSUFDRSxlQUFlLENBQUMsTUFBTTtZQUN0QixDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsRUFDN0M7WUFDQSxPQUFPO1NBQ1I7UUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEtBQUssZUFBZSxDQUFDLEtBQUssRUFBRTtZQUMzQyxlQUFlLENBQUMsU0FBUyxDQUFDLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUN6RDthQUFNO1lBQ0wsZUFBZSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNqQztJQUNILENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFzeW5jVmFsaWRhdG9yRm4sIEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWJvdW5jZVRpbWUsIHN3aXRjaE1hcCwgdGFrZSwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBFbmNyeWRlY3J5UlNBZGF0YVNlcnZpY2UgfSBmcm9tICcuL0VuY3J5cERlY3J5cF9SU0Euc2VydmljZSc7XHJcbmltcG9ydCB7IEh0dHBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi9odHRwL2h0dHAtY29tbW9uLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFTWU5DUGFzc3dvcmRjaGVja1NlcnZpY2Uge1xyXG4gIHB3ZEVycm9yTXNnOiBzdHJpbmcgPSAnJztcclxuICBwcml2YXRlIHB3ZFZhbGlkYXRpb24gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwQ29tbW9uU2VydmljZTogSHR0cENvbW1vblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVuY3J5cHRTZXJ2aWNlOiBFbmNyeWRlY3J5UlNBZGF0YVNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIGNyZWF0ZVZhbGlkYXRvcigpOiBBc3luY1ZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbFxyXG4gICAgKTogT2JzZXJ2YWJsZTx7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgbnVsbD4gPT4ge1xyXG4gICAgICAvL0ZvciBBRVMgRW5jcnAvRGVjXHJcbiAgICAgIGNvbnN0IHVzZXJQYXNzd29yZCA9IHRoaXMuZW5jcnlwdFNlcnZpY2UuZW5jcnlwdFZpYVJTQShjb250cm9sLnZhbHVlKTtcclxuXHJcbiAgICAgIGxldCB1c2VEZXRhaWxzID0ge1xyXG4gICAgICAgIHVzZXJBUkNYV0Q6IHVzZXJQYXNzd29yZCxcclxuICAgICAgICAvLyB1c2VySWQ6IExvZ2dlZEluVXNlckluZm8udXNlcklkLFxyXG4gICAgICAgIC8vIHVzZXJOYW1lOiBMb2dnZWRJblVzZXJJbmZvLnVzZXJOYW1lLFxyXG4gICAgICB9O1xyXG4gICAgICByZXR1cm4gY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcclxuICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKSxcclxuICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgIHN3aXRjaE1hcCgoXykgPT5cclxuICAgICAgICAgIHRoaXMuaHR0cENvbW1vblNlcnZpY2UudmFsaWRhdGVQYXNzd29yZCh1c2VEZXRhaWxzKS5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChkYXRhWydzdWNjZXNzJ10pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHdkRXJyb3JNc2cgPSBkYXRhWydtZXNzYWdlJ107XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLnB3ZEVycm9yTXNnKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZW1pdFZhbGlkYXRpb25Nc2codGhpcy5wd2RFcnJvck1zZyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wd2RFcnJvck1zZyA9IGRhdGFbJ2Vycm9yTWVzc2FnZSddO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0VmFsaWRhdGlvbk1zZyh0aGlzLnB3ZEVycm9yTXNnKTtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMucHdkRXJyb3JNc2cpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgcHdkSW52YWxpZDogdHJ1ZSB9O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoeyBwd2RJbnZhbGlkOiB0cnVlIH0pKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBlbWl0VmFsaWRhdGlvbk1zZyhtc2c6IHN0cmluZykge1xyXG4gICAgdGhpcy5wd2RWYWxpZGF0aW9uLm5leHQobXNnKTtcclxuICB9XHJcblxyXG4gIGxpc3RWYWxpZGF0aW9uTXNnKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucHdkVmFsaWRhdGlvbi5hc09ic2VydmFibGUoKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBDb25maXJtZWRWYWxpZGF0b3IoXHJcbiAgY29udHJvbE5hbWU6IHN0cmluZyxcclxuICBtYXRjaGluZ0NvbnRyb2xOYW1lOiBzdHJpbmdcclxuKSB7XHJcbiAgcmV0dXJuIChmb3JtR3JvdXA6IEZvcm1Hcm91cCkgPT4ge1xyXG4gICAgY29uc3QgY29udHJvbCA9IGZvcm1Hcm91cC5jb250cm9sc1tjb250cm9sTmFtZV07XHJcbiAgICBjb25zdCBtYXRjaGluZ0NvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNbbWF0Y2hpbmdDb250cm9sTmFtZV07XHJcbiAgICBpZiAoXHJcbiAgICAgIG1hdGNoaW5nQ29udHJvbC5lcnJvcnMgJiZcclxuICAgICAgIW1hdGNoaW5nQ29udHJvbC5lcnJvcnNbJ2NvbmZpcm1lZFZhbGlkYXRvciddXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGNvbnRyb2wudmFsdWUgIT09IG1hdGNoaW5nQ29udHJvbC52YWx1ZSkge1xyXG4gICAgICBtYXRjaGluZ0NvbnRyb2wuc2V0RXJyb3JzKHsgY29uZmlybWVkVmFsaWRhdG9yOiB0cnVlIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbWF0Y2hpbmdDb250cm9sLnNldEVycm9ycyhudWxsKTtcclxuICAgIH1cclxuICB9O1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { CookieService } from 'ngx-cookie-service';
|
|
3
|
+
import { HttpClient } from '@angular/common/http';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "ngx-cookie-service";
|
|
6
|
+
import * as i2 from "@angular/common/http";
|
|
7
|
+
export class CookieStorageManagerService {
|
|
8
|
+
constructor(cookie, _http) {
|
|
9
|
+
this.cookie = cookie;
|
|
10
|
+
this._http = _http;
|
|
11
|
+
}
|
|
12
|
+
//Check if cookies is set or not
|
|
13
|
+
checksetCookies(cookiesParam1) {
|
|
14
|
+
let status = this.cookie.check(cookiesParam1);
|
|
15
|
+
if (status) {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//get cookies value
|
|
23
|
+
getCookieValue(cookiesParam) {
|
|
24
|
+
let status = this.cookie.check(cookiesParam);
|
|
25
|
+
if (status) {
|
|
26
|
+
let cookieValue = this.cookie.get(cookiesParam);
|
|
27
|
+
return cookieValue;
|
|
28
|
+
}
|
|
29
|
+
//What if cookies not found
|
|
30
|
+
else {
|
|
31
|
+
return '';
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//Set cookies value
|
|
35
|
+
setCookiesValue(key, value) {
|
|
36
|
+
this.cookie.set(key, value);
|
|
37
|
+
}
|
|
38
|
+
//Delete a specific cookie
|
|
39
|
+
deleteCookie(cookieKey) {
|
|
40
|
+
this.cookie.delete(cookieKey);
|
|
41
|
+
}
|
|
42
|
+
//Delete All cookie
|
|
43
|
+
clearAllCookies() {
|
|
44
|
+
const cookies = this.cookie.getAll();
|
|
45
|
+
for (const cookieName in cookies) {
|
|
46
|
+
if (cookies.hasOwnProperty(cookieName)) {
|
|
47
|
+
this.cookie.delete(cookieName);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//Delete All cookie
|
|
52
|
+
// clearCookiesByAPI(payload: any) {
|
|
53
|
+
// const delCookieEndpoint = `${GlobalConstants.baseURL}/xaccess/api/SecureAccess/cookiesUpdation`;
|
|
54
|
+
// return this._http.post(delCookieEndpoint, payload).pipe(map((response:any)=>{
|
|
55
|
+
// if (response && response['success']) {
|
|
56
|
+
// return response['result'];
|
|
57
|
+
// } else {
|
|
58
|
+
// return null;
|
|
59
|
+
// }
|
|
60
|
+
// }));
|
|
61
|
+
// }
|
|
62
|
+
//Set Long cookies
|
|
63
|
+
setLongCookie(name, value, maxChunkSize) {
|
|
64
|
+
for (let i = 0; i < Math.ceil(value.length / maxChunkSize); i++) {
|
|
65
|
+
const chunk = value.substring(i * maxChunkSize, (i + 1) * maxChunkSize);
|
|
66
|
+
this.setCookiesValue(`${name}_${i}`, chunk);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
CookieStorageManagerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CookieStorageManagerService, deps: [{ token: i1.CookieService }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
71
|
+
CookieStorageManagerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CookieStorageManagerService, providedIn: 'root' });
|
|
72
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CookieStorageManagerService, decorators: [{
|
|
73
|
+
type: Injectable,
|
|
74
|
+
args: [{
|
|
75
|
+
providedIn: 'root',
|
|
76
|
+
}]
|
|
77
|
+
}], ctorParameters: function () { return [{ type: i1.CookieService }, { type: i2.HttpClient }]; } });
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLXN0b3JhZ2UtbWFuYWdlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9uLWhlYWRlci1saWIvc3JjL2xpYi9zZXJ2aWNlcy9jb29raWUtc3RvcmFnZS1tYW5hZ2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFbkQsT0FBTyxFQUFFLFVBQVUsRUFBYyxNQUFNLHNCQUFzQixDQUFDOzs7O0FBTTlELE1BQU0sT0FBTywyQkFBMkI7SUFDdEMsWUFBb0IsTUFBcUIsRUFBVSxLQUFpQjtRQUFoRCxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBWTtJQUFHLENBQUM7SUFFeEUsZ0NBQWdDO0lBQ2hDLGVBQWUsQ0FBQyxhQUFrQjtRQUNoQyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5QyxJQUFJLE1BQU0sRUFBRTtZQUNWLE9BQU8sSUFBSSxDQUFDO1NBQ2I7YUFBTTtZQUNMLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLGNBQWMsQ0FBQyxZQUFpQjtRQUM5QixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM3QyxJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ2hELE9BQU8sV0FBVyxDQUFDO1NBQ3BCO1FBQ0QsMkJBQTJCO2FBQ3RCO1lBQ0gsT0FBTyxFQUFFLENBQUM7U0FDWDtJQUNILENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsZUFBZSxDQUFDLEdBQVEsRUFBRSxLQUFVO1FBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsMEJBQTBCO0lBQzFCLFlBQVksQ0FBQyxTQUFpQjtRQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLGVBQWU7UUFDYixNQUFNLE9BQU8sR0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3pDLEtBQUssTUFBTSxVQUFVLElBQUksT0FBTyxFQUFFO1lBQ2hDLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDdEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDaEM7U0FDRjtJQUNILENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsb0NBQW9DO0lBQ3BDLHFHQUFxRztJQUNyRyxrRkFBa0Y7SUFDbEYsNkNBQTZDO0lBQzdDLG1DQUFtQztJQUNuQyxlQUFlO0lBQ2YscUJBQXFCO0lBQ3JCLFFBQVE7SUFDUixTQUFTO0lBQ1QsSUFBSTtJQUVKLGtCQUFrQjtJQUNsQixhQUFhLENBQUMsSUFBWSxFQUFFLEtBQWEsRUFBRSxZQUFvQjtRQUM3RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQy9ELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFlBQVksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQztZQUN4RSxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzdDO0lBQ0gsQ0FBQzs7d0hBaEVVLDJCQUEyQjs0SEFBM0IsMkJBQTJCLGNBRjFCLE1BQU07MkZBRVAsMkJBQTJCO2tCQUh2QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gJ25neC1jb29raWUtc2VydmljZSc7XHJcbmltcG9ydCB7IEdsb2JhbENvbnN0YW50cyB9IGZyb20gJy4uL21vZGVsL2RhdGFfbW9kZWwnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29va2llU3RvcmFnZU1hbmFnZXJTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvb2tpZTogQ29va2llU2VydmljZSwgcHJpdmF0ZSBfaHR0cDogSHR0cENsaWVudCkge31cclxuXHJcbiAgLy9DaGVjayBpZiBjb29raWVzIGlzIHNldCBvciBub3RcclxuICBjaGVja3NldENvb2tpZXMoY29va2llc1BhcmFtMTogYW55KSB7XHJcbiAgICBsZXQgc3RhdHVzID0gdGhpcy5jb29raWUuY2hlY2soY29va2llc1BhcmFtMSk7XHJcbiAgICBpZiAoc3RhdHVzKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9nZXQgY29va2llcyB2YWx1ZVxyXG4gIGdldENvb2tpZVZhbHVlKGNvb2tpZXNQYXJhbTogYW55KSB7XHJcbiAgICBsZXQgc3RhdHVzID0gdGhpcy5jb29raWUuY2hlY2soY29va2llc1BhcmFtKTtcclxuICAgIGlmIChzdGF0dXMpIHtcclxuICAgICAgbGV0IGNvb2tpZVZhbHVlID0gdGhpcy5jb29raWUuZ2V0KGNvb2tpZXNQYXJhbSk7XHJcbiAgICAgIHJldHVybiBjb29raWVWYWx1ZTtcclxuICAgIH1cclxuICAgIC8vV2hhdCBpZiBjb29raWVzIG5vdCBmb3VuZFxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vU2V0IGNvb2tpZXMgdmFsdWVcclxuICBzZXRDb29raWVzVmFsdWUoa2V5OiBhbnksIHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuY29va2llLnNldChrZXksIHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8vRGVsZXRlIGEgc3BlY2lmaWMgY29va2llXHJcbiAgZGVsZXRlQ29va2llKGNvb2tpZUtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvb2tpZS5kZWxldGUoY29va2llS2V5KTtcclxuICB9XHJcblxyXG4gIC8vRGVsZXRlIEFsbCBjb29raWVcclxuICBjbGVhckFsbENvb2tpZXMoKSB7XHJcbiAgICBjb25zdCBjb29raWVzOiB7fSA9IHRoaXMuY29va2llLmdldEFsbCgpO1xyXG4gICAgZm9yIChjb25zdCBjb29raWVOYW1lIGluIGNvb2tpZXMpIHtcclxuICAgICAgaWYgKGNvb2tpZXMuaGFzT3duUHJvcGVydHkoY29va2llTmFtZSkpIHtcclxuICAgICAgICB0aGlzLmNvb2tpZS5kZWxldGUoY29va2llTmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vRGVsZXRlIEFsbCBjb29raWVcclxuICAvLyBjbGVhckNvb2tpZXNCeUFQSShwYXlsb2FkOiBhbnkpIHtcclxuICAvLyAgIGNvbnN0IGRlbENvb2tpZUVuZHBvaW50ID0gYCR7R2xvYmFsQ29uc3RhbnRzLmJhc2VVUkx9L3hhY2Nlc3MvYXBpL1NlY3VyZUFjY2Vzcy9jb29raWVzVXBkYXRpb25gO1xyXG4gIC8vICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdChkZWxDb29raWVFbmRwb2ludCwgcGF5bG9hZCkucGlwZShtYXAoKHJlc3BvbnNlOmFueSk9PntcclxuICAvLyAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlWydzdWNjZXNzJ10pIHtcclxuICAvLyAgICAgICByZXR1cm4gcmVzcG9uc2VbJ3Jlc3VsdCddO1xyXG4gIC8vICAgICB9IGVsc2Uge1xyXG4gIC8vICAgICAgIHJldHVybiBudWxsO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KSk7XHJcbiAgLy8gfVxyXG5cclxuICAvL1NldCBMb25nIGNvb2tpZXNcclxuICBzZXRMb25nQ29va2llKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgbWF4Q2h1bmtTaXplOiBudW1iZXIpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTWF0aC5jZWlsKHZhbHVlLmxlbmd0aCAvIG1heENodW5rU2l6ZSk7IGkrKykge1xyXG4gICAgICBjb25zdCBjaHVuayA9IHZhbHVlLnN1YnN0cmluZyhpICogbWF4Q2h1bmtTaXplLCAoaSArIDEpICogbWF4Q2h1bmtTaXplKTtcclxuICAgICAgdGhpcy5zZXRDb29raWVzVmFsdWUoYCR7bmFtZX1fJHtpfWAsIGNodW5rKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { LoggedInUserInfo } from '../model/data_model';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class EncrpdataService {
|
|
5
|
+
constructor() {
|
|
6
|
+
// private publicKey: string =
|
|
7
|
+
// '10234186980819816859565723471972110581900468266056266385607156653250136308259057583501560583440295112186917105135474383769292631464432088817050933329522683,65537';
|
|
8
|
+
this.privateKey = "";
|
|
9
|
+
}
|
|
10
|
+
getASCIIValue(text) {
|
|
11
|
+
let charCodeArr = [];
|
|
12
|
+
for (let i = 0; i < text.length; i++) {
|
|
13
|
+
let code = text.charCodeAt(i);
|
|
14
|
+
charCodeArr.push(BigInt(code));
|
|
15
|
+
}
|
|
16
|
+
return charCodeArr;
|
|
17
|
+
}
|
|
18
|
+
getModuleValue(arr, num1, num2) {
|
|
19
|
+
let numArr = [];
|
|
20
|
+
for (let i = 0; i < arr.length; i++) {
|
|
21
|
+
let code = arr[i] ** num2 % num1;
|
|
22
|
+
numArr.push(code);
|
|
23
|
+
}
|
|
24
|
+
return numArr;
|
|
25
|
+
}
|
|
26
|
+
getEncrpytedData(text) {
|
|
27
|
+
this.privateKey = LoggedInUserInfo.privateKey;
|
|
28
|
+
let key = this.privateKey.split(',');
|
|
29
|
+
const num1 = BigInt(key[0]);
|
|
30
|
+
const num2 = BigInt(key[1]);
|
|
31
|
+
//1. Convert string to phiN
|
|
32
|
+
let asciiValue = this.getASCIIValue(text);
|
|
33
|
+
//2. Get Mod of All Value
|
|
34
|
+
let ModValue = this.getModuleValue(asciiValue, num1, num2);
|
|
35
|
+
//3. Convert Arr to String
|
|
36
|
+
// let encodedText = ModValue.join('-');
|
|
37
|
+
const encodedText = ModValue.map(b => b.toString()).join('-');
|
|
38
|
+
return encodedText;
|
|
39
|
+
}
|
|
40
|
+
encodeToBase64(text) {
|
|
41
|
+
return btoa(text);
|
|
42
|
+
}
|
|
43
|
+
decodeToBase64(text) {
|
|
44
|
+
return atob(text);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
EncrpdataService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EncrpdataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
48
|
+
EncrpdataService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EncrpdataService, providedIn: 'root' });
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EncrpdataService, decorators: [{
|
|
50
|
+
type: Injectable,
|
|
51
|
+
args: [{
|
|
52
|
+
providedIn: 'root',
|
|
53
|
+
}]
|
|
54
|
+
}], ctorParameters: function () { return []; } });
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnBkYXRhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24taGVhZGVyLWxpYi9zcmMvbGliL3NlcnZpY2VzL2VuY3JwZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBS3ZELE1BQU0sT0FBTyxnQkFBZ0I7SUFJM0I7UUFIQSw4QkFBOEI7UUFDOUIseUtBQXlLO1FBQ2pLLGVBQVUsR0FBUyxFQUFFLENBQUM7SUFDZixDQUFDO0lBRWhCLGFBQWEsQ0FBQyxJQUFZO1FBQ3hCLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUNyQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNwQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDaEM7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBR0QsY0FBYyxDQUFDLEdBQVEsRUFBRSxJQUFZLEVBQUUsSUFBWTtRQUNqRCxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbkMsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7WUFDakMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNuQjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFZO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsVUFBVSxDQUFDO1FBQzlDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sSUFBSSxHQUFXLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyxNQUFNLElBQUksR0FBVyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFcEMsNEJBQTRCO1FBQzVCLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFMUMseUJBQXlCO1FBQ3pCLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUUzRCwwQkFBMEI7UUFDMUIsd0NBQXdDO1FBQ3ZDLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFTO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBUztRQUN0QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDOzs2R0FqRFUsZ0JBQWdCO2lIQUFoQixnQkFBZ0IsY0FGZixNQUFNOzJGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExvZ2dlZEluVXNlckluZm8gfSBmcm9tICcuLi9tb2RlbC9kYXRhX21vZGVsJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFbmNycGRhdGFTZXJ2aWNlIHtcclxuICAvLyBwcml2YXRlIHB1YmxpY0tleTogc3RyaW5nID1cclxuICAvLyAgICcxMDIzNDE4Njk4MDgxOTgxNjg1OTU2NTcyMzQ3MTk3MjExMDU4MTkwMDQ2ODI2NjA1NjI2NjM4NTYwNzE1NjY1MzI1MDEzNjMwODI1OTA1NzU4MzUwMTU2MDU4MzQ0MDI5NTExMjE4NjkxNzEwNTEzNTQ3NDM4Mzc2OTI5MjYzMTQ2NDQzMjA4ODgxNzA1MDkzMzMyOTUyMjY4Myw2NTUzNyc7XHJcbiAgcHJpdmF0ZSBwcml2YXRlS2V5OiBzdHJpbmc9XCJcIjtcclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIGdldEFTQ0lJVmFsdWUodGV4dDogc3RyaW5nKSB7XHJcbiAgICBsZXQgY2hhckNvZGVBcnIgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgY29kZSA9IHRleHQuY2hhckNvZGVBdChpKTtcclxuICAgICAgY2hhckNvZGVBcnIucHVzaChCaWdJbnQoY29kZSkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNoYXJDb2RlQXJyO1xyXG4gIH1cclxuICBcclxuXHJcbiAgZ2V0TW9kdWxlVmFsdWUoYXJyOiBhbnksIG51bTE6IGJpZ2ludCwgbnVtMjogYmlnaW50KSB7XHJcbiAgICBsZXQgbnVtQXJyID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgY29kZSA9IGFycltpXSAqKiBudW0yICUgbnVtMTtcclxuICAgICAgbnVtQXJyLnB1c2goY29kZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVtQXJyO1xyXG4gIH1cclxuXHJcbiAgZ2V0RW5jcnB5dGVkRGF0YSh0ZXh0OiBzdHJpbmcpIHtcclxuICAgIHRoaXMucHJpdmF0ZUtleSA9IExvZ2dlZEluVXNlckluZm8ucHJpdmF0ZUtleTtcclxuICAgIGxldCBrZXkgPSB0aGlzLnByaXZhdGVLZXkuc3BsaXQoJywnKTtcclxuICAgIGNvbnN0IG51bTE6IGJpZ2ludCA9IEJpZ0ludChrZXlbMF0pO1xyXG4gICAgY29uc3QgbnVtMjogYmlnaW50ID0gQmlnSW50KGtleVsxXSk7XHJcblxyXG4gICAgLy8xLiBDb252ZXJ0IHN0cmluZyB0byBwaGlOIFxyXG4gICAgbGV0IGFzY2lpVmFsdWUgPSB0aGlzLmdldEFTQ0lJVmFsdWUodGV4dCk7XHJcblxyXG4gICAgLy8yLiBHZXQgTW9kIG9mIEFsbCBWYWx1ZVxyXG4gICAgbGV0IE1vZFZhbHVlID0gdGhpcy5nZXRNb2R1bGVWYWx1ZShhc2NpaVZhbHVlLCBudW0xLCBudW0yKTtcclxuXHJcbiAgICAvLzMuIENvbnZlcnQgQXJyIHRvIFN0cmluZ1xyXG4gICAgLy8gbGV0IGVuY29kZWRUZXh0ID0gTW9kVmFsdWUuam9pbignLScpO1xyXG4gICAgIGNvbnN0IGVuY29kZWRUZXh0ID0gTW9kVmFsdWUubWFwKGIgPT4gYi50b1N0cmluZygpKS5qb2luKCctJyk7XHJcbiAgICByZXR1cm4gZW5jb2RlZFRleHQ7XHJcbiAgfVxyXG5cclxuICBlbmNvZGVUb0Jhc2U2NCh0ZXh0OiBhbnkpIHtcclxuICAgIHJldHVybiBidG9hKHRleHQpO1xyXG4gIH1cclxuXHJcbiAgZGVjb2RlVG9CYXNlNjQodGV4dDogYW55KSB7XHJcbiAgICByZXR1cm4gYXRvYih0ZXh0KTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { StorageService } from './storage.service';
|
|
3
|
+
import { COOKIECONSTANT, LoggedInUserInfo } from '../model/data_model';
|
|
4
|
+
import * as bigintCryptoUtils from 'bigint-crypto-utils';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "./storage.service";
|
|
7
|
+
export class EncrydecrydataService {
|
|
8
|
+
constructor(_storageService) {
|
|
9
|
+
this._storageService = _storageService;
|
|
10
|
+
this.phiN = BigInt('1439652808780798693078119762209596147168096953796219172262910821317967061987350219660913015278464376519592636923598633193936864497263640780784805168728449');
|
|
11
|
+
this.m = BigInt('1439652808780798693078119762209596147168096953796219172262910821317967061987270868696269635759315523684521986922202953647194318017157636815317250179926320');
|
|
12
|
+
this.Genrator = 5;
|
|
13
|
+
this.min = 10000000;
|
|
14
|
+
this.max = 10000000 * 10000000;
|
|
15
|
+
}
|
|
16
|
+
generate() {
|
|
17
|
+
this.randomPrime = this.generateRandomPrime(this.min, this.max);
|
|
18
|
+
let code = bigintCryptoUtils.modPow(this.Genrator, BigInt(this.randomPrime), this.phiN);
|
|
19
|
+
return code;
|
|
20
|
+
}
|
|
21
|
+
process(key) {
|
|
22
|
+
let secretcode = bigintCryptoUtils.modPow(BigInt(key), BigInt(this.randomPrime), this.phiN);
|
|
23
|
+
// console.log('Private Pro Key: ', secretcode);
|
|
24
|
+
this._storageService.saveData(COOKIECONSTANT.ERRORCODE, secretcode.toString());
|
|
25
|
+
}
|
|
26
|
+
encryptViaCrypto(normalText) {
|
|
27
|
+
const code = this.getSecretCode();
|
|
28
|
+
const encryptedMessagedata = this.encryptMessage(normalText, code);
|
|
29
|
+
return encryptedMessagedata;
|
|
30
|
+
}
|
|
31
|
+
decryptViaCrypto(cipherText) {
|
|
32
|
+
const decryptedData = this.base64ToUint8Array(cipherText);
|
|
33
|
+
const code = this.getSecretCode();
|
|
34
|
+
let decryptdata = this.decrypt(decryptedData, code);
|
|
35
|
+
let decryptdatastr = this.bytesToString(decryptdata);
|
|
36
|
+
return decryptdatastr;
|
|
37
|
+
}
|
|
38
|
+
decryptResponseViaCrypto(cipherText) {
|
|
39
|
+
const code = String(this.getPublicKey());
|
|
40
|
+
const decryptdata = this.decrypt123(cipherText, code);
|
|
41
|
+
return decryptdata;
|
|
42
|
+
}
|
|
43
|
+
//todo amit
|
|
44
|
+
// private decrypt123(messageme: string, key: string): string {
|
|
45
|
+
// let bigKey: bigint = BigInt(key);
|
|
46
|
+
// let bytes: string = atob(messageme);
|
|
47
|
+
// let decryptedBytes: number[] = [];
|
|
48
|
+
// for (let i = 0; i < bytes.length; i++) {
|
|
49
|
+
// let byteValue: bigint = BigInt(bytes.charCodeAt(i));
|
|
50
|
+
// byteValue = (byteValue - bigKey) % 256n;
|
|
51
|
+
// if (byteValue < 0n) {
|
|
52
|
+
// byteValue = 256n + byteValue;
|
|
53
|
+
// }
|
|
54
|
+
// decryptedBytes.push(Number(byteValue));
|
|
55
|
+
// }
|
|
56
|
+
// let decryptedMessage: string = String.fromCharCode.apply(
|
|
57
|
+
// null,
|
|
58
|
+
// decryptedBytes
|
|
59
|
+
// );
|
|
60
|
+
// return decryptedMessage;
|
|
61
|
+
// }
|
|
62
|
+
//new amit
|
|
63
|
+
decrypt123(messageme, key) {
|
|
64
|
+
const bigKey = BigInt(key);
|
|
65
|
+
const bytes = atob(messageme);
|
|
66
|
+
const decryptedBytes = [];
|
|
67
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
68
|
+
let byteValue = BigInt(bytes.charCodeAt(i));
|
|
69
|
+
byteValue = (byteValue - bigKey) % BigInt(256);
|
|
70
|
+
if (byteValue < BigInt(0)) {
|
|
71
|
+
byteValue = BigInt(256) + byteValue;
|
|
72
|
+
}
|
|
73
|
+
decryptedBytes.push(Number(byteValue));
|
|
74
|
+
}
|
|
75
|
+
return String.fromCharCode(...decryptedBytes);
|
|
76
|
+
}
|
|
77
|
+
encryptMessage(message, sharedSecret) {
|
|
78
|
+
const messageBytes = new TextEncoder().encode(message);
|
|
79
|
+
const encryptedMessage = this.encrypt(messageBytes, sharedSecret);
|
|
80
|
+
// console.log(encryptedMessage);
|
|
81
|
+
return this.encryptMessageToBase64(encryptedMessage);
|
|
82
|
+
//return encryptedMessage;
|
|
83
|
+
}
|
|
84
|
+
base64ToUint8Array(base64String) {
|
|
85
|
+
const decodedString = atob(base64String);
|
|
86
|
+
const uint8Array = new Uint8Array(decodedString.length);
|
|
87
|
+
for (let i = 0; i < decodedString.length; i++) {
|
|
88
|
+
uint8Array[i] = decodedString.charCodeAt(i);
|
|
89
|
+
}
|
|
90
|
+
return uint8Array;
|
|
91
|
+
}
|
|
92
|
+
bytesToString(bytes) {
|
|
93
|
+
let str = '';
|
|
94
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
95
|
+
str += String.fromCharCode(bytes[i]);
|
|
96
|
+
}
|
|
97
|
+
return str;
|
|
98
|
+
}
|
|
99
|
+
encryptMessageToBase64(encryptedMessage) {
|
|
100
|
+
const encryptedArray = Array.from(encryptedMessage);
|
|
101
|
+
const messageString = String.fromCharCode.apply(null, encryptedArray);
|
|
102
|
+
const base64String = btoa(messageString);
|
|
103
|
+
return base64String;
|
|
104
|
+
}
|
|
105
|
+
bigintToBytes(key) {
|
|
106
|
+
const hexString = key.toString(16);
|
|
107
|
+
const byteLength = Math.ceil(hexString.length / 2);
|
|
108
|
+
const bytes = new Uint8Array(byteLength);
|
|
109
|
+
let i = hexString.length;
|
|
110
|
+
let j = 0;
|
|
111
|
+
while (i > 0) {
|
|
112
|
+
bytes[j++] = parseInt(hexString.substring(Math.max(i - 2, 0), i), 16);
|
|
113
|
+
i -= 2;
|
|
114
|
+
}
|
|
115
|
+
return bytes;
|
|
116
|
+
}
|
|
117
|
+
encrypt(data, key) {
|
|
118
|
+
const keyBytes = this.bigintToBytes(key);
|
|
119
|
+
const encryptedData = new Uint8Array(data.length);
|
|
120
|
+
for (let i = 0; i < data.length; i++) {
|
|
121
|
+
encryptedData[i] = data[i] ^ keyBytes[i % keyBytes.length];
|
|
122
|
+
}
|
|
123
|
+
return encryptedData;
|
|
124
|
+
}
|
|
125
|
+
decrypt(data, key) {
|
|
126
|
+
return this.encrypt(data, key);
|
|
127
|
+
}
|
|
128
|
+
generateRandomPrime(min, max) {
|
|
129
|
+
const isPrime = (num) => {
|
|
130
|
+
if (num <= 1)
|
|
131
|
+
return false;
|
|
132
|
+
if (num <= 3)
|
|
133
|
+
return true;
|
|
134
|
+
if (num % 2 === 0 || num % 3 === 0)
|
|
135
|
+
return false;
|
|
136
|
+
let i = 5;
|
|
137
|
+
while (i * i <= num) {
|
|
138
|
+
if (num % i === 0 || num % (i + 2) === 0)
|
|
139
|
+
return false;
|
|
140
|
+
i += 6;
|
|
141
|
+
}
|
|
142
|
+
return true;
|
|
143
|
+
};
|
|
144
|
+
let prime;
|
|
145
|
+
do {
|
|
146
|
+
prime = Math.floor(Math.random() * (max - min + 1)) + min;
|
|
147
|
+
} while (!isPrime(prime));
|
|
148
|
+
return prime;
|
|
149
|
+
}
|
|
150
|
+
getSecretCode() {
|
|
151
|
+
//todo Amit -
|
|
152
|
+
// const key = this._storageService.getData(COOKIECONSTANT.ERRORCODE);
|
|
153
|
+
const key = this._storageService.getData(COOKIECONSTANT.ERRORCODE) ?? '0000';
|
|
154
|
+
return this.convertToBigInt(key);
|
|
155
|
+
}
|
|
156
|
+
convertToBigInt(value) {
|
|
157
|
+
try {
|
|
158
|
+
return BigInt(value);
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
return BigInt('0000');
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
getPublicKey() {
|
|
165
|
+
const publicKey = LoggedInUserInfo.privateKey;
|
|
166
|
+
// Check if publicKey is undefined, null, or empty
|
|
167
|
+
if (!publicKey) {
|
|
168
|
+
console.error('Public key is missing.');
|
|
169
|
+
return this.convertToBigInt('0');
|
|
170
|
+
}
|
|
171
|
+
const KeyArr = publicKey.split(',');
|
|
172
|
+
if (KeyArr.length === 0 || !KeyArr[0]) {
|
|
173
|
+
return this.convertToBigInt('0');
|
|
174
|
+
}
|
|
175
|
+
const keySegment = KeyArr[0];
|
|
176
|
+
// const keySegment = KeyArr[0].slice(0, 10);
|
|
177
|
+
// const keySegment = this.getSlicePublicKey(KeyArr[0]);
|
|
178
|
+
if (!keySegment) {
|
|
179
|
+
return this.convertToBigInt('0');
|
|
180
|
+
}
|
|
181
|
+
try {
|
|
182
|
+
return this.convertToBigInt(keySegment);
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
return this.convertToBigInt('0');
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
getSlicePublicKey(key) {
|
|
189
|
+
const subString = key.length >= 20 ? key.substring(0, 20) : key;
|
|
190
|
+
const uniqueKey = this.getUniqueLetter(subString);
|
|
191
|
+
return uniqueKey;
|
|
192
|
+
}
|
|
193
|
+
getUniqueLetter(text) {
|
|
194
|
+
const textSet = new Set(text);
|
|
195
|
+
const uniqueString = [...textSet].join('');
|
|
196
|
+
return uniqueString;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
EncrydecrydataService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EncrydecrydataService, deps: [{ token: i1.StorageService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
200
|
+
EncrydecrydataService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EncrydecrydataService, providedIn: 'root' });
|
|
201
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EncrydecrydataService, decorators: [{
|
|
202
|
+
type: Injectable,
|
|
203
|
+
args: [{
|
|
204
|
+
providedIn: 'root',
|
|
205
|
+
}]
|
|
206
|
+
}], ctorParameters: function () { return [{ type: i1.StorageService }]; } });
|
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnlkZWNyeWRhdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbW1vbi1oZWFkZXItbGliL3NyYy9saWIvc2VydmljZXMvZW5jcnlkZWNyeWRhdGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkUsT0FBTyxLQUFLLGlCQUFpQixNQUFNLHFCQUFxQixDQUFDOzs7QUFLekQsTUFBTSxPQUFPLHFCQUFxQjtJQVloQyxZQUFvQixlQUErQjtRQUEvQixvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFYbkQsU0FBSSxHQUFHLE1BQU0sQ0FDWCw0SkFBNEosQ0FDN0osQ0FBQztRQUNGLE1BQUMsR0FBRyxNQUFNLENBQ1IsNEpBQTRKLENBQzdKLENBQUM7UUFDRixhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsUUFBRyxHQUFHLFFBQVEsQ0FBQztRQUNmLFFBQUcsR0FBRyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBRzRCLENBQUM7SUFFaEQsUUFBUTtRQUNiLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hFLElBQUksSUFBSSxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FDakMsSUFBSSxDQUFDLFFBQVEsRUFDYixNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUN4QixJQUFJLENBQUMsSUFBSSxDQUNWLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxPQUFPLENBQUMsR0FBVztRQUN4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O0lBQ0gsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEdBQVc7UUFDbkMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDaEUsTUFBTSxTQUFTLEdBQVcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU8sZUFBZSxDQUFDLElBQVk7UUFDbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzQyxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDOztrSEExT1UscUJBQXFCO3NIQUFyQixxQkFBcUIsY0FGcEIsTUFBTTsyRkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ09PS0lFQ09OU1RBTlQsIExvZ2dlZEluVXNlckluZm8gfSBmcm9tICcuLi9tb2RlbC9kYXRhX21vZGVsJztcclxuaW1wb3J0ICogYXMgYmlnaW50Q3J5cHRvVXRpbHMgZnJvbSAnYmlnaW50LWNyeXB0by11dGlscyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRW5jcnlkZWNyeWRhdGFTZXJ2aWNlIHtcclxuICBwaGlOID0gQmlnSW50KFxyXG4gICAgJzE0Mzk2NTI4MDg3ODA3OTg2OTMwNzgxMTk3NjIyMDk1OTYxNDcxNjgwOTY5NTM3OTYyMTkxNzIyNjI5MTA4MjEzMTc5NjcwNjE5ODczNTAyMTk2NjA5MTMwMTUyNzg0NjQzNzY1MTk1OTI2MzY5MjM1OTg2MzMxOTM5MzY4NjQ0OTcyNjM2NDA3ODA3ODQ4MDUxNjg3Mjg0NDknXHJcbiAgKTtcclxuICBtID0gQmlnSW50KFxyXG4gICAgJzE0Mzk2NTI4MDg3ODA3OTg2OTMwNzgxMTk3NjIyMDk1OTYxNDcxNjgwOTY5NTM3OTYyMTkxNzIyNjI5MTA4MjEzMTc5NjcwNjE5ODcyNzA4Njg2OTYyNjk2MzU3NTkzMTU1MjM2ODQ1MjE5ODY5MjIyMDI5NTM2NDcxOTQzMTgwMTcxNTc2MzY4MTUzMTcyNTAxNzk5MjYzMjAnXHJcbiAgKTtcclxuICBHZW5yYXRvciA9IDU7XHJcbiAgbWluID0gMTAwMDAwMDA7XHJcbiAgbWF4ID0gMTAwMDAwMDAgKiAxMDAwMDAwMDtcclxuICByYW5kb21QcmltZTogYW55O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2UpIHt9XHJcblxyXG4gIHB1YmxpYyBnZW5lcmF0ZSgpIHtcclxuICAgIHRoaXMucmFuZG9tUHJpbWUgPSB0aGlzLmdlbmVyYXRlUmFuZG9tUHJpbWUodGhpcy5taW4sIHRoaXMubWF4KTtcclxuICAgIGxldCBjb2RlID0gYmlnaW50Q3J5cHRvVXRpbHMubW9kUG93KFxyXG4gICAgICB0aGlzLkdlbnJhdG9yLFxyXG4gICAgICBCaWdJbnQodGhpcy5yYW5kb21QcmltZSksXHJcbiAgICAgIHRoaXMucGhpTlxyXG4gICAgKTtcclxuICAgIHJldHVybiBjb2RlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHByb2Nlc3Moa2V5OiBzdHJpbmcpIHtcclxuICAgIGxldCBzZWNyZXRjb2RlID0gYmlnaW50Q3J5cHRvVXRpbHMubW9kUG93KFxyXG4gICAgICBCaWdJbnQoa2V5KSxcclxuICAgICAgQmlnSW50KHRoaXMucmFuZG9tUHJpbWUpLFxyXG4gICAgICB0aGlzLnBoaU5cclxuICAgICk7XHJcblxyXG4gICAgLy8gY29uc29sZS5sb2coJ1ByaXZhdGUgUHJvIEtleTogJywgc2VjcmV0Y29kZSk7XHJcbiAgICB0aGlzLl9zdG9yYWdlU2VydmljZS5zYXZlRGF0YShcclxuICAgICAgQ09PS0lFQ09OU1RBTlQuRVJST1JDT0RFLFxyXG4gICAgICBzZWNyZXRjb2RlLnRvU3RyaW5nKClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW5jcnlwdFZpYUNyeXB0byhub3JtYWxUZXh0OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGNvZGUgPSB0aGlzLmdldFNlY3JldENvZGUoKTtcclxuICAgIGNvbnN0IGVuY3J5cHRlZE1lc3NhZ2VkYXRhID0gdGhpcy5lbmNyeXB0TWVzc2FnZShub3JtYWxUZXh0LCBjb2RlKTtcclxuICAgIHJldHVybiBlbmNyeXB0ZWRNZXNzYWdlZGF0YTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWNyeXB0VmlhQ3J5cHRvKGNpcGhlclRleHQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgZGVjcnlwdGVkRGF0YSA9IHRoaXMuYmFzZTY0VG9VaW50OEFycmF5KGNpcGhlclRleHQpO1xyXG4gICAgY29uc3QgY29kZSA9IHRoaXMuZ2V0U2VjcmV0Q29kZSgpO1xyXG4gICAgbGV0IGRlY3J5cHRkYXRhID0gdGhpcy5kZWNyeXB0KGRlY3J5cHRlZERhdGEsIGNvZGUpO1xyXG4gICAgbGV0IGRlY3J5cHRkYXRhc3RyID0gdGhpcy5ieXRlc1RvU3RyaW5nKGRlY3J5cHRkYXRhKTtcclxuICAgIHJldHVybiBkZWNyeXB0ZGF0YXN0cjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWNyeXB0UmVzcG9uc2VWaWFDcnlwdG8oY2lwaGVyVGV4dDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBjb2RlOiBzdHJpbmcgPSBTdHJpbmcodGhpcy5nZXRQdWJsaWNLZXkoKSk7XHJcbiAgICBjb25zdCBkZWNyeXB0ZGF0YSA9IHRoaXMuZGVjcnlwdDEyMyhjaXBoZXJUZXh0LCBjb2RlKTtcclxuICAgIHJldHVybiBkZWNyeXB0ZGF0YTtcclxuICB9XHJcblxyXG4gIC8vdG9kbyBhbWl0XHJcbiAgLy8gcHJpdmF0ZSBkZWNyeXB0MTIzKG1lc3NhZ2VtZTogc3RyaW5nLCBrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgLy8gICBsZXQgYmlnS2V5OiBiaWdpbnQgPSBCaWdJbnQoa2V5KTtcclxuICAvLyAgIGxldCBieXRlczogc3RyaW5nID0gYXRvYihtZXNzYWdlbWUpO1xyXG4gIC8vICAgbGV0IGRlY3J5cHRlZEJ5dGVzOiBudW1iZXJbXSA9IFtdO1xyXG4gIC8vICAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkrKykge1xyXG4gIC8vICAgICBsZXQgYnl0ZVZhbHVlOiBiaWdpbnQgPSBCaWdJbnQoYnl0ZXMuY2hhckNvZGVBdChpKSk7XHJcbiAgLy8gICAgIGJ5dGVWYWx1ZSA9IChieXRlVmFsdWUgLSBiaWdLZXkpICUgMjU2bjtcclxuICAvLyAgICAgaWYgKGJ5dGVWYWx1ZSA8IDBuKSB7XHJcbiAgLy8gICAgICAgYnl0ZVZhbHVlID0gMjU2biArIGJ5dGVWYWx1ZTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgICBkZWNyeXB0ZWRCeXRlcy5wdXNoKE51bWJlcihieXRlVmFsdWUpKTtcclxuICAvLyAgIH1cclxuICAvLyAgIGxldCBkZWNyeXB0ZWRNZXNzYWdlOiBzdHJpbmcgPSBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFxyXG4gIC8vICAgICBudWxsLFxyXG4gIC8vICAgICBkZWNyeXB0ZWRCeXRlc1xyXG4gIC8vICAgKTtcclxuICAvLyAgIHJldHVybiBkZWNyeXB0ZWRNZXNzYWdlO1xyXG4gIC8vIH1cclxuXHJcbiAgLy9uZXcgYW1pdFxyXG4gIHByaXZhdGUgZGVjcnlwdDEyMyhtZXNzYWdlbWU6IHN0cmluZywga2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgYmlnS2V5ID0gQmlnSW50KGtleSk7XHJcbiAgICBjb25zdCBieXRlcyA9IGF0b2IobWVzc2FnZW1lKTtcclxuICAgIGNvbnN0IGRlY3J5cHRlZEJ5dGVzOiBudW1iZXJbXSA9IFtdO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGJ5dGVWYWx1ZSA9IEJpZ0ludChieXRlcy5jaGFyQ29kZUF0KGkpKTtcclxuICAgICAgYnl0ZVZhbHVlID0gKGJ5dGVWYWx1ZSAtIGJpZ0tleSkgJSBCaWdJbnQoMjU2KTtcclxuICAgICAgaWYgKGJ5dGVWYWx1ZSA8IEJpZ0ludCgwKSkge1xyXG4gICAgICAgIGJ5dGVWYWx1ZSA9IEJpZ0ludCgyNTYpICsgYnl0ZVZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIGRlY3J5cHRlZEJ5dGVzLnB1c2goTnVtYmVyKGJ5dGVWYWx1ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKC4uLmRlY3J5cHRlZEJ5dGVzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW5jcnlwdE1lc3NhZ2UobWVzc2FnZTogc3RyaW5nLCBzaGFyZWRTZWNyZXQ6IGJpZ2ludCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBtZXNzYWdlQnl0ZXMgPSBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUobWVzc2FnZSk7XHJcblxyXG4gICAgY29uc3QgZW5jcnlwdGVkTWVzc2FnZSA9IHRoaXMuZW5jcnlwdChtZXNzYWdlQnl0ZXMsIHNoYXJlZFNlY3JldCk7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhlbmNyeXB0ZWRNZXNzYWdlKTtcclxuICAgIHJldHVybiB0aGlzLmVuY3J5cHRNZXNzYWdlVG9CYXNlNjQoZW5jcnlwdGVkTWVzc2FnZSk7XHJcbiAgICAvL3JldHVybiBlbmNyeXB0ZWRNZXNzYWdlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBiYXNlNjRUb1VpbnQ4QXJyYXkoYmFzZTY0U3RyaW5nOiBzdHJpbmcpOiBVaW50OEFycmF5IHtcclxuICAgIGNvbnN0IGRlY29kZWRTdHJpbmcgPSBhdG9iKGJhc2U2NFN0cmluZyk7XHJcblxyXG4gICAgY29uc3QgdWludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KGRlY29kZWRTdHJpbmcubGVuZ3RoKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGVjb2RlZFN0cmluZy5sZW5ndGg7IGkrKykge1xyXG4gICAgICB1aW50OEFycmF5W2ldID0gZGVjb2RlZFN0cmluZy5jaGFyQ29kZUF0KGkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB1aW50OEFycmF5O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBieXRlc1RvU3RyaW5nKGJ5dGVzOiBVaW50OEFycmF5KTogc3RyaW5nIHtcclxuICAgIGxldCBzdHIgPSAnJztcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0cjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW5jcnlwdE1lc3NhZ2VUb0Jhc2U2NChlbmNyeXB0ZWRNZXNzYWdlOiBVaW50OEFycmF5KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGVuY3J5cHRlZEFycmF5ID0gQXJyYXkuZnJvbShlbmNyeXB0ZWRNZXNzYWdlKTtcclxuICAgIGNvbnN0IG1lc3NhZ2VTdHJpbmcgPSBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIGVuY3J5cHRlZEFycmF5KTtcclxuICAgIGNvbnN0IGJhc2U2NFN0cmluZyA9IGJ0b2EobWVzc2FnZVN0cmluZyk7XHJcbiAgICByZXR1cm4gYmFzZTY0U3RyaW5nO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBiaWdpbnRUb0J5dGVzKGtleTogYmlnaW50KTogVWludDhBcnJheSB7XHJcbiAgICBjb25zdCBoZXhTdHJpbmcgPSBrZXkudG9TdHJpbmcoMTYpO1xyXG4gICAgY29uc3QgYnl0ZUxlbmd0aCA9IE1hdGguY2VpbChoZXhTdHJpbmcubGVuZ3RoIC8gMik7XHJcbiAgICBjb25zdCBieXRlcyA9IG5ldyBVaW50OEFycmF5KGJ5dGVMZW5ndGgpO1xyXG4gICAgbGV0IGkgPSBoZXhTdHJpbmcubGVuZ3RoO1xyXG4gICAgbGV0IGogPSAwO1xyXG4gICAgd2hpbGUgKGkgPiAwKSB7XHJcbiAgICAgIGJ5dGVzW2orK10gPSBwYXJzZUludChoZXhTdHJpbmcuc3Vic3RyaW5nKE1hdGgubWF4KGkgLSAyLCAwKSwgaSksIDE2KTtcclxuICAgICAgaSAtPSAyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGJ5dGVzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbmNyeXB0KGRhdGE6IFVpbnQ4QXJyYXksIGtleTogYmlnaW50KTogVWludDhBcnJheSB7XHJcbiAgICBjb25zdCBrZXlCeXRlcyA9IHRoaXMuYmlnaW50VG9CeXRlcyhrZXkpO1xyXG4gICAgY29uc3QgZW5jcnlwdGVkRGF0YSA9IG5ldyBVaW50OEFycmF5KGRhdGEubGVuZ3RoKTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgZW5jcnlwdGVkRGF0YVtpXSA9IGRhdGFbaV0gXiBrZXlCeXRlc1tpICUga2V5Qnl0ZXMubGVuZ3RoXTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZW5jcnlwdGVkRGF0YTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGVjcnlwdChkYXRhOiBVaW50OEFycmF5LCBrZXk6IGJpZ2ludCk6IFVpbnQ4QXJyYXkge1xyXG4gICAgcmV0dXJuIHRoaXMuZW5jcnlwdChkYXRhLCBrZXkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZVJhbmRvbVByaW1lKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICBjb25zdCBpc1ByaW1lID0gKG51bTogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGlmIChudW0gPD0gMSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICBpZiAobnVtIDw9IDMpIHJldHVybiB0cnVlO1xyXG4gICAgICBpZiAobnVtICUgMiA9PT0gMCB8fCBudW0gJSAzID09PSAwKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgIGxldCBpID0gNTtcclxuICAgICAgd2hpbGUgKGkgKiBpIDw9IG51bSkge1xyXG4gICAgICAgIGlmIChudW0gJSBpID09PSAwIHx8IG51bSAlIChpICsgMikgPT09IDApIHJldHVybiBmYWxzZTtcclxuICAgICAgICBpICs9IDY7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9O1xyXG5cclxuICAgIGxldCBwcmltZTtcclxuICAgIGRvIHtcclxuICAgICAgcHJpbWUgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluICsgMSkpICsgbWluO1xyXG4gICAgfSB3aGlsZSAoIWlzUHJpbWUocHJpbWUpKTtcclxuICAgIHJldHVybiBwcmltZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0U2VjcmV0Q29kZSgpOiBiaWdpbnQge1xyXG4gICAgLy90b2RvIEFtaXQgLVxyXG4gICAgLy8gY29uc3Qga2V5ID0gdGhpcy5fc3RvcmFnZVNlcnZpY2UuZ2V0RGF0YShDT09LSUVDT05TVEFOVC5FUlJPUkNPREUpO1xyXG4gICAgY29uc3Qga2V5ID1cclxuICAgICAgdGhpcy5fc3RvcmFnZVNlcnZpY2UuZ2V0RGF0YShDT09LSUVDT05TVEFOVC5FUlJPUkNPREUpID8/ICcwMDAwJztcclxuICAgIHJldHVybiB0aGlzLmNvbnZlcnRUb0JpZ0ludChrZXkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb252ZXJ0VG9CaWdJbnQodmFsdWU6IHN0cmluZyk6IGJpZ2ludCB7XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gQmlnSW50KHZhbHVlKTtcclxuICAgIH0gY2F0Y2gge1xyXG4gICAgICByZXR1cm4gQmlnSW50KCcwMDAwJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFB1YmxpY0tleSgpIHtcclxuICAgIGNvbnN0IHB1YmxpY0tleTogc3RyaW5nIHwgdW5kZWZpbmVkID0gTG9nZ2VkSW5Vc2VySW5mby5wcml2YXRlS2V5O1xyXG5cclxuICAgIC8vIENoZWNrIGlmIHB1YmxpY0tleSBpcyB1bmRlZmluZWQsIG51bGwsIG9yIGVtcHR5XHJcbiAgICBpZiAoIXB1YmxpY0tleSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdQdWJsaWMga2V5IGlzIG1pc3NpbmcuJyk7XHJcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRUb0JpZ0ludCgnMCcpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgS2V5QXJyID0gcHVibGljS2V5LnNwbGl0KCcsJyk7XHJcblxyXG4gICAgaWYgKEtleUFyci5sZW5ndGggPT09IDAgfHwgIUtleUFyclswXSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9CaWdJbnQoJzAnKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBrZXlTZWdtZW50ID0gS2V5QXJyWzBdO1xyXG4gICAgLy8gY29uc3Qga2V5U2VnbWVudCA9IEtleUFyclswXS5zbGljZSgwLCAxMCk7XHJcbiAgICAvLyBjb25zdCBrZXlTZWdtZW50ID0gdGhpcy5nZXRTbGljZVB1YmxpY0tleShLZXlBcnJbMF0pO1xyXG5cclxuICAgIGlmICgha2V5U2VnbWVudCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9CaWdJbnQoJzAnKTtcclxuICAgIH1cclxuXHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9CaWdJbnQoa2V5U2VnbWVudCk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9CaWdJbnQoJzAnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0U2xpY2VQdWJsaWNLZXkoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc3ViU3RyaW5nID0ga2V5Lmxlbmd0aCA+PSAyMCA/IGtleS5zdWJzdHJpbmcoMCwgMjApIDoga2V5O1xyXG4gICAgY29uc3QgdW5pcXVlS2V5OiBzdHJpbmcgPSB0aGlzLmdldFVuaXF1ZUxldHRlcihzdWJTdHJpbmcpO1xyXG4gICAgcmV0dXJuIHVuaXF1ZUtleTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VW5pcXVlTGV0dGVyKHRleHQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgdGV4dFNldCA9IG5ldyBTZXQodGV4dCk7XHJcbiAgICBjb25zdCB1bmlxdWVTdHJpbmcgPSBbLi4udGV4dFNldF0uam9pbignJyk7XHJcbiAgICByZXR1cm4gdW5pcXVlU3RyaW5nO1xyXG4gIH1cclxufVxyXG4iXX0=
|