function HmacSHA256(key, input) { input = assertIsArrayBuffer(input); key = assertIsArrayBuffer(key); return window.crypto.subtle.sign({name: "HMAC", hash: "SHA-256"}, key, input); } function encryptAESCTR(input, key, counter) { input = assertIsArrayBuffer(input); key = assertIsArrayBuffer(key); counter = assertIsArrayBuffer(counter); return window.crypto.subtle.encrypt({name: "AES-CTR", counter: counter}, key, input); } function decryptAESCTR(input, key, counter) { input = assertIsArrayBuffer(input); key = assertIsArrayBuffer(key); counter = assertIsArrayBuffer(counter); return window.crypto.subtle.decrypt({name: "AES-CTR", counter: counter}, key, input); } function decryptAESCBC(input, key, iv) { input = assertIsArrayBuffer(input); key = assertIsArrayBuffer(key); iv = assertIsArrayBuffer(iv); return window.crypto.subtle.decrypt({name: "AES-CBC", iv: iv}, key, input); }