in src/dal/remotelogin.ts [38:60]
async authenticate(serverUrl: string, user: string, password: string): Promise<string> {
const client: xmlrpc.Client = this.createClient(serverUrl);
const rsaPublicKey: RcaPublicKey = await this.getPublicKey(client);
if (!rsaPublicKey) {
throw MessageConstants.XMLRPC_AUTH_EXCEPTION + " rsaPublicKey is absent";
}
const encPass = rsaPublicKey.encrypt(password);
const hexEncPass = forge.util.createBuffer(encPass).toHex();
return new Promise<string>((resolve, reject) => {
client.methodCall("RemoteAuthenticationServer.authenticate", [user, hexEncPass], (err: any, data) => {
/* tslint:disable:no-null-keyword */
if (err && err.message && err.message.indexOf("Incorrect username or password") !== -1) {
Logger.logError("RemoteAuthenticationServer.authenticate: return an error: " + Utils.formatErrorMessage(err));
return reject(MessageConstants.STATUS_CODE_401);
} else if (err !== null) {
Logger.logError("RemoteAuthenticationServer.authenticate: return an error: " + Utils.formatErrorMessage(err));
return reject(Utils.formatErrorMessage(err));
}
/* tslint:enable:no-null-keyword */
resolve(data);
});
});
}