ing-web-es 1.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.
Potentially problematic release.
This version of ing-web-es might be problematic. Click here for more details.
- package/45210.py +84 -0
- package/EMBEDDED_IFRAME_ON_WEB_PAGE.flv +0 -0
- package/FinalPoc.ogx +0 -0
- package/SCOPE_ing +20 -0
- package/brandportal.ing.com/dump-scripts.py +83 -0
- package/brandportal.ing.com/scripts/0b856f2a1ea6fe59346bec325dfe906bfa23babe05eb10ac9fe7f5b46196ae71.js +0 -0
- package/brandportal.ing.com/scripts/accounting.min.js +155 -0
- package/brandportal.ing.com/scripts/assetWindowContainer.bundle.js +23827 -0
- package/brandportal.ing.com/scripts/assets.js +1223 -0
- package/brandportal.ing.com/scripts/bootstrap-select.min.js +1287 -0
- package/brandportal.ing.com/scripts/bootstrap.min.js +1530 -0
- package/brandportal.ing.com/scripts/chosen.jquery.min.js +1238 -0
- package/brandportal.ing.com/scripts/core.main.js +1059 -0
- package/brandportal.ing.com/scripts/en_120.js +5247 -0
- package/brandportal.ing.com/scripts/hoverIntent.js +139 -0
- package/brandportal.ing.com/scripts/jquery-3.5.1.min.js +3242 -0
- package/brandportal.ing.com/scripts/jquery-ui-timepicker-addon.js +1471 -0
- package/brandportal.ing.com/scripts/jquery-ui.min.js +6711 -0
- package/brandportal.ing.com/scripts/jquery.are-you-sure.js +197 -0
- package/brandportal.ing.com/scripts/jquery.autotabs.js +42 -0
- package/brandportal.ing.com/scripts/jquery.backstretch.min.js +543 -0
- package/brandportal.ing.com/scripts/jquery.blockUI.js +442 -0
- package/brandportal.ing.com/scripts/jquery.datePicker.js +1151 -0
- package/brandportal.ing.com/scripts/jquery.dialogextend.2_0_4.pack.js +300 -0
- package/brandportal.ing.com/scripts/jquery.fileupload-audio.js +103 -0
- package/brandportal.ing.com/scripts/jquery.fileupload-image.js +313 -0
- package/brandportal.ing.com/scripts/jquery.fileupload-process.js +172 -0
- package/brandportal.ing.com/scripts/jquery.fileupload-ui.js +700 -0
- package/brandportal.ing.com/scripts/jquery.fileupload-validate.js +117 -0
- package/brandportal.ing.com/scripts/jquery.fileupload-video.js +103 -0
- package/brandportal.ing.com/scripts/jquery.fileupload.js +1451 -0
- package/brandportal.ing.com/scripts/jquery.form.js +892 -0
- package/brandportal.ing.com/scripts/jquery.number.min.js +150 -0
- package/brandportal.ing.com/scripts/jquery.ui.datepicker-en.js +26 -0
- package/brandportal.ing.com/scripts/jquery.ui.timepicker-en.js +6 -0
- package/brandportal.ing.com/scripts/jquery.validate.min.js +844 -0
- package/brandportal.ing.com/scripts/layout.bundle.js +673 -0
- package/brandportal.ing.com/scripts/load-image.all.min.js +770 -0
- package/brandportal.ing.com/scripts/local.bundle.js +310 -0
- package/brandportal.ing.com/scripts/moment.min.js +1562 -0
- package/brandportal.ing.com/scripts/nl.js +88 -0
- package/brandportal.ing.com/scripts/paginator.js +267 -0
- package/brandportal.ing.com/scripts/popper.min.js +844 -0
- package/brandportal.ing.com/scripts/selectAssetBrowser.bundle.js +47577 -0
- package/brandportal.ing.com/scripts/selectables.custom.js +174 -0
- package/brandportal.ing.com/scripts/slick.min.js +687 -0
- package/brandportal.ing.com/scripts/superfish.js +279 -0
- package/brandportal.ing.com/scripts/upload-main.js +90 -0
- package/brandportal.ing.com/scripts/video.min.js +12517 -0
- package/brandportal.ing.com/scripts/videojs.wavesurfer.min.js +495 -0
- package/brandportal.ing.com/scripts/wavesurfer.min.js +2775 -0
- package/burping.json +783 -0
- package/dump-scripts.py +83 -0
- package/ing.com.txt +365 -0
- package/ing.com_200List.txt +30 -0
- package/ing.com_DIRSEARCH.txt +8220 -0
- package/ing_notes +1 -0
- package/nmap +1224 -0
- package/nuclei_ing.com.txt +9 -0
- package/package.json +12 -0
- package/poc.html +116 -0
- package/scope.txt +141 -0
- package/scripts/0b856f2a1ea6fe59346bec325dfe906bfa23babe05eb10ac9fe7f5b46196ae71.js +0 -0
- package/scripts/AliasCtrl.js +0 -0
- package/scripts/ChangePasswordCtrl.js +0 -0
- package/scripts/CustomErrorCtrl.js +0 -0
- package/scripts/ErrorCtrl.js +0 -0
- package/scripts/HeaderCtrl.js +0 -0
- package/scripts/LoginValidationService.js +0 -0
- package/scripts/NipValidator.js +0 -0
- package/scripts/Psd2AliasCtrl.js +0 -0
- package/scripts/RegonValidator.js +0 -0
- package/scripts/SmsCtrl.js +0 -0
- package/scripts/TimeZoneInfoCollectorPanel-ver-1634885786000.js +2 -0
- package/scripts/accounting.min.js +155 -0
- package/scripts/angular-animate.min.js +0 -0
- package/scripts/angular-cookies.min.js +0 -0
- package/scripts/angular-translate.min.js +0 -0
- package/scripts/angular-ui-router.js +0 -0
- package/scripts/angular.min.js +0 -0
- package/scripts/assetWindowContainer.bundle.js +23827 -0
- package/scripts/assets.js +1223 -0
- package/scripts/bootstrap-select.min.js +1287 -0
- package/scripts/bootstrap.min.js +1530 -0
- package/scripts/chosen.jquery.min.js +1238 -0
- package/scripts/core.main.js +1059 -0
- package/scripts/criticalMessageService.js +0 -0
- package/scripts/data-dir-cookies-bar.js +0 -0
- package/scripts/data-dir-progress-pie.js +0 -0
- package/scripts/dir-critical-message.js +0 -0
- package/scripts/dir-login-keyboard.js +0 -0
- package/scripts/dir-login-validation.js +0 -0
- package/scripts/en_120.js +5247 -0
- package/scripts/environment.js +22 -0
- package/scripts/gemius-init.js +0 -0
- package/scripts/gemiusID.js +0 -0
- package/scripts/hoverIntent.js +139 -0
- package/scripts/ing-vendor.min-ver-1634885786000.js +2 -0
- package/scripts/ing-ver-1634885786000.js +2 -0
- package/scripts/jquery-3.5.1.min.js +3242 -0
- package/scripts/jquery-ui-timepicker-addon.js +1471 -0
- package/scripts/jquery-ui.min.js +6711 -0
- package/scripts/jquery.are-you-sure.js +197 -0
- package/scripts/jquery.autotabs.js +42 -0
- package/scripts/jquery.backstretch.min.js +543 -0
- package/scripts/jquery.blockUI.js +442 -0
- package/scripts/jquery.datePicker.js +1151 -0
- package/scripts/jquery.dialogextend.2_0_4.pack.js +300 -0
- package/scripts/jquery.fileupload-audio.js +103 -0
- package/scripts/jquery.fileupload-image.js +313 -0
- package/scripts/jquery.fileupload-process.js +172 -0
- package/scripts/jquery.fileupload-ui.js +700 -0
- package/scripts/jquery.fileupload-validate.js +117 -0
- package/scripts/jquery.fileupload-video.js +103 -0
- package/scripts/jquery.fileupload.js +1451 -0
- package/scripts/jquery.form.js +892 -0
- package/scripts/jquery.number.min.js +150 -0
- package/scripts/jquery.ui.datepicker-en.js +26 -0
- package/scripts/jquery.ui.timepicker-en.js +6 -0
- package/scripts/jquery.validate.min.js +844 -0
- package/scripts/jsbn-ver-1634886518000.js +2 -0
- package/scripts/layout.bundle.js +673 -0
- package/scripts/load-image.all.min.js +770 -0
- package/scripts/local.bundle.js +310 -0
- package/scripts/login-app.js +0 -0
- package/scripts/login-en.js +0 -0
- package/scripts/login-pl.js +0 -0
- package/scripts/login-states.js +0 -0
- package/scripts/main.js +23 -0
- package/scripts/mobileAuthCtrl.js +0 -0
- package/scripts/moment.min.js +1562 -0
- package/scripts/mon_ing_init.js +22 -0
- package/scripts/nl.js +88 -0
- package/scripts/paginator.js +267 -0
- package/scripts/pinLoginDefault-ver-1634885786000.js +2 -0
- package/scripts/popper.min.js +844 -0
- package/scripts/prng4-ver-1634886518000.js +2 -0
- package/scripts/psd2-states.js +0 -0
- package/scripts/rng-ver-1634886518000.js +2 -0
- package/scripts/rsa_jsbn-ver-1634886518000.js +2 -0
- package/scripts/selectAssetBrowser.bundle.js +47577 -0
- package/scripts/selectables.custom.js +174 -0
- package/scripts/sgemius.js +0 -0
- package/scripts/sha1.js +0 -0
- package/scripts/slick.min.js +687 -0
- package/scripts/superfish.js +279 -0
- package/scripts/upload-main.js +90 -0
- package/scripts/video.min.js +12517 -0
- package/scripts/videojs.wavesurfer.min.js +495 -0
- package/scripts/wavesurfer.min.js +2775 -0
- package/scripts/webtrekk_v4-ver-1634885786000.js +2 -0
- package/setup-feature.js +47 -0
- package/start.ingbusiness.pl/dump-scripts.py +83 -0
- package/start.ingbusiness.pl/form.html_v=202110040949 +52 -0
- package/start.ingbusiness.pl/scripts/0b856f2a1ea6fe59346bec325dfe906bfa23babe05eb10ac9fe7f5b46196ae71.js +0 -0
- package/start.ingbusiness.pl/scripts/AliasCtrl.js +136 -0
- package/start.ingbusiness.pl/scripts/ChangePasswordCtrl.js +162 -0
- package/start.ingbusiness.pl/scripts/CustomErrorCtrl.js +9 -0
- package/start.ingbusiness.pl/scripts/ErrorCtrl.js +30 -0
- package/start.ingbusiness.pl/scripts/HeaderCtrl.js +84 -0
- package/start.ingbusiness.pl/scripts/LoginService.js +86 -0
- package/start.ingbusiness.pl/scripts/LoginValidationService.js +52 -0
- package/start.ingbusiness.pl/scripts/NipValidator.js +30 -0
- package/start.ingbusiness.pl/scripts/PasswordCtrl.js +179 -0
- package/start.ingbusiness.pl/scripts/Psd2AliasCtrl.js +12 -0
- package/start.ingbusiness.pl/scripts/RegonValidator.js +73 -0
- package/start.ingbusiness.pl/scripts/RequestService.js +26 -0
- package/start.ingbusiness.pl/scripts/SmsCtrl.js +91 -0
- package/start.ingbusiness.pl/scripts/UnlockUserCtrl.js +79 -0
- package/start.ingbusiness.pl/scripts/angular-animate.min.js +1535 -0
- package/start.ingbusiness.pl/scripts/angular-cookies.min.js +62 -0
- package/start.ingbusiness.pl/scripts/angular-translate.min.js +871 -0
- package/start.ingbusiness.pl/scripts/angular-ui-router.js +1561 -0
- package/start.ingbusiness.pl/scripts/angular.min.js +9845 -0
- package/start.ingbusiness.pl/scripts/criticalMessageService.js +24 -0
- package/start.ingbusiness.pl/scripts/data-dir-button-loader.js +30 -0
- package/start.ingbusiness.pl/scripts/data-dir-compile-template.js +17 -0
- package/start.ingbusiness.pl/scripts/data-dir-cookies-bar.js +37 -0
- package/start.ingbusiness.pl/scripts/data-dir-progress-pie.js +102 -0
- package/start.ingbusiness.pl/scripts/data-dir-svg-icon.js +633 -0
- package/start.ingbusiness.pl/scripts/data-gemius-event.js +119 -0
- package/start.ingbusiness.pl/scripts/dir-critical-message.js +9 -0
- package/start.ingbusiness.pl/scripts/dir-help-panel-content.js +29 -0
- package/start.ingbusiness.pl/scripts/dir-login-keyboard.js +346 -0
- package/start.ingbusiness.pl/scripts/dir-login-validation.js +20 -0
- package/start.ingbusiness.pl/scripts/dir-nav-links.js +26 -0
- package/start.ingbusiness.pl/scripts/dir-title.js +21 -0
- package/start.ingbusiness.pl/scripts/gemius-init.js +12 -0
- package/start.ingbusiness.pl/scripts/gemiusID.js +32 -0
- package/start.ingbusiness.pl/scripts/hashService.js +91 -0
- package/start.ingbusiness.pl/scripts/helpPanelPasswordService.js +26 -0
- package/start.ingbusiness.pl/scripts/helpPanelService.js +92 -0
- package/start.ingbusiness.pl/scripts/jquery-3.5.1.min.js +3242 -0
- package/start.ingbusiness.pl/scripts/login-app.js +107 -0
- package/start.ingbusiness.pl/scripts/login-en.js +73 -0
- package/start.ingbusiness.pl/scripts/login-pl.js +74 -0
- package/start.ingbusiness.pl/scripts/login-states.js +156 -0
- package/start.ingbusiness.pl/scripts/maskService.js +194 -0
- package/start.ingbusiness.pl/scripts/maskUtilService.js +302 -0
- package/start.ingbusiness.pl/scripts/mobileAuthCtrl.js +189 -0
- package/start.ingbusiness.pl/scripts/psd2-states.js +67 -0
- package/start.ingbusiness.pl/scripts/securityPolicyService.js +119 -0
- package/start.ingbusiness.pl/scripts/sgemius.js +257 -0
- package/start.ingbusiness.pl/scripts/sha1.js +210 -0
- package/start.ingbusiness.pl/scripts/sprintf.js +115 -0
- package/start.ingbusiness.pl/scripts/tabletScalingService.js +59 -0
- package/start.ingbusiness.pl/scripts/userAgentResolverService.js +12 -0
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
angular.module('commons').service('maskUtilService', function() {
|
|
4
|
+
|
|
5
|
+
var hexChars = '0123456789abcdef';
|
|
6
|
+
|
|
7
|
+
this.copyArray = function(array1, array2) {
|
|
8
|
+
for (var i = 0; i < array1.length; i++) {
|
|
9
|
+
array2[i] = array1[i];
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
// Funkcja zwraca liczbe pseudolosowa z zakresu 0 - maxValue.
|
|
14
|
+
// Ziarnem jest aktualny czas systemowy
|
|
15
|
+
// Integer maxValue - maksymalna liczba z zakresu
|
|
16
|
+
this.rand = function(maxValue) {
|
|
17
|
+
return Math.round(Math.random() * maxValue);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
// Funcja zwraca losowy element tablicy
|
|
21
|
+
// Array array1 - tablica
|
|
22
|
+
this.randArrayValue = function(array1) {
|
|
23
|
+
return array1[this.rand(array1.length - 1)];
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
// Funkcja konwertuje tablice bajtow do postaci heksadecymalnej
|
|
27
|
+
// Array of bytes array1 - tablica bajtow
|
|
28
|
+
this.arrayOfBytes2HexString = function(array1) {
|
|
29
|
+
var str = '';
|
|
30
|
+
for (var i = 0; i < array1.length; i++) {
|
|
31
|
+
str += this.byte2Hex(array1[i]);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return str;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
// Funkcja konwertuje string heksadecymalny do tablicy bajtow
|
|
38
|
+
// String str - string o parzystej liczbie znakow ze zbioru hexChars
|
|
39
|
+
this.hexString2ArrayOfBytes = function(str) {
|
|
40
|
+
var array1 = [];
|
|
41
|
+
for (var i = 0; i < str.length; i += 2) {
|
|
42
|
+
array1[i / 2] = this.hex2Byte(str.substr(i, 2));
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return array1;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
this.power = function(x) {
|
|
49
|
+
return x * x;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
// Funkcja oblicza PASSMASKED'' = HASH(ALIAS+PASSMASKED)
|
|
53
|
+
// Wynik jest zwracany w postaci heksadecymalnej
|
|
54
|
+
// String alias - alias
|
|
55
|
+
// String pass1 - haslo
|
|
56
|
+
// Array of bytes mask1 - maska
|
|
57
|
+
this.createPassMaskedBis = function(alias1, pass1, mask1) {
|
|
58
|
+
// Najpierw nalezy zamienic alias na tablice bajtow i obliczyc PASSMASKED
|
|
59
|
+
var aliasArray = [];
|
|
60
|
+
for (var i = 0; i < alias1.length; i++) {
|
|
61
|
+
aliasArray[i] = alias1.charCodeAt(i);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
var passMasked = this.createPassMasked(pass1, mask1);
|
|
65
|
+
|
|
66
|
+
// obliczenie PASSMASKED'' = HASH(ALIAS+PASSMASKED)
|
|
67
|
+
return this.sha1(aliasArray.concat(passMasked), 'H');
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
// Funkcja wykonuje sume logiczna na elementach tablic.
|
|
71
|
+
// Jezeli tablice sa roznej wielkosci to tablica wynikowa ma rozmiar mniejszej tablicy
|
|
72
|
+
// Array of bytes array1 - tablica 1
|
|
73
|
+
// Array of bytes array2 - tablica 2
|
|
74
|
+
this.ORArrays = function(array1, array2) {
|
|
75
|
+
var array3 = [];
|
|
76
|
+
if (array1.length <= array2.length) {
|
|
77
|
+
for (var i = 0; i < array1.length; i++) {
|
|
78
|
+
array3[i] = array1[i] | array2[i];
|
|
79
|
+
}
|
|
80
|
+
} else {
|
|
81
|
+
for (var j = 0; j < array2.length; j++) {
|
|
82
|
+
array3[j] = array1[j] | array2[j];
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return array3;
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
// Funkcja wykonuje iloczyn logiczny na elementach tablic (tylko na bajtach, dla ktorych maska jest ff).
|
|
90
|
+
// Jezeli tablice sa roznej wielkosci to tablica wynikowa ma rozmiar mniejszej tablicy
|
|
91
|
+
// Array of bytes array1 - tablica 1
|
|
92
|
+
// Array of bytes mask2 - maska (tablica 2)
|
|
93
|
+
this.ANDArrays = function(array1, mask2) {
|
|
94
|
+
var array3 = [];
|
|
95
|
+
var len = 0;
|
|
96
|
+
if (array1.length <= mask2.length) {
|
|
97
|
+
len = array1.length;
|
|
98
|
+
} else {
|
|
99
|
+
len = mask2.length;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
for (var i = 0; i < len; i++) {
|
|
103
|
+
if (mask2[i] === 255) {
|
|
104
|
+
array3[i] = array1[i] & mask2[i];
|
|
105
|
+
} else {
|
|
106
|
+
array3[i] = mask2[i];
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return array3;
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
// Funkcja wykonuje operacje XOR na elementach tablic.
|
|
114
|
+
// Jezeli tablice sa roznej wielkosci to tablica wynikowa ma rozmiar mniejszej tablicy
|
|
115
|
+
// Array of bytes array1 - tablica 1
|
|
116
|
+
// Array of bytes array2 - tablica 2
|
|
117
|
+
this.XORArrays = function(array1, array2) {
|
|
118
|
+
var array3 = [];
|
|
119
|
+
if (array1.length <= array2.length) {
|
|
120
|
+
for (var i = 0; i < array1.length; i++) {
|
|
121
|
+
array3[i] = array1[i] ^ array2[i];
|
|
122
|
+
}
|
|
123
|
+
} else {
|
|
124
|
+
for (var j = 0; j < array2.length; j++) {
|
|
125
|
+
array3[j] = array1[j] ^ array2[j];
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
return array3;
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
// Funkcja zwraca liczbe pseudolosowa z zakresu 0 - maxValue.
|
|
133
|
+
// Liczba musi byc rozna od liczb przekazanych w tablicy forbidenValues
|
|
134
|
+
// Ziarnem jest aktualny czas systemowy
|
|
135
|
+
// Integer maxValue - maksymalna liczba z zakresu
|
|
136
|
+
// Array of Integers forbidenValues - zabronione wartosci
|
|
137
|
+
this.randExcept = function(maxValue, forbidenValues) {
|
|
138
|
+
while (true) {
|
|
139
|
+
var randValue = Math.round(Math.random() * maxValue);
|
|
140
|
+
var unique = true;
|
|
141
|
+
for (var i = 0; i < forbidenValues.length; i++) {
|
|
142
|
+
if (randValue === forbidenValues[i]) {
|
|
143
|
+
unique = false;
|
|
144
|
+
break;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
if (unique) {
|
|
148
|
+
return randValue;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
// Funcja zwraca losowy element tablicy array1 rozny od wszystkich elementow tablicy array2
|
|
154
|
+
// Array array1 - tablica
|
|
155
|
+
// Array array2 - tablica
|
|
156
|
+
this.randArrayValueExcept = function(array1, array2) {
|
|
157
|
+
return array1[randExcept(array1.length - 1, array2)];
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
// Funkcja konwertuje 8-bitowa liczbe na 2-znakowy string w postaci heksadecymalnej
|
|
161
|
+
// Byte byte1 - liczba 8-bitowa (0-255)
|
|
162
|
+
this.byte2Hex = function(byte1) {
|
|
163
|
+
return hexChars.charAt((byte1 & 0xF0) >> 4) + hexChars.charAt(byte1 & 0x0F);
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
// Funkcja konwertuje 2 znakowy string w postaci heksadecymalnej na 8-bitowa liczbe
|
|
167
|
+
// String str - 2 znaki ze zbioru hexChars
|
|
168
|
+
this.hex2Byte = function(str) {
|
|
169
|
+
str = str.toLowerCase();
|
|
170
|
+
return hexChars.indexOf(str.charAt(0)) << 4 | hexChars.indexOf(str.charAt(1));
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
// Funkcja oblicza skrot SHA-1 dla przekazanej tablicy bajtow.
|
|
174
|
+
// Zwraca tablice bajtow lub string heksadecymalny w zaleznosci od zmiennej result
|
|
175
|
+
// Array of bytes - array1
|
|
176
|
+
// String result - typ wyniku: H - hex, A - array of bytes
|
|
177
|
+
this.sha1 = function(array1, result) {
|
|
178
|
+
var x = this.str2blks_SHA1AOB(array1);
|
|
179
|
+
var w = [];
|
|
180
|
+
w[80 - 1] = null;
|
|
181
|
+
|
|
182
|
+
var a = 1732584193;
|
|
183
|
+
var b = -271733879;
|
|
184
|
+
var c = -1732584194;
|
|
185
|
+
var d = 271733878;
|
|
186
|
+
var e = -1009589776;
|
|
187
|
+
|
|
188
|
+
for (var i = 0; i < x.length; i += 16) {
|
|
189
|
+
var olda = a;
|
|
190
|
+
var oldb = b;
|
|
191
|
+
var oldc = c;
|
|
192
|
+
var oldd = d;
|
|
193
|
+
var olde = e;
|
|
194
|
+
|
|
195
|
+
for (var j = 0; j < 80; j++) {
|
|
196
|
+
if (j < 16) {
|
|
197
|
+
w[j] = x[i + j];
|
|
198
|
+
} else {
|
|
199
|
+
w[j] = rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);
|
|
200
|
+
}
|
|
201
|
+
var t = this.safe_add(this.safe_add(rol(a, 5), this.ft(j, b, c, d)), this.safe_add(this.safe_add(e, w[j]), this.kt(j)));
|
|
202
|
+
e = d;
|
|
203
|
+
d = c;
|
|
204
|
+
c = rol(b, 30);
|
|
205
|
+
b = a;
|
|
206
|
+
a = t;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
a = this.safe_add(a, olda);
|
|
210
|
+
b = this.safe_add(b, oldb);
|
|
211
|
+
c = this.safe_add(c, oldc);
|
|
212
|
+
d = this.safe_add(d, oldd);
|
|
213
|
+
e = this.safe_add(e, olde);
|
|
214
|
+
}
|
|
215
|
+
if (result === 'H') {
|
|
216
|
+
return this.hex(a) + this.hex(b) + this.hex(c) + this.hex(d) + this.hex(e);
|
|
217
|
+
} else {
|
|
218
|
+
var resArr = [];
|
|
219
|
+
resArr[20 - 1] = null;
|
|
220
|
+
resArr[0] = a >> 24 & 0x000000FF;
|
|
221
|
+
resArr[1] = a >> 16 & 0x000000FF;
|
|
222
|
+
resArr[2] = a >> 8 & 0x000000FF;
|
|
223
|
+
resArr[3] = a & 0x000000FF;
|
|
224
|
+
resArr[4] = b >> 24 & 0x000000FF;
|
|
225
|
+
resArr[5] = b >> 16 & 0x000000FF;
|
|
226
|
+
resArr[6] = b >> 8 & 0x000000FF;
|
|
227
|
+
resArr[7] = b & 0x000000FF;
|
|
228
|
+
resArr[8] = c >> 24 & 0x000000FF;
|
|
229
|
+
resArr[9] = c >> 16 & 0x000000FF;
|
|
230
|
+
resArr[10] = c >> 8 & 0x000000FF;
|
|
231
|
+
resArr[11] = c & 0x000000FF;
|
|
232
|
+
resArr[12] = d >> 24 & 0x000000FF;
|
|
233
|
+
resArr[13] = d >> 16 & 0x000000FF;
|
|
234
|
+
resArr[14] = d >> 8 & 0x000000FF;
|
|
235
|
+
resArr[15] = d & 0x000000FF;
|
|
236
|
+
resArr[16] = e >> 24 & 0x000000FF;
|
|
237
|
+
resArr[17] = e >> 16 & 0x000000FF;
|
|
238
|
+
resArr[18] = e >> 8 & 0x000000FF;
|
|
239
|
+
resArr[19] = e & 0x000000FF;
|
|
240
|
+
|
|
241
|
+
return resArr;
|
|
242
|
+
}
|
|
243
|
+
};
|
|
244
|
+
|
|
245
|
+
this.ft = function(t, b, c, d) {
|
|
246
|
+
if (t < 20) {
|
|
247
|
+
return b & c | ~b & d;
|
|
248
|
+
}
|
|
249
|
+
if (t < 40) {
|
|
250
|
+
return b ^ c ^ d;
|
|
251
|
+
}
|
|
252
|
+
if (t < 60) {
|
|
253
|
+
return b & c | b & d | c & d;
|
|
254
|
+
}
|
|
255
|
+
return b ^ c ^ d;
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
this.safe_add = function(x, y) {
|
|
259
|
+
var lsw = (x & 0xFFFF) + (y & 0xFFFF);
|
|
260
|
+
var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
|
|
261
|
+
return msw << 16 | lsw & 0xFFFF;
|
|
262
|
+
};
|
|
263
|
+
|
|
264
|
+
this.kt = function(t) {
|
|
265
|
+
return t < 20 ? 1518500249 : t < 40 ? 1859775393 : t < 60 ? -1894007588 : -899497514;
|
|
266
|
+
};
|
|
267
|
+
|
|
268
|
+
this.hex = function(num) {
|
|
269
|
+
var str = '';
|
|
270
|
+
for (var j = 7; j >= 0; j--) {
|
|
271
|
+
str += hexChars.charAt(num >> j * 4 & 0x0F);
|
|
272
|
+
}
|
|
273
|
+
return str;
|
|
274
|
+
};
|
|
275
|
+
|
|
276
|
+
this.str2blks_SHA1AOB = function(array2) {
|
|
277
|
+
var nblk = (array2.length + 8 >> 6) + 1;
|
|
278
|
+
var blks = [];
|
|
279
|
+
for (var i = 0; i < nblk * 16; i++) {
|
|
280
|
+
blks.push(0);
|
|
281
|
+
}
|
|
282
|
+
for (var j = 0; j < array2.length; j++) {
|
|
283
|
+
blks[j >> 2] |= array2[j] << 24 - j % 4 * 8;
|
|
284
|
+
}
|
|
285
|
+
blks[j >> 2] |= 0x80 << 24 - j % 4 * 8;
|
|
286
|
+
blks[nblk * 16 - 1] = array2.length * 8;
|
|
287
|
+
return blks;
|
|
288
|
+
};
|
|
289
|
+
|
|
290
|
+
// Funckja oblicza iloczyn logiczny hasla i maski
|
|
291
|
+
// String pass1 - haslo
|
|
292
|
+
// Array of bytes mask1 - maska
|
|
293
|
+
this.createPassMasked = function(pass1, mask1) {
|
|
294
|
+
var passArray = [];
|
|
295
|
+
for (var i = 0; i < pass1.length; i++) {
|
|
296
|
+
passArray[i] = pass1.charCodeAt(i);
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
return this.ANDArrays(passArray, mask1);
|
|
300
|
+
};
|
|
301
|
+
|
|
302
|
+
});
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
loginApp.controller('mobileAuthCtrl', ['$rootScope', '$scope', '$cookies', '$state', '$stateParams', '$http', '$window', 'previousState', '$interval', '$timeout', '$filter', '$log', '$q',
|
|
2
|
+
function($rootScope, $scope, $cookies, $state, $stateParams, $http, $window, previousState, $interval, $timeout, $filter, $log, $q) {
|
|
3
|
+
|
|
4
|
+
var TERMINATE_LOGIN_PROCESS_DELAY = 5000;
|
|
5
|
+
var TIMER_INTERVAL = 1000;
|
|
6
|
+
var STATUS_PULL_INTERVAL = $stateParams.frequencyTimer;
|
|
7
|
+
var TIMER_TOTAL_TIME_IN_SECONDS = $stateParams.timerOoba;
|
|
8
|
+
var SPLUNK_USER_CLICK_DELAY = STATUS_PULL_INTERVAL / 2;
|
|
9
|
+
|
|
10
|
+
var OobaStatusEnum = {
|
|
11
|
+
UNKNOWN: "UNKNOWN",
|
|
12
|
+
PENDING: "OOBA_P",
|
|
13
|
+
APPROVED: "OK",
|
|
14
|
+
ERROR: "ERROR"
|
|
15
|
+
};
|
|
16
|
+
var oobaStatus = OobaStatusEnum.UNKNOWN;
|
|
17
|
+
|
|
18
|
+
var timerId = null;
|
|
19
|
+
var oobaStatusResolver = $q.resolve({
|
|
20
|
+
status: OobaStatusEnum.UNKNOWN
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
var nextOobaStatusCheckTimeoutId = null;
|
|
24
|
+
|
|
25
|
+
initialize = function() {
|
|
26
|
+
$scope.totalTimeInSeconds = TIMER_TOTAL_TIME_IN_SECONDS;
|
|
27
|
+
$scope.elapsedTime = 0;
|
|
28
|
+
$scope.remainingTime = $scope.totalTimeInSeconds;
|
|
29
|
+
$scope.isStatusPullingOn = false;
|
|
30
|
+
|
|
31
|
+
$scope.captchaImage = {
|
|
32
|
+
'background-image': 'url(../static/img/ooba-icons/' + $stateParams.pid + '.svg)',
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
$scope.startStatusPulling();
|
|
37
|
+
|
|
38
|
+
timerId = $interval(function() {
|
|
39
|
+
$scope.elapsedTime = Math.floor((Date.now() - $scope.pullingStatusStartTime) / 1000);
|
|
40
|
+
$scope.remainingTime = Math.max($scope.totalTimeInSeconds - $scope.elapsedTime, 0);
|
|
41
|
+
if ($scope.remainingTime < 1) {
|
|
42
|
+
$scope.stopStatusPulling();
|
|
43
|
+
$scope.stopTimer();
|
|
44
|
+
//wait if there is any pending request
|
|
45
|
+
oobaStatusResolver.finally(function() {
|
|
46
|
+
terminateLoginProcess(TERMINATE_LOGIN_PROCESS_DELAY);
|
|
47
|
+
})
|
|
48
|
+
}
|
|
49
|
+
}, TIMER_INTERVAL)
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
var terminateLoginProcess = function(delay) {
|
|
53
|
+
$timeout(function() {
|
|
54
|
+
if (oobaStatus === OobaStatusEnum.PENDING) {
|
|
55
|
+
checkStatus()
|
|
56
|
+
.then(
|
|
57
|
+
function(response) {
|
|
58
|
+
response.status === OobaStatusEnum.APPROVED ? processApprovedOoba() : $state.go('error');
|
|
59
|
+
},
|
|
60
|
+
function() {
|
|
61
|
+
$state.go('error');
|
|
62
|
+
}
|
|
63
|
+
)
|
|
64
|
+
}
|
|
65
|
+
}, delay);
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
$scope.$on('$destroy', function() {
|
|
69
|
+
$scope.stopStatusPulling();
|
|
70
|
+
$scope.stopTimer();
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
$window.onbeforeunload = function() {
|
|
74
|
+
if ($state.current.name === 'mobileAuth' && !$cookies.get('ing2LoggingStartTime')) {
|
|
75
|
+
$http.post('../json/login/back', null);
|
|
76
|
+
// angular's $http methods wrap the config in an immediately resolved promise which means the ajax
|
|
77
|
+
// request doesn't actually get fired until the next tick so we have to force digest cycle
|
|
78
|
+
$rootScope.$digest();
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
$scope.onChangeToMask = function() {
|
|
83
|
+
//cancel any future oobaStatusResolver request
|
|
84
|
+
$timeout.cancel(nextOobaStatusCheckTimeoutId);
|
|
85
|
+
|
|
86
|
+
//change to SMS only if ooba in Pending status
|
|
87
|
+
oobaStatusResolver.then(
|
|
88
|
+
function(response) {
|
|
89
|
+
if (response.status === OobaStatusEnum.PENDING) {
|
|
90
|
+
$http.get('../json/login/oobaToSms')
|
|
91
|
+
.then(proceedToMaskLogin, processOobaError);
|
|
92
|
+
gemius_event('_action_', getGemiusID(), 'miejsce=ekran_logowania_autoryzacja_mobilna', 'link=powrot_na_haslo_maskowane', 'metoda=onclick');
|
|
93
|
+
} else {
|
|
94
|
+
$log.error('Wrong ooba state ' + response.status);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
)
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
$scope.backToPrevStep = function() {
|
|
101
|
+
$http.post('../json/login/back', null).then(function() {
|
|
102
|
+
$state.go(previousState.name);
|
|
103
|
+
});
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
var proceedToMaskLogin = function() {
|
|
107
|
+
$state.go('password', {
|
|
108
|
+
loginMask: $stateParams.loginMask,
|
|
109
|
+
mask: $stateParams.mask,
|
|
110
|
+
maskLength: $stateParams.maskLength,
|
|
111
|
+
alias: $stateParams.alias
|
|
112
|
+
});
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
var addCookie = function(name, value) {
|
|
116
|
+
$cookies.put(name, value, {
|
|
117
|
+
path: '/'
|
|
118
|
+
});
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
var processOobaError = function() {
|
|
122
|
+
$state.go('error');
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
var processApprovedOoba = function() {
|
|
126
|
+
$scope.stopTimer();
|
|
127
|
+
addCookie('ing2OobaLogging', true);
|
|
128
|
+
addCookie('ing2LoggingStartTime', (new Date().getTime() + SPLUNK_USER_CLICK_DELAY) + '');
|
|
129
|
+
addCookie('cibUsrLoginCommand', new Date().getTime() + '');
|
|
130
|
+
$state.go('index', {
|
|
131
|
+
alias: $stateParams.alias
|
|
132
|
+
});
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
var statusPullingLoop = function() {
|
|
136
|
+
(oobaStatusResolver = checkStatus())
|
|
137
|
+
.then(function(response) {
|
|
138
|
+
oobaStatus = response.status;
|
|
139
|
+
switch (response.status) {
|
|
140
|
+
case OobaStatusEnum.PENDING:
|
|
141
|
+
break;
|
|
142
|
+
case OobaStatusEnum.APPROVED:
|
|
143
|
+
processApprovedOoba();
|
|
144
|
+
break;
|
|
145
|
+
case OobaStatusEnum.ERROR:
|
|
146
|
+
processOobaError();
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
if ($scope.remainingTime > 0 && $scope.isStatusPullingOn) {
|
|
150
|
+
nextOobaStatusCheckTimeoutId = $timeout(statusPullingLoop, STATUS_PULL_INTERVAL);
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
var checkStatus = function() {
|
|
156
|
+
return $q(function(resolve, reject) {
|
|
157
|
+
$http.post('../json/login/oobaState', {
|
|
158
|
+
osResoultion: screen.width + "x" + screen.height
|
|
159
|
+
})
|
|
160
|
+
.then(function(response) {
|
|
161
|
+
resolve(response.data);
|
|
162
|
+
},
|
|
163
|
+
function(response) {
|
|
164
|
+
$log.error(error);
|
|
165
|
+
reject(response.data);
|
|
166
|
+
}
|
|
167
|
+
);
|
|
168
|
+
});
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
$scope.startStatusPulling = function() {
|
|
172
|
+
$scope.isStatusPullingOn = true;
|
|
173
|
+
$scope.pullingStatusStartTime = Date.now();
|
|
174
|
+
statusPullingLoop();
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
$scope.stopStatusPulling = function() {
|
|
178
|
+
$timeout.cancel(nextOobaStatusCheckTimeoutId);
|
|
179
|
+
$scope.isStatusPullingOn = false;
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
$scope.stopTimer = function() {
|
|
183
|
+
$interval.cancel(timerId);
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
initialize();
|
|
187
|
+
|
|
188
|
+
}
|
|
189
|
+
]);
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
angular.module('commons').constant('psd2State', {
|
|
4
|
+
CONSENT_AIS: {
|
|
5
|
+
state: 'psd2Consent:aisIndex',
|
|
6
|
+
externalUrl: '../psd2Consent/#!ais'
|
|
7
|
+
},
|
|
8
|
+
CONSENT_AIS_COMMON_SCOPE: {
|
|
9
|
+
state: 'psd2Consent:aisCommonScopeIndex',
|
|
10
|
+
externalUrl: '../psd2Consent/#!aisCommonScope'
|
|
11
|
+
},
|
|
12
|
+
CONSENT_AIS_ACCOUNTS: {
|
|
13
|
+
state: 'psd2Consent:aisAccountsIndex',
|
|
14
|
+
externalUrl: '../psd2Consent/#!aisAccounts'
|
|
15
|
+
},
|
|
16
|
+
TAX_TRANSFER: {
|
|
17
|
+
state: 'psd2Consent:pis:taxTransfer',
|
|
18
|
+
externalUrl: '../psd2Consent/#!pis/taxTransfer'
|
|
19
|
+
},
|
|
20
|
+
FOREIGN_TRANSFER_NON_EEA: {
|
|
21
|
+
state: 'psd2Consent:pis:foreignTransferNonEea',
|
|
22
|
+
externalUrl: '../psd2Consent/#!pis/foreignTransfer'
|
|
23
|
+
},
|
|
24
|
+
FOREIGN_TRANSFER_EEA: {
|
|
25
|
+
state: 'psd2Consent:pis:foreignTransferEea',
|
|
26
|
+
externalUrl: '../psd2Consent/#!pis/foreignTransferEea'
|
|
27
|
+
},
|
|
28
|
+
DOMESTIC_TRANSFER: {
|
|
29
|
+
state: 'psd2Consent:pis:domesticTransfer',
|
|
30
|
+
externalUrl: '../psd2Consent/#!pis/domesticTransfer'
|
|
31
|
+
},
|
|
32
|
+
CANCEL_PAYMENT: {
|
|
33
|
+
state: 'psd2Consent:pis:cancelPayment',
|
|
34
|
+
externalUrl: '../psd2Consent/#!pis/cancelPayment'
|
|
35
|
+
},
|
|
36
|
+
CANCEL_BUNDLE: {
|
|
37
|
+
state: 'psd2Consent:pis:cancelBundle',
|
|
38
|
+
externalUrl: '../psd2Consent/#!pis/cancelBundle'
|
|
39
|
+
},
|
|
40
|
+
BUNDLE_TRANSFERS: {
|
|
41
|
+
state: 'psd2Consent:pis:bundleTransfers',
|
|
42
|
+
externalUrl: '../psd2Consent/#!pis/bundleTransfers'
|
|
43
|
+
},
|
|
44
|
+
INVALID_PIS_CONSENT: {
|
|
45
|
+
state: 'psd2Consent:pis:validationError',
|
|
46
|
+
externalUrl: '../psd2Consent/#!errorDict',
|
|
47
|
+
params: {
|
|
48
|
+
errorKey: 'PIS_INVALID_TRANSFER'
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
ERROR_AIS: {
|
|
52
|
+
state: 'psd2Consent:aisError',
|
|
53
|
+
externalUrl: '../psd2Consent/#!aisError'
|
|
54
|
+
},
|
|
55
|
+
ERROR_AIS_ACCOUNTS: {
|
|
56
|
+
state: 'psd2Consent:aisAccountsError',
|
|
57
|
+
externalUrl: '../psd2Consent/#!aisAccountsError'
|
|
58
|
+
},
|
|
59
|
+
ERROR_AIS_ACCOUNTS_NO_ACCOUNTS: {
|
|
60
|
+
state: 'psd2Consent:aisAccountsNoAccountsError',
|
|
61
|
+
externalUrl: '../psd2Consent/#!aisAccountsNoAccounts'
|
|
62
|
+
},
|
|
63
|
+
ERROR_UNKNOWN: {
|
|
64
|
+
state: 'psd2Conent:error',
|
|
65
|
+
externalUrl: '../psd2Consent/#!error'
|
|
66
|
+
}
|
|
67
|
+
});
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
angular.module('commons').service(
|
|
4
|
+
'securityPolicyService',
|
|
5
|
+
function() {
|
|
6
|
+
var uppercaseRule = /^[A-Z]$/;
|
|
7
|
+
var lowercaseRule = /^[a-z]$/;
|
|
8
|
+
var digitRule = /^[0-9]$/;
|
|
9
|
+
var specCharRule = /^[`~!@#\$%\^&\*\(\)_\+\|\-=\\\[\]\{\};':",\.\/<>\?]$/;
|
|
10
|
+
|
|
11
|
+
var minLowercase = 0;
|
|
12
|
+
var minUppercase = 0;
|
|
13
|
+
var minDigit = 0;
|
|
14
|
+
var minSpecChar = 0;
|
|
15
|
+
var minLength = 10;
|
|
16
|
+
var maxLength = 32;
|
|
17
|
+
var sufficientRulesCount = 3;
|
|
18
|
+
var checkedRulesCount = 4; //sprawdzamy 4 rzeczy: ile malych liter, ile duzych, ile cyfr, ile znakow specjalnych
|
|
19
|
+
|
|
20
|
+
var rulesCount = {
|
|
21
|
+
strong: 0,
|
|
22
|
+
weak: 0,
|
|
23
|
+
reset: function() {
|
|
24
|
+
this.strong = 0;
|
|
25
|
+
this.weak = 0;
|
|
26
|
+
},
|
|
27
|
+
toString: function() {
|
|
28
|
+
return 'strong:' + this.strong + ' weak:' + this.weak;
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
var wordStructure = {
|
|
33
|
+
uppercaseCount: 0,
|
|
34
|
+
lowercaseCount: 0,
|
|
35
|
+
digitCount: 0,
|
|
36
|
+
specCharCount: 0,
|
|
37
|
+
reset: function() {
|
|
38
|
+
this.uppercaseCount = 0;
|
|
39
|
+
this.lowercaseCount = 0;
|
|
40
|
+
this.digitCount = 0;
|
|
41
|
+
this.specCharCount = 0;
|
|
42
|
+
},
|
|
43
|
+
toString: function() {
|
|
44
|
+
return ' uppercaseCount:' + this.uppercaseCount + ' lowercaseCount:' + this.lowercaseCount + ' digitCount:' + this.digitCount +
|
|
45
|
+
' specCharCount:' + this.specCharCount;
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
this.init = function(parameters) {
|
|
50
|
+
minLowercase = parameters.pswLowercase;
|
|
51
|
+
minUppercase = parameters.pswUppercase;
|
|
52
|
+
minDigit = parameters.pswDigits;
|
|
53
|
+
minSpecChar = parameters.pswSpecChar;
|
|
54
|
+
minLength = parameters.pswMin;
|
|
55
|
+
maxLength = parameters.pswMax;
|
|
56
|
+
sufficientRulesCount = parameters.pswCase;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
this.checkSecurityPolicyRules = function(password) {
|
|
60
|
+
wordStructure.reset();
|
|
61
|
+
rulesCount.reset();
|
|
62
|
+
this.countAndSetWordStructure(password);
|
|
63
|
+
this.countFullfiledSecurityRules();
|
|
64
|
+
|
|
65
|
+
return rulesCount.weak >= sufficientRulesCount && password.length <= maxLength && password.length >= minLength;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
this.calculatePasswordStrength = function(password) {
|
|
69
|
+
var strength = 0;
|
|
70
|
+
if (password == null || password == '') {
|
|
71
|
+
return strength;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
this.checkSecurityPolicyRules(password);
|
|
75
|
+
|
|
76
|
+
var weakRulesScore = (rulesCount.weak / checkedRulesCount) / 2;
|
|
77
|
+
var strongRulesScore = (rulesCount.strong / checkedRulesCount) / 2;
|
|
78
|
+
|
|
79
|
+
strength = weakRulesScore + strongRulesScore;
|
|
80
|
+
|
|
81
|
+
return strength; //zwracamy spolczynnik miedzy 0 a 1 - prezentacja zalezy od formatki
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
this.checkMinSecurityPolicyRule = function(securityPolicyParam, countedElements) {
|
|
85
|
+
if (countedElements >= securityPolicyParam) {
|
|
86
|
+
rulesCount.weak++;
|
|
87
|
+
}
|
|
88
|
+
if (countedElements >= securityPolicyParam + 1) {
|
|
89
|
+
rulesCount.strong++;
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
this.sumOfSecurityRules = function() {
|
|
94
|
+
return minLowercase + minUppercase + minDigit + minSpecChar;
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
this.countAndSetWordStructure = function(password) {
|
|
98
|
+
for (var i = 0; i < password.length; i++) {
|
|
99
|
+
var letter = password.charAt(i);
|
|
100
|
+
if (uppercaseRule.test(letter)) {
|
|
101
|
+
wordStructure.uppercaseCount++;
|
|
102
|
+
} else if (lowercaseRule.test(letter)) {
|
|
103
|
+
wordStructure.lowercaseCount++;
|
|
104
|
+
} else if (digitRule.test(letter)) {
|
|
105
|
+
wordStructure.digitCount++;
|
|
106
|
+
} else if (specCharRule.test(letter)) {
|
|
107
|
+
wordStructure.specCharCount++;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
this.countFullfiledSecurityRules = function() {
|
|
113
|
+
this.checkMinSecurityPolicyRule(minUppercase, wordStructure.uppercaseCount);
|
|
114
|
+
this.checkMinSecurityPolicyRule(minLowercase, wordStructure.lowercaseCount);
|
|
115
|
+
this.checkMinSecurityPolicyRule(minDigit, wordStructure.digitCount);
|
|
116
|
+
this.checkMinSecurityPolicyRule(minSpecChar, wordStructure.specCharCount);
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
});
|