private getPublicKey()

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);
            });
        });
    }