OperationError без подробностей при использовании Web Crypto API

У меня есть сайт на GitHub Pages. Я хочу сделать так, чтобы были страницы, которые можно просматривать только по паролю (хотя, наверное, это нарушение правил, которые никто не читает). Я решил для этого использовать AES и Web Crypto API.

С шифровкой я справился. Вот я дошёл до дешифровки, но функция не выполняется с ошибкой OperationError без подробностей. А номер строки в исключении стоит на закрывающую фигурную скобку функции! Я через try понял, что проблема в crypto.subtle.decrypt. Я попытался поменять AES-CBC на AES-GCM, без толку. Вроде Web Crypto API работает только в безопасных контекстах: я сделал коммит и попытался через GitHub Pages, без толку.

Может, лучше поменять Web Crypto API на что-то другое?

async function decrypt(cipher, cipherText) {
    cipher = base64ToBytes(cipher);
    let cipherText = base64ToBytes(cipherText), newCipher = new Uint8Array(32);

    for(let i = 0, j = 0; j < 32; i++, j++) {
        if(i >= cipher.length) i = 0;
        newCipher[j] = cipher[i];
    }

    cipher = await crypto.subtle.importKey(
        "raw",
        newCipher,
        {
            name: "AES-CBC",
        },
        false,
        ["decrypt"]
    );

    const text = new TextDecoder().decode(await crypto.subtle.decrypt(
        {
            name: "AES-CBC",
            iv: new Uint8Array(16),
        },
        cipher,
        cipherText
    ));

    if(confirm()) document.body.innerHTML = text;
}

Ответы (0 шт):