dtls-certificates.html (1620B)
1 <!doctype html> 2 <meta charset=utf-8> 3 <meta name="timeout" content="long"> 4 <title>RTCPeerConnection DTLS certifcate interop</title> 5 <script src="/resources/testharness.js"></script> 6 <script src="/resources/testharnessreport.js"></script> 7 <script src="../RTCPeerConnection-helper.js"></script> 8 <script> 9 // https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-generatecertificate 10 const certificateParameters = { 11 ecdsa: { 12 name: 'ECDSA', 13 namedCurve: 'P-256', 14 }, 15 rsa: { 16 name: 'RSASSA-PKCS1-v1_5', 17 modulusLength: 2048, 18 publicExponent: new Uint8Array([1, 0, 1]), 19 hash: 'SHA-256', 20 }, 21 }; 22 23 Object.keys(certificateParameters).forEach(async localType => { 24 Object.keys(certificateParameters).forEach(async remoteType => { 25 promise_test(async t => { 26 const localParameters = certificateParameters[localType]; 27 const remoteParameters = certificateParameters[remoteType]; 28 const firstCertificate = await RTCPeerConnection.generateCertificate(localParameters); 29 const secondCertificate = await RTCPeerConnection.generateCertificate(remoteParameters); 30 const pc1 = new RTCPeerConnection({certificates: [firstCertificate]}); 31 t.add_cleanup(() => pc1.close()); 32 const pc2 = new RTCPeerConnection({certificates: [secondCertificate]}); 33 t.add_cleanup(() => pc2.close()); 34 pc1.createDataChannel('test'); 35 exchangeIceCandidates(pc1, pc2); 36 await exchangeOfferAnswer(pc1, pc2); 37 await waitForConnectionStateChange(pc1, ['connected']); 38 }, `RTCPeerConnection establishes using ${localType} and ${remoteType} certificates`); 39 }); 40 }); 41 42 </script>