summaryrefslogtreecommitdiff
path: root/frontend/gamma/tests/tests/Clipperz/PM/Crypto.html
Unidiff
Diffstat (limited to 'frontend/gamma/tests/tests/Clipperz/PM/Crypto.html') (more/less context) (ignore whitespace changes)
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/Crypto.html281
1 files changed, 281 insertions, 0 deletions
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/Crypto.html b/frontend/gamma/tests/tests/Clipperz/PM/Crypto.html
new file mode 100644
index 0000000..f95e994
--- a/dev/null
+++ b/frontend/gamma/tests/tests/Clipperz/PM/Crypto.html
@@ -0,0 +1,281 @@
1<!--
2
3Copyright 2008-2011 Clipperz Srl
4
5This file is part of Clipperz's Javascript Crypto Library.
6Javascript Crypto Library provides web developers with an extensive
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please
11refer to http://www.clipperz.com
12
13* Javascript Crypto Library is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version.
17
18* Javascript Crypto Library is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details.
22
23* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see
25 <http://www.gnu.org/licenses/>.
26
27-->
28
29<html>
30<head>
31 <title>Clipperz.PM.Crypto - TEST</title>
32
33 <script>
34 jslog_config_enabled = true;
35 clipperz_profiling_enabled = true;
36 </script>
37
38 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
39 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
40 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
41
42 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
45
46 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
47 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
49 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
50 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script>
51 <script type='text/javascript' src='../../../../js/Clipperz/Profile.js'></script>
52
53 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
54 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
55 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
56 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
57 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
58 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
59
60 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
61 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
62 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
63
64 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script>
65<!--
66 <script>
67 MochiKit.DOM.addLoadEvent(MochiKit.Base.partial(MochiKit.LoggingPane.createLoggingPane, true));
68 MochiKit.Logging.logger.useNativeConsole = true;
69 </script>
70-->
71</head>
72<body>
73<pre id="test">
74
75<script type="text/javascript">
76
77
78Clipperz_PM_Crypt_test = function() {
79 varkey;
80
81 var plainData;
82 var encryptedData;
83 var decryptedData;
84
85 var result;
86 var expectedResult;
87
88 var plainText;
89 var longPlainText;
90
91 key = 'trustno1';
92
93 plainText = "Lorem ipsum dolor sit amet";
94 longPlainText = "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.";
95
96 //
97 //hashing
98 //
99 plainData = new Clipperz.ByteArray(plainText);
100
101 result = Clipperz.PM.Crypto.encryptingFunctions.versions['0.1'].hash(plainData);
102 is(result.length(), (256/8), "encryptingFunctions.versions[0.1].hash generate a 256 bit signature with a short text");
103
104 result = Clipperz.PM.Crypto.encryptingFunctions.versions['0.2'].hash(plainData);
105 is(result.length(), (256/8), "encryptingFunctions.versions[0.2].hash generate a 256 bit signature with a short text");
106
107
108 plainData = new Clipperz.ByteArray(longPlainText);
109
110 result = Clipperz.PM.Crypto.encryptingFunctions.versions['0.1'].hash(plainData);
111 is(result.length(), (256/8), "encryptingFunctions.versions[0.1].hash generate a 256 bit signature with a long text");
112
113 result = Clipperz.PM.Crypto.encryptingFunctions.versions['0.2'].hash(plainData);
114 is(result.length(), (256/8), "encryptingFunctions.versions[0.2].hash generate a 256 bit signature with a long text");
115
116
117 //
118 //encrypting / decripting
119 //
120 plainData = plainText;
121
122 encryptedData = Clipperz.PM.Crypto.encryptingFunctions.versions['0.1'].encrypt(key, plainData);
123 decryptedData = Clipperz.PM.Crypto.encryptingFunctions.versions['0.1'].decrypt(key, encryptedData);
124 is(plainData.toString(), decryptedData.toString(), "encryptingFunctions.versions[0.1] of encrypt/decrypt functions work with a short text");
125
126 encryptedData = Clipperz.PM.Crypto.encryptingFunctions.versions['0.2'].encrypt(key, plainData);
127 decryptedData = Clipperz.PM.Crypto.encryptingFunctions.versions['0.2'].decrypt(key, encryptedData);
128 is(plainData.toString(), decryptedData.toString(), "encryptingFunctions.versions[0.2] of encrypt/decrypt functions work with a short text");
129
130//console.time("encrypt-256-short");
131 encryptedData = Clipperz.PM.Crypto.encryptingFunctions.versions['0.3'].encrypt(key, plainData);
132//console.timeEnd("encrypt-256-short");
133//console.time("decrypt-256-short");
134 decryptedData = Clipperz.PM.Crypto.encryptingFunctions.versions['0.3'].decrypt(key, encryptedData);
135//console.timeEnd("decrypt-256-short");
136 is(plainData.toString(), decryptedData.toString(), "encryptingFunctions.versions[0.3] of encrypt/decrypt functions work with a short text");
137
138
139 plainData = longPlainText + longPlainText + longPlainText + longPlainText + longPlainText + longPlainText + longPlainText + longPlainText;
140
141/*
142 encryptedData = Clipperz.PM.Crypto.encryptingFunctions.versions['0.1'].encrypt(key, plainData);
143 decryptedData = Clipperz.PM.Crypto.encryptingFunctions.versions['0.1'].decrypt(key, encryptedData);
144 is(plainData, decryptedData, "encryptingFunctions.versions[0.1] of encrypt/decrypt functions work with a long text");
145
146 encryptedData = Clipperz.PM.Crypto.encryptingFunctions.versions['0.2'].encrypt(key, plainData);
147 decryptedData = Clipperz.PM.Crypto.encryptingFunctions.versions['0.2'].decrypt(key, encryptedData);
148 is(plainData, decryptedData, "encryptingFunctions.versions[0.2] of encrypt/decrypt functions work with a long text");
149
150 encryptedData = Clipperz.PM.Crypto.encryptingFunctions.versions['0.3'].encrypt(key, plainData);
151 decryptedData = Clipperz.PM.Crypto.encryptingFunctions.versions['0.3'].decrypt(key, encryptedData);
152 is(plainData, decryptedData, "encryptingFunctions.versions[0.3] of encrypt/decrypt functions work with a long text");
153*/
154
155 {
156 var deferredResult;
157 var startTime;
158 // var nonce;
159
160 // nonce = new Clipperz.ByteArray("0x00000000000000000000000000000000");
161 plainData = plainData + plainData + plainData + plainData + plainData + plainData + plainData + plainData;
162MochiKit.Logging.logDebug("plainData length: " + plainData.length);
163 startTime = new Date();
164
165 deferredResult = new MochiKit.Async.Deferred();
166
167 deferredResult.addCallback(function() {
168 return Clipperz.PM.Crypto.deferredEncrypt({key:key, value:plainData, version:'0.3'});
169 // return Clipperz.PM.Crypto.encrypt(key, plainData, '0.3' / *Clipperz.PM.Crypto.encryptingFunctions.currentVersion* /);
170 });
171 deferredResult.addCallback(function(aResult) {
172 MochiKit.Logging.logDebug("encrypting: " + (new Date() - startTime));
173 startTime = new Date();
174 return aResult;
175 });
176 deferredResult.addCallback(MochiKit.Async.wait, 1);
177 deferredResult.addCallback(function(aResult) {
178 MochiKit.Logging.logDebug("pause: " + (new Date() - startTime));
179 startTime = new Date();
180 return aResult;
181 });
182 deferredResult.addCallback(function(anEncryptedValue) {
183 return Clipperz.PM.Crypto.deferredDecrypt({key:key, value:anEncryptedValue, version:'0.3'});
184 });
185 deferredResult.addCallback(function(aResult) {
186 MochiKit.Logging.logDebug("decrypting: " + (new Date() - startTime));
187 startTime = new Date();
188 return aResult;
189 });
190 deferredResult.addCallback(MochiKit.Async.wait, 1);
191 deferredResult.addBoth(function(aDecryptedValue) {
192 is(plainData, aDecryptedValue, "deferredEncript/deferredDecript functions work with a long text");
193 });
194
195
196
197/*
198 deferredResult.addCallback(function(aResult) {
199 var i,c;
200 var currentChar;
201 var unicode;
202
203 unicode = 150;
204
205 c = 100000;
206 startTime = new Date();
207 for (i=0; i<c; i++) {
208 currentChar = String.fromCharCode(unicode+1);
209 }
210 MochiKit.Logging.logDebug("String.fromCharCode: " + (new Date() - startTime));
211 });
212
213 deferredResult.addCallback(function(aResult) {
214 var i,c;
215 var currentByte;
216 var unicode;
217
218 currentByte = 150;
219
220 c = 100000;
221 startTime = new Date();
222 for (i=0; i<c; i++) {
223 unicode = (currentByte & 0x0f) << (6+6);
224 }
225 MochiKit.Logging.logDebug("(currentByte & 0x0f) << (6+6): " + (new Date() - startTime));
226 });
227
228 deferredResult.addCallback(function(aResult) {
229 var i,c;
230 var currentByte;
231 var byteArray;
232
233 currentByte = 150;
234
235 byteArray = new Clipperz.ByteArray(plainData);
236 c = byteArray.length();
237 startTime = new Date();
238 for (i=0; i<c; i++) {
239 currentByte = byteArray.byteAtIndex(i);
240 }
241 MochiKit.Logging.logDebug("byteAtIndex: " + (new Date() - startTime));
242 });
243*/
244
245 deferredResult.addBoth(function() {
246 SimpleTest.ok(true, "COMPLETED all tests");
247 SimpleTest.finish();
248 })
249
250 deferredResult.callback();
251 }
252
253 SimpleTest.waitForExplicitFinish();
254}
255
256//#############################################################################
257
258try {
259 MochiKit.Signal.connect(Clipperz.Crypto.PRNG.defaultRandomGenerator(), 'readyToGenerateRandomBytes', Clipperz_PM_Crypt_test);
260
261 Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
262 SimpleTest.waitForExplicitFinish();
263} catch (err) {
264
265 var s = "test suite failure!\n";
266 var o = {};
267 var k = null;
268 for (k in err) {
269 // ensure unique keys?!
270 if (!o[k]) {
271 s += k + ": " + err[k] + "\n";
272 o[k] = err[k];
273 }
274 }
275 ok ( false, s );
276}
277
278</script>
279</pre>
280</body>
281</html>