summaryrefslogtreecommitdiff
path: root/frontend/gamma/js/Clipperz/PM/Connection.js
Unidiff
Diffstat (limited to 'frontend/gamma/js/Clipperz/PM/Connection.js') (more/less context) (ignore whitespace changes)
-rw-r--r--frontend/gamma/js/Clipperz/PM/Connection.js15
1 files changed, 6 insertions, 9 deletions
diff --git a/frontend/gamma/js/Clipperz/PM/Connection.js b/frontend/gamma/js/Clipperz/PM/Connection.js
index 6e58c60..b4e8aaa 100644
--- a/frontend/gamma/js/Clipperz/PM/Connection.js
+++ b/frontend/gamma/js/Clipperz/PM/Connection.js
@@ -1,216 +1,213 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
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 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 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 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31 28
32//----------------------------------------------------------------------------- 29//-----------------------------------------------------------------------------
33// 30//
34 // Abstract C O N N E C T I O N class 31 // Abstract C O N N E C T I O N class
35// 32//
36//----------------------------------------------------------------------------- 33//-----------------------------------------------------------------------------
37 34
38Clipperz.PM.Connection = function (args) { 35Clipperz.PM.Connection = function (args) {
39 args = args || {}; 36 args = args || {};
40 37
41 this._proxy = args.proxy || Clipperz.PM.Proxy.defaultProxy; 38 this._proxy = args.proxy || Clipperz.PM.Proxy.defaultProxy;
42 this._getCredentialsFunction = args.getCredentialsFunction; 39 this._getCredentialsFunction = args.getCredentialsFunction;
43 40
44 this._clipperz_pm_crypto_version = null; 41 this._clipperz_pm_crypto_version = null;
45 this._connectionId = null; 42 this._connectionId = null;
46 this._sharedSecret = null; 43 this._sharedSecret = null;
47 44
48 return this; 45 return this;
49} 46}
50 47
51Clipperz.PM.Connection.prototype = MochiKit.Base.update(null, { 48Clipperz.PM.Connection.prototype = MochiKit.Base.update(null, {
52 49
53 'toString': function() { 50 'toString': function() {
54 return "Connection [" + this.version() + "]"; 51 return "Connection [" + this.version() + "]";
55 }, 52 },
56 53
57 //========================================================================= 54 //=========================================================================
58 55
59 'version': function() { 56 'version': function() {
60 throw Clipperz.Base.exception.AbstractMethod; 57 throw Clipperz.Base.exception.AbstractMethod;
61 }, 58 },
62 59
63 'clipperz_pm_crypto_version': function() { 60 'clipperz_pm_crypto_version': function() {
64 if (this._clipperz_pm_crypto_version == null) { 61 if (this._clipperz_pm_crypto_version == null) {
65 var connectionVersions; 62 var connectionVersions;
66 varversions; 63 varversions;
67 varversion; 64 varversion;
68 var i, c; 65 var i, c;
69 66
70 version = null; 67 version = null;
71 connectionVersions = Clipperz.PM.Connection.communicationProtocol.versions; 68 connectionVersions = Clipperz.PM.Connection.communicationProtocol.versions;
72 versions = MochiKit.Base.keys(connectionVersions); 69 versions = MochiKit.Base.keys(connectionVersions);
73 c = versions.length; 70 c = versions.length;
74 for (i=0; i<c; i++) { 71 for (i=0; i<c; i++) {
75 if (! (versions[i] == 'current')) { 72 if (! (versions[i] == 'current')) {
76 if (this instanceof connectionVersions[versions[i]]) { 73 if (this instanceof connectionVersions[versions[i]]) {
77 version = versions[i]; 74 version = versions[i];
78 }; 75 };
79 } 76 }
80 } 77 }
81 78
82 this._clipperz_pm_crypto_version = version; 79 this._clipperz_pm_crypto_version = version;
83 } 80 }
84 81
85 return this._clipperz_pm_crypto_version; 82 return this._clipperz_pm_crypto_version;
86 }, 83 },
87 84
88 //------------------------------------------------------------------------- 85 //-------------------------------------------------------------------------
89 86
90 'defaultErrorHandler': function(anErrorString, anException) { 87 'defaultErrorHandler': function(anErrorString, anException) {
91MochiKit.Logging.logError("### Connection.defaultErrorHandler: " + anErrorString + " (" + anException + ")"); 88MochiKit.Logging.logError("### Connection.defaultErrorHandler: " + anErrorString + " (" + anException + ")");
92 }, 89 },
93 90
94 //------------------------------------------------------------------------- 91 //-------------------------------------------------------------------------
95 92
96 'getCredentialsFunction': function () { 93 'getCredentialsFunction': function () {
97 return this._getCredentialsFunction; 94 return this._getCredentialsFunction;
98 }, 95 },
99 96
100 'normalizedCredentials': function(someValues) { 97 'normalizedCredentials': function(someValues) {
101 throw Clipperz.Base.exception.AbstractMethod; 98 throw Clipperz.Base.exception.AbstractMethod;
102 }, 99 },
103 100
104 //========================================================================= 101 //=========================================================================
105 102
106 'proxy': function () { 103 'proxy': function () {
107 return this._proxy; 104 return this._proxy;
108 }, 105 },
109 106
110 //========================================================================= 107 //=========================================================================
111 108
112 'register': function () { 109 'register': function () {
113 throw Clipperz.Base.exception.AbstractMethod; 110 throw Clipperz.Base.exception.AbstractMethod;
114 }, 111 },
115 112
116 'login': function() { 113 'login': function() {
117 throw Clipperz.Base.exception.AbstractMethod; 114 throw Clipperz.Base.exception.AbstractMethod;
118 }, 115 },
119 116
120 //------------------------------------------------------------------------- 117 //-------------------------------------------------------------------------
121 118
122 'message': function(someArguments, aCallback) { 119 'message': function(someArguments, aCallback) {
123 throw Clipperz.Base.exception.AbstractMethod; 120 throw Clipperz.Base.exception.AbstractMethod;
124 }, 121 },
125 122
126 //------------------------------------------------------------------------- 123 //-------------------------------------------------------------------------
127 124
128 'serverSideUserCredentials': function() { 125 'serverSideUserCredentials': function() {
129 throw Clipperz.Base.exception.AbstractMethod; 126 throw Clipperz.Base.exception.AbstractMethod;
130 }, 127 },
131 128
132 //========================================================================= 129 //=========================================================================
133 130
134 'sharedSecret': function () { 131 'sharedSecret': function () {
135 return this._sharedSecret; 132 return this._sharedSecret;
136 }, 133 },
137 134
138 'setSharedSecret': function (aValue) { 135 'setSharedSecret': function (aValue) {
139 this._sharedSecret = aValue; 136 this._sharedSecret = aValue;
140 }, 137 },
141 138
142 //------------------------------------------------------------------------- 139 //-------------------------------------------------------------------------
143 140
144 'connectionId': function() { 141 'connectionId': function() {
145 return this._connectionId; 142 return this._connectionId;
146 }, 143 },
147 144
148 'setConnectionId': function(aValue) { 145 'setConnectionId': function(aValue) {
149 this._connectionId = aValue; 146 this._connectionId = aValue;
150 }, 147 },
151 148
152 //========================================================================= 149 //=========================================================================
153/* 150/*
154 //TODO: ????? 151 //TODO: ?????
155 'oneTimePassword': function() { 152 'oneTimePassword': function() {
156 return this._oneTimePassword; 153 return this._oneTimePassword;
157 }, 154 },
158 155
159 'setOneTimePassword': function(aValue) { 156 'setOneTimePassword': function(aValue) {
160 this._oneTimePassword = aValue; 157 this._oneTimePassword = aValue;
161 }, 158 },
162*/ 159*/
163 //========================================================================= 160 //=========================================================================
164 161
165 'reset': function() { 162 'reset': function() {
166 this.setSharedSecret(null); 163 this.setSharedSecret(null);
167 this.setConnectionId(null); 164 this.setConnectionId(null);
168 }, 165 },
169 166
170 //========================================================================= 167 //=========================================================================
171 __syntaxFix__: "syntax fix" 168 __syntaxFix__: "syntax fix"
172 169
173} 170}
174); 171);
175 172
176 173
177if (typeof(Clipperz.PM.Connection.SRP) == 'undefined') { Clipperz.PM.Connection.SRP = {}; } 174if (typeof(Clipperz.PM.Connection.SRP) == 'undefined') { Clipperz.PM.Connection.SRP = {}; }
178//----------------------------------------------------------------------------- 175//-----------------------------------------------------------------------------
179// 176//
180 // S R P [ 1 . 0 ] C O N N E C T I O N class 177 // S R P [ 1 . 0 ] C O N N E C T I O N class
181// 178//
182//----------------------------------------------------------------------------- 179//-----------------------------------------------------------------------------
183 180
184Clipperz.PM.Connection.SRP['1.0'] = function (args) { 181Clipperz.PM.Connection.SRP['1.0'] = function (args) {
185 Clipperz.PM.Connection.call(this, args); 182 Clipperz.PM.Connection.call(this, args);
186 183
187 return this; 184 return this;
188} 185}
189 186
190Clipperz.PM.Connection.SRP['1.0'].prototype = MochiKit.Base.update(new Clipperz.PM.Connection(), { 187Clipperz.PM.Connection.SRP['1.0'].prototype = MochiKit.Base.update(new Clipperz.PM.Connection(), {
191 188
192 'version': function() { 189 'version': function() {
193 return '1.0'; 190 return '1.0';
194 }, 191 },
195 192
196 //========================================================================= 193 //=========================================================================
197 194
198 'register': function (someUserData) { 195 'register': function (someUserData) {
199 vardeferredResult; 196 vardeferredResult;
200 var cryptoVersion; 197 var cryptoVersion;
201 var srpConnection; 198 var srpConnection;
202 199
203 cryptoVersion = this.clipperz_pm_crypto_version(); 200 cryptoVersion = this.clipperz_pm_crypto_version();
204 201
205 deferredResult = new Clipperz.Async.Deferred("Connection.registerWithVersion", {trace:false}); 202 deferredResult = new Clipperz.Async.Deferred("Connection.registerWithVersion", {trace:false});
206 deferredResult.collectResults({ 203 deferredResult.collectResults({
207 'credentials': [ 204 'credentials': [
208 this.getCredentialsFunction(), 205 this.getCredentialsFunction(),
209 MochiKit.Base.method(this, 'normalizedCredentials'), 206 MochiKit.Base.method(this, 'normalizedCredentials'),
210 MochiKit.Base.bind(function(someCredentials) { 207 MochiKit.Base.bind(function(someCredentials) {
211 var srpConnection; 208 var srpConnection;
212 var result; 209 var result;
213 210
214 srpConnection = new Clipperz.Crypto.SRP.Connection({ C:someCredentials['username'], P:someCredentials['password'], hash:this.hash() }); 211 srpConnection = new Clipperz.Crypto.SRP.Connection({ C:someCredentials['username'], P:someCredentials['password'], hash:this.hash() });
215 result = srpConnection.serverSideCredentials(); 212 result = srpConnection.serverSideCredentials();
216 result['version'] = Clipperz.PM.Connection.communicationProtocol.currentVersion; 213 result['version'] = Clipperz.PM.Connection.communicationProtocol.currentVersion;