summaryrefslogtreecommitdiffstats
path: root/packages/meshbay-hub/src/meshbay_hub/static/transport.js
diff options
context:
space:
mode:
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/static/transport.js')
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/transport.js14
1 files changed, 14 insertions, 0 deletions
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/transport.js b/packages/meshbay-hub/src/meshbay_hub/static/transport.js
index 624c3c3..271d11f 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/transport.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/transport.js
@@ -232,6 +232,20 @@ class MeshBayTransport {
}
}
+ if (!gekRaw && !this._sessionKeys) {
+ // No identity keys in this browser and none recoverable from the node:
+ // the keypair bundle is created where you register and only reaches a
+ // node after a first successful connection, so a brand-new member opening
+ // a second browser has nothing to sign or unwrap with. Say that, rather
+ // than blaming the GEK — a code prompt here would be useless, since a
+ // code proves who you are and we have no key to bind to.
+ const err = new Error(
+ 'This browser does not hold your keys. Open the group once from the '
+ + 'browser where you registered — after that this one can recover them.');
+ err.reason = 'no_keys';
+ throw err;
+ }
+
if (!gekRaw) {
throw this._joinError
|| new Error('Node requires GEK proof but no GEK available');