diff --git a/Shared (Extension)/Resources/options.css b/Shared (Extension)/Resources/options.css
index 7d06e0f..7ba31fa 100644
--- a/Shared (Extension)/Resources/options.css
+++ b/Shared (Extension)/Resources/options.css
@@ -16,7 +16,7 @@
@apply bg-fuchsia-200 text-fuchsia-800 disabled:bg-gray-200 disabled:text-black focus:border-fuchsia-800;
/* Sizing and padding */
- @apply rounded-lg p-1.5 lg:p-1.5 w-full md:w-64;
+ @apply rounded-lg p-1.5 lg:p-1.5 w-full md:w-64;
}
.checkbox {
diff --git a/Shared (Extension)/Resources/options.html b/Shared (Extension)/Resources/options.html
index b520413..bf5e9fe 100644
--- a/Shared (Extension)/Resources/options.html
+++ b/Shared (Extension)/Resources/options.html
@@ -42,7 +42,8 @@
-
+
@@ -52,7 +53,7 @@
-
+
diff --git a/Shared (Extension)/Resources/options.js b/Shared (Extension)/Resources/options.js
index 8e34260..e459118 100644
--- a/Shared (Extension)/Resources/options.js
+++ b/Shared (Extension)/Resources/options.js
@@ -15,6 +15,7 @@ import {
setPermission,
KINDS,
humanPermission,
+ validateKey,
} from './utils';
const log = console.log;
@@ -258,6 +259,16 @@ Alpine.data('options', () => ({
this.profileName !== this.pristineProfileName
);
},
+
+ get validKey() {
+ return validateKey(this.privKey);
+ },
+
+ get validKeyClass() {
+ return this.validKey
+ ? ''
+ : 'ring-2 ring-rose-500 focus:ring-2 focus:ring-rose-500 border-transparent focus:border-transparent';
+ },
}));
Alpine.start();
diff --git a/Shared (Extension)/Resources/utils.js b/Shared (Extension)/Resources/utils.js
index 2a1a458..94fb2c0 100644
--- a/Shared (Extension)/Resources/utils.js
+++ b/Shared (Extension)/Resources/utils.js
@@ -206,3 +206,10 @@ export function humanPermission(p) {
return 'Unknown';
}
}
+
+export function validateKey(key) {
+ const hexMatch = /^[\da-f]{64}$/i.test(key);
+ const b32Match = /^nsec1[qpzry9x8gf2tvdw0s3jn54khce6mua7l]{58}$/.test(key);
+
+ return hexMatch || b32Match;
+}