sframe-transform-buffer-source.html (1679B)
1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <script src="/resources/testharness.js"></script> 6 <script src="/resources/testharnessreport.js"></script> 7 </head> 8 <body> 9 <script> 10 11 async function getEncryptedData(transform) 12 { 13 const chunk = await transform.readable.getReader().read(); 14 const value = new Uint8Array(chunk.value); 15 return [...value]; 16 } 17 18 promise_test(async (test) => { 19 const key = await crypto.subtle.importKey("raw", new Uint8Array([143, 77, 43, 10, 72, 19, 37, 67, 236, 219, 24, 93, 26, 165, 91, 178]), "HKDF", false, ["deriveBits", "deriveKey"]); 20 const transform1 = new SFrameTransform; 21 const transform2 = new SFrameTransform; 22 const transform3 = new SFrameTransform; 23 24 await transform1.setEncryptionKey(key); 25 await transform2.setEncryptionKey(key); 26 await transform3.setEncryptionKey(key); 27 28 const buffer1 = new ArrayBuffer(10); 29 const buffer2 = new ArrayBuffer(11); 30 const view1 = new Uint8Array(buffer1); 31 const view2 = new Uint8Array(buffer2, 1); 32 for (let i = 0 ; i < buffer1.byteLength; ++i) { 33 view1[i] = i; 34 view2[i] = i; 35 } 36 37 transform1.writable.getWriter().write(buffer1); 38 transform2.writable.getWriter().write(view1); 39 transform3.writable.getWriter().write(view2); 40 41 const result1 = await getEncryptedData(transform1); 42 const result2 = await getEncryptedData(transform2); 43 const result3 = await getEncryptedData(transform3); 44 45 assert_array_equals(result1, result2, "result2"); 46 assert_array_equals(result1, result3, "result3"); 47 }, "Uint8Array as input to SFrameTransform"); 48 </script> 49 </body> 50 </html>