Experiments with RSA encryption

This commit is contained in:
RainLoop Team 2014-07-24 20:18:03 +04:00
parent 11608e5f64
commit bbcbfdc150
44 changed files with 40066 additions and 71 deletions

View file

@ -88,51 +88,98 @@ function LoginViewModel()
this.submitRequest(true);
RL.remote().login(_.bind(function (sResult, oData) {
var
sPassword = this.password(),
fLoginRequest = _.bind(function (sPassword) {
if (Enums.StorageResultType.Success === sResult && oData && 'Login' === oData.Action)
{
if (oData.Result)
{
if (oData.TwoFactorAuth)
RL.remote().login(_.bind(function (sResult, oData) {
if (Enums.StorageResultType.Success === sResult && oData && 'Login' === oData.Action)
{
this.additionalCode('');
this.additionalCode.visibility(true);
this.additionalCode.focused(true);
this.submitRequest(false);
if (oData.Result)
{
if (oData.TwoFactorAuth)
{
this.additionalCode('');
this.additionalCode.visibility(true);
this.additionalCode.focused(true);
this.submitRequest(false);
}
else
{
RL.loginAndLogoutReload();
}
}
else if (oData.ErrorCode)
{
this.submitRequest(false);
this.submitError(Utils.getNotification(oData.ErrorCode));
if ('' === this.submitError())
{
this.submitError(Utils.getNotification(Enums.Notification.UnknownError));
}
}
else
{
this.submitRequest(false);
}
}
else
{
RL.loginAndLogoutReload();
}
}
else if (oData.ErrorCode)
{
this.submitRequest(false);
this.submitError(Utils.getNotification(oData.ErrorCode));
if ('' === this.submitError())
{
this.submitRequest(false);
this.submitError(Utils.getNotification(Enums.Notification.UnknownError));
}
}
else
{
this.submitRequest(false);
}
}, this), this.email(), '', sPassword, !!this.signMe(),
this.bSendLanguage ? this.mainLanguage() : '',
this.additionalCode.visibility() ? this.additionalCode() : '',
this.additionalCode.visibility() ? !!this.additionalCodeSignMe() : false
);
}, this)
;
if (!!RL.settingsGet('UseRsaEncryption'))
{
if (window.cryptico)
{
RL.remote().getPublicKey(function (sResult, oData) {
var
bRequest = false,
oEncryptionResult = null
;
if (Enums.StorageResultType.Success === sResult && oData && oData.Result)
{
oEncryptionResult = window.cryptico.encrypt(sPassword, oData.Result);
if (oEncryptionResult && oEncryptionResult.cipher)
{
bRequest = false;
fLoginRequest('cipher:' + oEncryptionResult.cipher);
}
}
if (bRequest)
{
this.submitRequest(false);
this.submitError(Utils.getNotification(Enums.Notification.UnknownError));
}
});
}
else
{
this.submitRequest(false);
this.submitError(Utils.getNotification(Enums.Notification.UnknownError));
}
}, this), this.email(), '', this.password(), !!this.signMe(),
this.bSendLanguage ? this.mainLanguage() : '',
this.additionalCode.visibility() ? this.additionalCode() : '',
this.additionalCode.visibility() ? !!this.additionalCodeSignMe() : false
);
}
else
{
fLoginRequest(sPassword);
}
return true;