summaryrefslogtreecommitdiff
path: root/frontend/gamma/tests
Unidiff
Diffstat (limited to 'frontend/gamma/tests') (more/less context) (ignore whitespace changes)
-rw-r--r--frontend/gamma/tests/SimpleTest/SimpleTest.Async.js22
-rwxr-xr-xfrontend/gamma/tests/index.html22
-rw-r--r--frontend/gamma/tests/tests/Bookmarklet/Bookmarklet.css22
-rw-r--r--frontend/gamma/tests/tests/Bookmarklet/Fail.html22
-rw-r--r--frontend/gamma/tests/tests/Bookmarklet/Twitter.html22
-rw-r--r--frontend/gamma/tests/tests/Bookmarklet/index.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Async.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Async.test.js22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Base.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Base.test.js22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/ByteArray.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/ByteArray.test.js22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/AES.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/AES.performance.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/Base.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/BigInt.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/ECC.B283.deferred.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.FiniteField.B283.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.FiniteField.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.Value.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/ECC.K283.deferred.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/JSCrypto_vs_Clipperz.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/JSCrypto_vs_Clipperz.test.js22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/PRNG.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/RSA.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/SHA.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/SHA.test.js22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/SRP.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/Usage.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/index.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/jscrypto.js22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/DOM.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/DOM.test.js22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Date.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Date.test.js22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/KeePassExportProcessor.data.js22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/KeePassExportProcessor.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/KeePassExportProcessor.test.js22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/KeyValueObjectStore.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/KeyValueObjectStore.test.js22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/BookmarkletProcessor.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/BookmarkletProcessor.test.js22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/Connection.data.js22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/Connection.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/Connection.test.js22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/Crypto.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/Crypto_performanceEvaluation.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/Crypto_test.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLogin.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLogin.test.js22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLoginConfigurations.data.js22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.test.js22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/DataModel/OneTimePassword.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/DataModel/OneTimePassword.test.js22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/DataModel/Record.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/DataModel/Record.test.js22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.data.js22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.data.old.js22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.test.js22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/DataModel/index.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/Date.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/Date.test.js22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/PIN.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/PIN.test.js22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/Proxy.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/Proxy.test.js22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/Toll.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/Toll.test.js22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/MainController.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/MainController.test.js22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/index.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/UI/Web/index.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/UI/index.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/index.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/RoboFormExportProcessor.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Set.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Set.test.js22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/index.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/index_googleCode.html22
-rw-r--r--frontend/gamma/tests/tests/Clipperz/index_testECC.html22
-rw-r--r--frontend/gamma/tests/tests/Components/CardDialogEditing/CardDialogEditing_test.js22
-rw-r--r--frontend/gamma/tests/tests/Components/CardDialogEditing/User.data.js22
-rw-r--r--frontend/gamma/tests/tests/Components/CardDialogEditing/dragAndDrop_test.js22
-rw-r--r--frontend/gamma/tests/tests/Components/CardDialogEditing/index.html22
-rw-r--r--frontend/gamma/tests/tests/Components/CardDialogNew/User.data.js22
-rw-r--r--frontend/gamma/tests/tests/Components/CardDialogNew/cardDialogNew_test.js22
-rw-r--r--frontend/gamma/tests/tests/Components/CardDialogNew/index.html22
-rw-r--r--frontend/gamma/tests/tests/Components/FullApp/User.data.js22
-rw-r--r--frontend/gamma/tests/tests/Components/FullApp/index.html22
-rw-r--r--frontend/gamma/tests/tests/Components/FullApp/mobile.index.html22
-rw-r--r--frontend/gamma/tests/tests/Components/GridLayout/GridLayout_test.js22
-rw-r--r--frontend/gamma/tests/tests/Components/GridLayout/TestPageComponent.js22
-rw-r--r--frontend/gamma/tests/tests/Components/GridLayout/User.data.js22
-rw-r--r--frontend/gamma/tests/tests/Components/GridLayout/index.html22
-rw-r--r--frontend/gamma/tests/tests/Components/GridLayout/test.css22
-rw-r--r--frontend/gamma/tests/tests/Components/ProgressBar/index.html22
-rw-r--r--frontend/gamma/tests/tests/Components/ProgressBar/progressBar_test.js22
-rw-r--r--frontend/gamma/tests/tests/Components/SimpleMessagePanel/index.html22
-rw-r--r--frontend/gamma/tests/tests/Components/SimpleMessagePanel/simpleMessagePanel_test.js22
-rw-r--r--frontend/gamma/tests/tests/Components/Tooltips/index.html22
-rw-r--r--frontend/gamma/tests/tests/Components/Tooltips/tooltips_test.js22
-rw-r--r--frontend/gamma/tests/tests/Components/UnlockPassword/User.data.js22
-rw-r--r--frontend/gamma/tests/tests/Components/UnlockPassword/index.html22
-rw-r--r--frontend/gamma/tests/tests/Components/UnlockPassword/unlockPassword_test.js22
-rw-r--r--frontend/gamma/tests/tests/Components/crossWindowsBookmarklet/CrossWindowsBookmarklet_test.js22
-rw-r--r--frontend/gamma/tests/tests/Components/crossWindowsBookmarklet/index.html22
-rw-r--r--frontend/gamma/tests/tests/index.html22
109 files changed, 1090 insertions, 1308 deletions
diff --git a/frontend/gamma/tests/SimpleTest/SimpleTest.Async.js b/frontend/gamma/tests/SimpleTest/SimpleTest.Async.js
index 3633182..268a04d 100644
--- a/frontend/gamma/tests/SimpleTest/SimpleTest.Async.js
+++ b/frontend/gamma/tests/SimpleTest/SimpleTest.Async.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26MochiKit.Base.update(Clipperz.Async.Deferred.prototype, { 24MochiKit.Base.update(Clipperz.Async.Deferred.prototype, {
27/* 25/*
28 '_addTest': function(anExpectedValue, aDescription, isDeep, aResult) { 26 '_addTest': function(anExpectedValue, aDescription, isDeep, aResult) {
29 if (isDeep) { 27 if (isDeep) {
30 SimpleTest.isDeeply(aResult, anExpectedValue, aDescription); 28 SimpleTest.isDeeply(aResult, anExpectedValue, aDescription);
31 } else { 29 } else {
32 SimpleTest.is(aResult, anExpectedValue, aDescription); 30 SimpleTest.is(aResult, anExpectedValue, aDescription);
33 } 31 }
34 32
35 return aResult; 33 return aResult;
36 }, 34 },
37*/ 35*/
38 'addTest': function (anExpectedValue, aDescription, isDeep) { 36 'addTest': function (anExpectedValue, aDescription, isDeep) {
39 // this.addMethod(this, '_addTest', anExpectedValue, aDescription, isDeep); 37 // this.addMethod(this, '_addTest', anExpectedValue, aDescription, isDeep);
40 // this.addCallback(Clipperz.Async.test, anExpectedValue, aDescription, isDeep); 38 // this.addCallback(Clipperz.Async.test, anExpectedValue, aDescription, isDeep);
41 39
42 if (isDeep) { 40 if (isDeep) {
43 // SimpleTest.isDeeply(aResult, anExpectedValue, aDescription); 41 // SimpleTest.isDeeply(aResult, anExpectedValue, aDescription);
44 this.addCallback(Clipperz.Async.Test.isDeeply(anExpectedValue, aDescription)); 42 this.addCallback(Clipperz.Async.Test.isDeeply(anExpectedValue, aDescription));
45 } else { 43 } else {
46 // SimpleTest.is(aResult, anExpectedValue, aDescription); 44 // SimpleTest.is(aResult, anExpectedValue, aDescription);
47 this.addCallback(Clipperz.Async.Test.is(anExpectedValue, aDescription)); 45 this.addCallback(Clipperz.Async.Test.is(anExpectedValue, aDescription));
48 } 46 }
49 }, 47 },
50 48
51 //------------------------------------------------------------------------- 49 //-------------------------------------------------------------------------
52 50
53 'shouldSucceed': function (aDescription) { 51 'shouldSucceed': function (aDescription) {
54 this.addCallbackPass(SimpleTest.ok, true, aDescription); 52 this.addCallbackPass(SimpleTest.ok, true, aDescription);
55 this.addErrbackPass (SimpleTest.ok, false, aDescription); 53 this.addErrbackPass (SimpleTest.ok, false, aDescription);
56 this.addBoth(MochiKit.Async.succeed, null); 54 this.addBoth(MochiKit.Async.succeed, null);
57 }, 55 },
58 56
59 'shouldFail': function (aDescription) { 57 'shouldFail': function (aDescription) {
60 this.addCallbackPass(SimpleTest.ok, false, aDescription); 58 this.addCallbackPass(SimpleTest.ok, false, aDescription);
61 this.addErrbackPass (SimpleTest.ok, true, aDescription); 59 this.addErrbackPass (SimpleTest.ok, true, aDescription);
62 this.addBoth(MochiKit.Async.succeed, null); 60 this.addBoth(MochiKit.Async.succeed, null);
63 }, 61 },
64 62
65 //------------------------------------------------------------------------- 63 //-------------------------------------------------------------------------
66 64
67}); 65});
68 66
69 67
70Clipperz.Async.Test = {}; 68Clipperz.Async.Test = {};
diff --git a/frontend/gamma/tests/index.html b/frontend/gamma/tests/index.html
index ef89088..99fad81 100755
--- a/frontend/gamma/tests/index.html
+++ b/frontend/gamma/tests/index.html
@@ -1,53 +1,51 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <script type="text/javascript" src="../js/MochiKit/MochiKit.js"></script> 26 <script type="text/javascript" src="../js/MochiKit/MochiKit.js"></script>
29 <script type="text/javascript" src="./SimpleTest/TestRunner.js"></script> 27 <script type="text/javascript" src="./SimpleTest/TestRunner.js"></script>
30</head> 28</head>
31<body> 29<body>
32<script type="text/javascript"> 30<script type="text/javascript">
33TestRunner.runTests( 31TestRunner.runTests(
34/* 32/*
35 //'tests/Clipperz/Base.html', 33 //'tests/Clipperz/Base.html',
36 //'tests/Clipperz/Set.html', 34 //'tests/Clipperz/Set.html',
37 'tests/Clipperz/index.html', 35 'tests/Clipperz/index.html',
38 36
39 //'tests/Clipperz/Crypto/Base.html', 37 //'tests/Clipperz/Crypto/Base.html',
40 //'tests/Clipperz/Crypto/BigInt.html', 38 //'tests/Clipperz/Crypto/BigInt.html',
41 //'tests/Clipperz/Crypto/SRP.html' 39 //'tests/Clipperz/Crypto/SRP.html'
42 'tests/Clipperz/Crypto/index.html', 40 'tests/Clipperz/Crypto/index.html',
43 'tests/Clipperz/PM/index.html', 41 'tests/Clipperz/PM/index.html',
44 'tests/Clipperz/PM/DataModel/index.html' 42 'tests/Clipperz/PM/DataModel/index.html'
45*/ 43*/
46 44
47 'tests/index.html' 45 'tests/index.html'
48 46
49 47
50); 48);
51</script> 49</script>
52</body> 50</body>
53</html> \ No newline at end of file 51</html> \ No newline at end of file
diff --git a/frontend/gamma/tests/tests/Bookmarklet/Bookmarklet.css b/frontend/gamma/tests/tests/Bookmarklet/Bookmarklet.css
index fd79d8a..8a6bae6 100644
--- a/frontend/gamma/tests/tests/Bookmarklet/Bookmarklet.css
+++ b/frontend/gamma/tests/tests/Bookmarklet/Bookmarklet.css
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26/* @override 24/* @override
27 http://localhost:8000/tests/js/tests/Bookmarklet/Bookmarklet.css 25 http://localhost:8000/tests/js/tests/Bookmarklet/Bookmarklet.css
28 http://www.clipperz.com/files/clipperz.com/bookmarklet/0.3.0/Bookmarklet.css 26 http://www.clipperz.com/files/clipperz.com/bookmarklet/0.3.0/Bookmarklet.css
29*/ 27*/
30 28
31div#clipperzBookmarklet { 29div#clipperzBookmarklet {
32 margin: 0; 30 margin: 0;
33 padding: 0; 31 padding: 0;
34 border: 0; 32 border: 0;
35 outline: 0; 33 outline: 0;
36 font-size: 100%; 34 font-size: 100%;
37 vertical-align: baseline; 35 vertical-align: baseline;
38 background: transparent; 36 background: transparent;
39 37
40 position: absolute; 38 position: absolute;
41 top: 80px; 39 top: 80px;
42 left: 100px; 40 left: 100px;
43 width: 202px; 41 width: 202px;
44 height: 202px; 42 height: 202px;
45 background: url(./background.png) no-repeat; 43 background: url(./background.png) no-repeat;
46} 44}
47 45
48div#clipperzBookmarklet div#clipperzBookmarkletClose { 46div#clipperzBookmarklet div#clipperzBookmarkletClose {
49 margin: 0; 47 margin: 0;
50 padding: 0; 48 padding: 0;
51 border: 0; 49 border: 0;
52 outline: 0; 50 outline: 0;
53 font-size: 100%; 51 font-size: 100%;
54 vertical-align: baseline; 52 vertical-align: baseline;
55 background: transparent; 53 background: transparent;
56 54
57 position: absolute; 55 position: absolute;
58 left: 168px; 56 left: 168px;
59 top: 5px; 57 top: 5px;
60 width: 25px; 58 width: 25px;
61 height: 25px; 59 height: 25px;
62 background: url(./close.png) no-repeat; 60 background: url(./close.png) no-repeat;
63} 61}
64 62
65div#clipperzBookmarklet div#clipperzBookmarkletClose:hover { 63div#clipperzBookmarklet div#clipperzBookmarkletClose:hover {
66 background: url(./close_selected.png) no-repeat; 64 background: url(./close_selected.png) no-repeat;
67 cursor: pointer; 65 cursor: pointer;
68} 66}
69 67
70div#clipperzBookmarklet div#clipperzBookmarkletResult { 68div#clipperzBookmarklet div#clipperzBookmarkletResult {
diff --git a/frontend/gamma/tests/tests/Bookmarklet/Fail.html b/frontend/gamma/tests/tests/Bookmarklet/Fail.html
index d3d1ec9..dfca010 100644
--- a/frontend/gamma/tests/tests/Bookmarklet/Fail.html
+++ b/frontend/gamma/tests/tests/Bookmarklet/Fail.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Bookmarlet TEST - fail</title> 26 <title>Bookmarlet TEST - fail</title>
29 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> 27 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script>
30 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script> 28 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script>
31 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css"> 29 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css">
32 30
33 <!-- link rel="stylesheet" type="text/css" href="./Bookmarklet.css" --> 31 <!-- link rel="stylesheet" type="text/css" href="./Bookmarklet.css" -->
34 <script type='text/javascript' src='../../../js/Bookmarklet.js'></script> 32 <script type='text/javascript' src='../../../js/Bookmarklet.js'></script>
35 <script type='text/javascript' src='../../../../_build/_scratch/bookmarklet_test.js'></script> 33 <script type='text/javascript' src='../../../../_build/_scratch/bookmarklet_test.js'></script>
36</head> 34</head>
37<body> 35<body>
38 36
39<!-- TWITTER Login Form --> 37<!-- TWITTER Login Form -->
40<!-- form id="signin" action="https://twitter.com/sessions" method="post"> 38<!-- form id="signin" action="https://twitter.com/sessions" method="post">
41 <input id="authenticity_token" type="hidden" value="a3a9abfa089122e4b437736313e54f2a25911101" name="authenticity_token"/> 39 <input id="authenticity_token" type="hidden" value="a3a9abfa089122e4b437736313e54f2a25911101" name="authenticity_token"/>
42 <fieldset class="common-form standard-form"> 40 <fieldset class="common-form standard-form">
43 <legend>Please sign in</legend> 41 <legend>Please sign in</legend>
44 <p> 42 <p>
45 <label class="inside" for="username" tabindex="1">user name or email address:</label> 43 <label class="inside" for="username" tabindex="1">user name or email address:</label>
46 <input id="username" type="text" title="username" value="" name="session[username_or_email]"/> 44 <input id="username" type="text" title="username" value="" name="session[username_or_email]"/>
47 </p> 45 </p>
48 <p> 46 <p>
49 <label class="inside" for="password" tabindex="2">password:</label> 47 <label class="inside" for="password" tabindex="2">password:</label>
50 <input id="password" type="password" title="password" value="" name="session[password]"/> 48 <input id="password" type="password" title="password" value="" name="session[password]"/>
51 </p> 49 </p>
52 <p class="remember"></p> 50 <p class="remember"></p>
53 <p class="submit"></p> 51 <p class="submit"></p>
54 <p class="forgot"></p> 52 <p class="forgot"></p>
55 <p class="complete"></p> 53 <p class="complete"></p>
56 </fieldset> 54 </fieldset>
57</form --> 55</form -->
58 56
59<!-- ###################################################################### --> 57<!-- ###################################################################### -->
60<!-- 58<!--
61<div id="clipperzBookmarklet" style=""> 59<div id="clipperzBookmarklet" style="">
62 <div id="clipperzBookmarkletResult" style=""><p>The direct login configuration has been collected.</p></div> 60 <div id="clipperzBookmarkletResult" style=""><p>The direct login configuration has been collected.</p></div>
63 <div id="clipperzBookmarletButton" style=""></div> 61 <div id="clipperzBookmarletButton" style=""></div>
64 <div id="clipperzBookmarletAfterCopyHint" style=""><p>Now you can return to the Clipperz main interface and create a new card</p></div> 62 <div id="clipperzBookmarletAfterCopyHint" style=""><p>Now you can return to the Clipperz main interface and create a new card</p></div>
65</div> 63</div>
66--> 64-->
67<!-- 65<!--
68<div id="clipperzBookmarklet"> 66<div id="clipperzBookmarklet">
69 <div id="clipperzBookmarkletResult"><div id="clipperzBookmarkletResultIcon"></div><p id="clipperzBookmarkletResultText"></p></div> 67 <div id="clipperzBookmarkletResult"><div id="clipperzBookmarkletResultIcon"></div><p id="clipperzBookmarkletResultText"></p></div>
70 <div id="clipperzBookmarletButton"></div> 68 <div id="clipperzBookmarletButton"></div>
diff --git a/frontend/gamma/tests/tests/Bookmarklet/Twitter.html b/frontend/gamma/tests/tests/Bookmarklet/Twitter.html
index 27dc6a1..025197e 100644
--- a/frontend/gamma/tests/tests/Bookmarklet/Twitter.html
+++ b/frontend/gamma/tests/tests/Bookmarklet/Twitter.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Bookmarlet TEST - ok</title> 26 <title>Bookmarlet TEST - ok</title>
29 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> 27 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script>
30 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script> 28 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script>
31 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css"> 29 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css">
32 30
33 <!-- link rel="stylesheet" type="text/css" href="./Bookmarklet.css" --> 31 <!-- link rel="stylesheet" type="text/css" href="./Bookmarklet.css" -->
34 <script type='text/javascript' src='../../../js/Bookmarklet.js'></script> 32 <script type='text/javascript' src='../../../js/Bookmarklet.js'></script>
35 <script type='text/javascript' src='../../../../_build/_scratch/bookmarklet_test.js'></script> 33 <script type='text/javascript' src='../../../../_build/_scratch/bookmarklet_test.js'></script>
36</head> 34</head>
37<body> 35<body>
38 36
39<!-- TWITTER Login Form --> 37<!-- TWITTER Login Form -->
40<form id="signin" action="https://twitter.com/sessions" method="post"> 38<form id="signin" action="https://twitter.com/sessions" method="post">
41 <input id="authenticity_token" type="hidden" value="a3a9abfa089122e4b437736313e54f2a25911101" name="authenticity_token"/> 39 <input id="authenticity_token" type="hidden" value="a3a9abfa089122e4b437736313e54f2a25911101" name="authenticity_token"/>
42 <fieldset class="common-form standard-form"> 40 <fieldset class="common-form standard-form">
43 <legend>Please sign in</legend> 41 <legend>Please sign in</legend>
44 <p> 42 <p>
45 <label class="inside" for="username" tabindex="1">user name or email address:</label> 43 <label class="inside" for="username" tabindex="1">user name or email address:</label>
46 <input id="username" type="text" title="username" value="" name="session[username_or_email]"/> 44 <input id="username" type="text" title="username" value="" name="session[username_or_email]"/>
47 </p> 45 </p>
48 <p> 46 <p>
49 <label class="inside" for="password" tabindex="2">password:</label> 47 <label class="inside" for="password" tabindex="2">password:</label>
50 <input id="password" type="password" title="password" value="" name="session[password]"/> 48 <input id="password" type="password" title="password" value="" name="session[password]"/>
51 </p> 49 </p>
52 <p class="remember"></p> 50 <p class="remember"></p>
53 <p class="submit"></p> 51 <p class="submit"></p>
54 <p class="forgot"></p> 52 <p class="forgot"></p>
55 <p class="complete"></p> 53 <p class="complete"></p>
56 </fieldset> 54 </fieldset>
57</form> 55</form>
58 56
59<!-- ###################################################################### --> 57<!-- ###################################################################### -->
60<!-- 58<!--
61<div id="clipperzBookmarklet" style=""> 59<div id="clipperzBookmarklet" style="">
62 <div id="clipperzBookmarkletResult" style=""><p>The direct login configuration has been collected.</p></div> 60 <div id="clipperzBookmarkletResult" style=""><p>The direct login configuration has been collected.</p></div>
63 <div id="clipperzBookmarletButton" style=""></div> 61 <div id="clipperzBookmarletButton" style=""></div>
64 <div id="clipperzBookmarletAfterCopyHint" style=""><p>Now you can return to the Clipperz main interface and create a new card</p></div> 62 <div id="clipperzBookmarletAfterCopyHint" style=""><p>Now you can return to the Clipperz main interface and create a new card</p></div>
65</div> 63</div>
66--> 64-->
67<!-- 65<!--
68<div id="clipperzBookmarklet"> 66<div id="clipperzBookmarklet">
69 <div id="clipperzBookmarkletResult"><div id="clipperzBookmarkletResultIcon"></div><p id="clipperzBookmarkletResultText"></p></div> 67 <div id="clipperzBookmarkletResult"><div id="clipperzBookmarkletResultIcon"></div><p id="clipperzBookmarkletResultText"></p></div>
70 <div id="clipperzBookmarletButton"></div> 68 <div id="clipperzBookmarletButton"></div>
diff --git a/frontend/gamma/tests/tests/Bookmarklet/index.html b/frontend/gamma/tests/tests/Bookmarklet/index.html
index 9ee3dec..759ecc3 100644
--- a/frontend/gamma/tests/tests/Bookmarklet/index.html
+++ b/frontend/gamma/tests/tests/Bookmarklet/index.html
@@ -1,39 +1,37 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Complete TEST suite</title> 26 <title>Complete TEST suite</title>
29 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> 27 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script>
30 <script type="text/javascript" src="../../SimpleTest/TestRunner.js"></script> 28 <script type="text/javascript" src="../../SimpleTest/TestRunner.js"></script>
31</head> 29</head>
32<body> 30<body>
33<script> 31<script>
34TestRunner.runTests( 32TestRunner.runTests(
35 'Twitter.html' 33 'Twitter.html'
36); 34);
37</script> 35</script>
38</body> 36</body>
39</html> \ No newline at end of file 37</html> \ No newline at end of file
diff --git a/frontend/gamma/tests/tests/Clipperz/Async.html b/frontend/gamma/tests/tests/Clipperz/Async.html
index 6d28fdb..2c752bb 100644
--- a/frontend/gamma/tests/tests/Clipperz/Async.html
+++ b/frontend/gamma/tests/tests/Clipperz/Async.html
@@ -1,50 +1,48 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.Async - test</title> 26 <title>Clipperz.Async - test</title>
29 27
30 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script>
31 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script> 29 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script>
32 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css"> 30 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css">
33 31
34 <script type='text/javascript' src='../../../js/JSON/json2.js'></script> 32 <script type='text/javascript' src='../../../js/JSON/json2.js'></script>
35 33
36 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script> 34 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script>
37 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script> 35 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script>
38 <script type='text/javascript' src='../../../js/Clipperz/ByteArray.js'></script> 36 <script type='text/javascript' src='../../../js/Clipperz/ByteArray.js'></script>
39 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script> 37 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script>
40 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script> 38 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script>
41 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script> 39 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script>
42</head> 40</head>
43<body> 41<body>
44 42
45<pre id="test"> 43<pre id="test">
46<!--<script type="text/javascript" src="User.data.js"></script>//--> 44<!--<script type="text/javascript" src="User.data.js"></script>//-->
47<script type="text/javascript" src="Async.test.js"></script> 45<script type="text/javascript" src="Async.test.js"></script>
48</pre> 46</pre>
49</body> 47</body>
50</html> 48</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/Async.test.js b/frontend/gamma/tests/tests/Clipperz/Async.test.js
index 443130e..83cea85 100644
--- a/frontend/gamma/tests/tests/Clipperz/Async.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/Async.test.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26testObject = function (aLabel) { 24testObject = function (aLabel) {
27 this._label = aLabel; 25 this._label = aLabel;
28 this._sibling = null; 26 this._sibling = null;
29} 27}
30 28
31testObject.prototype = { 29testObject.prototype = {
32 'label': function () { 30 'label': function () {
33 return MochiKit.Async.succeed(this._label); 31 return MochiKit.Async.succeed(this._label);
34 }, 32 },
35 33
36 'shouldHit': function () { 34 'shouldHit': function () {
37 var filterRegExp; 35 var filterRegExp;
38 36
39 filterRegExp = new RegExp("hit", "i"); 37 filterRegExp = new RegExp("hit", "i");
40 38
41 return Clipperz.Async.callbacks("testObject.shouldHit", [ 39 return Clipperz.Async.callbacks("testObject.shouldHit", [
42 MochiKit.Base.method(this, 'label'), 40 MochiKit.Base.method(this, 'label'),
43 MochiKit.Base.method(filterRegExp, 'test') 41 MochiKit.Base.method(filterRegExp, 'test')
44 ]); 42 ]);
45 }, 43 },
46 44
47 'sibling': function () { 45 'sibling': function () {
48 return this._sibling; 46 return this._sibling;
49 }, 47 },
50 48
51 'setSibling': function (aSibling) { 49 'setSibling': function (aSibling) {
52 this._sibling = aSibling; 50 this._sibling = aSibling;
53 } 51 }
54 52
55} 53}
56 54
57var tests = { 55var tests = {
58 56
59 //------------------------------------------------------------------------- 57 //-------------------------------------------------------------------------
60 58
61 'succeedingForkedDeferrer_test': function (someTestArgs) { 59 'succeedingForkedDeferrer_test': function (someTestArgs) {
62 var deferredResult; 60 var deferredResult;
63 61
64 deferredResult = new Clipperz.Async.Deferred('Async.test succeedingForkedDeferred', someTestArgs); 62 deferredResult = new Clipperz.Async.Deferred('Async.test succeedingForkedDeferred', someTestArgs);
65 deferredResult.addCallback(Clipperz.Async.forkAndJoin("Async.test succeedingForkedDeferred", 63 deferredResult.addCallback(Clipperz.Async.forkAndJoin("Async.test succeedingForkedDeferred",
66 [ 64 [
67 MochiKit.Base.partial(MochiKit.Async.succeed, 3), 65 MochiKit.Base.partial(MochiKit.Async.succeed, 3),
68 MochiKit.Base.partial(MochiKit.Async.succeed, 2) 66 MochiKit.Base.partial(MochiKit.Async.succeed, 2)
69 ], someTestArgs 67 ], someTestArgs
70 )); 68 ));
diff --git a/frontend/gamma/tests/tests/Clipperz/Base.html b/frontend/gamma/tests/tests/Clipperz/Base.html
index a1b1df8..d3bd96e 100644
--- a/frontend/gamma/tests/tests/Clipperz/Base.html
+++ b/frontend/gamma/tests/tests/Clipperz/Base.html
@@ -1,52 +1,50 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.Base - TEST</title> 26 <title>Clipperz.Base - TEST</title>
29 27
30 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script>
31 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script> 29 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script>
32 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css"> 30 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css">
33 31
34 <script type='text/javascript' src='../../../js/JSON/json2.js'></script> 32 <script type='text/javascript' src='../../../js/JSON/json2.js'></script>
35 33
36 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script> 34 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script>
37 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script> 35 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script>
38 <script type='text/javascript' src='../../../js/Clipperz/ByteArray.js'></script> 36 <script type='text/javascript' src='../../../js/Clipperz/ByteArray.js'></script>
39 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script> 37 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script>
40 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script> 38 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script>
41 <script type='text/javascript' src='../../../js/Clipperz/KeyValueObjectStore.js'></script> 39 <script type='text/javascript' src='../../../js/Clipperz/KeyValueObjectStore.js'></script>
42 40
43 41
44 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script> 42 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script>
45 43
46</head> 44</head>
47<body> 45<body>
48<pre id="test"> 46<pre id="test">
49<script type="text/javascript" src="Base.test.js"></script> 47<script type="text/javascript" src="Base.test.js"></script>
50</pre> 48</pre>
51</body> 49</body>
52</html> 50</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/Base.test.js b/frontend/gamma/tests/tests/Clipperz/Base.test.js
index fc827f7..7ae611d 100644
--- a/frontend/gamma/tests/tests/Clipperz/Base.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/Base.test.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26 24
27//============================================================================= 25//=============================================================================
28 26
29testEvalJSON = function(aString, shouldFail, aDescription) { 27testEvalJSON = function(aString, shouldFail, aDescription) {
30 var result; 28 var result;
31 29
32 if (shouldFail == true) { 30 if (shouldFail == true) {
33 try { 31 try {
34 result = Clipperz.Base.evalJSON(aString); 32 result = Clipperz.Base.evalJSON(aString);
35 is(true, false, aDescription + ": vulnerability not caught"); 33 is(true, false, aDescription + ": vulnerability not caught");
36//console.log(result); 34//console.log(result);
37 } catch(exception) { 35 } catch(exception) {
38 is(true, true, aDescription + ": vulnerability correctly caught"); 36 is(true, true, aDescription + ": vulnerability correctly caught");
39 } 37 }
40 } else { 38 } else {
41 try { 39 try {
42 result = Clipperz.Base.evalJSON(aString); 40 result = Clipperz.Base.evalJSON(aString);
43 is(true, true, aDescription + ": configuration correctly checked"); 41 is(true, true, aDescription + ": configuration correctly checked");
44 } catch(exception) { 42 } catch(exception) {
45 is(true, false, aDescription + ": configuration wrongly caught as malicious"); 43 is(true, false, aDescription + ": configuration wrongly caught as malicious");
46 // console.log(exception); 44 // console.log(exception);
47 } 45 }
48 } 46 }
49 47
50 return result; 48 return result;
51} 49}
52 50
53//============================================================================= 51//=============================================================================
54 52
55var tests = { 53var tests = {
56 54
57 '001_test': function () { 55 '001_test': function () {
58 var stringToSplit; 56 var stringToSplit;
59 varsplittedString; 57 varsplittedString;
60 58
61 stringToSplit = "stringToSplit"; 59 stringToSplit = "stringToSplit";
62 splittedString = Clipperz.Base.splitStringAtFixedTokenSize(stringToSplit, 2); 60 splittedString = Clipperz.Base.splitStringAtFixedTokenSize(stringToSplit, 2);
63 is(splittedString.length, 7); 61 is(splittedString.length, 7);
64 is(splittedString[0], 'st'); 62 is(splittedString[0], 'st');
65 is(splittedString[1], 'ri'); 63 is(splittedString[1], 'ri');
66 is(splittedString[2], 'ng'); 64 is(splittedString[2], 'ng');
67 is(splittedString[3], 'To'); 65 is(splittedString[3], 'To');
68 is(splittedString[4], 'Sp'); 66 is(splittedString[4], 'Sp');
69 is(splittedString[5], 'li'); 67 is(splittedString[5], 'li');
70 is(splittedString[6], 't', "test that should pass"); 68 is(splittedString[6], 't', "test that should pass");
diff --git a/frontend/gamma/tests/tests/Clipperz/ByteArray.html b/frontend/gamma/tests/tests/Clipperz/ByteArray.html
index 6dc7116..5c496c9 100644
--- a/frontend/gamma/tests/tests/Clipperz/ByteArray.html
+++ b/frontend/gamma/tests/tests/Clipperz/ByteArray.html
@@ -1,68 +1,66 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.ByteArray - tests</title> 26 <title>Clipperz.ByteArray - tests</title>
29 27
30 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 28 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
31 29
32 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> 30 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script>
33 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script> 31 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script>
34 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css"> 32 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css">
35 33
36 <script type='text/javascript' src='../../../js/JSON/json2.js'></script> 34 <script type='text/javascript' src='../../../js/JSON/json2.js'></script>
37 35
38 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script> 36 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script>
39 <script type='text/javascript' src='../../../js/Clipperz/YUI/DomHelper.js'></script> 37 <script type='text/javascript' src='../../../js/Clipperz/YUI/DomHelper.js'></script>
40 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script> 38 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script>
41 <script type='text/javascript' src='../../../js/Clipperz/ByteArray.js'></script> 39 <script type='text/javascript' src='../../../js/Clipperz/ByteArray.js'></script>
42 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script> 40 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script>
43 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script> 41 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script>
44 <script type='text/javascript' src='../../../js/Clipperz/Crypto/Base.js'></script> 42 <script type='text/javascript' src='../../../js/Clipperz/Crypto/Base.js'></script>
45 <script type='text/javascript' src='../../../js/Clipperz/Crypto/BigInt.js'></script> 43 <script type='text/javascript' src='../../../js/Clipperz/Crypto/BigInt.js'></script>
46 <script type='text/javascript' src='../../../js/Clipperz/Crypto/AES.js'></script> 44 <script type='text/javascript' src='../../../js/Clipperz/Crypto/AES.js'></script>
47 <script type='text/javascript' src='../../../js/Clipperz/Crypto/SHA.js'></script> 45 <script type='text/javascript' src='../../../js/Clipperz/Crypto/SHA.js'></script>
48 <script type='text/javascript' src='../../../js/Clipperz/Crypto/PRNG.js'></script> 46 <script type='text/javascript' src='../../../js/Clipperz/Crypto/PRNG.js'></script>
49 <!-- script type='text/javascript' src='../../../js/Clipperz/Crypto/BigInt.js'></script --> 47 <!-- script type='text/javascript' src='../../../js/Clipperz/Crypto/BigInt.js'></script -->
50 48
51 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script> 49 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script>
52 50
53</head> 51</head>
54<body> 52<body>
55 53
56<pre id="test"> 54<pre id="test">
57<script> 55<script>
58 Clipperz_IEisBroken = false; 56 Clipperz_IEisBroken = false;
59</script> 57</script>
60 <script type="text/javascript"> 58 <script type="text/javascript">
61 var longAsciiText = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam ac ipsum. Morbi mauris. Aenean ac elit id metus lobortis elementum. Proin at quam ac ipsum pellentesque adipiscing. Aenean vestibulum, nisl eu suscipit iaculis, quam pede congue mi, sit amet dapibus metus neque eget dui. Suspendisse posuere diam ac sapien. Nulla lobortis dapibus leo. Quisque ornare tortor quis turpis. Aliquam erat volutpat. Ut faucibus lacinia magna. Nunc metus leo, volutpat quis, mollis ac, sagittis ut, turpis. Quisque purus. Mauris ante enim, vehicula eu, suscipit vitae, laoreet vel, nulla. Pellentesque pede leo, aliquam quis, vehicula eget, rhoncus nec, metus. Vestibulum tellus. Suspendisse blandit. Pellentesque vel tellus. Maecenas arcu. Duis eget purus. Curabitur non pede nec odio cursus luctus. In non elit. Nullam eget nunc in nisl elementum commodo. Vivamus sollicitudin pede quis dui. Morbi commodo. Praesent a risus id urna hendrerit fermentum. Nunc ultricies tristique odio. Phasellus imperdiet, sapien eget viverra blandit, tortor risus blandit nisi, et sodales libero dolor quis nisl. Morbi vel enim. Nunc in quam. Vestibulum a magna. Fusce auctor elit in augue. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris tincidunt consectetuer leo. Etiam non turpis. Vestibulum eros. Praesent venenatis adipiscing augue. Pellentesque dapibus odio ac arcu rhoncus sagittis. Nullam vitae augue. Ut magna nulla, congue eu, porta in, egestas quis, ligula. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur malesuada neque non nulla. Nulla facilisi. Fusce viverra magna ut tellus. Sed rutrum pretium sapien. Vivamus dui. Cras fringilla. Nullam lorem. Vestibulum varius, purus at imperdiet fermentum, metus diam ultricies lacus, vitae aliquam ipsum libero sit amet felis. Sed eget eros ac velit commodo sollicitudin. Morbi in metus in mi viverra lacinia. Sed ut urna. Suspendisse imperdiet tellus ac velit. Duis malesuada velit sit amet sapien. Vestibulum a sapien id libero accumsan luctus. Fusce iaculis. Donec pulvinar orci ut pede. Nam placerat sem ut sem. Ut pretium bibendum nisl. Suspendisse potenti. Phasellus mollis neque in neque. Suspendisse augue magna, eleifend et, malesuada at, viverra in, nisl. Donec vel lectus in justo ultrices tristique. Aliquam erat volutpat. Morbi suscipit, risus ac volutpat mollis, risus metus hendrerit sapien, ac scelerisque est orci eu est. Quisque sit amet velit. Sed libero diam, semper id, eleifend ac, iaculis non, nulla. Donec varius tincidunt arcu. Sed quis metus eu erat adipiscing viverra. Donec odio. Aenean sagittis nisl sed purus. Fusce vel nibh quis felis accumsan bibendum. Etiam et risus ac tortor cursus pharetra. Maecenas tellus. Pellentesque nec felis id eros vehicula commodo. Aliquam interdum sagittis odio. Maecenas at lorem eget mi aliquet sagittis. Mauris quis nibh in odio sodales lacinia. Proin augue mauris, placerat a, blandit vel, tincidunt eget, ante. Quisque turpis purus, placerat eget, tempor consectetuer, aliquet ac, enim. Etiam eleifend vestibulum mi. Vivamus gravida. Morbi dolor. In hac habitasse platea dictumst. Nulla commodo lectus faucibus lorem. Phasellus aliquet pede id metus hendrerit tempus. Fusce convallis pede ac neque tempor dignissim. Sed vitae lorem sit amet justo dapibus porta. Ut quam orci, pretium non, sagittis nec, condimentum id, dolor. Sed tempor. Nunc porta rutrum leo. Nunc id sem. Sed nibh tortor, dapibus eget, feugiat a, pretium pretium, purus. Suspendisse suscipit lobortis sem. Praesent pharetra orci. Quisque molestie tristique quam. Maecenas nunc lorem, rhoncus non, venenatis sed, sodales at, felis. Quisque semper. Quisque malesuada est quis lacus. Nullam a justo. Aliquam pellentesque, ante ut congue molestie, nisl sapien posuere nisl, eu cursus nulla ligula vel nisl. Fusce commodo lacinia magna. Aenean rutrum vestibulum lorem. Pellentesque fermentum tristique ipsum. Nulla facilisi. Donec id mi eget ipsum commodo egestas. Mauris iaculis. Nulla vulputate mi at nisl. In condimentum sodales tellus. Donec metus orci, mollis vel, accumsan ac, ornare ac, lacus. Pellentesque accumsan est et tellus. Nam mollis. Aenean accumsan eros sit amet tellus. Praesent eu libero. Sed tempus urna nec dolor. Nulla facilisi. Duis eleifend rhoncus neque. Curabitur consectetuer quam eu justo. Sed metus. Vivamus risus. Aliquam erat volutpat. Aliquam erat volutpat. Nunc semper urna. Praesent molestie libero a lacus. Nullam suscipit lobortis velit. Praesent rhoncus, felis ut interdum dapibus, ipsum lectus vestibulum nulla, in interdum risus dolor eget orci. Nullam venenatis. Suspendisse laoreet, arcu a luctus consectetuer, libero ligula condimentum quam, eget elementum mauris tortor sed enim. Pellentesque leo. Nam interdum malesuada ante. Praesent fermentum nunc et dolor. Donec auctor volutpat odio. Pellentesque volutpat egestas ipsum. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras ac ligula eu justo dignissim accumsan. Nullam nisi. Fusce id sem. Fusce et urna. Pellentesque commodo pharetra lorem. Donec erat. Vestibulum elit arcu, commodo et, consequat eget, posuere eget, sem. Morbi sed nulla sed neque commodo commodo. Aliquam erat volutpat. Ut id turpis a enim malesuada vestibulum. In arcu dui, dignissim vitae, blandit eu, egestas ac, arcu. In ultricies sapien vitae nisi. Proin rhoncus magna eget tortor. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In dictum. Sed volutpat pharetra quam. Mauris eget eros. Fusce malesuada dolor id pede. Praesent nec justo sed nisi vehicula varius. In scelerisque convallis nulla. Pellentesque sodales massa vulputate urna. Duis metus urna, imperdiet ac, sodales vel, ullamcorper sed, pede. Vestibulum aliquam mollis metus. Praesent tempus tristique elit. Maecenas tellus tortor, pretium id, mollis id, molestie non, turpis. Vivamus nibh magna, bibendum vitae, a."; 59 var longAsciiText = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam ac ipsum. Morbi mauris. Aenean ac elit id metus lobortis elementum. Proin at quam ac ipsum pellentesque adipiscing. Aenean vestibulum, nisl eu suscipit iaculis, quam pede congue mi, sit amet dapibus metus neque eget dui. Suspendisse posuere diam ac sapien. Nulla lobortis dapibus leo. Quisque ornare tortor quis turpis. Aliquam erat volutpat. Ut faucibus lacinia magna. Nunc metus leo, volutpat quis, mollis ac, sagittis ut, turpis. Quisque purus. Mauris ante enim, vehicula eu, suscipit vitae, laoreet vel, nulla. Pellentesque pede leo, aliquam quis, vehicula eget, rhoncus nec, metus. Vestibulum tellus. Suspendisse blandit. Pellentesque vel tellus. Maecenas arcu. Duis eget purus. Curabitur non pede nec odio cursus luctus. In non elit. Nullam eget nunc in nisl elementum commodo. Vivamus sollicitudin pede quis dui. Morbi commodo. Praesent a risus id urna hendrerit fermentum. Nunc ultricies tristique odio. Phasellus imperdiet, sapien eget viverra blandit, tortor risus blandit nisi, et sodales libero dolor quis nisl. Morbi vel enim. Nunc in quam. Vestibulum a magna. Fusce auctor elit in augue. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris tincidunt consectetuer leo. Etiam non turpis. Vestibulum eros. Praesent venenatis adipiscing augue. Pellentesque dapibus odio ac arcu rhoncus sagittis. Nullam vitae augue. Ut magna nulla, congue eu, porta in, egestas quis, ligula. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur malesuada neque non nulla. Nulla facilisi. Fusce viverra magna ut tellus. Sed rutrum pretium sapien. Vivamus dui. Cras fringilla. Nullam lorem. Vestibulum varius, purus at imperdiet fermentum, metus diam ultricies lacus, vitae aliquam ipsum libero sit amet felis. Sed eget eros ac velit commodo sollicitudin. Morbi in metus in mi viverra lacinia. Sed ut urna. Suspendisse imperdiet tellus ac velit. Duis malesuada velit sit amet sapien. Vestibulum a sapien id libero accumsan luctus. Fusce iaculis. Donec pulvinar orci ut pede. Nam placerat sem ut sem. Ut pretium bibendum nisl. Suspendisse potenti. Phasellus mollis neque in neque. Suspendisse augue magna, eleifend et, malesuada at, viverra in, nisl. Donec vel lectus in justo ultrices tristique. Aliquam erat volutpat. Morbi suscipit, risus ac volutpat mollis, risus metus hendrerit sapien, ac scelerisque est orci eu est. Quisque sit amet velit. Sed libero diam, semper id, eleifend ac, iaculis non, nulla. Donec varius tincidunt arcu. Sed quis metus eu erat adipiscing viverra. Donec odio. Aenean sagittis nisl sed purus. Fusce vel nibh quis felis accumsan bibendum. Etiam et risus ac tortor cursus pharetra. Maecenas tellus. Pellentesque nec felis id eros vehicula commodo. Aliquam interdum sagittis odio. Maecenas at lorem eget mi aliquet sagittis. Mauris quis nibh in odio sodales lacinia. Proin augue mauris, placerat a, blandit vel, tincidunt eget, ante. Quisque turpis purus, placerat eget, tempor consectetuer, aliquet ac, enim. Etiam eleifend vestibulum mi. Vivamus gravida. Morbi dolor. In hac habitasse platea dictumst. Nulla commodo lectus faucibus lorem. Phasellus aliquet pede id metus hendrerit tempus. Fusce convallis pede ac neque tempor dignissim. Sed vitae lorem sit amet justo dapibus porta. Ut quam orci, pretium non, sagittis nec, condimentum id, dolor. Sed tempor. Nunc porta rutrum leo. Nunc id sem. Sed nibh tortor, dapibus eget, feugiat a, pretium pretium, purus. Suspendisse suscipit lobortis sem. Praesent pharetra orci. Quisque molestie tristique quam. Maecenas nunc lorem, rhoncus non, venenatis sed, sodales at, felis. Quisque semper. Quisque malesuada est quis lacus. Nullam a justo. Aliquam pellentesque, ante ut congue molestie, nisl sapien posuere nisl, eu cursus nulla ligula vel nisl. Fusce commodo lacinia magna. Aenean rutrum vestibulum lorem. Pellentesque fermentum tristique ipsum. Nulla facilisi. Donec id mi eget ipsum commodo egestas. Mauris iaculis. Nulla vulputate mi at nisl. In condimentum sodales tellus. Donec metus orci, mollis vel, accumsan ac, ornare ac, lacus. Pellentesque accumsan est et tellus. Nam mollis. Aenean accumsan eros sit amet tellus. Praesent eu libero. Sed tempus urna nec dolor. Nulla facilisi. Duis eleifend rhoncus neque. Curabitur consectetuer quam eu justo. Sed metus. Vivamus risus. Aliquam erat volutpat. Aliquam erat volutpat. Nunc semper urna. Praesent molestie libero a lacus. Nullam suscipit lobortis velit. Praesent rhoncus, felis ut interdum dapibus, ipsum lectus vestibulum nulla, in interdum risus dolor eget orci. Nullam venenatis. Suspendisse laoreet, arcu a luctus consectetuer, libero ligula condimentum quam, eget elementum mauris tortor sed enim. Pellentesque leo. Nam interdum malesuada ante. Praesent fermentum nunc et dolor. Donec auctor volutpat odio. Pellentesque volutpat egestas ipsum. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras ac ligula eu justo dignissim accumsan. Nullam nisi. Fusce id sem. Fusce et urna. Pellentesque commodo pharetra lorem. Donec erat. Vestibulum elit arcu, commodo et, consequat eget, posuere eget, sem. Morbi sed nulla sed neque commodo commodo. Aliquam erat volutpat. Ut id turpis a enim malesuada vestibulum. In arcu dui, dignissim vitae, blandit eu, egestas ac, arcu. In ultricies sapien vitae nisi. Proin rhoncus magna eget tortor. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In dictum. Sed volutpat pharetra quam. Mauris eget eros. Fusce malesuada dolor id pede. Praesent nec justo sed nisi vehicula varius. In scelerisque convallis nulla. Pellentesque sodales massa vulputate urna. Duis metus urna, imperdiet ac, sodales vel, ullamcorper sed, pede. Vestibulum aliquam mollis metus. Praesent tempus tristique elit. Maecenas tellus tortor, pretium id, mollis id, molestie non, turpis. Vivamus nibh magna, bibendum vitae, a.";
62 var longIsoLatin1Text = "¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùù"; 60 var longIsoLatin1Text = "¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùù";
63 var longUtf8Text = "客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之"; 61 var longUtf8Text = "客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之";
64 </script> 62 </script>
65 <script type="text/javascript" src="ByteArray.test.js"></script> 63 <script type="text/javascript" src="ByteArray.test.js"></script>
66</pre> 64</pre>
67</body> 65</body>
68</html> 66</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/ByteArray.test.js b/frontend/gamma/tests/tests/Clipperz/ByteArray.test.js
index 43d74a0..643bbf8 100644
--- a/frontend/gamma/tests/tests/Clipperz/ByteArray.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/ByteArray.test.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 24Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
27 25
28var tests = { 26var tests = {
29 27
30 //------------------------------------------------------------------------- 28 //-------------------------------------------------------------------------
31 29
32 'core_tests': function (someTestArgs) { 30 'core_tests': function (someTestArgs) {
33 // vardeferredResult; 31 // vardeferredResult;
34 32
35 // deferredResult = new Clipperz.Async.Deferred("core_tests", someTestArgs); 33 // deferredResult = new Clipperz.Async.Deferred("core_tests", someTestArgs);
36 // deferredResult.addCallback(function() { 34 // deferredResult.addCallback(function() {
37 var byteArray; 35 var byteArray;
38 36
39 byteArray = new Clipperz.ByteArray(); 37 byteArray = new Clipperz.ByteArray();
40 38
41 try { 39 try {
42 byteArray.checkByteValue(512); 40 byteArray.checkByteValue(512);
43 is(false, true, "a value greater that a byte (0x200) should have raised an exception - NO Exception"); 41 is(false, true, "a value greater that a byte (0x200) should have raised an exception - NO Exception");
44 } catch(e) { 42 } catch(e) {
45 // is(e.name, 43 // is(e.name,
46 // "Clipperz.ByteArray.exception.InvalidValue", 44 // "Clipperz.ByteArray.exception.InvalidValue",
47 // "appending a value greater that a byte (0x200) should have raised an exception - EXCEPTION HANDLER") 45 // "appending a value greater that a byte (0x200) should have raised an exception - EXCEPTION HANDLER")
48 ok(/Clipperz\.ByteArray\.exception\.InvalidValue.*/.test(e.name), 46 ok(/Clipperz\.ByteArray\.exception\.InvalidValue.*/.test(e.name),
49 "appending a value greater that a byte (0x200) should have raised an exception - EXCEPTION HANDLER") 47 "appending a value greater that a byte (0x200) should have raised an exception - EXCEPTION HANDLER")
50 }; 48 };
51 49
52 // }); 50 // });
53 // deferredResult.callback(); 51 // deferredResult.callback();
54 52
55 // return deferredResult; 53 // return deferredResult;
56 54
57 }, 55 },
58 56
59 //------------------------------------------------------------------------- 57 //-------------------------------------------------------------------------
60 58
61 'basic_tests': function (someTestArgs) { 59 'basic_tests': function (someTestArgs) {
62 vardeferredResult; 60 vardeferredResult;
63 61
64 deferredResult = new Clipperz.Async.Deferred("simple_tests", someTestArgs); 62 deferredResult = new Clipperz.Async.Deferred("simple_tests", someTestArgs);
65 deferredResult.addCallback(function() { 63 deferredResult.addCallback(function() {
66 var byteArray; 64 var byteArray;
67 var byteArray2; 65 var byteArray2;
68 varbyteArrayIterator; 66 varbyteArrayIterator;
69 varnextBlock; 67 varnextBlock;
70 68
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/AES.html b/frontend/gamma/tests/tests/Clipperz/Crypto/AES.html
index 16f64d0..27a81a4 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/AES.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/AES.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.Crypto.AES_v3 - TEST</title> 26 <title>Clipperz.Crypto.AES_v3 - TEST</title>
29 27
30 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
31 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 29 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
32 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 30 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
33 31
34 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 32 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
35 33
36 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
40 38
41 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
43 41
44</head> 42</head>
45<body> 43<body>
46<pre id="test"> 44<pre id="test">
47<script type="text/javascript"> 45<script type="text/javascript">
48 46
49try { 47try {
50 var block; 48 var block;
51 var keyValue; 49 var keyValue;
52 varkey; 50 varkey;
53 var encryptedBlock; 51 var encryptedBlock;
54 var startTime, endTime; 52 var startTime, endTime;
55 53
56 startTime = new Date(); 54 startTime = new Date();
57 55
58 keyValue = new Clipperz.ByteArray("0x00010203050607080a0b0c0d0f10111214151617191a1b1c1e1f202123242526"); 56 keyValue = new Clipperz.ByteArray("0x00010203050607080a0b0c0d0f10111214151617191a1b1c1e1f202123242526");
59 key = new Clipperz.Crypto.AES.Key({key:keyValue}); 57 key = new Clipperz.Crypto.AES.Key({key:keyValue});
60 block = new Clipperz.ByteArray("0x834eadfccac7e1b30664b1aba44815ab"); 58 block = new Clipperz.ByteArray("0x834eadfccac7e1b30664b1aba44815ab");
61 encryptedBlock = new Clipperz.ByteArray(Clipperz.Crypto.AES.encryptBlock(key, block.arrayValues())); 59 encryptedBlock = new Clipperz.ByteArray(Clipperz.Crypto.AES.encryptBlock(key, block.arrayValues()));
62 is(encryptedBlock.toHexString(), "0x1946dabf6a03a2a2c3d0b05080aed6fc", "Test 1"); 60 is(encryptedBlock.toHexString(), "0x1946dabf6a03a2a2c3d0b05080aed6fc", "Test 1");
63 61
64 keyValue = new Clipperz.ByteArray("0x28292a2b2d2e2f30323334353738393a3c3d3e3f41424344464748494b4c4d4e"); 62 keyValue = new Clipperz.ByteArray("0x28292a2b2d2e2f30323334353738393a3c3d3e3f41424344464748494b4c4d4e");
65 key = new Clipperz.Crypto.AES.Key({key:keyValue}); 63 key = new Clipperz.Crypto.AES.Key({key:keyValue});
66 block = new Clipperz.ByteArray("0xd9dc4dba3021b05d67c0518f72b62bf1"); 64 block = new Clipperz.ByteArray("0xd9dc4dba3021b05d67c0518f72b62bf1");
67 encryptedBlock = new Clipperz.ByteArray(Clipperz.Crypto.AES.encryptBlock(key, block.arrayValues())); 65 encryptedBlock = new Clipperz.ByteArray(Clipperz.Crypto.AES.encryptBlock(key, block.arrayValues()));
68 is(encryptedBlock.toHexString(), "0x5ed301d747d3cc715445ebdec62f2fb4", "Test 2"); 66 is(encryptedBlock.toHexString(), "0x5ed301d747d3cc715445ebdec62f2fb4", "Test 2");
69 67
70 keyValue = new Clipperz.ByteArray("0x50515253555657585a5b5c5d5f60616264656667696a6b6c6e6f707173747576"); 68 keyValue = new Clipperz.ByteArray("0x50515253555657585a5b5c5d5f60616264656667696a6b6c6e6f707173747576");
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/AES.performance.html b/frontend/gamma/tests/tests/Clipperz/Crypto/AES.performance.html
index a90d815..13dade4 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/AES.performance.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/AES.performance.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.Crypto.AES_performance - TEST</title> 26 <title>Clipperz.Crypto.AES_performance - TEST</title>
29 27
30 <script> 28 <script>
31 jslog_config_enabled = true; 29 jslog_config_enabled = true;
32 </script> 30 </script>
33 31
34 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 32 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
35 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 33 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
36 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 34 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
37 35
38 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 36 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
39 37
40 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
45 43
46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
49 47
50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
51 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 49 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
52 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> 50 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
53 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> 51 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
54 52
55</head> 53</head>
56<body> 54<body>
57<pre id="test"> 55<pre id="test">
58<script type="text/javascript"> 56<script type="text/javascript">
59Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 57Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
60 58
61try { 59try {
62 60
63 var password; 61 var password;
64 varplainText; 62 varplainText;
65 varencryptedText; 63 varencryptedText;
66 var decryptedText; 64 var decryptedText;
67 /* 65 /*
68 password = "trustno1"; 66 password = "trustno1";
69 plainText = "The quick brown fox jumps over the lazy dog"; 67 plainText = "The quick brown fox jumps over the lazy dog";
70//console.profile("encrypt"); 68//console.profile("encrypt");
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/Base.html b/frontend/gamma/tests/tests/Clipperz/Crypto/Base.html
index 83f0766..0e42790 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/Base.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/Base.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 26 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
29 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 27 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
30 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 28 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
31 29
32 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 30 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
33 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 31 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
34 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 32 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
35 33
36 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Functions.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Functions.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
40 38
41</head> 39</head>
42<body> 40<body>
43<pre id="test"> 41<pre id="test">
44<script type="text/javascript"> 42<script type="text/javascript">
45try { 43try {
46 var secretKey; 44 var secretKey;
47 varpublicKey; 45 varpublicKey;
48 varplainString; 46 varplainString;
49 varencryptedString; 47 varencryptedString;
50 48
51 49
52 secretKey = "s3cr37k39"; 50 secretKey = "s3cr37k39";
53 plainString = "The Quick Brown Fox Jumps Over The Lazy Dog"; 51 plainString = "The Quick Brown Fox Jumps Over The Lazy Dog";
54 encryptedString = Clipperz.Crypto.Base.encryptUsingSecretKey(secretKey, plainString); 52 encryptedString = Clipperz.Crypto.Base.encryptUsingSecretKey(secretKey, plainString);
55 53
56 //------------------------------------------------------------------------- 54 //-------------------------------------------------------------------------
57 // 55 //
58 //Secret key encryption / decryption 56 //Secret key encryption / decryption
59 // 57 //
60 is (isUndefinedOrNull(encryptedString), false, "An encrypted string should not be empty"); 58 is (isUndefinedOrNull(encryptedString), false, "An encrypted string should not be empty");
61 is (plainString, Clipperz.Crypto.Base.decryptUsingSecretKey(secretKey, encryptedString), "I should be able to encrypt and then decrypt safely"); 59 is (plainString, Clipperz.Crypto.Base.decryptUsingSecretKey(secretKey, encryptedString), "I should be able to encrypt and then decrypt safely");
62 60
63 try { 61 try {
64 vardecryptedText; 62 vardecryptedText;
65 63
66 decryptedText = Clipperz.Crypto.Base.decryptUsingSecretKey("anotherKey", encryptedString); 64 decryptedText = Clipperz.Crypto.Base.decryptUsingSecretKey("anotherKey", encryptedString);
67 ok( false, "It should not be possible to decrypt a text with a different passphrase (decrypted text: " + decryptedText + ")" ); 65 ok( false, "It should not be possible to decrypt a text with a different passphrase (decrypted text: " + decryptedText + ")" );
68 } catch (e) { 66 } catch (e) {
69 ok( e instanceof Error, "Trying to decrypt a message with the wrong passphrase raised an error" ); 67 ok( e instanceof Error, "Trying to decrypt a message with the wrong passphrase raised an error" );
70 } 68 }
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/BigInt.html b/frontend/gamma/tests/tests/Clipperz/Crypto/BigInt.html
index f4db3b7..f94618c 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/BigInt.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/BigInt.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 26 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
29 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 27 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
30 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 28 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
31 29
32 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 30 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
33 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 31 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
34 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 32 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
35 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
36 34
37 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Functions.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Functions.js'></script>
40</head> 38</head>
41<body> 39<body>
42<pre id="test"> 40<pre id="test">
43<script type="text/javascript"> 41<script type="text/javascript">
44try { 42try {
45 varbigInt_1; 43 varbigInt_1;
46 varbigInt_2; 44 varbigInt_2;
47 varresult; 45 varresult;
48 varexpectedResult; 46 varexpectedResult;
49 47
50 // 48 //
51 //Constructur and equality test 49 //Constructur and equality test
52 // 50 //
53 bigInt_1 = new Clipperz.Crypto.BigInt("110"); 51 bigInt_1 = new Clipperz.Crypto.BigInt("110");
54 is (bigInt_1.equals(bigInt_1), true, ""); 52 is (bigInt_1.equals(bigInt_1), true, "");
55 53
56 bigInt_1 = new Clipperz.Crypto.BigInt("110"); 54 bigInt_1 = new Clipperz.Crypto.BigInt("110");
57 bigInt_2 = new Clipperz.Crypto.BigInt("110", 10); 55 bigInt_2 = new Clipperz.Crypto.BigInt("110", 10);
58 is (bigInt_1.equals(bigInt_2), true, ""); 56 is (bigInt_1.equals(bigInt_2), true, "");
59 57
60 bigInt_1 = new Clipperz.Crypto.BigInt("110"); 58 bigInt_1 = new Clipperz.Crypto.BigInt("110");
61 bigInt_2 = new Clipperz.Crypto.BigInt(110); 59 bigInt_2 = new Clipperz.Crypto.BigInt(110);
62 is (bigInt_1.equals(bigInt_2), true, ""); 60 is (bigInt_1.equals(bigInt_2), true, "");
63 61
64 bigInt_1 = new Clipperz.Crypto.BigInt(6); 62 bigInt_1 = new Clipperz.Crypto.BigInt(6);
65 bigInt_2 = new Clipperz.Crypto.BigInt("110", 2); 63 bigInt_2 = new Clipperz.Crypto.BigInt("110", 2);
66 is (bigInt_1.equals(bigInt_2), true, ""); 64 is (bigInt_1.equals(bigInt_2), true, "");
67 65
68 bigInt_1 = new Clipperz.Crypto.BigInt(6); 66 bigInt_1 = new Clipperz.Crypto.BigInt(6);
69 bigInt_2 = new Clipperz.Crypto.BigInt("110", 3); 67 bigInt_2 = new Clipperz.Crypto.BigInt("110", 3);
70 is (bigInt_1.equals(bigInt_2), false, ""); 68 is (bigInt_1.equals(bigInt_2), false, "");
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.B283.deferred.html b/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.B283.deferred.html
index 9ef9146..6e3f871 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.B283.deferred.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.B283.deferred.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28<!-- - -> 26<!-- - ->
29 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 27 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
30<!- - --> 28<!- - -->
31<!-- --> 29<!-- -->
32 <script type="text/javascript" src="../../../../js/MochiKit/Base.js"></script> 30 <script type="text/javascript" src="../../../../js/MochiKit/Base.js"></script>
33 <script type="text/javascript" src="../../../../js/MochiKit/Async.js"></script> 31 <script type="text/javascript" src="../../../../js/MochiKit/Async.js"></script>
34 <script type="text/javascript" src="../../../../js/MochiKit/DOM.js"></script> 32 <script type="text/javascript" src="../../../../js/MochiKit/DOM.js"></script>
35 <script type="text/javascript" src="../../../../js/MochiKit/Logging.js"></script> 33 <script type="text/javascript" src="../../../../js/MochiKit/Logging.js"></script>
36 <script type="text/javascript" src="../../../../js/MochiKit/Iter.js"></script> 34 <script type="text/javascript" src="../../../../js/MochiKit/Iter.js"></script>
37<!-- --> 35<!-- -->
38 36
39<!-- - -> 37<!-- - ->
40 <script type="text/javascript" src="../../../../js/MochiKit/Style.js"></script> 38 <script type="text/javascript" src="../../../../js/MochiKit/Style.js"></script>
41 <script type="text/javascript" src="../../../../js/MochiKit/Signal.js"></script> 39 <script type="text/javascript" src="../../../../js/MochiKit/Signal.js"></script>
42 <script type="text/javascript" src="../../../../js/MochiKit/Color.js"></script> 40 <script type="text/javascript" src="../../../../js/MochiKit/Color.js"></script>
43 <script type="text/javascript" src="../../../../js/MochiKit/Position.js"></script> 41 <script type="text/javascript" src="../../../../js/MochiKit/Position.js"></script>
44 <script type="text/javascript" src="../../../../js/MochiKit/Visual.js"></script> 42 <script type="text/javascript" src="../../../../js/MochiKit/Visual.js"></script>
45<!- - --> 43<!- - -->
46 44
47 45
48 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 46 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
49 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 47 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
50 48
51<!--<script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>--> 49<!--<script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>-->
52<!--<script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>--> 50<!--<script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>-->
53<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>--> 51<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>-->
54 52
55 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Value.js'></script> 53 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Value.js'></script>
56 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Point.js'></script> 54 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Point.js'></script>
57 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js'></script> 55 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js'></script>
58 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Curve.js'></script> 56 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Curve.js'></script>
59 57
60 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/StandardCurves.js'></script> 58 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/StandardCurves.js'></script>
61 59
62</head> 60</head>
63<body> 61<body>
64<pre id="test"> 62<pre id="test">
65<script type="text/javascript"> 63<script type="text/javascript">
66try { 64try {
67 65
68 var deferredResult; 66 var deferredResult;
69 67
70 68
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.FiniteField.B283.html b/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.FiniteField.B283.html
index 93d8695..f87bdbe 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.FiniteField.B283.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.FiniteField.B283.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 26 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
29 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 27 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
30 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 28 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
31 29
32 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 30 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
33 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 31 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
34 32
35 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
36 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
37<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC.js'></script>--> 35<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC.js'></script>-->
38 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Value.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Value.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Point.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Point.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Curve.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Curve.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Functions.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Functions.js'></script>
43</head> 41</head>
44<body> 42<body>
45<pre id="test"> 43<pre id="test">
46<script type="text/javascript"> 44<script type="text/javascript">
47try { 45try {
48 // 46 //
49 //ECC.BinaryFiniteField 47 //ECC.BinaryFiniteField
50 // 48 //
51 varf2m; 49 varf2m;
52 varf2m_improved; 50 varf2m_improved;
53 var a, a1, b; 51 var a, a1, b;
54 var result; 52 var result;
55 var result_improved; 53 var result_improved;
56 var expectedResul; 54 var expectedResul;
57 55
58 f2m = new Clipperz.Crypto.ECC.BinaryField.FiniteField({modulus:new Clipperz.Crypto.ECC.BinaryField.Value('08000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 000010a1', 16)}) 56 f2m = new Clipperz.Crypto.ECC.BinaryField.FiniteField({modulus:new Clipperz.Crypto.ECC.BinaryField.Value('08000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 000010a1', 16)})
59 f2m_improved = Clipperz.Crypto.ECC.StandardCurves.B283().finiteField(); 57 f2m_improved = Clipperz.Crypto.ECC.StandardCurves.B283().finiteField();
60 a = new Clipperz.Crypto.ECC.BinaryField.Value("05c91e41 d9ca17ef 9d8a33c1 a44eba6d 368fde02 1c492077 1a46eb01 a481e5f7 f430749d", 16); 58 a = new Clipperz.Crypto.ECC.BinaryField.Value("05c91e41 d9ca17ef 9d8a33c1 a44eba6d 368fde02 1c492077 1a46eb01 a481e5f7 f430749d", 16);
61 b = new Clipperz.Crypto.ECC.BinaryField.Value("07377071 2de7d57b a803f65f 45786c06 876b8066 db75ec47 81c053b0 a0f78e2c a6ab5187", 16); 59 b = new Clipperz.Crypto.ECC.BinaryField.Value("07377071 2de7d57b a803f65f 45786c06 876b8066 db75ec47 81c053b0 a0f78e2c a6ab5187", 16);
62 60
63 // 61 //
64 //addition 62 //addition
65 // 63 //
66 result = f2m.add(a, b); 64 result = f2m.add(a, b);
67 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("2fe6e30f42dc2943589c59ee136d66bb1e45e64c73ccc309b86b8b104766bdb529b251a", 16); 65 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("2fe6e30f42dc2943589c59ee136d66bb1e45e64c73ccc309b86b8b104766bdb529b251a", 16);
68 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.add"); 66 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.add");
69 67
70 68
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.FiniteField.html b/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.FiniteField.html
index 658c402..5feb7df 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.FiniteField.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.FiniteField.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 26 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
29 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 27 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
30 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 28 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
31 29
32 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 30 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
33 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 31 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
34 32
35 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
36 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
37<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC.js'></script>--> 35<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC.js'></script>-->
38 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Value.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Value.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Point.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Point.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Curve.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Curve.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Functions.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Functions.js'></script>
43</head> 41</head>
44<body> 42<body>
45<pre id="test"> 43<pre id="test">
46<script type="text/javascript"> 44<script type="text/javascript">
47try { 45try {
48 // 46 //
49 //ECC.BinaryFiniteField 47 //ECC.BinaryFiniteField
50 // 48 //
51 varf2m; 49 varf2m;
52 varf2m_improved; 50 varf2m_improved;
53 var a, b; 51 var a, b;
54 var result; 52 var result;
55 var result_improved; 53 var result_improved;
56 var expectedResul; 54 var expectedResul;
57 55
58 f2m = new Clipperz.Crypto.ECC.BinaryField.FiniteField({modulus:new Clipperz.Crypto.ECC.BinaryField.Value('80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000425', 16)}) 56 f2m = new Clipperz.Crypto.ECC.BinaryField.FiniteField({modulus:new Clipperz.Crypto.ECC.BinaryField.Value('80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000425', 16)})
59 f2m_improved = Clipperz.Crypto.ECC.StandardCurves.B571().finiteField(); 57 f2m_improved = Clipperz.Crypto.ECC.StandardCurves.B571().finiteField();
60 a = new Clipperz.Crypto.ECC.BinaryField.Value("01401ca8 7b8f1446 84a2c58a e9308c23 7789e4bf 1f36dd11 7c150b7d 6076dd1d a6197fe4 c5225a06 4db0e422 2589d5ca 50eb6bb6 b7147a03 f6152843 8a8767c6 a6c4a688 3fd6f067", 16); 58 a = new Clipperz.Crypto.ECC.BinaryField.Value("01401ca8 7b8f1446 84a2c58a e9308c23 7789e4bf 1f36dd11 7c150b7d 6076dd1d a6197fe4 c5225a06 4db0e422 2589d5ca 50eb6bb6 b7147a03 f6152843 8a8767c6 a6c4a688 3fd6f067", 16);
61 b = new Clipperz.Crypto.ECC.BinaryField.Value("0112f5c9 7e74737b 38925faf e22cea3e 12b868d4 ddea5b33 41db8fc2 e788cab7 4f0a7a3c c27087a8 93659453 69938650 a99217d5 66e13f80 dc87f082 73f7411b 6b01ef1d 399c772a", 16); 59 b = new Clipperz.Crypto.ECC.BinaryField.Value("0112f5c9 7e74737b 38925faf e22cea3e 12b868d4 ddea5b33 41db8fc2 e788cab7 4f0a7a3c c27087a8 93659453 69938650 a99217d5 66e13f80 dc87f082 73f7411b 6b01ef1d 399c772a", 16);
62 60
63 // 61 //
64 //addition 62 //addition
65 // 63 //
66 result = f2m.add(a, b); 64 result = f2m.add(a, b);
67 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("52e96105fb673dbc309a250b1c661d65318c6bc2dc86223dce84bf87fe17aae91305d80752ddaeded570714c1a539af9797c63d1f545832a92d8c1f97026ddcdc54995064a874d", 16); 65 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("52e96105fb673dbc309a250b1c661d65318c6bc2dc86223dce84bf87fe17aae91305d80752ddaeded570714c1a539af9797c63d1f545832a92d8c1f97026ddcdc54995064a874d", 16);
68 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.add"); 66 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.add");
69 67
70 68
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.Value.html b/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.Value.html
index 0d0903d..8da2b6d 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.Value.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.Value.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 26 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
29 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 27 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
30 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 28 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
31 29
32 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 30 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
33 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 31 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
34 32
35 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
36 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
37<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC.js'></script>--> 35<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC.js'></script>-->
38 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Value.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Value.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Point.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Point.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Curve.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Curve.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Functions.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Functions.js'></script>
43</head> 41</head>
44<body> 42<body>
45<pre id="test"> 43<pre id="test">
46<script type="text/javascript"> 44<script type="text/javascript">
47try { 45try {
48 var value_1; 46 var value_1;
49 var value_2; 47 var value_2;
50 48
51 value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("a", 16); 49 value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("a", 16);
52 is(value_1.asString(16), "0a"); 50 is(value_1.asString(16), "0a");
53 51
54 value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("ffff", 16); 52 value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("ffff", 16);
55 is(value_1.asString(16), "ffff"); 53 is(value_1.asString(16), "ffff");
56 54
57 value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("7fff", 16); 55 value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("7fff", 16);
58 is(value_1.asString(16), "7fff"); 56 is(value_1.asString(16), "7fff");
59 57
60 is(parseInt("ffff", 16), 65535); 58 is(parseInt("ffff", 16), 65535);
61 is(parseInt("ffffff", 16), 16777215); 59 is(parseInt("ffffff", 16), 16777215);
62 is(parseInt("ffffffff", 16), 4294967295); 60 is(parseInt("ffffffff", 16), 4294967295);
63 is(parseInt("ffffffffff", 16), 1099511627775); 61 is(parseInt("ffffffffff", 16), 1099511627775);
64 is(parseInt("ffffffffffff", 16), 281474976710655); 62 is(parseInt("ffffffffffff", 16), 281474976710655);
65 is(parseInt("ffffffffffffff", 16), 72057594037927940); 63 is(parseInt("ffffffffffffff", 16), 72057594037927940);
66 is(parseInt("ffffffffffffffff", 16), 18446744073709552000); 64 is(parseInt("ffffffffffffffff", 16), 18446744073709552000);
67 is(parseInt("10000000000000000", 16), 18446744073709552001); 65 is(parseInt("10000000000000000", 16), 18446744073709552001);
68 is(parseInt("10000000000000001", 16), 18446744073709552002); 66 is(parseInt("10000000000000001", 16), 18446744073709552002);
69 is(parseInt("10000000000000009", 16), 18446744073709552010); 67 is(parseInt("10000000000000009", 16), 18446744073709552010);
70 68
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.K283.deferred.html b/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.K283.deferred.html
index b784f66..ab0fc5c 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.K283.deferred.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.K283.deferred.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28<!-- - -> 26<!-- - ->
29 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 27 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
30<!- - --> 28<!- - -->
31<!-- --> 29<!-- -->
32 <script type="text/javascript" src="../../../../js/MochiKit/Base.js"></script> 30 <script type="text/javascript" src="../../../../js/MochiKit/Base.js"></script>
33 <script type="text/javascript" src="../../../../js/MochiKit/Async.js"></script> 31 <script type="text/javascript" src="../../../../js/MochiKit/Async.js"></script>
34 <script type="text/javascript" src="../../../../js/MochiKit/DOM.js"></script> 32 <script type="text/javascript" src="../../../../js/MochiKit/DOM.js"></script>
35 <script type="text/javascript" src="../../../../js/MochiKit/Logging.js"></script> 33 <script type="text/javascript" src="../../../../js/MochiKit/Logging.js"></script>
36 <script type="text/javascript" src="../../../../js/MochiKit/Iter.js"></script> 34 <script type="text/javascript" src="../../../../js/MochiKit/Iter.js"></script>
37<!-- --> 35<!-- -->
38 36
39<!-- - -> 37<!-- - ->
40 <script type="text/javascript" src="../../../../js/MochiKit/Style.js"></script> 38 <script type="text/javascript" src="../../../../js/MochiKit/Style.js"></script>
41 <script type="text/javascript" src="../../../../js/MochiKit/Signal.js"></script> 39 <script type="text/javascript" src="../../../../js/MochiKit/Signal.js"></script>
42 <script type="text/javascript" src="../../../../js/MochiKit/Color.js"></script> 40 <script type="text/javascript" src="../../../../js/MochiKit/Color.js"></script>
43 <script type="text/javascript" src="../../../../js/MochiKit/Position.js"></script> 41 <script type="text/javascript" src="../../../../js/MochiKit/Position.js"></script>
44 <script type="text/javascript" src="../../../../js/MochiKit/Visual.js"></script> 42 <script type="text/javascript" src="../../../../js/MochiKit/Visual.js"></script>
45<!- - --> 43<!- - -->
46 44
47 45
48 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 46 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
49 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 47 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
50 48
51<!--<script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>--> 49<!--<script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>-->
52<!--<script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>--> 50<!--<script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>-->
53<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>--> 51<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>-->
54 52
55<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Value.js'></script>--> 53<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Value.js'></script>-->
56<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Point.js'></script>--> 54<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Point.js'></script>-->
57<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js'></script>--> 55<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js'></script>-->
58<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Curve.js'></script>--> 56<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Curve.js'></script>-->
59 57
60 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/Koblitz/Value.js'></script> 58 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/Koblitz/Value.js'></script>
61 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/Koblitz/Point.js'></script> 59 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/Koblitz/Point.js'></script>
62 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/Koblitz/FiniteField.js'></script> 60 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/Koblitz/FiniteField.js'></script>
63 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/Koblitz/Curve.js'></script> 61 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/Koblitz/Curve.js'></script>
64 62
65 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/StandardCurves.js'></script> 63 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/StandardCurves.js'></script>
66 64
67</head> 65</head>
68<body> 66<body>
69<pre id="test"> 67<pre id="test">
70<script type="text/javascript"> 68<script type="text/javascript">
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/JSCrypto_vs_Clipperz.html b/frontend/gamma/tests/tests/Clipperz/Crypto/JSCrypto_vs_Clipperz.html
index 2968894..95f21a3 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/JSCrypto_vs_Clipperz.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/JSCrypto_vs_Clipperz.html
@@ -1,67 +1,65 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.Crypto.JSCrypto_vs_Clipperz - tests</title> 26 <title>Clipperz.Crypto.JSCrypto_vs_Clipperz - tests</title>
29 27
30 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 28 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
31 29
32 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 30 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
33 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 31 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
34 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 32 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
35 33
36 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 34 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
37 35
38 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
49 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> 47 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
50 48
51 <script type='text/javascript' src='./jscrypto.js'></script> 49 <script type='text/javascript' src='./jscrypto.js'></script>
52 50
53 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script> 51 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script>
54 52
55</head> 53</head>
56<body> 54<body>
57 55
58<pre id="test"> 56<pre id="test">
59 <script type="text/javascript"> 57 <script type="text/javascript">
60 var longAsciiText = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam ac ipsum. Morbi mauris. Aenean ac elit id metus lobortis elementum. Proin at quam ac ipsum pellentesque adipiscing. Aenean vestibulum, nisl eu suscipit iaculis, quam pede congue mi, sit amet dapibus metus neque eget dui. Suspendisse posuere diam ac sapien. Nulla lobortis dapibus leo. Quisque ornare tortor quis turpis. Aliquam erat volutpat. Ut faucibus lacinia magna. Nunc metus leo, volutpat quis, mollis ac, sagittis ut, turpis. Quisque purus. Mauris ante enim, vehicula eu, suscipit vitae, laoreet vel, nulla. Pellentesque pede leo, aliquam quis, vehicula eget, rhoncus nec, metus. Vestibulum tellus. Suspendisse blandit. Pellentesque vel tellus. Maecenas arcu. Duis eget purus. Curabitur non pede nec odio cursus luctus. In non elit. Nullam eget nunc in nisl elementum commodo. Vivamus sollicitudin pede quis dui. Morbi commodo. Praesent a risus id urna hendrerit fermentum. Nunc ultricies tristique odio. Phasellus imperdiet, sapien eget viverra blandit, tortor risus blandit nisi, et sodales libero dolor quis nisl. Morbi vel enim. Nunc in quam. Vestibulum a magna. Fusce auctor elit in augue. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris tincidunt consectetuer leo. Etiam non turpis. Vestibulum eros. Praesent venenatis adipiscing augue. Pellentesque dapibus odio ac arcu rhoncus sagittis. Nullam vitae augue. Ut magna nulla, congue eu, porta in, egestas quis, ligula. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur malesuada neque non nulla. Nulla facilisi. Fusce viverra magna ut tellus. Sed rutrum pretium sapien. Vivamus dui. Cras fringilla. Nullam lorem. Vestibulum varius, purus at imperdiet fermentum, metus diam ultricies lacus, vitae aliquam ipsum libero sit amet felis. Sed eget eros ac velit commodo sollicitudin. Morbi in metus in mi viverra lacinia. Sed ut urna. Suspendisse imperdiet tellus ac velit. Duis malesuada velit sit amet sapien. Vestibulum a sapien id libero accumsan luctus. Fusce iaculis. Donec pulvinar orci ut pede. Nam placerat sem ut sem. Ut pretium bibendum nisl. Suspendisse potenti. Phasellus mollis neque in neque. Suspendisse augue magna, eleifend et, malesuada at, viverra in, nisl. Donec vel lectus in justo ultrices tristique. Aliquam erat volutpat. Morbi suscipit, risus ac volutpat mollis, risus metus hendrerit sapien, ac scelerisque est orci eu est. Quisque sit amet velit. Sed libero diam, semper id, eleifend ac, iaculis non, nulla. Donec varius tincidunt arcu. Sed quis metus eu erat adipiscing viverra. Donec odio. Aenean sagittis nisl sed purus. Fusce vel nibh quis felis accumsan bibendum. Etiam et risus ac tortor cursus pharetra. Maecenas tellus. Pellentesque nec felis id eros vehicula commodo. Aliquam interdum sagittis odio. Maecenas at lorem eget mi aliquet sagittis. Mauris quis nibh in odio sodales lacinia. Proin augue mauris, placerat a, blandit vel, tincidunt eget, ante. Quisque turpis purus, placerat eget, tempor consectetuer, aliquet ac, enim. Etiam eleifend vestibulum mi. Vivamus gravida. Morbi dolor. In hac habitasse platea dictumst. Nulla commodo lectus faucibus lorem. Phasellus aliquet pede id metus hendrerit tempus. Fusce convallis pede ac neque tempor dignissim. Sed vitae lorem sit amet justo dapibus porta. Ut quam orci, pretium non, sagittis nec, condimentum id, dolor. Sed tempor. Nunc porta rutrum leo. Nunc id sem. Sed nibh tortor, dapibus eget, feugiat a, pretium pretium, purus. Suspendisse suscipit lobortis sem. Praesent pharetra orci. Quisque molestie tristique quam. Maecenas nunc lorem, rhoncus non, venenatis sed, sodales at, felis. Quisque semper. Quisque malesuada est quis lacus. Nullam a justo. Aliquam pellentesque, ante ut congue molestie, nisl sapien posuere nisl, eu cursus nulla ligula vel nisl. Fusce commodo lacinia magna. Aenean rutrum vestibulum lorem. Pellentesque fermentum tristique ipsum. Nulla facilisi. Donec id mi eget ipsum commodo egestas. Mauris iaculis. Nulla vulputate mi at nisl. In condimentum sodales tellus. Donec metus orci, mollis vel, accumsan ac, ornare ac, lacus. Pellentesque accumsan est et tellus. Nam mollis. Aenean accumsan eros sit amet tellus. Praesent eu libero. Sed tempus urna nec dolor. Nulla facilisi. Duis eleifend rhoncus neque. Curabitur consectetuer quam eu justo. Sed metus. Vivamus risus. Aliquam erat volutpat. Aliquam erat volutpat. Nunc semper urna. Praesent molestie libero a lacus. Nullam suscipit lobortis velit. Praesent rhoncus, felis ut interdum dapibus, ipsum lectus vestibulum nulla, in interdum risus dolor eget orci. Nullam venenatis. Suspendisse laoreet, arcu a luctus consectetuer, libero ligula condimentum quam, eget elementum mauris tortor sed enim. Pellentesque leo. Nam interdum malesuada ante. Praesent fermentum nunc et dolor. Donec auctor volutpat odio. Pellentesque volutpat egestas ipsum. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras ac ligula eu justo dignissim accumsan. Nullam nisi. Fusce id sem. Fusce et urna. Pellentesque commodo pharetra lorem. Donec erat. Vestibulum elit arcu, commodo et, consequat eget, posuere eget, sem. Morbi sed nulla sed neque commodo commodo. Aliquam erat volutpat. Ut id turpis a enim malesuada vestibulum. In arcu dui, dignissim vitae, blandit eu, egestas ac, arcu. In ultricies sapien vitae nisi. Proin rhoncus magna eget tortor. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In dictum. Sed volutpat pharetra quam. Mauris eget eros. Fusce malesuada dolor id pede. Praesent nec justo sed nisi vehicula varius. In scelerisque convallis nulla. Pellentesque sodales massa vulputate urna. Duis metus urna, imperdiet ac, sodales vel, ullamcorper sed, pede. Vestibulum aliquam mollis metus. Praesent tempus tristique elit. Maecenas tellus tortor, pretium id, mollis id, molestie non, turpis. Vivamus nibh magna, bibendum vitae, a."; 58 var longAsciiText = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam ac ipsum. Morbi mauris. Aenean ac elit id metus lobortis elementum. Proin at quam ac ipsum pellentesque adipiscing. Aenean vestibulum, nisl eu suscipit iaculis, quam pede congue mi, sit amet dapibus metus neque eget dui. Suspendisse posuere diam ac sapien. Nulla lobortis dapibus leo. Quisque ornare tortor quis turpis. Aliquam erat volutpat. Ut faucibus lacinia magna. Nunc metus leo, volutpat quis, mollis ac, sagittis ut, turpis. Quisque purus. Mauris ante enim, vehicula eu, suscipit vitae, laoreet vel, nulla. Pellentesque pede leo, aliquam quis, vehicula eget, rhoncus nec, metus. Vestibulum tellus. Suspendisse blandit. Pellentesque vel tellus. Maecenas arcu. Duis eget purus. Curabitur non pede nec odio cursus luctus. In non elit. Nullam eget nunc in nisl elementum commodo. Vivamus sollicitudin pede quis dui. Morbi commodo. Praesent a risus id urna hendrerit fermentum. Nunc ultricies tristique odio. Phasellus imperdiet, sapien eget viverra blandit, tortor risus blandit nisi, et sodales libero dolor quis nisl. Morbi vel enim. Nunc in quam. Vestibulum a magna. Fusce auctor elit in augue. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris tincidunt consectetuer leo. Etiam non turpis. Vestibulum eros. Praesent venenatis adipiscing augue. Pellentesque dapibus odio ac arcu rhoncus sagittis. Nullam vitae augue. Ut magna nulla, congue eu, porta in, egestas quis, ligula. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur malesuada neque non nulla. Nulla facilisi. Fusce viverra magna ut tellus. Sed rutrum pretium sapien. Vivamus dui. Cras fringilla. Nullam lorem. Vestibulum varius, purus at imperdiet fermentum, metus diam ultricies lacus, vitae aliquam ipsum libero sit amet felis. Sed eget eros ac velit commodo sollicitudin. Morbi in metus in mi viverra lacinia. Sed ut urna. Suspendisse imperdiet tellus ac velit. Duis malesuada velit sit amet sapien. Vestibulum a sapien id libero accumsan luctus. Fusce iaculis. Donec pulvinar orci ut pede. Nam placerat sem ut sem. Ut pretium bibendum nisl. Suspendisse potenti. Phasellus mollis neque in neque. Suspendisse augue magna, eleifend et, malesuada at, viverra in, nisl. Donec vel lectus in justo ultrices tristique. Aliquam erat volutpat. Morbi suscipit, risus ac volutpat mollis, risus metus hendrerit sapien, ac scelerisque est orci eu est. Quisque sit amet velit. Sed libero diam, semper id, eleifend ac, iaculis non, nulla. Donec varius tincidunt arcu. Sed quis metus eu erat adipiscing viverra. Donec odio. Aenean sagittis nisl sed purus. Fusce vel nibh quis felis accumsan bibendum. Etiam et risus ac tortor cursus pharetra. Maecenas tellus. Pellentesque nec felis id eros vehicula commodo. Aliquam interdum sagittis odio. Maecenas at lorem eget mi aliquet sagittis. Mauris quis nibh in odio sodales lacinia. Proin augue mauris, placerat a, blandit vel, tincidunt eget, ante. Quisque turpis purus, placerat eget, tempor consectetuer, aliquet ac, enim. Etiam eleifend vestibulum mi. Vivamus gravida. Morbi dolor. In hac habitasse platea dictumst. Nulla commodo lectus faucibus lorem. Phasellus aliquet pede id metus hendrerit tempus. Fusce convallis pede ac neque tempor dignissim. Sed vitae lorem sit amet justo dapibus porta. Ut quam orci, pretium non, sagittis nec, condimentum id, dolor. Sed tempor. Nunc porta rutrum leo. Nunc id sem. Sed nibh tortor, dapibus eget, feugiat a, pretium pretium, purus. Suspendisse suscipit lobortis sem. Praesent pharetra orci. Quisque molestie tristique quam. Maecenas nunc lorem, rhoncus non, venenatis sed, sodales at, felis. Quisque semper. Quisque malesuada est quis lacus. Nullam a justo. Aliquam pellentesque, ante ut congue molestie, nisl sapien posuere nisl, eu cursus nulla ligula vel nisl. Fusce commodo lacinia magna. Aenean rutrum vestibulum lorem. Pellentesque fermentum tristique ipsum. Nulla facilisi. Donec id mi eget ipsum commodo egestas. Mauris iaculis. Nulla vulputate mi at nisl. In condimentum sodales tellus. Donec metus orci, mollis vel, accumsan ac, ornare ac, lacus. Pellentesque accumsan est et tellus. Nam mollis. Aenean accumsan eros sit amet tellus. Praesent eu libero. Sed tempus urna nec dolor. Nulla facilisi. Duis eleifend rhoncus neque. Curabitur consectetuer quam eu justo. Sed metus. Vivamus risus. Aliquam erat volutpat. Aliquam erat volutpat. Nunc semper urna. Praesent molestie libero a lacus. Nullam suscipit lobortis velit. Praesent rhoncus, felis ut interdum dapibus, ipsum lectus vestibulum nulla, in interdum risus dolor eget orci. Nullam venenatis. Suspendisse laoreet, arcu a luctus consectetuer, libero ligula condimentum quam, eget elementum mauris tortor sed enim. Pellentesque leo. Nam interdum malesuada ante. Praesent fermentum nunc et dolor. Donec auctor volutpat odio. Pellentesque volutpat egestas ipsum. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras ac ligula eu justo dignissim accumsan. Nullam nisi. Fusce id sem. Fusce et urna. Pellentesque commodo pharetra lorem. Donec erat. Vestibulum elit arcu, commodo et, consequat eget, posuere eget, sem. Morbi sed nulla sed neque commodo commodo. Aliquam erat volutpat. Ut id turpis a enim malesuada vestibulum. In arcu dui, dignissim vitae, blandit eu, egestas ac, arcu. In ultricies sapien vitae nisi. Proin rhoncus magna eget tortor. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In dictum. Sed volutpat pharetra quam. Mauris eget eros. Fusce malesuada dolor id pede. Praesent nec justo sed nisi vehicula varius. In scelerisque convallis nulla. Pellentesque sodales massa vulputate urna. Duis metus urna, imperdiet ac, sodales vel, ullamcorper sed, pede. Vestibulum aliquam mollis metus. Praesent tempus tristique elit. Maecenas tellus tortor, pretium id, mollis id, molestie non, turpis. Vivamus nibh magna, bibendum vitae, a.";
61 var longIsoLatin1Text = "¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùù"; 59 var longIsoLatin1Text = "¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùù";
62 var longUtf8Text = "客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之"; 60 var longUtf8Text = "客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之";
63 </script> 61 </script>
64 <script type="text/javascript" src="JSCrypto_vs_Clipperz.test.js"></script> 62 <script type="text/javascript" src="JSCrypto_vs_Clipperz.test.js"></script>
65</pre> 63</pre>
66</body> 64</body>
67</html> 65</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/JSCrypto_vs_Clipperz.test.js b/frontend/gamma/tests/tests/Clipperz/Crypto/JSCrypto_vs_Clipperz.test.js
index 1580e6c..b3675f1 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/JSCrypto_vs_Clipperz.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/JSCrypto_vs_Clipperz.test.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26//function logElapsedTime(aDescription, aStartTime, anEndTime) { 24//function logElapsedTime(aDescription, aStartTime, anEndTime) {
27 //MochiKit.Logging.logDebug(aDescription + " - took " + (anEndTime - aStartTime) + "ms"); 25 //MochiKit.Logging.logDebug(aDescription + " - took " + (anEndTime - aStartTime) + "ms");
28 //SimpleTest.ok(true, aDescription + " - took " + (anEndTime - aStartTime) + "ms"); 26 //SimpleTest.ok(true, aDescription + " - took " + (anEndTime - aStartTime) + "ms");
29//} 27//}
30 28
31 var asciiTestString = longAsciiText; 29 var asciiTestString = longAsciiText;
32//asciiTestString = asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString; 30//asciiTestString = asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString;
33//asciiTestString = asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString; 31//asciiTestString = asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString;
34//asciiTestString = asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString; 32//asciiTestString = asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString;
35//asciiTestString = asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString; 33//asciiTestString = asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString;
36//asciiTestString = asciiTestString + asciiTestString; 34//asciiTestString = asciiTestString + asciiTestString;
37//asciiTestString = asciiTestString + asciiTestString; 35//asciiTestString = asciiTestString + asciiTestString;
38 36
39 var isoLatin1TestString= longIsoLatin1Text; 37 var isoLatin1TestString= longIsoLatin1Text;
40//isoLatin1TestString = isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString; 38//isoLatin1TestString = isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString;
41//isoLatin1TestString = isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString; 39//isoLatin1TestString = isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString;
42//isoLatin1TestString = isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString; 40//isoLatin1TestString = isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString;
43//isoLatin1TestString = isoLatin1TestString + isoLatin1TestString; 41//isoLatin1TestString = isoLatin1TestString + isoLatin1TestString;
44//isoLatin1TestString = isoLatin1TestString + isoLatin1TestString; 42//isoLatin1TestString = isoLatin1TestString + isoLatin1TestString;
45 43
46 var utf8TestString = longUtf8Text; 44 var utf8TestString = longUtf8Text;
47//utf8TestString = utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString; 45//utf8TestString = utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString;
48//utf8TestString = utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString; 46//utf8TestString = utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString;
49//utf8TestString = utf8TestString + utf8TestString; 47//utf8TestString = utf8TestString + utf8TestString;
50//utf8TestString = utf8TestString + utf8TestString; 48//utf8TestString = utf8TestString + utf8TestString;
51 49
52var times = { 50var times = {
53 'Clipperz': {}, 51 'Clipperz': {},
54 'JSCrypto': {} 52 'JSCrypto': {}
55}; 53};
56 54
57function appendResults (aDescription, aTimer) { 55function appendResults (aDescription, aTimer) {
58 MochiKit.DOM.appendChildNodes(MochiKit.DOM.getElement('timerTBODY'), 56 MochiKit.DOM.appendChildNodes(MochiKit.DOM.getElement('timerTBODY'),
59 MochiKit.DOM.TR(null, 57 MochiKit.DOM.TR(null,
60 MochiKit.DOM.TH({align:'left'}, aDescription), 58 MochiKit.DOM.TH({align:'left'}, aDescription),
61 MochiKit.DOM.TH(null, aTimer['ascii']['encrypt'] + ' - ' + aTimer['ascii']['decrypt'])//, 59 MochiKit.DOM.TH(null, aTimer['ascii']['encrypt'] + ' - ' + aTimer['ascii']['decrypt'])//,
62 // MochiKit.DOM.TH(null, aTimer['isoLatin1']['encrypt']+ ' - ' + aTimer['isoLatin1']['decrypt']), 60 // MochiKit.DOM.TH(null, aTimer['isoLatin1']['encrypt']+ ' - ' + aTimer['isoLatin1']['decrypt']),
63 // MochiKit.DOM.TH(null, aTimer['utf8']['encrypt'] + ' - ' + aTimer['utf8']['decrypt']) 61 // MochiKit.DOM.TH(null, aTimer['utf8']['encrypt'] + ' - ' + aTimer['utf8']['decrypt'])
64 ) 62 )
65 ); 63 );
66 64
67} 65}
68 66
69//============================================================================= 67//=============================================================================
70 68
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/PRNG.html b/frontend/gamma/tests/tests/Clipperz/Crypto/PRNG.html
index 61aa1c2..1ba19c6 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/PRNG.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/PRNG.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <script> jslog_config_enabled = true; </script> 26 <script> jslog_config_enabled = true; </script>
29 27
30 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
31 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 29 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
32 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 30 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
33 31
34 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 32 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
35 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
36 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script>
40 38
41<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/Statistics.js'></script>--> 39<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/Statistics.js'></script>-->
42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
47</head> 45</head>
48<body> 46<body>
49<pre id="test"> 47<pre id="test">
50<script type="text/javascript"> 48<script type="text/javascript">
51test_PRNG = function() { 49test_PRNG = function() {
52 varrand1, rand2; 50 varrand1, rand2;
53 var i,c; 51 var i,c;
54 52
55 c = 10; 53 c = 10;
56 for (i=0; i<c; i++) { 54 for (i=0; i<c; i++) {
57 // jslog.debug(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32).toHexString()); 55 // jslog.debug(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32).toHexString());
58 } 56 }
59 57
60 rand1 = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(1); 58 rand1 = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(1);
61 is(rand1.byteAtIndex(0) <= 255, true, "getRandomByte returns always a single byte"); 59 is(rand1.byteAtIndex(0) <= 255, true, "getRandomByte returns always a single byte");
62 60
63 rand2 = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(1); 61 rand2 = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(1);
64 is(rand1.equals(rand2), false, "getRandomByte should almost always return two different values when called into sequence"); 62 is(rand1.equals(rand2), false, "getRandomByte should almost always return two different values when called into sequence");
65 63
66 64
67 rand1 = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32); 65 rand1 = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32);
68 rand2 = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32); 66 rand2 = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32);
69 is(rand1.equals(rand2), false, "getRandomByte should almost always return two different values when called into sequence"); 67 is(rand1.equals(rand2), false, "getRandomByte should almost always return two different values when called into sequence");
70 is(rand1.split(0,1).equals(rand2.split(0,1)), false, "getRandomByte should almost always return two different values when called into sequence"); 68 is(rand1.split(0,1).equals(rand2.split(0,1)), false, "getRandomByte should almost always return two different values when called into sequence");
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/RSA.html b/frontend/gamma/tests/tests/Clipperz/Crypto/RSA.html
index 4c7fd86..043ab40 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/RSA.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/RSA.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 26 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
29 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 27 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
30 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 28 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
31 29
32 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 30 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
33 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script> 31 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script>
34 32
35 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
36 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/RSA.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/RSA.js'></script>
38 36
39</head> 37</head>
40<body> 38<body>
41<pre id="test"> 39<pre id="test">
42<script type="text/javascript"> 40<script type="text/javascript">
43try { 41try {
44 varrsaPublicKey; 42 varrsaPublicKey;
45 varrandomValue; 43 varrandomValue;
46 varpublicEncryptedValue; 44 varpublicEncryptedValue;
47 var privateEncryptedValue; 45 var privateEncryptedValue;
48 46
49 varstartTime; 47 varstartTime;
50 varendTime; 48 varendTime;
51 49
52 50
53startTime=new Date(); 51startTime=new Date();
54 rsaPublicKey = Clipperz.Crypto.RSA.generatePublicKey(512); 52 rsaPublicKey = Clipperz.Crypto.RSA.generatePublicKey(512);
55 53
56endTime=new Date(); 54endTime=new Date();
57is(true, true, 'Time to generate the RSA public key (size 512 bit): '+(endTime.getTime()-startTime.getTime())/1000.0); 55is(true, true, 'Time to generate the RSA public key (size 512 bit): '+(endTime.getTime()-startTime.getTime())/1000.0);
58 56
59 randomValue = Clipperz.Crypto.Base.generateRandomSeed(); 57 randomValue = Clipperz.Crypto.Base.generateRandomSeed();
60 publicEncryptedValue = Clipperz.Crypto.RSA.encryptUsingPublicKey(rsaPublicKey, randomValue); 58 publicEncryptedValue = Clipperz.Crypto.RSA.encryptUsingPublicKey(rsaPublicKey, randomValue);
61 privateEncryptedValue = Clipperz.Crypto.RSA.encryptUsingPrivateKey(rsaPublicKey, randomValue); 59 privateEncryptedValue = Clipperz.Crypto.RSA.encryptUsingPrivateKey(rsaPublicKey, randomValue);
62 60
63 is(publicEncryptedValue == privateEncryptedValue, false); 61 is(publicEncryptedValue == privateEncryptedValue, false);
64 is(Clipperz.Crypto.RSA.decryptUsingPrivateKey(rsaPublicKey, publicEncryptedValue), randomValue); 62 is(Clipperz.Crypto.RSA.decryptUsingPrivateKey(rsaPublicKey, publicEncryptedValue), randomValue);
65 is(Clipperz.Crypto.RSA.decryptUsingPublicKey(rsaPublicKey, privateEncryptedValue), randomValue); 63 is(Clipperz.Crypto.RSA.decryptUsingPublicKey(rsaPublicKey, privateEncryptedValue), randomValue);
66 64
67 //------------------------------------------------------------------------- 65 //-------------------------------------------------------------------------
68} catch (err) { 66} catch (err) {
69 67
70 var s = "test suite failure!\n"; 68 var s = "test suite failure!\n";
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/SHA.html b/frontend/gamma/tests/tests/Clipperz/Crypto/SHA.html
index a2f6c04..de2021a 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/SHA.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/SHA.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.Crypto.SHA - TEST</title> 26 <title>Clipperz.Crypto.SHA - TEST</title>
29 27
30 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
31 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 29 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
32 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 30 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
33 31
34 <script type='text/javascript' src='../../../js/JSON/json2.js'></script> 32 <script type='text/javascript' src='../../../js/JSON/json2.js'></script>
35 33
36 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
42 40
43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
44 42
45 43
46 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script> 44 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script>
47 45
48</head> 46</head>
49<body> 47<body>
50<pre id="test"> 48<pre id="test">
51<script type="text/javascript" src="SHA.test.js"></script> 49<script type="text/javascript" src="SHA.test.js"></script>
52</pre> 50</pre>
53</body> 51</body>
54</html> 52</html>
55 53
56 54
57 55
58<!-- html> 56<!-- html>
59<head> 57<head>
60 <script> 58 <script>
61 jslog_config_enabled = true; 59 jslog_config_enabled = true;
62 clipperz_profiling_enabled = true; 60 clipperz_profiling_enabled = true;
63 </script> 61 </script>
64 62
65 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 63 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
66 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 64 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
67 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 65 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
68 66
69 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 67 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
70 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 68 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/SHA.test.js b/frontend/gamma/tests/tests/Clipperz/Crypto/SHA.test.js
index 2864aaf..6530844 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/SHA.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/SHA.test.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26var testSHA = function (aValue, anExpectedResult) { 24var testSHA = function (aValue, anExpectedResult) {
27 var byteArrayValue; 25 var byteArrayValue;
28 26
29 byteArrayValue = new Clipperz.ByteArray(aValue); 27 byteArrayValue = new Clipperz.ByteArray(aValue);
30 hash = Clipperz.Crypto.SHA.sha256(byteArrayValue); 28 hash = Clipperz.Crypto.SHA.sha256(byteArrayValue);
31 is(hash.toHexString(), anExpectedResult, "sha256(' " + byteArrayValue.toHexString() + "')"); 29 is(hash.toHexString(), anExpectedResult, "sha256(' " + byteArrayValue.toHexString() + "')");
32 30
33} 31}
34 32
35 33
36var tests = { 34var tests = {
37 35
38 'basic_tests': function (someTestArgs) { 36 'basic_tests': function (someTestArgs) {
39 testSHA('', '0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'); 37 testSHA('', '0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855');
40 testSHA('0xbd', '0x68325720aabd7c82f30f554b313d0570c95accbb7dc4b5aae11204c08ffe732b'); 38 testSHA('0xbd', '0x68325720aabd7c82f30f554b313d0570c95accbb7dc4b5aae11204c08ffe732b');
41 testSHA('0x5fd4', '0x7c4fbf484498d21b487b9d61de8914b2eadaf2698712936d47c3ada2558f6788'); 39 testSHA('0x5fd4', '0x7c4fbf484498d21b487b9d61de8914b2eadaf2698712936d47c3ada2558f6788');
42 testSHA('0xc98c8e55', '0x7abc22c0ae5af26ce93dbb94433a0e0b2e119d014f8e7f65bd56c61ccccd9504'); 40 testSHA('0xc98c8e55', '0x7abc22c0ae5af26ce93dbb94433a0e0b2e119d014f8e7f65bd56c61ccccd9504');
43 testSHA('0x0df1cd526b5a4edd', '0x47f527210d6e8f940b5082fec01b7305908fa2b49ea3ae597c19a3986097153c'); 41 testSHA('0x0df1cd526b5a4edd', '0x47f527210d6e8f940b5082fec01b7305908fa2b49ea3ae597c19a3986097153c');
44 testSHA('0xfdf4700984ee11b70af1880d0e0fefd4', '0xb01ae16eed3b4a770f127b98469ba26fe3d8e9f59d8a2983214afe6cff0e6b6c'); 42 testSHA('0xfdf4700984ee11b70af1880d0e0fefd4', '0xb01ae16eed3b4a770f127b98469ba26fe3d8e9f59d8a2983214afe6cff0e6b6c');
45 testSHA('0x8cf53d90077df9a043bf8d10b470b144784411c93a4d504556834dae3ea4a5bb', '0x56059e8cb3c2978b198208bf5ca1e1ea5659b737a506324b7cec75b5ebaf057d'); 43 testSHA('0x8cf53d90077df9a043bf8d10b470b144784411c93a4d504556834dae3ea4a5bb', '0x56059e8cb3c2978b198208bf5ca1e1ea5659b737a506324b7cec75b5ebaf057d');
46 testSHA('0xeebcf5cd6b12c90db64ff71a0e08ccd956e170a50dad769480d6b1fb3eff4934cde90f9e9b930ee637a66285c10f4e8a', '0xc117b9dce689c399ec99008788cd5d24d8396fab7d96315c4f3fe6d56da63bb3'); 44 testSHA('0xeebcf5cd6b12c90db64ff71a0e08ccd956e170a50dad769480d6b1fb3eff4934cde90f9e9b930ee637a66285c10f4e8a', '0xc117b9dce689c399ec99008788cd5d24d8396fab7d96315c4f3fe6d56da63bb3');
47 testSHA('0x3592ecfd1eac618fd390e7a9c24b656532509367c21a0eac1212ac83c0b20cd896eb72b801c4d212c5452bbbf09317b50c5c9fb1997553d2bbc29bb42f5748ad', '0x105a60865830ac3a371d3843324d4bb5fa8ec0e02ddaa389ad8da4f10215c454'); 45 testSHA('0x3592ecfd1eac618fd390e7a9c24b656532509367c21a0eac1212ac83c0b20cd896eb72b801c4d212c5452bbbf09317b50c5c9fb1997553d2bbc29bb42f5748ad', '0x105a60865830ac3a371d3843324d4bb5fa8ec0e02ddaa389ad8da4f10215c454');
48 46
49 }, 47 },
50 48
51 //------------------------------------------------------------------------- 49 //-------------------------------------------------------------------------
52 50
53 'aldo_cortesi_tests': function (someTestArgs) { 51 'aldo_cortesi_tests': function (someTestArgs) {
54 testSHA('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa','0xa3f01b6939256127582ac8ae9fb47a382a244680806a3f613a118851c1ca1d47'); 52 testSHA('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa','0xa3f01b6939256127582ac8ae9fb47a382a244680806a3f613a118851c1ca1d47');
55 testSHA('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa','0xb35439a4ac6f0948b6d6f9e3c6af0f5f590ce20f1bde7090ef7970686ec6738a'); 53 testSHA('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa','0xb35439a4ac6f0948b6d6f9e3c6af0f5f590ce20f1bde7090ef7970686ec6738a');
56 testSHA('0x79', '0xa1fce4363854ff888cff4b8e7875d600c2682390412a8cf79b37d0b11148b0fa'); 54 testSHA('0x79', '0xa1fce4363854ff888cff4b8e7875d600c2682390412a8cf79b37d0b11148b0fa');
57 testSHA('0x80', '0x76be8b528d0075f7aae98d6fa57a6d3c83ae480a8469e668d7b0af968995ac71'); 55 testSHA('0x80', '0x76be8b528d0075f7aae98d6fa57a6d3c83ae480a8469e668d7b0af968995ac71');
58 }, 56 },
59 57
60 //------------------------------------------------------------------------- 58 //-------------------------------------------------------------------------
61 59
62 'longTextPerformance_test': function (someTestArgs) { 60 'longTextPerformance_test': function (someTestArgs) {
63 var longText; 61 var longText;
64 var startTime; 62 var startTime;
65 var endTime; 63 var endTime;
66 64
67 longText = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec nunc sapien, condimentum vitae, varius vel, pharetra in, augue. Mauris quam magna, pretium sit amet, accumsan id, volutpat lobortis, nibh. Fusce sagittis. Aenean justo. Curabitur euismod pede. Morbi at ante. Proin nisl leo, ultrices sed, facilisis et, nonummy sit amet, lorem. Praesent mauris tellus, pulvinar sed, nonummy vitae, rhoncus non, nunc. Proin placerat malesuada nisl. Nunc id enim. Maecenas commodo enim ac nibh. Sed condimentum, urna sit amet euismod gravida, mi urna varius odio, luctus pretium lectus justo nec felis. Ut in augue et est malesuada rhoncus. Sed vel orci. Mauris suscipit. Praesent cursus velit non turpis. Donec tristique dolor ac est. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla est sapien, vulputate eget, bibendum id, pharetra nec, mauris. Aliquam faucibus tincidunt dui. Proin iaculis. Maecenas sagittis. Integer et augue. Donec vitae urna in orci aliquet commodo. Vestibulum lorem sem, suscipit ac, placerat nec, mollis in, felis. Donec laoreet odio a mauris. Integer rutrum, sapien id varius molestie, mauris odio egestas orci, non bibendum sem felis in metus. Phasellus consectetuer lectus adipiscing mauris. Ut magna tellus, euismod ac, suscipit tincidunt, ullamcorper adipiscing, massa. Etiam orci. Phasellus a urna. Cras neque quam, laoreet at, tempus eget, euismod nec, nibh. Etiam hendrerit. Aenean vel lorem. Ut ligula lacus, congue eu, lobortis sit amet, venenatis in, magna. Nullam cursus felis quis est. Sed sem est, condimentum eu, vestibulum a, mattis vel, diam. Curabitur tincidunt pede quis pede. Sed neque diam, convallis vel, luctus at, porta id, nisl. Suspendisse potenti. Sed volutpat lobortis orci. Praesent mi. In interdum. Suspendisse suscipit ipsum eget dolor. Curabitur et tellus sed velit hendrerit varius. Cras sit amet est. Donec arcu nulla, vehicula et, pretium in, placerat id, felis. Integer mollis auctor lectus. Integer ultrices elementum sapien. Nam et erat. Nam pulvinar porta tortor. Nam at risus. Quisque nulla. Integer vestibulum, lacus id bibendum laoreet, ligula mi pharetra lorem, sit amet pharetra felis mauris quis justo. Aliquam ultricies. Duis a pede eget lorem dapibus rhoncus. Aenean eu elit non libero consectetuer viverra. Maecenas velit mi, eleifend vel, malesuada vel, condimentum quis, odio. Mauris tempus augue sed turpis. Pellentesque condimentum, lacus vitae pellentesque ultricies, risus tellus posuere nisi, et dictum turpis pede nec elit. Sed eu lectus eu justo sagittis euismod. Vestibulum lobortis, urna id mollis rhoncus, orci quam euismod ligula, at malesuada lacus magna vitae massa. Phasellus mattis fermentum velit. Nulla vulputate consequat enim. Maecenas quis neque. Curabitur sagittis facilisis neque. In elementum, eros non porttitor rhoncus, libero turpis sodales odio, vitae porta tellus purus et ante. Nullam molestie sollicitudin metus. Donec a elit. Morbi ut lacus. Donec at arcu. Quisque velit diam, interdum a, lacinia at, varius et, odio. Cras neque magna, ornare id, sollicitudin id, consequat a, est. Phasellus vestibulum est at leo. Nam facilisis, nulla dapibus condimentum pellentesque, est magna viverra ligula, at sollicitudin urna augue ut sapien. Fusce justo."; 65 longText = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec nunc sapien, condimentum vitae, varius vel, pharetra in, augue. Mauris quam magna, pretium sit amet, accumsan id, volutpat lobortis, nibh. Fusce sagittis. Aenean justo. Curabitur euismod pede. Morbi at ante. Proin nisl leo, ultrices sed, facilisis et, nonummy sit amet, lorem. Praesent mauris tellus, pulvinar sed, nonummy vitae, rhoncus non, nunc. Proin placerat malesuada nisl. Nunc id enim. Maecenas commodo enim ac nibh. Sed condimentum, urna sit amet euismod gravida, mi urna varius odio, luctus pretium lectus justo nec felis. Ut in augue et est malesuada rhoncus. Sed vel orci. Mauris suscipit. Praesent cursus velit non turpis. Donec tristique dolor ac est. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla est sapien, vulputate eget, bibendum id, pharetra nec, mauris. Aliquam faucibus tincidunt dui. Proin iaculis. Maecenas sagittis. Integer et augue. Donec vitae urna in orci aliquet commodo. Vestibulum lorem sem, suscipit ac, placerat nec, mollis in, felis. Donec laoreet odio a mauris. Integer rutrum, sapien id varius molestie, mauris odio egestas orci, non bibendum sem felis in metus. Phasellus consectetuer lectus adipiscing mauris. Ut magna tellus, euismod ac, suscipit tincidunt, ullamcorper adipiscing, massa. Etiam orci. Phasellus a urna. Cras neque quam, laoreet at, tempus eget, euismod nec, nibh. Etiam hendrerit. Aenean vel lorem. Ut ligula lacus, congue eu, lobortis sit amet, venenatis in, magna. Nullam cursus felis quis est. Sed sem est, condimentum eu, vestibulum a, mattis vel, diam. Curabitur tincidunt pede quis pede. Sed neque diam, convallis vel, luctus at, porta id, nisl. Suspendisse potenti. Sed volutpat lobortis orci. Praesent mi. In interdum. Suspendisse suscipit ipsum eget dolor. Curabitur et tellus sed velit hendrerit varius. Cras sit amet est. Donec arcu nulla, vehicula et, pretium in, placerat id, felis. Integer mollis auctor lectus. Integer ultrices elementum sapien. Nam et erat. Nam pulvinar porta tortor. Nam at risus. Quisque nulla. Integer vestibulum, lacus id bibendum laoreet, ligula mi pharetra lorem, sit amet pharetra felis mauris quis justo. Aliquam ultricies. Duis a pede eget lorem dapibus rhoncus. Aenean eu elit non libero consectetuer viverra. Maecenas velit mi, eleifend vel, malesuada vel, condimentum quis, odio. Mauris tempus augue sed turpis. Pellentesque condimentum, lacus vitae pellentesque ultricies, risus tellus posuere nisi, et dictum turpis pede nec elit. Sed eu lectus eu justo sagittis euismod. Vestibulum lobortis, urna id mollis rhoncus, orci quam euismod ligula, at malesuada lacus magna vitae massa. Phasellus mattis fermentum velit. Nulla vulputate consequat enim. Maecenas quis neque. Curabitur sagittis facilisis neque. In elementum, eros non porttitor rhoncus, libero turpis sodales odio, vitae porta tellus purus et ante. Nullam molestie sollicitudin metus. Donec a elit. Morbi ut lacus. Donec at arcu. Quisque velit diam, interdum a, lacinia at, varius et, odio. Cras neque magna, ornare id, sollicitudin id, consequat a, est. Phasellus vestibulum est at leo. Nam facilisis, nulla dapibus condimentum pellentesque, est magna viverra ligula, at sollicitudin urna augue ut sapien. Fusce justo.";
68 startTime = new Date(); 66 startTime = new Date();
69 testSHA(longText, '0xf6fac13c06784e0fbc61a3d25c41c9984840a8b617a2beb57cf6fa3e5e4a8949'); 67 testSHA(longText, '0xf6fac13c06784e0fbc61a3d25c41c9984840a8b617a2beb57cf6fa3e5e4a8949');
70 endTime = new Date(); 68 endTime = new Date();
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/SRP.html b/frontend/gamma/tests/tests/Clipperz/Crypto/SRP.html
index ba842a9..5da2327 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/SRP.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/SRP.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 26 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
29 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 27 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
30 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 28 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
31 29
32 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 30 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
33 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 31 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
34 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 32 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
35 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
36 34
37 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
43</head> 41</head>
44<body> 42<body>
45<pre id="test"> 43<pre id="test">
46<script type="text/javascript"> 44<script type="text/javascript">
47hashString = function(aValue) { 45hashString = function(aValue) {
48 return Clipperz.Crypto.SHA.sha256(new Clipperz.ByteArray(aValue)).toHexString().substring(2) 46 return Clipperz.Crypto.SHA.sha256(new Clipperz.ByteArray(aValue)).toHexString().substring(2)
49} 47}
50try { 48try {
51 varusername; 49 varusername;
52 varpassphrase; 50 varpassphrase;
53 51
54 var C; 52 var C;
55 var P; 53 var P;
56 var encryptedText_1; 54 var encryptedText_1;
57 var encryptedText_2; 55 var encryptedText_2;
58 varsalt; 56 varsalt;
59 varx; 57 varx;
60 var v; 58 var v;
61 var v1; 59 var v1;
62 60
63 username = "giulio.cesare"; 61 username = "giulio.cesare";
64 passphrase = "trustno1"; 62 passphrase = "trustno1";
65 63
66 C = hashString(username); 64 C = hashString(username);
67 is (C, "bde3c7b5fdcd9d6ce72782ca1ae912fc4397d668fcb3a73a04e5d47852670c4a", "C"); 65 is (C, "bde3c7b5fdcd9d6ce72782ca1ae912fc4397d668fcb3a73a04e5d47852670c4a", "C");
68 66
69 P = hashString(passphrase + username); 67 P = hashString(passphrase + username);
70 is (P, "d79f5c5a04e91e1c85fb64cb6ee9481cb52c181047f69da02cd6c3ce6d058a76", "P"); 68 is (P, "d79f5c5a04e91e1c85fb64cb6ee9481cb52c181047f69da02cd6c3ce6d058a76", "P");
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/Usage.html b/frontend/gamma/tests/tests/Clipperz/Crypto/Usage.html
index 4e7ad3d..f253553 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/Usage.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/Usage.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.Crypto.Usage - TEST</title> 26 <title>Clipperz.Crypto.Usage - TEST</title>
29 27
30 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
31 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 29 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
32 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 30 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
33 31
34 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 32 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
35 33
36 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
41 39
42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
45 43
46</head> 44</head>
47<body> 45<body>
48<pre id="test"> 46<pre id="test">
49<script type="text/javascript"> 47<script type="text/javascript">
50Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 48Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
51 49
52MochiKit.Base.update(Clipperz, { 50MochiKit.Base.update(Clipperz, {
53 'PM': { 51 'PM': {
54 'Crypto': { 52 'Crypto': {
55 'passwordEntropy': function(aValue) { 53 'passwordEntropy': function(aValue) {
56 var result; 54 var result;
57 varbitPerChar; 55 varbitPerChar;
58 56
59 bitPerChar = 4; 57 bitPerChar = 4;
60 if (/[a-z]/.test(aValue)) { 58 if (/[a-z]/.test(aValue)) {
61 bitPerChar ++; 59 bitPerChar ++;
62 } 60 }
63 if (/[A-Z]/.test(aValue)) { 61 if (/[A-Z]/.test(aValue)) {
64 bitPerChar ++; 62 bitPerChar ++;
65 } 63 }
66 if (/[^a-zA-Z0-9]/.test(aValue)) { 64 if (/[^a-zA-Z0-9]/.test(aValue)) {
67 bitPerChar ++; 65 bitPerChar ++;
68 } 66 }
69 //MochiKit.Logging.logDebug("--- bitPerChar: " + bitPerChar); 67 //MochiKit.Logging.logDebug("--- bitPerChar: " + bitPerChar);
70 68
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/index.html b/frontend/gamma/tests/tests/Clipperz/Crypto/index.html
index dd63ceb..5ee8b8c 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/index.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/index.html
@@ -1,55 +1,53 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.Crypto.* - tests</title> 26 <title>Clipperz.Crypto.* - tests</title>
29 27
30 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
31 <script type="text/javascript" src="../../../SimpleTest/TestRunner.js"></script> 29 <script type="text/javascript" src="../../../SimpleTest/TestRunner.js"></script>
32</head> 30</head>
33<body> 31<body>
34<script> 32<script>
35TestRunner.runTests( 33TestRunner.runTests(
36 'AES.html', 34 'AES.html',
37 'AES.performance.html', 35 'AES.performance.html',
38 'Base.html', 36 'Base.html',
39 'BigInt.html', 37 'BigInt.html',
40 38
41 //'ECC.B283.deferred.html', 39 //'ECC.B283.deferred.html',
42 //'ECC.BinaryField.FiniteField.html', 40 //'ECC.BinaryField.FiniteField.html',
43 //'ECC.BinaryField.FiniteField.B283.html', 41 //'ECC.BinaryField.FiniteField.B283.html',
44 //'ECC.BinaryField.Value.html', 42 //'ECC.BinaryField.Value.html',
45 //#'ECC.K283.deferred.html', 43 //#'ECC.K283.deferred.html',
46 44
47 'PRNG.html', 45 'PRNG.html',
48 //'RSA.html', 46 //'RSA.html',
49 'SHA.html', 47 'SHA.html',
50 'SRP.html', 48 'SRP.html',
51 'Usage.html' 49 'Usage.html'
52); 50);
53</script> 51</script>
54</body> 52</body>
55</html> \ No newline at end of file 53</html> \ No newline at end of file
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/jscrypto.js b/frontend/gamma/tests/tests/Clipperz/Crypto/jscrypto.js
index 9a0d5fa..7781380 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/jscrypto.js
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/jscrypto.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26/* jsCrypto 24/* jsCrypto
27Core AES 25Core AES
28 26
29Emily Stark (estark@stanford.edu) 27Emily Stark (estark@stanford.edu)
30Mike Hamburg (mhamburg@stanford.edu) 28Mike Hamburg (mhamburg@stanford.edu)
31Dan Boneh (dabo@cs.stanford.edu) 29Dan Boneh (dabo@cs.stanford.edu)
32 30
33Symmetric AES in Javascript using precomputed lookup tables for round transformations rather for speed improvements 31Symmetric AES in Javascript using precomputed lookup tables for round transformations rather for speed improvements
34and code size reduction. Provides authenticated encryption in OCB and CCM modes. 32and code size reduction. Provides authenticated encryption in OCB and CCM modes.
35Parts of this code are based on the OpenSSL implementation of AES: http://www.openssl.org 33Parts of this code are based on the OpenSSL implementation of AES: http://www.openssl.org
36 34
37Public domain, 2009. 35Public domain, 2009.
38 36
39*/ 37*/
40 38
41 39
42// CCM mode is the default 40// CCM mode is the default
43var CCM = 1, OCB = 2; 41var CCM = 1, OCB = 2;
44 42
45/* aes object constructor. Takes as arguments: 43/* aes object constructor. Takes as arguments:
46- 16-byte key, or an array of 4 32-bit words 44- 16-byte key, or an array of 4 32-bit words
47- Optionally specify a mode (aes.OCB or aes.CCM). Defaults to CCM 45- Optionally specify a mode (aes.OCB or aes.CCM). Defaults to CCM
48- Optionally specify a MAC tag length for integrity. Defaults to 16 bytes 46- Optionally specify a MAC tag length for integrity. Defaults to 16 bytes
49*/ 47*/
50function aes(key, mode, Tlen) { 48function aes(key, mode, Tlen) {
51 // initialize objects for CCM and OCB modes 49 // initialize objects for CCM and OCB modes
52 this._CCM = new cipherCCM(this); 50 this._CCM = new cipherCCM(this);
53 this._OCB = new cipherOCB(this); 51 this._OCB = new cipherOCB(this);
54 52
55 this._decryptScheduled = false; 53 this._decryptScheduled = false;
56 54
57 if (mode) this._mode = mode; 55 if (mode) this._mode = mode;
58 else this._mode = OCB; 56 else this._mode = OCB;
59 57
60 // AES round constants 58 // AES round constants
61 this._RCON = [ 59 this._RCON = [
62 [0x00, 0x00, 0x00, 0x00], 60 [0x00, 0x00, 0x00, 0x00],
63 [0x01, 0x00, 0x00, 0x00], 61 [0x01, 0x00, 0x00, 0x00],
64 [0x02, 0x00, 0x00, 0x00], 62 [0x02, 0x00, 0x00, 0x00],
65 [0x04, 0x00, 0x00, 0x00], 63 [0x04, 0x00, 0x00, 0x00],
66 [0x08, 0x00, 0x00, 0x00], 64 [0x08, 0x00, 0x00, 0x00],
67 [0x10, 0x00, 0x00, 0x00], 65 [0x10, 0x00, 0x00, 0x00],
68 [0x20, 0x00, 0x00, 0x00], 66 [0x20, 0x00, 0x00, 0x00],
69 [0x40, 0x00, 0x00, 0x00], 67 [0x40, 0x00, 0x00, 0x00],
70 [0x80, 0x00, 0x00, 0x00], 68 [0x80, 0x00, 0x00, 0x00],
diff --git a/frontend/gamma/tests/tests/Clipperz/DOM.html b/frontend/gamma/tests/tests/Clipperz/DOM.html
index 782b1fe..c5c6ffe 100644
--- a/frontend/gamma/tests/tests/Clipperz/DOM.html
+++ b/frontend/gamma/tests/tests/Clipperz/DOM.html
@@ -1,55 +1,53 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> 26 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script>
29 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script> 27 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script>
30 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css"> 28 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css">
31 29
32 <script type='text/javascript' src='../../../js/JSON/json2.js'></script> 30 <script type='text/javascript' src='../../../js/JSON/json2.js'></script>
33 31
34 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script> 32 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script>
35 <script type='text/javascript' src='../../../js/Clipperz/YUI/DomHelper.js'></script> 33 <script type='text/javascript' src='../../../js/Clipperz/YUI/DomHelper.js'></script>
36 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script> 34 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script>
37 <script type='text/javascript' src='../../../js/Clipperz/DOM.js'></script> 35 <script type='text/javascript' src='../../../js/Clipperz/DOM.js'></script>
38 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script> 36 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script>
39 37
40 <script type='text/javascript' src='../../../js/Clipperz/Crypto/Base.js'></script> 38 <script type='text/javascript' src='../../../js/Clipperz/Crypto/Base.js'></script>
41</head> 39</head>
42<body> 40<body>
43 41
44<pre id="test"> 42<pre id="test">
45<script> 43<script>
46 Clipperz_IEisBroken = false; 44 Clipperz_IEisBroken = false;
47</script> 45</script>
48 46
49<!--[if IE]><script> 47<!--[if IE]><script>
50Clipperz_IEisBroken = true; 48Clipperz_IEisBroken = true;
51</script><![endif]--> 49</script><![endif]-->
52<script type="text/javascript" src="DOM.test.js"></script> 50<script type="text/javascript" src="DOM.test.js"></script>
53</pre> 51</pre>
54</body> 52</body>
55</html> 53</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/DOM.test.js b/frontend/gamma/tests/tests/Clipperz/DOM.test.js
index e8c6225..38c24e6 100644
--- a/frontend/gamma/tests/tests/Clipperz/DOM.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/DOM.test.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26try { 24try {
27 var template; 25 var template;
28 var templateArgs; 26 var templateArgs;
29 var element; 27 var element;
30 var rowElement; 28 var rowElement;
31 var tdElement; 29 var tdElement;
32 30
33 template = Clipperz.DOM.Helper.createTemplate( 31 template = Clipperz.DOM.Helper.createTemplate(
34 [ 32 [
35 {tag:'td', children:[{tag:'img', cls:'favicon', src:'{faviconUrl}'}]}, 33 {tag:'td', children:[{tag:'img', cls:'favicon', src:'{faviconUrl}'}]},
36 {tag:'td', children:[{tag:'a', href:'#', cls:'title', html:'{cardTitle}'}]}, 34 {tag:'td', children:[{tag:'a', href:'#', cls:'title', html:'{cardTitle}'}]},
37 {tag:'td', children:[{tag:'span', cls:'directLogins', id:'{directLoginsID}'}]}, 35 {tag:'td', children:[{tag:'span', cls:'directLogins', id:'{directLoginsID}'}]},
38 {tag:'td', children:[{tag:'span', cls:'latestUpdate', html:'{latestUpdate}'}]}, 36 {tag:'td', children:[{tag:'span', cls:'latestUpdate', html:'{latestUpdate}'}]},
39 {tag:'td'} 37 {tag:'td'}
40 ] 38 ]
41 ); 39 );
42 40
43 templateArgs = { 41 templateArgs = {
44 cardTitle: "Amazon.com", 42 cardTitle: "Amazon.com",
45 directLoginsID: "Clipperz_PM_Components_directLogins_58", 43 directLoginsID: "Clipperz_PM_Components_directLogins_58",
46 faviconUrl: "http://www.amazon.com/favicon.ico", 44 faviconUrl: "http://www.amazon.com/favicon.ico",
47 latestUpdate: "", 45 latestUpdate: "",
48 reference: "13a5e52976337ab210903cd04872588e1b21fb72bc183e91aa25c494b8138551" 46 reference: "13a5e52976337ab210903cd04872588e1b21fb72bc183e91aa25c494b8138551"
49 } 47 }
50 48
51 element = Clipperz.DOM.Helper.append(document.body, {tag:'table', children:[ 49 element = Clipperz.DOM.Helper.append(document.body, {tag:'table', children:[
52 {tag:'theader'}, 50 {tag:'theader'},
53 {tag:'tbody', children:[ 51 {tag:'tbody', children:[
54 {tag:'tr', id:'testRow'} 52 {tag:'tr', id:'testRow'}
55 ]}, 53 ]},
56 {tag:'tfooter'} 54 {tag:'tfooter'}
57 ]}); 55 ]});
58 ok(element != null, "created the TABLE"); 56 ok(element != null, "created the TABLE");
59 57
60 rowElement = Clipperz.DOM.get('testRow'); 58 rowElement = Clipperz.DOM.get('testRow');
61 ok(testRow != null, "created the ROW"); 59 ok(testRow != null, "created the ROW");
62 60
63 template.append(rowElement, templateArgs); 61 template.append(rowElement, templateArgs);
64 tdElement = Clipperz.DOM.get(templateArgs['directLoginsID']); 62 tdElement = Clipperz.DOM.get(templateArgs['directLoginsID']);
65 ok(tdElement != null, "created the TD"); 63 ok(tdElement != null, "created the TD");
66 64
67} catch (err) { 65} catch (err) {
68 var s = "test suite failure!\n"; 66 var s = "test suite failure!\n";
69 var o = {}; 67 var o = {};
70 var k = null; 68 var k = null;
diff --git a/frontend/gamma/tests/tests/Clipperz/Date.html b/frontend/gamma/tests/tests/Clipperz/Date.html
index 1f425c8..5d6a12e 100644
--- a/frontend/gamma/tests/tests/Clipperz/Date.html
+++ b/frontend/gamma/tests/tests/Clipperz/Date.html
@@ -1,51 +1,49 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.Date - TEST</title> 26 <title>Clipperz.Date - TEST</title>
29 27
30 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script>
31 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script> 29 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script>
32 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css"> 30 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css">
33 31
34 <script type='text/javascript' src='../../../js/JSON/json2.js'></script> 32 <script type='text/javascript' src='../../../js/JSON/json2.js'></script>
35 33
36 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script> 34 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script>
37 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script> 35 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script>
38 <script type='text/javascript' src='../../../js/Clipperz/Date.js'></script> 36 <script type='text/javascript' src='../../../js/Clipperz/Date.js'></script>
39 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script> 37 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script>
40 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script> 38 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script>
41 39
42 40
43 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script> 41 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script>
44 42
45</head> 43</head>
46<body> 44<body>
47<pre id="test"> 45<pre id="test">
48<script type="text/javascript" src="Date.test.js"></script> 46<script type="text/javascript" src="Date.test.js"></script>
49</pre> 47</pre>
50</body> 48</body>
51</html> 49</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/Date.test.js b/frontend/gamma/tests/tests/Clipperz/Date.test.js
index f184fd6..7deda3f 100644
--- a/frontend/gamma/tests/tests/Clipperz/Date.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/Date.test.js
@@ -1,63 +1,61 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26var tests = { 24var tests = {
27 25
28 '001_test': function () { 26 '001_test': function () {
29 vardate; 27 vardate;
30 var locale; 28 var locale;
31 29
32 // date = new Date(0); 30 // date = new Date(0);
33 // date.setMilliseconds(Date.parse("Fri, 21 Sep 2007 10:04:24 UTC")); 31 // date.setMilliseconds(Date.parse("Fri, 21 Sep 2007 10:04:24 UTC"));
34 32
35 date = new Date(Date.parse("Fri, 21 Sep 2007 10:04:24 UTC")); 33 date = new Date(Date.parse("Fri, 21 Sep 2007 10:04:24 UTC"));
36 34
37 locale = { 35 locale = {
38 'amDesignation':"am", 36 'amDesignation':"am",
39 'pmDesignation':"pm", 37 'pmDesignation':"pm",
40 // 'shortDateFormat':"d/m/y", 38 // 'shortDateFormat':"d/m/y",
41 // 'longDateFormat':"", 39 // 'longDateFormat':"",
42 'months': ["January", "February", "March","April", 40 'months': ["January", "February", "March","April",
43 "May", "June", "July", "August", 41 "May", "June", "July", "August",
44 "September", "October", "November", "December"], 42 "September", "October", "November", "December"],
45 'shortMonths': ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], 43 'shortMonths': ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
46 'days': ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], 44 'days': ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
47 'shortDays': ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ] 45 'shortDays': ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ]
48 } 46 }
49 47
50 is(Clipperz.Date.formatDateWithPHPLikeTemplateAndLocale(date, "d/m/y", locale), '21/09/07', "formatDate - 1"); 48 is(Clipperz.Date.formatDateWithPHPLikeTemplateAndLocale(date, "d/m/y", locale), '21/09/07', "formatDate - 1");
51 is(Clipperz.Date.formatDateWithPHPLikeTemplateAndLocale(date, "D M Y", locale), 'Fri Sep 2007', "formatDate - 2"); 49 is(Clipperz.Date.formatDateWithPHPLikeTemplateAndLocale(date, "D M Y", locale), 'Fri Sep 2007', "formatDate - 2");
52 is(Clipperz.Date.formatDateWithPHPLikeTemplateAndLocale(date, "D, d M Y", locale), 'Fri, 21 Sep 2007', "formatDate - 3"); 50 is(Clipperz.Date.formatDateWithPHPLikeTemplateAndLocale(date, "D, d M Y", locale), 'Fri, 21 Sep 2007', "formatDate - 3");
53 is(Clipperz.Date.formatDateWithPHPLikeTemplateAndLocale(date, "D, d M Y H:i:s", locale), 'Fri, 21 Sep 2007 12:04:24', "formatDate - 4"); 51 is(Clipperz.Date.formatDateWithPHPLikeTemplateAndLocale(date, "D, d M Y H:i:s", locale), 'Fri, 21 Sep 2007 12:04:24', "formatDate - 4");
54 // is(Clipperz.Date.formatDateWithPHPLikeTemplateAndLocale(date, "D, d M Y H:i:s (T)", locale), 'Fri, 21 Sep 2007 11:04:24 (CEST)', "formatDate - 5"); 52 // is(Clipperz.Date.formatDateWithPHPLikeTemplateAndLocale(date, "D, d M Y H:i:s (T)", locale), 'Fri, 21 Sep 2007 11:04:24 (CEST)', "formatDate - 5");
55 }, 53 },
56 54
57 //------------------------------------------------------------------------- 55 //-------------------------------------------------------------------------
58 'syntaxFix': MochiKit.Base.noop 56 'syntaxFix': MochiKit.Base.noop
59} 57}
60 58
61//============================================================================= 59//=============================================================================
62 60
63SimpleTest.runDeferredTests("Clipperz.Date", tests, {trace:false}); 61SimpleTest.runDeferredTests("Clipperz.Date", tests, {trace:false});
diff --git a/frontend/gamma/tests/tests/Clipperz/KeePassExportProcessor.data.js b/frontend/gamma/tests/tests/Clipperz/KeePassExportProcessor.data.js
index 3c407f7..ed9fc09 100644
--- a/frontend/gamma/tests/tests/Clipperz/KeePassExportProcessor.data.js
+++ b/frontend/gamma/tests/tests/Clipperz/KeePassExportProcessor.data.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26var testData = {} 24var testData = {}
27 25
28testData['Barb_Newman_data'] = ""; 26testData['Barb_Newman_data'] = "";
29testData['Barb_Newman_data'] = testData['Barb_Newman_data'] + 27testData['Barb_Newman_data'] = testData['Barb_Newman_data'] +
30 "[Domain Administration Account]" + "\n" + 28 "[Domain Administration Account]" + "\n" +
31 "Group: Windows" + "\n" + 29 "Group: Windows" + "\n" +
32 "User Name: _ABC" + "\n" + 30 "User Name: _ABC" + "\n" +
33 "URL: " + "\n" + 31 "URL: " + "\n" +
34 "Password: 123456" + "\n" + 32 "Password: 123456" + "\n" +
35 "Notes: " + "\n" + 33 "Notes: " + "\n" +
36 "" + "\n" + 34 "" + "\n" +
37 "[Enquiro Domain]" + "\n" + 35 "[Enquiro Domain]" + "\n" +
38 "Group: Windows" + "\n" + 36 "Group: Windows" + "\n" +
39 "User Name: ABC" + "\n" + 37 "User Name: ABC" + "\n" +
40 "URL: " + "\n" + 38 "URL: " + "\n" +
41 "Password: 123456" + "\n" + 39 "Password: 123456" + "\n" +
42 "Notes: This is an Exchange Mailbox checked by IT/Programming" + "\n" + 40 "Notes: This is an Exchange Mailbox checked by IT/Programming" + "\n" +
43 "" + "\n" + 41 "" + "\n" +
44 "[Enquiro Domain Administrator Account]" + "\n" + 42 "[Enquiro Domain Administrator Account]" + "\n" +
45 "Group: Windows" + "\n" + 43 "Group: Windows" + "\n" +
46 "User Name: ENQUIRO\ABC" + "\n" + 44 "User Name: ENQUIRO\ABC" + "\n" +
47 "URL: " + "\n" + 45 "URL: " + "\n" +
48 "Password: 123456" + "\n" + 46 "Password: 123456" + "\n" +
49 "Notes: Obsolete" + "\n" + 47 "Notes: Obsolete" + "\n" +
50 "" + "\n" + 48 "" + "\n" +
51 "[Enquiro Domain Administrator Account]" + "\n" + 49 "[Enquiro Domain Administrator Account]" + "\n" +
52 "Group: Windows" + "\n" + 50 "Group: Windows" + "\n" +
53 "User Name: ENQUIRO\ABC" + "\n" + 51 "User Name: ENQUIRO\ABC" + "\n" +
54 "URL: " + "\n" + 52 "URL: " + "\n" +
55 "Password: 123456" + "\n" + 53 "Password: 123456" + "\n" +
56 "Notes: Changed on 07 Sep 2007 by Randy Kissick" + "\n" + 54 "Notes: Changed on 07 Sep 2007 by Randy Kissick" + "\n" +
57 "" + "\n" + 55 "" + "\n" +
58 "[Enquiro Domain Previous Administrator Account]" + "\n" + 56 "[Enquiro Domain Previous Administrator Account]" + "\n" +
59 "Group: Windows" + "\n" + 57 "Group: Windows" + "\n" +
60 "User Name: ENQUIRO\ABC" + "\n" + 58 "User Name: ENQUIRO\ABC" + "\n" +
61 "URL: " + "\n" + 59 "URL: " + "\n" +
62 "Password: 123456" + "\n" + 60 "Password: 123456" + "\n" +
63 "Notes: ENSQL1" + "\n" + 61 "Notes: ENSQL1" + "\n" +
64 "" + "\n" + 62 "" + "\n" +
65 "[Local Administrator Account for most Machines]" + "\n" + 63 "[Local Administrator Account for most Machines]" + "\n" +
66 "Group: Windows" + "\n" + 64 "Group: Windows" + "\n" +
67 "User Name: ABC" + "\n" + 65 "User Name: ABC" + "\n" +
68 "URL: " + "\n" + 66 "URL: " + "\n" +
69 "Password: 123456" + "\n" + 67 "Password: 123456" + "\n" +
70 "Notes: " + "\n" + 68 "Notes: " + "\n" +
diff --git a/frontend/gamma/tests/tests/Clipperz/KeePassExportProcessor.html b/frontend/gamma/tests/tests/Clipperz/KeePassExportProcessor.html
index 969b517..f2dc9ad 100644
--- a/frontend/gamma/tests/tests/Clipperz/KeePassExportProcessor.html
+++ b/frontend/gamma/tests/tests/Clipperz/KeePassExportProcessor.html
@@ -1,56 +1,54 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.KeePassExportProcessor - test</title> 26 <title>Clipperz.KeePassExportProcessor - test</title>
29 27
30 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script>
31 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script> 29 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script>
32 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css"> 30 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css">
33 31
34 <script type='text/javascript' src='../../../js/JSON/json2.js'></script> 32 <script type='text/javascript' src='../../../js/JSON/json2.js'></script>
35 33
36 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script> 34 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script>
37 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script> 35 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script>
38 <script type='text/javascript' src='../../../js/Clipperz/ByteArray.js'></script> 36 <script type='text/javascript' src='../../../js/Clipperz/ByteArray.js'></script>
39 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script> 37 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script>
40 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script> 38 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script>
41 <script type='text/javascript' src='../../../js/Clipperz/KeePassExportProcessor.js'></script> 39 <script type='text/javascript' src='../../../js/Clipperz/KeePassExportProcessor.js'></script>
42 40
43 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script> 41 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script>
44 42
45 <!-- script type="text/javascript" src="./KeePassExportProcessor.data.js"></script> 43 <!-- script type="text/javascript" src="./KeePassExportProcessor.data.js"></script>
46 <script type="text/javascript" src="./KeePassExportProcessor.test.js"></script --> 44 <script type="text/javascript" src="./KeePassExportProcessor.test.js"></script -->
47 45
48</head> 46</head>
49<body> 47<body>
50 48
51<pre id="test"> 49<pre id="test">
52<script type="text/javascript" src="./KeePassExportProcessor.data.js"></script> 50<script type="text/javascript" src="./KeePassExportProcessor.data.js"></script>
53<script type="text/javascript" src="./KeePassExportProcessor.test.js"></script> 51<script type="text/javascript" src="./KeePassExportProcessor.test.js"></script>
54</pre> 52</pre>
55</body> 53</body>
56</html> 54</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/KeePassExportProcessor.test.js b/frontend/gamma/tests/tests/Clipperz/KeePassExportProcessor.test.js
index 4d1aa12..4099aee 100644
--- a/frontend/gamma/tests/tests/Clipperz/KeePassExportProcessor.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/KeePassExportProcessor.test.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26var tests = { 24var tests = {
27 25
28 //------------------------------------------------------------------------- 26 //-------------------------------------------------------------------------
29 27
30 'test1_test': function (someTestArgs) { 28 'test1_test': function (someTestArgs) {
31 var deferredResult; 29 var deferredResult;
32 varkeePassProcessor; 30 varkeePassProcessor;
33 31
34 keePassProcessor = new Clipperz.KeePassExportProcessor(); 32 keePassProcessor = new Clipperz.KeePassExportProcessor();
35 33
36 deferredResult = new Clipperz.Async.Deferred("test1_test", someTestArgs); 34 deferredResult = new Clipperz.Async.Deferred("test1_test", someTestArgs);
37 deferredResult.addCallback(function(aResult) { return "[Gmail]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.gmail.com\nPassword: NHy08ZCMYsqUeLQCawR7\n\n[del.icio.us]\nGroup: General\nUserName: joe69\nURL: http://del.icio.us\nPassword: tS1cIEeqp5y0wkU\n\n[Amazon]\nGroup: General\nUserName: jclipperz\nURL: http://www.amazon.com\nPassword: wvpkqNPIsqlI5g6XE9Tz\n\n[Paypal]\nGroup: General\nUserName: joeclipperz\nURL: http://www.paypal.com\nPassword: 24T4wIcvHnM28T3L\n\n[Technorati]\nGroup: General\nUserName: jclipperz\nURL: http://www.technorati.com\nPassword: UcVeNqF\n\n[American Airlines]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.aa.com\nPassword: AtrYbmi7lmSjR\n" }); 35 deferredResult.addCallback(function(aResult) { return "[Gmail]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.gmail.com\nPassword: NHy08ZCMYsqUeLQCawR7\n\n[del.icio.us]\nGroup: General\nUserName: joe69\nURL: http://del.icio.us\nPassword: tS1cIEeqp5y0wkU\n\n[Amazon]\nGroup: General\nUserName: jclipperz\nURL: http://www.amazon.com\nPassword: wvpkqNPIsqlI5g6XE9Tz\n\n[Paypal]\nGroup: General\nUserName: joeclipperz\nURL: http://www.paypal.com\nPassword: 24T4wIcvHnM28T3L\n\n[Technorati]\nGroup: General\nUserName: jclipperz\nURL: http://www.technorati.com\nPassword: UcVeNqF\n\n[American Airlines]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.aa.com\nPassword: AtrYbmi7lmSjR\n" });
38 deferredResult.addMethod(keePassProcessor, 'deferredParse'); 36 deferredResult.addMethod(keePassProcessor, 'deferredParse');
39 deferredResult.addCallback(function(aResult) { is(MochiKit.Base.serializeJSON(aResult), "[{\"Title\":\"Gmail\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.gmail.com\", \"Password\":\"NHy08ZCMYsqUeLQCawR7\"}, {\"Title\":\"del.icio.us\", \"Group\":\"General\", \"UserName\":\"joe69\", \"URL\":\"http://del.icio.us\", \"Password\":\"tS1cIEeqp5y0wkU\"}, {\"Title\":\"Amazon\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.amazon.com\", \"Password\":\"wvpkqNPIsqlI5g6XE9Tz\"}, {\"Title\":\"Paypal\", \"Group\":\"General\", \"UserName\":\"joeclipperz\", \"URL\":\"http://www.paypal.com\", \"Password\":\"24T4wIcvHnM28T3L\"}, {\"Title\":\"Technorati\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.technorati.com\", \"Password\":\"UcVeNqF\"}, {\"Title\":\"American Airlines\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.aa.com\", \"Password\":\"AtrYbmi7lmSjR\"}]", "first test"); }); 37 deferredResult.addCallback(function(aResult) { is(MochiKit.Base.serializeJSON(aResult), "[{\"Title\":\"Gmail\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.gmail.com\", \"Password\":\"NHy08ZCMYsqUeLQCawR7\"}, {\"Title\":\"del.icio.us\", \"Group\":\"General\", \"UserName\":\"joe69\", \"URL\":\"http://del.icio.us\", \"Password\":\"tS1cIEeqp5y0wkU\"}, {\"Title\":\"Amazon\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.amazon.com\", \"Password\":\"wvpkqNPIsqlI5g6XE9Tz\"}, {\"Title\":\"Paypal\", \"Group\":\"General\", \"UserName\":\"joeclipperz\", \"URL\":\"http://www.paypal.com\", \"Password\":\"24T4wIcvHnM28T3L\"}, {\"Title\":\"Technorati\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.technorati.com\", \"Password\":\"UcVeNqF\"}, {\"Title\":\"American Airlines\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.aa.com\", \"Password\":\"AtrYbmi7lmSjR\"}]", "first test"); });
40 deferredResult.addErrback(function(anError) { is("ERROR", anError) }); 38 deferredResult.addErrback(function(anError) { is("ERROR", anError) });
41 39
42 deferredResult.callback(); 40 deferredResult.callback();
43 41
44 return deferredResult; 42 return deferredResult;
45 }, 43 },
46 44
47 'test2_test': function (someTestArgs) { 45 'test2_test': function (someTestArgs) {
48 var deferredResult; 46 var deferredResult;
49 varkeePassProcessor; 47 varkeePassProcessor;
50 48
51 keePassProcessor = new Clipperz.KeePassExportProcessor(); 49 keePassProcessor = new Clipperz.KeePassExportProcessor();
52 50
53 deferredResult = new Clipperz.Async.Deferred("test2_test", someTestArgs); 51 deferredResult = new Clipperz.Async.Deferred("test2_test", someTestArgs);
54 deferredResult.addCallback(function(aResult) { return "[Gmail]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.gmail.com\nPassword: NHy08ZCMYsqUeLQCawR7\nNotes: Personal account\n\n[del.icio.us]\nGroup: General\nUserName: joe69\nURL: http://del.icio.us\nPassword: tS1cIEeqp5y0wkU\nNotes: social bookmarking site\n\n[Amazon]\nGroup: General\nUserName: jclipperz\nURL: http://www.amazon.com\nPassword: wvpkqNPIsqlI5g6XE9Tz\nNotes: The US online store\n\n[Paypal]\nGroup: General\nUserName: joeclipperz\nURL: http://www.paypal.com\nPassword: 24T4wIcvHnM28T3L\nNotes: Linked to my savings account\n\n[Technorati]\nGroup: General\nUserName: jclipperz\nURL: http://www.technorati.com\nPassword: UcVeNqF\nNotes: Blog ranking and searching\n\n[American Airlines]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.aa.com\nPassword: AtrYbmi7lmSjR\nNotes: Adavantages card n. 795495\n" }); 52 deferredResult.addCallback(function(aResult) { return "[Gmail]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.gmail.com\nPassword: NHy08ZCMYsqUeLQCawR7\nNotes: Personal account\n\n[del.icio.us]\nGroup: General\nUserName: joe69\nURL: http://del.icio.us\nPassword: tS1cIEeqp5y0wkU\nNotes: social bookmarking site\n\n[Amazon]\nGroup: General\nUserName: jclipperz\nURL: http://www.amazon.com\nPassword: wvpkqNPIsqlI5g6XE9Tz\nNotes: The US online store\n\n[Paypal]\nGroup: General\nUserName: joeclipperz\nURL: http://www.paypal.com\nPassword: 24T4wIcvHnM28T3L\nNotes: Linked to my savings account\n\n[Technorati]\nGroup: General\nUserName: jclipperz\nURL: http://www.technorati.com\nPassword: UcVeNqF\nNotes: Blog ranking and searching\n\n[American Airlines]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.aa.com\nPassword: AtrYbmi7lmSjR\nNotes: Adavantages card n. 795495\n" });
55 deferredResult.addMethod(keePassProcessor, 'deferredParse'); 53 deferredResult.addMethod(keePassProcessor, 'deferredParse');
56 deferredResult.addCallback(function(aResult) { is(MochiKit.Base.serializeJSON(aResult), "[{\"Title\":\"Gmail\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.gmail.com\", \"Password\":\"NHy08ZCMYsqUeLQCawR7\", \"Notes\":\"Personal account\"}, {\"Title\":\"del.icio.us\", \"Group\":\"General\", \"UserName\":\"joe69\", \"URL\":\"http://del.icio.us\", \"Password\":\"tS1cIEeqp5y0wkU\", \"Notes\":\"social bookmarking site\"}, {\"Title\":\"Amazon\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.amazon.com\", \"Password\":\"wvpkqNPIsqlI5g6XE9Tz\", \"Notes\":\"The US online store\"}, {\"Title\":\"Paypal\", \"Group\":\"General\", \"UserName\":\"joeclipperz\", \"URL\":\"http://www.paypal.com\", \"Password\":\"24T4wIcvHnM28T3L\", \"Notes\":\"Linked to my savings account\"}, {\"Title\":\"Technorati\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.technorati.com\", \"Password\":\"UcVeNqF\", \"Notes\":\"Blog ranking and searching\"}, {\"Title\":\"American Airlines\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.aa.com\", \"Password\":\"AtrYbmi7lmSjR\", \"Notes\":\"Adavantages card n. 795495\"}]", "second test"); }); 54 deferredResult.addCallback(function(aResult) { is(MochiKit.Base.serializeJSON(aResult), "[{\"Title\":\"Gmail\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.gmail.com\", \"Password\":\"NHy08ZCMYsqUeLQCawR7\", \"Notes\":\"Personal account\"}, {\"Title\":\"del.icio.us\", \"Group\":\"General\", \"UserName\":\"joe69\", \"URL\":\"http://del.icio.us\", \"Password\":\"tS1cIEeqp5y0wkU\", \"Notes\":\"social bookmarking site\"}, {\"Title\":\"Amazon\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.amazon.com\", \"Password\":\"wvpkqNPIsqlI5g6XE9Tz\", \"Notes\":\"The US online store\"}, {\"Title\":\"Paypal\", \"Group\":\"General\", \"UserName\":\"joeclipperz\", \"URL\":\"http://www.paypal.com\", \"Password\":\"24T4wIcvHnM28T3L\", \"Notes\":\"Linked to my savings account\"}, {\"Title\":\"Technorati\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.technorati.com\", \"Password\":\"UcVeNqF\", \"Notes\":\"Blog ranking and searching\"}, {\"Title\":\"American Airlines\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.aa.com\", \"Password\":\"AtrYbmi7lmSjR\", \"Notes\":\"Adavantages card n. 795495\"}]", "second test"); });
57 deferredResult.addErrback(function(anError) { is("ERROR", anError) }); 55 deferredResult.addErrback(function(anError) { is("ERROR", anError) });
58 56
59 deferredResult.callback(); 57 deferredResult.callback();
60 58
61 return deferredResult; 59 return deferredResult;
62 }, 60 },
63 61
64 'test3_test': function (someTestArgs) { 62 'test3_test': function (someTestArgs) {
65 var deferredResult; 63 var deferredResult;
66 varkeePassProcessor; 64 varkeePassProcessor;
67 65
68 keePassProcessor = new Clipperz.KeePassExportProcessor(); 66 keePassProcessor = new Clipperz.KeePassExportProcessor();
69 67
70 deferredResult = new Clipperz.Async.Deferred("test3_test", someTestArgs); 68 deferredResult = new Clipperz.Async.Deferred("test3_test", someTestArgs);
diff --git a/frontend/gamma/tests/tests/Clipperz/KeyValueObjectStore.html b/frontend/gamma/tests/tests/Clipperz/KeyValueObjectStore.html
index ece8a9c..19dbd8b 100644
--- a/frontend/gamma/tests/tests/Clipperz/KeyValueObjectStore.html
+++ b/frontend/gamma/tests/tests/Clipperz/KeyValueObjectStore.html
@@ -1,49 +1,47 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> 26 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script>
29 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script> 27 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script>
30 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css"> 28 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css">
31 29
32 <script type='text/javascript' src='../../../js/JSON/json2.js'></script> 30 <script type='text/javascript' src='../../../js/JSON/json2.js'></script>
33 31
34 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script> 32 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script>
35 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script> 33 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script>
36 <script type='text/javascript' src='../../../js/Clipperz/ByteArray.js'></script> 34 <script type='text/javascript' src='../../../js/Clipperz/ByteArray.js'></script>
37 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script> 35 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script>
38 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script> 36 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script>
39 37
40 <script type='text/javascript' src='../../../js/Clipperz/KeyValueObjectStore.js'></script> 38 <script type='text/javascript' src='../../../js/Clipperz/KeyValueObjectStore.js'></script>
41 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script> 39 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script>
42</head> 40</head>
43<body> 41<body>
44 42
45<pre id="test"> 43<pre id="test">
46<script type="text/javascript" src="KeyValueObjectStore.test.js"></script> 44<script type="text/javascript" src="KeyValueObjectStore.test.js"></script>
47</pre> 45</pre>
48</body> 46</body>
49</html> 47</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/KeyValueObjectStore.test.js b/frontend/gamma/tests/tests/Clipperz/KeyValueObjectStore.test.js
index ac56386..3fbbe7e 100644
--- a/frontend/gamma/tests/tests/Clipperz/KeyValueObjectStore.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/KeyValueObjectStore.test.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26var tests = { 24var tests = {
27 25
28 //------------------------------------------------------------------------- 26 //-------------------------------------------------------------------------
29 27
30 'simple_tests': function() { 28 'simple_tests': function() {
31 vardeferredResult; 29 vardeferredResult;
32 30
33 deferredResult = new Clipperz.Async.Deferred("simple_tests", {trace:false}); 31 deferredResult = new Clipperz.Async.Deferred("simple_tests", {trace:false});
34 deferredResult.addCallback(function() { 32 deferredResult.addCallback(function() {
35 varobjectStore; 33 varobjectStore;
36 34
37 objectStore = new Clipperz.KeyValueObjectStore(); 35 objectStore = new Clipperz.KeyValueObjectStore();
38 36
39 ok(objectStore != null, "created an object store"); 37 ok(objectStore != null, "created an object store");
40 38
41 objectStore.setValue('key', "value"); 39 objectStore.setValue('key', "value");
42 is(objectStore.getValue('key'), "value", "can store and read a value to a simple key"); 40 is(objectStore.getValue('key'), "value", "can store and read a value to a simple key");
43 41
44 objectStore.setValue('key', "overwritten value"); 42 objectStore.setValue('key', "overwritten value");
45 is(objectStore.getValue('key'), "overwritten value", "using the same key overwrites the previous value"); 43 is(objectStore.getValue('key'), "overwritten value", "using the same key overwrites the previous value");
46 44
47 objectStore.setValue('record.keys', [1, 2, 3]); 45 objectStore.setValue('record.keys', [1, 2, 3]);
48 is( 46 is(
49 MochiKit.Base.compare(objectStore.getValue('record'), {'keys': [1,2,3]}), 47 MochiKit.Base.compare(objectStore.getValue('record'), {'keys': [1,2,3]}),
50 0, 48 0,
51 "getting a partial key returns the whole content associate with that key" 49 "getting a partial key returns the whole content associate with that key"
52 ); 50 );
53 is( 51 is(
54 MochiKit.Base.compare(objectStore.getValue('record.keys'), [1,2,3]), 52 MochiKit.Base.compare(objectStore.getValue('record.keys'), [1,2,3]),
55 0, 53 0,
56 "accessing data using a key.path return the matching content" 54 "accessing data using a key.path return the matching content"
57 ); 55 );
58 is( 56 is(
59 MochiKit.Base.compare(objectStore.getValue('record.keys.1'), 2), 57 MochiKit.Base.compare(objectStore.getValue('record.keys.1'), 2),
60 0, 58 0,
61 "accessing data using a key.path return the matching content, even inside an array" 59 "accessing data using a key.path return the matching content, even inside an array"
62 ); 60 );
63 61
64 is( 62 is(
65 objectStore.setValue('key', "value"), 63 objectStore.setValue('key', "value"),
66 "value", 64 "value",
67 "setting a value return the value itself, as a convenience to chain deferred methods" 65 "setting a value return the value itself, as a convenience to chain deferred methods"
68 ); 66 );
69 67
70 is( 68 is(
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/BookmarkletProcessor.html b/frontend/gamma/tests/tests/Clipperz/PM/BookmarkletProcessor.html
index b61057c..1a127a0 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/BookmarkletProcessor.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/BookmarkletProcessor.html
@@ -1,56 +1,54 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.PM.BookmarkletProcessor - test</title> 26 <title>Clipperz.PM.BookmarkletProcessor - test</title>
29 27
30 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
31 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 29 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
32 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 30 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
33 31
34 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 32 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
35 33
36 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script>
42 40
43 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/PM/BookmarkletProcessor.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/PM/BookmarkletProcessor.js'></script>
46 44
47 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script> 45 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script>
48 46
49</head> 47</head>
50<body> 48<body>
51 49
52<pre id="test"> 50<pre id="test">
53<script type="text/javascript" src="BookmarkletProcessor.test.js"></script> 51<script type="text/javascript" src="BookmarkletProcessor.test.js"></script>
54</pre> 52</pre>
55</body> 53</body>
56</html> 54</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/BookmarkletProcessor.test.js b/frontend/gamma/tests/tests/Clipperz/PM/BookmarkletProcessor.test.js
index 45bf76b..bcb77ea 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/BookmarkletProcessor.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/BookmarkletProcessor.test.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26function testBookmarkletConfigurationString (aConfiguration, shouldFail, aMessage) { 24function testBookmarkletConfigurationString (aConfiguration, shouldFail, aMessage) {
27 //var configuration; 25 //var configuration;
28 26
29//try { 27//try {
30 //configuration = Clipperz.Base.evalJSON(aConfiguration); 28 //configuration = Clipperz.Base.evalJSON(aConfiguration);
31//} catch (exception) { 29//} catch (exception) {
32 //console.log("EXCEPTION", exception); 30 //console.log("EXCEPTION", exception);
33 //throw exception; 31 //throw exception;
34//} 32//}
35 33
36//console.log("configuration", configuration); 34//console.log("configuration", configuration);
37 35
38 if (shouldFail == true) { 36 if (shouldFail == true) {
39 try { 37 try {
40 Clipperz.PM.BookmarkletProcessor.checkBookmarkletConfiguration(aConfiguration); 38 Clipperz.PM.BookmarkletProcessor.checkBookmarkletConfiguration(aConfiguration);
41 SimpleTest.ok(false, "vulnerability not caught - " + aMessage); 39 SimpleTest.ok(false, "vulnerability not caught - " + aMessage);
42 } catch(exception) { 40 } catch(exception) {
43 SimpleTest.ok(true, "vulnerability correctly caught - " + aMessage); 41 SimpleTest.ok(true, "vulnerability correctly caught - " + aMessage);
44 } 42 }
45 } else { 43 } else {
46 try { 44 try {
47 Clipperz.PM.BookmarkletProcessor.checkBookmarkletConfiguration(aConfiguration); 45 Clipperz.PM.BookmarkletProcessor.checkBookmarkletConfiguration(aConfiguration);
48 SimpleTest.ok(true, "configuration correctly checked - " + aMessage); 46 SimpleTest.ok(true, "configuration correctly checked - " + aMessage);
49 } catch(exception) { 47 } catch(exception) {
50 SimpleTest.ok(false, "configuration wrongly caught as malicious - " + aMessage); 48 SimpleTest.ok(false, "configuration wrongly caught as malicious - " + aMessage);
51 // console.log(exception); 49 // console.log(exception);
52 } 50 }
53 } 51 }
54} 52}
55 53
56//############################################################################# 54//#############################################################################
57 55
58var tests = { 56var tests = {
59 57
60 //------------------------------------------------------------------------- 58 //-------------------------------------------------------------------------
61 59
62 'simpleAmazonConfiguration_test': function () { 60 'simpleAmazonConfiguration_test': function () {
63 var bookmarkletConfigurationString; 61 var bookmarkletConfigurationString;
64 62
65 bookmarkletConfigurationString = "{"+ 63 bookmarkletConfigurationString = "{"+
66 "\"page\": {\"title\": \"Sign In\"},\n" + 64 "\"page\": {\"title\": \"Sign In\"},\n" +
67 "\"form\": {" + 65 "\"form\": {" +
68 "\"attributes\": {" + 66 "\"attributes\": {" +
69 "\"action\": \"https://www.amazon.com/gp/flex/sign-in/select.html\",\n" + 67 "\"action\": \"https://www.amazon.com/gp/flex/sign-in/select.html\",\n" +
70 "\"method\": \"post\"" + 68 "\"method\": \"post\"" +
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/Connection.data.js b/frontend/gamma/tests/tests/Clipperz/PM/Connection.data.js
index 3e01411..7a4f01d 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/Connection.data.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/Connection.data.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26testData = { 24testData = {
27 25
28 //------------------------------------------------------------------------- 26 //-------------------------------------------------------------------------
29 27
30 'joe_clipperz_offline_copy_data': { 28 'joe_clipperz_offline_copy_data': {
31 users:{ 29 users:{
32 'catchAllUser': { 30 'catchAllUser': {
33 __masterkey_test_value__: 'masterkey', 31 __masterkey_test_value__: 'masterkey',
34 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00', 32 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00',
35 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00' 33 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00'
36 }, 34 },
37 'f527cdd90d0d47f8524b4e165398ad1455eba515d04abd101d1e93b3c6ae0674': { 35 'f527cdd90d0d47f8524b4e165398ad1455eba515d04abd101d1e93b3c6ae0674': {
38 s: '186f0c40bf73f2af236eaa6c429df225efa933050c9aae65240e93b7b362e3ee', 36 s: '186f0c40bf73f2af236eaa6c429df225efa933050c9aae65240e93b7b362e3ee',
39 v: 'ac61a6e325ecf329926a86084f591d8852d0ad3e4a6080f2adc901b82395ecaf', 37 v: 'ac61a6e325ecf329926a86084f591d8852d0ad3e4a6080f2adc901b82395ecaf',
40 version: '0.2', 38 version: '0.2',
41 maxNumberOfRecords: '100', 39 maxNumberOfRecords: '100',
42 userDetails: '{"records":{"index":{"eeda70e0392261967bda71c3764da78989c45bbd2bb7be6b941b90f81d9b81b5":"0","13a5e52976337ab210903cd04872588e1b21fb72bc183e91aa25c494b8138551":"1","062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80":"2","ca01bcb7691f70818feed46c9a2a91883ac543997a395535aedbb49de166690c":"3","507f38b06d587d8889698ae1ebbba7ef8f0539b82550dd25779fd9ee88fc0c7a":"4","d5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d":"5","de13c0d036234c44214062bc0a89e5f127470c464333493a485729f43cdc26e4":"6","d620764a656bfd4e1d3758500d5db72e460a0cf729d56ed1a7755b5725c50045":"7","f215d89bf4583c12f5ed4f4330f488dad3fffa448f4dc784f15ef135dda2c732":"8","36ec1a41118813ced3553534fa2607d781cba687768db305beed368a8e06e113":"9","fe21497ef7435d31f9746c132e4b5ecf5aac5f13b5961ddb55d2bdc3409f28f6":"10","6d45c2fec275b7482d41c76b20507100cfb6ab49922b876f9dd3040d361f4a18":"11","9dcd2a8a0fcb7e57d234dc4fea347f020a6a01793e40cf56a0d22379e590e291":"12","6c25be8e145efb26a1abd59590522f73fb2e3dbc139af2217074d9e2ba92c16a":"13","6026370f3db3860d2c46a08e389a7e906dc14f98c8444b21be9a7e9f405a2728":"14","8b18e8593b5bc2f7ea39a5fab222047034ef2f380fee05be0fa6e1c0972fea39":"15","084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d":"16","7bb69b6366a8012f181c01e368ba18d4f7a82bcabb4959189736ad124c4bbfbb":"17","5cdac63b317f3942da38f3a3de3b7f0e5d6678200951c6216230295550f63fb4":"18","c0ce9130ca365bb02418d4305ea1d29e49c3f0e96d44b9d3cb6b4b6843d25065":"19"},"data":"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"},"directLogins":{"index":{"61e87fdc4f1d9112e3b30c1f6812d095dcdb24f014c83319091eb6c9899ec348":"0","989593d4c48929f0c8f1581aa96969c622807e99619ed4732026e967530a68ad":"1","9f7979368fa29f66c44bd97ecaf6c545abc800b1c7bb21b7655a68e1514c3906":"2","dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496":"3","aa18149164302d5dbe7e2d3724565b9550e00887b49978559783b2e38c625584":"4","1f9bfd677b531a03168d3f8bd8afabb5357244a7bc355dff50bd6c0a072114a6":"5","a48e38845713462ecc9f827149eeaae87da882031f98ef8ebbf9ee9537b63468":"6","6f7bbc4e42ea462b5246e6f51c3f86056bec50601ce2de6067c8c1d26f21c07f":"7","2df54059e78f5771f23bd285cce19595b38331b73d67020424d9a1b2257db09c":"8","065cd0c270e5e8ce50e4ea8e3828dccdae18c01ab030813d756a87d03fe68784":"9","ddbc8d01300a4f10631cbde09e1246332eade3a877a2205209f9eb9e5bc9da0b":"10","9b7a30e667afc9f76ba77600658b2c13bff52432d444261d39bf3d069a160afe":"11","9fd2929cde3d32d9cbc5f1d787f2f64729a5e12a14410556b31c0c099762c46a":"12","f695fc36ac56bead80c0d20a88e01e382819c18dc268f1679551b7c83db7cb14":"13","f22dc41ffabef4b3bc8f7af804fec975bd50718098322a673cbe4aaff9464ae1":"14","03251dc1cbc5398789e4c4b45c52cfac3fcd8c1a4f19a81fa68fc6feae31d55c":"15","a7b32e72502804bf2946a2a8856139cbbb759c5777e6b3e673db1fdf7e3bd06e":"16","cb9ae0bba1957075ccdbfd3b3481704d62087687a2ac7c411a4f07d444bde0f7":"17","7e1d069b7fa57c03bd7bf48807520feb953157834503aaff8c9d493f37dea69d":"18","24404059cabc63b2dbff0f42ba57183108b8189ef53ab62fa25141a1caea824b":"19","33cf9758477460a8056deef0295a1ebe65b39b392c361ceb920a83edacfe5d78":"20","e9a16316f330e3d150f6ffd194f6fd8acd1426757b097de4b88ca0db875202e4":"21"},"data":"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"},"preferences":{"data":"EZMrwxNFFd1sMGycoYE7IrlGGrfLixLUnLZmWMkFysfISe2ay3ueO0PGCApuKqh9hA=="},"oneTimePasswords":{"data":"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"},"version":"0.1"}', 40 userDetails: '{"records":{"index":{"eeda70e0392261967bda71c3764da78989c45bbd2bb7be6b941b90f81d9b81b5":"0","13a5e52976337ab210903cd04872588e1b21fb72bc183e91aa25c494b8138551":"1","062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80":"2","ca01bcb7691f70818feed46c9a2a91883ac543997a395535aedbb49de166690c":"3","507f38b06d587d8889698ae1ebbba7ef8f0539b82550dd25779fd9ee88fc0c7a":"4","d5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d":"5","de13c0d036234c44214062bc0a89e5f127470c464333493a485729f43cdc26e4":"6","d620764a656bfd4e1d3758500d5db72e460a0cf729d56ed1a7755b5725c50045":"7","f215d89bf4583c12f5ed4f4330f488dad3fffa448f4dc784f15ef135dda2c732":"8","36ec1a41118813ced3553534fa2607d781cba687768db305beed368a8e06e113":"9","fe21497ef7435d31f9746c132e4b5ecf5aac5f13b5961ddb55d2bdc3409f28f6":"10","6d45c2fec275b7482d41c76b20507100cfb6ab49922b876f9dd3040d361f4a18":"11","9dcd2a8a0fcb7e57d234dc4fea347f020a6a01793e40cf56a0d22379e590e291":"12","6c25be8e145efb26a1abd59590522f73fb2e3dbc139af2217074d9e2ba92c16a":"13","6026370f3db3860d2c46a08e389a7e906dc14f98c8444b21be9a7e9f405a2728":"14","8b18e8593b5bc2f7ea39a5fab222047034ef2f380fee05be0fa6e1c0972fea39":"15","084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d":"16","7bb69b6366a8012f181c01e368ba18d4f7a82bcabb4959189736ad124c4bbfbb":"17","5cdac63b317f3942da38f3a3de3b7f0e5d6678200951c6216230295550f63fb4":"18","c0ce9130ca365bb02418d4305ea1d29e49c3f0e96d44b9d3cb6b4b6843d25065":"19"},"data":"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"},"directLogins":{"index":{"61e87fdc4f1d9112e3b30c1f6812d095dcdb24f014c83319091eb6c9899ec348":"0","989593d4c48929f0c8f1581aa96969c622807e99619ed4732026e967530a68ad":"1","9f7979368fa29f66c44bd97ecaf6c545abc800b1c7bb21b7655a68e1514c3906":"2","dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496":"3","aa18149164302d5dbe7e2d3724565b9550e00887b49978559783b2e38c625584":"4","1f9bfd677b531a03168d3f8bd8afabb5357244a7bc355dff50bd6c0a072114a6":"5","a48e38845713462ecc9f827149eeaae87da882031f98ef8ebbf9ee9537b63468":"6","6f7bbc4e42ea462b5246e6f51c3f86056bec50601ce2de6067c8c1d26f21c07f":"7","2df54059e78f5771f23bd285cce19595b38331b73d67020424d9a1b2257db09c":"8","065cd0c270e5e8ce50e4ea8e3828dccdae18c01ab030813d756a87d03fe68784":"9","ddbc8d01300a4f10631cbde09e1246332eade3a877a2205209f9eb9e5bc9da0b":"10","9b7a30e667afc9f76ba77600658b2c13bff52432d444261d39bf3d069a160afe":"11","9fd2929cde3d32d9cbc5f1d787f2f64729a5e12a14410556b31c0c099762c46a":"12","f695fc36ac56bead80c0d20a88e01e382819c18dc268f1679551b7c83db7cb14":"13","f22dc41ffabef4b3bc8f7af804fec975bd50718098322a673cbe4aaff9464ae1":"14","03251dc1cbc5398789e4c4b45c52cfac3fcd8c1a4f19a81fa68fc6feae31d55c":"15","a7b32e72502804bf2946a2a8856139cbbb759c5777e6b3e673db1fdf7e3bd06e":"16","cb9ae0bba1957075ccdbfd3b3481704d62087687a2ac7c411a4f07d444bde0f7":"17","7e1d069b7fa57c03bd7bf48807520feb953157834503aaff8c9d493f37dea69d":"18","24404059cabc63b2dbff0f42ba57183108b8189ef53ab62fa25141a1caea824b":"19","33cf9758477460a8056deef0295a1ebe65b39b392c361ceb920a83edacfe5d78":"20","e9a16316f330e3d150f6ffd194f6fd8acd1426757b097de4b88ca0db875202e4":"21"},"data":"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"},"preferences":{"data":"EZMrwxNFFd1sMGycoYE7IrlGGrfLixLUnLZmWMkFysfISe2ay3ueO0PGCApuKqh9hA=="},"oneTimePasswords":{"data":"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"},"version":"0.1"}',
43 statistics: 'SfGy/4mpXQdDOv+Bcfie4Yt/', 41 statistics: 'SfGy/4mpXQdDOv+Bcfie4Yt/',
44 userDetailsVersion: '0.3', 42 userDetailsVersion: '0.3',
45 records: { 43 records: {
46 '062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80': { 44 '062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80': {
47 data: '7sgxSQlqR+wh3g06M2+sWp7raQxjjQ9jLIz2OcEB7SckuQcXNrhMlDCbL6ncSljtzgqhioWrOB409kIG8lc7h6ekghOE/Mhi7rVwAiRfNGB7r3mYxpEXRe96O2RG7E+NcSp8ezl+5gJ9D0o1abXPeFQYGcr95hUioCfyY+xrxY8TJVwdb9nHkYvBdKV7rCl1dTxgsKWK3nlo1T7e5uyiz5YUAE6BrCtTFAqtprLI/xOpRti9C+llohS7D6s8hkCBPZfp3chKFDrgpsCBFLhXN8jrBKSjHi1PJdRQzpJsgrxyeBj0dZx3gTsYOXqrYgdIzFUo7K1Tqb30yNprBiDMr7j0YYXiSvEb7OuOIP+HTXGN+yt09bk9LggyY6Fh0e+tenjQQ3soySN/XznOBpEjXbzXoz6fR1MXVnE9GgaX99LVNqwWfq2rIBdSE/FfspRiWP3BY5jIrEkNeRclS05U1zw3K3wxOL+cB9r2IynSXnK8QcrDNNRZ0W3PhsSFfByUXuviLSEOPuJa1mYP29L9Lj/WyHL1Gyl8xLbt2H41S6+wvIleKMuc7teH6wPXbnYphvbwBowoI6HZTEFkz3dQKhhY6VF/81iCXsuaz6BjyrzFX6SkQ4S3lN1tv4opQMJFvnmHb6EkXqVWfeIXzJIJO+owL4vDOf4okpAD+HPjjlVXhq6fvyM5UBIK9+tzJW78X/zifrQOfWRIhwjVsfUdZWmZ/S35vnHWNuXkM8GBYrDysqxanDtah3U8XLAiIhFtBOzpzr6qGaNDOKKgG3K8QXT4bYHOq1rQVUwzQuKhlCyStrRMQrC5Ry251xmLy6dKfppRarVeGDtzB/30BbtFNdZmzMNG2g+Jj5tFCrEtCMvMiQEWZHMU3tGMFxDef/KKdv1fFTJC16jmaUiCHUZmNjB3EO9R6xPVcMlAVKf57n3efrpRk/GTmm9JhAFkuF/wsveH4JjPpDUdkHYFu5tHbb30sbga3ufBAXbQL4ck10S24akU/cKraFGLvuKGaR2U0i6ih911TBSf3pAfZ3RFbBhVIl+6rSknC5+IXoBR7MRstBPW/xC9pQVjN5Qyn0g3aUjUSI+q4jcTuvMl32NtTJbWRMGhfkrpVzypZTyPnIh6XJkyBghlUARXw23MlbjiZxmY4ScDmcWZRZJWIknHlqjDKFDKNnwrfnEI9qWyMDno+jA/DEQz0mnpdZYEsoz1/qAmAeDt89vx', 45 data: '7sgxSQlqR+wh3g06M2+sWp7raQxjjQ9jLIz2OcEB7SckuQcXNrhMlDCbL6ncSljtzgqhioWrOB409kIG8lc7h6ekghOE/Mhi7rVwAiRfNGB7r3mYxpEXRe96O2RG7E+NcSp8ezl+5gJ9D0o1abXPeFQYGcr95hUioCfyY+xrxY8TJVwdb9nHkYvBdKV7rCl1dTxgsKWK3nlo1T7e5uyiz5YUAE6BrCtTFAqtprLI/xOpRti9C+llohS7D6s8hkCBPZfp3chKFDrgpsCBFLhXN8jrBKSjHi1PJdRQzpJsgrxyeBj0dZx3gTsYOXqrYgdIzFUo7K1Tqb30yNprBiDMr7j0YYXiSvEb7OuOIP+HTXGN+yt09bk9LggyY6Fh0e+tenjQQ3soySN/XznOBpEjXbzXoz6fR1MXVnE9GgaX99LVNqwWfq2rIBdSE/FfspRiWP3BY5jIrEkNeRclS05U1zw3K3wxOL+cB9r2IynSXnK8QcrDNNRZ0W3PhsSFfByUXuviLSEOPuJa1mYP29L9Lj/WyHL1Gyl8xLbt2H41S6+wvIleKMuc7teH6wPXbnYphvbwBowoI6HZTEFkz3dQKhhY6VF/81iCXsuaz6BjyrzFX6SkQ4S3lN1tv4opQMJFvnmHb6EkXqVWfeIXzJIJO+owL4vDOf4okpAD+HPjjlVXhq6fvyM5UBIK9+tzJW78X/zifrQOfWRIhwjVsfUdZWmZ/S35vnHWNuXkM8GBYrDysqxanDtah3U8XLAiIhFtBOzpzr6qGaNDOKKgG3K8QXT4bYHOq1rQVUwzQuKhlCyStrRMQrC5Ry251xmLy6dKfppRarVeGDtzB/30BbtFNdZmzMNG2g+Jj5tFCrEtCMvMiQEWZHMU3tGMFxDef/KKdv1fFTJC16jmaUiCHUZmNjB3EO9R6xPVcMlAVKf57n3efrpRk/GTmm9JhAFkuF/wsveH4JjPpDUdkHYFu5tHbb30sbga3ufBAXbQL4ck10S24akU/cKraFGLvuKGaR2U0i6ih911TBSf3pAfZ3RFbBhVIl+6rSknC5+IXoBR7MRstBPW/xC9pQVjN5Qyn0g3aUjUSI+q4jcTuvMl32NtTJbWRMGhfkrpVzypZTyPnIh6XJkyBghlUARXw23MlbjiZxmY4ScDmcWZRZJWIknHlqjDKFDKNnwrfnEI9qWyMDno+jA/DEQz0mnpdZYEsoz1/qAmAeDt89vx',
48 version: '0.2', 46 version: '0.2',
49 creationDate: 'Wed Mar 14 15:46:44 CET 2007', 47 creationDate: 'Wed Mar 14 15:46:44 CET 2007',
50 updateDate: 'Wed Mar 14 15:46:44 CET 2007', 48 updateDate: 'Wed Mar 14 15:46:44 CET 2007',
51 accessDate: 'Mon Jan 19 16:10:04 CET 2009', 49 accessDate: 'Mon Jan 19 16:10:04 CET 2009',
52 currentVersion: '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3', 50 currentVersion: '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3',
53 versions: { 51 versions: {
54 '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3': { 52 '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3': {
55 header: '####', 53 header: '####',
56 data: 'GCNNIhDQjMJQZGVSf+95fPtU6eOnFWVhuGm86r8WZGVR2Gf2EjbG1OJ0ZIGpZ/AXgirCMpo5AFxJe0Bay8IYg+xmBqMFhwFxzAgJBYCIts+raSaNRipuY8dTEqDxAqD1cChcG8EhSoiFgQ0fG0I7nNEUDJi0pIt4/ygBcwvAhuAenEp9ZW+oQA0+YysPQRqkz3IieFaOoSEbe5/SqpUilV4q1gTVyzNXvrxzxx+rlvEyGFgFN+vgtUZ1NrwlPk4gVksTpylvv6CFaMGEWKhgMG6efo0rJckKosaJTu1pldJdnmMK4EKNMLOd+jZ6pEhEhYyadrA4+zYU5TlmZA6ASzTaps8piSwZodoi9qY0ch2StK4mAbzeEGe2HdfHuAU9Tyq3Ppk3+VfNdKgpQfYrQOiSlXbKzK636tzXTN/gyrfOTHjBrRl117ywibgSX63ayAYNfcLpKotC', 54 data: 'GCNNIhDQjMJQZGVSf+95fPtU6eOnFWVhuGm86r8WZGVR2Gf2EjbG1OJ0ZIGpZ/AXgirCMpo5AFxJe0Bay8IYg+xmBqMFhwFxzAgJBYCIts+raSaNRipuY8dTEqDxAqD1cChcG8EhSoiFgQ0fG0I7nNEUDJi0pIt4/ygBcwvAhuAenEp9ZW+oQA0+YysPQRqkz3IieFaOoSEbe5/SqpUilV4q1gTVyzNXvrxzxx+rlvEyGFgFN+vgtUZ1NrwlPk4gVksTpylvv6CFaMGEWKhgMG6efo0rJckKosaJTu1pldJdnmMK4EKNMLOd+jZ6pEhEhYyadrA4+zYU5TlmZA6ASzTaps8piSwZodoi9qY0ch2StK4mAbzeEGe2HdfHuAU9Tyq3Ppk3+VfNdKgpQfYrQOiSlXbKzK636tzXTN/gyrfOTHjBrRl117ywibgSX63ayAYNfcLpKotC',
57 version: '0.2', 55 version: '0.2',
58 creationDate: 'Wed Mar 14 15:46:44 CET 2007', 56 creationDate: 'Wed Mar 14 15:46:44 CET 2007',
59 updateDate: 'Wed Mar 14 15:46:44 CET 2007', 57 updateDate: 'Wed Mar 14 15:46:44 CET 2007',
60 accessDate: 'Mon Jan 19 16:10:04 CET 2009' 58 accessDate: 'Mon Jan 19 16:10:04 CET 2009'
61 } 59 }
62 } 60 }
63 }, 61 },
64 '084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d': { 62 '084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d': {
65 data: 'fGzBu1On7e/6rAoSB1a4fq/CkS8Be/T8UP5cQ93asBTWndSYu2lW4DQ4SXQXSindIi3OnNx/f6SNv/extb7OrMLREF92wXI045ipPwy+DIICb+cQNMJ82Sh4cXaIcAWcyrm+MYri3qq9LBKbpwkILcebZidJ86lmKYHJozUezmfbMcwNCljHs/gYkHVzVcuw9L52Ugc6wC7sjsshh+UH6i4/2Frlrophtx+b1vervNd8eoYiKnedHVXVfW7UJcQoF27eHFgzwYnGvRW0KNXFFhqmPb61TSkIvNdCCvBKDP4SXrWvGgzU89wipvWdUPpQ+fCT6Mp3hPRrbJxwMunmjujZOzBld/HkjnXoiNfBb5akA280WvdyzWYATrjV1ZFx8yQY8G0+lRt/MxjKDc38w4y+Rf5WeRbXboJMvFatwooHUggk6qSRmZVvgOmFmNuDRnRYIFzqK3JclhJeVasnqhR6RiGSowc1Ffr1HhcZCMnXpQABGBkZcHD/zw6YjHRyh9Plw7XAm0xb16HMDtiwt7WLJpxLH/HP99j/A2hvMGWiUiFCaYv7AzyEPTmYbN32D1IsAEE/GC3FG0HypGTBolP8wpAfTRdlvWpJz8oRRdwuLV3Pgpu+kXh5sQyeZI6tnuMPQFmRDcMN1oo3E5V5V585nVMnKTFcXhBzD4UnoV+DQNkG/+iSPybQzz/EZmucEqGEYyjI3kl4MAX8UMEUxE4JO0fF8MzyBI13nxknowAceEammx1dGVaJCoIOdhadaPVPyOzXM1Vp1erVm5k4TsxSx1pll+GOm6hVoNHIuQLDueaMEpRxMhfwc8cDyXURqRGPTgTc0bint5xVjo10fnpX1gcdc/AWL6y3tXM80NW+uFJ4GI7VzyzfcMRzTiRaGi19z8MIx8PbIVGh2sw4FhgGujNsPrpuESvUVT+17M0+v8oEoABNlcizTMFs/sA1uqlPumFASltzmViAzClOsDuCh069hFLjdk/Ex5jy4vPYlwOT8Uq9DJC9ZWuZgiI1DrhWN/8QGAEGxxbvnSZPNCQ9kpD5p+iabinLLWOAirVNgKwIRJRyAu/uR9xKd7J9Wxq8q/ii+y5lGilbo2g24wbDwrkXYVhqp/4J0g+p8Wv1NBjCTSCqV39WEizUCRHo3ee9HnQnBJQDOyTBRuz2odTJtJ5tLYjWXZRdFzFSJrEq+Z1z3oq7LnhZy3YWaFXPeKmBCemMthtNt0nL', 63 data: 'fGzBu1On7e/6rAoSB1a4fq/CkS8Be/T8UP5cQ93asBTWndSYu2lW4DQ4SXQXSindIi3OnNx/f6SNv/extb7OrMLREF92wXI045ipPwy+DIICb+cQNMJ82Sh4cXaIcAWcyrm+MYri3qq9LBKbpwkILcebZidJ86lmKYHJozUezmfbMcwNCljHs/gYkHVzVcuw9L52Ugc6wC7sjsshh+UH6i4/2Frlrophtx+b1vervNd8eoYiKnedHVXVfW7UJcQoF27eHFgzwYnGvRW0KNXFFhqmPb61TSkIvNdCCvBKDP4SXrWvGgzU89wipvWdUPpQ+fCT6Mp3hPRrbJxwMunmjujZOzBld/HkjnXoiNfBb5akA280WvdyzWYATrjV1ZFx8yQY8G0+lRt/MxjKDc38w4y+Rf5WeRbXboJMvFatwooHUggk6qSRmZVvgOmFmNuDRnRYIFzqK3JclhJeVasnqhR6RiGSowc1Ffr1HhcZCMnXpQABGBkZcHD/zw6YjHRyh9Plw7XAm0xb16HMDtiwt7WLJpxLH/HP99j/A2hvMGWiUiFCaYv7AzyEPTmYbN32D1IsAEE/GC3FG0HypGTBolP8wpAfTRdlvWpJz8oRRdwuLV3Pgpu+kXh5sQyeZI6tnuMPQFmRDcMN1oo3E5V5V585nVMnKTFcXhBzD4UnoV+DQNkG/+iSPybQzz/EZmucEqGEYyjI3kl4MAX8UMEUxE4JO0fF8MzyBI13nxknowAceEammx1dGVaJCoIOdhadaPVPyOzXM1Vp1erVm5k4TsxSx1pll+GOm6hVoNHIuQLDueaMEpRxMhfwc8cDyXURqRGPTgTc0bint5xVjo10fnpX1gcdc/AWL6y3tXM80NW+uFJ4GI7VzyzfcMRzTiRaGi19z8MIx8PbIVGh2sw4FhgGujNsPrpuESvUVT+17M0+v8oEoABNlcizTMFs/sA1uqlPumFASltzmViAzClOsDuCh069hFLjdk/Ex5jy4vPYlwOT8Uq9DJC9ZWuZgiI1DrhWN/8QGAEGxxbvnSZPNCQ9kpD5p+iabinLLWOAirVNgKwIRJRyAu/uR9xKd7J9Wxq8q/ii+y5lGilbo2g24wbDwrkXYVhqp/4J0g+p8Wv1NBjCTSCqV39WEizUCRHo3ee9HnQnBJQDOyTBRuz2odTJtJ5tLYjWXZRdFzFSJrEq+Z1z3oq7LnhZy3YWaFXPeKmBCemMthtNt0nL',
66 version: '0.3', 64 version: '0.3',
67 creationDate: 'Fri Oct 17 16:49:20 CEST 2008', 65 creationDate: 'Fri Oct 17 16:49:20 CEST 2008',
68 updateDate: 'Mon Oct 27 08:58:49 CET 2008', 66 updateDate: 'Mon Oct 27 08:58:49 CET 2008',
69 accessDate: 'Mon Jan 19 16:09:39 CET 2009', 67 accessDate: 'Mon Jan 19 16:09:39 CET 2009',
70 currentVersion: '6fd60c5709a4808444f43f7bbd872363d76703957f613076538ba2f9161206ac', 68 currentVersion: '6fd60c5709a4808444f43f7bbd872363d76703957f613076538ba2f9161206ac',
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/Connection.html b/frontend/gamma/tests/tests/Clipperz/PM/Connection.html
index e2a3394..1f3a472 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/Connection.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/Connection.html
@@ -1,68 +1,66 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.PM.Connection - test</title> 26 <title>Clipperz.PM.Connection - test</title>
29 27
30 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
31 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 29 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
32 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 30 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
33 31
34 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 32 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
35 33
36 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script>
43 41
44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> 47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
50 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script> 48 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script>
51 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 49 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
52 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script> 50 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script>
53 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script> 51 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script>
54 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script> 52 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script>
55 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> 53 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
56 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> 54 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
57 55
58 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script> 56 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script>
59 57
60</head> 58</head>
61<body> 59<body>
62 60
63<pre id="test"> 61<pre id="test">
64<script type="text/javascript" src="Connection.data.js"></script> 62<script type="text/javascript" src="Connection.data.js"></script>
65<script type="text/javascript" src="Connection.test.js"></script> 63<script type="text/javascript" src="Connection.test.js"></script>
66</pre> 64</pre>
67</body> 65</body>
68</html> 66</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/Connection.test.js b/frontend/gamma/tests/tests/Clipperz/PM/Connection.test.js
index 9d0036a..df409c0 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/Connection.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/Connection.test.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 24Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
27 25
28var tests = { 26var tests = {
29 27
30 //------------------------------------------------------------------------- 28 //-------------------------------------------------------------------------
31 29
32 'simple_tests': function () { 30 'simple_tests': function () {
33 vardeferredResult; 31 vardeferredResult;
34 32
35 deferredResult = new Clipperz.Async.Deferred("simple_tests", {trace:false}); 33 deferredResult = new Clipperz.Async.Deferred("simple_tests", {trace:false});
36 deferredResult.addCallback(function() { 34 deferredResult.addCallback(function() {
37 var connection; 35 var connection;
38 36
39 SimpleTest.is(Clipperz.PM.Connection.communicationProtocol.versions['current'], Clipperz.PM.Connection.SRP['1.1'], "the current connection is 1.1"); 37 SimpleTest.is(Clipperz.PM.Connection.communicationProtocol.versions['current'], Clipperz.PM.Connection.SRP['1.1'], "the current connection is 1.1");
40 38
41 connection = new Clipperz.PM.Connection.communicationProtocol.versions['current'](); 39 connection = new Clipperz.PM.Connection.communicationProtocol.versions['current']();
42 SimpleTest.ok(connection != null, "can create a connection with the 'current' communication protocol"); 40 SimpleTest.ok(connection != null, "can create a connection with the 'current' communication protocol");
43 41
44 SimpleTest.is(connection.proxy(), Clipperz.PM.Proxy.defaultProxy, "the connection uses the defaultProxy if no proxy is specified on the constructor"); 42 SimpleTest.is(connection.proxy(), Clipperz.PM.Proxy.defaultProxy, "the connection uses the defaultProxy if no proxy is specified on the constructor");
45 }); 43 });
46 44
47 deferredResult.callback(); 45 deferredResult.callback();
48 46
49 return deferredResult; 47 return deferredResult;
50 }, 48 },
51 49
52 //------------------------------------------------------------------------- 50 //-------------------------------------------------------------------------
53 51
54 'simpleProxy_tests': function () { 52 'simpleProxy_tests': function () {
55 vardeferredResult; 53 vardeferredResult;
56 54
57 deferredResult = new Clipperz.Async.Deferred("simple_tests", {trace:false}); 55 deferredResult = new Clipperz.Async.Deferred("simple_tests", {trace:false});
58 deferredResult.addCallback(function() { 56 deferredResult.addCallback(function() {
59 var connection; 57 var connection;
60 var proxy; 58 var proxy;
61 59
62 proxy = new Clipperz.PM.Proxy(); 60 proxy = new Clipperz.PM.Proxy();
63 connection = new Clipperz.PM.Connection.communicationProtocol.versions['current']({proxy:proxy}); 61 connection = new Clipperz.PM.Connection.communicationProtocol.versions['current']({proxy:proxy});
64 SimpleTest.is(connection.proxy(), proxy, "the connection uses the specified proxy, when present"); 62 SimpleTest.is(connection.proxy(), proxy, "the connection uses the specified proxy, when present");
65 }); 63 });
66 64
67 deferredResult.callback(); 65 deferredResult.callback();
68 66
69 return deferredResult; 67 return deferredResult;
70 }, 68 },
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/Crypto.html b/frontend/gamma/tests/tests/Clipperz/PM/Crypto.html
index 044658e..67627f8 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/Crypto.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/Crypto.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.PM.Crypto - TEST</title> 26 <title>Clipperz.PM.Crypto - TEST</title>
29 27
30 <script> 28 <script>
31 jslog_config_enabled = true; 29 jslog_config_enabled = true;
32 clipperz_profiling_enabled = true; 30 clipperz_profiling_enabled = true;
33 </script> 31 </script>
34 32
35 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 33 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
36 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 34 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
37 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 35 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
38 36
39 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 37 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
42 40
43 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
46 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 44 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
47 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/Profile.js'></script> 46 <script type='text/javascript' src='../../../../js/Clipperz/Profile.js'></script>
49 47
50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
51 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
52 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
53 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 51 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
54 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 52 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
55 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> 53 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
56 54
57 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 55 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> 56 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
59 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> 57 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
60 58
61 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script> 59 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script>
62<!-- 60<!--
63 <script> 61 <script>
64 MochiKit.DOM.addLoadEvent(MochiKit.Base.partial(MochiKit.LoggingPane.createLoggingPane, true)); 62 MochiKit.DOM.addLoadEvent(MochiKit.Base.partial(MochiKit.LoggingPane.createLoggingPane, true));
65 MochiKit.Logging.logger.useNativeConsole = true; 63 MochiKit.Logging.logger.useNativeConsole = true;
66 </script> 64 </script>
67--> 65-->
68</head> 66</head>
69<body> 67<body>
70<pre id="test"> 68<pre id="test">
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/Crypto_performanceEvaluation.html b/frontend/gamma/tests/tests/Clipperz/PM/Crypto_performanceEvaluation.html
index e8ce0bc..5529121 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/Crypto_performanceEvaluation.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/Crypto_performanceEvaluation.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.PM.Crypt - Performance evaluation - TEST</title> 26 <title>Clipperz.PM.Crypt - Performance evaluation - TEST</title>
29 27
30 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
31 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 29 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
32 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 30 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
33 31
34 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 32 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
35 33
36 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
40 38
41 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> 44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
47 45
48 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 46 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
49 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> 47 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
50 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> 48 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
51 49
52<!--< script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES_other_implementation.js'>< /script> --> 50<!--< script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES_other_implementation.js'>< /script> -->
53 51
54</head> 52</head>
55<body> 53<body>
56<pre id="test"> 54<pre id="test">
57 55
58<script type="text/javascript"> 56<script type="text/javascript">
59 57
60try { 58try {
61 var key; 59 var key;
62 var shortText; 60 var shortText;
63 var longText; 61 var longText;
64 var veryLongText; 62 var veryLongText;
65 var byteArray; 63 var byteArray;
66 varplainText; 64 varplainText;
67 var encryptedText; 65 var encryptedText;
68 var decryptedText; 66 var decryptedText;
69 var startTime, endTime; 67 var startTime, endTime;
70 var startTime1, endTime1; 68 var startTime1, endTime1;
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/Crypto_test.html b/frontend/gamma/tests/tests/Clipperz/PM/Crypto_test.html
index dc01dae..d4750f5 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/Crypto_test.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/Crypto_test.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.PM.Crypto - TEST</title> 26 <title>Clipperz.PM.Crypto - TEST</title>
29 27
30 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
31 29
32 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 30 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
33 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 31 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
34 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 32 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
35 33
36 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
41 39
42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
48 46
49 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 47 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
50 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> 48 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
51 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> 49 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
52 50
53 51
54<!-- ================================================================================ --> <script> 52<!-- ================================================================================ --> <script>
55//MochiKit.DOM.addLoadEvent(MochiKit.Base.partial(MochiKit.LoggingPane.createLoggingPane, true)); 53//MochiKit.DOM.addLoadEvent(MochiKit.Base.partial(MochiKit.LoggingPane.createLoggingPane, true));
56//MochiKit.Logging.logger.useNativeConsole = true; 54//MochiKit.Logging.logger.useNativeConsole = true;
57 55
58//----------------------------------------------------------------------------- 56//-----------------------------------------------------------------------------
59 57
60encodePassword = function (anEvent) { 58encodePassword = function (anEvent) {
61 varusername; 59 varusername;
62 var password; 60 var password;
63 var encodedPassword; 61 var encodedPassword;
64 var srpConnection; 62 var srpConnection;
65 63
66 anEvent.stop(); 64 anEvent.stop();
67 65
68 srpConnection = new Clipperz.PM.Connection.SRP['1.1'](); 66 srpConnection = new Clipperz.PM.Connection.SRP['1.1']();
69 67
70 username = MochiKit.DOM.getElement('username').value; 68 username = MochiKit.DOM.getElement('username').value;
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLogin.html b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLogin.html
index 0a5bcfb..73b8225 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLogin.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLogin.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.PM.DataModel.DirectLogin - test</title> 26 <title>Clipperz.PM.DataModel.DirectLogin - test</title>
29 27
30 <script type="text/javascript" src="../../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../../js/MochiKit/MochiKit.js"></script>
31 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.js"></script> 29 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.js"></script>
32 <link rel="stylesheet" type="text/css" href="../../../../SimpleTest/test.css"> 30 <link rel="stylesheet" type="text/css" href="../../../../SimpleTest/test.css">
33 31
34 <script type='text/javascript' src='../../../../../js/JSON/json2.js'></script> 32 <script type='text/javascript' src='../../../../../js/JSON/json2.js'></script>
35 33
36 <script type='text/javascript' src='../../../../../js/Clipperz/YUI/Utils.js'></script> 34 <script type='text/javascript' src='../../../../../js/Clipperz/YUI/Utils.js'></script>
37 <script type='text/javascript' src='../../../../../js/Clipperz/Base.js'></script> 35 <script type='text/javascript' src='../../../../../js/Clipperz/Base.js'></script>
38 <script type='text/javascript' src='../../../../../js/Clipperz/Date.js'></script> 36 <script type='text/javascript' src='../../../../../js/Clipperz/Date.js'></script>
39 <script type='text/javascript' src='../../../../../js/Clipperz/ByteArray.js'></script> 37 <script type='text/javascript' src='../../../../../js/Clipperz/ByteArray.js'></script>
40 <script type='text/javascript' src='../../../../../js/Clipperz/Logging.js'></script> 38 <script type='text/javascript' src='../../../../../js/Clipperz/Logging.js'></script>
41 <script type='text/javascript' src='../../../../../js/Clipperz/Async.js'></script> 39 <script type='text/javascript' src='../../../../../js/Clipperz/Async.js'></script>
42 <script type='text/javascript' src='../../../../../js/Clipperz/Signal.js'></script> 40 <script type='text/javascript' src='../../../../../js/Clipperz/Signal.js'></script>
43 <script type='text/javascript' src='../../../../../js/Clipperz/KeyValueObjectStore.js'></script> 41 <script type='text/javascript' src='../../../../../js/Clipperz/KeyValueObjectStore.js'></script>
44 42
45 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/Base.js'></script> 43 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/Base.js'></script>
46 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/BigInt.js'></script> 44 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/BigInt.js'></script>
47 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/AES.js'></script> 45 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/AES.js'></script>
48 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SHA.js'></script> 46 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SHA.js'></script>
49 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/PRNG.js'></script> 47 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/PRNG.js'></script>
50 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SRP.js'></script> 48 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SRP.js'></script>
51 49
52 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Toll.js'></script> 50 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Toll.js'></script>
53 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy.js'></script> 51 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy.js'></script>
54 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script> 52 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script>
55 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script> 53 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script>
56 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script> 54 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script>
57 55
58 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Connection.js'></script> 56 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Connection.js'></script>
59 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Crypto.js'></script> 57 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Crypto.js'></script>
60 58
61 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings.js'></script> 59 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings.js'></script>
62 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script> 60 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script>
63 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Date.js'></script> 61 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Date.js'></script>
64 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script> 62 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script>
65 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.js'></script> 63 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.js'></script>
66 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script> 64 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script>
67 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script> 65 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script>
68 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script> 66 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script>
69 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLoginInput.js'></script> 67 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLoginInput.js'></script>
70 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLoginBinding.js'></script> 68 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLoginBinding.js'></script>
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLogin.test.js b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLogin.test.js
index 7df0971..11009f5 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLogin.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLogin.test.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 24Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
27 25
28var tests = { 26var tests = {
29 27
30/* 28/*
31 user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return 'test';}}); 29 user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return 'test';}});
32 ... 30 ...
33 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['test_test_offline_copy_data']); 31 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['test_test_offline_copy_data']);
34 deferredResult.addMethod(user, 'getRecord', '8280842f41162b673335b63860637e8472e8bbff0efa2bc78b0dbc5e09712e13'); 32 deferredResult.addMethod(user, 'getRecord', '8280842f41162b673335b63860637e8472e8bbff0efa2bc78b0dbc5e09712e13');
35 33
36 34
37 user = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}}); 35 user = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}});
38 ... 36 ...
39 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data']); 37 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data']);
40 deferredResult.addMethod(user, 'getRecord', '5cdac63b317f3942da38f3a3de3b7f0e5d6678200951c6216230295550f63fb4'); //WEB PASSWORD (0) 38 deferredResult.addMethod(user, 'getRecord', '5cdac63b317f3942da38f3a3de3b7f0e5d6678200951c6216230295550f63fb4'); //WEB PASSWORD (0)
41 deferredResult.addMethod(user, 'getRecord', '36ec1a41118813ced3553534fa2607d781cba687768db305beed368a8e06e113'); //DIGG (1) 39 deferredResult.addMethod(user, 'getRecord', '36ec1a41118813ced3553534fa2607d781cba687768db305beed368a8e06e113'); //DIGG (1)
42 deferredResult.addMethod(user, 'getRecord', 'c0ce9130ca365bb02418d4305ea1d29e49c3f0e96d44b9d3cb6b4b6843d25065'); //SAP (2) 40 deferredResult.addMethod(user, 'getRecord', 'c0ce9130ca365bb02418d4305ea1d29e49c3f0e96d44b9d3cb6b4b6843d25065'); //SAP (2)
43 deferredResult.addMethod(user, 'getRecord', 'd5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d'); //YAHOO (4) 41 deferredResult.addMethod(user, 'getRecord', 'd5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d'); //YAHOO (4)
44 DirectLogin references 42 DirectLogin references
45 - dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496 //Yahoo! Mail 43 - dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496 //Yahoo! Mail
46 - aa18149164302d5dbe7e2d3724565b9550e00887b49978559783b2e38c625584 //(Yahoo! Groups) 44 - aa18149164302d5dbe7e2d3724565b9550e00887b49978559783b2e38c625584 //(Yahoo! Groups)
47 - 6f7bbc4e42ea462b5246e6f51c3f86056bec50601ce2de6067c8c1d26f21c07f //(Flickr) 45 - 6f7bbc4e42ea462b5246e6f51c3f86056bec50601ce2de6067c8c1d26f21c07f //(Flickr)
48 - a7b32e72502804bf2946a2a8856139cbbb759c5777e6b3e673db1fdf7e3bd06e //(My Yahoo!) 46 - a7b32e72502804bf2946a2a8856139cbbb759c5777e6b3e673db1fdf7e3bd06e //(My Yahoo!)
49*/ 47*/
50 //------------------------------------------------------------------------- 48 //-------------------------------------------------------------------------
51 49
52 'editDirectLoginLabel_test': function (someTestArgs) { 50 'editDirectLoginLabel_test': function (someTestArgs) {
53 var deferredResult; 51 var deferredResult;
54 var proxy; 52 var proxy;
55 var user; 53 var user;
56 54
57 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false}); 55 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false});
58 user = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}}); 56 user = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}});
59 57
60 deferredResult = new Clipperz.Async.Deferred("editDirectLoginLabel_test", someTestArgs); 58 deferredResult = new Clipperz.Async.Deferred("editDirectLoginLabel_test", someTestArgs);
61 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data']); 59 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data']);
62 deferredResult.addMethod(user, 'login'); 60 deferredResult.addMethod(user, 'login');
63 deferredResult.addMethod(user, 'getRecord', 'd5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d'); //YAHOO (4) 61 deferredResult.addMethod(user, 'getRecord', 'd5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d'); //YAHOO (4)
64 deferredResult.addMethodcaller('directLogins'); 62 deferredResult.addMethodcaller('directLogins');
65 deferredResult.addCallback(MochiKit.Base.itemgetter('dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496')); 63 deferredResult.addCallback(MochiKit.Base.itemgetter('dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496'));
66 deferredResult.addCallback(function (aDirectLogin) { 64 deferredResult.addCallback(function (aDirectLogin) {
67 var innerDeferredResult; 65 var innerDeferredResult;
68 var updatedLabel; 66 var updatedLabel;
69 67
70 updatedLabel = "updated Yahoo! Mail label"; 68 updatedLabel = "updated Yahoo! Mail label";
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLoginConfigurations.data.js b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLoginConfigurations.data.js
index 1678515..eaf4035 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLoginConfigurations.data.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLoginConfigurations.data.js
@@ -1,30 +1,28 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26directLoginConfigurations = { 24directLoginConfigurations = {
27 'Yahoo! Mail':'{\n "page": {\n "title": "Yahoo! Mail"\n },\n "form": {\n "attributes": {\n "action": "https://login.yahoo.com/config/login?",\n "method": "post"\n },\n "inputs": [\n {\n "type": "hidden",\n "name": ".tries",\n "value": "1"\n },\n {\n "type": "hidden",\n "name": ".src",\n "value": "ym"\n },\n {\n "type": "hidden",\n "name": ".md5",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".hash",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".js",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".last",\n "value": ""\n },\n {\n "type": "hidden",\n "name": "promo",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".intl",\n "value": "us"\n },\n {\n "type": "hidden",\n "name": ".bypass",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".partner",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".u",\n "value": "5gp62cl2vg3ov"\n },\n {\n "type": "hidden",\n "name": ".v",\n "value": "0"\n },\n {\n "type": "hidden",\n "name": ".challenge",\n "value": "iBEY0IK6k3t9Uals32mrTos8s48p"\n },\n {\n "type": "hidden",\n "name": ".yplus",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".emailCode",\n "value": ""\n },\n {\n "type": "hidden",\n "name": "pkg",\n "value": ""\n },\n {\n "type": "hidden",\n "name": "stepid",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".ev",\n "value": ""\n },\n {\n "type": "hidden",\n "name": "hasMsgr",\n "value": "0"\n },\n {\n "type": "hidden",\n "name": ".chkP",\n "value": "Y"\n },\n {\n "type": "hidden",\n "name": ".done",\n "value": "http://mail.yahoo.com"\n },\n {\n "type": "hidden",\n "name": ".pd",\n "value": "ym_ver%3d0%26c="\n },\n {\n "type": "text",\n "name": "login",\n "value": ""\n },\n {\n "type": "password",\n "name": "passwd",\n "value": ""\n },\n {\n "type": "checkbox",\n "name": ".persistent",\n "value": "y"\n },\n {\n "type": "submit",\n "name": ".save",\n "value": "Sign In"\n }\n ]\n },\n "version": "0.2"\n}', 25 'Yahoo! Mail':'{\n "page": {\n "title": "Yahoo! Mail"\n },\n "form": {\n "attributes": {\n "action": "https://login.yahoo.com/config/login?",\n "method": "post"\n },\n "inputs": [\n {\n "type": "hidden",\n "name": ".tries",\n "value": "1"\n },\n {\n "type": "hidden",\n "name": ".src",\n "value": "ym"\n },\n {\n "type": "hidden",\n "name": ".md5",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".hash",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".js",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".last",\n "value": ""\n },\n {\n "type": "hidden",\n "name": "promo",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".intl",\n "value": "us"\n },\n {\n "type": "hidden",\n "name": ".bypass",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".partner",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".u",\n "value": "5gp62cl2vg3ov"\n },\n {\n "type": "hidden",\n "name": ".v",\n "value": "0"\n },\n {\n "type": "hidden",\n "name": ".challenge",\n "value": "iBEY0IK6k3t9Uals32mrTos8s48p"\n },\n {\n "type": "hidden",\n "name": ".yplus",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".emailCode",\n "value": ""\n },\n {\n "type": "hidden",\n "name": "pkg",\n "value": ""\n },\n {\n "type": "hidden",\n "name": "stepid",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".ev",\n "value": ""\n },\n {\n "type": "hidden",\n "name": "hasMsgr",\n "value": "0"\n },\n {\n "type": "hidden",\n "name": ".chkP",\n "value": "Y"\n },\n {\n "type": "hidden",\n "name": ".done",\n "value": "http://mail.yahoo.com"\n },\n {\n "type": "hidden",\n "name": ".pd",\n "value": "ym_ver%3d0%26c="\n },\n {\n "type": "text",\n "name": "login",\n "value": ""\n },\n {\n "type": "password",\n "name": "passwd",\n "value": ""\n },\n {\n "type": "checkbox",\n "name": ".persistent",\n "value": "y"\n },\n {\n "type": "submit",\n "name": ".save",\n "value": "Sign In"\n }\n ]\n },\n "version": "0.2"\n}',
28 'Parallels':'{"page": {"title": "Parallels Account"},\n"form": {"attributes": {"action": "https://www.parallels.com/account/",\n"method": "post"},\n"inputs": [{"type": "text",\n"name": "Email",\n"value": ""},\n{"type": "password",\n"name": "Password",\n"value": ""}]},\n"version": "0.2.3"}', 26 'Parallels':'{"page": {"title": "Parallels Account"},\n"form": {"attributes": {"action": "https://www.parallels.com/account/",\n"method": "post"},\n"inputs": [{"type": "text",\n"name": "Email",\n"value": ""},\n{"type": "password",\n"name": "Password",\n"value": ""}]},\n"version": "0.2.3"}',
29 __syntaxFix__: "syntax fix" 27 __syntaxFix__: "syntax fix"
30}; \ No newline at end of file 28}; \ No newline at end of file
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.html b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.html
index 3297ab4..a711ba9 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.html
@@ -1,63 +1,61 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.PM.DataModel.EncryptedRemoteObject - test</title> 26 <title>Clipperz.PM.DataModel.EncryptedRemoteObject - test</title>
29 27
30 <script type="text/javascript" src="../../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../../js/MochiKit/MochiKit.js"></script>
31 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.js"></script> 29 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.js"></script>
32 <link rel="stylesheet" type="text/css" href="../../../../SimpleTest/test.css"> 30 <link rel="stylesheet" type="text/css" href="../../../../SimpleTest/test.css">
33 31
34 <script type='text/javascript' src='../../../../../js/JSON/json2.js'></script> 32 <script type='text/javascript' src='../../../../../js/JSON/json2.js'></script>
35 33
36 <script type='text/javascript' src='../../../../../js/Clipperz/YUI/Utils.js'></script> 34 <script type='text/javascript' src='../../../../../js/Clipperz/YUI/Utils.js'></script>
37 <script type='text/javascript' src='../../../../../js/Clipperz/Base.js'></script> 35 <script type='text/javascript' src='../../../../../js/Clipperz/Base.js'></script>
38 <script type='text/javascript' src='../../../../../js/Clipperz/ByteArray.js'></script> 36 <script type='text/javascript' src='../../../../../js/Clipperz/ByteArray.js'></script>
39 <script type='text/javascript' src='../../../../../js/Clipperz/Logging.js'></script> 37 <script type='text/javascript' src='../../../../../js/Clipperz/Logging.js'></script>
40 <script type='text/javascript' src='../../../../../js/Clipperz/Async.js'></script> 38 <script type='text/javascript' src='../../../../../js/Clipperz/Async.js'></script>
41 <script type='text/javascript' src='../../../../../js/Clipperz/Signal.js'></script> 39 <script type='text/javascript' src='../../../../../js/Clipperz/Signal.js'></script>
42 <script type='text/javascript' src='../../../../../js/Clipperz/KeyValueObjectStore.js'></script> 40 <script type='text/javascript' src='../../../../../js/Clipperz/KeyValueObjectStore.js'></script>
43 41
44 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/Base.js'></script> 42 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/Base.js'></script>
45 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/BigInt.js'></script> 43 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/BigInt.js'></script>
46 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/AES.js'></script> 44 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/AES.js'></script>
47 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SHA.js'></script> 45 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SHA.js'></script>
48 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/PRNG.js'></script> 46 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/PRNG.js'></script>
49 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SRP.js'></script> 47 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SRP.js'></script>
50 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy.js'></script> 48 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy.js'></script>
51 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Connection.js'></script> 49 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Connection.js'></script>
52 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Crypto.js'></script> 50 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Crypto.js'></script>
53 51
54 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script> 52 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script>
55 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.Async.js"></script> 53 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.Async.js"></script>
56</head> 54</head>
57<body> 55<body>
58 56
59<pre id="test"> 57<pre id="test">
60<script type="text/javascript" src="EncryptedRemoteObject.test.js"></script> 58<script type="text/javascript" src="EncryptedRemoteObject.test.js"></script>
61</pre> 59</pre>
62</body> 60</body>
63</html> 61</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.test.js b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.test.js
index 9c50c43..c5f0e00 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.test.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 24Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
27 25
28var tests = { 26var tests = {
29 27
30 //------------------------------------------------------------------------- 28 //-------------------------------------------------------------------------
31 29
32 'simple_tests': function(someTestArgs) { 30 'simple_tests': function(someTestArgs) {
33 vardeferredResult; 31 vardeferredResult;
34 varencryptedRemoteObject; 32 varencryptedRemoteObject;
35 33
36 varkey; 34 varkey;
37 var version; 35 var version;
38 var rawData; 36 var rawData;
39 37
40 key = "just a random key"; 38 key = "just a random key";
41 version = Clipperz.PM.Crypto.encryptingFunctions.currentVersion; 39 version = Clipperz.PM.Crypto.encryptingFunctions.currentVersion;
42 rawData = "just a random text to encrypt"; 40 rawData = "just a random text to encrypt";
43 41
44 encryptedRemoteObject = new Clipperz.PM.DataModel.EncryptedRemoteObject({ 42 encryptedRemoteObject = new Clipperz.PM.DataModel.EncryptedRemoteObject({
45 'retrieveKeyFunction': MochiKit.Base.noop, 43 'retrieveKeyFunction': MochiKit.Base.noop,
46 'retrieveRemoteDataFunction':function () { return "--"}, 44 'retrieveRemoteDataFunction':function () { return "--"},
47 'encryptedDataKeypath': '--', 45 'encryptedDataKeypath': '--',
48 'encryptedVersionKeypath': '--' 46 'encryptedVersionKeypath': '--'
49 }); 47 });
50 SimpleTest.ok(encryptedRemoteObject != null, "create an encryptedRemoteObject"); 48 SimpleTest.ok(encryptedRemoteObject != null, "create an encryptedRemoteObject");
51 49
52 deferredResult = Clipperz.Async.callbacks("EncryptedRemoteObject.test - simple_tests", [ 50 deferredResult = Clipperz.Async.callbacks("EncryptedRemoteObject.test - simple_tests", [
53 MochiKit.Base.method(encryptedRemoteObject, 'getRemoteData'), 51 MochiKit.Base.method(encryptedRemoteObject, 'getRemoteData'),
54 function(aResult) { 52 function(aResult) {
55 SimpleTest.is(aResult, "--", "setting and getting serverData works"); 53 SimpleTest.is(aResult, "--", "setting and getting serverData works");
56 } 54 }
57 ], someTestArgs); 55 ], someTestArgs);
58 56
59 return deferredResult; 57 return deferredResult;
60 }, 58 },
61 59
62 //------------------------------------------------------------------------- 60 //-------------------------------------------------------------------------
63 61
64 'decrypt_test': function (someTestArgs) { 62 'decrypt_test': function (someTestArgs) {
65 vardeferredResult; 63 vardeferredResult;
66 varencryptedRemoteObject; 64 varencryptedRemoteObject;
67 varkey; 65 varkey;
68 var version; 66 var version;
69 var rawData; 67 var rawData;
70 68
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/OneTimePassword.html b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/OneTimePassword.html
index 7861b80..949154b 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/OneTimePassword.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/OneTimePassword.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.PM.DataModel.User - test</title> 26 <title>Clipperz.PM.DataModel.User - test</title>
29 27
30 <script type="text/javascript" src="../../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../../js/MochiKit/MochiKit.js"></script>
31 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.js"></script> 29 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.js"></script>
32 <link rel="stylesheet" type="text/css" href="../../../../SimpleTest/test.css"> 30 <link rel="stylesheet" type="text/css" href="../../../../SimpleTest/test.css">
33 31
34 <script type='text/javascript' src='../../../../../js/JSON/json2.js'></script> 32 <script type='text/javascript' src='../../../../../js/JSON/json2.js'></script>
35 33
36 <script type='text/javascript' src='../../../../../js/Clipperz/YUI/Utils.js'></script> 34 <script type='text/javascript' src='../../../../../js/Clipperz/YUI/Utils.js'></script>
37 <script type='text/javascript' src='../../../../../js/Clipperz/Base.js'></script> 35 <script type='text/javascript' src='../../../../../js/Clipperz/Base.js'></script>
38 <script type='text/javascript' src='../../../../../js/Clipperz/Date.js'></script> 36 <script type='text/javascript' src='../../../../../js/Clipperz/Date.js'></script>
39 <script type='text/javascript' src='../../../../../js/Clipperz/ByteArray.js'></script> 37 <script type='text/javascript' src='../../../../../js/Clipperz/ByteArray.js'></script>
40 <script type='text/javascript' src='../../../../../js/Clipperz/Logging.js'></script> 38 <script type='text/javascript' src='../../../../../js/Clipperz/Logging.js'></script>
41 <script type='text/javascript' src='../../../../../js/Clipperz/Async.js'></script> 39 <script type='text/javascript' src='../../../../../js/Clipperz/Async.js'></script>
42 <script type='text/javascript' src='../../../../../js/Clipperz/Signal.js'></script> 40 <script type='text/javascript' src='../../../../../js/Clipperz/Signal.js'></script>
43 <script type='text/javascript' src='../../../../../js/Clipperz/KeyValueObjectStore.js'></script> 41 <script type='text/javascript' src='../../../../../js/Clipperz/KeyValueObjectStore.js'></script>
44 42
45 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/Base.js'></script> 43 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/Base.js'></script>
46 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/BigInt.js'></script> 44 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/BigInt.js'></script>
47 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/AES.js'></script> 45 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/AES.js'></script>
48 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SHA.js'></script> 46 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SHA.js'></script>
49 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/PRNG.js'></script> 47 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/PRNG.js'></script>
50 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SRP.js'></script> 48 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SRP.js'></script>
51 49
52 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Toll.js'></script> 50 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Toll.js'></script>
53 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy.js'></script> 51 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy.js'></script>
54 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script> 52 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script>
55 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script> 53 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script>
56 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script> 54 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script>
57 55
58 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Connection.js'></script> 56 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Connection.js'></script>
59 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Crypto.js'></script> 57 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Crypto.js'></script>
60 58
61 <script type='text/javascript' src='../../../../../js/Clipperz/PM/UI/Common/Controllers/DirectLoginRunner.js'></script> 59 <script type='text/javascript' src='../../../../../js/Clipperz/PM/UI/Common/Controllers/DirectLoginRunner.js'></script>
62 60
63 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings.js'></script> 61 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings.js'></script>
64 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script> 62 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script>
65 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Date.js'></script> 63 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Date.js'></script>
66 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script> 64 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script>
67 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.js'></script> 65 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.js'></script>
68 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script> 66 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script>
69 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script> 67 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script>
70 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script> 68 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script>
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/OneTimePassword.test.js b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/OneTimePassword.test.js
index 85aae4e..835be38 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/OneTimePassword.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/OneTimePassword.test.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 24Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
27 25
28var tests = { 26var tests = {
29 27
30 //------------------------------------------------------------------------- 28 //-------------------------------------------------------------------------
31 29
32 'isValidOneTimePasswordValue_test': function (someTestArgs) { 30 'isValidOneTimePasswordValue_test': function (someTestArgs) {
33 var otp; 31 var otp;
34 var notOTP; 32 var notOTP;
35 33
36 otp = 'yaxx k7ww - f8y6 tqz5 - 58b6 th44 - 9cwv q0fg'; 34 otp = 'yaxx k7ww - f8y6 tqz5 - 58b6 th44 - 9cwv q0fg';
37 SimpleTest.is(Clipperz.PM.DataModel.OneTimePassword.isValidOneTimePasswordValue(otp), true, "isValidOneTimePasswordValue [expect true] - test 1"); 35 SimpleTest.is(Clipperz.PM.DataModel.OneTimePassword.isValidOneTimePasswordValue(otp), true, "isValidOneTimePasswordValue [expect true] - test 1");
38 36
39 notOTP = 'trustno1'; 37 notOTP = 'trustno1';
40 SimpleTest.is(Clipperz.PM.DataModel.OneTimePassword.isValidOneTimePasswordValue(notOTP), false, "isValidOneTimePasswordValue [expect false] - test 1"); 38 SimpleTest.is(Clipperz.PM.DataModel.OneTimePassword.isValidOneTimePasswordValue(notOTP), false, "isValidOneTimePasswordValue [expect false] - test 1");
41 39
42 return MochiKit.Async.succeed('done'); 40 return MochiKit.Async.succeed('done');
43 }, 41 },
44 42
45 //------------------------------------------------------------------------- 43 //-------------------------------------------------------------------------
46 44
47 'loginUsingOtp_test': function (someTestArgs) { 45 'loginUsingOtp_test': function (someTestArgs) {
48 var deferredResult; 46 var deferredResult;
49 var proxy; 47 var proxy;
50 var user, user2; 48 var user, user2;
51 var username; 49 var username;
52 var passphrase; 50 var passphrase;
53 51
54 username = "test"; 52 username = "test";
55 passphrase = "yaxx k7ww - f8y6 tqz5 - 58b6 th44 - 9cwv q0fg"; //OTP 53 passphrase = "yaxx k7ww - f8y6 tqz5 - 58b6 th44 - 9cwv q0fg"; //OTP
56 54
57 proxy =new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false}); 55 proxy =new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false});
58 user =new Clipperz.PM.DataModel.User({username:username, getPassphraseFunction:function () { return passphrase;}}); 56 user =new Clipperz.PM.DataModel.User({username:username, getPassphraseFunction:function () { return passphrase;}});
59 user2 =new Clipperz.PM.DataModel.User({username:username, getPassphraseFunction:function () { return passphrase;}}); 57 user2 =new Clipperz.PM.DataModel.User({username:username, getPassphraseFunction:function () { return passphrase;}});
60 58
61 deferredResult = new Clipperz.Async.Deferred("loginUsingOtp_test", someTestArgs); 59 deferredResult = new Clipperz.Async.Deferred("loginUsingOtp_test", someTestArgs);
62 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['test_test_with_otps']); 60 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['test_test_with_otps']);
63 61
64 deferredResult.addMethod(user, 'login'); 62 deferredResult.addMethod(user, 'login');
65 deferredResult.addMethod(user, 'getRecords'); 63 deferredResult.addMethod(user, 'getRecords');
66 deferredResult.addCallback(MochiKit.Base.itemgetter('length')); 64 deferredResult.addCallback(MochiKit.Base.itemgetter('length'));
67 deferredResult.addTest(1, "This account has one single card"); 65 deferredResult.addTest(1, "This account has one single card");
68 66
69 deferredResult.addMethod(user, 'getOneTimePasswords'); 67 deferredResult.addMethod(user, 'getOneTimePasswords');
70 deferredResult.addCallback(MochiKit.Base.itemgetter('length')); 68 deferredResult.addCallback(MochiKit.Base.itemgetter('length'));
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/Record.html b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/Record.html
index 3685a7a..0332008 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/Record.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/Record.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.PM.DataModel.Record - test</title> 26 <title>Clipperz.PM.DataModel.Record - test</title>
29 27
30 <script type="text/javascript" src="../../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../../js/MochiKit/MochiKit.js"></script>
31 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.js"></script> 29 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.js"></script>
32 <link rel="stylesheet" type="text/css" href="../../../../SimpleTest/test.css"> 30 <link rel="stylesheet" type="text/css" href="../../../../SimpleTest/test.css">
33 31
34 <script type='text/javascript' src='../../../../../js/JSON/json2.js'></script> 32 <script type='text/javascript' src='../../../../../js/JSON/json2.js'></script>
35 33
36 <script type='text/javascript' src='../../../../../js/Clipperz/YUI/Utils.js'></script> 34 <script type='text/javascript' src='../../../../../js/Clipperz/YUI/Utils.js'></script>
37 <script type='text/javascript' src='../../../../../js/Clipperz/Base.js'></script> 35 <script type='text/javascript' src='../../../../../js/Clipperz/Base.js'></script>
38 <script type='text/javascript' src='../../../../../js/Clipperz/Date.js'></script> 36 <script type='text/javascript' src='../../../../../js/Clipperz/Date.js'></script>
39 <script type='text/javascript' src='../../../../../js/Clipperz/ByteArray.js'></script> 37 <script type='text/javascript' src='../../../../../js/Clipperz/ByteArray.js'></script>
40 <script type='text/javascript' src='../../../../../js/Clipperz/Logging.js'></script> 38 <script type='text/javascript' src='../../../../../js/Clipperz/Logging.js'></script>
41 <script type='text/javascript' src='../../../../../js/Clipperz/Async.js'></script> 39 <script type='text/javascript' src='../../../../../js/Clipperz/Async.js'></script>
42 <script type='text/javascript' src='../../../../../js/Clipperz/Signal.js'></script> 40 <script type='text/javascript' src='../../../../../js/Clipperz/Signal.js'></script>
43 <script type='text/javascript' src='../../../../../js/Clipperz/KeyValueObjectStore.js'></script> 41 <script type='text/javascript' src='../../../../../js/Clipperz/KeyValueObjectStore.js'></script>
44 42
45 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/Base.js'></script> 43 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/Base.js'></script>
46 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/BigInt.js'></script> 44 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/BigInt.js'></script>
47 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/AES.js'></script> 45 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/AES.js'></script>
48 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SHA.js'></script> 46 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SHA.js'></script>
49 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/PRNG.js'></script> 47 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/PRNG.js'></script>
50 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SRP.js'></script> 48 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SRP.js'></script>
51 49
52 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Toll.js'></script> 50 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Toll.js'></script>
53 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings.js'></script> 51 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings.js'></script>
54 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script> 52 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script>
55 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Date.js'></script> 53 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Date.js'></script>
56 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy.js'></script> 54 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy.js'></script>
57 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script> 55 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script>
58 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script> 56 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script>
59 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script> 57 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script>
60 58
61 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Connection.js'></script> 59 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Connection.js'></script>
62 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Crypto.js'></script> 60 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Crypto.js'></script>
63 61
64 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings.js'></script> 62 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings.js'></script>
65 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script> 63 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script>
66 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Date.js'></script> 64 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Date.js'></script>
67 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script> 65 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script>
68 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.js'></script> 66 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.js'></script>
69 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script> 67 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script>
70 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script> 68 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script>
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/Record.test.js b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/Record.test.js
index 667e2ae..3478743 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/Record.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/Record.test.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 24Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
27 25
28var tests = { 26var tests = {
29 27
30 //------------------------------------------------------------------------- 28 //-------------------------------------------------------------------------
31 29
32 'recordUseOf_retrieveIndexDataFunction_and_getRemoteDataFunction_test': function (someTestArgs) { 30 'recordUseOf_retrieveIndexDataFunction_and_getRemoteDataFunction_test': function (someTestArgs) {
33 var deferredResult; 31 var deferredResult;
34 var record; 32 var record;
35 33
36//console.log("#### new Clipperz.PM.DataModel.Record [5]"); 34//console.log("#### new Clipperz.PM.DataModel.Record [5]");
37 record = new Clipperz.PM.DataModel.Record({ 35 record = new Clipperz.PM.DataModel.Record({
38 'reference': '<<< record reference >>>', 36 'reference': '<<< record reference >>>',
39 'retrieveKeyFunction': MochiKit.Base.noop, 37 'retrieveKeyFunction': MochiKit.Base.noop,
40 'retrieveRemoteDataFunction': function (aRecordReference) { 38 'retrieveRemoteDataFunction': function (aRecordReference) {
41 SimpleTest.is(aRecordReference, '<<< record reference >>>', "Record correctly passes its record reference when asking for encrypted data"); 39 SimpleTest.is(aRecordReference, '<<< record reference >>>', "Record correctly passes its record reference when asking for encrypted data");
42 return MochiKit.Async.succeed({ 40 return MochiKit.Async.succeed({
43 // fake server payload 41 // fake server payload
44 'data': "#### fake encrypted data ####", 42 'data': "#### fake encrypted data ####",
45 'version': "0.x", 43 'version': "0.x",
46 'currentVersion': { 44 'currentVersion': {
47 'reference': "<<< fake record version reference >>>", 45 'reference': "<<< fake record version reference >>>",
48 'data': "#### fake encrypted data ####", 46 'data': "#### fake encrypted data ####",
49 'version': "0.x" 47 'version': "0.x"
50 } 48 }
51 }); 49 });
52 }, 50 },
53 'updateDate': "Thu, 10 May 2007 13:01:21 UTC", 51 'updateDate': "Thu, 10 May 2007 13:01:21 UTC",
54 // 'encryptedDataKeypath': 'data', 52 // 'encryptedDataKeypath': 'data',
55 // 'encryptedVersionKeypath': 'version', 53 // 'encryptedVersionKeypath': 'version',
56 54
57 'retrieveIndexDataFunction':function (aRecordReference) { 55 'retrieveIndexDataFunction':function (aRecordReference) {
58 SimpleTest.is(aRecordReference, '<<< record reference >>>', "Record correctly passes its record reference when asking for index data"); 56 SimpleTest.is(aRecordReference, '<<< record reference >>>', "Record correctly passes its record reference when asking for index data");
59 return MochiKit.Async.succeed({ 57 return MochiKit.Async.succeed({
60 key:'<< key >>', 58 key:'<< key >>',
61 label:'<< label >>', 59 label:'<< label >>',
62 notes:'<< notes >>' 60 notes:'<< notes >>'
63 }); 61 });
64 }, 62 },
65 'updateIndexDataFunction': MochiKit.Base.noop 63 'updateIndexDataFunction': MochiKit.Base.noop
66 64
67 }); 65 });
68 66
69 deferredResult = new Clipperz.Async.Deferred("recordUseOf_retrieveIndexDataFunction_and_getEncryptedDataFunction_test", someTestArgs); 67 deferredResult = new Clipperz.Async.Deferred("recordUseOf_retrieveIndexDataFunction_and_getEncryptedDataFunction_test", someTestArgs);
70 deferredResult.addMethod(record, 'label'); 68 deferredResult.addMethod(record, 'label');
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.data.js b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.data.js
index 96c6962..1dc932a 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.data.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.data.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26testData = { 24testData = {
27 25
28 //----------------------------------------------------------------------------- 26 //-----------------------------------------------------------------------------
29 27
30 'simpleLogin_001': function () { return { 28 'simpleLogin_001': function () { return {
31 'users': [ 29 'users': [
32 { 30 {
33 'username': "joe", 31 'username': "joe",
34 'passphrase': "eoj", 32 'passphrase': "eoj",
35 'version': "0.2", 33 'version': "0.2",
36 'connectionVersion':"0.2", 34 'connectionVersion':"0.2",
37 'records':{ 35 'records':{
38 'record 1': { 36 'record 1': {
39 'notes':"Some notes here", 37 'notes':"Some notes here",
40 'fields':[ 38 'fields':[
41 { 'name': "username", 'value': "joe", 'type': "text" }, 39 { 'name': "username", 'value': "joe", 'type': "text" },
42 { 'name': "password", 'value': "1234", 'type': "password"} 40 { 'name': "password", 'value': "1234", 'type': "password"}
43 ], 41 ],
44 'directLogins':{ 42 'directLogins':{
45 "record 1 direct login": { 43 "record 1 direct login": {
46 'configuration':"", 44 'configuration':"",
47 'bindings':[ 45 'bindings':[
48 ], 46 ],
49 'favicon':"http://www.example.com/favicon.ico" 47 'favicon':"http://www.example.com/favicon.ico"
50 } 48 }
51 } 49 }
52 } 50 }
53 }, 51 },
54 'otp':[ 52 'otp':[
55 "12345678 90abcdef 12345678 90abcdef", 53 "12345678 90abcdef 12345678 90abcdef",
56 "fedcba09 87654321 fedcba09 87654321" 54 "fedcba09 87654321 fedcba09 87654321"
57 ] 55 ]
58 } 56 }
59 ] 57 ]
60 };}(), 58 };}(),
61 59
62 //----------------------------------------------------------------------------- 60 //-----------------------------------------------------------------------------
63 61
64 'joe_clipperz_offline_copy_data': function () { return { 62 'joe_clipperz_offline_copy_data': function () { return {
65 users:{ 63 users:{
66 'catchAllUser': { 64 'catchAllUser': {
67 __masterkey_test_value__: 'masterkey', 65 __masterkey_test_value__: 'masterkey',
68 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00', 66 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00',
69 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00' 67 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00'
70 }, 68 },
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.data.old.js b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.data.old.js
index ed3a6a4..fae7ff0 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.data.old.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.data.old.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26MochiKit.Base.update(testData, { 24MochiKit.Base.update(testData, {
27 25
28 //------------------------------------------------------------------------- 26 //-------------------------------------------------------------------------
29 27
30 'OLD_joe_clipperz_offline_copy_data': { 28 'OLD_joe_clipperz_offline_copy_data': {
31 users:{ 29 users:{
32 'catchAllUser': { 30 'catchAllUser': {
33 __masterkey_test_value__: 'masterkey', 31 __masterkey_test_value__: 'masterkey',
34 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00', 32 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00',
35 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00' 33 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00'
36 }, 34 },
37 'f527cdd90d0d47f8524b4e165398ad1455eba515d04abd101d1e93b3c6ae0674': { 35 'f527cdd90d0d47f8524b4e165398ad1455eba515d04abd101d1e93b3c6ae0674': {
38 s: '097ca38b1792023d6c1ffca50606b6040c6b27a7667e355ba9e54e6d47d8bf23', 36 s: '097ca38b1792023d6c1ffca50606b6040c6b27a7667e355ba9e54e6d47d8bf23',
39 v: '34b9f3ab193bb12dc93c791637b8d80364564b9a39ed7130cd168d52876914e4', 37 v: '34b9f3ab193bb12dc93c791637b8d80364564b9a39ed7130cd168d52876914e4',
40 version: '0.2', 38 version: '0.2',
41 maxNumberOfRecords: '100', 39 maxNumberOfRecords: '100',
42 userDetails: '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', 40 userDetails: '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',
43 statistics: 'iFI3fKfuUd5Tqj/iRCJnIk7isZ2FOYPr/yNfICm2U35oUeTJ/RA+l+kbWiYrecpIEgk=', 41 statistics: 'iFI3fKfuUd5Tqj/iRCJnIk7isZ2FOYPr/yNfICm2U35oUeTJ/RA+l+kbWiYrecpIEgk=',
44 userDetailsVersion: '0.2', 42 userDetailsVersion: '0.2',
45 records: { 43 records: {
46 /* 01 */ '062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80': { 44 /* 01 */ '062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80': {
47 data: '7sgxSQlqR+wh3g06M2+sWp7raQxjjQ9jLIz2OcEB7SckuQcXNrhMlDCbL6ncSljtzgqhioWrOB409kIG8lc7h6ekghOE/Mhi7rVwAiRfNGB7r3mYxpEXRe96O2RG7E+NcSp8ezl+5gJ9D0o1abXPeFQYGcr95hUioCfyY+xrxY8TJVwdb9nHkYvBdKV7rCl1dTxgsKWK3nlo1T7e5uyiz5YUAE6BrCtTFAqtprLI/xOpRti9C+llohS7D6s8hkCBPZfp3chKFDrgpsCBFLhXN8jrBKSjHi1PJdRQzpJsgrxyeBj0dZx3gTsYOXqrYgdIzFUo7K1Tqb30yNprBiDMr7j0YYXiSvEb7OuOIP+HTXGN+yt09bk9LggyY6Fh0e+tenjQQ3soySN/XznOBpEjXbzXoz6fR1MXVnE9GgaX99LVNqwWfq2rIBdSE/FfspRiWP3BY5jIrEkNeRclS05U1zw3K3wxOL+cB9r2IynSXnK8QcrDNNRZ0W3PhsSFfByUXuviLSEOPuJa1mYP29L9Lj/WyHL1Gyl8xLbt2H41S6+wvIleKMuc7teH6wPXbnYphvbwBowoI6HZTEFkz3dQKhhY6VF/81iCXsuaz6BjyrzFX6SkQ4S3lN1tv4opQMJFvnmHb6EkXqVWfeIXzJIJO+owL4vDOf4okpAD+HPjjlVXhq6fvyM5UBIK9+tzJW78X/zifrQOfWRIhwjVsfUdZWmZ/S35vnHWNuXkM8GBYrDysqxanDtah3U8XLAiIhFtBOzpzr6qGaNDOKKgG3K8QXT4bYHOq1rQVUwzQuKhlCyStrRMQrC5Ry251xmLy6dKfppRarVeGDtzB/30BbtFNdZmzMNG2g+Jj5tFCrEtCMvMiQEWZHMU3tGMFxDef/KKdv1fFTJC16jmaUiCHUZmNjB3EO9R6xPVcMlAVKf57n3efrpRk/GTmm9JhAFkuF/wsveH4JjPpDUdkHYFu5tHbb30sbga3ufBAXbQL4ck10S24akU/cKraFGLvuKGaR2U0i6ih911TBSf3pAfZ3RFbBhVIl+6rSknC5+IXoBR7MRstBPW/xC9pQVjN5Qyn0g3aUjUSI+q4jcTuvMl32NtTJbWRMGhfkrpVzypZTyPnIh6XJkyBghlUARXw23MlbjiZxmY4ScDmcWZRZJWIknHlqjDKFDKNnwrfnEI9qWyMDno+jA/DEQz0mnpdZYEsoz1/qAmAeDt89vx', 45 data: '7sgxSQlqR+wh3g06M2+sWp7raQxjjQ9jLIz2OcEB7SckuQcXNrhMlDCbL6ncSljtzgqhioWrOB409kIG8lc7h6ekghOE/Mhi7rVwAiRfNGB7r3mYxpEXRe96O2RG7E+NcSp8ezl+5gJ9D0o1abXPeFQYGcr95hUioCfyY+xrxY8TJVwdb9nHkYvBdKV7rCl1dTxgsKWK3nlo1T7e5uyiz5YUAE6BrCtTFAqtprLI/xOpRti9C+llohS7D6s8hkCBPZfp3chKFDrgpsCBFLhXN8jrBKSjHi1PJdRQzpJsgrxyeBj0dZx3gTsYOXqrYgdIzFUo7K1Tqb30yNprBiDMr7j0YYXiSvEb7OuOIP+HTXGN+yt09bk9LggyY6Fh0e+tenjQQ3soySN/XznOBpEjXbzXoz6fR1MXVnE9GgaX99LVNqwWfq2rIBdSE/FfspRiWP3BY5jIrEkNeRclS05U1zw3K3wxOL+cB9r2IynSXnK8QcrDNNRZ0W3PhsSFfByUXuviLSEOPuJa1mYP29L9Lj/WyHL1Gyl8xLbt2H41S6+wvIleKMuc7teH6wPXbnYphvbwBowoI6HZTEFkz3dQKhhY6VF/81iCXsuaz6BjyrzFX6SkQ4S3lN1tv4opQMJFvnmHb6EkXqVWfeIXzJIJO+owL4vDOf4okpAD+HPjjlVXhq6fvyM5UBIK9+tzJW78X/zifrQOfWRIhwjVsfUdZWmZ/S35vnHWNuXkM8GBYrDysqxanDtah3U8XLAiIhFtBOzpzr6qGaNDOKKgG3K8QXT4bYHOq1rQVUwzQuKhlCyStrRMQrC5Ry251xmLy6dKfppRarVeGDtzB/30BbtFNdZmzMNG2g+Jj5tFCrEtCMvMiQEWZHMU3tGMFxDef/KKdv1fFTJC16jmaUiCHUZmNjB3EO9R6xPVcMlAVKf57n3efrpRk/GTmm9JhAFkuF/wsveH4JjPpDUdkHYFu5tHbb30sbga3ufBAXbQL4ck10S24akU/cKraFGLvuKGaR2U0i6ih911TBSf3pAfZ3RFbBhVIl+6rSknC5+IXoBR7MRstBPW/xC9pQVjN5Qyn0g3aUjUSI+q4jcTuvMl32NtTJbWRMGhfkrpVzypZTyPnIh6XJkyBghlUARXw23MlbjiZxmY4ScDmcWZRZJWIknHlqjDKFDKNnwrfnEI9qWyMDno+jA/DEQz0mnpdZYEsoz1/qAmAeDt89vx',
48 version: '0.2', 46 version: '0.2',
49 creationDate: 'Wed Mar 14 15:46:44 CET 2007', 47 creationDate: 'Wed Mar 14 15:46:44 CET 2007',
50 updateDate: 'Wed Mar 14 15:46:44 CET 2007', 48 updateDate: 'Wed Mar 14 15:46:44 CET 2007',
51 accessDate: 'Mon Jan 19 16:10:04 CET 2009', 49 accessDate: 'Mon Jan 19 16:10:04 CET 2009',
52 currentVersion: '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3', 50 currentVersion: '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3',
53 versions: { 51 versions: {
54 '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3': { 52 '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3': {
55 header: '####', 53 header: '####',
56 data: '.....', 54 data: '.....',
57 version: '0.2', 55 version: '0.2',
58 creationDate: 'Wed Mar 14 15:46:44 CET 2007', 56 creationDate: 'Wed Mar 14 15:46:44 CET 2007',
59 updateDate: 'Wed Mar 14 15:46:44 CET 2007', 57 updateDate: 'Wed Mar 14 15:46:44 CET 2007',
60 accessDate: 'Mon Jan 19 16:10:04 CET 2009' 58 accessDate: 'Mon Jan 19 16:10:04 CET 2009'
61 } 59 }
62 } 60 }
63 }, 61 },
64 /* 02 */ '13a5e52976337ab210903cd04872588e1b21fb72bc183e91aa25c494b8138551': { 62 /* 02 */ '13a5e52976337ab210903cd04872588e1b21fb72bc183e91aa25c494b8138551': {
65 data: '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', 63 data: '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',
66 version: '0.2', 64 version: '0.2',
67 creationDate: 'Wed Mar 14 15:46:44 CET 2007', 65 creationDate: 'Wed Mar 14 15:46:44 CET 2007',
68 updateDate: 'Wed Mar 14 15:46:44 CET 2007', 66 updateDate: 'Wed Mar 14 15:46:44 CET 2007',
69 accessDate: 'Mon Jan 19 16:10:04 CET 2009' 67 accessDate: 'Mon Jan 19 16:10:04 CET 2009'
70 }, 68 },
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.html b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.html
index a651830..793f763 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.PM.DataModel.User - test</title> 26 <title>Clipperz.PM.DataModel.User - test</title>
29 27
30 <script type="text/javascript" src="../../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../../js/MochiKit/MochiKit.js"></script>
31 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.js"></script> 29 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.js"></script>
32 <link rel="stylesheet" type="text/css" href="../../../../SimpleTest/test.css"> 30 <link rel="stylesheet" type="text/css" href="../../../../SimpleTest/test.css">
33 31
34 <script type='text/javascript' src='../../../../../js/JSON/json2.js'></script> 32 <script type='text/javascript' src='../../../../../js/JSON/json2.js'></script>
35 33
36 <script type='text/javascript' src='../../../../../js/Clipperz/YUI/Utils.js'></script> 34 <script type='text/javascript' src='../../../../../js/Clipperz/YUI/Utils.js'></script>
37 <script type='text/javascript' src='../../../../../js/Clipperz/Base.js'></script> 35 <script type='text/javascript' src='../../../../../js/Clipperz/Base.js'></script>
38 <script type='text/javascript' src='../../../../../js/Clipperz/Date.js'></script> 36 <script type='text/javascript' src='../../../../../js/Clipperz/Date.js'></script>
39 <script type='text/javascript' src='../../../../../js/Clipperz/ByteArray.js'></script> 37 <script type='text/javascript' src='../../../../../js/Clipperz/ByteArray.js'></script>
40 <script type='text/javascript' src='../../../../../js/Clipperz/Logging.js'></script> 38 <script type='text/javascript' src='../../../../../js/Clipperz/Logging.js'></script>
41 <script type='text/javascript' src='../../../../../js/Clipperz/Async.js'></script> 39 <script type='text/javascript' src='../../../../../js/Clipperz/Async.js'></script>
42 <script type='text/javascript' src='../../../../../js/Clipperz/Signal.js'></script> 40 <script type='text/javascript' src='../../../../../js/Clipperz/Signal.js'></script>
43 <script type='text/javascript' src='../../../../../js/Clipperz/KeyValueObjectStore.js'></script> 41 <script type='text/javascript' src='../../../../../js/Clipperz/KeyValueObjectStore.js'></script>
44 42
45 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/Base.js'></script> 43 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/Base.js'></script>
46 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/BigInt.js'></script> 44 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/BigInt.js'></script>
47 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/AES.js'></script> 45 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/AES.js'></script>
48 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SHA.js'></script> 46 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SHA.js'></script>
49 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/PRNG.js'></script> 47 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/PRNG.js'></script>
50 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SRP.js'></script> 48 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SRP.js'></script>
51 49
52 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Toll.js'></script> 50 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Toll.js'></script>
53 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy.js'></script> 51 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy.js'></script>
54 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script> 52 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script>
55 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script> 53 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script>
56 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script> 54 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script>
57 55
58 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Connection.js'></script> 56 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Connection.js'></script>
59 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Crypto.js'></script> 57 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Crypto.js'></script>
60 58
61 <script type='text/javascript' src='../../../../../js/Clipperz/PM/UI/Common/Controllers/DirectLoginRunner.js'></script> 59 <script type='text/javascript' src='../../../../../js/Clipperz/PM/UI/Common/Controllers/DirectLoginRunner.js'></script>
62 60
63 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings.js'></script> 61 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings.js'></script>
64 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script> 62 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script>
65 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Date.js'></script> 63 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Date.js'></script>
66 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script> 64 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script>
67 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.js'></script> 65 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.js'></script>
68 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script> 66 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script>
69 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script> 67 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script>
70 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script> 68 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script>
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.test.js b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.test.js
index c9ca3d6..45f3297 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.test.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 24Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
27 25
28var tests = { 26var tests = {
29 27
30 //------------------------------------------------------------------------- 28 //-------------------------------------------------------------------------
31 29
32 'invertIndex_test': function (someTestArgs) { 30 'invertIndex_test': function (someTestArgs) {
33 var testIndex; 31 var testIndex;
34 var invertedIndex; 32 var invertedIndex;
35 33
36 testIndex = { 34 testIndex = {
37 'key1': 'value1', 35 'key1': 'value1',
38 'key2': 'value2', 36 'key2': 'value2',
39 'key3': 'value3', 37 'key3': 'value3',
40 'key4': 'value4', 38 'key4': 'value4',
41 'key5': 'value5' 39 'key5': 'value5'
42 }; 40 };
43 41
44 invertedIndex = Clipperz.PM.DataModel.User.Header.RecordIndex.invertIndex(testIndex); 42 invertedIndex = Clipperz.PM.DataModel.User.Header.RecordIndex.invertIndex(testIndex);
45 43
46 SimpleTest.is(MochiKit.Base.keys(invertedIndex).length, MochiKit.Base.keys(testIndex).length, "the inverted index has the same number of elements as the original index"); 44 SimpleTest.is(MochiKit.Base.keys(invertedIndex).length, MochiKit.Base.keys(testIndex).length, "the inverted index has the same number of elements as the original index");
47 SimpleTest.is(invertedIndex['value1'], 'key1', "the first element has been correctly inverted"); 45 SimpleTest.is(invertedIndex['value1'], 'key1', "the first element has been correctly inverted");
48 SimpleTest.is(invertedIndex['value2'], 'key2', "the second element has been correctly inverted"); 46 SimpleTest.is(invertedIndex['value2'], 'key2', "the second element has been correctly inverted");
49 SimpleTest.is(invertedIndex['value3'], 'key3', "the third element has been correctly inverted"); 47 SimpleTest.is(invertedIndex['value3'], 'key3', "the third element has been correctly inverted");
50 SimpleTest.is(invertedIndex['value4'], 'key4', "the forth element has been correctly inverted"); 48 SimpleTest.is(invertedIndex['value4'], 'key4', "the forth element has been correctly inverted");
51 SimpleTest.is(invertedIndex['value5'], 'key5', "the fifth element has been correctly inverted"); 49 SimpleTest.is(invertedIndex['value5'], 'key5', "the fifth element has been correctly inverted");
52 return MochiKit.Async.succeed('done'); 50 return MochiKit.Async.succeed('done');
53 }, 51 },
54 52
55 //------------------------------------------------------------------------- 53 //-------------------------------------------------------------------------
56 54
57 'joe_clipperz_offline_copy_test': function(someTestArgs) { 55 'joe_clipperz_offline_copy_test': function(someTestArgs) {
58 var deferredResult; 56 var deferredResult;
59 var proxy; 57 var proxy;
60 var user; 58 var user;
61 59
62 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true}); 60 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true});
63 user = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}}); 61 user = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}});
64 62
65 deferredResult = new Clipperz.Async.Deferred("joe_clipperz_offline_copy_test", someTestArgs); 63 deferredResult = new Clipperz.Async.Deferred("joe_clipperz_offline_copy_test", someTestArgs);
66 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data']); 64 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data']);
67 deferredResult.addMethod(user, 'login'); 65 deferredResult.addMethod(user, 'login');
68 deferredResult.addMethod(user, 'getRecords'); 66 deferredResult.addMethod(user, 'getRecords');
69 deferredResult.addCallback(function (someRecords) { 67 deferredResult.addCallback(function (someRecords) {
70 is(someRecords.length, 20,"joe_clipperz_offline_copy_test - joe has 20 records"); 68 is(someRecords.length, 20,"joe_clipperz_offline_copy_test - joe has 20 records");
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/index.html b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/index.html
index 237c0ea..8aacac5 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/index.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/index.html
@@ -1,44 +1,42 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.PM.DataModel.* - tests</title> 26 <title>Clipperz.PM.DataModel.* - tests</title>
29 27
30 <script type="text/javascript" src="../../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../../js/MochiKit/MochiKit.js"></script>
31 <script type="text/javascript" src="../../../../SimpleTest/TestRunner.js"></script> 29 <script type="text/javascript" src="../../../../SimpleTest/TestRunner.js"></script>
32</head> 30</head>
33<body> 31<body>
34<script> 32<script>
35TestRunner.runTests( 33TestRunner.runTests(
36 'EncryptedRemoteObject.html', 34 'EncryptedRemoteObject.html',
37 'Record.html', 35 'Record.html',
38 'DirectLogin.html', 36 'DirectLogin.html',
39 'User.html', 37 'User.html',
40 'OneTimePassword.html' 38 'OneTimePassword.html'
41); 39);
42</script> 40</script>
43</body> 41</body>
44</html> \ No newline at end of file 42</html> \ No newline at end of file
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/Date.html b/frontend/gamma/tests/tests/Clipperz/PM/Date.html
index 7b87185..4a2760a 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/Date.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/Date.html
@@ -1,55 +1,53 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.PM.Date - test</title> 26 <title>Clipperz.PM.Date - test</title>
29 27
30 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
31 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 29 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
32 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 30 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
33 31
34 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 32 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
35 33
36 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script>
42 40
43 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script>
46 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script> 44 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script>
47 45
48</head> 46</head>
49<body> 47<body>
50<pre id="test"> 48<pre id="test">
51 <script type="text/javascript" src="Date.test.js"></script> 49 <script type="text/javascript" src="Date.test.js"></script>
52</pre> 50</pre>
53 51
54</body> 52</body>
55</html> 53</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/Date.test.js b/frontend/gamma/tests/tests/Clipperz/PM/Date.test.js
index e4b4db6..ff4745f 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/Date.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/Date.test.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26var tests = { 24var tests = {
27 25
28 //------------------------------------------------------------------------- 26 //-------------------------------------------------------------------------
29 27
30 'offlineDataParsing_test': function () { 28 'offlineDataParsing_test': function () {
31 var value; 29 var value;
32 varparsedValue; 30 varparsedValue;
33 var expectedValue; 31 var expectedValue;
34 32
35 value = 'Tue Mar 27 06:41:37 PDT 2007'; 33 value = 'Tue Mar 27 06:41:37 PDT 2007';
36 parsedValue = Clipperz.PM.Date.parse(value); 34 parsedValue = Clipperz.PM.Date.parse(value);
37 expectedValue = new Date(); 35 expectedValue = new Date();
38 expectedValue.setUTCFullYear(2007, 03 - 1, 27); 36 expectedValue.setUTCFullYear(2007, 03 - 1, 27);
39 expectedValue.setUTCHours(13, 41, 37); 37 expectedValue.setUTCHours(13, 41, 37);
40 // SimpleTest.is(parsedValue.toString(), 'Tue Mar 27 2007 15:41:37 GMT+0200 (CEST)', "the data in the format stored in the offline copy is processed correctly [1]"); 38 // SimpleTest.is(parsedValue.toString(), 'Tue Mar 27 2007 15:41:37 GMT+0200 (CEST)', "the data in the format stored in the offline copy is processed correctly [1]");
41 SimpleTest.is(parsedValue.toString(), expectedValue.toString(), "the data in the format stored in the offline copy is processed correctly [1]"); 39 SimpleTest.is(parsedValue.toString(), expectedValue.toString(), "the data in the format stored in the offline copy is processed correctly [1]");
42 40
43 value = 'Thu May 10 15:01:21 PDT 2007'; 41 value = 'Thu May 10 15:01:21 PDT 2007';
44 parsedValue = Clipperz.PM.Date.parse(value); 42 parsedValue = Clipperz.PM.Date.parse(value);
45 expectedValue = new Date(); 43 expectedValue = new Date();
46 expectedValue.setUTCFullYear(2007, 05 - 1, 10); 44 expectedValue.setUTCFullYear(2007, 05 - 1, 10);
47 expectedValue.setUTCHours(22, 01, 21); 45 expectedValue.setUTCHours(22, 01, 21);
48 // SimpleTest.is(parsedValue.toString(), 'Fri May 11 2007 00:01:21 GMT+0200 (CEST)', "the data in the format stored in the offline copy is processed correctly [3]"); 46 // SimpleTest.is(parsedValue.toString(), 'Fri May 11 2007 00:01:21 GMT+0200 (CEST)', "the data in the format stored in the offline copy is processed correctly [3]");
49 SimpleTest.is(parsedValue.toString(), expectedValue.toString(), "the data in the format stored in the offline copy is processed correctly [3]"); 47 SimpleTest.is(parsedValue.toString(), expectedValue.toString(), "the data in the format stored in the offline copy is processed correctly [3]");
50 48
51 value = 'Thu May 10 15:01:21 PST 2007'; 49 value = 'Thu May 10 15:01:21 PST 2007';
52 parsedValue = Clipperz.PM.Date.parse(value); 50 parsedValue = Clipperz.PM.Date.parse(value);
53 expectedValue = new Date(); 51 expectedValue = new Date();
54 expectedValue.setUTCFullYear(2007, 05 - 1, 10); 52 expectedValue.setUTCFullYear(2007, 05 - 1, 10);
55 expectedValue.setUTCHours(23, 01, 21); 53 expectedValue.setUTCHours(23, 01, 21);
56 // SimpleTest.is(parsedValue.toString(), 'Fri May 11 2007 01:01:21 GMT+0200 (CEST)', "the data in the format stored in the offline copy is processed correctly [3]"); 54 // SimpleTest.is(parsedValue.toString(), 'Fri May 11 2007 01:01:21 GMT+0200 (CEST)', "the data in the format stored in the offline copy is processed correctly [3]");
57 SimpleTest.is(parsedValue.toString(), expectedValue.toString(), "the data in the format stored in the offline copy is processed correctly [3]"); 55 SimpleTest.is(parsedValue.toString(), expectedValue.toString(), "the data in the format stored in the offline copy is processed correctly [3]");
58 }, 56 },
59 57
60 //------------------------------------------------------------------------- 58 //-------------------------------------------------------------------------
61 59
62 'onlineDataParsing_test': function () { 60 'onlineDataParsing_test': function () {
63 var value; 61 var value;
64 varparsedValue; 62 varparsedValue;
65 var expectedValue; 63 var expectedValue;
66 64
67 value = 'Tue, 27 March 2007 06:41:37 PDT'; 65 value = 'Tue, 27 March 2007 06:41:37 PDT';
68 parsedValue = Clipperz.PM.Date.parse(value); 66 parsedValue = Clipperz.PM.Date.parse(value);
69 expectedValue = new Date(); 67 expectedValue = new Date();
70 expectedValue.setUTCFullYear(2007, 03 - 1, 27); 68 expectedValue.setUTCFullYear(2007, 03 - 1, 27);
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/PIN.html b/frontend/gamma/tests/tests/Clipperz/PM/PIN.html
index a08b286..9282bb9 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/PIN.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/PIN.html
@@ -1,66 +1,64 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.PM.Proxy - TEST</title> 26 <title>Clipperz.PM.Proxy - TEST</title>
29 27
30 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
31 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 29 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
32 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 30 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
33 31
34 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 32 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
35 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
36 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script>
40 38
41 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> 44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
47 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> 46 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
49 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> 47 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
50<!-- 48<!--
51 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script> 49 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script>
52 50
53 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 51 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
54--> 52-->
55 53
56 <script type='text/javascript' src='../../../../js/Clipperz/PM/PIN.js'></script> 54 <script type='text/javascript' src='../../../../js/Clipperz/PM/PIN.js'></script>
57 55
58 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script> 56 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script>
59 57
60</head> 58</head>
61<body> 59<body>
62<pre id="test"> 60<pre id="test">
63 <script type="text/javascript" src="PIN.test.js"></script> 61 <script type="text/javascript" src="PIN.test.js"></script>
64</pre> 62</pre>
65</body> 63</body>
66</html> 64</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/PIN.test.js b/frontend/gamma/tests/tests/Clipperz/PM/PIN.test.js
index ed795dd..abd489e 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/PIN.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/PIN.test.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 24Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
27 25
28 Clipperz.PM.PIN['CREDENTIALS'] ='TEST.CLIPPERZ.CREDENTIALS'; 26 Clipperz.PM.PIN['CREDENTIALS'] ='TEST.CLIPPERZ.CREDENTIALS';
29 Clipperz.PM.PIN['FAILURE_COUNT'] ='TEST.CLIPPERZ.FAILED_LOGIN_COUNT'; 27 Clipperz.PM.PIN['FAILURE_COUNT'] ='TEST.CLIPPERZ.FAILED_LOGIN_COUNT';
30 28
31 29
32var tests = { 30var tests = {
33 31
34 //------------------------------------------------------------------------- 32 //-------------------------------------------------------------------------
35 33
36 'clearCredentials': function () { 34 'clearCredentials': function () {
37 localStorage.removeItem(Clipperz.PM.PIN['CREDENTIALS']); 35 localStorage.removeItem(Clipperz.PM.PIN['CREDENTIALS']);
38 localStorage.removeItem(Clipperz.PM.PIN['FAILURE_COUNT']); 36 localStorage.removeItem(Clipperz.PM.PIN['FAILURE_COUNT']);
39 }, 37 },
40 38
41 //------------------------------------------------------------------------- 39 //-------------------------------------------------------------------------
42 40
43 'isSet': function () { 41 'isSet': function () {
44 tests.clearCredentials(); 42 tests.clearCredentials();
45 43
46 is(false, Clipperz.PM.PIN.isSet(), "after cleaning all values, credentials should not be set"); 44 is(false, Clipperz.PM.PIN.isSet(), "after cleaning all values, credentials should not be set");
47 45
48 Clipperz.PM.PIN.setCredentialsWithPIN("1234", {'username':'joe', 'passphrase':'eoj'}); 46 Clipperz.PM.PIN.setCredentialsWithPIN("1234", {'username':'joe', 'passphrase':'eoj'});
49 is(true, Clipperz.PM.PIN.isSet(), "once saved, they should be found"); 47 is(true, Clipperz.PM.PIN.isSet(), "once saved, they should be found");
50 }, 48 },
51 49
52 'recordFailedAttempt': function () { 50 'recordFailedAttempt': function () {
53 tests.clearCredentials(); 51 tests.clearCredentials();
54 52
55 Clipperz.PM.PIN.setCredentialsWithPIN("1234", {'username':'joe', 'passphrase':'eoj'}); 53 Clipperz.PM.PIN.setCredentialsWithPIN("1234", {'username':'joe', 'passphrase':'eoj'});
56 is(true, Clipperz.PM.PIN.isSet(), "once saved, they should be found"); 54 is(true, Clipperz.PM.PIN.isSet(), "once saved, they should be found");
57 Clipperz.PM.PIN.recordFailedAttempt(); 55 Clipperz.PM.PIN.recordFailedAttempt();
58 is(true, Clipperz.PM.PIN.isSet(), "1st wrong PIN -> keep credentials"); 56 is(true, Clipperz.PM.PIN.isSet(), "1st wrong PIN -> keep credentials");
59 Clipperz.PM.PIN.recordFailedAttempt(); 57 Clipperz.PM.PIN.recordFailedAttempt();
60 is(true, Clipperz.PM.PIN.isSet(), "2nd wrong PIN -> keep credentials"); 58 is(true, Clipperz.PM.PIN.isSet(), "2nd wrong PIN -> keep credentials");
61 Clipperz.PM.PIN.recordFailedAttempt(); 59 Clipperz.PM.PIN.recordFailedAttempt();
62 is(false, Clipperz.PM.PIN.isSet(), "3rd wrong PIN -> REMOVE credentials"); 60 is(false, Clipperz.PM.PIN.isSet(), "3rd wrong PIN -> REMOVE credentials");
63 61
64 Clipperz.PM.PIN.setCredentialsWithPIN("1234", {'username':'joe', 'passphrase':'eoj'}); 62 Clipperz.PM.PIN.setCredentialsWithPIN("1234", {'username':'joe', 'passphrase':'eoj'});
65 is(true, Clipperz.PM.PIN.isSet(), "once saved, they should be found"); 63 is(true, Clipperz.PM.PIN.isSet(), "once saved, they should be found");
66 Clipperz.PM.PIN.recordFailedAttempt(); 64 Clipperz.PM.PIN.recordFailedAttempt();
67 is(true, Clipperz.PM.PIN.isSet(), "1st wrong PIN -> keep credentials"); 65 is(true, Clipperz.PM.PIN.isSet(), "1st wrong PIN -> keep credentials");
68 Clipperz.PM.PIN.recordFailedAttempt(); 66 Clipperz.PM.PIN.recordFailedAttempt();
69 is(true, Clipperz.PM.PIN.isSet(), "2nd wrong PIN -> keep credentials"); 67 is(true, Clipperz.PM.PIN.isSet(), "2nd wrong PIN -> keep credentials");
70 Clipperz.PM.PIN.resetFailedAttemptCount(); 68 Clipperz.PM.PIN.resetFailedAttemptCount();
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/Proxy.html b/frontend/gamma/tests/tests/Clipperz/PM/Proxy.html
index 8177285..704d232 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/Proxy.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/Proxy.html
@@ -1,61 +1,59 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.PM.Proxy - TEST</title> 26 <title>Clipperz.PM.Proxy - TEST</title>
29 27
30 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
31 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 29 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
32 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 30 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
33 31
34 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 32 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
35 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
36 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script>
40 38
41 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> 44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
47 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> 46 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
49 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> 47 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
50 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script> 48 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script>
51 49
52 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 50 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
53 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script> 51 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script>
54 52
55</head> 53</head>
56<body> 54<body>
57<pre id="test"> 55<pre id="test">
58 <script type="text/javascript" src="Proxy.test.js"></script> 56 <script type="text/javascript" src="Proxy.test.js"></script>
59</pre> 57</pre>
60</body> 58</body>
61</html> 59</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/Proxy.test.js b/frontend/gamma/tests/tests/Clipperz/PM/Proxy.test.js
index 8225823..1bec17d 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/Proxy.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/Proxy.test.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 24Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
27 25
28var tests = { 26var tests = {
29 27
30 //------------------------------------------------------------------------- 28 //-------------------------------------------------------------------------
31 29
32 'simple_tests': function() { 30 'simple_tests': function() {
33 vardeferredResult; 31 vardeferredResult;
34 32
35 deferredResult = new Clipperz.Async.Deferred("simple_tests", {trace:false}); 33 deferredResult = new Clipperz.Async.Deferred("simple_tests", {trace:false});
36 deferredResult.addCallback(function() { 34 deferredResult.addCallback(function() {
37 var proxy; 35 var proxy;
38 36
39 proxy = new Clipperz.PM.Proxy(); 37 proxy = new Clipperz.PM.Proxy();
40 ok(proxy != null, "can create instances of the Proxy class"); 38 ok(proxy != null, "can create instances of the Proxy class");
41 is(proxy.shouldPayTolls(), false, "proxy is set to NOT pay tolls by default"); 39 is(proxy.shouldPayTolls(), false, "proxy is set to NOT pay tolls by default");
42 }); 40 });
43 41
44 deferredResult.callback(); 42 deferredResult.callback();
45 43
46 return deferredResult; 44 return deferredResult;
47 }, 45 },
48 46
49 //------------------------------------------------------------------------- 47 //-------------------------------------------------------------------------
50 48
51 'simpleTestsWithTolls_tests': function() { 49 'simpleTestsWithTolls_tests': function() {
52 vardeferredResult; 50 vardeferredResult;
53 51
54 deferredResult = new Clipperz.Async.Deferred("simple_tests", {trace:false}); 52 deferredResult = new Clipperz.Async.Deferred("simple_tests", {trace:false});
55 deferredResult.addCallback(function() { 53 deferredResult.addCallback(function() {
56 var proxy; 54 var proxy;
57 55
58 proxy = new Clipperz.PM.Proxy({shouldPayTolls:true}); 56 proxy = new Clipperz.PM.Proxy({shouldPayTolls:true});
59 is(proxy.shouldPayTolls(), true, "I can set Proxy to pays tolls"); 57 is(proxy.shouldPayTolls(), true, "I can set Proxy to pays tolls");
60 }); 58 });
61 59
62 deferredResult.callback(); 60 deferredResult.callback();
63 61
64 return deferredResult; 62 return deferredResult;
65 }, 63 },
66 64
67 //------------------------------------------------------------------------- 65 //-------------------------------------------------------------------------
68 'syntaxFix': MochiKit.Base.noop 66 'syntaxFix': MochiKit.Base.noop
69}; 67};
70 68
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/Toll.html b/frontend/gamma/tests/tests/Clipperz/PM/Toll.html
index 6c2e000..b5a35f6 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/Toll.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/Toll.html
@@ -1,58 +1,56 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.PM.Toll - test</title> 26 <title>Clipperz.PM.Toll - test</title>
29 27
30 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
31 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 29 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
32 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 30 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
33 31
34 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 32 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
35 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
36 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script>
40 38
41 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> 44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
47 45
48 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script> 46 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script>
49 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script> 47 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script>
50 48
51</head> 49</head>
52<body> 50<body>
53<pre id="test"> 51<pre id="test">
54 <script type="text/javascript" src="Toll.test.js"></script> 52 <script type="text/javascript" src="Toll.test.js"></script>
55</pre> 53</pre>
56 54
57</body> 55</body>
58</html> 56</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/Toll.test.js b/frontend/gamma/tests/tests/Clipperz/PM/Toll.test.js
index 6de67c3..bab0713 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/Toll.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/Toll.test.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 24Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
27 25
28var tests = { 26var tests = {
29 27
30 //------------------------------------------------------------------------- 28 //-------------------------------------------------------------------------
31/* 29/*
32 'simple_test': function() { 30 'simple_test': function() {
33 vardeferredResult; 31 vardeferredResult;
34 32
35 deferredResult = new Clipperz.Async.Deferred("simple_tests", {trace:false}); 33 deferredResult = new Clipperz.Async.Deferred("simple_tests", {trace:false});
36 deferredResult.addCallback(function() { 34 deferredResult.addCallback(function() {
37 vartollTargetValue; 35 vartollTargetValue;
38 vartoll; 36 vartoll;
39 var price; 37 var price;
40 38
41 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32); 39 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32);
42 tollTargetValue = Clipperz.Crypto.SHA.sha256(tollTargetValue); 40 tollTargetValue = Clipperz.Crypto.SHA.sha256(tollTargetValue);
43 41
44 price = 1; 42 price = 1;
45 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32); 43 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32);
46 toll = new Clipperz.PM.Toll({targetValue:tollTargetValue.toHexString(), cost:price}); 44 toll = new Clipperz.PM.Toll({targetValue:tollTargetValue.toHexString(), cost:price});
47 toll.pay(); 45 toll.pay();
48 46
49 price = 5; 47 price = 5;
50 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32); 48 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32);
51 toll = new Clipperz.PM.Toll({targetValue:tollTargetValue.toHexString(), cost:price}); 49 toll = new Clipperz.PM.Toll({targetValue:tollTargetValue.toHexString(), cost:price});
52 toll.pay(); 50 toll.pay();
53 51
54 price = 6; 52 price = 6;
55 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32); 53 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32);
56 toll = new Clipperz.PM.Toll({targetValue:tollTargetValue.toHexString(), cost:price}); 54 toll = new Clipperz.PM.Toll({targetValue:tollTargetValue.toHexString(), cost:price});
57 toll.pay(); 55 toll.pay();
58 56
59 price = 7; 57 price = 7;
60 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32); 58 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32);
61 toll = new Clipperz.PM.Toll({targetValue:tollTargetValue.toHexString(), cost:price}); 59 toll = new Clipperz.PM.Toll({targetValue:tollTargetValue.toHexString(), cost:price});
62 toll.pay(); 60 toll.pay();
63 61
64 price = 7; 62 price = 7;
65 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32); 63 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32);
66 toll = new Clipperz.PM.Toll({targetValue:tollTargetValue.toHexString(), cost:price}); 64 toll = new Clipperz.PM.Toll({targetValue:tollTargetValue.toHexString(), cost:price});
67 toll.pay(); 65 toll.pay();
68 }); 66 });
69 67
70 deferredResult.callback(); 68 deferredResult.callback();
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/MainController.html b/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/MainController.html
index 1eea01b..6a2d3a0 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/MainController.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/MainController.html
@@ -1,60 +1,58 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.PM.UI.Web.MainController - test</title> 26 <title>Clipperz.PM.UI.Web.MainController - test</title>
29 27
30 <script type="text/javascript" src="../../../../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../../../../js/MochiKit/MochiKit.js"></script>
31 <script type="text/javascript" src="../../../../../../SimpleTest/SimpleTest.js"></script> 29 <script type="text/javascript" src="../../../../../../SimpleTest/SimpleTest.js"></script>
32 <link rel="stylesheet" type="text/css" href="../../../../../../SimpleTest/test.css"> 30 <link rel="stylesheet" type="text/css" href="../../../../../../SimpleTest/test.css">
33 31
34 <script type='text/javascript' src='../../../../../../../js/Clipperz/YUI/Utils.js'></script> 32 <script type='text/javascript' src='../../../../../../../js/Clipperz/YUI/Utils.js'></script>
35 <script type='text/javascript' src='../../../../../../../js/Clipperz/Base.js'></script> 33 <script type='text/javascript' src='../../../../../../../js/Clipperz/Base.js'></script>
36 <script type='text/javascript' src='../../../../../../../js/Clipperz/ByteArray.js'></script> 34 <script type='text/javascript' src='../../../../../../../js/Clipperz/ByteArray.js'></script>
37 <script type='text/javascript' src='../../../../../../../js/Clipperz/Logging.js'></script> 35 <script type='text/javascript' src='../../../../../../../js/Clipperz/Logging.js'></script>
38 <script type='text/javascript' src='../../../../../../../js/Clipperz/Async.js'></script> 36 <script type='text/javascript' src='../../../../../../../js/Clipperz/Async.js'></script>
39 <script type='text/javascript' src='../../../../../../../js/Clipperz/KeyValueObjectStore.js'></script> 37 <script type='text/javascript' src='../../../../../../../js/Clipperz/KeyValueObjectStore.js'></script>
40 38
41 <script type='text/javascript' src='../../../../../../../js/Clipperz/Crypto/Base.js'></script> 39 <script type='text/javascript' src='../../../../../../../js/Clipperz/Crypto/Base.js'></script>
42 <script type='text/javascript' src='../../../../../../../js/Clipperz/Crypto/BigInt.js'></script> 40 <script type='text/javascript' src='../../../../../../../js/Clipperz/Crypto/BigInt.js'></script>
43 <script type='text/javascript' src='../../../../../../../js/Clipperz/Crypto/AES.js'></script> 41 <script type='text/javascript' src='../../../../../../../js/Clipperz/Crypto/AES.js'></script>
44 <script type='text/javascript' src='../../../../../../../js/Clipperz/Crypto/SHA.js'></script> 42 <script type='text/javascript' src='../../../../../../../js/Clipperz/Crypto/SHA.js'></script>
45 <script type='text/javascript' src='../../../../../../../js/Clipperz/Crypto/PRNG.js'></script> 43 <script type='text/javascript' src='../../../../../../../js/Clipperz/Crypto/PRNG.js'></script>
46 <script type='text/javascript' src='../../../../../../../js/Clipperz/Crypto/SRP.js'></script> 44 <script type='text/javascript' src='../../../../../../../js/Clipperz/Crypto/SRP.js'></script>
47 45
48 <script type='text/javascript' src='../../../../../../../js/Clipperz/Signal.js'></script> 46 <script type='text/javascript' src='../../../../../../../js/Clipperz/Signal.js'></script>
49 47
50 <script type='text/javascript' src='../../../../../../../js/Clipperz/PM/UI/Web/Controllers/MainController.js'></script> 48 <script type='text/javascript' src='../../../../../../../js/Clipperz/PM/UI/Web/Controllers/MainController.js'></script>
51 <script type="text/javascript" src="../../../../../../SimpleTest/SimpleTest.Async.js"></script> 49 <script type="text/javascript" src="../../../../../../SimpleTest/SimpleTest.Async.js"></script>
52 50
53</head> 51</head>
54<body> 52<body>
55<pre id="test"> 53<pre id="test">
56 <script type="text/javascript" src="MainController.test.js"></script> 54 <script type="text/javascript" src="MainController.test.js"></script>
57</pre> 55</pre>
58 56
59</body> 57</body>
60</html> 58</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/MainController.test.js b/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/MainController.test.js
index 919215e..512104b 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/MainController.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/MainController.test.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26//Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 24//Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
27 25
28var tests = { 26var tests = {
29 27
30 'isPassphraseDelegateLockSetAfterInit': function (someTestArgs) { 28 'isPassphraseDelegateLockSetAfterInit': function (someTestArgs) {
31 return Clipperz.Async.callbacks('isPassphraseDelegateLockSetAfterInit', [ 29 return Clipperz.Async.callbacks('isPassphraseDelegateLockSetAfterInit', [
32 function () { 30 function () {
33 var mainController; 31 var mainController;
34 32
35 mainController = new Clipperz.PM.UI.Web.Controllers.MainController(); 33 mainController = new Clipperz.PM.UI.Web.Controllers.MainController();
36 SimpleTest.is(true, mainController._passphraseDelegateLock.locked, 'passphraseDelegate lock is locked after MainController initialization') 34 SimpleTest.is(true, mainController._passphraseDelegateLock.locked, 'passphraseDelegate lock is locked after MainController initialization')
37 }]); 35 }]);
38 }, 36 },
39 37
40 //------------------------------------------------------------------------- 38 //-------------------------------------------------------------------------
41 39
42 'getPassphraseWithUnsetDelegate_test': function (someTestArgs) { 40 'getPassphraseWithUnsetDelegate_test': function (someTestArgs) {
43 var deferredResult; 41 var deferredResult;
44 var mainController; 42 var mainController;
45 var delegateFunction; 43 var delegateFunction;
46 44
47 mainController = new Clipperz.PM.UI.Web.Controllers.MainController(); 45 mainController = new Clipperz.PM.UI.Web.Controllers.MainController();
48 delegateFunction = function () { return "clipperz";}; 46 delegateFunction = function () { return "clipperz";};
49 47
50 MochiKit.Async.callLater(1, MochiKit.Base.method(mainController, 'setPassphraseDelegate', delegateFunction)); 48 MochiKit.Async.callLater(1, MochiKit.Base.method(mainController, 'setPassphraseDelegate', delegateFunction));
51 49
52 return Clipperz.Async.callbacks("MainController.getPassphraseWithUnsetDelegate",[ 50 return Clipperz.Async.callbacks("MainController.getPassphraseWithUnsetDelegate",[
53 MochiKit.Base.method(mainController, 'getPassphrase'), 51 MochiKit.Base.method(mainController, 'getPassphrase'),
54 function (aResult) { 52 function (aResult) {
55 SimpleTest.is(aResult, 'clipperz', "the password provided by the delegate is correct"); 53 SimpleTest.is(aResult, 'clipperz', "the password provided by the delegate is correct");
56 } 54 }
57 ], {trace:false}); 55 ], {trace:false});
58 }, 56 },
59 57
60 //------------------------------------------------------------------------- 58 //-------------------------------------------------------------------------
61 59
62 'getPassphraseWithSetDelegate_test': function (someTestArgs) { 60 'getPassphraseWithSetDelegate_test': function (someTestArgs) {
63 var deferredResult; 61 var deferredResult;
64 var mainController; 62 var mainController;
65 var delegateFunction; 63 var delegateFunction;
66 64
67 mainController = new Clipperz.PM.UI.Web.Controllers.MainController(); 65 mainController = new Clipperz.PM.UI.Web.Controllers.MainController();
68 delegateFunction = function () {return "clipperz";}; 66 delegateFunction = function () {return "clipperz";};
69 67
70 return Clipperz.Async.callbacks("MainController.getPassphraseWithSetDelegate_test",[ 68 return Clipperz.Async.callbacks("MainController.getPassphraseWithSetDelegate_test",[
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/index.html b/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/index.html
index 3f04d4f..a49fcd6 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/index.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/index.html
@@ -1,43 +1,41 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.PM.UI.Web.Controllers.* - tests</title> 26 <title>Clipperz.PM.UI.Web.Controllers.* - tests</title>
29 27
30 <script type="text/javascript" src="../../../../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../../../../js/MochiKit/MochiKit.js"></script>
31 <script type="text/javascript" src="../../../../../../SimpleTest/TestRunner.js"></script> 29 <script type="text/javascript" src="../../../../../../SimpleTest/TestRunner.js"></script>
32</head> 30</head>
33<body> 31<body>
34<script> 32<script>
35TestRunner.runTests( 33TestRunner.runTests(
36// 34//
37 //This is still a complete mess. 35 //This is still a complete mess.
38// 36//
39 'MainController.html' 37 'MainController.html'
40); 38);
41</script> 39</script>
42</body> 40</body>
43</html> \ No newline at end of file 41</html> \ No newline at end of file
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/index.html b/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/index.html
index 250a70d..cdec066 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/index.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/index.html
@@ -1,42 +1,40 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.PM.UI.Web* - tests</title> 26 <title>Clipperz.PM.UI.Web* - tests</title>
29 27
30 <script type="text/javascript" src="../../../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../../../js/MochiKit/MochiKit.js"></script>
31 <script type="text/javascript" src="../../../../../SimpleTest/TestRunner.js"></script> 29 <script type="text/javascript" src="../../../../../SimpleTest/TestRunner.js"></script>
32</head> 30</head>
33<body> 31<body>
34<script> 32<script>
35TestRunner.runTests( 33TestRunner.runTests(
36// 34//
37 //This is still a complete mess. 35 //This is still a complete mess.
38// 36//
39); 37);
40</script> 38</script>
41</body> 39</body>
42</html> \ No newline at end of file 40</html> \ No newline at end of file
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/UI/index.html b/frontend/gamma/tests/tests/Clipperz/PM/UI/index.html
index d46ced1..89deab8 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/UI/index.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/UI/index.html
@@ -1,42 +1,40 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.PM.UI.* - tests</title> 26 <title>Clipperz.PM.UI.* - tests</title>
29 27
30 <script type="text/javascript" src="../../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../../js/MochiKit/MochiKit.js"></script>
31 <script type="text/javascript" src="../../../../SimpleTest/TestRunner.js"></script> 29 <script type="text/javascript" src="../../../../SimpleTest/TestRunner.js"></script>
32</head> 30</head>
33<body> 31<body>
34<script> 32<script>
35TestRunner.runTests( 33TestRunner.runTests(
36// 34//
37 //This is still a complete mess. 35 //This is still a complete mess.
38// 36//
39); 37);
40</script> 38</script>
41</body> 39</body>
42</html> \ No newline at end of file 40</html> \ No newline at end of file
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/index.html b/frontend/gamma/tests/tests/Clipperz/PM/index.html
index c3df56a..eeda692 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/index.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/index.html
@@ -1,54 +1,52 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.PM.* - tests</title> 26 <title>Clipperz.PM.* - tests</title>
29 27
30 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
31 <script type="text/javascript" src="../../../SimpleTest/TestRunner.js"></script> 29 <script type="text/javascript" src="../../../SimpleTest/TestRunner.js"></script>
32</head> 30</head>
33<body> 31<body>
34<script> 32<script>
35TestRunner.runTests( 33TestRunner.runTests(
36// 34//
37 //This is still a complete mess. 35 //This is still a complete mess.
38// 36//
39 //'BookmarkletProcessor.html', 37 //'BookmarkletProcessor.html',
40 'Connection.html', 38 'Connection.html',
41 'Crypto.html', 39 'Crypto.html',
42 //'Crypto_other_implementation_comparison.html', 40 //'Crypto_other_implementation_comparison.html',
43 'Crypto_performanceEvaluation.html', 41 'Crypto_performanceEvaluation.html',
44 //'CryptoPerformance_ByteArrayArray.html', 42 //'CryptoPerformance_ByteArrayArray.html',
45 //'CryptoPerformance_ByteArrayHex.html', 43 //'CryptoPerformance_ByteArrayHex.html',
46 //'CryptoPerformance_ByteArrayString.html', 44 //'CryptoPerformance_ByteArrayString.html',
47 'Date.html', 45 'Date.html',
48 'PIN.html', 46 'PIN.html',
49 'Proxy.html', 47 'Proxy.html',
50 'Toll.html' 48 'Toll.html'
51); 49);
52</script> 50</script>
53</body> 51</body>
54</html> \ No newline at end of file 52</html> \ No newline at end of file
diff --git a/frontend/gamma/tests/tests/Clipperz/RoboFormExportProcessor.html b/frontend/gamma/tests/tests/Clipperz/RoboFormExportProcessor.html
index b4500e3..3065b32 100644
--- a/frontend/gamma/tests/tests/Clipperz/RoboFormExportProcessor.html
+++ b/frontend/gamma/tests/tests/Clipperz/RoboFormExportProcessor.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> 26 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script>
29 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script> 27 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script>
30 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css"> 28 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css">
31 29
32 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script> 30 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script>
33 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script> 31 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script>
34 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script> 32 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script>
35 <script type='text/javascript' src='../../../js/Clipperz/KeePassExportProcessor.js'></script> 33 <script type='text/javascript' src='../../../js/Clipperz/KeePassExportProcessor.js'></script>
36 34
37 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script> 35 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script>
38</head> 36</head>
39<body> 37<body>
40<pre id="test"> 38<pre id="test">
41<script type="text/javascript"> 39<script type="text/javascript">
42try { 40try {
43 var deferredResult; 41 var deferredResult;
44 varkeePassProcessor; 42 varkeePassProcessor;
45 43
46 keePassProcessor = new Clipperz.KeePassExportProcessor(); 44 keePassProcessor = new Clipperz.KeePassExportProcessor();
47 45
48 deferredResult = new MochiKit.Async.Deferred(); 46 deferredResult = new MochiKit.Async.Deferred();
49 47
50 deferredResult.addCallback(function(aResult) { return "[Gmail]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.gmail.com\nPassword: NHy08ZCMYsqUeLQCawR7\n\n[del.icio.us]\nGroup: General\nUserName: joe69\nURL: http://del.icio.us\nPassword: tS1cIEeqp5y0wkU\n\n[Amazon]\nGroup: General\nUserName: jclipperz\nURL: http://www.amazon.com\nPassword: wvpkqNPIsqlI5g6XE9Tz\n\n[Paypal]\nGroup: General\nUserName: joeclipperz\nURL: http://www.paypal.com\nPassword: 24T4wIcvHnM28T3L\n\n[Technorati]\nGroup: General\nUserName: jclipperz\nURL: http://www.technorati.com\nPassword: UcVeNqF\n\n[American Airlines]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.aa.com\nPassword: AtrYbmi7lmSjR\n" }); 48 deferredResult.addCallback(function(aResult) { return "[Gmail]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.gmail.com\nPassword: NHy08ZCMYsqUeLQCawR7\n\n[del.icio.us]\nGroup: General\nUserName: joe69\nURL: http://del.icio.us\nPassword: tS1cIEeqp5y0wkU\n\n[Amazon]\nGroup: General\nUserName: jclipperz\nURL: http://www.amazon.com\nPassword: wvpkqNPIsqlI5g6XE9Tz\n\n[Paypal]\nGroup: General\nUserName: joeclipperz\nURL: http://www.paypal.com\nPassword: 24T4wIcvHnM28T3L\n\n[Technorati]\nGroup: General\nUserName: jclipperz\nURL: http://www.technorati.com\nPassword: UcVeNqF\n\n[American Airlines]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.aa.com\nPassword: AtrYbmi7lmSjR\n" });
51 deferredResult.addCallback(MochiKit.Base.method(keePassProcessor, 'deferredParse')); 49 deferredResult.addCallback(MochiKit.Base.method(keePassProcessor, 'deferredParse'));
52 deferredResult.addCallback(function(aResult) { is(MochiKit.Base.serializeJSON(aResult), "[{\"Title\":\"Gmail\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.gmail.com\", \"Password\":\"NHy08ZCMYsqUeLQCawR7\"}, {\"Title\":\"del.icio.us\", \"Group\":\"General\", \"UserName\":\"joe69\", \"URL\":\"http://del.icio.us\", \"Password\":\"tS1cIEeqp5y0wkU\"}, {\"Title\":\"Amazon\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.amazon.com\", \"Password\":\"wvpkqNPIsqlI5g6XE9Tz\"}, {\"Title\":\"Paypal\", \"Group\":\"General\", \"UserName\":\"joeclipperz\", \"URL\":\"http://www.paypal.com\", \"Password\":\"24T4wIcvHnM28T3L\"}, {\"Title\":\"Technorati\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.technorati.com\", \"Password\":\"UcVeNqF\"}, {\"Title\":\"American Airlines\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.aa.com\", \"Password\":\"AtrYbmi7lmSjR\"}]", "first test"); }); 50 deferredResult.addCallback(function(aResult) { is(MochiKit.Base.serializeJSON(aResult), "[{\"Title\":\"Gmail\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.gmail.com\", \"Password\":\"NHy08ZCMYsqUeLQCawR7\"}, {\"Title\":\"del.icio.us\", \"Group\":\"General\", \"UserName\":\"joe69\", \"URL\":\"http://del.icio.us\", \"Password\":\"tS1cIEeqp5y0wkU\"}, {\"Title\":\"Amazon\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.amazon.com\", \"Password\":\"wvpkqNPIsqlI5g6XE9Tz\"}, {\"Title\":\"Paypal\", \"Group\":\"General\", \"UserName\":\"joeclipperz\", \"URL\":\"http://www.paypal.com\", \"Password\":\"24T4wIcvHnM28T3L\"}, {\"Title\":\"Technorati\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.technorati.com\", \"Password\":\"UcVeNqF\"}, {\"Title\":\"American Airlines\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.aa.com\", \"Password\":\"AtrYbmi7lmSjR\"}]", "first test"); });
53 deferredResult.addErrback(function(anError) { is("ERROR", anError) }); 51 deferredResult.addErrback(function(anError) { is("ERROR", anError) });
54 52
55 deferredResult.addCallback(function(aResult) { return "[Gmail]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.gmail.com\nPassword: NHy08ZCMYsqUeLQCawR7\nNotes: Personal account\n\n[del.icio.us]\nGroup: General\nUserName: joe69\nURL: http://del.icio.us\nPassword: tS1cIEeqp5y0wkU\nNotes: social bookmarking site\n\n[Amazon]\nGroup: General\nUserName: jclipperz\nURL: http://www.amazon.com\nPassword: wvpkqNPIsqlI5g6XE9Tz\nNotes: The US online store\n\n[Paypal]\nGroup: General\nUserName: joeclipperz\nURL: http://www.paypal.com\nPassword: 24T4wIcvHnM28T3L\nNotes: Linked to my savings account\n\n[Technorati]\nGroup: General\nUserName: jclipperz\nURL: http://www.technorati.com\nPassword: UcVeNqF\nNotes: Blog ranking and searching\n\n[American Airlines]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.aa.com\nPassword: AtrYbmi7lmSjR\nNotes: Adavantages card n. 795495\n" }); 53 deferredResult.addCallback(function(aResult) { return "[Gmail]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.gmail.com\nPassword: NHy08ZCMYsqUeLQCawR7\nNotes: Personal account\n\n[del.icio.us]\nGroup: General\nUserName: joe69\nURL: http://del.icio.us\nPassword: tS1cIEeqp5y0wkU\nNotes: social bookmarking site\n\n[Amazon]\nGroup: General\nUserName: jclipperz\nURL: http://www.amazon.com\nPassword: wvpkqNPIsqlI5g6XE9Tz\nNotes: The US online store\n\n[Paypal]\nGroup: General\nUserName: joeclipperz\nURL: http://www.paypal.com\nPassword: 24T4wIcvHnM28T3L\nNotes: Linked to my savings account\n\n[Technorati]\nGroup: General\nUserName: jclipperz\nURL: http://www.technorati.com\nPassword: UcVeNqF\nNotes: Blog ranking and searching\n\n[American Airlines]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.aa.com\nPassword: AtrYbmi7lmSjR\nNotes: Adavantages card n. 795495\n" });
56 deferredResult.addCallback(MochiKit.Base.method(keePassProcessor, 'deferredParse')); 54 deferredResult.addCallback(MochiKit.Base.method(keePassProcessor, 'deferredParse'));
57 deferredResult.addCallback(function(aResult) { is(MochiKit.Base.serializeJSON(aResult), "[{\"Title\":\"Gmail\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.gmail.com\", \"Password\":\"NHy08ZCMYsqUeLQCawR7\", \"Notes\":\"Personal account\"}, {\"Title\":\"del.icio.us\", \"Group\":\"General\", \"UserName\":\"joe69\", \"URL\":\"http://del.icio.us\", \"Password\":\"tS1cIEeqp5y0wkU\", \"Notes\":\"social bookmarking site\"}, {\"Title\":\"Amazon\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.amazon.com\", \"Password\":\"wvpkqNPIsqlI5g6XE9Tz\", \"Notes\":\"The US online store\"}, {\"Title\":\"Paypal\", \"Group\":\"General\", \"UserName\":\"joeclipperz\", \"URL\":\"http://www.paypal.com\", \"Password\":\"24T4wIcvHnM28T3L\", \"Notes\":\"Linked to my savings account\"}, {\"Title\":\"Technorati\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.technorati.com\", \"Password\":\"UcVeNqF\", \"Notes\":\"Blog ranking and searching\"}, {\"Title\":\"American Airlines\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.aa.com\", \"Password\":\"AtrYbmi7lmSjR\", \"Notes\":\"Adavantages card n. 795495\"}]", "second test"); }); 55 deferredResult.addCallback(function(aResult) { is(MochiKit.Base.serializeJSON(aResult), "[{\"Title\":\"Gmail\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.gmail.com\", \"Password\":\"NHy08ZCMYsqUeLQCawR7\", \"Notes\":\"Personal account\"}, {\"Title\":\"del.icio.us\", \"Group\":\"General\", \"UserName\":\"joe69\", \"URL\":\"http://del.icio.us\", \"Password\":\"tS1cIEeqp5y0wkU\", \"Notes\":\"social bookmarking site\"}, {\"Title\":\"Amazon\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.amazon.com\", \"Password\":\"wvpkqNPIsqlI5g6XE9Tz\", \"Notes\":\"The US online store\"}, {\"Title\":\"Paypal\", \"Group\":\"General\", \"UserName\":\"joeclipperz\", \"URL\":\"http://www.paypal.com\", \"Password\":\"24T4wIcvHnM28T3L\", \"Notes\":\"Linked to my savings account\"}, {\"Title\":\"Technorati\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.technorati.com\", \"Password\":\"UcVeNqF\", \"Notes\":\"Blog ranking and searching\"}, {\"Title\":\"American Airlines\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.aa.com\", \"Password\":\"AtrYbmi7lmSjR\", \"Notes\":\"Adavantages card n. 795495\"}]", "second test"); });
58 deferredResult.addErrback(function(anError) { is("ERROR", anError) }); 56 deferredResult.addErrback(function(anError) { is("ERROR", anError) });
59 57
60 deferredResult.addCallback(function(aResult) { return "[Gmail]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.gmail.com\nPassword: NHy08ZCMYsqUeLQCawR7\nNotes: Personal account\nwith some notes stored\non multiple lines\n\n[del.icio.us]\nGroup: General\nUserName: joe69\nURL: http://del.icio.us\nPassword: tS1cIEeqp5y0wkU\nNotes: social bookmarking site\n\n[Amazon]\nGroup: General\nUserName: jclipperz\nURL: http://www.amazon.com\nPassword: wvpkqNPIsqlI5g6XE9Tz\nNotes: The US online store\n\n[Paypal]\nGroup: General\nUserName: joeclipperz\nURL: http://www.paypal.com\nPassword: 24T4wIcvHnM28T3L\nNotes: Linked to my savings account\n\n[Technorati]\nGroup: General\nUserName: jclipperz\nURL: http://www.technorati.com\nPassword: UcVeNqF\nNotes: Blog ranking and searching\n\n[American Airlines]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.aa.com\nPassword: AtrYbmi7lmSjR\nNotes: Adavantages card n. 795495\n" }); 58 deferredResult.addCallback(function(aResult) { return "[Gmail]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.gmail.com\nPassword: NHy08ZCMYsqUeLQCawR7\nNotes: Personal account\nwith some notes stored\non multiple lines\n\n[del.icio.us]\nGroup: General\nUserName: joe69\nURL: http://del.icio.us\nPassword: tS1cIEeqp5y0wkU\nNotes: social bookmarking site\n\n[Amazon]\nGroup: General\nUserName: jclipperz\nURL: http://www.amazon.com\nPassword: wvpkqNPIsqlI5g6XE9Tz\nNotes: The US online store\n\n[Paypal]\nGroup: General\nUserName: joeclipperz\nURL: http://www.paypal.com\nPassword: 24T4wIcvHnM28T3L\nNotes: Linked to my savings account\n\n[Technorati]\nGroup: General\nUserName: jclipperz\nURL: http://www.technorati.com\nPassword: UcVeNqF\nNotes: Blog ranking and searching\n\n[American Airlines]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.aa.com\nPassword: AtrYbmi7lmSjR\nNotes: Adavantages card n. 795495\n" });
61 deferredResult.addCallback(MochiKit.Base.method(keePassProcessor, 'deferredParse')); 59 deferredResult.addCallback(MochiKit.Base.method(keePassProcessor, 'deferredParse'));
62 deferredResult.addCallback(function(aResult) { is(MochiKit.Base.serializeJSON(aResult), "[{\"Title\":\"Gmail\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.gmail.com\", \"Password\":\"NHy08ZCMYsqUeLQCawR7\", \"Notes\":\"Personal account\\nwith some notes stored\\non multiple lines\\n\"}, {\"Title\":\"del.icio.us\", \"Group\":\"General\", \"UserName\":\"joe69\", \"URL\":\"http://del.icio.us\", \"Password\":\"tS1cIEeqp5y0wkU\", \"Notes\":\"social bookmarking site\"}, {\"Title\":\"Amazon\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.amazon.com\", \"Password\":\"wvpkqNPIsqlI5g6XE9Tz\", \"Notes\":\"The US online store\"}, {\"Title\":\"Paypal\", \"Group\":\"General\", \"UserName\":\"joeclipperz\", \"URL\":\"http://www.paypal.com\", \"Password\":\"24T4wIcvHnM28T3L\", \"Notes\":\"Linked to my savings account\"}, {\"Title\":\"Technorati\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.technorati.com\", \"Password\":\"UcVeNqF\", \"Notes\":\"Blog ranking and searching\"}, {\"Title\":\"American Airlines\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.aa.com\", \"Password\":\"AtrYbmi7lmSjR\", \"Notes\":\"Adavantages card n. 795495\"}]", "third test"); }); 60 deferredResult.addCallback(function(aResult) { is(MochiKit.Base.serializeJSON(aResult), "[{\"Title\":\"Gmail\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.gmail.com\", \"Password\":\"NHy08ZCMYsqUeLQCawR7\", \"Notes\":\"Personal account\\nwith some notes stored\\non multiple lines\\n\"}, {\"Title\":\"del.icio.us\", \"Group\":\"General\", \"UserName\":\"joe69\", \"URL\":\"http://del.icio.us\", \"Password\":\"tS1cIEeqp5y0wkU\", \"Notes\":\"social bookmarking site\"}, {\"Title\":\"Amazon\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.amazon.com\", \"Password\":\"wvpkqNPIsqlI5g6XE9Tz\", \"Notes\":\"The US online store\"}, {\"Title\":\"Paypal\", \"Group\":\"General\", \"UserName\":\"joeclipperz\", \"URL\":\"http://www.paypal.com\", \"Password\":\"24T4wIcvHnM28T3L\", \"Notes\":\"Linked to my savings account\"}, {\"Title\":\"Technorati\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.technorati.com\", \"Password\":\"UcVeNqF\", \"Notes\":\"Blog ranking and searching\"}, {\"Title\":\"American Airlines\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.aa.com\", \"Password\":\"AtrYbmi7lmSjR\", \"Notes\":\"Adavantages card n. 795495\"}]", "third test"); });
63 deferredResult.addErrback(function(anError) { is("ERROR", anError) }); 61 deferredResult.addErrback(function(anError) { is("ERROR", anError) });
64 62
65 63
66 64
67 deferredResult.addBoth(SimpleTest.finish); 65 deferredResult.addBoth(SimpleTest.finish);
68 deferredResult.callback(); 66 deferredResult.callback();
69 67
70/* 68/*
diff --git a/frontend/gamma/tests/tests/Clipperz/Set.html b/frontend/gamma/tests/tests/Clipperz/Set.html
index 82bb249..401d89c 100644
--- a/frontend/gamma/tests/tests/Clipperz/Set.html
+++ b/frontend/gamma/tests/tests/Clipperz/Set.html
@@ -1,51 +1,49 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.Set - test</title> 26 <title>Clipperz.Set - test</title>
29 27
30 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script>
31 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script> 29 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script>
32 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css"> 30 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css">
33 31
34 <script type='text/javascript' src='../../../js/JSON/json2.js'></script> 32 <script type='text/javascript' src='../../../js/JSON/json2.js'></script>
35 33
36 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script> 34 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script>
37 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script> 35 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script>
38 <script type='text/javascript' src='../../../js/Clipperz/Set.js'></script> 36 <script type='text/javascript' src='../../../js/Clipperz/Set.js'></script>
39 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script> 37 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script>
40 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script> 38 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script>
41 39
42 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script> 40 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script>
43</head> 41</head>
44<body> 42<body>
45 43
46<pre id="test"> 44<pre id="test">
47<script type="text/javascript" src="Set.test.js"></script> 45<script type="text/javascript" src="Set.test.js"></script>
48</pre> 46</pre>
49</body> 47</body>
50</html> 48</html>
51 49
diff --git a/frontend/gamma/tests/tests/Clipperz/Set.test.js b/frontend/gamma/tests/tests/Clipperz/Set.test.js
index f908816..f5574ee 100644
--- a/frontend/gamma/tests/tests/Clipperz/Set.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/Set.test.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26var tests = { 24var tests = {
27 25
28 //------------------------------------------------------------------------- 26 //-------------------------------------------------------------------------
29 27
30 'set_test': function (someTestArgs) { 28 'set_test': function (someTestArgs) {
31 var deferredResult; 29 var deferredResult;
32 30
33 deferredResult = new Clipperz.Async.Deferred("set_test", someTestArgs); 31 deferredResult = new Clipperz.Async.Deferred("set_test", someTestArgs);
34 deferredResult.addCallback(function () { 32 deferredResult.addCallback(function () {
35 var set; 33 var set;
36 varobject1; 34 varobject1;
37 varobject2; 35 varobject2;
38 var object3; 36 var object3;
39 37
40 set = new Clipperz.Set(); 38 set = new Clipperz.Set();
41 39
42 object1 = new Object(); 40 object1 = new Object();
43 object2 = new Object(); 41 object2 = new Object();
44 object3 = new Object(); 42 object3 = new Object();
45 43
46 object1.label = "object 1"; 44 object1.label = "object 1";
47 object2.label = "object 2"; 45 object2.label = "object 2";
48 object3.label = "object 3"; 46 object3.label = "object 3";
49 47
50 is(set.size(), 0, "A new set should be empty"); 48 is(set.size(), 0, "A new set should be empty");
51 49
52 set.add(object1); 50 set.add(object1);
53 is(set.size(), 1); 51 is(set.size(), 1);
54 is(set.contains(object1), true); 52 is(set.contains(object1), true);
55 is(set.contains(object2), false); 53 is(set.contains(object2), false);
56 54
57 set.add(object1); 55 set.add(object1);
58 is(set.size(), 1, "Adding the same object twice does not change the set content"); 56 is(set.size(), 1, "Adding the same object twice does not change the set content");
59 is(set.contains(object1), true); 57 is(set.contains(object1), true);
60 is(set.contains(object2), false); 58 is(set.contains(object2), false);
61 59
62 set.add(object2); 60 set.add(object2);
63 is(set.size(), 2); 61 is(set.size(), 2);
64 is(set.contains(object1), true); 62 is(set.contains(object1), true);
65 is(set.contains(object2), true); 63 is(set.contains(object2), true);
66 is(set.contains(object3), false); 64 is(set.contains(object3), false);
67 65
68 set.remove(object1); 66 set.remove(object1);
69 is(set.size(), 1, "Size check after removing an object"); 67 is(set.size(), 1, "Size check after removing an object");
70 is(set.contains(object1), false); 68 is(set.contains(object1), false);
diff --git a/frontend/gamma/tests/tests/Clipperz/index.html b/frontend/gamma/tests/tests/Clipperz/index.html
index d4556eb..c86cbe0 100644
--- a/frontend/gamma/tests/tests/Clipperz/index.html
+++ b/frontend/gamma/tests/tests/Clipperz/index.html
@@ -1,46 +1,44 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Clipperz.* - tests</title> 26 <title>Clipperz.* - tests</title>
29 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> 27 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script>
30 <script type="text/javascript" src="../../SimpleTest/TestRunner.js"></script> 28 <script type="text/javascript" src="../../SimpleTest/TestRunner.js"></script>
31</head> 29</head>
32<body> 30<body>
33<script> 31<script>
34TestRunner.runTests( 32TestRunner.runTests(
35 'Async.html', 33 'Async.html',
36 'Base.html', 34 'Base.html',
37 'ByteArray.html', 35 'ByteArray.html',
38 'Date.html', 36 'Date.html',
39 'DOM.html', 37 'DOM.html',
40 'KeePassExportProcessor.html', 38 'KeePassExportProcessor.html',
41 'RoboFormExportProcessor.html', 39 'RoboFormExportProcessor.html',
42 'Set.html' 40 'Set.html'
43); 41);
44</script> 42</script>
45</body> 43</body>
46</html> \ No newline at end of file 44</html> \ No newline at end of file
diff --git a/frontend/gamma/tests/tests/Clipperz/index_googleCode.html b/frontend/gamma/tests/tests/Clipperz/index_googleCode.html
index 3878809..cf07043 100644
--- a/frontend/gamma/tests/tests/Clipperz/index_googleCode.html
+++ b/frontend/gamma/tests/tests/Clipperz/index_googleCode.html
@@ -1,47 +1,45 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> 26 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script>
29 <script type="text/javascript" src="../../SimpleTest/TestRunner.js"></script> 27 <script type="text/javascript" src="../../SimpleTest/TestRunner.js"></script>
30</head> 28</head>
31<body> 29<body>
32<script> 30<script>
33TestRunner.runTests( 31TestRunner.runTests(
34 'Base.html', 32 'Base.html',
35 'ByteArray.html', 33 'ByteArray.html',
36 'NotificationCenter.html', 34 'NotificationCenter.html',
37 'Set.html', 35 'Set.html',
38 'Crypto/AES.html', 36 'Crypto/AES.html',
39 'Crypto/BigInt.html', 37 'Crypto/BigInt.html',
40 'Crypto/PRNG.html', 38 'Crypto/PRNG.html',
41 'Crypto/SHA.html', 39 'Crypto/SHA.html',
42 'Crypto/ECC.html', 40 'Crypto/ECC.html',
43 'Crypto/SRP.html' 41 'Crypto/SRP.html'
44); 42);
45</script> 43</script>
46</body> 44</body>
47</html> \ No newline at end of file 45</html> \ No newline at end of file
diff --git a/frontend/gamma/tests/tests/Clipperz/index_testECC.html b/frontend/gamma/tests/tests/Clipperz/index_testECC.html
index bac17d1..34039fd 100644
--- a/frontend/gamma/tests/tests/Clipperz/index_testECC.html
+++ b/frontend/gamma/tests/tests/Clipperz/index_testECC.html
@@ -1,47 +1,45 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> 26 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script>
29 <script type="text/javascript" src="../../SimpleTest/TestRunner.js"></script> 27 <script type="text/javascript" src="../../SimpleTest/TestRunner.js"></script>
30</head> 28</head>
31<body> 29<body>
32<script> 30<script>
33TestRunner.runTests( 31TestRunner.runTests(
34 //'Base.html', 32 //'Base.html',
35 'ByteArray.html', 33 'ByteArray.html',
36 //'Crypto/AES.html', 34 //'Crypto/AES.html',
37 'Crypto/BigInt.html', 35 'Crypto/BigInt.html',
38 //'Crypto/PRNG.html', 36 //'Crypto/PRNG.html',
39 //'Crypto/SHA.html', 37 //'Crypto/SHA.html',
40 //'Crypto/SRP.html', 38 //'Crypto/SRP.html',
41 //'Crypto/ECC.html', 39 //'Crypto/ECC.html',
42 'Crypto/ECC.BinaryField.FiniteField.html', 40 'Crypto/ECC.BinaryField.FiniteField.html',
43 'Crypto/ECC.BinaryField.Value.html' 41 'Crypto/ECC.BinaryField.Value.html'
44); 42);
45</script> 43</script>
46</body> 44</body>
47</html> \ No newline at end of file 45</html> \ No newline at end of file
diff --git a/frontend/gamma/tests/tests/Components/CardDialogEditing/CardDialogEditing_test.js b/frontend/gamma/tests/tests/Components/CardDialogEditing/CardDialogEditing_test.js
index d2136af..b052384 100644
--- a/frontend/gamma/tests/tests/Components/CardDialogEditing/CardDialogEditing_test.js
+++ b/frontend/gamma/tests/tests/Components/CardDialogEditing/CardDialogEditing_test.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26Clipperz.Base.module('Clipperz.Tests.CardDialogEditing'); 24Clipperz.Base.module('Clipperz.Tests.CardDialogEditing');
27 25
28Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 26Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
29Clipperz.PM.Strings.Languages.initSetup(); 27Clipperz.PM.Strings.Languages.initSetup();
30 28
31Clipperz.Tests.CardDialogEditing.Tester = function(args) { 29Clipperz.Tests.CardDialogEditing.Tester = function(args) {
32 args = args || {}; 30 args = args || {};
33 31
34 Clipperz.Tests.CardDialogEditing.Tester.superclass.constructor.call(this, args); 32 Clipperz.Tests.CardDialogEditing.Tester.superclass.constructor.call(this, args);
35 //#this._user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return 'test';}}); 33 //#this._user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return 'test';}});
36 this._user = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}}); 34 this._user = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}});
37 35
38 return this; 36 return this;
39}; 37};
40 38
41Clipperz.Base.extend(Clipperz.Tests.CardDialogEditing.Tester, Object, { 39Clipperz.Base.extend(Clipperz.Tests.CardDialogEditing.Tester, Object, {
42 40
43 'toString': function() { 41 'toString': function() {
44 return "Clipperz.Tests.CardDialogEditing.Tester"; 42 return "Clipperz.Tests.CardDialogEditing.Tester";
45 }, 43 },
46 44
47 //------------------------------------------------------------------------- 45 //-------------------------------------------------------------------------
48 46
49 'user': function () { 47 'user': function () {
50 return this._user; 48 return this._user;
51 }, 49 },
52 50
53 //------------------------------------------------------------------------- 51 //-------------------------------------------------------------------------
54 52
55 'run': function () { 53 'run': function () {
56 var deferredResult; 54 var deferredResult;
57 var proxy; 55 var proxy;
58 varcardDialogController; 56 varcardDialogController;
59 varcardDialogComponent; 57 varcardDialogComponent;
60 58
61 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false}); 59 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false});
62 60
63 deferredResult = new Clipperz.Async.Deferred("CardDialogEditing_test.init", {trace:false}); 61 deferredResult = new Clipperz.Async.Deferred("CardDialogEditing_test.init", {trace:false});
64 //# deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['test_test_offline_copy_data']); 62 //# deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['test_test_offline_copy_data']);
65 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data_newVersion']); 63 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data_newVersion']);
66 deferredResult.addMethod(this.user(), 'login'); 64 deferredResult.addMethod(this.user(), 'login');
67 //# deferredResult.addMethod(this.user(), 'getRecord', '8280842f41162b673335b63860637e8472e8bbff0efa2bc78b0dbc5e09712e13'); 65 //# deferredResult.addMethod(this.user(), 'getRecord', '8280842f41162b673335b63860637e8472e8bbff0efa2bc78b0dbc5e09712e13');
68 66
69 // deferredResult.addMethod(this.user(), 'getRecord', '062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80'); //Linkedin 67 // deferredResult.addMethod(this.user(), 'getRecord', '062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80'); //Linkedin
70 // deferredResult.addMethod(this.user(), 'getRecord', '084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d'); //Example Attack 68 // deferredResult.addMethod(this.user(), 'getRecord', '084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d'); //Example Attack
diff --git a/frontend/gamma/tests/tests/Components/CardDialogEditing/User.data.js b/frontend/gamma/tests/tests/Components/CardDialogEditing/User.data.js
index 0e55ff5..2a8fca3 100644
--- a/frontend/gamma/tests/tests/Components/CardDialogEditing/User.data.js
+++ b/frontend/gamma/tests/tests/Components/CardDialogEditing/User.data.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26testData = { 24testData = {
27 25
28 //------------------------------------------------------------------------- 26 //-------------------------------------------------------------------------
29 27
30 'simpleLogin_001': { 28 'simpleLogin_001': {
31 'users': [ 29 'users': [
32 { 30 {
33 'username': "joe", 31 'username': "joe",
34 'passphrase': "eoj", 32 'passphrase': "eoj",
35 'version': "0.2", 33 'version': "0.2",
36 'connectionVersion':"0.2", 34 'connectionVersion':"0.2",
37 'records':{ 35 'records':{
38 'record 1': { 36 'record 1': {
39 'notes':"Some notes here", 37 'notes':"Some notes here",
40 'fields':[ 38 'fields':[
41 { 'name': "username", 'value': "joe", 'type': "text" }, 39 { 'name': "username", 'value': "joe", 'type': "text" },
42 { 'name': "password", 'value': "1234", 'type': "password"} 40 { 'name': "password", 'value': "1234", 'type': "password"}
43 ], 41 ],
44 'directLogins':{ 42 'directLogins':{
45 "record 1 direct login": { 43 "record 1 direct login": {
46 'configuration':"", 44 'configuration':"",
47 'bindings':[ 45 'bindings':[
48 ], 46 ],
49 'favicon':"http://www.example.com/favicon.ico" 47 'favicon':"http://www.example.com/favicon.ico"
50 } 48 }
51 } 49 }
52 } 50 }
53 }, 51 },
54 'otp':[ 52 'otp':[
55 "12345678 90abcdef 12345678 90abcdef", 53 "12345678 90abcdef 12345678 90abcdef",
56 "fedcba09 87654321 fedcba09 87654321" 54 "fedcba09 87654321 fedcba09 87654321"
57 ] 55 ]
58 } 56 }
59 ] 57 ]
60 }, 58 },
61 59
62 //------------------------------------------------------------------------- 60 //-------------------------------------------------------------------------
63 61
64 'joe_clipperz_offline_copy_data': { 62 'joe_clipperz_offline_copy_data': {
65 users:{ 63 users:{
66 'catchAllUser': { 64 'catchAllUser': {
67 __masterkey_test_value__: 'masterkey', 65 __masterkey_test_value__: 'masterkey',
68 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00', 66 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00',
69 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00' 67 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00'
70 }, 68 },
diff --git a/frontend/gamma/tests/tests/Components/CardDialogEditing/dragAndDrop_test.js b/frontend/gamma/tests/tests/Components/CardDialogEditing/dragAndDrop_test.js
index 91909fa..cfe94d4 100644
--- a/frontend/gamma/tests/tests/Components/CardDialogEditing/dragAndDrop_test.js
+++ b/frontend/gamma/tests/tests/Components/CardDialogEditing/dragAndDrop_test.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26Clipperz.Base.module('Clipperz.Tests.DragAndDrop'); 24Clipperz.Base.module('Clipperz.Tests.DragAndDrop');
27 25
28Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 26Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
29Clipperz.PM.Strings.Languages.initSetup(); 27Clipperz.PM.Strings.Languages.initSetup();
30 28
31Clipperz.Tests.DragAndDrop.Tester = function(args) { 29Clipperz.Tests.DragAndDrop.Tester = function(args) {
32 args = args || {}; 30 args = args || {};
33 31
34 Clipperz.Tests.DragAndDrop.Tester.superclass.constructor.call(this, args); 32 Clipperz.Tests.DragAndDrop.Tester.superclass.constructor.call(this, args);
35 this._user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return 'test';}}); 33 this._user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return 'test';}});
36 34
37 return this; 35 return this;
38}; 36};
39 37
40Clipperz.Base.extend(Clipperz.Tests.DragAndDrop.Tester, Object, { 38Clipperz.Base.extend(Clipperz.Tests.DragAndDrop.Tester, Object, {
41 39
42 'toString': function() { 40 'toString': function() {
43 return "Clipperz.Tests.DragAndDrop.Tester"; 41 return "Clipperz.Tests.DragAndDrop.Tester";
44 }, 42 },
45 43
46 //------------------------------------------------------------------------- 44 //-------------------------------------------------------------------------
47 45
48 'user': function () { 46 'user': function () {
49 return this._user; 47 return this._user;
50 }, 48 },
51 49
52 //------------------------------------------------------------------------- 50 //-------------------------------------------------------------------------
53 51
54 'run': function () { 52 'run': function () {
55 var deferredResult; 53 var deferredResult;
56 var proxy; 54 var proxy;
57 varcardDialogController; 55 varcardDialogController;
58 varcardDialogComponent; 56 varcardDialogComponent;
59 57
60 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false}); 58 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false});
61 59
62 deferredResult = new Clipperz.Async.Deferred("DragAndDrop_test.init", {trace:false}); 60 deferredResult = new Clipperz.Async.Deferred("DragAndDrop_test.init", {trace:false});
63 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['test_test_offline_copy_data']); 61 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['test_test_offline_copy_data']);
64 deferredResult.addMethod(this.user(), 'login'); 62 deferredResult.addMethod(this.user(), 'login');
65 deferredResult.addMethod(this.user(), 'getRecord', '8280842f41162b673335b63860637e8472e8bbff0efa2bc78b0dbc5e09712e13'); 63 deferredResult.addMethod(this.user(), 'getRecord', '8280842f41162b673335b63860637e8472e8bbff0efa2bc78b0dbc5e09712e13');
66 deferredResult.addCallback(MochiKit.Base.bind(function (aRecord) { 64 deferredResult.addCallback(MochiKit.Base.bind(function (aRecord) {
67 cardDialogController = new Clipperz.PM.UI.Web.Controllers.CardDialogController({record:aRecord, delegate:this}); 65 cardDialogController = new Clipperz.PM.UI.Web.Controllers.CardDialogController({record:aRecord, delegate:this});
68 cardDialogController.run(); 66 cardDialogController.run();
69 67
70 cardDialogController.showPasswordTooltip('**********', MochiKit.DOM.getElement('Clipperz_PM_Components_actionLink_63')); 68 cardDialogController.showPasswordTooltip('**********', MochiKit.DOM.getElement('Clipperz_PM_Components_actionLink_63'));
diff --git a/frontend/gamma/tests/tests/Components/CardDialogEditing/index.html b/frontend/gamma/tests/tests/Components/CardDialogEditing/index.html
index e484719..70a6d87 100644
--- a/frontend/gamma/tests/tests/Components/CardDialogEditing/index.html
+++ b/frontend/gamma/tests/tests/Components/CardDialogEditing/index.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Card Dialog EDITING - test</title> 26 <title>Card Dialog EDITING - test</title>
29 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 27 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
30 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 28 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
31 29
32 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 30 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
33 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 31 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
34 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 32 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
35 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script>
36 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
40 38
41 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script>
46 44
47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
51 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
52 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> 50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
53 51
54 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script> 52 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script>
55 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 53 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
56 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script> 54 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script>
57 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script> 55 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script>
58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script> 56 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script>
59 57
60 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> 58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
61 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> 59 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
62 60
63 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script> 61 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script>
64 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script> 62 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script>
65 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script> 63 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script>
66 <script type='text/javascript' src='../../../../js/Clipperz/PM/BookmarkletProcessor.js'></script> 64 <script type='text/javascript' src='../../../../js/Clipperz/PM/BookmarkletProcessor.js'></script>
67 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script> 65 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script>
68 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script> 66 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script>
69 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script> 67 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script>
70 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script> 68 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script>
diff --git a/frontend/gamma/tests/tests/Components/CardDialogNew/User.data.js b/frontend/gamma/tests/tests/Components/CardDialogNew/User.data.js
index 49abe46..ba60878 100644
--- a/frontend/gamma/tests/tests/Components/CardDialogNew/User.data.js
+++ b/frontend/gamma/tests/tests/Components/CardDialogNew/User.data.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26testData = { 24testData = {
27 25
28 //------------------------------------------------------------------------- 26 //-------------------------------------------------------------------------
29 27
30 'simpleLogin_001': { 28 'simpleLogin_001': {
31 'users': [ 29 'users': [
32 { 30 {
33 'username': "joe", 31 'username': "joe",
34 'passphrase': "eoj", 32 'passphrase': "eoj",
35 'version': "0.2", 33 'version': "0.2",
36 'connectionVersion':"0.2", 34 'connectionVersion':"0.2",
37 'records':{ 35 'records':{
38 'record 1': { 36 'record 1': {
39 'notes':"Some notes here", 37 'notes':"Some notes here",
40 'fields':[ 38 'fields':[
41 { 'name': "username", 'value': "joe", 'type': "text" }, 39 { 'name': "username", 'value': "joe", 'type': "text" },
42 { 'name': "password", 'value': "1234", 'type': "password"} 40 { 'name': "password", 'value': "1234", 'type': "password"}
43 ], 41 ],
44 'directLogins':{ 42 'directLogins':{
45 "record 1 direct login": { 43 "record 1 direct login": {
46 'configuration':"", 44 'configuration':"",
47 'bindings':[ 45 'bindings':[
48 ], 46 ],
49 'favicon':"http://www.example.com/favicon.ico" 47 'favicon':"http://www.example.com/favicon.ico"
50 } 48 }
51 } 49 }
52 } 50 }
53 }, 51 },
54 'otp':[ 52 'otp':[
55 "12345678 90abcdef 12345678 90abcdef", 53 "12345678 90abcdef 12345678 90abcdef",
56 "fedcba09 87654321 fedcba09 87654321" 54 "fedcba09 87654321 fedcba09 87654321"
57 ] 55 ]
58 } 56 }
59 ] 57 ]
60 }, 58 },
61 59
62 //------------------------------------------------------------------------- 60 //-------------------------------------------------------------------------
63 61
64 'joe_clipperz_offline_copy_data': { 62 'joe_clipperz_offline_copy_data': {
65 users:{ 63 users:{
66 'catchAllUser': { 64 'catchAllUser': {
67 __masterkey_test_value__: 'masterkey', 65 __masterkey_test_value__: 'masterkey',
68 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00', 66 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00',
69 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00' 67 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00'
70 }, 68 },
diff --git a/frontend/gamma/tests/tests/Components/CardDialogNew/cardDialogNew_test.js b/frontend/gamma/tests/tests/Components/CardDialogNew/cardDialogNew_test.js
index 60a2757..9eba347 100644
--- a/frontend/gamma/tests/tests/Components/CardDialogNew/cardDialogNew_test.js
+++ b/frontend/gamma/tests/tests/Components/CardDialogNew/cardDialogNew_test.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26Clipperz.Base.module('Clipperz.Tests.CardDialogNew'); 24Clipperz.Base.module('Clipperz.Tests.CardDialogNew');
27 25
28Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 26Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
29Clipperz.PM.Strings.Languages.initSetup(); 27Clipperz.PM.Strings.Languages.initSetup();
30 28
31Clipperz.Tests.CardDialogNew.Tester = function(args) { 29Clipperz.Tests.CardDialogNew.Tester = function(args) {
32 args = args || {}; 30 args = args || {};
33 31
34 Clipperz.Tests.CardDialogNew.Tester.superclass.constructor.call(this, args); 32 Clipperz.Tests.CardDialogNew.Tester.superclass.constructor.call(this, args);
35 this._user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return 'test';}}); 33 this._user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return 'test';}});
36 34
37 return this; 35 return this;
38}; 36};
39 37
40Clipperz.Base.extend(Clipperz.Tests.CardDialogNew.Tester, Object, { 38Clipperz.Base.extend(Clipperz.Tests.CardDialogNew.Tester, Object, {
41 39
42 'toString': function() { 40 'toString': function() {
43 return "Clipperz.Tests.CardDialogNew.Tester"; 41 return "Clipperz.Tests.CardDialogNew.Tester";
44 }, 42 },
45 43
46 //------------------------------------------------------------------------- 44 //-------------------------------------------------------------------------
47 45
48 'user': function () { 46 'user': function () {
49 return this._user; 47 return this._user;
50 }, 48 },
51 49
52 //------------------------------------------------------------------------- 50 //-------------------------------------------------------------------------
53 51
54 'run': function () { 52 'run': function () {
55 var deferredResult; 53 var deferredResult;
56 var proxy; 54 var proxy;
57 varcardDialogController; 55 varcardDialogController;
58 varcardDialogComponent; 56 varcardDialogComponent;
59 57
60 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false}); 58 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false});
61 59
62 deferredResult = new Clipperz.Async.Deferred("cardDialogNew_test.init", {trace:false}); 60 deferredResult = new Clipperz.Async.Deferred("cardDialogNew_test.init", {trace:false});
63 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['test_test_offline_copy_data']); 61 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['test_test_offline_copy_data']);
64 deferredResult.addMethod(this.user(), 'login'); 62 deferredResult.addMethod(this.user(), 'login');
65 // deferredResult.addMethod(this.user(), 'getRecord', '8280842f41162b673335b63860637e8472e8bbff0efa2bc78b0dbc5e09712e13'); 63 // deferredResult.addMethod(this.user(), 'getRecord', '8280842f41162b673335b63860637e8472e8bbff0efa2bc78b0dbc5e09712e13');
66 deferredResult.addMethod(this.user(), 'createNewRecord'); 64 deferredResult.addMethod(this.user(), 'createNewRecord');
67 deferredResult.addCallback(MochiKit.Base.bind(function (aRecord) { 65 deferredResult.addCallback(MochiKit.Base.bind(function (aRecord) {
68 cardDialogController = new Clipperz.PM.UI.Web.Controllers.CardDialogController({record:aRecord, delegate:this}); 66 cardDialogController = new Clipperz.PM.UI.Web.Controllers.CardDialogController({record:aRecord, delegate:this});
69 cardDialogController.run(); 67 cardDialogController.run();
70 }, this)); 68 }, this));
diff --git a/frontend/gamma/tests/tests/Components/CardDialogNew/index.html b/frontend/gamma/tests/tests/Components/CardDialogNew/index.html
index 64f9e4d..ff8c77f 100644
--- a/frontend/gamma/tests/tests/Components/CardDialogNew/index.html
+++ b/frontend/gamma/tests/tests/Components/CardDialogNew/index.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Card Dialog NEW - test</title> 26 <title>Card Dialog NEW - test</title>
29 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 27 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
30 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 28 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
31 29
32 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 30 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
33 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 31 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
34 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 32 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
35 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script>
36 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
40 38
41 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script>
46 44
47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
51 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
52 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> 50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
53 51
54 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script> 52 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script>
55 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 53 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
56 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script> 54 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script>
57 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script> 55 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script>
58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script> 56 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script>
59 57
60 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> 58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
61 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> 59 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
62 60
63 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script> 61 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script>
64 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script> 62 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script>
65 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script> 63 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script>
66 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script> 64 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script>
67 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script> 65 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script>
68 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script> 66 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script>
69 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script> 67 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script>
70 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script> 68 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script>
diff --git a/frontend/gamma/tests/tests/Components/FullApp/User.data.js b/frontend/gamma/tests/tests/Components/FullApp/User.data.js
index 4dfc81c..fb099c0 100644
--- a/frontend/gamma/tests/tests/Components/FullApp/User.data.js
+++ b/frontend/gamma/tests/tests/Components/FullApp/User.data.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26testData = { 24testData = {
27 25
28 //------------------------------------------------------------------------- 26 //-------------------------------------------------------------------------
29 27
30 'testData': { 28 'testData': {
31 users:{ 29 users:{
32 'catchAllUser': { 30 'catchAllUser': {
33 __masterkey_test_value__: 'masterkey', 31 __masterkey_test_value__: 'masterkey',
34 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00', 32 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00',
35 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00' 33 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00'
36 }, 34 },
37 35
38 /* tt/tt - empty, just created, account*/ 36 /* tt/tt - empty, just created, account*/
39 'afaadd70f647886043b9196c861dc04f5605baeab3812ea23707fcba08c4a54f': { 37 'afaadd70f647886043b9196c861dc04f5605baeab3812ea23707fcba08c4a54f': {
40 s: 'df781ec363a380a0bb171d7d4c226248259272a964f04fa2340c77ff84bbc594', 38 s: 'df781ec363a380a0bb171d7d4c226248259272a964f04fa2340c77ff84bbc594',
41 v: 'eca214d990ec971a61cd9c5082e62c2d241f8e1ec805a2c26b1d31612747bfb0', 39 v: 'eca214d990ec971a61cd9c5082e62c2d241f8e1ec805a2c26b1d31612747bfb0',
42 version: '0.2', 40 version: '0.2',
43 maxNumberOfRecords: '100', 41 maxNumberOfRecords: '100',
44 userDetails: '{"records":{"index":{},"data":"q/wNeY/xf7Sujn5CIxEYPRSF"},"directLogins":{"index":{},"data":"qcVwiiyOYeDHFZq5T06iF1Wp"},"preferences":{"data":"7ONKfKQk9GYGnlRxFgTgAd4J"},"oneTimePasswords":{"data":"GD66ZNSIqkRl1UxhwyrsSm5r"},"version":"0.1"}', 42 userDetails: '{"records":{"index":{},"data":"q/wNeY/xf7Sujn5CIxEYPRSF"},"directLogins":{"index":{},"data":"qcVwiiyOYeDHFZq5T06iF1Wp"},"preferences":{"data":"7ONKfKQk9GYGnlRxFgTgAd4J"},"oneTimePasswords":{"data":"GD66ZNSIqkRl1UxhwyrsSm5r"},"version":"0.1"}',
45 statistics: 'tfQF+BrjAQUWyiXWOMkWApmq', 43 statistics: 'tfQF+BrjAQUWyiXWOMkWApmq',
46 userDetailsVersion: '0.3', 44 userDetailsVersion: '0.3',
47 records: { 45 records: {
48 46
49 } 47 }
50 }, 48 },
51 49
52 /* tt/tt - account with "wrong" direct login*/ 50 /* tt/tt - account with "wrong" direct login*/
53 /* 'afaadd70f647886043b9196c861dc04f5605baeab3812ea23707fcba08c4a54f': { 51 /* 'afaadd70f647886043b9196c861dc04f5605baeab3812ea23707fcba08c4a54f': {
54 s: 'df781ec363a380a0bb171d7d4c226248259272a964f04fa2340c77ff84bbc594', 52 s: 'df781ec363a380a0bb171d7d4c226248259272a964f04fa2340c77ff84bbc594',
55 v: 'eca214d990ec971a61cd9c5082e62c2d241f8e1ec805a2c26b1d31612747bfb0', 53 v: 'eca214d990ec971a61cd9c5082e62c2d241f8e1ec805a2c26b1d31612747bfb0',
56 version: '0.2', 54 version: '0.2',
57 maxNumberOfRecords: '100', 55 maxNumberOfRecords: '100',
58 userDetails: '{"records":{"index":{"8bcad18cc9613d794ca052c02e91198f7d5b6e1b7d595f21b21ea53a72e56aab":"1"},"data":"/+RHG+JLrFhZLYga2H9hsPyugT5bbiPwmNgY/RqE2g90FXfsCOvJ6TnfHX6ufeVfJ5+jUq/mRhWMlKdIqROSBLRL5EbL7i881EyKMNE24zpzUWm9zN6HcATPO2iNvDjsZjv2dEP9QWtAabw4Hc7UB+39WQ=="},"directLogins":{"index":{"dd9c1f84d06d67fe1ca5826b52bf46e56407e7f9d87fb7b7b927831920955338":1},"data":"ZF6BZYAVIJi3xrCPs6XWHwZDveEonG/5WJVKwIXbCGa5fr1myopvpqYbWI09tPCCktlMKP/X/SiIyBxlq7Z953VpOHWx0AYqTpRnw8PfJ+0BJDEblBFCZ8ZZfkZXcfYmNoY7"},"preferences":{"data":"IpjYNIHTXtE/pZvR8TjotEnR"},"oneTimePasswords":{"data":"1ibPl0R6S/LGBFFyH9pio1Oo"},"version":"0.1"}', 56 userDetails: '{"records":{"index":{"8bcad18cc9613d794ca052c02e91198f7d5b6e1b7d595f21b21ea53a72e56aab":"1"},"data":"/+RHG+JLrFhZLYga2H9hsPyugT5bbiPwmNgY/RqE2g90FXfsCOvJ6TnfHX6ufeVfJ5+jUq/mRhWMlKdIqROSBLRL5EbL7i881EyKMNE24zpzUWm9zN6HcATPO2iNvDjsZjv2dEP9QWtAabw4Hc7UB+39WQ=="},"directLogins":{"index":{"dd9c1f84d06d67fe1ca5826b52bf46e56407e7f9d87fb7b7b927831920955338":1},"data":"ZF6BZYAVIJi3xrCPs6XWHwZDveEonG/5WJVKwIXbCGa5fr1myopvpqYbWI09tPCCktlMKP/X/SiIyBxlq7Z953VpOHWx0AYqTpRnw8PfJ+0BJDEblBFCZ8ZZfkZXcfYmNoY7"},"preferences":{"data":"IpjYNIHTXtE/pZvR8TjotEnR"},"oneTimePasswords":{"data":"1ibPl0R6S/LGBFFyH9pio1Oo"},"version":"0.1"}',
59 statistics: 'XhiWkdDyHzuviv5bdxOY/2Q5', 57 statistics: 'XhiWkdDyHzuviv5bdxOY/2Q5',
60 userDetailsVersion: '0.3', 58 userDetailsVersion: '0.3',
61 records: { 59 records: {
62 '8bcad18cc9613d794ca052c02e91198f7d5b6e1b7d595f21b21ea53a72e56aab': { 60 '8bcad18cc9613d794ca052c02e91198f7d5b6e1b7d595f21b21ea53a72e56aab': {
63 data: '93QXl+c+JmQo4WTl4rYLYb/oHehjntAroteeHd6HqrUiXYoi+02GYrYcKfvE5wgMWvOwvQ4kVdUv5ksa3gJaUzhrpY5GLM3EV3agEkQ6yuKwHgfmAQvES1c6tcw15lNTzGiZ7PHhBrW5I5H6Le0Mf10uW1DOyu6gFl+W5OarbBBGyQmRmASy+CW2l3/lY5pOFxUq3qlkwW/o4KrSiwKOFh3HDvxOQKwovm0v3puLu+NsuL5rz5blUIZpj+CsOmZUhtU5FC5s6iO2L1uj3w8+Yxu279p249H1bv1zxo1zSBpP507uuRH8dKOLsu7JI6PO+UC8PLqVhPU7fHhDhNleurE7AsUo6eHocG0DhxCAm3xeobm1K2iPd0iRprcuRXmwa8HWRDJHTItbQr9D+cnQTT7/DwneRdQzpMaVZHZcKqtAzz07jboy98plrigu03tV2MkXt2veIMLBofxxHqgZ0NJhcfrVta4FlJsrd1vO9RUkoHl+qPJqQZIVGZzoT0rdHS/nLd614EHJSfRYIl+drUEUchIidbRnMzvPTBo2s6bVfUPcQksVop4E85wMo15ah2BHzUe4vjkmM+Ki8ecUVH8jRR5fmZhCGpBFML5U7o+rERYABFuwwRC9FfCXMtmClHc2LypP+iu+lI/VycdHg/m8skQVeCDBv892vqehUs1CpeVAxMtYOJcFtm6roQNPxJe1EI/j4PAi3SEYPCFev1F7u1g4bw4cG5jCGJx6U3qTTYMX5A06dHf4iSSOUeCsrP5U+VJY0KLhU3E66DzOxNIrIyYN6iOJxKCbhH7ILfGdWAV3MlZZOpVoSIqiR7oZo2PwovtudF5tOy9lhz7SEFYLvuQy8r4mqFC7qMVnXJRrBPDZcQDTdXLG33YV6dWX17QpGrpyvPhX5/UDv8E7zc8PdO1YfJmzL1rpArlIXF1EOsLa6BqjQp5bkIlHKugQMjnn3tf4sYK0OhPskbKidfNm59NedQODEoUr5NGwmjSAqTCokt1D7q0K3vMK', 61 data: '93QXl+c+JmQo4WTl4rYLYb/oHehjntAroteeHd6HqrUiXYoi+02GYrYcKfvE5wgMWvOwvQ4kVdUv5ksa3gJaUzhrpY5GLM3EV3agEkQ6yuKwHgfmAQvES1c6tcw15lNTzGiZ7PHhBrW5I5H6Le0Mf10uW1DOyu6gFl+W5OarbBBGyQmRmASy+CW2l3/lY5pOFxUq3qlkwW/o4KrSiwKOFh3HDvxOQKwovm0v3puLu+NsuL5rz5blUIZpj+CsOmZUhtU5FC5s6iO2L1uj3w8+Yxu279p249H1bv1zxo1zSBpP507uuRH8dKOLsu7JI6PO+UC8PLqVhPU7fHhDhNleurE7AsUo6eHocG0DhxCAm3xeobm1K2iPd0iRprcuRXmwa8HWRDJHTItbQr9D+cnQTT7/DwneRdQzpMaVZHZcKqtAzz07jboy98plrigu03tV2MkXt2veIMLBofxxHqgZ0NJhcfrVta4FlJsrd1vO9RUkoHl+qPJqQZIVGZzoT0rdHS/nLd614EHJSfRYIl+drUEUchIidbRnMzvPTBo2s6bVfUPcQksVop4E85wMo15ah2BHzUe4vjkmM+Ki8ecUVH8jRR5fmZhCGpBFML5U7o+rERYABFuwwRC9FfCXMtmClHc2LypP+iu+lI/VycdHg/m8skQVeCDBv892vqehUs1CpeVAxMtYOJcFtm6roQNPxJe1EI/j4PAi3SEYPCFev1F7u1g4bw4cG5jCGJx6U3qTTYMX5A06dHf4iSSOUeCsrP5U+VJY0KLhU3E66DzOxNIrIyYN6iOJxKCbhH7ILfGdWAV3MlZZOpVoSIqiR7oZo2PwovtudF5tOy9lhz7SEFYLvuQy8r4mqFC7qMVnXJRrBPDZcQDTdXLG33YV6dWX17QpGrpyvPhX5/UDv8E7zc8PdO1YfJmzL1rpArlIXF1EOsLa6BqjQp5bkIlHKugQMjnn3tf4sYK0OhPskbKidfNm59NedQODEoUr5NGwmjSAqTCokt1D7q0K3vMK',
64 version: '0.3', 62 version: '0.3',
65 creationDate: 'Wed Jan 20 16:53:47 CET 2010', 63 creationDate: 'Wed Jan 20 16:53:47 CET 2010',
66 updateDate: 'Wed Jan 20 16:53:47 CET 2010', 64 updateDate: 'Wed Jan 20 16:53:47 CET 2010',
67 accessDate: 'Wed Jan 20 16:53:47 CET 2010', 65 accessDate: 'Wed Jan 20 16:53:47 CET 2010',
68 currentVersion: '79047c5ca148b2915014c44d75874cfedf3caee20cd9f97a87ba2a291ccec741', 66 currentVersion: '79047c5ca148b2915014c44d75874cfedf3caee20cd9f97a87ba2a291ccec741',
69 versions: { 67 versions: {
70 '79047c5ca148b2915014c44d75874cfedf3caee20cd9f97a87ba2a291ccec741': { 68 '79047c5ca148b2915014c44d75874cfedf3caee20cd9f97a87ba2a291ccec741': {
diff --git a/frontend/gamma/tests/tests/Components/FullApp/index.html b/frontend/gamma/tests/tests/Components/FullApp/index.html
index fab110b..f0e6be3 100644
--- a/frontend/gamma/tests/tests/Components/FullApp/index.html
+++ b/frontend/gamma/tests/tests/Components/FullApp/index.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>FullApp TEST - WEB</title> 26 <title>FullApp TEST - WEB</title>
29 <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 27 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
30 28
31 29
32 <link rel="stylesheet" type="text/css" href="../../../../css/web.css" /> 30 <link rel="stylesheet" type="text/css" href="../../../../css/web.css" />
33 31
34 <link rel="shortcut icon" href="./clipperz.ico" /> 32 <link rel="shortcut icon" href="./clipperz.ico" />
35 33
36 <meta name="description" content="Login to your web accounts with just one click. Never type a password again! Use multiple complex passwords and forget them. A password manager that enhances your online security." /> 34 <meta name="description" content="Login to your web accounts with just one click. Never type a password again! Use multiple complex passwords and forget them. A password manager that enhances your online security." />
37 <meta name="keywords" content="password manager,gestor de contraseñas,gerenciador de senhas,Kennwortmanager,passwords,security,privacy,cryptography" /> 35 <meta name="keywords" content="password manager,gestor de contraseñas,gerenciador de senhas,Kennwortmanager,passwords,security,privacy,cryptography" />
38<script> 36<script>
39 Clipperz_IEisBroken = false; 37 Clipperz_IEisBroken = false;
40 Clipperz_normalizedNewLine = '\n'; 38 Clipperz_normalizedNewLine = '\n';
41 Clipperz_dumpUrl = "/dump/"; 39 Clipperz_dumpUrl = "/dump/";
42 Clipperz_version = ">>> hg:28fe087a9316 <<<"; 40 Clipperz_version = ">>> hg:28fe087a9316 <<<";
43</script> 41</script>
44 42
45<!--[if IE]><script> 43<!--[if IE]><script>
46Clipperz_IEisBroken = true; 44Clipperz_IEisBroken = true;
47Clipperz_normalizedNewLine = '\x0d\x0a'; 45Clipperz_normalizedNewLine = '\x0d\x0a';
48</script><![endif]--> 46</script><![endif]-->
49 47
50 48
51 <script type='text/javascript' src='../../../../js/Bookmarklet.js'></script> 49 <script type='text/javascript' src='../../../../js/Bookmarklet.js'></script>
52 <script type='text/javascript' src='../../../../js/Bookmarklet_IE.js'></script> 50 <script type='text/javascript' src='../../../../js/Bookmarklet_IE.js'></script>
53 51
54 <script type='text/javascript' src='../../../../js/MochiKit/Base.js'></script> 52 <script type='text/javascript' src='../../../../js/MochiKit/Base.js'></script>
55 <script type='text/javascript' src='../../../../js/MochiKit/Iter.js'></script> 53 <script type='text/javascript' src='../../../../js/MochiKit/Iter.js'></script>
56 <script type='text/javascript' src='../../../../js/MochiKit/Logging.js'></script> 54 <script type='text/javascript' src='../../../../js/MochiKit/Logging.js'></script>
57 <script type='text/javascript' src='../../../../js/MochiKit/Format.js'></script> 55 <script type='text/javascript' src='../../../../js/MochiKit/Format.js'></script>
58 <script type='text/javascript' src='../../../../js/MochiKit/Async.js'></script> 56 <script type='text/javascript' src='../../../../js/MochiKit/Async.js'></script>
59 <script type='text/javascript' src='../../../../js/MochiKit/DOM.js'></script> 57 <script type='text/javascript' src='../../../../js/MochiKit/DOM.js'></script>
60 <script type='text/javascript' src='../../../../js/MochiKit/Style.js'></script> 58 <script type='text/javascript' src='../../../../js/MochiKit/Style.js'></script>
61 <script type='text/javascript' src='../../../../js/MochiKit/LoggingPane.js'></script> 59 <script type='text/javascript' src='../../../../js/MochiKit/LoggingPane.js'></script>
62 <script type='text/javascript' src='../../../../js/MochiKit/Color.js'></script> 60 <script type='text/javascript' src='../../../../js/MochiKit/Color.js'></script>
63 <script type='text/javascript' src='../../../../js/MochiKit/Signal.js'></script> 61 <script type='text/javascript' src='../../../../js/MochiKit/Signal.js'></script>
64 <script type='text/javascript' src='../../../../js/MochiKit/Position.js'></script> 62 <script type='text/javascript' src='../../../../js/MochiKit/Position.js'></script>
65 <script type='text/javascript' src='../../../../js/MochiKit/Selector.js'></script> 63 <script type='text/javascript' src='../../../../js/MochiKit/Selector.js'></script>
66 <script type='text/javascript' src='../../../../js/MochiKit/Visual.js'></script> 64 <script type='text/javascript' src='../../../../js/MochiKit/Visual.js'></script>
67 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 65 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
68 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 66 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
69 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 67 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
70 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 68 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
diff --git a/frontend/gamma/tests/tests/Components/FullApp/mobile.index.html b/frontend/gamma/tests/tests/Components/FullApp/mobile.index.html
index 818e3d6..53fbcf6 100644
--- a/frontend/gamma/tests/tests/Components/FullApp/mobile.index.html
+++ b/frontend/gamma/tests/tests/Components/FullApp/mobile.index.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<!doctype html> 24<!doctype html>
27<!-- Conditional comment for mobile ie7 blogs.msdn.com/b/iemobile/ --> 25<!-- Conditional comment for mobile ie7 blogs.msdn.com/b/iemobile/ -->
28<!--[if IEMobile 7 ]> <html class="no-js iem7" lang="en"> <![endif]--> 26<!--[if IEMobile 7 ]> <html class="no-js iem7" lang="en"> <![endif]-->
29<!--[if (gt IEMobile 7)|!(IEMobile)]><!--> <html class="no-js" lang="en" manifest="mobile.appcache"> <!--<![endif]--> 27<!--[if (gt IEMobile 7)|!(IEMobile)]><!--> <html class="no-js" lang="en" manifest="mobile.appcache"> <!--<![endif]-->
30<head> 28<head>
31 <title>FullApp TEST - MOBILE</title> 29 <title>FullApp TEST - MOBILE</title>
32 <meta charset="utf-8"> 30 <meta charset="utf-8">
33 31
34 <meta name="HandheldFriendly" content="True"> 32 <meta name="HandheldFriendly" content="True">
35 <meta name="MobileOptimized" content="320"> 33 <meta name="MobileOptimized" content="320">
36 <meta name="viewport" content="width=device-width"> 34 <meta name="viewport" content="width=device-width">
37 35
38<!-- link rel="apple-touch-icon-precomposed" ... --> 36<!-- link rel="apple-touch-icon-precomposed" ... -->
39 <link rel="apple-touch-icon" sizes="114x114" href="data:image/png;charset=utf-8;base64,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"> 37 <link rel="apple-touch-icon" sizes="114x114" href="data:image/png;charset=utf-8;base64,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">
40 <link rel="apple-touch-icon" sizes="72x72" href="data:image/png;charset=utf-8;base64,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"> 38 <link rel="apple-touch-icon" sizes="72x72" href="data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAIAAADajyQQAAAD8GlDQ1BJQ0MgUHJvZmlsZQAAKJGNVd1v21QUP4lvXKQWP6Cxjg4Vi69VU1u5GxqtxgZJk6XpQhq5zdgqpMl1bhpT1za2021Vn/YCbwz4A4CyBx6QeEIaDMT2su0BtElTQRXVJKQ9dNpAaJP2gqpwrq9Tu13GuJGvfznndz7v0TVAx1ea45hJGWDe8l01n5GPn5iWO1YhCc9BJ/RAp6Z7TrpcLgIuxoVH1sNfIcHeNwfa6/9zdVappwMknkJsVz19HvFpgJSpO64PIN5G+fAp30Hc8TziHS4miFhheJbjLMMzHB8POFPqKGKWi6TXtSriJcT9MzH5bAzzHIK1I08t6hq6zHpRdu2aYdJYuk9Q/881bzZa8Xrx6fLmJo/iu4/VXnfH1BB/rmu5ScQvI77m+BkmfxXxvcZcJY14L0DymZp7pML5yTcW61PvIN6JuGr4halQvmjNlCa4bXJ5zj6qhpxrujeKPYMXEd+q00KR5yNAlWZzrF+Ie+uNsdC/MO4tTOZafhbroyXuR3Df08bLiHsQf+ja6gTPWVimZl7l/oUrjl8OcxDWLbNU5D6JRL2gxkDu16fGuC054OMhclsyXTOOFEL+kmMGs4i5kfNuQ62EnBuam8tzP+Q+tSqhz9SuqpZlvR1EfBiOJTSgYMMM7jpYsAEyqJCHDL4dcFFTAwNMlFDUUpQYiadhDmXteeWAw3HEmA2s15k1RmnP4RHuhBybdBOF7MfnICmSQ2SYjIBM3iRvkcMki9IRcnDTthyLz2Ld2fTzPjTQK+Mdg8y5nkZfFO+se9LQr3/09xZr+5GcaSufeAfAww60mAPx+q8u/bAr8rFCLrx7s+vqEkw8qb+p26n11Aruq6m1iJH6PbWGv1VIY25mkNE8PkaQhxfLIF7DZXx80HD/A3l2jLclYs061xNpWCfoB6WHJTjbH0mV35Q/lRXlC+W8cndbl9t2SfhU+Fb4UfhO+F74GWThknBZ+Em4InwjXIyd1ePnY/Psg3pb1TJNu15TMKWMtFt6ScpKL0ivSMXIn9QtDUlj0h7U7N48t3i8eC0GnMC91dX2sTivgloDTgUVeEGHLTizbf5Da9JLhkhh29QOs1luMcScmBXTIIt7xRFxSBxnuJWfuAd1I7jntkyd/pgKaIwVr3MgmDo2q8x6IdB5QH162mcX7ajtnHGN2bov71OU1+U0fqqoXLD0wX5ZM005UHmySz3qLtDqILDvIL+iH6jB9y2x83ok898GOPQX3lk3Itl0A+BrD6D7tUjWh3fis58BXDigN9yF8M5PJH4B8Gr79/F/XRm8m241mw/wvur4BGDj42bzn+Vmc+NL9L8GcMn8F1kAcXjEKMJAAAAACXBIWXMAAAsTAAALEwEAmpwYAAABbmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNC40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgogICAgICAgICA8ZGM6c3ViamVjdD4KICAgICAgICAgICAgPHJkZjpCYWcvPgogICAgICAgICA8L2RjOnN1YmplY3Q+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgrlPw1BAAAPZklEQVRoge2aeXAcVX7Hv+9199ySRhrdl3XYGNvY2LLB2OCLw0ZlYwfIbrFU7QJbSyoklWQJqV0I2QuySW2ygTLU7lKV3SQUBSHcXm5zLGCDMb5k2eBLsmTJts7RaEaa6enpfu+XP+bQSNYxM8h/UOVfdbVaM/3e/D79O/r3ft3AJbkkl+SS5CBs1mdUVdVmsxFRRj/PmBDCMIzZV2PWZ7z//vvvvffezLjAGNuz57O77rpr1tWYfbDKysp58+aBDCAdjpLeQWluQmCOnp7zs64DLgaYEBIAwn4wIGW4+AFL52IgCU++FT9/tmX2wZJCIAIoaTZK7ZKfMEAiQ5fNXi4aGIkEGJBGRUmjMQCgbypY3MfSqDDBaDQ+DmdTLj4YpRstGWnxPyS/gWBSgGQyfyTZxpkLgIS8WN54EcASWV2AZMIDJwRbSohAFkkx+zpcFLAEggSJiVSp0GIAMUBCfIPA4kIiLTGmAix1W4vvJaRF9E0BIwnIiWDpVGN4EvKbYzEiCVjjwMbyPo2PsosIxqf6QlGUhx9+eNOmm202W1YzkpSJlCAFyALFIS2QlfZJ/F8LUuQAVlZa/Bd3f+e3j/2zw26f6pwpLbbg8ssfffRRxmj//oPPPvvsyy+/3N3dnREYScgkzFhhlRZsSN3cJKSZOZiiKCtXLL3jti3NN62vrS4XQj793Et797dkB7Zt2zbGGHT/imXzV6z494d+/A9vvPn2M888s/vTzyzLmpZMQiRdMY40eaQBJDK0WGVF2ZZN13/71s0rli50OzUSMTL8XM3bevOG7MA0Tdu27RYIHWAwdMhQaR77/t3f+t6dt3+xv+XZ555/bcfr53t6JudKWMxKxpgcD4a02krQtOle09RVVzXdcfuWjddfV1Pu42RARhTBmaKBqRE9tHH96l8+9lQkomcKtvTKJUsWL6RYJFn9cEgLo36VxOqmuatX/stDP/rh62++++xzz+/Zu0/K8esOmXLF8WATUz8ASdIiOYn9a6oqtjbf8Ofbbl62eL7bRmSFFXOAKxxcBQBpgXHI6Ny6ypVNV/xp975MwW7dttXu0Eg3wBhIJoo6xkAMsTD0QHWBct89t979nT/7fP/h555/+fW33unrH4iPpbgrSgkIECULQprEbheke5tNu3bl8jtu23zT+lVVpflcjDLRp5gAUwAOSWAA42AErthUkLBu2bg2UzCn07G5+SYyIozxhFpx/RI3KALjkCbC/Q6SG66q33DNzzoe+Ksdb73/vy+88sWBQ7GYQXGLQY5dlNQ84ywmSFqWGQNQV1O1tfmG27duXLqwwaXFEAsqeoBxDsZBPPGj4CAC5/EiU1XViD66YXVTQb4nGBqdQDFJM2fdmmt3vvmKyiRXtXhGTgTMuIPUZkGaYArs+SMRfLj7gMvlWrNysV0/zSAmBxvDE4ZSfLhDP3Tkq03rr6kqdnJrmFmjnMkEBmMATx6nNiVxwNVwaNgQ9u/+7SNvfbBnAoVyIdj9f3PftauWA5whXkak9EsaIX4wziAWYiEbhS5vKKuuKDWMmJ1CbJzR5JgNEXdOCRK6pfp8JdcsKilQ/KrZz6XOkPKR1FWQk+QeEABOlmkK05JvXgA20RXz8zwbb1grYoZic4EIXAWpYAJkQjAQgRGgAhxQoAhIC5JAIrEqjoXsckiVBCYTqxJMMFpqkUYAOWmImwFuCYADDAQwCWIAS5gLDOCgpLkgAQWQIAUgVdXIGr52+cISn3fAPzwd2LWrrm6sq4HqBlMQ7cFoB0InED6DyFkYfogoIMFUKE5o+bAXw1EGZyXsxVA94BokgQmFiXEWnjzSCIDKkqk/DhzPT4wB8QOeIGQKiCWdkBJ7KcFVmyLLfZ51Kxe/9Nau6cBuvaVZFSF27LcY/Byh44gOIL2LlNY4G/uEc9gK4apBwSIULIKnDooT0oSUicVLeuIZh5c+Ufw/lsADA+MJNmKIRx1JMAUsbQ/YHZoejW5ev3w6MF9R4YZ1a62uN2yHfwWedIRJwnCCSBh+RP3wt0ABnNUoaoJvJVy1AAeZyTaBHJ/9k5UxJS9QojPHxlyRsYQTTnBFkuAKQJCkqiqT+lWLG6vLfWd7/Smdxmm9eeOGu++8lZ/4tRLtgpJN/5slYgEAzBCCJzDwCUZOQdFgLwZTIM1kHkpPIakDMeariWwhJyaPSZbhBBA4JyuqcKWtq6/1+JnJwf7xgb++otahtW1nViyhaw6SGCih98G/F6ETUD2wlySSJyXTYzoV5LiNkjyUyp+pe3qKjRLmBRSIcDiiqeqr7+9LNVDGwCoryv71p3/vdLp1T5O0FTER4WYAMr2vlBNhdAhDX0DvgaMcqgeUMl2a0cZtNA57YgEd14fAQMKKRfVQMDgyEuFczS/w/vGDA6HRyEQwAuvu9RPXiioXuao3WKWb9LyrheblIsytYO6EcbxIL4YPgqtwVgISUqTdHi+w21iymZhFAUlSGFEjFIoEQ0bEwGhMPXEu8uIHRx9/+t22zm6RTHWTaFpbW7N+zaotN629aukin9dDxrAc/lIL7LGH9qrRM8mCLXvCuGLeJahshuKGjE2+lkFaYoznRsbBGBEME+EoMyyFuMMQakfv6CcH2nbubmn58mQ0Er7wek4pc+bM2bBm5eYbr1u+eH5RgVtGhyh4zBbcax/ZrxndORJKwFmG6m1wlCXYJrSx4t3vRFYESUQtHjFUQ9iIOw2hdfSN7jrYvnNXS8uXJ/ULeDICS0l9Xd31a1c2X79q2cK5hXkOGR2i0HF7aJ8jfEiLnR3L1xkKAaoHVVvgrhtvt/g8BMR5lHDMZggHKa6YtHX2hXcdat+5q6Xl6KlIZGLJmyNYShoa6m9Ys/Lm9VdfuaDO67JJYwihE/bRA85Iq2b2Ahk/ECJAsaOiGZ6GJBtARCSjljoasxvSCcVjSNuZ/vDuQ6d37j586OjJSHhmnhzBUqMaG+tvXHv1xjXLl1xWY1ekjI24w3t9g08zZNyZIUCxoeJmuGpBJkBGTPaES2LSAdV1zq/vaul479PWg60nsuIZUzGHMWmj+dyG+id+8v3FjcVFvb9xRVqzm48AxYHKZthLQCaR7B0pCFq+R/7w8WvvfaFn4G/TyJTtt8w0kw0V7sYqb57/1aypADBARNH3AcwASDCIUteghwc2LPFJc5I2RlYycyE4jTTWlj31i78s58cKAy8yltNDEwYIA+YwXNUgwbmwIVxWUq1ptt0tnV9Ht9zBnA7bkz+5Z3EN9w38XpHR3J2aAeYIGOAohrRUxYSINM6p7+4Lnujyzzx8Cskd7MEfbL5twxXegf+2W71f93URBhh+2IvA7SDh0KLCkovm1u850j04nKNP5gi2Zd2SB3+wOT/4Rn60ZXZegiGCNQJnaXyN49TCgOOy2vKd+zqNWC7N/VzA5taWbH/ozlJ85Qu/k3loCdj4NDcDBlg6VBtUF8jiTNh52OUsLMxzfnToXA7hmzWY22nb/uNvL6qSpaEXFGT6qpAJdydvdlG/imldS4ThKIz3eTTVZEKvKC0LRWKtpwPZ6pk12IP33LB1zVxf6EWHHMx81DmsHuX1unR7WSebqkBhgLCgKFDt8XW30x6NGWJ+bXnr6aHz/uyCLTuwW9YueOC7673h9wvE8cxHBajunFx2rEcW5nmkMPN4/5SnMkAasLsBCzBBwmMPGzF1YW3xR4f7R6NZBFsWYJfVFv/HD28p5SdKzV2Z54sYuXuVNe8cCv3oiZ0rFjd487x28jv4lFU5pAWFQwEoBjI5M12qDririx0fHh4SMtNwyxTM7bQ9fn/zwgqzwnhbgZnhKICdFU0doeIHf/fxoD9w9Exw0zVzTWEvVHsUNsXlJwAmNAHoIB1kaFqEU7TAXcgg953KtM7KFOzB761uXllVFn3HgeGZz07KoFUziEX/9sKxfUc6AQwFgkHTft0V5dEYFWlThCgDpIBmADHABGKgmMsxahiyrtR7pt/o6Itl8tMZgW1dM/fvvrW82PzMi84MkQBEpeucWPbeEf3J/9tPiWYbjnX0V1dX1Zc6mYx4tKkdMt78S+sJ5Dkjo2G2oMr2+cloIDyzQ84MNr+28Ff3rS3XTpfjYIZIAAisS1/QNVL00H/uD46kAZBsOeW/rqleZZSvhWzKFA9H4/3MtEYb5/DYo4ZhNpbKD4+SOVMemQGsKN/x6/tWNZbyGuxS2LRPaMer1R+tGBR1j+3o3nuka8KX0Wi0rZ9ubCrRddPnHOFT3eLjqqWMJqHZSVjCwajIjc/bMH0emWHZUlNVXl9fZwrZaVxhkCtDKt109hmVHx+L7Pj45KSnHDza/oePwjq5u4Y9k1dk8bZVshMXN93AALp6wKDNn9focjmm12IGi/UNDu/+Knj5ZY3F+a6BSL6dR51qZPohBNYeqj4fKXj4f04GQlNG0dH2wOXzqnyOIYdiumyTXfzUNWeQEm1nWVs3FK1gZ0f9L57vHw7OkB5njrFBf+CdzzudhVULawuGIg5T8nxtZMoSkeH8aKE/VvzE26E9rWenmVZK68gZa/0yr9ADPjfUCxVJNuDCOo62YzCAmK36N7t9v/tje1SfOutkDgbANGOfHmzrDLmaFlSQwJDuyNMi2oVxzzBq2LpCRZ+etm1/pZ3kDL2dkdFIb9h33XyuR/SS/AtckgMcvYM40gZL2E4bc3/2qvnJgdPI7N2rLCqP9jM9H3852tDQUFFAvUFF5ZbHNu6WIsFODrr6Iu5/es4fCM58UQF0ng8VlNQ1FoQYiQJPWhrksAROdqOtG4rN+/aZukdeOH+uZyBzbbOrFYOh0M5958hVs7jOMRzS9RgrcJg8HgwMXQHmjypP/Un7tHXqanCiUGuH3rRwjt30e12w2xJUoTAOn4J/GIa95snPvP/1VnvMmCG2J0jW1b0U5v4vu44P5l85v1QVff1By20nhw0hHZ1+tre7ePsOv8zm9SjLjB3vt61b6I0EQxU+cAVn+3GkHZLsp2Lzfr7D2HO4M4uOZVJyXEF3nx/88IhZOWderVfvHdQJOB/AQNT78xeFfzgjJ0yXoeGRsFK+vMqK6sbAMNrPQXEWvdE555cvnevtz2JxlC659zwikfAHB/xh27wr69wjgYAg7fefeT85nKMeJ7tDNXPqy9WhkTBF7HO278575t02M5Z7E+5rtd9A4uip3pbeoqUL6joGlcd3DMjJ3h/KbCrZ2m2uaarrMXw/fS2y7+iZHNxv9sVbWFhWUvT156muLPN48r7+PJfkklySiy7/D8RU38I8pVv5AAAAAElFTkSuQmCCCg==">
41 <link rel="apple-touch-icon" href="data:image/png;charset=utf-8;base64,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"> 39 <link rel="apple-touch-icon" href="data:image/png;charset=utf-8;base64,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">
42 <link rel="shortcut icon" href="data:image/png;charset=utf-8;base64,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"> 40 <link rel="shortcut icon" href="data:image/png;charset=utf-8;base64,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">
43 41
44 <meta http-equiv="cleartype" content="on"> 42 <meta http-equiv="cleartype" content="on">
45 <meta name="apple-mobile-web-app-capable" content="yes"> 43 <meta name="apple-mobile-web-app-capable" content="yes">
46 44
47 <link rel="stylesheet" type="text/css" href="../../../../css/mobile.css" /> 45 <link rel="stylesheet" type="text/css" href="../../../../css/mobile.css" />
48 <!-- link rel="stylesheet" type="text/css" href="../../../../css/jqtouch.css" / --> 46 <!-- link rel="stylesheet" type="text/css" href="../../../../css/jqtouch.css" / -->
49 <!-- link rel="apple-touch-startup-image" href="data:image/png;charset=utf-8;base64,iVBORw0K...ggo=" --> 47 <!-- link rel="apple-touch-startup-image" href="data:image/png;charset=utf-8;base64,iVBORw0K...ggo=" -->
50 48
51<script> 49<script>
52 Clipperz_IEisBroken = false; 50 Clipperz_IEisBroken = false;
53 Clipperz_normalizedNewLine = '\n'; 51 Clipperz_normalizedNewLine = '\n';
54 Clipperz_dumpUrl = "/dump/"; 52 Clipperz_dumpUrl = "/dump/";
55 'use strict'; 53 'use strict';
56 54
57 if (typeof(MochiKit) == 'undefined') { 55 if (typeof(MochiKit) == 'undefined') {
58 MochiKit = {}; 56 MochiKit = {};
59 } 57 }
60 MochiKit['__export__'] = false; 58 MochiKit['__export__'] = false;
61</script> 59</script>
62 <!-- Zepto.js modules: polyfill zepto event detect fx ajax form apple-touch-icon--> 60 <!-- Zepto.js modules: polyfill zepto event detect fx ajax form apple-touch-icon-->
63 <script type='text/javascript' src='../../../../js/Zepto/polyfill.js'></script> 61 <script type='text/javascript' src='../../../../js/Zepto/polyfill.js'></script>
64 <script type='text/javascript' src='../../../../js/Zepto/zepto.js'></script> 62 <script type='text/javascript' src='../../../../js/Zepto/zepto.js'></script>
65 <script type='text/javascript' src='../../../../js/Zepto/event.js'></script> 63 <script type='text/javascript' src='../../../../js/Zepto/event.js'></script>
66 <script type='text/javascript' src='../../../../js/Zepto/detect.js'></script> 64 <script type='text/javascript' src='../../../../js/Zepto/detect.js'></script>
67 <script type='text/javascript' src='../../../../js/Zepto/fx.js'></script> 65 <script type='text/javascript' src='../../../../js/Zepto/fx.js'></script>
68 <script type='text/javascript' src='../../../../js/Zepto/ajax.js'></script> 66 <script type='text/javascript' src='../../../../js/Zepto/ajax.js'></script>
69 <script type='text/javascript' src='../../../../js/Zepto/form.js'></script> 67 <script type='text/javascript' src='../../../../js/Zepto/form.js'></script>
70 <script type='text/javascript' src='../../../../js/Zepto/touch.js'></script> 68 <script type='text/javascript' src='../../../../js/Zepto/touch.js'></script>
diff --git a/frontend/gamma/tests/tests/Components/GridLayout/GridLayout_test.js b/frontend/gamma/tests/tests/Components/GridLayout/GridLayout_test.js
index 15244b6..fcb8c1e 100644
--- a/frontend/gamma/tests/tests/Components/GridLayout/GridLayout_test.js
+++ b/frontend/gamma/tests/tests/Components/GridLayout/GridLayout_test.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26Clipperz.Base.module('Clipperz.Tests.GridLayout'); 24Clipperz.Base.module('Clipperz.Tests.GridLayout');
27 25
28Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 26Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
29Clipperz.PM.Strings.Languages.initSetup(); 27Clipperz.PM.Strings.Languages.initSetup();
30 28
31Clipperz.Tests.GridLayout.Tester = function(args) { 29Clipperz.Tests.GridLayout.Tester = function(args) {
32 args = args || {}; 30 args = args || {};
33 31
34 Clipperz.Tests.GridLayout.Tester.superclass.constructor.call(this, args); 32 Clipperz.Tests.GridLayout.Tester.superclass.constructor.call(this, args);
35 //#this._user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return 'test';}}); 33 //#this._user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return 'test';}});
36 this._user = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}}); 34 this._user = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}});
37 35
38 return this; 36 return this;
39}; 37};
40 38
41Clipperz.Base.extend(Clipperz.Tests.GridLayout.Tester, Object, { 39Clipperz.Base.extend(Clipperz.Tests.GridLayout.Tester, Object, {
42 40
43 'toString': function() { 41 'toString': function() {
44 return "Clipperz.Tests.GridLayout.Tester"; 42 return "Clipperz.Tests.GridLayout.Tester";
45 }, 43 },
46 44
47 //------------------------------------------------------------------------- 45 //-------------------------------------------------------------------------
48 46
49 'user': function () { 47 'user': function () {
50 return this._user; 48 return this._user;
51 }, 49 },
52 50
53 //------------------------------------------------------------------------- 51 //-------------------------------------------------------------------------
54 52
55 'run': function () { 53 'run': function () {
56 var deferredResult; 54 var deferredResult;
57 var proxy; 55 var proxy;
58 varcardDialogController; 56 varcardDialogController;
59 varcardDialogComponent; 57 varcardDialogComponent;
60 varcomponent; 58 varcomponent;
61 varfilterController; 59 varfilterController;
62 var cardsController; 60 var cardsController;
63 61
64 filterController = new Clipperz.PM.UI.Web.Controllers.FilterController(); 62 filterController = new Clipperz.PM.UI.Web.Controllers.FilterController();
65 cardsController = new Clipperz.PM.UI.Web.Controllers.CardsController({'filterController':filterController}); 63 cardsController = new Clipperz.PM.UI.Web.Controllers.CardsController({'filterController':filterController});
66 64
67 component = new Clipperz.Tests.GridLayout.TestPageComponent({element:MochiKit.DOM.getElement('component')}); 65 component = new Clipperz.Tests.GridLayout.TestPageComponent({element:MochiKit.DOM.getElement('component')});
68 66
69 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false}); 67 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false});
70 68
diff --git a/frontend/gamma/tests/tests/Components/GridLayout/TestPageComponent.js b/frontend/gamma/tests/tests/Components/GridLayout/TestPageComponent.js
index a066001..f9bb5da 100644
--- a/frontend/gamma/tests/tests/Components/GridLayout/TestPageComponent.js
+++ b/frontend/gamma/tests/tests/Components/GridLayout/TestPageComponent.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26Clipperz.Base.module('Clipperz.Tests.GridLayout'); 24Clipperz.Base.module('Clipperz.Tests.GridLayout');
27 25
28Clipperz.Tests.GridLayout.TestPageComponent = function(args) { 26Clipperz.Tests.GridLayout.TestPageComponent = function(args) {
29 args = args || {}; 27 args = args || {};
30 Clipperz.Tests.GridLayout.TestPageComponent.superclass.constructor.call(this, args); 28 Clipperz.Tests.GridLayout.TestPageComponent.superclass.constructor.call(this, args);
31 29
32 this._element = args.element || null; 30 this._element = args.element || null;
33 31
34 this._slots = { 32 this._slots = {
35 'cardList' : this.getId('cardList'), 33 'cardList' : this.getId('cardList'),
36 'cardGrid' : this.getId('cardGrid') 34 'cardGrid' : this.getId('cardGrid')
37 }; 35 };
38 36
39 this.render(); 37 this.render();
40 38
41 39
42 return this; 40 return this;
43} 41}
44 42
45//============================================================================= 43//=============================================================================
46 44
47Clipperz.Base.extend(Clipperz.Tests.GridLayout.TestPageComponent, Clipperz.PM.UI.Common.Components.BaseComponent, { 45Clipperz.Base.extend(Clipperz.Tests.GridLayout.TestPageComponent, Clipperz.PM.UI.Common.Components.BaseComponent, {
48 46
49 //------------------------------------------------------------------------- 47 //-------------------------------------------------------------------------
50 48
51 'toString': function () { 49 'toString': function () {
52 return "Clipperz.Tests.GridLayout.TestPageComponent component"; 50 return "Clipperz.Tests.GridLayout.TestPageComponent component";
53 }, 51 },
54 52
55 //------------------------------------------------------------------------- 53 //-------------------------------------------------------------------------
56 54
57 'renderSelf': function(/*aContainer, aPosition*/) { 55 'renderSelf': function(/*aContainer, aPosition*/) {
58 this.append(this.element(), [ 56 this.append(this.element(), [
59 {tag:'ul', cls:'testTabs', style:'', children:[ 57 {tag:'ul', cls:'testTabs', style:'', children:[
60 {tag:'li', id:this.getId('list'), children:[{tag:'span', html:'list'}]}, 58 {tag:'li', id:this.getId('list'), children:[{tag:'span', html:'list'}]},
61 {tag:'li', id:this.getId('grid'), children:[{tag:'span', html:'grid'}]} 59 {tag:'li', id:this.getId('grid'), children:[{tag:'span', html:'grid'}]}
62 ]}, 60 ]},
63 {tag:'ul', cls:'testPanels', children:[ 61 {tag:'ul', cls:'testPanels', children:[
64 {tag:'li', id:this.getId('listPanel'), children:[ 62 {tag:'li', id:this.getId('listPanel'), children:[
65 {tag:'div', /*id:this.getId('mainPanels'),*/ cls:'mainPanels', children:[ 63 {tag:'div', /*id:this.getId('mainPanels'),*/ cls:'mainPanels', children:[
66 {tag:'div', id:this.getId('cardList'), cls:'gridComponent cardGrid'} 64 {tag:'div', id:this.getId('cardList'), cls:'gridComponent cardGrid'}
67 ]} 65 ]}
68 ]}, 66 ]},
69 {tag:'li', id:this.getId('gridPanel'), children:[ 67 {tag:'li', id:this.getId('gridPanel'), children:[
70 {tag:'div', /*id:this.getId('mainPanels'),*/ cls:'mainPanels', children:[ 68 {tag:'div', /*id:this.getId('mainPanels'),*/ cls:'mainPanels', children:[
diff --git a/frontend/gamma/tests/tests/Components/GridLayout/User.data.js b/frontend/gamma/tests/tests/Components/GridLayout/User.data.js
index 142e511..3cee32d 100644
--- a/frontend/gamma/tests/tests/Components/GridLayout/User.data.js
+++ b/frontend/gamma/tests/tests/Components/GridLayout/User.data.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26testData = { 24testData = {
27 25
28 //------------------------------------------------------------------------- 26 //-------------------------------------------------------------------------
29 27
30 'simpleLogin_001': { 28 'simpleLogin_001': {
31 'users': [ 29 'users': [
32 { 30 {
33 'username': "joe", 31 'username': "joe",
34 'passphrase': "eoj", 32 'passphrase': "eoj",
35 'version': "0.2", 33 'version': "0.2",
36 'connectionVersion':"0.2", 34 'connectionVersion':"0.2",
37 'records':{ 35 'records':{
38 'record 1': { 36 'record 1': {
39 'notes':"Some notes here", 37 'notes':"Some notes here",
40 'fields':[ 38 'fields':[
41 { 'name': "username", 'value': "joe", 'type': "text" }, 39 { 'name': "username", 'value': "joe", 'type': "text" },
42 { 'name': "password", 'value': "1234", 'type': "password"} 40 { 'name': "password", 'value': "1234", 'type': "password"}
43 ], 41 ],
44 'directLogins':{ 42 'directLogins':{
45 "record 1 direct login": { 43 "record 1 direct login": {
46 'configuration':"", 44 'configuration':"",
47 'bindings':[ 45 'bindings':[
48 ], 46 ],
49 'favicon':"http://www.example.com/favicon.ico" 47 'favicon':"http://www.example.com/favicon.ico"
50 } 48 }
51 } 49 }
52 } 50 }
53 }, 51 },
54 'otp':[ 52 'otp':[
55 "12345678 90abcdef 12345678 90abcdef", 53 "12345678 90abcdef 12345678 90abcdef",
56 "fedcba09 87654321 fedcba09 87654321" 54 "fedcba09 87654321 fedcba09 87654321"
57 ] 55 ]
58 } 56 }
59 ] 57 ]
60 }, 58 },
61 59
62 //------------------------------------------------------------------------- 60 //-------------------------------------------------------------------------
63 61
64 'joe_clipperz_offline_copy_data': { 62 'joe_clipperz_offline_copy_data': {
65 users:{ 63 users:{
66 'catchAllUser': { 64 'catchAllUser': {
67 __masterkey_test_value__: 'masterkey', 65 __masterkey_test_value__: 'masterkey',
68 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00', 66 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00',
69 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00' 67 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00'
70 }, 68 },
diff --git a/frontend/gamma/tests/tests/Components/GridLayout/index.html b/frontend/gamma/tests/tests/Components/GridLayout/index.html
index f1ed116..400f958 100644
--- a/frontend/gamma/tests/tests/Components/GridLayout/index.html
+++ b/frontend/gamma/tests/tests/Components/GridLayout/index.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Card Dialog EDITING - test</title> 26 <title>Card Dialog EDITING - test</title>
29 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 27 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
30 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 28 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
31 29
32 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 30 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
33 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 31 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
34 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 32 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
35 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script>
36 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
40 38
41 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script>
46 44
47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
51 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
52 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> 50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
53 51
54 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script> 52 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script>
55 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 53 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
56 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script> 54 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script>
57 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script> 55 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script>
58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script> 56 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script>
59 57
60 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> 58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
61 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> 59 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
62 60
63 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script> 61 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script>
64 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_defaults.js'></script> 62 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_defaults.js'></script>
65 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script> 63 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script>
66 64
67 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script> 65 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script>
68 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script> 66 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script>
69 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script> 67 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script>
70 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script> 68 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script>
diff --git a/frontend/gamma/tests/tests/Components/GridLayout/test.css b/frontend/gamma/tests/tests/Components/GridLayout/test.css
index e5983f4..b4bb372 100644
--- a/frontend/gamma/tests/tests/Components/GridLayout/test.css
+++ b/frontend/gamma/tests/tests/Components/GridLayout/test.css
@@ -1,40 +1,38 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26ul.testTabs { 24ul.testTabs {
27 list-style-type: none; 25 list-style-type: none;
28 padding: 0px; 26 padding: 0px;
29 padding-bottom: 30px; 27 padding-bottom: 30px;
30} 28}
31 29
32ul.testTabs li { 30ul.testTabs li {
33 display: inline-table; 31 display: inline-table;
34 padding: 0px 10px; 32 padding: 0px 10px;
35} 33}
36 34
37ul.testPanels { 35ul.testPanels {
38 list-style-type: none; 36 list-style-type: none;
39 padding: 0px; 37 padding: 0px;
40} \ No newline at end of file 38} \ No newline at end of file
diff --git a/frontend/gamma/tests/tests/Components/ProgressBar/index.html b/frontend/gamma/tests/tests/Components/ProgressBar/index.html
index 295c2c6..13b2586 100644
--- a/frontend/gamma/tests/tests/Components/ProgressBar/index.html
+++ b/frontend/gamma/tests/tests/Components/ProgressBar/index.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>ProgressBar - test</title> 26 <title>ProgressBar - test</title>
29 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 27 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
30 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 28 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
31 29
32 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 30 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
33 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 31 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
34 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 32 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
35 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script>
36 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
40 38
41 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script>
46 44
47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
51 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
52 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> 50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
53 51
54 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script> 52 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script>
55 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 53 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
56 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script> 54 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script>
57 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script> 55 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script>
58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script> 56 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script>
59 57
60 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> 58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
61 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> 59 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
62 60
63 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script> 61 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script>
64 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script> 62 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script>
65 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script> 63 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script>
66 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script> 64 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script>
67 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script> 65 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script>
68 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script> 66 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script>
69 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script> 67 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script>
70 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script> 68 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script>
diff --git a/frontend/gamma/tests/tests/Components/ProgressBar/progressBar_test.js b/frontend/gamma/tests/tests/Components/ProgressBar/progressBar_test.js
index 8e2ce51..5a2cf9d 100644
--- a/frontend/gamma/tests/tests/Components/ProgressBar/progressBar_test.js
+++ b/frontend/gamma/tests/tests/Components/ProgressBar/progressBar_test.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26Clipperz.Base.module('Clipperz.Tests.ProgressBar'); 24Clipperz.Base.module('Clipperz.Tests.ProgressBar');
27 25
28Clipperz.PM.Strings.Languages.initSetup(); 26Clipperz.PM.Strings.Languages.initSetup();
29 27
30Clipperz.Tests.ProgressBar.Tester = function(args) { 28Clipperz.Tests.ProgressBar.Tester = function(args) {
31 args = args || {}; 29 args = args || {};
32 30
33 Clipperz.Tests.ProgressBar.Tester.superclass.constructor.call(this, args); 31 Clipperz.Tests.ProgressBar.Tester.superclass.constructor.call(this, args);
34 32
35 return this; 33 return this;
36}; 34};
37 35
38Clipperz.Base.extend(Clipperz.Tests.ProgressBar.Tester, Object, { 36Clipperz.Base.extend(Clipperz.Tests.ProgressBar.Tester, Object, {
39 37
40 'toString': function() { 38 'toString': function() {
41 return "Clipperz.Tests.ProgressBar.Tester"; 39 return "Clipperz.Tests.ProgressBar.Tester";
42 }, 40 },
43 41
44 //------------------------------------------------------------------------- 42 //-------------------------------------------------------------------------
45 43
46 'run': function () { 44 'run': function () {
47 var progressBar; 45 var progressBar;
48/* 46/*
49<div id="progressBar_5"></div><hr> 47<div id="progressBar_5"></div><hr>
50<div id="progressBar_10"></div><hr> 48<div id="progressBar_10"></div><hr>
51<div id="progressBar_15"></div><hr> 49<div id="progressBar_15"></div><hr>
52<div id="progressBar_20"></div><hr> 50<div id="progressBar_20"></div><hr>
53<div id="progressBar_50"></div><hr> 51<div id="progressBar_50"></div><hr>
54<div id="progressBar_80"></div><hr> 52<div id="progressBar_80"></div><hr>
55<div id="progressBar_85"></div><hr> 53<div id="progressBar_85"></div><hr>
56<div id="progressBar_90"></div><hr> 54<div id="progressBar_90"></div><hr>
57<div id="progressBar_95"></div><hr> 55<div id="progressBar_95"></div><hr>
58<div id="progressBar_100"></div><hr> 56<div id="progressBar_100"></div><hr>
59*/ 57*/
60 58
61 progressBar = new Clipperz.PM.UI.Common.Components.ProgressBar({'element':MochiKit.DOM.getElement('progressBar_5')}); 59 progressBar = new Clipperz.PM.UI.Common.Components.ProgressBar({'element':MochiKit.DOM.getElement('progressBar_5')});
62 progressBar.updateProgressHandler('5'); 60 progressBar.updateProgressHandler('5');
63 61
64 progressBar = new Clipperz.PM.UI.Common.Components.ProgressBar({'element':MochiKit.DOM.getElement('progressBar_10')}); 62 progressBar = new Clipperz.PM.UI.Common.Components.ProgressBar({'element':MochiKit.DOM.getElement('progressBar_10')});
65 progressBar.updateProgressHandler('10'); 63 progressBar.updateProgressHandler('10');
66 64
67 progressBar = new Clipperz.PM.UI.Common.Components.ProgressBar({'element':MochiKit.DOM.getElement('progressBar_15')}); 65 progressBar = new Clipperz.PM.UI.Common.Components.ProgressBar({'element':MochiKit.DOM.getElement('progressBar_15')});
68 progressBar.updateProgressHandler('15'); 66 progressBar.updateProgressHandler('15');
69 67
70 progressBar = new Clipperz.PM.UI.Common.Components.ProgressBar({'element':MochiKit.DOM.getElement('progressBar_20')}); 68 progressBar = new Clipperz.PM.UI.Common.Components.ProgressBar({'element':MochiKit.DOM.getElement('progressBar_20')});
diff --git a/frontend/gamma/tests/tests/Components/SimpleMessagePanel/index.html b/frontend/gamma/tests/tests/Components/SimpleMessagePanel/index.html
index f09d9f6..15a777c 100644
--- a/frontend/gamma/tests/tests/Components/SimpleMessagePanel/index.html
+++ b/frontend/gamma/tests/tests/Components/SimpleMessagePanel/index.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Simple Message Panel - test</title> 26 <title>Simple Message Panel - test</title>
29 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 27 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
30 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 28 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
31 29
32 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 30 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
33 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 31 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
34 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 32 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
35 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script>
36 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
40 38
41 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script>
46 44
47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
51 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
52 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> 50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
53 51
54 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script> 52 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script>
55 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 53 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
56 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script> 54 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script>
57 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script> 55 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script>
58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script> 56 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script>
59 57
60 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> 58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
61 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> 59 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
62 60
63 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script> 61 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script>
64 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script> 62 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script>
65 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script> 63 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script>
66 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script> 64 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script>
67 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script> 65 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script>
68 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script> 66 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script>
69 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script> 67 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script>
70 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script> 68 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script>
diff --git a/frontend/gamma/tests/tests/Components/SimpleMessagePanel/simpleMessagePanel_test.js b/frontend/gamma/tests/tests/Components/SimpleMessagePanel/simpleMessagePanel_test.js
index 8513909..2865f3a 100644
--- a/frontend/gamma/tests/tests/Components/SimpleMessagePanel/simpleMessagePanel_test.js
+++ b/frontend/gamma/tests/tests/Components/SimpleMessagePanel/simpleMessagePanel_test.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26Clipperz.Base.module('Clipperz.Tests.SimpleMessagePanel'); 24Clipperz.Base.module('Clipperz.Tests.SimpleMessagePanel');
27 25
28Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 26Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
29Clipperz.PM.Strings.Languages.initSetup(); 27Clipperz.PM.Strings.Languages.initSetup();
30 28
31Clipperz.Tests.SimpleMessagePanel.Tester = function(args) { 29Clipperz.Tests.SimpleMessagePanel.Tester = function(args) {
32 args = args || {}; 30 args = args || {};
33 31
34 Clipperz.Tests.SimpleMessagePanel.Tester.superclass.constructor.call(this, args); 32 Clipperz.Tests.SimpleMessagePanel.Tester.superclass.constructor.call(this, args);
35 //this._user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return 'test';}}); 33 //this._user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return 'test';}});
36 34
37 return this; 35 return this;
38}; 36};
39 37
40Clipperz.Base.extend(Clipperz.Tests.SimpleMessagePanel.Tester, Object, { 38Clipperz.Base.extend(Clipperz.Tests.SimpleMessagePanel.Tester, Object, {
41 39
42 'toString': function() { 40 'toString': function() {
43 return "Clipperz.Tests.SimpleMessagePanel.Tester"; 41 return "Clipperz.Tests.SimpleMessagePanel.Tester";
44 }, 42 },
45 43
46 //------------------------------------------------------------------------- 44 //-------------------------------------------------------------------------
47/* 45/*
48 'user': function () { 46 'user': function () {
49 return this._user; 47 return this._user;
50 }, 48 },
51*/ 49*/
52 //------------------------------------------------------------------------- 50 //-------------------------------------------------------------------------
53 51
54 'run': function () { 52 'run': function () {
55 var deferredResult; 53 var deferredResult;
56 var confirmationDialog; 54 var confirmationDialog;
57 55
58 confirmationDialog = new Clipperz.PM.UI.Common.Components.SimpleMessagePanel({ 56 confirmationDialog = new Clipperz.PM.UI.Common.Components.SimpleMessagePanel({
59 title:"Alert", 57 title:"Alert",
60 text:"Should lost pending changes? But I must explain to you how all this mistaken idea of denouncing pleasure and praising pain was born and I will give you a complete account of the system, and expound the actual teachings of the great explorer of the truth, the master-builder of human happiness", 58 text:"Should lost pending changes? But I must explain to you how all this mistaken idea of denouncing pleasure and praising pain was born and I will give you a complete account of the system, and expound the actual teachings of the great explorer of the truth, the master-builder of human happiness",
61 type:'ALERT', 59 type:'ALERT',
62 buttons: [ 60 buttons: [
63 {text:"Cancel",result:'CANCEL', isDefault:true}, 61 {text:"Cancel",result:'CANCEL', isDefault:true},
64 {text:"Ok", result:'OK'} 62 {text:"Ok", result:'OK'}
65 ] 63 ]
66 }); 64 });
67 65
68 deferredResult = new Clipperz.Async.Deferred("CardDialogComponent.askConfirmationForLoosingPendingChanges", {trace:false}); 66 deferredResult = new Clipperz.Async.Deferred("CardDialogComponent.askConfirmationForLoosingPendingChanges", {trace:false});
69 deferredResult.addMethod(confirmationDialog, 'deferredShow', { 67 deferredResult.addMethod(confirmationDialog, 'deferredShow', {
70 'openFromElement': null, 68 'openFromElement': null,
diff --git a/frontend/gamma/tests/tests/Components/Tooltips/index.html b/frontend/gamma/tests/tests/Components/Tooltips/index.html
index 3772227..3f3327d 100644
--- a/frontend/gamma/tests/tests/Components/Tooltips/index.html
+++ b/frontend/gamma/tests/tests/Components/Tooltips/index.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>TOOLTIPS - test</title> 26 <title>TOOLTIPS - test</title>
29 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 27 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
30 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 28 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
31 29
32 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 30 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
33 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 31 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
34 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 32 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
35 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script>
36 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
40 38
41 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script>
46 44
47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
51 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
52 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> 50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
53 51
54 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script> 52 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script>
55 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 53 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
56 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script> 54 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script>
57 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script> 55 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script>
58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script> 56 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script>
59 57
60 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> 58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
61 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> 59 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
62 60
63 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script> 61 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script>
64 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script> 62 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script>
65 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script> 63 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script>
66 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script> 64 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script>
67 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script> 65 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script>
68 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script> 66 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script>
69 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script> 67 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script>
70 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script> 68 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script>
diff --git a/frontend/gamma/tests/tests/Components/Tooltips/tooltips_test.js b/frontend/gamma/tests/tests/Components/Tooltips/tooltips_test.js
index 9ed1c05..42ae70b 100644
--- a/frontend/gamma/tests/tests/Components/Tooltips/tooltips_test.js
+++ b/frontend/gamma/tests/tests/Components/Tooltips/tooltips_test.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26Clipperz.Base.module('Clipperz.Tests.Tooltips'); 24Clipperz.Base.module('Clipperz.Tests.Tooltips');
27 25
28Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 26Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
29Clipperz.PM.Strings.Languages.initSetup(); 27Clipperz.PM.Strings.Languages.initSetup();
30 28
31Clipperz.Tests.Tooltips.Tester = function(args) { 29Clipperz.Tests.Tooltips.Tester = function(args) {
32 args = args || {}; 30 args = args || {};
33 31
34 Clipperz.Tests.Tooltips.Tester.superclass.constructor.call(this, args); 32 Clipperz.Tests.Tooltips.Tester.superclass.constructor.call(this, args);
35 33
36 return this; 34 return this;
37}; 35};
38 36
39Clipperz.Base.extend(Clipperz.Tests.Tooltips.Tester, Object, { 37Clipperz.Base.extend(Clipperz.Tests.Tooltips.Tester, Object, {
40 38
41 'toString': function() { 39 'toString': function() {
42 return "Clipperz.Tests.Tooltips.Tester"; 40 return "Clipperz.Tests.Tooltips.Tester";
43 }, 41 },
44 42
45 //------------------------------------------------------------------------- 43 //-------------------------------------------------------------------------
46 44
47 'run': function () { 45 'run': function () {
48 vartooltip; 46 vartooltip;
49 47
50//Clipperz.log("================== ABOVE =================="); 48//Clipperz.log("================== ABOVE ==================");
51 tooltip = new Clipperz.PM.UI.Common.Components.Tooltip({ 49 tooltip = new Clipperz.PM.UI.Common.Components.Tooltip({
52 'element':MochiKit.DOM.getElement('ABOVE'), 50 'element':MochiKit.DOM.getElement('ABOVE'),
53 'text': "Tooltip displayed above the element", 51 'text': "Tooltip displayed above the element",
54 'position':'ABOVE' 52 'position':'ABOVE'
55 }); 53 });
56 tooltip.show(); 54 tooltip.show();
57 55
58//Clipperz.log("================== BELOW =================="); 56//Clipperz.log("================== BELOW ==================");
59 tooltip = new Clipperz.PM.UI.Common.Components.Tooltip({ 57 tooltip = new Clipperz.PM.UI.Common.Components.Tooltip({
60 'element':MochiKit.DOM.getElement('BELOW'), 58 'element':MochiKit.DOM.getElement('BELOW'),
61 'text': "Tooltip displayed below the element", 59 'text': "Tooltip displayed below the element",
62 'position':'BELOW' 60 'position':'BELOW'
63 }); 61 });
64 tooltip.show(); 62 tooltip.show();
65 63
66//Clipperz.log("================== LEFT =================="); 64//Clipperz.log("================== LEFT ==================");
67 tooltip = new Clipperz.PM.UI.Common.Components.Tooltip({ 65 tooltip = new Clipperz.PM.UI.Common.Components.Tooltip({
68 'element':MochiKit.DOM.getElement('LEFT'), 66 'element':MochiKit.DOM.getElement('LEFT'),
69 'text': "Tooltip displayed to the left of the element", 67 'text': "Tooltip displayed to the left of the element",
70 'position':'LEFT' 68 'position':'LEFT'
diff --git a/frontend/gamma/tests/tests/Components/UnlockPassword/User.data.js b/frontend/gamma/tests/tests/Components/UnlockPassword/User.data.js
index 49abe46..ba60878 100644
--- a/frontend/gamma/tests/tests/Components/UnlockPassword/User.data.js
+++ b/frontend/gamma/tests/tests/Components/UnlockPassword/User.data.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26testData = { 24testData = {
27 25
28 //------------------------------------------------------------------------- 26 //-------------------------------------------------------------------------
29 27
30 'simpleLogin_001': { 28 'simpleLogin_001': {
31 'users': [ 29 'users': [
32 { 30 {
33 'username': "joe", 31 'username': "joe",
34 'passphrase': "eoj", 32 'passphrase': "eoj",
35 'version': "0.2", 33 'version': "0.2",
36 'connectionVersion':"0.2", 34 'connectionVersion':"0.2",
37 'records':{ 35 'records':{
38 'record 1': { 36 'record 1': {
39 'notes':"Some notes here", 37 'notes':"Some notes here",
40 'fields':[ 38 'fields':[
41 { 'name': "username", 'value': "joe", 'type': "text" }, 39 { 'name': "username", 'value': "joe", 'type': "text" },
42 { 'name': "password", 'value': "1234", 'type': "password"} 40 { 'name': "password", 'value': "1234", 'type': "password"}
43 ], 41 ],
44 'directLogins':{ 42 'directLogins':{
45 "record 1 direct login": { 43 "record 1 direct login": {
46 'configuration':"", 44 'configuration':"",
47 'bindings':[ 45 'bindings':[
48 ], 46 ],
49 'favicon':"http://www.example.com/favicon.ico" 47 'favicon':"http://www.example.com/favicon.ico"
50 } 48 }
51 } 49 }
52 } 50 }
53 }, 51 },
54 'otp':[ 52 'otp':[
55 "12345678 90abcdef 12345678 90abcdef", 53 "12345678 90abcdef 12345678 90abcdef",
56 "fedcba09 87654321 fedcba09 87654321" 54 "fedcba09 87654321 fedcba09 87654321"
57 ] 55 ]
58 } 56 }
59 ] 57 ]
60 }, 58 },
61 59
62 //------------------------------------------------------------------------- 60 //-------------------------------------------------------------------------
63 61
64 'joe_clipperz_offline_copy_data': { 62 'joe_clipperz_offline_copy_data': {
65 users:{ 63 users:{
66 'catchAllUser': { 64 'catchAllUser': {
67 __masterkey_test_value__: 'masterkey', 65 __masterkey_test_value__: 'masterkey',
68 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00', 66 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00',
69 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00' 67 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00'
70 }, 68 },
diff --git a/frontend/gamma/tests/tests/Components/UnlockPassword/index.html b/frontend/gamma/tests/tests/Components/UnlockPassword/index.html
index 7a5e95b..a124739 100644
--- a/frontend/gamma/tests/tests/Components/UnlockPassword/index.html
+++ b/frontend/gamma/tests/tests/Components/UnlockPassword/index.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>UnlockPassword - test</title> 26 <title>UnlockPassword - test</title>
29 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 27 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
30 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 28 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
31 29
32 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 30 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
33 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 31 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
34 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 32 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
35 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script>
36 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
40 38
41 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script>
46 44
47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
51 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
52 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> 50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
53 51
54 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script> 52 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script>
55 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 53 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
56 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script> 54 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script>
57 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script> 55 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script>
58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script> 56 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script>
59 57
60 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> 58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
61 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> 59 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
62 60
63 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script> 61 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script>
64 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script> 62 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script>
65 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script> 63 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script>
66 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script> 64 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script>
67 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script> 65 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script>
68 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script> 66 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script>
69 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script> 67 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script>
70 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script> 68 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script>
diff --git a/frontend/gamma/tests/tests/Components/UnlockPassword/unlockPassword_test.js b/frontend/gamma/tests/tests/Components/UnlockPassword/unlockPassword_test.js
index 80a8c30..6722b60 100644
--- a/frontend/gamma/tests/tests/Components/UnlockPassword/unlockPassword_test.js
+++ b/frontend/gamma/tests/tests/Components/UnlockPassword/unlockPassword_test.js
@@ -1,70 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26Clipperz.Base.module('Clipperz.Tests.SimpleMessagePanel'); 24Clipperz.Base.module('Clipperz.Tests.SimpleMessagePanel');
27 25
28Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 26Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
29Clipperz.PM.Strings.Languages.initSetup(); 27Clipperz.PM.Strings.Languages.initSetup();
30 28
31Clipperz.Tests.SimpleMessagePanel.Tester = function(args) { 29Clipperz.Tests.SimpleMessagePanel.Tester = function(args) {
32 args = args || {}; 30 args = args || {};
33 31
34 Clipperz.Tests.SimpleMessagePanel.Tester.superclass.constructor.call(this, args); 32 Clipperz.Tests.SimpleMessagePanel.Tester.superclass.constructor.call(this, args);
35 33
36 this._user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:MochiKit.Base.method(this, 'getUserPassphrase')}); 34 this._user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:MochiKit.Base.method(this, 'getUserPassphrase')});
37 this._unlockPasswordComponent = new Clipperz.PM.UI.Web.Components.UnlockPasswordComponent({ 35 this._unlockPasswordComponent = new Clipperz.PM.UI.Web.Components.UnlockPasswordComponent({
38 'title':"Unlock account", 36 'title':"Unlock account",
39 'text': "Insert the passprase to unlock the account", 37 'text': "Insert the passprase to unlock the account",
40 'type': 'INFO', 38 'type': 'INFO',
41 'buttons': [ 39 'buttons': [
42 {text:"Cancel",result:'CANCEL'}, 40 {text:"Cancel",result:'CANCEL'},
43 {text:"Unlock", result:'OK',isDefault:true} 41 {text:"Unlock", result:'OK',isDefault:true}
44 ], 42 ],
45 'openFromElement': null, 43 'openFromElement': null,
46 'onOkCloseToElement': null, //this.getElement('cancelButton'), 44 'onOkCloseToElement': null, //this.getElement('cancelButton'),
47 'onCancelCloseToElement':null 45 'onCancelCloseToElement':null
48 }); 46 });
49 47
50 return this; 48 return this;
51}; 49};
52 50
53Clipperz.Base.extend(Clipperz.Tests.SimpleMessagePanel.Tester, Object, { 51Clipperz.Base.extend(Clipperz.Tests.SimpleMessagePanel.Tester, Object, {
54 52
55 'toString': function() { 53 'toString': function() {
56 return "Clipperz.Tests.SimpleMessagePanel.Tester"; 54 return "Clipperz.Tests.SimpleMessagePanel.Tester";
57 }, 55 },
58 56
59 //------------------------------------------------------------------------- 57 //-------------------------------------------------------------------------
60 58
61 'user': function () { 59 'user': function () {
62 return this._user; 60 return this._user;
63 }, 61 },
64 62
65 'unlockPasswordComponent': function () { 63 'unlockPasswordComponent': function () {
66 return this._unlockPasswordComponent; 64 return this._unlockPasswordComponent;
67 }, 65 },
68 66
69 //------------------------------------------------------------------------- 67 //-------------------------------------------------------------------------
70 68
diff --git a/frontend/gamma/tests/tests/Components/crossWindowsBookmarklet/CrossWindowsBookmarklet_test.js b/frontend/gamma/tests/tests/Components/crossWindowsBookmarklet/CrossWindowsBookmarklet_test.js
index 9908c6a..1585449 100644
--- a/frontend/gamma/tests/tests/Components/crossWindowsBookmarklet/CrossWindowsBookmarklet_test.js
+++ b/frontend/gamma/tests/tests/Components/crossWindowsBookmarklet/CrossWindowsBookmarklet_test.js
@@ -1,63 +1,61 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26newWindow = function (anEvent) { 24newWindow = function (anEvent) {
27 var windowURL; 25 var windowURL;
28 var htmlString; 26 var htmlString;
29 var newWindow; 27 var newWindow;
30 28
31 anEvent.preventDefault(); 29 anEvent.preventDefault();
32 30
33 //htmlString = '<html><head><title>TARGET WINDOW</title></head><body><h3>this is the target window</h3></body></html>'; 31 //htmlString = '<html><head><title>TARGET WINDOW</title></head><body><h3>this is the target window</h3></body></html>';
34 // windowURL = 'data:text/html;charset=utf-8;base64,' + (new Clipperz.ByteArray(htmlString)).toBase64String(); 32 // windowURL = 'data:text/html;charset=utf-8;base64,' + (new Clipperz.ByteArray(htmlString)).toBase64String();
35 33
36 //newWindow = window.open(windowURL, 'CrossWindowsBookmarklet_TEST'); 34 //newWindow = window.open(windowURL, 'CrossWindowsBookmarklet_TEST');
37 newWindow = window.open('http://mail.google.com', 'CrossWindowsBookmarklet_TEST'); 35 newWindow = window.open('http://mail.google.com', 'CrossWindowsBookmarklet_TEST');
38 MochiKit.Signal.connect(newWindow, 'onload', targetWindowDidLoad) 36 MochiKit.Signal.connect(newWindow, 'onload', targetWindowDidLoad)
39 console.log("new window", newWindow); 37 console.log("new window", newWindow);
40 38
41 MochiKit.Async.callLater(2, runBookmarkletScript); 39 MochiKit.Async.callLater(2, runBookmarkletScript);
42}; 40};
43 41
44targetWindowDidLoad = function () { 42targetWindowDidLoad = function () {
45//console.log(">>> targetWindowDidLoad") 43//console.log(">>> targetWindowDidLoad")
46 runBookmarkletScript(null); 44 runBookmarkletScript(null);
47}; 45};
48 46
49runBookmarkletScript = function (anEvent) { 47runBookmarkletScript = function (anEvent) {
50 if (anEvent != null) { 48 if (anEvent != null) {
51 anEvent.preventDefault(); 49 anEvent.preventDefault();
52 } 50 }
53 51
54 window.open('javascript:_cble=null;ilf=function(_1){var%20_2;var%20_3;var%20i,c;_3=0;_2=_1.elements;c=_2.length;for(i=0;i%3Cc;i++){if(_2[i].type==%22password%22){_3++;}}return(_3==1);};flf=function(_6,_7){var%20_8;var%20_9;var%20i,c;_8=null;try{_9=_6.getElementsByTagName(%22form%22);c=_9.length;for(i=0;(i%3Cc)&&(_8==null);i++){if(ilf(_9[i])){_8=_9[i];}}if((_8==null)&&(_7==0)){var%20_c;_c=_6.getElementsByTagName(%22iframe%22);c=_c.length;for(i=0;(i%3Cc)&&(_8==null);i++){_8=flf(_c[i].contentDocument,(_7+1));}}}catch(e){_cble=e;}return%20_8;};iev=function(_d){var%20_e;if((_d.tagName.toLowerCase()==%22input%22)&&(_d.getAttribute(%22name%22)!=null)){_e={};_e.type=_d.getAttribute(%22type%22)||%22text%22;_e.name=_d.getAttribute(%22name%22);_e.value=_d.value;if(_d.type.toLowerCase()==%22radio%22){_e.checked=_d.checked;}}else{if((_d.tagName.toLowerCase()==%22select%22)&&(_d.getAttribute(%22name%22)!=null)){var%20_f;var%20c,i;_e={};_e.type=%22select%22;_e.name=_d.getAttribute(%22name%22);_e.options=[];_f=_d.options;c=_f.length;for(i=0;i%3Cc;i++){var%20_12;_12={};_12.selected=_f[i].selected;_12.label=_f[i].label||_f[i].innerHTML;_12.value=_f[i].value;_e.options.push(_12);}}else{_e=null;}}return%20_e;};fp=function(_13){var%20_14;var%20i,c;var%20_17;if(_13==null){_14=null;}else{var%20_18;var%20_19;_14={};_18={};_17=_13.action;if(_17.constructor!=String){_17=_13.getAttribute(%22action%22);}if(%2f^https?%5c:%5c%2f%5c%2f.*%2f.test(_17)){_17=_17;}else{if(%2f^%5c%2f.*%2f.test(_17)){_17=window.location.protocol+%22%2f%22+%22%2f%22+window.location.hostname+_17;}else{_17=window.location.href.replace(%2f%5c%2f[^%5c%2f]*$%2f,%22%2f%22+_17);}}_14.attributes={};_14.attributes.action=_17;_14.attributes.method=_13.getAttribute(%22method%22);_14.inputs=[];c=_13.elements.length;for(i=0;i%3Cc;i++){var%20_1a;var%20_1b;_1a=_13.elements[i];_1b=iev(_1a);if(_1b!=null){if(_1b.type!=%22radio%22){_14.inputs.push(_1b);}else{var%20_1c;var%20_1d;_1c=_18[_1b.name];if(_1c==null){_1c={};_1c.name=_1b.name;_1c.type=%22radio%22;_1c.options=[];_18[_1b.name]=_1c;}_1d={};_1d.value=_1b.value;_1d.checked=_1b.checked;_1c.options.push(_1d);}}}for(_19%20in%20_18){if(typeof(_18[_19])!=%22function%22){_14.inputs.push(_18[_19]);}}}return%20_14;};pp=function(){var%20_1e;_1e={};_1e[%22title%22]=document.title;return%20_1e;};rs=function(o){return(%22%5c%22%22+o.replace(%2f([%22%5c%5c])%2fg,%22%5c%5c$1%22)+%22%5c%22%22).replace(%2f[%5cf]%2fg,%22%5c%5cf%22).replace(%2f[%5cb]%2fg,%22%5c%5cb%22).replace(%2f[%5cn]%2fg,%22%5c%5cn%22).replace(%2f[%5ct]%2fg,%22%5c%5ct%22).replace(%2f[%5cr]%2fg,%22%5c%5cr%22);};sj=function(o){var%20_21=typeof(o);if(_21==%22number%22||_21==%22boolean%22){return%20o+%22%22;}else{if(o===null){return%20%22null%22;}}if(_21==%22string%22){return%20rs(o);}var%20me=arguments.callee;if(_21!=%22function%22&&typeof(o.length)==%22number%22){var%20res=[];for(var%20i=0;i%3Co.length;i++){var%20val=me(o[i]);if(typeof(val)!=%22string%22){val=%22undefined%22;}res.push(val);}return%20%22[%22+res.join(%22,%5cn%22)+%22]%22;}if(_21==%22undefined%22){throw%20new%20TypeError(%22error%22);}res=[];for(var%20k%20in%20o){if(typeof(o[k])!=%22function%22){var%20_27;if(typeof(k)==%22number%22){_27=%22%5c%22%22+k+%22%5c%22%22;}else{if(typeof(k)==%22string%22){_27=rs(k);}else{continue;}}val=me(o[k]);if(typeof(val)!=%22string%22){continue;}res.push(_27+%22:%22+%22%20%22+val);}}return%20%22{%22+res.join(%22,%5cn%22)+%22}%22;};closeBookmarklet=function(){var%20_28;_28=document.getElementById(%22clipperz_bookmarklet%22);_28.parentNode.removeChild(_28);};lfp=function(_29,_2a){var%20_2b;var%20_2c;var%20_2d;var%20_2e;var%20_2f;var%20_30;var%20_31;var%20_32;_2c=%22http%3a%2f%2fwww.clipperz.com%2f%22;_2d=_2c+%22help%2fbookmarklet%22;_2e=%22data:image%2fpng;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAAAXCAYAAABOMABkAAAACXBIWXMAAAsTAAALEwEAmpwYAAANJ2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjardd5NJRv2AfwaxbGMmbGGHsY2Xcle%2fYtkWzZUpKdYSYmScqSlDVLKNoo2oQWEonqR5YkyZKtyJKlFLJkmfcPqd7feZfznvNefzzneu7nj%2ft+7nM+3%2fvcAHgNdxqNggSAwCB6sK2ZIdnJ2YWM6QQM4IAXsCDi7hFCM7C2toT%2fuhAA852AAABoV3Cn0SjwfytcsJOzCwBCHgBIPuu9PgCQDq739gBAOkKn0QEQvgBA8vB19wRARACAfLC9rREA4iYA4HzW+woAwB1c7xsAABfq4UMHQHQDMBODPP2CADBTAMy6nl4hHgA4eQDw9AzxCATApQKAVWAg1RMA9xEApD1owXQAPAsAKDg5u5DXl7w3AWAbPwCLxZ+xI5kAZXkA0rv+jIk9AuBxB8hP%2fjM2awsIAEDwtIZ4q2xd30GsIQDTAIMxKwmASQdYTWMwlvMZjNVrAKg+gFqKx+Hg0I39RrQA%2fG%2fv6%2f%2f8q1AIACQAQhxRiAxHRaAjmE4wR2FiWE6yGrPWsZ1mP4ON50jClRN8OdOIaVzppHPcmTyZvNl8dQJUwdxNuUKXhBvIh0XzN18Ta5U4Jlko1SZzQvaOXKdCjOJdpZ4tp7feV%2fmgmqRWrj6omaJVqT2qk6H7VG%2fCIMvwudFXkxzTerMZ8ys7myzmd+Vbvd79xvqNTZvtiv3tPR0OnY5dTt0u6L33XPv29e8fcPtw4ONBrMdjz2GvEe9RnzHfz37jAdyUZ4Ffgr5Sp2nfDn0PngmZo88d%2fhE6f2QhbPHoUvjPYysRK8dXI2WiOmIQJ5GxqFPoOKbTzGcw8SwJrIlsSezJ2BSOs7hUfBohnTODeI4rk5TFnc1znvcCXw5%2frsBFwUubLgtdEb4qkkfOF722+bpYgXihxA2pm1K3pG%2fL3JG9M1lEuStfrFCiVKp8b8v9LQ+2PtxWplquVj7%2fKLRC%2fbFGpVaV9pPt1duf6jxdq4ms1Xum%2f9zgheE%2fRnXouth6k5emDWaN5k3mzWzNia8sWixfW7XiWs++sW6zeWvbTmxPf2fXYd+5p4unK7vb8b1Tj0uvQG9un2u%2f68C+D8Ifrnx0GzwwJDqU%2f+ngsMeI56jEaOGY92efcd8JmYnbk%2f5TAV8oXxW+Fk8HfaN+p81smbk%2fGzwX8oM+rzpfvhC6GLZ09OfRZa3lqpVjqxFrOmtPGQwAhBgSh%2fyGakbfYcpgjsD4sNizGrFtY5fCSnHw4XjxfAQ+Tm6iJJc0SYPbkmc%2fbwhfCn+JQLPguBCXsJqID%2fm86EsxhLiOxCHJe1LTMtKyFLkqBZSigVKa8uBWGZW4bV1qsuo0jTotXu2w7a90efSo+s8NxY2OGbeZCpuF7ag2X7LYYum1K9OqzRpnY2YbZldg%2f86BzVHf6ZDzJZf6vdP7RPbvdgs%2fkO9ed3Dck9tLz9vJ54TvVb9a%2f%2f6ApUCuIDmqMc33UERwakg+vexwQ2jvkYmw+XDUMc4I8nH5E6qR+lEW0btj9p48EOt1ihJHPx18Jio+KuFkYnxSenJiSs7ZC6nZaWnpFzPSz2Vlns+6mX3jfPGFmzl3cksuPrn05HLdlVdX2%2fLa89uvtV%2fvLRguHLsxdHPk1vTt73emi77enSmeLpksnbo3dn%2fwwdDDnrK28sZHtRWPHpdUXqxKfxJVHfh0b41F7fZnss+Jz5defPynqe5hfcbL4Aa7RrUmwSZGc8+rhy0Jr11axVpH3zxoO%2f7WpB3X3v%2fuaod%2fp0rnaldLd8b7fT0yPbO9lX0x%2fRYDpIGBD7c+hgxqD6GHmj6dG94%2fIjUyNVo5Fv155zj3eP%2fE9UnKlOrU2pfGr+nTe7+Jf5v6%2fmAmYtZsjjjX%2faNgnrqguYhafLmU9nPvstjyl5Xy1ag1cwYPgwEAJxFhyHCUNqoSfZxJj6mGORpzisWUpY41ju00ewJ2J7aZIxmXjE8h7Ca0cqYS07kySBnc9tzveLJ4s%2fjO8+cI5Armbroo5CrUL3xF5Co5TzRvc57YNfHrEgWShVI3pG%2fK3JL1k52Quy1fpHBXsVipRLl0y72t91UebHuoWq5Wrl6uEaaxqFmpValdtf2JTrXuCd01vRr9WoNnhs+NXhjHmqBN6kzrzV7uaDBv3NlkkWiJtXy1q8Xq9e5W61Qbgk2b7Vu7dvt3ezodshx5HLucup3fu%2fTszXUVdO3b17%2f%2fg9vHAx%2fd8w6KHhzy+OQ57DXiXegjuZ4g%2fhMBdyjylKn%2flCKzv1Ok4qjG0aXwn8eWI1aOr55Yi2REQwzyd5JgzmDiWeIbE3Ymsidhk7EpHGfxqYQ0zt9ZwpPNe57vV5Zs+jtL8oeueVwXKxAvlLwhuZEmRfJ3FYoV%2f8oSlbJt5aqP1CvUH2tUalZpP9Gu3v5Ut0b3rxwxqTd9adpg1rijybzZ4lXo682tVm+s26zf2rQf75DtdOhy7I7pUep16YsbUPkQP6g6lDTsOao9ljbuN+n%2fhTJN%2fZ4w5zJ%2fdilx1ZbBAFg%2f+wAAmNUAsuQAHHIA7PIB4uQApNwAeG4CWHMA2GsCkkkYkDo0QOzU2Tg%2fAAEEEAJFMARnCIFUKIVFBBlhgQhD3ES8Rowh8UgzZDSyGrmC0kFFo+pRK2hRtDO6EP2DyZTpFFMJ0zSzGXMe8yiGG+OKqWbBsGiyxLJMsmqxUllr2RTYotgq2HHs0ezvsSRsEPYzhwnHSY5BnDvuOR6F98ZPEWwIWYRVznjOGaIWsYBLnauAa5rkRlrg9uMu55HjecnrzYfhu80vwX+Ef07gkqCZ4Oymq0LiQhHCCOEyEX+yKLlH9NzmzZujxPBireJpEnskBSSHpO5IG0nfkjGU5ZQdlHsgf1rBVVFFCas0pvzPlvytMSqe28xU5dW41FbURzWyNXGatVql2nnbz+mc0Y3UO6J%2fyIBi6Gfka+xrEmAaZEbfccw8dudZi1zLW7sqrBp391l%2ft8XYCdtr7LFzoDmmOBU7v3GZdeXbp7vf2y31QJX7Zw9eTzOvo95Ffnz+1gEJlLogJNWAFn3oRQgz3eJwepj4UWr4kwi24y4niiIZ0faxyFOucY%2fOcMUfSmhLzkxZSnVLq89QOpeTHXL+U45dbt3l4qsSeZeu8RYSbqTcwt0+eze7RKj0+n2FMuPytgr3x9+reZ8W1Rq+oNfh64sadjYntCi8bnsT2l7fQesS7G7ok+zv%2fpAwqDdcNOr5WWS854vDNM+3rpmcObeFqaWy5UgGH4MBAEhgA16QAT1wgsOQCRUwgMAglBFuiBREDWIWKYt0Q+Yg36HwqF2oJFQLmgO9G52J7mUiM%2fkxlTItMhsxn2V+j5HAHMa8YCGyeLJUsLKzurIWs6HZ9rM9ZGdj92CvwXJjadgWDlmOZI4pnCWuBM+Bp+I7CfqE65w4zlDOXqIp8R4XmSuda40UQvrC7c89wUPhmeGl887zhfMj+JMEBARuC2oK1m9y2DQuFCXML1wuYiMyQY4TlRRt2Bwkxiv2VNxDAivxTDJISkTqrXS8jKHMqmyVXIS8jvyCQo3iGSV7ZVHl6S01W9NU%2fLcZqwqrLqt1qD%2fWuKQZreWj7bhdR0dJV1SPqI82QBnMGH43mjaeNBk1nTWb3PFjJ9KCZMm7a4uV7u7d1rY2AbZH7XLt7+955dDruOJMclHaa+V6aN+F%2fXVuY+6sB5U9fD1zvGq8v%2fnK+Hn5Zwd0BAoG7aHm0j4HS4eE0htDhY6EhDWFix1LiZg44RzZEK0WUxBLPJVymngmK4EvMTdZNeV1qlfaz4zkTPWskfOXc%2fwv7rksc5Upb+ra84KyGxduxd3xuOtaYnpP48G2MsVHCo+lqySqpWuUn+m92FFn85LSeKg5reVq65O2gXZGp0i3To9nX+JA5cepT%2fwjhmNR4zcnh78KfPOeuTw3uiC9FLRcvoZgMACAGQggBIbgDKlQCm837G+4X1ePxqOd0T+YTJlyfnlfw7iyiLDEskyy2rPWsimwXWTHsUezL2CDsJ85PHHuuE94b%2fwUIYSwyhlP5CEWcKlzNZHcSAvcqb9NW%2fHP%2ffJsLYwQLvtl2WZd8i%2fHoTKGfxv+I%2fiX37eatVqlf+z+kfvfu%2f2f1PoM+vH5W%2f9bbWjPv93G3P5bbtLWP3KzmDfsXtLc0Hs9Y8NvEXFD8IOKDcNVJ9cVP+vZcNw43pzw6p+WrNdtb0LfCrXXd9A6S7viuht6Qvsk+wMGjD8kDOoNnf50cLhoZH60%2fbPIeMCE+aT0FOaLw9fC6bhvPt93zMjOss9+nXvz48F81oL9wtRi7JLhT6mfo8uRK3wrl1c5V2NXF9auMxIZDID1+xIAALAZUSnUYLKlkTH8%2f1Yg5fDGHEgAwHoF7bEDACIASPvRze0BgAQAWmAEVKAAFYKBDJZgBMa%2fnmTw+P3FD2D9LgcAwEwAuOgIAFCzeCzq3%2fPSvcLoAABGVNrRYD8fXzrZgEajeJGNqIG0w3SvYHmyeZCHojx5q7KyKgDAfwBYjP%2fgNJJdnQAAAARnQU1BAADY6%2fUcFKoAAAAgY0hSTQAAbZgAAHOOAADeVAAAgmQAAHjTAADDvAAAMucAABx04zkiNwAACnFJREFUeNrsnHts1FUWxz+%2f32%2fenemL0sLQ0kIfUh5ioQiCQGtFRNmCWElFWFwDEohgQNmwJVAx+pcEWERJLFZFDQ93eSgiAtsl8iyV1LYLpaWtpVBK2Q6lj5npvH6zf7QMjFOUxXUTy++bTGZy55x7z9w53zn3nHMzgtfr9aJAgYJuofo1yuXldaxZ8zEej0zv3qGsXbsQg0HL9u0F7NjxTwDS01NYsmSGstMK7j+CtLfbKSmpRpZloqN74%2fHIANTXN3Hy5FkkSSQmJkrZZQX3J0FEUUCrVSPLXtTqW1PFxvYhLe0hRFEiObm%2fsssK7k+C3AlZWRPIypqg7K6CnkmQ8vI6jhz5gZqaBjwemX79evHww4MYM2YIarX0i5NWV1+hqqoeALM5gmHDBgBQUlJNWVkNXi+MHp1MbGwUu3cfpbi4GpfLTXx8X6ZMGc3AgX395jt1qpyqqssApKWlEBxsYM+eo5SV1QKQmNiPp54aQ3R0RLf2uFweTp06y4kTZ6mvtxAcbGDo0DgefzyViIhgP9mqqnqf7QMHmklKiubs2Vr27j1Oc3M7K%2f+STWhHIdhugCB2vwFeGdRGiJkEolrxsp5CEJfLw7p1O9m27R+0t9vxeGQ8HhmNRkV+%2fn5GjnyAN998ibi47vMKQeh8%2fvLL46xduwNJkpg+fTwbN74CwOHDZ1i%2f%2fgtEUWT+%2fKnU1l7l0KHvAdBoVEiSyNat37J8eTZZWRN98+7efYzPPz+IWq1iyZIZFBaWc+LE2QC93Ny5TJqU6mdTXd01cnM%2f5tSpszidLlwuD5IkIkkieXn7eOONFxk%2f%2fkGf%2fJ49x9iw4W8AvPbaTMrLzeTmfkR7ux2tXseSRZMJPf4qNJyH238rhK4HgAcINcPsMtCGK17WUwjyzjvbyc%2ffT1CQjtBQI6mpgzAYdBQXV2CxtFFYeI6lSzexdWsOJpP+jpNqNGqCgw2AgF6vvW1chcmkJyhIz969x7Ba7aSlPURUVDjl5bVcvHiVjg4na9Z8TEREKGlpwwHQ6dSYTAaMRh2ffnoQh8PFpEmphIQYKSur5upVC62tNlas+ICIiFBSUhIAaGpqZdGi9Vy4cBmNRsWgQfEkJfWnoaGJ0tJqrl69ztKl7%2fHhh39m+PB4n+0mkx6tVsOZMxfYvr2gkxxaNSqpixHGEDAZQKXrSsYk8AKO64AIHhdIkuJdPYkgJSXV7NhRgNGoRxQF3n57HpMnjwKgtraR+fPfoa6ukaKi8+za9R1z507+VQvb7U4WL36WRYumAWCzOVi27H2OHy9Flr1s2fK1jyA3Icte3G6ZlSvnMGtWBgDXr7fxyisbKSurwmZz8dFHB0hJ6YxYmzfv9ZFjxoyJrF79RySp81i0adNuNm%2fei9XawaZNe8jLe81vLbVaorS0Go1GxUsvPcUjjwxGlr2E946EJ%2feBx9EZMgSh8xh1+EX48evOqOIGBk5TokcPgO8QfeDAaTo6nLhcbjIyUn3kAIiLi2LhwmlkZIwkM3OcX8XqXuB0uhk8OJZ58572jRkMWl599VkMBh1qtYqKiotUV1%2f5iZ6LUaMG+cgBEB5uYvHiZxBFEa1Www8%2fVHL9ehs2m4MjR4rRaFSEhZlYsOAPPnIAzJ07mZiYSFQqkeLiSl%2fecTsZvV6ZnJzZ5OS8QHp6ChkZIwgyGkAXAUH9IMgMhr5QtrmLHBI4PDDoGZiwQfGunhRBzp+%2fhEolIcteRo16IEBwxozxzJgx%2fn+yqMvlZtiwAWg0%2fkRLSOiH2RxBVdVlXC43dXWNxMebfe+73R5GjEgMmG%2fw4FgiI8O4dq2ZlhYrjY3NSJKAxdKKWq3C7fbw1lufBujZbB1IkoTV2kFFxSUSEvr55WOxsX2YMuXhn%2f8wJX+FE6tBJYLTA3ETYdJW%2fBMUBb9rgng8MnZ7B6IoIIoCvXoF%2f8bLejGZDAGjarVEUJDeR4bWVluATHBwUMBYUJAOrVbti052uwNBEHA4XBiNOhwOFwcPFvHTWzU6nRZRhI4OJ42NzX7veTweoqMj%2fXKoAFTthGPLOsnhliFqKEzeBiqj4lk9iSCSJKLRqJFlkGUZi6U1QLClxUp9fVNnjmrU079%2f5K9YVuDGDWu35Vir1d5pmErCYAh0zhs32gLGrNYOHA5XF8lUaLVq37PT6SYiIoS1axd2fUbZp6fValCpJJxON9HRvbstNtwRlwvg8J%2fg5nwhMTDli84jl4Ked8RKSDBTWHgOlUqiqKiCmTPT%2fATz8%2ffzwQf7AC+zZk1i1ao597yoWq2itLQam83hR4Iff2zgypUmJElCq5WIje3jb2yXbV6vF+FmTRmoqLiExdKCIAiYTHqiosLR6dT06hXMtWvN2O0OBgwwB5Sna2oasFhakSQxoB%2fys7CUwLfZ4LJ1lnZ14fD0bggdpHhUT03Sp04di0ajQq1WUVBwhq++OukTKiqqYPfuo77k%2fPa+wb1Ao1FRWXmJd9%2fdhdvt8VWj1q37AputA5fLTVJSf5KSov30tFoNxcWV5OV97Ru7csXChg1%2fx+Vy43A4efDBeCIigjEa9UycOByn001bm42NG3fR1mb36R05UsLs2W8xc+Yb5OTkIct3eanZWg%2f7n4P2f3cm5YIIo9+EsEFgvXLbox7cVsXDekoEGTEikdmznyAvbx8Gg47c3Hy2bStApRKpqKjDbndis3WQmfloQPn1XmA06snP38%2fRo6VERYVTW9vAtWvNiKIIyLz88tRu9QwGHevX7+SbbwoJDw%2fmwoVLNDe3IQgiBoOa+fNv6S1YkElhYTlVVfUcOnSasrJq+vePwmq1U1l5CbvdiU6nYdmy57o9znV%2ftPoOLBdAowZkECT4%2fm0oXP2TUl0bpL0Pg+cpXtYTCAKwfHk2JpOBzz47iMXSysmT%2f+JmjmI06snOzmDFiudvS2RlX8fdZgvyJcFOp4vWVhuSJGG3OwIWdTicTJ06DoNByyefHKC0tMbXEe%2fVK5jXX8%2fuloQOh5Pnn3+clhYbO3cW4PHI6PUaAMzmXqxcOcfXJASIigrjvfeWsmbNJ5w+fY6amltXYDQaFVFRYSxZ8ixTpoy+5ddOF21tdkRR9OVD%2fumTt7NT7nTd3AXoaAiUcwIuJYL0KIKIosCiRdPIzBzHsWOlXLzYCECfPuGkpj7AkCFxfsqJidFs3ry0qyKk8VV8MjPHkZwciyAImM2B96Pcbhm9Xs2qVXPIyBhBYeE57HYnMTGRpKen3PFOldvtISQkiJycF3jyyVTOnKnE6XQzcGBfHntsBJGRoQE6cXFRbNnyOkVFFZSWVtPU1IJGoyIxMZqxY4fSu3eIn%2fz06Y8ydOgABEEgMjIs0AjzeJi24873sHy%2fHk7oM1rxsJ5EkJuIjo4gO%2fuxX1QOCzMG3H0CiI83+%2fUvuvUfT2e0GTt2CGPHDrlrg29WodLTU0hPT7krHUkSGTMmmTFjkn9RNiGhn18%2fJPBsGAMJMYrn3G9JugIFCu4ygvxWcDrdWK0O3+v%2fTq%2fjv9ZToOB3RZAnnhhFTEwkoigwYMDdN9SysiYwcmQisuwlOTlW+dYU%2fN8gKP9qokDBnfGfAQA9nOAwz2UemwAAAABJRU5ErkJgggo=%22;_2f=%22data:image%2fpng;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAGlCAYAAABAwstlAAANMWlDQ1BJQ0MgUHJvZmlsZQAAeJyV13k0lG0fB%2fDfLIxlzDDGHkb2XWQPWSJL9mwpMXbDTAyplCUpRJZQtKBoU5RIJKqHLAnJklBUZCmFSJZ5%2f5Dqfc553ue81x%2f3+d2%2f+9znuu77nM%2f3OhcAXsuTRqMgASA4hB5qb2ZEcnF1I2F6AAM44AMsiHqSw2iGtrZW8I9jvgcQAABdip40GiUc3ZFJftCtapBvLz7n36D0z+8BAAAu1MXVDQChAABEv7V6KwAQvdZqRwAg7qfT6AAIfwAgkv09vQEQUQCgEOpobwyAuAoAOL+1ugoAcF5rdRMA4CLIfnQARB8AMyHEOyAEADMFwKzv7RNGBsApAIC3dxg5GACXBgDWwcFUbwDcWwCQIdNC6QB4FgBQdHF1I60teVcSwGYBABbL3739WQAVBQAyO373xO8B8HoCFKb87s3aAwIAELztYb5qqgAAgMAaATANMRizUgCYDICVdAZjqZDBWLkEgBoAqKeQw0Mjfv4vBKIN4N%2fu177550AhAJAACAlEMfIgKgodxXSEOQYTx3KU1YS1ge04+wlsIsdJXCWnP1c6IZ07g3iaJ4s3iy+Hv0GQKpS3IU%2f4vEgTKVyscOMl8XbJQ1LF0p2yR+RuyPcoxindVO7fdFz1jtob9ZMalZrD2qk61bqjepn6Dw0mDLONHht%2f3pZr2mg2Y37RosVyfkeh9XObDtsOu077ZcfrO7udepx7Xfrc0Ltuuw%2fsHtwz5PFm71svLPm+93ufD76jfmP+HwPGg3goj4I%2fhXymTtO+7PsaOhM2R58L%2fxYxv38h8vuBxYM%2fDi1HLR9eiZaN6Y5DHEXGo46hE5iOM5%2fAJLIksSaznWRPwaZynMKl4dM5M7gyCae5s4jZPDm8Z%2fjO8ucK5AmeEzq%2f4YLwRZF80QJSodiljZfFiySKJa9IX5W+JnNd9obcjckSyk2FW4qlymUqtzfd2VSuendzhXqlRuX8vYgqzfta1To1ug+21G55qPdwtS663uDR1seGT4z+Mm5AN8Q3bntq2mTWbN5i3srWmvzMss3quXU7rv1Uh22n3Qv7LkJXxkuHbseenb28vTl9zq9c+t1eC77OG3AfdB%2fa%2fUbkzcW3HsN7R8RGCt95vSd%2f8B6VHC0e8%2f3oN+4%2fITtxfTJwKugT5bPi51vTIV+oX2kzm2buzIbOhX2jz6vPVy5EfI9cPPDjwJLOUs3yoZWoVb3VhwwGAEIciUN+QbWibzBlMkdh%2fFgcWY3ZNrNLY6U5+HF8eH5Ofi4eghS3DFGLx4p3D18Yf6pAqWCr0Lgwt4iGqB%2fpjNhTcYSEnuQ+qdvS07IychT5GkWUkqFyusqwqqxawuZeDTlNmlaDDp9u5JZn+rwG1K2PjSSMD5l0moqYRW6vNV+03GTlsyPLutMWZ2dmH+lQ5PjSic15q8s+1%2fNujbumd4vusfE4uLfQs8Fr3JvHx8DXxe+If35AfeBg0GIwd4g81YTmvy8qNC2skF4R3hTxev9E5PxB1CGuKNJhhSPq0VtjLGNt4nYd3Rvvc4ySQD8eeiImMSbpaHLiyYyU5NTcU2fTctLTM85lZpzOzjqTfTXnyplbZ6%2fm3sgrPffg%2fIMLDRef5XcWdBV2Xeq6%2fLroffHYlZGrH65NX%2f96Y7rk882ZW9Olk2VTt8fuDJeP3O2v6Kxsvldfde9+afW5mowHMbXBD3fVWdZveST3mPB48cnbv1oa7jZmPg1tcmjWaBFqYbT2P7vblvTcrV28fbSjvPPwi21duK7Bl%2fndgT1qPSu9bX2Zr3b3y%2fbPvq4eiBu0HCIODb259jZsWHcEPdLy7vT7PR+kP0yNVo%2fFfrQY5xkfnLg8SZlSn1r91Pw5Y3rXF4kvU1%2fLZ6JmzeYIc33fiuapC9rfUd+fLqb%2f2LUkvvRpuXIlZtWcwctgAMBRRCTyIEoXVY0+zGTAVMcciznGYsrSwJrAdpw9CWuBbeVIwaXgUzltONu50ggZ3JnETB5Hnpe82XzZ%2fGcEcgXzhPI2nBN2Fx4UuSiaTyoQK9hYIH5J4rJkkVSx9BWZq7LX5ALkJuSvK5Qo3lS6pVyqUrbptuodtfLNd9UrNSo1K7Uitb5rV+tU69ZseaBXq39Ef9Wgbmu94SOjx8ZPTOK3obc1mDaaPd3eZN5s0WKZbIW1erajzfq5Tbttmh2nXaf9C4cux5c7e5yynXmde136XF+59e%2fKcxdyH9g9uOeNx9u9bz0LvMS8RsjvvN%2f7fPAt9pNaS5DAiaAbFAXK1H+lyOyvFKk6oHVg8eCPQ0tRy4dXjqxGM2IhDvkrSTAnMIksic1JFsnsJ7Ep2FSOU%2fg0znSuX1nCm8N3hv9nlmz4M0sKRy6RL4sXSRRLXZFaT5MShZuKt5T+yBK1is2V6vc0qzTva1Vr1+g+0K3d8lC%2fTv+PHNnWaPrUtMmseXuLeavls4jnG9utO2w7bV%2fYdR3ulutx6nXui+tXfu02kDCk9iZxWH3k5HvvUd2x9PGAycBPlGnq16Q5t%2flTi8kr9gwGwNreBwDArAGQLQ%2fglAvgUAiQIA8g7QHAexXAlgPAURuQTCKA1KMBwkJvff8ABHCCMCiBEbhCGKRBGXxHkBCWiEjEVcRzxBgSjzRDxiJrkcsoPVQsqhG1jBZDu6KL0d+YTJmOMZUyTTObMRcwj2J4MO6YWhYMizZLPMskqw4rlbWeTZEthq2KHccey%2f4KS8SGYD9ybOM4yjGM88Q9xqPwvvgpTjvObM4VrkSuGYIOoYhbk7uIe5roQVzgCeCp5JXnfcrny4%2fhvy4gKbBfYE7wvJCZ0OyGfGEJ4SgRhEiFaCBJjNQvdnrjxo0x4njxdol0yZ1SglIj0jdkjGWuyRrJcckNy5crHFd0V1JTxiqPqfy1qVA1Ts17s5m6gga3xrLmqFaONk67XqdMt2DLab0T+tEG+7fuM6QYBRj7m%2fhvCzINMaNvP2Qeb3HKMs%2fq2o4q62abAduv9hgHEUetnQ5ONOdUl1uuHW6z7vy79ff4eqTtrfH8SObzNvM54FsSwB9oG5REaQhBUg1psfuehDHTLcMzIiUOUA8+iGI77HakJJoR6xiPPOaecO8Ed+K+pM6UrNTFNI%2f0xkzl07k5YWfe5TrkNVy4lS9ZcP4SXzHnldRruOunbuaUCpddvqNYYVLZWeV5%2f2st38OSeqMn9AZ8Y0mTRWtSm+Lzzo6IrsZuWq9QX9OA1GDfm6Rhg%2fclo94fRcf7PzlN837pncmd81iYWqxYimbwMxgAgAQ24ANZMAAXCIcsqIIhBAahgvBApCLqELNIOaQHMhf5EoVH7UCdRLWhOdA26Cz0ayYSUwBTGdN3ZmPmU8yvMJKYcMwTFgKLN0sVKzurO+stNjTbHra77GzsZPY6LA+Whm3jkONI4ZjCWeFK8Rx4Kr6HcyvnZS4cVwTXa4Ip4TY3iTuDe5UYRvzEE8gzwUvhneGj883zHxRACJwUFBS8LqQt1LjBacO4cIyIgEilqJ3oBClBTEqsaWOIOJ%2f4QwmyJFbykVSItKj0C5lEWSPZFbka+SgFPYUFxTqlE8qOKmIq05vqVNPVAjebqIuoL2l0a97XOq8dq+On67xFT09ZX8yAsBVtiDKcMfpqPG0yuW3UdNZscvs3C6Ql0YpvxyZrfRsbW3u7IPsDDnmOd3Y+c3rtvOxKdFPeZe2+b%2ffZPQ0eY56sXipkf+9cnzrfL%2f6yAT6BOUHdwUIhO6l5tI+hMmER9OYI4f1hkS0HxQ+lRk0ccY1uitWIK4onHEs9TjiRncSfnJeinvo8zSf9R2ZKlmb2hzMXcgPP7bwgm89UMHXpcVHFlbPXEm6Qb7qXmt7WKt9coXRP8b5MjWStTJ3KI4Mn2xvsnlKa97Wmt+W3P+gc6mL0iPbp9XsPJA9Vv516J%2fDBaCxm%2fOrk+8+CX3xnLsyNLsgshixVriIYDABgBk4QBiNwhTQogxfr9tfdr6lH49Gu6G9Mpky5P72vYtxZRFniWSZZHVnr2RTZzrHj2GPZF7Ah2I8c3jhP3Du8L36KM4xzhSuRwEso4tbkbiF6EBd40n6ZthaY++nZVgQhUvHTst2a5J+OI2SN%2fjT8W%2fBPvy+063XKftv9Lfef3f4vtX7DAfyBtn9XG9H%2fd7dx1%2f+Ue1L1t9xs5nW757XX9V7OXPdbQlgXXF61brjm6JriR%2f3rjpvHW5Oe%2fdWW%2fbyzI+KFcFdjN62nrDehr6k%2fYkBqMGjI5E3SsMHI8Xde70s+zI92fRQdD5own5SZwnxy+lw8nfDF7+v2GblZ9tnPcx3fyuezFxwXpr7HLxr9kP4xuhS9zL98YYVrJX5lYfUyI5nBAFg7LwEAAJsxlUINJVkZm%2fzL4e7%2fHcGU8PU5kACA9QnZ6QAABACQCaCbOwIAEQB0wBioQAEqhAIJrMAYTH5eSUD+9SQAYO0sBwDAzAlwzhkAoO77oZi%2fz0v3iaQDABhTaQdCA%2fz86SRDGo3iQzKmBtPC6T6hCiTzELKSAklVRUUdAOA%2f67wHk5DqTvYAAA7ISURBVHic7d1NjNz3Xcfx78w+2Y7tJo5rjEOVh6YoNaWAcqgSIiFURYVWEEJIT9wRF4SK4AZCQoJLIwWJCxcuHCo1TaJIqE3CgyrIg+K2qKVpm0DzUMWpHSdO4ti7ftjdGQ6zf+9%2f%2f95N7Zm1vZ%2fk9ZL+mp3Z2ZnxYd%2f6%2fn7z33EVAAAAAAAAAAAAAABsJb0P2fMCm2d4pZ%2fwSoSj+xy9DW7f6P7A1deN00bXL2vELlccuo%2fbX7mtHavu9cv5eoDJDda5Pqy1sepe31SbHYj247Uj1V%2fnst%2f6md4GjwFsDetFqTkGrWO9729auKY364HqwumpX1VTtRqnqc71dtDWm7aAq2%2fY+bq53o7Ucufr5noTs+7jjG2zgtVEph2n5uuZqpo6cOCOj+39yK2fn5nZ8dler39Tr9ff1+v1rtmk5weukOFwOD8cDo4NB4OfnFta+Pe33n3x8SNHDh2uUagWazVayzVqQzdeY9uMaaY9ITWxml45Zm644c4b9u05+Bcz03NfrOpNbcLzAVvKcHlx8czXjh7%2f%2fpePHDn0eo2itdQ6lmvt0nFskwarvYxrh2q6quYO3vrFz+%2fc+dG%2fr15v54TPA2xxw+Fw%2fuTJo1964aWHH6+qszUKV3O0l41jLw8nmXg2itVMVW3%2f9ME%2f%2fKPt26%2f%2fcq%2fXm5vgOYAQvV5vdnZ21xf2XPfx08feev75zrc3ZQ9rkgmrvQxsQjVTVdtu+%2fh9X9i1a%2f8%2f9nq9NY9%2f8y37655776zP3HFb7d+%2fp3bs0DJIs7Bwto4efbuee%2faFeuzRZ+qVl4+u+f5wWIMTJ177k%2f995bFvVNWZGk1bZ2t1edhMW5ds3GB196xmaxSruX37fu2mGw%2fc+a%2ftDfXp6an60z%2f7%2fbrv%2fruq3++v%2f4hAnMFgUA8%2f9FQ9+MAjtbS0fP724XA4%2f%2fJr3%2fzd48d%2f8GqNonWmqs7V6r7WWPtZ4y4Jm2A1pyrM1Cha2z9x02%2f%2f1fT07K82d5yenqoH%2f+GP6+7P3V6dgQsI1+v16pc+dWN9+lduricf%2f04NBsPm9tkd266%2f9o03v%2feftbpv1d58rxpjmThJsJpTF2aqaq6q5vbu%2feWb9u659e+qeufHqC%2f9+R%2fU3Z+7fcynARLccMPe2r17Rz3z9A%2fP3zY9PfuJhbMnvnHmzPH3au27hGOf4jDO+qx7GkOz2T67b89tv9U+deHmW%2fbXffffNc7rAsLcd%2f9ddfMt+1u39Kb2XX%2fw7qraXqvbRu1zNC95yTXJhlL77PWZqpqdm939G+073HPvnfas4EOi3+%2fXPffeuea27XPX%2fXqNVmCztTrcTNWFf5J3cc8x5mtb7x3CuX5%2f+hfad%2frMHbeN+fBAou7vfH9q5kBVbatRsGZr7YR1ycYNVvtPcM4vCfv9qb3tO+3fv2fMhwcSdX%2fnp3pT19dowmpOe2omrO4nuFyUcfewmssmXNNVNdPr9be37+g8K%2fhw6f7O9%2fpTzXTV7F+NHauqyZaE7T2sZsoC6Gomq+a4Ypvu3Y+D6XcOgK7uR0t1+3HRJt10735CA0BX+93Bsaerqsmmom4lncYOrGe9yeqKB6vqwkkLoGviUDUmnbAAfpaN3hG8ome6t1+ICQvYyHr%2fW9ZVWRIC%2fCybthoTLCDGJKc1AIzrii4Ju2tRAQPez0a9uGJ%2fSwhwsd6vGxfdFHtYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEmCRYw84BsJFN6cU4wRIo4FJ1mzF8n+9taNwJS7CAzXBJLbGHBcTYzGCZuoD1bFobNnXCGg6Wz7SvLyyc3cyHB7a47u%2f8YLB8trZQsAY1ejGDqhouD5beaX%2fz6NG3J3x4IEn3d355sHhi5cvmzbpBTfDG3STBGrReSFXVcHn53BvtOzz37AsTPDyQpvs7v7R05q26MFLdy4u2GUvCwcqxPL9w7L%2fb33js0WdqMBis%2f1PAB8pgMKjHHn1mzW2n5o8+X1XLreOKnofVPflr0D6OvvU%2fh4bD4flCvfLy0Xr4oafGfW1AkIcfeqpeefno+evD4XBw7Pj3v1udTrSOS47XJOdhtZ94qaqWTp16%2fY35hWNPt+%2f44AOP1LcOvTjm0wAJvnXoxXrwgUfW3HZq%2fsi35+ffOFYrfajVKasdrEsyNebr61fV9MrPz6wcs1U1d%2frsu0f2XveLv9nr9aerqgaDYT35+Hdq9+4d9cmDH6terzfmUwJbzWAwqK999b%2fqr%2f%2fyn2tpabl1+%2fLZH7%2f6xD8tLs6%2fXVWnqmqhqs5U1dmqOldVi7Uar4s2TrB6K0d%2f5ZiqUbxmq2rm3LmTg15v+p1dOw%2fc3utVb%2fTih%2fXM0z+s%2f%2fi379bi4nJds3Nbzc3N1szM9BhPD1xNCwtn67XX3qzHv%2f7t+tu%2f+Up9%2fV8O1WCwOiwNh8Ph60cOfeWdd%2f%2fvxaqabx1nVo52sC5pyhpn3OnV6mQ1W1XbqmpnVe2qqo9U1bVVteeWGz%2f7O9dfd9vv9YxU8KExHA6Hbx7%2fwROvvvbNJ6vqnap6d+XyRFW9V6NJ63SNJq1mmXjR0Rp3wqoaTVdNvJpjujneOfHK4RrU8Z07f%2f6TzfIQ+OAaDJbOHf7pcw8fPvLsszVaBp6q1emqvSRcrFGsmr2sizbuHlbV6rKwuZyq1YD1q6p%2fcv6nx989+ZPnt81du3N2dtfPmbbgg2c4HA7eO3n4+R+%2f+sRX3z3x0ks1CtXJ1uXCytGOVROsSzJuQJowNRPVtqrasXLsWjl2ty6v2b597%2f6P7jn4qd07D9w6PbP9uumpuWv6%2femZMZ8fuEoGg6XFpeWz84uLp0+cPHX45Tff%2ftGPTp8+%2fmaNlnpNqN5rHfMrtzVLwXO19rysizZJsLob7ttWjmtqtKe1s1ZitfL19pVjbuX+zbuMzZRW5dMjYCtqn5nenNK0XKNpabFGETpTq0u%2f9nTVLAtP1yhUzZQ11qkN4+4tNS+613rh7eVhr%2fWPa8a%2fsyvHbK0Ga7rzc1XjRxS4fAaty2Y6WqrR736zN7VQq9NU83V7qmqfyjDWeViTboZ3a9trHe1gnavRP+p0rR+s9pQlWLD1dKerQY1+55upqZmymv2qM63Lc7X6juBYoWpMEqzmxW%2f0vabCzT%2fqdI2WjLM1OiWiWU62gyVWsDW1%2fySv2TBvJqxmgmomrTO19iTRJljt0xjGitZmTVhVo9gsdm5vV3i2RtGaqbXTVfPuYjtW9rLg6lvv0xWaCamJTxOi9v5Uc9nEqrnfRB8tUzV5sKounLQWa+3oOFOre1hNrJrztjaarkxacPWtF5b23xA3IWoum32q9qkL7VhNtBys2pxgNdqbcu1gNWNjO1TN0d5sb09VggVbR3sqan7P25vn3T9ubp9n1XSgasJYVW1+GLonk645kbTWn6zaobIUhK2ne1pD1doYtb9u9qgm+hiZjVyOSaZ7TlW%2fLlz6rffOoKkKtrbup4a2V1ODdW6rWrtdNLHLGYn1YtTdrxIqyNKelNofk77esemuVCy6z7NRqMQLtq71%2fvfmsf4H53FttUBstdcD+D9HAQAAAAAAAAAAAAAAIN3%2fA%2fPNWgCA%2fF3MAAAAAElFTkSuQmCCCg==%22;_30=%22data:image%2fpng;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAIAAAC0D9CtAAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGiSURBVHjaYvz%2f%2fz8DiYAFU+jhg5cXLtx9%2f+4LLy+nlpa8hpYsIyMjTj03rj%2fu71l74fxdZEEFRfG8wkBrG224CCPcbfv2XKivWfjr1x+s7snM8U1IcoOwmeA24NEABNOnbN698yyKHqCTIBrcPU2WrKiIjHYEsh2c9BctK0tMcYeomdC37sePXyAW0G0P7r8wM8yBoFs3n%2fwHgwP7L%2f79+xfI+Pnzl6VpHkR27+7zQBGQPcie3rr5JIRh76DHxASS3bHtzN8%2f%2fyCCF87fgbrt%2ffsvcD3Ll+4%2feOASnPvg%2fsuO1hVwLjACoHqA8QAXBfrB1k4HOaDjEl3hXF4+LqgeYMTBRZNS3CFOAtoAEUlIdGNmgQaVlrYcVA8wpoHmQUT377v469fvTRuOR4W1zZi25cf3X6DAAPuHi4vd1l4XEadHj1wtypsB0QY0Fe5pZHZOvn9svAsifoBJAxjTEDZcETLbw8s0Js4ZPe0AATCmgRH35vUn5BQAdFJSqgdQAzylMqLlBWBMHztyDRgPoHTNxwX0NNAP%2fPzcyGoYycg%2fAAEGABYVzxqE3YcJAAAAAElFTkSuQmCCCg==%22;_2b=document.createElement(%22div%22);_2b.setAttribute(%22id%22,%22clipperz_bookmarklet%22);_32=%22%22;_32+=%22%3Cstyle%3Ediv#ClipperzBackgroundDIV{width:290px;height:420px;padding:20px%200px%200px%2020px;margin:0px;border:0px;background-color:transparent;background-repeat:no-repeat;position:absolute;z-index:20000;top:40px;left:40px;background-image:url(%22+_2f+%22)}%3C%2fstyle%3E%22;_32+=%22%3Cdiv%20style=%5c%22border:0px;margin:0px;padding:0px;padding-left:10px;%5c%22%3E%22+%22%3Cimg%20style=%5c%22padding-top:5px;%5c%22%20src=%5c%22%22+_2e+%22%5c%22%3E%22+%22%3Ca%20href=%5c%22javascript:closeBookmarklet();%5c%22%3E%22+%22%3Cimg%20style=%5c%22padding-left:28px;padding-bottom:10px;%5c%22%20border=0%20src=%5c%22%22+_30+%22%5c%22%3E%22+%22%3C%2fa%3E%22+%22%3C%2fdiv%3E%22;if((_29!=null)&&(_2a==null)){_32+=%22%3Cdiv%20style=%5c%22width:255px;border-top:1px%20dotted%20%23336;%5c%22%3E%22+%22%3Cdiv%20style=%5c%22line-height:10pt;margin-right:10px;margin-top:5px;padding:5px%2010px;color:%23666;text-align:left;font-family:sans-serif;%5c%22%3E%22+%22%3Cp%20style=%5c%22margin:0px;font-weight:bold;font-size:10pt;font-family:sans-serif;%5c%22%3EHow%20to%20add%20a%20new%20card%20or%20a%20direct%20login%20to%20an%20existing%20card%20for%20this%20website:%3C%2fp%3E%22+%22%3Col%20style=%5c%22padding:0px%200px%200px%2020px;font-size:9pt;font-family:sans-serif;%5c%22%3E%22+%22%3Cli%3ECopy%20the%20content%20of%20the%20text%20area%20below(Ctrl-C)%3C%2fli%3E%22+%22%3Cli%3EGo%20to%20your%20Clipperz%20account%3C%2fli%3E%22+%22%3Cli%3EClick%20%5c%22Add%20new%20card%5c%22%20or%20select%20the%20related%20card%3C%2fli%3E%22+%22%3Cli%3EPaste%20the%20direct%20login%20configuration(Ctrl-V)%3C%2fli%3E%22+%22%3Cli%3EComplete%20and%20review%20the%20details,then%20click%20%5c%22Save%5c%22%3C%2fli%3E%22+%22%3C%2fol%3E%22+%22%3C%2fdiv%3E%22+%22%3C%2fdiv%3E%22;_32+=%22%3Ctextarea%20id=%5c%22bookmarklet_textarea%5c%22%20style=%5c%22border:2px%20solid%20%23333366;font-family:sans-serif;font-size:8pt;color:%23336;width:240px;height:135px;padding:4px;background-color:white;margin:0px%2010px;%5c%22%3E%22+sj(_29)+%22%3C%2ftextarea%3E%22;}else{if((_29==null)&&(_2a==null)){_32+=%22%3Cdiv%3ENo%20login%20form%20has%20been%20found%20on%20the%20page%3C%2fdiv%3E%3Cdiv%3EGet%20some%20help%20%3Ca%20href=%5c%22%23%5c%22%3Ehere%3C%2fa%3E%3C%2fdiv%3E%22;}else{_32+=%22%3Cdiv%3EAn%20error%20happened%20while%20processing%20the%20page%3C%2fdiv%3E%3Cdiv%3EGet%20some%20help%20%3Ca%20href=%5c%22%23%5c%22%3Ehere%3C%2fa%3E%3C%2fdiv%3E%3Cdiv%3E%22+_2a.name+%22%20-%20%22+_2a.message+%22%3C%2fdiv%3E%22;}}_2b.innerHTML=%22%3Cdiv%20id=%5c%22ClipperzBackgroundDIV%5c%22%3E%22+_32+%22%3C%2fdiv%3E%22;document.body.appendChild(_2b);if((_29!=null)&&(_2a==null)){_31=document.getElementById(%22bookmarklet_textarea%22);_31.focus();_31.select();}};getLoginFormConfiguration=function(){var%20_33;try{_33={};_33.page=pp();_33.form=fp(flf(document,0));_33.version=%220.2.3%22;lfp(_33,_cble);}catch(e){lfp(_33,e);}};getLoginFormConfiguration();', 'CrossWindowsBookmarklet_TEST'); 52 window.open('javascript:_cble=null;ilf=function(_1){var%20_2;var%20_3;var%20i,c;_3=0;_2=_1.elements;c=_2.length;for(i=0;i%3Cc;i++){if(_2[i].type==%22password%22){_3++;}}return(_3==1);};flf=function(_6,_7){var%20_8;var%20_9;var%20i,c;_8=null;try{_9=_6.getElementsByTagName(%22form%22);c=_9.length;for(i=0;(i%3Cc)&&(_8==null);i++){if(ilf(_9[i])){_8=_9[i];}}if((_8==null)&&(_7==0)){var%20_c;_c=_6.getElementsByTagName(%22iframe%22);c=_c.length;for(i=0;(i%3Cc)&&(_8==null);i++){_8=flf(_c[i].contentDocument,(_7+1));}}}catch(e){_cble=e;}return%20_8;};iev=function(_d){var%20_e;if((_d.tagName.toLowerCase()==%22input%22)&&(_d.getAttribute(%22name%22)!=null)){_e={};_e.type=_d.getAttribute(%22type%22)||%22text%22;_e.name=_d.getAttribute(%22name%22);_e.value=_d.value;if(_d.type.toLowerCase()==%22radio%22){_e.checked=_d.checked;}}else{if((_d.tagName.toLowerCase()==%22select%22)&&(_d.getAttribute(%22name%22)!=null)){var%20_f;var%20c,i;_e={};_e.type=%22select%22;_e.name=_d.getAttribute(%22name%22);_e.options=[];_f=_d.options;c=_f.length;for(i=0;i%3Cc;i++){var%20_12;_12={};_12.selected=_f[i].selected;_12.label=_f[i].label||_f[i].innerHTML;_12.value=_f[i].value;_e.options.push(_12);}}else{_e=null;}}return%20_e;};fp=function(_13){var%20_14;var%20i,c;var%20_17;if(_13==null){_14=null;}else{var%20_18;var%20_19;_14={};_18={};_17=_13.action;if(_17.constructor!=String){_17=_13.getAttribute(%22action%22);}if(%2f^https?%5c:%5c%2f%5c%2f.*%2f.test(_17)){_17=_17;}else{if(%2f^%5c%2f.*%2f.test(_17)){_17=window.location.protocol+%22%2f%22+%22%2f%22+window.location.hostname+_17;}else{_17=window.location.href.replace(%2f%5c%2f[^%5c%2f]*$%2f,%22%2f%22+_17);}}_14.attributes={};_14.attributes.action=_17;_14.attributes.method=_13.getAttribute(%22method%22);_14.inputs=[];c=_13.elements.length;for(i=0;i%3Cc;i++){var%20_1a;var%20_1b;_1a=_13.elements[i];_1b=iev(_1a);if(_1b!=null){if(_1b.type!=%22radio%22){_14.inputs.push(_1b);}else{var%20_1c;var%20_1d;_1c=_18[_1b.name];if(_1c==null){_1c={};_1c.name=_1b.name;_1c.type=%22radio%22;_1c.options=[];_18[_1b.name]=_1c;}_1d={};_1d.value=_1b.value;_1d.checked=_1b.checked;_1c.options.push(_1d);}}}for(_19%20in%20_18){if(typeof(_18[_19])!=%22function%22){_14.inputs.push(_18[_19]);}}}return%20_14;};pp=function(){var%20_1e;_1e={};_1e[%22title%22]=document.title;return%20_1e;};rs=function(o){return(%22%5c%22%22+o.replace(%2f([%22%5c%5c])%2fg,%22%5c%5c$1%22)+%22%5c%22%22).replace(%2f[%5cf]%2fg,%22%5c%5cf%22).replace(%2f[%5cb]%2fg,%22%5c%5cb%22).replace(%2f[%5cn]%2fg,%22%5c%5cn%22).replace(%2f[%5ct]%2fg,%22%5c%5ct%22).replace(%2f[%5cr]%2fg,%22%5c%5cr%22);};sj=function(o){var%20_21=typeof(o);if(_21==%22number%22||_21==%22boolean%22){return%20o+%22%22;}else{if(o===null){return%20%22null%22;}}if(_21==%22string%22){return%20rs(o);}var%20me=arguments.callee;if(_21!=%22function%22&&typeof(o.length)==%22number%22){var%20res=[];for(var%20i=0;i%3Co.length;i++){var%20val=me(o[i]);if(typeof(val)!=%22string%22){val=%22undefined%22;}res.push(val);}return%20%22[%22+res.join(%22,%5cn%22)+%22]%22;}if(_21==%22undefined%22){throw%20new%20TypeError(%22error%22);}res=[];for(var%20k%20in%20o){if(typeof(o[k])!=%22function%22){var%20_27;if(typeof(k)==%22number%22){_27=%22%5c%22%22+k+%22%5c%22%22;}else{if(typeof(k)==%22string%22){_27=rs(k);}else{continue;}}val=me(o[k]);if(typeof(val)!=%22string%22){continue;}res.push(_27+%22:%22+%22%20%22+val);}}return%20%22{%22+res.join(%22,%5cn%22)+%22}%22;};closeBookmarklet=function(){var%20_28;_28=document.getElementById(%22clipperz_bookmarklet%22);_28.parentNode.removeChild(_28);};lfp=function(_29,_2a){var%20_2b;var%20_2c;var%20_2d;var%20_2e;var%20_2f;var%20_30;var%20_31;var%20_32;_2c=%22http%3a%2f%2fwww.clipperz.com%2f%22;_2d=_2c+%22help%2fbookmarklet%22;_2e=%22data:image%2fpng;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAAAXCAYAAABOMABkAAAACXBIWXMAAAsTAAALEwEAmpwYAAANJ2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjardd5NJRv2AfwaxbGMmbGGHsY2Xcle%2fYtkWzZUpKdYSYmScqSlDVLKNoo2oQWEonqR5YkyZKtyJKlFLJkmfcPqd7feZfznvNefzzneu7nj%2ft+7nM+3%2fvcAHgNdxqNggSAwCB6sK2ZIdnJ2YWM6QQM4IAXsCDi7hFCM7C2toT%2fuhAA852AAABoV3Cn0SjwfytcsJOzCwBCHgBIPuu9PgCQDq739gBAOkKn0QEQvgBA8vB19wRARACAfLC9rREA4iYA4HzW+woAwB1c7xsAABfq4UMHQHQDMBODPP2CADBTAMy6nl4hHgA4eQDw9AzxCATApQKAVWAg1RMA9xEApD1owXQAPAsAKDg5u5DXl7w3AWAbPwCLxZ+xI5kAZXkA0rv+jIk9AuBxB8hP%2fjM2awsIAEDwtIZ4q2xd30GsIQDTAIMxKwmASQdYTWMwlvMZjNVrAKg+gFqKx+Hg0I39RrQA%2fG%2fv6%2f%2f8q1AIACQAQhxRiAxHRaAjmE4wR2FiWE6yGrPWsZ1mP4ON50jClRN8OdOIaVzppHPcmTyZvNl8dQJUwdxNuUKXhBvIh0XzN18Ta5U4Jlko1SZzQvaOXKdCjOJdpZ4tp7feV%2fmgmqRWrj6omaJVqT2qk6H7VG%2fCIMvwudFXkxzTerMZ8ys7myzmd+Vbvd79xvqNTZvtiv3tPR0OnY5dTt0u6L33XPv29e8fcPtw4ONBrMdjz2GvEe9RnzHfz37jAdyUZ4Ffgr5Sp2nfDn0PngmZo88d%2fhE6f2QhbPHoUvjPYysRK8dXI2WiOmIQJ5GxqFPoOKbTzGcw8SwJrIlsSezJ2BSOs7hUfBohnTODeI4rk5TFnc1znvcCXw5%2frsBFwUubLgtdEb4qkkfOF722+bpYgXihxA2pm1K3pG%2fL3JG9M1lEuStfrFCiVKp8b8v9LQ+2PtxWplquVj7%2fKLRC%2fbFGpVaV9pPt1duf6jxdq4ms1Xum%2f9zgheE%2fRnXouth6k5emDWaN5k3mzWzNia8sWixfW7XiWs++sW6zeWvbTmxPf2fXYd+5p4unK7vb8b1Tj0uvQG9un2u%2f68C+D8Ifrnx0GzwwJDqU%2f+ngsMeI56jEaOGY92efcd8JmYnbk%2f5TAV8oXxW+Fk8HfaN+p81smbk%2fGzwX8oM+rzpfvhC6GLZ09OfRZa3lqpVjqxFrOmtPGQwAhBgSh%2fyGakbfYcpgjsD4sNizGrFtY5fCSnHw4XjxfAQ+Tm6iJJc0SYPbkmc%2fbwhfCn+JQLPguBCXsJqID%2fm86EsxhLiOxCHJe1LTMtKyFLkqBZSigVKa8uBWGZW4bV1qsuo0jTotXu2w7a90efSo+s8NxY2OGbeZCpuF7ag2X7LYYum1K9OqzRpnY2YbZldg%2f86BzVHf6ZDzJZf6vdP7RPbvdgs%2fkO9ed3Dck9tLz9vJ54TvVb9a%2f%2f6ApUCuIDmqMc33UERwakg+vexwQ2jvkYmw+XDUMc4I8nH5E6qR+lEW0btj9p48EOt1ihJHPx18Jio+KuFkYnxSenJiSs7ZC6nZaWnpFzPSz2Vlns+6mX3jfPGFmzl3cksuPrn05HLdlVdX2%2fLa89uvtV%2fvLRguHLsxdHPk1vTt73emi77enSmeLpksnbo3dn%2fwwdDDnrK28sZHtRWPHpdUXqxKfxJVHfh0b41F7fZnss+Jz5defPynqe5hfcbL4Aa7RrUmwSZGc8+rhy0Jr11axVpH3zxoO%2f7WpB3X3v%2fuaod%2fp0rnaldLd8b7fT0yPbO9lX0x%2fRYDpIGBD7c+hgxqD6GHmj6dG94%2fIjUyNVo5Fv155zj3eP%2fE9UnKlOrU2pfGr+nTe7+Jf5v6%2fmAmYtZsjjjX%2faNgnrqguYhafLmU9nPvstjyl5Xy1ag1cwYPgwEAJxFhyHCUNqoSfZxJj6mGORpzisWUpY41ju00ewJ2J7aZIxmXjE8h7Ca0cqYS07kySBnc9tzveLJ4s%2fjO8+cI5Armbroo5CrUL3xF5Co5TzRvc57YNfHrEgWShVI3pG%2fK3JL1k52Quy1fpHBXsVipRLl0y72t91UebHuoWq5Wrl6uEaaxqFmpValdtf2JTrXuCd01vRr9WoNnhs+NXhjHmqBN6kzrzV7uaDBv3NlkkWiJtXy1q8Xq9e5W61Qbgk2b7Vu7dvt3ezodshx5HLucup3fu%2fTszXUVdO3b17%2f%2fg9vHAx%2fd8w6KHhzy+OQ57DXiXegjuZ4g%2fhMBdyjylKn%2flCKzv1Ok4qjG0aXwn8eWI1aOr55Yi2REQwzyd5JgzmDiWeIbE3Ymsidhk7EpHGfxqYQ0zt9ZwpPNe57vV5Zs+jtL8oeueVwXKxAvlLwhuZEmRfJ3FYoV%2f8oSlbJt5aqP1CvUH2tUalZpP9Gu3v5Ut0b3rxwxqTd9adpg1rijybzZ4lXo682tVm+s26zf2rQf75DtdOhy7I7pUep16YsbUPkQP6g6lDTsOao9ljbuN+n%2fhTJN%2fZ4w5zJ%2fdilx1ZbBAFg%2f+wAAmNUAsuQAHHIA7PIB4uQApNwAeG4CWHMA2GsCkkkYkDo0QOzU2Tg%2fAAEEEAJFMARnCIFUKIVFBBlhgQhD3ES8Rowh8UgzZDSyGrmC0kFFo+pRK2hRtDO6EP2DyZTpFFMJ0zSzGXMe8yiGG+OKqWbBsGiyxLJMsmqxUllr2RTYotgq2HHs0ezvsSRsEPYzhwnHSY5BnDvuOR6F98ZPEWwIWYRVznjOGaIWsYBLnauAa5rkRlrg9uMu55HjecnrzYfhu80vwX+Ef07gkqCZ4Oymq0LiQhHCCOEyEX+yKLlH9NzmzZujxPBireJpEnskBSSHpO5IG0nfkjGU5ZQdlHsgf1rBVVFFCas0pvzPlvytMSqe28xU5dW41FbURzWyNXGatVql2nnbz+mc0Y3UO6J%2fyIBi6Gfka+xrEmAaZEbfccw8dudZi1zLW7sqrBp391l%2ft8XYCdtr7LFzoDmmOBU7v3GZdeXbp7vf2y31QJX7Zw9eTzOvo95Ffnz+1gEJlLogJNWAFn3oRQgz3eJwepj4UWr4kwi24y4niiIZ0faxyFOucY%2fOcMUfSmhLzkxZSnVLq89QOpeTHXL+U45dbt3l4qsSeZeu8RYSbqTcwt0+eze7RKj0+n2FMuPytgr3x9+reZ8W1Rq+oNfh64sadjYntCi8bnsT2l7fQesS7G7ok+zv%2fpAwqDdcNOr5WWS854vDNM+3rpmcObeFqaWy5UgGH4MBAEhgA16QAT1wgsOQCRUwgMAglBFuiBREDWIWKYt0Q+Yg36HwqF2oJFQLmgO9G52J7mUiM%2fkxlTItMhsxn2V+j5HAHMa8YCGyeLJUsLKzurIWs6HZ9rM9ZGdj92CvwXJjadgWDlmOZI4pnCWuBM+Bp+I7CfqE65w4zlDOXqIp8R4XmSuda40UQvrC7c89wUPhmeGl887zhfMj+JMEBARuC2oK1m9y2DQuFCXML1wuYiMyQY4TlRRt2Bwkxiv2VNxDAivxTDJISkTqrXS8jKHMqmyVXIS8jvyCQo3iGSV7ZVHl6S01W9NU%2fLcZqwqrLqt1qD%2fWuKQZreWj7bhdR0dJV1SPqI82QBnMGH43mjaeNBk1nTWb3PFjJ9KCZMm7a4uV7u7d1rY2AbZH7XLt7+955dDruOJMclHaa+V6aN+F%2fXVuY+6sB5U9fD1zvGq8v%2fnK+Hn5Zwd0BAoG7aHm0j4HS4eE0htDhY6EhDWFix1LiZg44RzZEK0WUxBLPJVymngmK4EvMTdZNeV1qlfaz4zkTPWskfOXc%2fwv7rksc5Upb+ra84KyGxduxd3xuOtaYnpP48G2MsVHCo+lqySqpWuUn+m92FFn85LSeKg5reVq65O2gXZGp0i3To9nX+JA5cepT%2fwjhmNR4zcnh78KfPOeuTw3uiC9FLRcvoZgMACAGQggBIbgDKlQCm837G+4X1ePxqOd0T+YTJlyfnlfw7iyiLDEskyy2rPWsimwXWTHsUezL2CDsJ85PHHuuE94b%2fwUIYSwyhlP5CEWcKlzNZHcSAvcqb9NW%2fHP%2ffJsLYwQLvtl2WZd8i%2fHoTKGfxv+I%2fiX37eatVqlf+z+kfvfu%2f2f1PoM+vH5W%2f9bbWjPv93G3P5bbtLWP3KzmDfsXtLc0Hs9Y8NvEXFD8IOKDcNVJ9cVP+vZcNw43pzw6p+WrNdtb0LfCrXXd9A6S7viuht6Qvsk+wMGjD8kDOoNnf50cLhoZH60%2fbPIeMCE+aT0FOaLw9fC6bhvPt93zMjOss9+nXvz48F81oL9wtRi7JLhT6mfo8uRK3wrl1c5V2NXF9auMxIZDID1+xIAALAZUSnUYLKlkTH8%2f1Yg5fDGHEgAwHoF7bEDACIASPvRze0BgAQAWmAEVKAAFYKBDJZgBMa%2fnmTw+P3FD2D9LgcAwEwAuOgIAFCzeCzq3%2fPSvcLoAABGVNrRYD8fXzrZgEajeJGNqIG0w3SvYHmyeZCHojx5q7KyKgDAfwBYjP%2fgNJJdnQAAAARnQU1BAADY6%2fUcFKoAAAAgY0hSTQAAbZgAAHOOAADeVAAAgmQAAHjTAADDvAAAMucAABx04zkiNwAACnFJREFUeNrsnHts1FUWxz+%2f32%2fenemL0sLQ0kIfUh5ioQiCQGtFRNmCWElFWFwDEohgQNmwJVAx+pcEWERJLFZFDQ93eSgiAtsl8iyV1LYLpaWtpVBK2Q6lj5npvH6zf7QMjFOUxXUTy++bTGZy55x7z9w53zn3nHMzgtfr9aJAgYJuofo1yuXldaxZ8zEej0zv3qGsXbsQg0HL9u0F7NjxTwDS01NYsmSGstMK7j+CtLfbKSmpRpZloqN74%2fHIANTXN3Hy5FkkSSQmJkrZZQX3J0FEUUCrVSPLXtTqW1PFxvYhLe0hRFEiObm%2fsssK7k+C3AlZWRPIypqg7K6CnkmQ8vI6jhz5gZqaBjwemX79evHww4MYM2YIarX0i5NWV1+hqqoeALM5gmHDBgBQUlJNWVkNXi+MHp1MbGwUu3cfpbi4GpfLTXx8X6ZMGc3AgX395jt1qpyqqssApKWlEBxsYM+eo5SV1QKQmNiPp54aQ3R0RLf2uFweTp06y4kTZ6mvtxAcbGDo0DgefzyViIhgP9mqqnqf7QMHmklKiubs2Vr27j1Oc3M7K%2f+STWhHIdhugCB2vwFeGdRGiJkEolrxsp5CEJfLw7p1O9m27R+0t9vxeGQ8HhmNRkV+%2fn5GjnyAN998ibi47vMKQeh8%2fvLL46xduwNJkpg+fTwbN74CwOHDZ1i%2f%2fgtEUWT+%2fKnU1l7l0KHvAdBoVEiSyNat37J8eTZZWRN98+7efYzPPz+IWq1iyZIZFBaWc+LE2QC93Ny5TJqU6mdTXd01cnM%2f5tSpszidLlwuD5IkIkkieXn7eOONFxk%2f%2fkGf%2fJ49x9iw4W8AvPbaTMrLzeTmfkR7ux2tXseSRZMJPf4qNJyH238rhK4HgAcINcPsMtCGK17WUwjyzjvbyc%2ffT1CQjtBQI6mpgzAYdBQXV2CxtFFYeI6lSzexdWsOJpP+jpNqNGqCgw2AgF6vvW1chcmkJyhIz969x7Ba7aSlPURUVDjl5bVcvHiVjg4na9Z8TEREKGlpwwHQ6dSYTAaMRh2ffnoQh8PFpEmphIQYKSur5upVC62tNlas+ICIiFBSUhIAaGpqZdGi9Vy4cBmNRsWgQfEkJfWnoaGJ0tJqrl69ztKl7%2fHhh39m+PB4n+0mkx6tVsOZMxfYvr2gkxxaNSqpixHGEDAZQKXrSsYk8AKO64AIHhdIkuJdPYkgJSXV7NhRgNGoRxQF3n57HpMnjwKgtraR+fPfoa6ukaKi8+za9R1z507+VQvb7U4WL36WRYumAWCzOVi27H2OHy9Flr1s2fK1jyA3Icte3G6ZlSvnMGtWBgDXr7fxyisbKSurwmZz8dFHB0hJ6YxYmzfv9ZFjxoyJrF79RySp81i0adNuNm%2fei9XawaZNe8jLe81vLbVaorS0Go1GxUsvPcUjjwxGlr2E946EJ%2feBx9EZMgSh8xh1+EX48evOqOIGBk5TokcPgO8QfeDAaTo6nLhcbjIyUn3kAIiLi2LhwmlkZIwkM3OcX8XqXuB0uhk8OJZ58572jRkMWl599VkMBh1qtYqKiotUV1%2f5iZ6LUaMG+cgBEB5uYvHiZxBFEa1Www8%2fVHL9ehs2m4MjR4rRaFSEhZlYsOAPPnIAzJ07mZiYSFQqkeLiSl%2fecTsZvV6ZnJzZ5OS8QHp6ChkZIwgyGkAXAUH9IMgMhr5QtrmLHBI4PDDoGZiwQfGunhRBzp+%2fhEolIcteRo16IEBwxozxzJgx%2fn+yqMvlZtiwAWg0%2fkRLSOiH2RxBVdVlXC43dXWNxMebfe+73R5GjEgMmG%2fw4FgiI8O4dq2ZlhYrjY3NSJKAxdKKWq3C7fbw1lufBujZbB1IkoTV2kFFxSUSEvr55WOxsX2YMuXhn%2f8wJX+FE6tBJYLTA3ETYdJW%2fBMUBb9rgng8MnZ7B6IoIIoCvXoF%2f8bLejGZDAGjarVEUJDeR4bWVluATHBwUMBYUJAOrVbti052uwNBEHA4XBiNOhwOFwcPFvHTWzU6nRZRhI4OJ42NzX7veTweoqMj%2fXKoAFTthGPLOsnhliFqKEzeBiqj4lk9iSCSJKLRqJFlkGUZi6U1QLClxUp9fVNnjmrU079%2f5K9YVuDGDWu35Vir1d5pmErCYAh0zhs32gLGrNYOHA5XF8lUaLVq37PT6SYiIoS1axd2fUbZp6fValCpJJxON9HRvbstNtwRlwvg8J%2fg5nwhMTDli84jl4Ked8RKSDBTWHgOlUqiqKiCmTPT%2fATz8%2ffzwQf7AC+zZk1i1ao597yoWq2itLQam83hR4Iff2zgypUmJElCq5WIje3jb2yXbV6vF+FmTRmoqLiExdKCIAiYTHqiosLR6dT06hXMtWvN2O0OBgwwB5Sna2oasFhakSQxoB%2fys7CUwLfZ4LJ1lnZ14fD0bggdpHhUT03Sp04di0ajQq1WUVBwhq++OukTKiqqYPfuo77k%2fPa+wb1Ao1FRWXmJd9%2fdhdvt8VWj1q37AputA5fLTVJSf5KSov30tFoNxcWV5OV97Ru7csXChg1%2fx+Vy43A4efDBeCIigjEa9UycOByn001bm42NG3fR1mb36R05UsLs2W8xc+Yb5OTkIct3eanZWg%2f7n4P2f3cm5YIIo9+EsEFgvXLbox7cVsXDekoEGTEikdmznyAvbx8Gg47c3Hy2bStApRKpqKjDbndis3WQmfloQPn1XmA06snP38%2fRo6VERYVTW9vAtWvNiKIIyLz88tRu9QwGHevX7+SbbwoJDw%2fmwoVLNDe3IQgiBoOa+fNv6S1YkElhYTlVVfUcOnSasrJq+vePwmq1U1l5CbvdiU6nYdmy57o9znV%2ftPoOLBdAowZkECT4%2fm0oXP2TUl0bpL0Pg+cpXtYTCAKwfHk2JpOBzz47iMXSysmT%2f+JmjmI06snOzmDFiudvS2RlX8fdZgvyJcFOp4vWVhuSJGG3OwIWdTicTJ06DoNByyefHKC0tMbXEe%2fVK5jXX8%2fuloQOh5Pnn3+clhYbO3cW4PHI6PUaAMzmXqxcOcfXJASIigrjvfeWsmbNJ5w+fY6amltXYDQaFVFRYSxZ8ixTpoy+5ddOF21tdkRR9OVD%2fumTt7NT7nTd3AXoaAiUcwIuJYL0KIKIosCiRdPIzBzHsWOlXLzYCECfPuGkpj7AkCFxfsqJidFs3ry0qyKk8VV8MjPHkZwciyAImM2B96Pcbhm9Xs2qVXPIyBhBYeE57HYnMTGRpKen3PFOldvtISQkiJycF3jyyVTOnKnE6XQzcGBfHntsBJGRoQE6cXFRbNnyOkVFFZSWVtPU1IJGoyIxMZqxY4fSu3eIn%2fz06Y8ydOgABEEgMjIs0AjzeJi24873sHy%2fHk7oM1rxsJ5EkJuIjo4gO%2fuxX1QOCzMG3H0CiI83+%2fUvuvUfT2e0GTt2CGPHDrlrg29WodLTU0hPT7krHUkSGTMmmTFjkn9RNiGhn18%2fJPBsGAMJMYrn3G9JugIFCu4ygvxWcDrdWK0O3+v%2fTq%2fjv9ZToOB3RZAnnhhFTEwkoigwYMDdN9SysiYwcmQisuwlOTlW+dYU%2fN8gKP9qokDBnfGfAQA9nOAwz2UemwAAAABJRU5ErkJgggo=%22;_2f=%22data:image%2fpng;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAGlCAYAAABAwstlAAANMWlDQ1BJQ0MgUHJvZmlsZQAAeJyV13k0lG0fB%2fDfLIxlzDDGHkb2XWQPWSJL9mwpMXbDTAyplCUpRJZQtKBoU5RIJKqHLAnJklBUZCmFSJZ5%2f5Dqfc553ue81x%2f3+d2%2f+9znuu77nM%2f3OhcAXsuTRqMgASA4hB5qb2ZEcnF1I2F6AAM44AMsiHqSw2iGtrZW8I9jvgcQAABdip40GiUc3ZFJftCtapBvLz7n36D0z+8BAAAu1MXVDQChAABEv7V6KwAQvdZqRwAg7qfT6AAIfwAgkv09vQEQUQCgEOpobwyAuAoAOL+1ugoAcF5rdRMA4CLIfnQARB8AMyHEOyAEADMFwKzv7RNGBsApAIC3dxg5GACXBgDWwcFUbwDcWwCQIdNC6QB4FgBQdHF1I60teVcSwGYBABbL3739WQAVBQAyO373xO8B8HoCFKb87s3aAwIAELztYb5qqgAAgMAaATANMRizUgCYDICVdAZjqZDBWLkEgBoAqKeQw0Mjfv4vBKIN4N%2fu177550AhAJAACAlEMfIgKgodxXSEOQYTx3KU1YS1ge04+wlsIsdJXCWnP1c6IZ07g3iaJ4s3iy+Hv0GQKpS3IU%2f4vEgTKVyscOMl8XbJQ1LF0p2yR+RuyPcoxindVO7fdFz1jtob9ZMalZrD2qk61bqjepn6Dw0mDLONHht%2f3pZr2mg2Y37RosVyfkeh9XObDtsOu077ZcfrO7udepx7Xfrc0Ltuuw%2fsHtwz5PFm71svLPm+93ufD76jfmP+HwPGg3goj4I%2fhXymTtO+7PsaOhM2R58L%2fxYxv38h8vuBxYM%2fDi1HLR9eiZaN6Y5DHEXGo46hE5iOM5%2fAJLIksSaznWRPwaZynMKl4dM5M7gyCae5s4jZPDm8Z%2fjO8ucK5AmeEzq%2f4YLwRZF80QJSodiljZfFiySKJa9IX5W+JnNd9obcjckSyk2FW4qlymUqtzfd2VSuendzhXqlRuX8vYgqzfta1To1ug+21G55qPdwtS663uDR1seGT4z+Mm5AN8Q3bntq2mTWbN5i3srWmvzMss3quXU7rv1Uh22n3Qv7LkJXxkuHbseenb28vTl9zq9c+t1eC77OG3AfdB%2fa%2fUbkzcW3HsN7R8RGCt95vSd%2f8B6VHC0e8%2f3oN+4%2fITtxfTJwKugT5bPi51vTIV+oX2kzm2buzIbOhX2jz6vPVy5EfI9cPPDjwJLOUs3yoZWoVb3VhwwGAEIciUN+QbWibzBlMkdh%2fFgcWY3ZNrNLY6U5+HF8eH5Ofi4eghS3DFGLx4p3D18Yf6pAqWCr0Lgwt4iGqB%2fpjNhTcYSEnuQ+qdvS07IychT5GkWUkqFyusqwqqxawuZeDTlNmlaDDp9u5JZn+rwG1K2PjSSMD5l0moqYRW6vNV+03GTlsyPLutMWZ2dmH+lQ5PjSic15q8s+1%2fNujbumd4vusfE4uLfQs8Fr3JvHx8DXxe+If35AfeBg0GIwd4g81YTmvy8qNC2skF4R3hTxev9E5PxB1CGuKNJhhSPq0VtjLGNt4nYd3Rvvc4ySQD8eeiImMSbpaHLiyYyU5NTcU2fTctLTM85lZpzOzjqTfTXnyplbZ6%2fm3sgrPffg%2fIMLDRef5XcWdBV2Xeq6%2fLroffHYlZGrH65NX%2f96Y7rk882ZW9Olk2VTt8fuDJeP3O2v6Kxsvldfde9+afW5mowHMbXBD3fVWdZveST3mPB48cnbv1oa7jZmPg1tcmjWaBFqYbT2P7vblvTcrV28fbSjvPPwi21duK7Bl%2fndgT1qPSu9bX2Zr3b3y%2fbPvq4eiBu0HCIODb259jZsWHcEPdLy7vT7PR+kP0yNVo%2fFfrQY5xkfnLg8SZlSn1r91Pw5Y3rXF4kvU1%2fLZ6JmzeYIc33fiuapC9rfUd+fLqb%2f2LUkvvRpuXIlZtWcwctgAMBRRCTyIEoXVY0+zGTAVMcciznGYsrSwJrAdpw9CWuBbeVIwaXgUzltONu50ggZ3JnETB5Hnpe82XzZ%2fGcEcgXzhPI2nBN2Fx4UuSiaTyoQK9hYIH5J4rJkkVSx9BWZq7LX5ALkJuSvK5Qo3lS6pVyqUrbptuodtfLNd9UrNSo1K7Uitb5rV+tU69ZseaBXq39Ef9Wgbmu94SOjx8ZPTOK3obc1mDaaPd3eZN5s0WKZbIW1erajzfq5Tbttmh2nXaf9C4cux5c7e5yynXmde136XF+59e%2fKcxdyH9g9uOeNx9u9bz0LvMS8RsjvvN%2f7fPAt9pNaS5DAiaAbFAXK1H+lyOyvFKk6oHVg8eCPQ0tRy4dXjqxGM2IhDvkrSTAnMIksic1JFsnsJ7Ep2FSOU%2fg0znSuX1nCm8N3hv9nlmz4M0sKRy6RL4sXSRRLXZFaT5MShZuKt5T+yBK1is2V6vc0qzTva1Vr1+g+0K3d8lC%2fTv+PHNnWaPrUtMmseXuLeavls4jnG9utO2w7bV%2fYdR3ulutx6nXui+tXfu02kDCk9iZxWH3k5HvvUd2x9PGAycBPlGnq16Q5t%2flTi8kr9gwGwNreBwDArAGQLQ%2fglAvgUAiQIA8g7QHAexXAlgPAURuQTCKA1KMBwkJvff8ABHCCMCiBEbhCGKRBGXxHkBCWiEjEVcRzxBgSjzRDxiJrkcsoPVQsqhG1jBZDu6KL0d+YTJmOMZUyTTObMRcwj2J4MO6YWhYMizZLPMskqw4rlbWeTZEthq2KHccey%2f4KS8SGYD9ybOM4yjGM88Q9xqPwvvgpTjvObM4VrkSuGYIOoYhbk7uIe5roQVzgCeCp5JXnfcrny4%2fhvy4gKbBfYE7wvJCZ0OyGfGEJ4SgRhEiFaCBJjNQvdnrjxo0x4njxdol0yZ1SglIj0jdkjGWuyRrJcckNy5crHFd0V1JTxiqPqfy1qVA1Ts17s5m6gga3xrLmqFaONk67XqdMt2DLab0T+tEG+7fuM6QYBRj7m%2fhvCzINMaNvP2Qeb3HKMs%2fq2o4q62abAduv9hgHEUetnQ5ONOdUl1uuHW6z7vy79ff4eqTtrfH8SObzNvM54FsSwB9oG5REaQhBUg1psfuehDHTLcMzIiUOUA8+iGI77HakJJoR6xiPPOaecO8Ed+K+pM6UrNTFNI%2f0xkzl07k5YWfe5TrkNVy4lS9ZcP4SXzHnldRruOunbuaUCpddvqNYYVLZWeV5%2f2st38OSeqMn9AZ8Y0mTRWtSm+Lzzo6IrsZuWq9QX9OA1GDfm6Rhg%2fclo94fRcf7PzlN837pncmd81iYWqxYimbwMxgAgAQ24ANZMAAXCIcsqIIhBAahgvBApCLqELNIOaQHMhf5EoVH7UCdRLWhOdA26Cz0ayYSUwBTGdN3ZmPmU8yvMJKYcMwTFgKLN0sVKzurO+stNjTbHra77GzsZPY6LA+Whm3jkONI4ZjCWeFK8Rx4Kr6HcyvnZS4cVwTXa4Ip4TY3iTuDe5UYRvzEE8gzwUvhneGj883zHxRACJwUFBS8LqQt1LjBacO4cIyIgEilqJ3oBClBTEqsaWOIOJ%2f4QwmyJFbykVSItKj0C5lEWSPZFbka+SgFPYUFxTqlE8qOKmIq05vqVNPVAjebqIuoL2l0a97XOq8dq+On67xFT09ZX8yAsBVtiDKcMfpqPG0yuW3UdNZscvs3C6Ql0YpvxyZrfRsbW3u7IPsDDnmOd3Y+c3rtvOxKdFPeZe2+b%2ffZPQ0eY56sXipkf+9cnzrfL%2f6yAT6BOUHdwUIhO6l5tI+hMmER9OYI4f1hkS0HxQ+lRk0ccY1uitWIK4onHEs9TjiRncSfnJeinvo8zSf9R2ZKlmb2hzMXcgPP7bwgm89UMHXpcVHFlbPXEm6Qb7qXmt7WKt9coXRP8b5MjWStTJ3KI4Mn2xvsnlKa97Wmt+W3P+gc6mL0iPbp9XsPJA9Vv516J%2fDBaCxm%2fOrk+8+CX3xnLsyNLsgshixVriIYDABgBk4QBiNwhTQogxfr9tfdr6lH49Gu6G9Mpky5P72vYtxZRFniWSZZHVnr2RTZzrHj2GPZF7Ah2I8c3jhP3Du8L36KM4xzhSuRwEso4tbkbiF6EBd40n6ZthaY++nZVgQhUvHTst2a5J+OI2SN%2fjT8W%2fBPvy+063XKftv9Lfef3f4vtX7DAfyBtn9XG9H%2fd7dx1%2f+Ue1L1t9xs5nW757XX9V7OXPdbQlgXXF61brjm6JriR%2f3rjpvHW5Oe%2fdWW%2fbyzI+KFcFdjN62nrDehr6k%2fYkBqMGjI5E3SsMHI8Xde70s+zI92fRQdD5own5SZwnxy+lw8nfDF7+v2GblZ9tnPcx3fyuezFxwXpr7HLxr9kP4xuhS9zL98YYVrJX5lYfUyI5nBAFg7LwEAAJsxlUINJVkZm%2fzL4e7%2fHcGU8PU5kACA9QnZ6QAABACQCaCbOwIAEQB0wBioQAEqhAIJrMAYTH5eSUD+9SQAYO0sBwDAzAlwzhkAoO77oZi%2fz0v3iaQDABhTaQdCA%2fz86SRDGo3iQzKmBtPC6T6hCiTzELKSAklVRUUdAOA%2f67wHk5DqTvYAAA7ISURBVHic7d1NjNz3Xcfx78w+2Y7tJo5rjEOVh6YoNaWAcqgSIiFURYVWEEJIT9wRF4SK4AZCQoJLIwWJCxcuHCo1TaJIqE3CgyrIg+K2qKVpm0DzUMWpHSdO4ti7ftjdGQ6zf+9%2f%2f95N7Zm1vZ%2fk9ZL+mp3Z2ZnxYd%2f6%2fn7z33EVAAAAAAAAAAAAAABsJb0P2fMCm2d4pZ%2fwSoSj+xy9DW7f6P7A1deN00bXL2vELlccuo%2fbX7mtHavu9cv5eoDJDda5Pqy1sepe31SbHYj247Uj1V%2fnst%2f6md4GjwFsDetFqTkGrWO9729auKY364HqwumpX1VTtRqnqc71dtDWm7aAq2%2fY+bq53o7Ucufr5noTs+7jjG2zgtVEph2n5uuZqpo6cOCOj+39yK2fn5nZ8dler39Tr9ff1+v1rtmk5weukOFwOD8cDo4NB4OfnFta+Pe33n3x8SNHDh2uUagWazVayzVqQzdeY9uMaaY9ITWxml45Zm644c4b9u05+Bcz03NfrOpNbcLzAVvKcHlx8czXjh7%2f%2fpePHDn0eo2itdQ6lmvt0nFskwarvYxrh2q6quYO3vrFz+%2fc+dG%2fr15v54TPA2xxw+Fw%2fuTJo1964aWHH6+qszUKV3O0l41jLw8nmXg2itVMVW3%2f9ME%2f%2fKPt26%2f%2fcq%2fXm5vgOYAQvV5vdnZ21xf2XPfx08feev75zrc3ZQ9rkgmrvQxsQjVTVdtu+%2fh9X9i1a%2f8%2f9nq9NY9%2f8y37655776zP3HFb7d+%2fp3bs0DJIs7Bwto4efbuee%2faFeuzRZ+qVl4+u+f5wWIMTJ177k%2f995bFvVNWZGk1bZ2t1edhMW5ds3GB196xmaxSruX37fu2mGw%2fc+a%2ftDfXp6an60z%2f7%2fbrv%2fruq3++v%2f4hAnMFgUA8%2f9FQ9+MAjtbS0fP724XA4%2f%2fJr3%2fzd48d%2f8GqNonWmqs7V6r7WWPtZ4y4Jm2A1pyrM1Cha2z9x02%2f%2f1fT07K82d5yenqoH%2f+GP6+7P3V6dgQsI1+v16pc+dWN9+lduricf%2f04NBsPm9tkd266%2f9o03v%2feftbpv1d58rxpjmThJsJpTF2aqaq6q5vbu%2feWb9u659e+qeufHqC%2f9+R%2fU3Z+7fcynARLccMPe2r17Rz3z9A%2fP3zY9PfuJhbMnvnHmzPH3au27hGOf4jDO+qx7GkOz2T67b89tv9U+deHmW%2fbXffffNc7rAsLcd%2f9ddfMt+1u39Kb2XX%2fw7qraXqvbRu1zNC95yTXJhlL77PWZqpqdm939G+073HPvnfas4EOi3+%2fXPffeuea27XPX%2fXqNVmCztTrcTNWFf5J3cc8x5mtb7x3CuX5%2f+hfad%2frMHbeN+fBAou7vfH9q5kBVbatRsGZr7YR1ycYNVvtPcM4vCfv9qb3tO+3fv2fMhwcSdX%2fnp3pT19dowmpOe2omrO4nuFyUcfewmssmXNNVNdPr9be37+g8K%2fhw6f7O9%2fpTzXTV7F+NHauqyZaE7T2sZsoC6Gomq+a4Ypvu3Y+D6XcOgK7uR0t1+3HRJt10735CA0BX+93Bsaerqsmmom4lncYOrGe9yeqKB6vqwkkLoGviUDUmnbAAfpaN3hG8ome6t1+ICQvYyHr%2fW9ZVWRIC%2fCybthoTLCDGJKc1AIzrii4Ju2tRAQPez0a9uGJ%2fSwhwsd6vGxfdFHtYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEmCRYw84BsJFN6cU4wRIo4FJ1mzF8n+9taNwJS7CAzXBJLbGHBcTYzGCZuoD1bFobNnXCGg6Wz7SvLyyc3cyHB7a47u%2f8YLB8trZQsAY1ejGDqhouD5beaX%2fz6NG3J3x4IEn3d355sHhi5cvmzbpBTfDG3STBGrReSFXVcHn53BvtOzz37AsTPDyQpvs7v7R05q26MFLdy4u2GUvCwcqxPL9w7L%2fb33js0WdqMBis%2f1PAB8pgMKjHHn1mzW2n5o8+X1XLreOKnofVPflr0D6OvvU%2fh4bD4flCvfLy0Xr4oafGfW1AkIcfeqpeefno+evD4XBw7Pj3v1udTrSOS47XJOdhtZ94qaqWTp16%2fY35hWNPt+%2f44AOP1LcOvTjm0wAJvnXoxXrwgUfW3HZq%2fsi35+ffOFYrfajVKasdrEsyNebr61fV9MrPz6wcs1U1d%2frsu0f2XveLv9nr9aerqgaDYT35+Hdq9+4d9cmDH6terzfmUwJbzWAwqK999b%2fqr%2f%2fyn2tpabl1+%2fLZH7%2f6xD8tLs6%2fXVWnqmqhqs5U1dmqOldVi7Uar4s2TrB6K0d%2f5ZiqUbxmq2rm3LmTg15v+p1dOw%2fc3utVb%2fTih%2fXM0z+s%2f%2fi379bi4nJds3Nbzc3N1szM9BhPD1xNCwtn67XX3qzHv%2f7t+tu%2f+Up9%2fV8O1WCwOiwNh8Ph60cOfeWdd%2f%2fvxaqabx1nVo52sC5pyhpn3OnV6mQ1W1XbqmpnVe2qqo9U1bVVteeWGz%2f7O9dfd9vv9YxU8KExHA6Hbx7%2fwROvvvbNJ6vqnap6d+XyRFW9V6NJ63SNJq1mmXjR0Rp3wqoaTVdNvJpjujneOfHK4RrU8Z07f%2f6TzfIQ+OAaDJbOHf7pcw8fPvLsszVaBp6q1emqvSRcrFGsmr2sizbuHlbV6rKwuZyq1YD1q6p%2fcv6nx989+ZPnt81du3N2dtfPmbbgg2c4HA7eO3n4+R+%2f+sRX3z3x0ks1CtXJ1uXCytGOVROsSzJuQJowNRPVtqrasXLsWjl2ty6v2b597%2f6P7jn4qd07D9w6PbP9uumpuWv6%2femZMZ8fuEoGg6XFpeWz84uLp0+cPHX45Tff%2ftGPTp8+%2fmaNlnpNqN5rHfMrtzVLwXO19rysizZJsLob7ttWjmtqtKe1s1ZitfL19pVjbuX+zbuMzZRW5dMjYCtqn5nenNK0XKNpabFGETpTq0u%2f9nTVLAtP1yhUzZQ11qkN4+4tNS+613rh7eVhr%2fWPa8a%2fsyvHbK0Ga7rzc1XjRxS4fAaty2Y6WqrR736zN7VQq9NU83V7qmqfyjDWeViTboZ3a9trHe1gnavRP+p0rR+s9pQlWLD1dKerQY1+55upqZmymv2qM63Lc7X6juBYoWpMEqzmxW%2f0vabCzT%2fqdI2WjLM1OiWiWU62gyVWsDW1%2fySv2TBvJqxmgmomrTO19iTRJljt0xjGitZmTVhVo9gsdm5vV3i2RtGaqbXTVfPuYjtW9rLg6lvv0xWaCamJTxOi9v5Uc9nEqrnfRB8tUzV5sKounLQWa+3oOFOre1hNrJrztjaarkxacPWtF5b23xA3IWoum32q9qkL7VhNtBys2pxgNdqbcu1gNWNjO1TN0d5sb09VggVbR3sqan7P25vn3T9ubp9n1XSgasJYVW1+GLonk645kbTWn6zaobIUhK2ne1pD1doYtb9u9qgm+hiZjVyOSaZ7TlW%2fLlz6rffOoKkKtrbup4a2V1ODdW6rWrtdNLHLGYn1YtTdrxIqyNKelNofk77esemuVCy6z7NRqMQLtq71%2fvfmsf4H53FttUBstdcD+D9HAQAAAAAAAAAAAAAAIN3%2fA%2fPNWgCA%2fF3MAAAAAElFTkSuQmCCCg==%22;_30=%22data:image%2fpng;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAIAAAC0D9CtAAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGiSURBVHjaYvz%2f%2fz8DiYAFU+jhg5cXLtx9%2f+4LLy+nlpa8hpYsIyMjTj03rj%2fu71l74fxdZEEFRfG8wkBrG224CCPcbfv2XKivWfjr1x+s7snM8U1IcoOwmeA24NEABNOnbN698yyKHqCTIBrcPU2WrKiIjHYEsh2c9BctK0tMcYeomdC37sePXyAW0G0P7r8wM8yBoFs3n%2fwHgwP7L%2f79+xfI+Pnzl6VpHkR27+7zQBGQPcie3rr5JIRh76DHxASS3bHtzN8%2f%2fyCCF87fgbrt%2ffsvcD3Ll+4%2feOASnPvg%2fsuO1hVwLjACoHqA8QAXBfrB1k4HOaDjEl3hXF4+LqgeYMTBRZNS3CFOAtoAEUlIdGNmgQaVlrYcVA8wpoHmQUT377v469fvTRuOR4W1zZi25cf3X6DAAPuHi4vd1l4XEadHj1wtypsB0QY0Fe5pZHZOvn9svAsifoBJAxjTEDZcETLbw8s0Js4ZPe0AATCmgRH35vUn5BQAdFJSqgdQAzylMqLlBWBMHztyDRgPoHTNxwX0NNAP%2fPzcyGoYycg%2fAAEGABYVzxqE3YcJAAAAAElFTkSuQmCCCg==%22;_2b=document.createElement(%22div%22);_2b.setAttribute(%22id%22,%22clipperz_bookmarklet%22);_32=%22%22;_32+=%22%3Cstyle%3Ediv#ClipperzBackgroundDIV{width:290px;height:420px;padding:20px%200px%200px%2020px;margin:0px;border:0px;background-color:transparent;background-repeat:no-repeat;position:absolute;z-index:20000;top:40px;left:40px;background-image:url(%22+_2f+%22)}%3C%2fstyle%3E%22;_32+=%22%3Cdiv%20style=%5c%22border:0px;margin:0px;padding:0px;padding-left:10px;%5c%22%3E%22+%22%3Cimg%20style=%5c%22padding-top:5px;%5c%22%20src=%5c%22%22+_2e+%22%5c%22%3E%22+%22%3Ca%20href=%5c%22javascript:closeBookmarklet();%5c%22%3E%22+%22%3Cimg%20style=%5c%22padding-left:28px;padding-bottom:10px;%5c%22%20border=0%20src=%5c%22%22+_30+%22%5c%22%3E%22+%22%3C%2fa%3E%22+%22%3C%2fdiv%3E%22;if((_29!=null)&&(_2a==null)){_32+=%22%3Cdiv%20style=%5c%22width:255px;border-top:1px%20dotted%20%23336;%5c%22%3E%22+%22%3Cdiv%20style=%5c%22line-height:10pt;margin-right:10px;margin-top:5px;padding:5px%2010px;color:%23666;text-align:left;font-family:sans-serif;%5c%22%3E%22+%22%3Cp%20style=%5c%22margin:0px;font-weight:bold;font-size:10pt;font-family:sans-serif;%5c%22%3EHow%20to%20add%20a%20new%20card%20or%20a%20direct%20login%20to%20an%20existing%20card%20for%20this%20website:%3C%2fp%3E%22+%22%3Col%20style=%5c%22padding:0px%200px%200px%2020px;font-size:9pt;font-family:sans-serif;%5c%22%3E%22+%22%3Cli%3ECopy%20the%20content%20of%20the%20text%20area%20below(Ctrl-C)%3C%2fli%3E%22+%22%3Cli%3EGo%20to%20your%20Clipperz%20account%3C%2fli%3E%22+%22%3Cli%3EClick%20%5c%22Add%20new%20card%5c%22%20or%20select%20the%20related%20card%3C%2fli%3E%22+%22%3Cli%3EPaste%20the%20direct%20login%20configuration(Ctrl-V)%3C%2fli%3E%22+%22%3Cli%3EComplete%20and%20review%20the%20details,then%20click%20%5c%22Save%5c%22%3C%2fli%3E%22+%22%3C%2fol%3E%22+%22%3C%2fdiv%3E%22+%22%3C%2fdiv%3E%22;_32+=%22%3Ctextarea%20id=%5c%22bookmarklet_textarea%5c%22%20style=%5c%22border:2px%20solid%20%23333366;font-family:sans-serif;font-size:8pt;color:%23336;width:240px;height:135px;padding:4px;background-color:white;margin:0px%2010px;%5c%22%3E%22+sj(_29)+%22%3C%2ftextarea%3E%22;}else{if((_29==null)&&(_2a==null)){_32+=%22%3Cdiv%3ENo%20login%20form%20has%20been%20found%20on%20the%20page%3C%2fdiv%3E%3Cdiv%3EGet%20some%20help%20%3Ca%20href=%5c%22%23%5c%22%3Ehere%3C%2fa%3E%3C%2fdiv%3E%22;}else{_32+=%22%3Cdiv%3EAn%20error%20happened%20while%20processing%20the%20page%3C%2fdiv%3E%3Cdiv%3EGet%20some%20help%20%3Ca%20href=%5c%22%23%5c%22%3Ehere%3C%2fa%3E%3C%2fdiv%3E%3Cdiv%3E%22+_2a.name+%22%20-%20%22+_2a.message+%22%3C%2fdiv%3E%22;}}_2b.innerHTML=%22%3Cdiv%20id=%5c%22ClipperzBackgroundDIV%5c%22%3E%22+_32+%22%3C%2fdiv%3E%22;document.body.appendChild(_2b);if((_29!=null)&&(_2a==null)){_31=document.getElementById(%22bookmarklet_textarea%22);_31.focus();_31.select();}};getLoginFormConfiguration=function(){var%20_33;try{_33={};_33.page=pp();_33.form=fp(flf(document,0));_33.version=%220.2.3%22;lfp(_33,_cble);}catch(e){lfp(_33,e);}};getLoginFormConfiguration();', 'CrossWindowsBookmarklet_TEST');
55 console.log("runBookmarkletScript"); 53 console.log("runBookmarkletScript");
56}; 54};
57 55
58init = function () { 56init = function () {
59 MochiKit.Signal.connect('newWindow', 'onclick', newWindow); 57 MochiKit.Signal.connect('newWindow', 'onclick', newWindow);
60 MochiKit.Signal.connect('runBookmarkletScript', 'onclick', runBookmarkletScript); 58 MochiKit.Signal.connect('runBookmarkletScript', 'onclick', runBookmarkletScript);
61}; 59};
62 60
63MochiKit.DOM.addLoadEvent(init); 61MochiKit.DOM.addLoadEvent(init);
diff --git a/frontend/gamma/tests/tests/Components/crossWindowsBookmarklet/index.html b/frontend/gamma/tests/tests/Components/crossWindowsBookmarklet/index.html
index 50928d2..0247fcc 100644
--- a/frontend/gamma/tests/tests/Components/crossWindowsBookmarklet/index.html
+++ b/frontend/gamma/tests/tests/Components/crossWindowsBookmarklet/index.html
@@ -1,70 +1,68 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Cross Window Bookmarklet execution - test</title> 26 <title>Cross Window Bookmarklet execution - test</title>
29 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 27 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
30 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 28 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
31 29
32 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 30 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
33 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 31 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
34 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 32 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
35 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script>
36 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
40 38
41 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script>
46 44
47 <script type='text/javascript' src='./CrossWindowsBookmarklet_test.js'></script> 45 <script type='text/javascript' src='./CrossWindowsBookmarklet_test.js'></script>
48<script> 46<script>
49 Clipperz_IEisBroken = false; 47 Clipperz_IEisBroken = false;
50</script> 48</script>
51 49
52<!--[if IE]><script> 50<!--[if IE]><script>
53Clipperz_IEisBroken = true; 51Clipperz_IEisBroken = true;
54</script><![endif]--> 52</script><![endif]-->
55 53
56 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/clipperz.css" /> 54 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/clipperz.css" />
57 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/compact.css" /> 55 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/compact.css" />
58 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/ytheme-clipperz.css" /> 56 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/ytheme-clipperz.css" />
59 57
60</head> 58</head>
61<body> 59<body>
62 60
63<div id="tableWrapper"></div> 61<div id="tableWrapper"></div>
64 62
65<ul> 63<ul>
66 <li><a href="#" id="newWindow">open window</a></li> 64 <li><a href="#" id="newWindow">open window</a></li>
67 <li><a href="#" id="runBookmarkletScript">run bookmarklet script</a></li> 65 <li><a href="#" id="runBookmarkletScript">run bookmarklet script</a></li>
68</ul> 66</ul>
69</body> 67</body>
70</html> 68</html>
diff --git a/frontend/gamma/tests/tests/index.html b/frontend/gamma/tests/tests/index.html
index 9775f93..8d89092 100644
--- a/frontend/gamma/tests/tests/index.html
+++ b/frontend/gamma/tests/tests/index.html
@@ -1,45 +1,43 @@
1<!-- 1<!--
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24--> 22-->
25 23
26<html> 24<html>
27<head> 25<head>
28 <title>Complete TEST suite</title> 26 <title>Complete TEST suite</title>
29 <script type="text/javascript" src="../../js/MochiKit/MochiKit.js"></script> 27 <script type="text/javascript" src="../../js/MochiKit/MochiKit.js"></script>
30 <script type="text/javascript" src="../SimpleTest/TestRunner.js"></script> 28 <script type="text/javascript" src="../SimpleTest/TestRunner.js"></script>
31</head> 29</head>
32<body> 30<body>
33<script> 31<script>
34TestRunner.runTests( 32TestRunner.runTests(
35 'Clipperz/index.html', 33 'Clipperz/index.html',
36 'Clipperz/Crypto/index.html', 34 'Clipperz/Crypto/index.html',
37 'Clipperz/PM/index.html', 35 'Clipperz/PM/index.html',
38 'Clipperz/PM/DataModel/index.html', 36 'Clipperz/PM/DataModel/index.html',
39 'Clipperz/PM/UI/index.html', 37 'Clipperz/PM/UI/index.html',
40 'Clipperz/PM/UI/Web/index.html', 38 'Clipperz/PM/UI/Web/index.html',
41 'Clipperz/PM/UI/Web/Controllers/index.html' 39 'Clipperz/PM/UI/Web/Controllers/index.html'
42); 40);
43</script> 41</script>
44</body> 42</body>
45</html> \ No newline at end of file 43</html> \ No newline at end of file