author | Giulio Cesare Solaroli <giulio.cesare@clipperz.com> | 2013-04-19 15:09:28 (UTC) |
---|---|---|
committer | Giulio Cesare Solaroli <giulio.cesare@clipperz.com> | 2013-04-19 15:09:28 (UTC) |
commit | 074e70457c90344b3c1cb236105638d692a0066b (patch) (side-by-side diff) | |
tree | c5ffabd3eaf74cbeb69974beacdb5a5f8c235adc /frontend/gamma/tests/tests/Clipperz/PM | |
parent | 48c9280c9a255f2a85ad5729830df884e64a9c5d (diff) | |
download | clipperz-074e70457c90344b3c1cb236105638d692a0066b.zip clipperz-074e70457c90344b3c1cb236105638d692a0066b.tar.gz clipperz-074e70457c90344b3c1cb236105638d692a0066b.tar.bz2 |
Fixed an issue on the AES-CTR block mode
The previous version of the CTR encoding was incrementing the counter in a weird way, mixing up data from the previous block.
The current fix can correctly decrypt data encoded with AES-CTR using other libraries/languages (currently tested only with Python).
Diffstat (limited to 'frontend/gamma/tests/tests/Clipperz/PM') (more/less context) (ignore whitespace changes)
9 files changed, 124 insertions, 1 deletions
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/Crypto_v0_4.html b/frontend/gamma/tests/tests/Clipperz/PM/Crypto_v0_4.html new file mode 100644 index 0000000..1ed863a --- a/dev/null +++ b/frontend/gamma/tests/tests/Clipperz/PM/Crypto_v0_4.html @@ -0,0 +1,60 @@ +<!-- + +Copyright 2008-2013 Clipperz Srl + +This file is part of Clipperz, the online password manager. +For further information about its features and functionalities please +refer to http://www.clipperz.com. + +* Clipperz is free software: you can redistribute it and/or modify it + under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + +* Clipperz is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Affero General Public License for more details. + +* You should have received a copy of the GNU Affero General Public + License along with Clipperz. If not, see http://www.gnu.org/licenses/. + +--> + +<html> +<head> + <title>Clipperz.PM.Crypto [0.4] - tests</title> + + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + + <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> + <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> + <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> + + <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> + + <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> + <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> + <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> + <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> + <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> + <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> + <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> + <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> + <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> + <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES_2.js'></script> + <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> + <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> + <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> + <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> + <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> + + <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script> + +</head> +<body> +<pre id="test"> +<script type="text/javascript" src="Crypto_v0_4.test.js"></script> +</pre> +</body> +</html> diff --git a/frontend/gamma/tests/tests/Clipperz/PM/Crypto_v0_4.test.js b/frontend/gamma/tests/tests/Clipperz/PM/Crypto_v0_4.test.js new file mode 100644 index 0000000..ecfbec3 --- a/dev/null +++ b/frontend/gamma/tests/tests/Clipperz/PM/Crypto_v0_4.test.js @@ -0,0 +1,50 @@ +/* + +Copyright 2008-2013 Clipperz Srl + +This file is part of Clipperz, the online password manager. +For further information about its features and functionalities please +refer to http://www.clipperz.com. + +* Clipperz is free software: you can redistribute it and/or modify it + under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + +* Clipperz is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Affero General Public License for more details. + +* You should have received a copy of the GNU Affero General Public + License along with Clipperz. If not, see http://www.gnu.org/licenses/. + +*/ + +var tests = { + + 'decryptDataEncryptedUsingPythonLibrary_test': function (someTestArgs) { + var deferredResult; + + passphrase = 'trustno1'; + encryptedData = 'OucTxzBWmqm8jS7EUyIlWUWDPSFKvulL5iM4WwLPbNVIH7jtaK9pmzpm9w5ioVy2/tyebVwWr36t7QXSBOPwUPo2SlGmARCozA=='; + + deferredResult = new Clipperz.Async.Deferred("decryptDataEncryptedUsingPythonLibrary_test", someTestArgs); + deferredResult.addCallback(Clipperz.PM.Crypto.deferredDecrypt, {key:passphrase, value:encryptedData, version:'0.4'}); + deferredResult.addCallback(MochiKit.Base.itemgetter('message')); + deferredResult.addTest("The quick brown fox jumps over the lazy dog", "expected value"); + + deferredResult.callback(); + + return deferredResult; + + }, + + //------------------------------------------------------------------------- + 'syntaxFix': MochiKit.Base.noop +} + +//============================================================================= + +Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); +SimpleTest.runDeferredTests("Clipperz.PM.Crypto [0.4]", tests, {trace:false}); diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLogin.html b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLogin.html index 73b8225..74d1a07 100644 --- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLogin.html +++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLogin.html @@ -43,6 +43,7 @@ refer to http://www.clipperz.com. <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/Base.js'></script> <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/BigInt.js'></script> <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/AES.js'></script> + <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/AES_2.js'></script> <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SHA.js'></script> <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/PRNG.js'></script> <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SRP.js'></script> diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.html b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.html index a711ba9..c264ff7 100644 --- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.html +++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.html @@ -42,6 +42,7 @@ refer to http://www.clipperz.com. <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/Base.js'></script> <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/BigInt.js'></script> <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/AES.js'></script> + <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/AES_2.js'></script> <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SHA.js'></script> <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/PRNG.js'></script> <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SRP.js'></script> diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/Record.html b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/Record.html index 0332008..4d6bc5d 100644 --- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/Record.html +++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/Record.html @@ -43,6 +43,7 @@ refer to http://www.clipperz.com. <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/Base.js'></script> <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/BigInt.js'></script> <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/AES.js'></script> + <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/AES_2.js'></script> <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SHA.js'></script> <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/PRNG.js'></script> <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SRP.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 3478743..af1ffe8 100644 --- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/Record.test.js +++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/Record.test.js @@ -177,6 +177,13 @@ var tests = { deferredResult = new Clipperz.Async.Deferred("Record.test.removeDirectLogin", someTestArgs); deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data']); deferredResult.addMethod(user, 'login'); + + deferredResult.addMethod(user, 'getRecord', recordID); + deferredResult.addMethodcaller('directLogins'); + deferredResult.addCallback(MochiKit.Base.keys); + deferredResult.addCallback(MochiKit.Base.itemgetter('length')); + deferredResult.addTest(4, "The record initially has 4 direct logins"); + deferredResult.addMethod(user, 'getRecord', recordID); deferredResult.addMethodcaller('directLogins'); deferredResult.addCallback(MochiKit.Base.itemgetter(directLoginID)); @@ -187,6 +194,7 @@ var tests = { deferredResult.addTest(true, "removing a direct login to a record should result in pending changes on the record"); deferredResult.addMethod(user, 'saveChanges'); + deferredResult.addMethod(user, 'hasPendingChanges'); deferredResult.addTest(false, "after saving there should be not any pending changes"); diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.html b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.html index 793f763..3a0eda8 100644 --- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.html +++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.html @@ -43,6 +43,7 @@ refer to http://www.clipperz.com. <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/Base.js'></script> <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/BigInt.js'></script> <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/AES.js'></script> + <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/AES_2.js'></script> <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SHA.js'></script> <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/PRNG.js'></script> <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SRP.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 45f3297..545580f 100644 --- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.test.js +++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.test.js @@ -1922,7 +1922,7 @@ var tests = { proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false}); user2 = new Clipperz.PM.DataModel.User({username:username, getPassphraseFunction:function () { return passphrase;}}); - +console.log("PROXY", proxy); deferredResult = new Clipperz.Async.Deferred("registerNewUserAndAddARecord_test", someTestArgs); deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_with_preferences_and_OTPs_data']); diff --git a/frontend/gamma/tests/tests/Clipperz/PM/index.html b/frontend/gamma/tests/tests/Clipperz/PM/index.html index eeda692..6eb6622 100644 --- a/frontend/gamma/tests/tests/Clipperz/PM/index.html +++ b/frontend/gamma/tests/tests/Clipperz/PM/index.html @@ -37,6 +37,7 @@ TestRunner.runTests( // 'BookmarkletProcessor.html', 'Connection.html', 'Crypto.html', + 'Crypto_v0_4.html', // 'Crypto_other_implementation_comparison.html', 'Crypto_performanceEvaluation.html', // 'CryptoPerformance_ByteArrayArray.html', |