fix: format fixed for iv in encryption key
All checks were successful
Release / build_and_release (push) Successful in 1m0s
All checks were successful
Release / build_and_release (push) Successful in 1m0s
This commit is contained in:
parent
660efb3b67
commit
c4ef090f3c
@ -1,4 +1,9 @@
|
|||||||
import { hexToString, stringToHex } from '.'
|
import {
|
||||||
|
hexStringToUint8Array,
|
||||||
|
hexToString,
|
||||||
|
stringToHex,
|
||||||
|
uint8ArrayToHexString
|
||||||
|
} from '.'
|
||||||
|
|
||||||
const ENCRYPTION_ALGO_NAME = 'AES-GCM'
|
const ENCRYPTION_ALGO_NAME = 'AES-GCM'
|
||||||
|
|
||||||
@ -14,7 +19,7 @@ export const generateEncryptionKey = async () => {
|
|||||||
const jsonString = JSON.stringify(key)
|
const jsonString = JSON.stringify(key)
|
||||||
const hexKey = stringToHex(jsonString)
|
const hexKey = stringToHex(jsonString)
|
||||||
|
|
||||||
const iv = new TextDecoder().decode(
|
const iv = uint8ArrayToHexString(
|
||||||
window.crypto.getRandomValues(new Uint8Array(16))
|
window.crypto.getRandomValues(new Uint8Array(16))
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -25,7 +30,7 @@ export const importKey = async (key: string) => {
|
|||||||
const splittedKey = key.split('?iv=')
|
const splittedKey = key.split('?iv=')
|
||||||
const keyString = hexToString(splittedKey[0])
|
const keyString = hexToString(splittedKey[0])
|
||||||
const jsonWebKey = JSON.parse(keyString)
|
const jsonWebKey = JSON.parse(keyString)
|
||||||
const iv = new TextEncoder().encode(splittedKey[1])
|
const iv = hexStringToUint8Array(splittedKey[1])
|
||||||
|
|
||||||
const cryptoKey = await window.crypto.subtle.importKey(
|
const cryptoKey = await window.crypto.subtle.importKey(
|
||||||
'jwk',
|
'jwk',
|
||||||
|
@ -37,3 +37,25 @@ export const hexToString = (hex: string) => {
|
|||||||
// Join the resulting characters into a single string
|
// Join the resulting characters into a single string
|
||||||
return chars.join('')
|
return chars.join('')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Function to convert a Uint8Array to a hexadecimal string
|
||||||
|
export const uint8ArrayToHexString = (uint8Array: Uint8Array) => {
|
||||||
|
// Convert each byte in the Uint8Array to a hexadecimal string,
|
||||||
|
// pad it with leading zeros if necessary, and join the results
|
||||||
|
return Array.from(uint8Array)
|
||||||
|
.map((byte) => byte.toString(16).padStart(2, '0')) // Convert byte to hexadecimal string
|
||||||
|
.join('') // Join all hexadecimal strings
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function to convert a hexadecimal string to a Uint8Array
|
||||||
|
export const hexStringToUint8Array = (hexString: string) => {
|
||||||
|
// Create a new Uint8Array with half the length of the hex string
|
||||||
|
const uint8Array = new Uint8Array(hexString.length / 2)
|
||||||
|
// Iterate over pairs of characters in the hex string
|
||||||
|
for (let i = 0; i < hexString.length; i += 2) {
|
||||||
|
// Parse the pair of characters as a hexadecimal value and store it in the Uint8Array
|
||||||
|
uint8Array[i / 2] = parseInt(hexString.substr(i, 2), 16)
|
||||||
|
}
|
||||||
|
// Return the resulting Uint8Array
|
||||||
|
return uint8Array
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user