Telegram Web K with changes to work inside I2P
https://web.telegram.i2p/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.6 KiB
83 lines
2.6 KiB
import apiManager from './mtprotoworker'; |
|
import { AccountPassword } from '../../layer'; |
|
//import { computeCheck } from "../crypto/srp"; |
|
|
|
export class PasswordManager { |
|
public getState(options: any = {}): Promise<AccountPassword> { |
|
return apiManager.invokeApi('account.getPassword', {}, options).then((result) => { |
|
return result; |
|
}); |
|
} |
|
|
|
/* public updateSettings(state: any, settings: any) { |
|
var currentHashPromise; |
|
var newHashPromise; |
|
var params: any = { |
|
new_settings: { |
|
_: 'account.passwordInputSettings', |
|
flags: 0, |
|
hint: settings.hint || '' |
|
} |
|
}; |
|
|
|
if(typeof settings.cur_password === 'string' && |
|
settings.cur_password.length > 0) { |
|
currentHashPromise = this.makePasswordHash(state.current_salt, settings.cur_password); |
|
} else { |
|
currentHashPromise = Promise.resolve([]); |
|
} |
|
|
|
if (typeof settings.new_password === 'string' && |
|
settings.new_password.length > 0) { |
|
var saltRandom = new Array(8); |
|
var newSalt = bufferConcat(state.new_salt, saltRandom); |
|
secureRandom.nextBytes(saltRandom); |
|
newHashPromise = this.makePasswordHash(newSalt, settings.new_password); |
|
params.new_settings.new_salt = newSalt; |
|
params.new_settings.flags |= 1; |
|
} else { |
|
if(typeof settings.new_password === 'string') { |
|
params.new_settings.flags |= 1; |
|
params.new_settings.new_salt = []; |
|
} |
|
newHashPromise = Promise.resolve([]); |
|
} |
|
|
|
if(typeof settings.email === 'string') { |
|
params.new_settings.flags |= 2; |
|
params.new_settings.email = settings.email || ''; |
|
} |
|
|
|
return Promise.all([currentHashPromise, newHashPromise]).then((hashes) => { |
|
params.current_password_hash = hashes[0]; |
|
params.new_settings.new_password_hash = hashes[1]; |
|
|
|
return apiManager.invokeApi('account.updatePasswordSettings', params); |
|
}); |
|
} */ |
|
|
|
public check(password: string, state: AccountPassword, options: any = {}) { |
|
return apiManager.computeSRP(password, state).then((inputCheckPassword) => { |
|
return apiManager.invokeApi('auth.checkPassword', { |
|
password: inputCheckPassword |
|
}, options); |
|
}); |
|
} |
|
|
|
public requestRecovery(options: any = {}) { |
|
return apiManager.invokeApi('auth.requestPasswordRecovery', {}, options); |
|
} |
|
|
|
public recover(code: any, options: any = {}) { |
|
return apiManager.invokeApi('auth.recoverPassword', { |
|
code: code |
|
}, options); |
|
} |
|
} |
|
|
|
const passwordManager = new PasswordManager(); |
|
// @ts-ignore |
|
if(process.env.NODE_ENV != 'production') { |
|
(self as any).passwordManager = passwordManager; |
|
} |
|
export default passwordManager;
|
|
|