// META: title=WebCryptoAPI: Algorithm normalization matches names ASCII case-insensitively // U+212A is the Kelvin Sign function makeSalt() { return crypto.getRandomValues(new Uint8Array(32)); } async function makeKey(algorithm) { const keyData = new Uint8Array([]); return crypto.subtle.importKey("raw", keyData, algorithm, false, ["deriveBits"]); } promise_test(async (t) => { const algorithm = { name: "H\u212ADF", hash: "SHA-256", salt: makeSalt(), info: new TextEncoder().encode(''), }; const key = await makeKey("HKDF"); const p = crypto.subtle.deriveBits(algorithm, key, 256); return promise_rejects_dom(t, "NotSupportedError", p, algorithm.name); }, `"HDF" does not match "HKDF"`); promise_test(async (t) => { const algorithm = { name: "PB\u212ADF2", hash: "SHA-256", iterations: 1, salt: makeSalt(), }; const key = await makeKey("PBKDF2"); const p = crypto.subtle.deriveBits(algorithm, key, 256); return promise_rejects_dom(t, "NotSupportedError", p, algorithm.name); }, `"PBDF2" does not match "PBKDF2"`); promise_test(async (t) => { const algorithm = {name: "AES-\u212AW", length: 256}; const p = crypto.subtle.generateKey(algorithm, false, ["wrapKey"]); return promise_rejects_dom(t, "NotSupportedError", p, algorithm.name); }, `"AES-W" does not match "AES-KW"`); promise_test(async (t) => { const algorithm = { name: "RSASSA-P\u212ACS1-V1_5", modulusLength: 2048, publicExponent: new Uint8Array([3]), hash: "SHA-256", }; const p = crypto.subtle.generateKey(algorithm, false, ["sign"]); return promise_rejects_dom(t, "NotSupportedError", p, algorithm.name); }, `"RSASSA-PCS1-V1_5" does not match "RSASSA-PKCS1-V1_5"`);