##// END OF EJS Templates
Added tag v1.0.0 for changeset 7110eac54b19
Added tag v1.0.0 for changeset 7110eac54b19

File last commit:

r0:7110eac54b19 v1.0.0 default
r1:8b476fada8c1 default
Show More
SecData.js
72 lines | 2.0 KiB | application/javascript | JavascriptLexer
define([
"dojo/_base/declare", "dojo/node!crypto"], function (declare, crypto) {
let SecData = declare(null, {
_state: null,
_token: null,
_authType: null,
constructor: function (authType) {
this._authType = authType;
},
/**
* Проводит раунд аутентификации, изменяет текущее состояние.
* @param challenge {*} - данные для аутентификации, зависит от реализации, например, пароль.
* @retuns authResult {Object} - результат аутентификации { challenge : 'response data', code : AUTH_* }.
*/
doAuth: function (challenge) {
let password = challenge;
if (this.validateHash(password)) {
this._state = SecData.AUTH_SUCCESS;
} else {
this._state = SecData.AUTH_FAIL;
}
return {
code: this._state
};
},
getAuthState: function () {
return this._state;
},
getAuthType: function () {
return this._authType;
},
generateHash: function (password) {
return md5hex(password);
},
parse: function (token) {
this._token = token;
},
validateHash: function (password) {
return this.generateHash(password) == this._token;
}
});
SecData.AUTH_SUCCESS = 0;
SecData.AUTH_INCOMPLETE = 1;
SecData.AUTH_FAIL = 2;
function md5hex() {
let md5 = crypto.createHash('md5');
for (let i = 0; i < arguments.length; i++)
md5.update(String(arguments[i]));
return md5.digest('hex');
}
let i = 0;
SecData.md5hex = md5hex;
SecData.newSSID = function () {
return md5hex(new Date().getTime(), Math.random(), i++);
};
return SecData;
});