in src/dal/remotelogin.ts [77:102]
private getPublicKey(client: any): Promise<RcaPublicKey> {
if (!client && !client.methodCall) {
throw Error("Incorrect client!");
}
return new Promise<RcaPublicKey>((resolve, reject) => {
client.methodCall("RemoteAuthenticationServer.getPublicKey", [], (err, data) => {
/* tslint:disable:no-null-keyword */
if (err !== null) {
Logger.logError(`RemoteAuthenticationServer.getPublicKey: it failed at getting public key: ${Utils.formatErrorMessage(err)}`);
return reject(err);
} else if (!data) {
Logger.logError("RemoteAuthenticationServer.getPublicKey: received public key is unexpectedly empty " + new Error().stack);
return reject("Received public key is unexpectedly empty");
}
/* tslint:enable:no-null-keyword */
const keys: string[] = Utils.parseValueColonValue(data);
if (!keys || keys.length !== 2) {
return reject("RemoteLogin#getPublicKey: wrong number of arguments");
}
const rsaPublicKey: RcaPublicKey = pki.setRsaPublicKey(
new BigInteger(keys[0]/* n */, 16),
new BigInteger(keys[1]/* e */, 16));
resolve(rsaPublicKey);
});
});
}