| <!doctype html> |
| <meta charset=utf-8> |
| <meta name="timeout" content="long"> |
| <title>RTCPeerConnection DTLS certifcate interop</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="../RTCPeerConnection-helper.js"></script> |
| <script> |
| // https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-generatecertificate |
| const certificateParameters = { |
| ecdsa: { |
| name: 'ECDSA', |
| namedCurve: 'P-256', |
| }, |
| rsa: { |
| name: 'RSASSA-PKCS1-v1_5', |
| modulusLength: 2048, |
| publicExponent: new Uint8Array([1, 0, 1]), |
| hash: 'SHA-256', |
| }, |
| }; |
| |
| Object.keys(certificateParameters).forEach(async localType => { |
| Object.keys(certificateParameters).forEach(async remoteType => { |
| promise_test(async t => { |
| const localParameters = certificateParameters[localType]; |
| const remoteParameters = certificateParameters[remoteType]; |
| const firstCertificate = await RTCPeerConnection.generateCertificate(localParameters); |
| const secondCertificate = await RTCPeerConnection.generateCertificate(remoteParameters); |
| const pc1 = new RTCPeerConnection({certificates: [firstCertificate]}); |
| t.add_cleanup(() => pc1.close()); |
| const pc2 = new RTCPeerConnection({certificates: [secondCertificate]}); |
| t.add_cleanup(() => pc2.close()); |
| pc1.createDataChannel('test'); |
| exchangeIceCandidates(pc1, pc2); |
| await exchangeOfferAnswer(pc1, pc2); |
| await waitForConnectionStateChange(pc1, ['connected']); |
| }, `RTCPeerConnection establishes using ${localType} and ${remoteType} certificates`); |
| }); |
| }); |
| |
| </script> |