integrated changed into app

This commit is contained in:
Tankred Hase 2013-06-01 01:45:38 +02:00
parent a58753d82b
commit fcac34ae74
8 changed files with 44 additions and 50 deletions

View File

@ -19,25 +19,8 @@
<script src="lib/lawnchair/lawnchair-adapter-indexed-db-git.js"></script>
<script src="lib/lawnchair/lawnchair-adapter-webkit-sqlite-git.js"></script>
<script src="lib/forge/forge.rsa.bundle.js"></script>
<script src="lib/uuid.js"></script>
<script src="lib/nacl.js"></script>
<script src="lib/sjcl/sjcl.js"></script>
<script src="lib/sjcl/sha256.js"></script>
<script src="lib/sjcl/random.js"></script>
<script src="lib/sjcl/bitArray.js"></script>
<script src="lib/sjcl/codecBase64.js"></script>
<script src="lib/sjcl/codecString.js"></script>
<script src="lib/sjcl/aes.js"></script>
<script src="lib/sjcl/ccm.js"></script>
<script src="lib/crypto-js/core.js"></script>
<script src="lib/crypto-js/enc-base64.js"></script>
<script src="lib/crypto-js/cipher-core.js"></script>
<script src="lib/crypto-js/aes.js"></script>
<script src="lib/crypto-js/sha1.js"></script>
<script src="lib/crypto-js/hmac.js"></script>
<script src="lib/crypto-js/pbkdf2.js"></script>
<script src="js/app-config.js"></script>
@ -48,14 +31,15 @@
<script src="js/crypto/util.js"></script>
<script src="js/crypto/pbkdf2.js"></script>
<script src="js/crypto/aes-ccm.js"></script>
<script src="js/crypto/aes-cbc.js"></script>
<script src="js/crypto/rsa.js"></script>
<script src="js/crypto/crypto-batch.js"></script>
<script src="js/crypto/crypto.js"></script>
<script src="js/crypto/nacl-crypto.js"></script>
<script src="js/dao/localstorage-dao.js"></script>
<script src="js/dao/lawnchair-dao.js"></script>
<script src="js/dao/devicestorage.js"></script>
<script src="js/dao/cloudstorage-dao.js"></script>
<script src="js/dao/keychain-dao.js"></script>
<script src="js/dao/email-dao.js"></script>
<script src="js/view/login-view.js"></script>

View File

@ -20,8 +20,8 @@ var app; // container for the application namespace
app.config = {
cloudUrl: 'http://storage.whiteout.io',
symKeySize: 128,
symIvSize: 104,
asymKeySize: 2048,
symIvSize: 128,
asymKeySize: 1024,
workerPath: 'js'
};

View File

@ -16,13 +16,13 @@
login: function() {
// init email dao and dependencies
var util = new app.crypto.Util(window, uuid);
var jsonDao = new app.dao.LawnchairDAO(window);
var util = new cryptoLib.Util(window, uuid);
var jsonDao = new app.dao.LawnchairDAO(Lawnchair);
var crypto = new app.crypto.Crypto(window, util);
var naclCrypto = new app.crypto.NaclCrypto(nacl, util);
var cloudstorage = new app.dao.CloudStorage(window, $);
var devicestorage = new app.dao.DeviceStorage(util, crypto, jsonDao, null);
this.emailDao = new app.dao.EmailDAO(_, crypto, devicestorage, cloudstorage, naclCrypto, util);
var keychain = new app.dao.KeychainDAO(jsonDao, cloudstorage);
this.emailDao = new app.dao.EmailDAO(_, crypto, devicestorage, cloudstorage, util, keychain);
var loginView = new app.view.LoginView({
dao: this.emailDao

View File

@ -15,6 +15,12 @@ app.dao.DeviceStorage = function(util, crypto, jsonDao, sqlcipherDao) {
this.storeEcryptedList = function(list, type, callback) {
var i, date, key, items = [];
// nothing to store
if (list.length === 0) {
callback();
return;
}
// format items for batch storing in dao
list.forEach(function(i) {

View File

@ -78,6 +78,10 @@ app.dao.EmailDAO = function(_, crypto, devicestorage, cloudstorage, util, keycha
callback(err);
return;
}
if (encryptedList.length === 0) {
callback(null, new app.model.EmailCollection());
return;
}
// gather public key ids required to verify signatures
encryptedList.forEach(function(i) {
@ -139,10 +143,11 @@ app.dao.EmailDAO = function(_, crypto, devicestorage, cloudstorage, util, keycha
var folder, self = this;
cloudstorage.listEncryptedItems('email', this.account.get('emailAddress'), folderName, function(err, data) {
// return if an error occured or if fetched list from cloud storage is empty
if (err || !data || data.status || data.length === 0) {
// return if an error occured
if (err) {
callback({
error: err
errMsg: 'Syncing encrypted items from cloud failed!',
err: err
}); // error
return;
}

View File

@ -30,7 +30,8 @@
var account = new app.model.Account({
emailAddress: userId,
symKeySize: app.config.symKeySize,
symIvSize: app.config.symIvSize
symIvSize: app.config.symIvSize,
asymKeySize: app.config.asymKeySize
});
// show loading msg during init

View File

@ -33,27 +33,18 @@
textVisible: true
});
// sync vinbox from cloud
self.dao.checkVInbox(function(err) {
// sync current folder from cloud
self.dao.syncFromCloud(self.folder, function(err) {
$.mobile.loading('hide');
// check for error
if (err) {
$.mobile.loading('hide');
window.alert('Fetching new from inbox failed!');
window.alert('Syncing failed!');
return;
}
// sync current folder from cloud
self.dao.syncFromCloud(self.folder, function(err) {
$.mobile.loading('hide');
// check for error
if (err) {
window.alert('Syncing failed!');
return;
}
// read local storage and add to list view
self.loadItems();
});
// read local storage and add to list view
self.loadItems();
});
},
@ -70,7 +61,14 @@
text: 'decrypting...',
textVisible: true
});
this.dao.listItems(this.folder, 0, 10, function(collection) {
this.dao.listItems(this.folder, 0, 10, function(err, collection) {
// check for error
if (err) {
$.mobile.loading('hide');
window.alert('Loading items from storage failed!');
return;
}
// clear list
list.html('');

View File

@ -15,7 +15,7 @@
params.folder = this.options.folder;
params.id = encodeURIComponent(params.id);
var util = new app.crypto.Util(window, null);
var util = new cryptoLib.Util(window, null);
var date = util.parseDate(params.sentDate);
params.displayDate = date.getDate() + '.' + (date.getMonth() + 1) + '. ' + date.getHours() + ':' + date.getMinutes();