chore: addressing comments

This commit is contained in:
Davinci 2024-05-14 16:48:09 +02:00
parent 8e7620201e
commit e7a57c9aa1
4 changed files with 38 additions and 54 deletions

View File

@ -359,39 +359,4 @@ export class NostrController extends EventEmitter {
generateDelegatedKey = (): string => {
return NDKPrivateKeySigner.generate().privateKey!
}
/**
* Creates Nostr HTTP Auth token
* @param npub npub in hex format
* @param nostrTags tags to be included in the authevent (auth token)
*/
createNostrHttpAuthToken = async (
nostrTags: string[][] = []
): Promise<string> => {
const createdAt = Math.round(Date.now() / 1000)
const authEvent = new NDKEvent(undefined)
authEvent.kind = 27235
authEvent.tags = nostrTags
authEvent.content = `sigit-${createdAt}`
authEvent.created_at = createdAt
await this.signEvent(authEvent.rawEvent() as UnsignedEvent)
console.info('Signed auth event')
const base64Encoded = this.base64EncodeSignedEvent(authEvent.rawEvent())
return base64Encoded
}
base64EncodeSignedEvent = (event: NostrEvent) => {
try {
const authEventSerialized = JSON.stringify(event)
const token = btoa(authEventSerialized)
return token
} catch (error) {
throw new Error('An error occurred in JSON.stringy of signedAuthEvent')
}
}
}

View File

@ -8,6 +8,7 @@ import styles from './style.module.scss'
import { toast } from 'react-toastify'
import { useSearchParams } from 'react-router-dom'
import axios from 'axios'
import { DecryptionError } from '../../types/errors/DecryptionError'
export const DecryptZip = () => {
const [searchParams] = useSearchParams()
@ -60,17 +61,10 @@ export const DecryptZip = () => {
const arrayBuffer = await decryptArrayBuffer(
encryptedArrayBuffer,
encryptionKey
).catch((err) => {
).catch((err: DecryptionError) => {
console.log('err in decryption:>> ', err)
if (err.message.toLowerCase().includes('expected')) {
toast.error(`The Key seems to be invalid length or format`)
} else if (err.message.includes('The JWK "alg" member was inconsistent')) {
toast.error(`The Key seems to be invalid.`)
} else {
toast.error(err.message || 'An error occurred while decrypting file.')
}
toast.error(err.message)
setIsLoading(false)
return null
})

View File

@ -0,0 +1,20 @@
export class DecryptionError extends Error {
public message: string = ''
constructor(
public inputError: any
) {
super()
if (inputError.message.toLowerCase().includes('expected')) {
this.message = `The decryption key length or format is invalid`
} else if (inputError.message.includes('The JWK "alg" member was inconsistent')) {
this.message = `The decryption key is invalid.`
} else {
this.message = inputError.message || 'An error occurred while decrypting file.'
}
this.name = 'DecryptionError'
Object.setPrototypeOf(this, DecryptionError.prototype)
}
}

View File

@ -4,6 +4,7 @@ import {
stringToHex,
uint8ArrayToHexString
} from '.'
import { DecryptionError } from '../types/errors/DecryptionError'
const ENCRYPTION_ALGO_NAME = 'AES-GCM'
@ -63,14 +64,18 @@ export const decryptArrayBuffer = async (
encryptedData: ArrayBuffer,
key: string
) => {
const { cryptoKey, iv } = await importKey(key)
try {
const { cryptoKey, iv } = await importKey(key)
// Decrypt the data
const decryptedData = await window.crypto.subtle.decrypt(
{ name: ENCRYPTION_ALGO_NAME, iv },
cryptoKey,
encryptedData
)
// Decrypt the data
const decryptedData = await window.crypto.subtle.decrypt(
{ name: ENCRYPTION_ALGO_NAME, iv },
cryptoKey,
encryptedData
)
return decryptedData
return decryptedData
} catch (err) {
throw new DecryptionError(err)
}
}