chore: move decryptLnurlPayAES to utils (#3576)

This commit is contained in:
dni ⚡ 2025-11-26 19:40:54 +01:00 committed by GitHub
parent f1f6af0e35
commit 49cc8104fc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 38 additions and 34 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -111,11 +111,11 @@ window.app.component('lnbits-lnurlpay-success-action', {
}, },
mounted() { mounted() {
if (this.success_action.tag !== 'aes') return null if (this.success_action.tag !== 'aes') return null
decryptLnurlPayAES(this.success_action, this.payment.preimage).then( this.utils
value => { .decryptLnurlPayAES(this.success_action, this.payment.preimage)
.then(value => {
this.decryptedValue = value this.decryptedValue = value
} })
)
} }
}) })

View file

@ -1,23 +0,0 @@
window.decryptLnurlPayAES = (success_action, preimage) => {
let keyb = new Uint8Array(
preimage.match(/[\da-f]{2}/gi).map(h => parseInt(h, 16))
)
return crypto.subtle
.importKey('raw', keyb, {name: 'AES-CBC', length: 256}, false, ['decrypt'])
.then(key => {
let ivb = Uint8Array.from(window.atob(success_action.iv), c =>
c.charCodeAt(0)
)
let ciphertextb = Uint8Array.from(
window.atob(success_action.ciphertext),
c => c.charCodeAt(0)
)
return crypto.subtle.decrypt({name: 'AES-CBC', iv: ivb}, key, ciphertextb)
})
.then(valueb => {
let decoder = new TextDecoder('utf-8')
return decoder.decode(valueb)
})
}

View file

@ -456,7 +456,7 @@ window.PageWallet = {
}) })
break break
case 'aes': case 'aes':
decryptLnurlPayAES(action, response.data.preimage) this.utils.decryptLnurlPayAES(action, response.data.preimage)
Quasar.Notify.create({ Quasar.Notify.create({
message: value, message: value,
caption: extra.success_action.description, caption: extra.success_action.description,

View file

@ -171,5 +171,34 @@ window._lnbitsUtils = {
converter.setFlavor('github') converter.setFlavor('github')
converter.setOption('simpleLineBreaks', true) converter.setOption('simpleLineBreaks', true)
return converter.makeHtml(text) return converter.makeHtml(text)
},
async decryptLnurlPayAES(success_action, preimage) {
let keyb = new Uint8Array(
preimage.match(/[\da-f]{2}/gi).map(h => parseInt(h, 16))
)
return crypto.subtle
.importKey('raw', keyb, {name: 'AES-CBC', length: 256}, false, [
'decrypt'
])
.then(key => {
let ivb = Uint8Array.from(window.atob(success_action.iv), c =>
c.charCodeAt(0)
)
let ciphertextb = Uint8Array.from(
window.atob(success_action.ciphertext),
c => c.charCodeAt(0)
)
return crypto.subtle.decrypt(
{name: 'AES-CBC', iv: ivb},
key,
ciphertextb
)
})
.then(valueb => {
let decoder = new TextDecoder('utf-8')
return decoder.decode(valueb)
})
} }
} }

View file

@ -39,8 +39,7 @@
"js/base.js", "js/base.js",
"js/windowMixin.js", "js/windowMixin.js",
"js/event-reactions.js", "js/event-reactions.js",
"js/bolt11-decoder.js", "js/bolt11-decoder.js"
"js/lnurl.js"
], ],
"components": [ "components": [
"js/pages/home.js", "js/pages/home.js",

View file

@ -91,8 +91,7 @@
"js/base.js", "js/base.js",
"js/windowMixin.js", "js/windowMixin.js",
"js/event-reactions.js", "js/event-reactions.js",
"js/bolt11-decoder.js", "js/bolt11-decoder.js"
"js/lnurl.js"
], ],
"components": [ "components": [
"js/pages/home.js", "js/pages/home.js",