diff --git a/src/pages/login/index.tsx b/src/pages/login/index.tsx
index 9c224b7..9539ee7 100644
--- a/src/pages/login/index.tsx
+++ b/src/pages/login/index.tsx
@@ -20,6 +20,7 @@ import { LoginMethods } from '../../store/auth/types'
import { Dispatch } from '../../store/store'
import { npubToHex, queryNip05 } from '../../utils'
import styles from './style.module.scss'
+import { hexToBytes } from '@noble/hashes/utils'
export const Login = () => {
const [searchParams] = useSearchParams()
@@ -92,9 +93,24 @@ export const Login = () => {
})
}
- const loginWithNsec = async () => {
- const nsec = inputValue
- const privateKey = nip19.decode(nsec).data as Uint8Array
+ /**
+ * Login with NSEC or HEX private key
+ * @param privateKey in HEX format
+ */
+ const loginWithNsec = async (privateKey?: Uint8Array) => {
+ let nsec = ''
+
+ if (privateKey) {
+ nsec = nip19.nsecEncode(privateKey)
+ } else {
+ nsec = inputValue
+
+ try {
+ privateKey = nip19.decode(nsec).data as Uint8Array
+ } catch(err) {
+ toast.error(`Error decoding the nsec. ${err}`)
+ }
+ }
if (!privateKey) {
toast.error(
@@ -307,7 +323,19 @@ export const Login = () => {
return loginWithNsecBunker()
}
- toast.error('Invalid Input!')
+ // Check if maybe hex nsec
+ try {
+ // const privateKey = nip19.decode(inputValue).data as Uint8Array
+ const privateKey = hexToBytes(inputValue)
+ const publickey = getPublicKey(privateKey)
+
+ if (publickey) return loginWithNsec(privateKey)
+
+ } catch(err) {
+ console.warn('err', err)
+ }
+
+ toast.error('Invalid format, please use: private key (hex), nsec..., bunker:// or nip05 format.')
return
}
@@ -329,7 +357,7 @@ export const Login = () => {
Welcome to Sigit
setInputValue(e.target.value)}
sx={{ width: '100%', mt: 2 }}