summaryrefslogtreecommitdiffhomepage
path: root/gui/src
diff options
context:
space:
mode:
Diffstat (limited to 'gui/src')
-rw-r--r--gui/src/main/daemon-rpc.ts49
1 files changed, 43 insertions, 6 deletions
diff --git a/gui/src/main/daemon-rpc.ts b/gui/src/main/daemon-rpc.ts
index 91f9e8771c..e317ffb794 100644
--- a/gui/src/main/daemon-rpc.ts
+++ b/gui/src/main/daemon-rpc.ts
@@ -7,6 +7,7 @@ import {
ILocation,
IRelayList,
ISettings,
+ KeygenEvent,
RelaySettingsUpdate,
TunnelState,
} from '../shared/daemon-rpc-types';
@@ -330,6 +331,13 @@ const settingsSchema = partialObject({
tunnel_options: tunnelOptionsSchema,
});
+const keygenEventSchema = oneOf(
+ enumeration('too_many_keys', 'generation_failure'),
+ object({
+ new_key: string,
+ }),
+);
+
const daemonEventSchema = oneOf(
object({
tunnel_state: tunnelStateSchema,
@@ -341,12 +349,7 @@ const daemonEventSchema = oneOf(
relay_list: relayListSchema,
}),
object({
- wireguard_key: oneOf(
- enumeration('too_many_keys', 'generation_failure'),
- object({
- new_key: string,
- }),
- ),
+ wireguard_key: keygenEventSchema,
}),
);
@@ -524,6 +527,40 @@ export class DaemonRpc {
}
}
+ public async generateWireguardKey(): Promise<KeygenEvent> {
+ const response = await this.transport.send('generate_wireguard_key');
+ try {
+ const validatedResponse: any = validate(keygenEventSchema, response);
+ switch (validatedResponse) {
+ case 'too_many_keys':
+ case 'generation_failure':
+ return validatedResponse;
+ default:
+ return camelCaseObjectKeys(validatedResponse as object) as KeygenEvent;
+ }
+ } catch (error) {
+ throw new ResponseParseError(`Invalid response from generate_wireguard_key ${error}`);
+ }
+ }
+
+ public async getWireguardKey(): Promise<string | undefined> {
+ const response = await this.transport.send('get_wireguard_key');
+ try {
+ return validate(maybe(string), response) || undefined;
+ } catch (error) {
+ throw new ResponseParseError('Invalid response from get_wireguard_key');
+ }
+ }
+
+ public async verifyWireguardKey(): Promise<boolean> {
+ const response = await this.transport.send('verify_wireguard_key');
+ try {
+ return validate(boolean, response);
+ } catch (error) {
+ throw new ResponseParseError('Invalid response from verify_wireguard_key');
+ }
+ }
+
public async getVersionInfo(): Promise<IAppVersionInfo> {
const response = await this.transport.send('get_version_info', [], NETWORK_CALL_TIMEOUT);
try {