tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>