sframe-keys.https.html (3392B)
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 <script src=/resources/testdriver.js></script> 8 <script src=/resources/testdriver-vendor.js></script> 9 <script src='../mediacapture-streams/permission-helper.js'></script> 10 </head> 11 <body> 12 <video id="audio" autoplay playsInline></video> 13 <script src ="routines.js"></script> 14 <script> 15 let sender, receiver; 16 let key1, key2, key3, key4; 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 transform = new SFrameTransform; 21 22 await transform.setEncryptionKey(key); 23 await transform.setEncryptionKey(key, 1); 24 25 await transform.setEncryptionKey(key, BigInt('18446744073709551613')); 26 await transform.setEncryptionKey(key, BigInt('18446744073709551614')); 27 await transform.setEncryptionKey(key, BigInt('18446744073709551615')); 28 await transform.setEncryptionKey(key, BigInt('18446744073709551616')).then(assert_unreached, (e) => { 29 assert_true(e instanceof RangeError); 30 assert_equals(e.message, "Not a 64 bits integer"); 31 }); 32 }, "Passing various key IDs"); 33 34 promise_test(async (test) => { 35 key1 = 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"]); 36 key2 = await crypto.subtle.importKey("raw", new Uint8Array([144, 77, 43, 10, 72, 19, 37, 67, 236, 219, 24, 93, 26, 165, 91, 178]), "HKDF", false, ["deriveBits", "deriveKey"]); 37 key3 = await crypto.subtle.importKey("raw", new Uint8Array([145, 77, 43, 10, 72, 19, 37, 67, 236, 219, 24, 93, 26, 165, 91, 178]), "HKDF", false, ["deriveBits", "deriveKey"]); 38 key4 = await crypto.subtle.importKey("raw", new Uint8Array([146, 77, 43, 10, 72, 19, 37, 67, 236, 219, 24, 93, 26, 165, 91, 178]), "HKDF", false, ["deriveBits", "deriveKey"]); 39 40 await setMediaPermission("granted", ["microphone"]); 41 const localStream = await navigator.mediaDevices.getUserMedia({audio: true}); 42 const stream = await new Promise((resolve, reject) => { 43 const connections = createConnections(test, (firstConnection) => { 44 sender = firstConnection.addTrack(localStream.getAudioTracks()[0], localStream); 45 let transform = new SFrameTransform; 46 transform.setEncryptionKey(key1); 47 sender.transform = transform; 48 }, (secondConnection) => { 49 secondConnection.ontrack = (trackEvent) => { 50 let transform = new SFrameTransform; 51 transform.setEncryptionKey(key1); 52 transform.setEncryptionKey(key2); 53 transform.setEncryptionKey(key3, 1000); 54 transform.setEncryptionKey(key4, BigInt('18446744073709551615')); 55 receiver = trackEvent.receiver; 56 receiver.transform = transform; 57 resolve(trackEvent.streams[0]); 58 }; 59 }); 60 61 test.step_timeout(() => reject("Test timed out"), 5000); 62 }); 63 64 audio.srcObject = stream; 65 await audio.play(); 66 }, "Audio exchange with SFrame setup"); 67 </script> 68 </body> 69 </html>