public void BouncyCertFromCoreFxCert() { logger.LogDebug("--> " + System.Reflection.MethodBase.GetCurrentMethod().Name); logger.BeginScope(System.Reflection.MethodBase.GetCurrentMethod().Name); #if NETCOREAPP if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) { logger.LogDebug("Test skipped for netcoreapp and macOS as not able to load certificates from a .pfx file pre .NET Core 5.0."); return; } #endif var coreFxCert = new X509Certificate2("certs/localhost.pfx", string.Empty, X509KeyStorageFlags.Exportable); Assert.NotNull(coreFxCert); Assert.NotNull(coreFxCert.PrivateKey); string coreFxFingerprint = DtlsUtils.Fingerprint(coreFxCert).ToString(); logger.LogDebug($"Core FX certificate fingerprint {coreFxFingerprint}."); var bcCert = Org.BouncyCastle.Security.DotNetUtilities.FromX509Certificate(coreFxCert); Assert.NotNull(bcCert); var bcKey = Org.BouncyCastle.Security.DotNetUtilities.GetKeyPair(coreFxCert.PrivateKey).Private; Assert.NotNull(bcKey); string bcFingerprint = DtlsUtils.Fingerprint(bcCert).ToString(); logger.LogDebug($"BouncyCastle certificate fingerprint {bcFingerprint}."); Assert.Equal(coreFxFingerprint, bcFingerprint); }
public void CreateSelfSignedCertifcateUnitTest() { logger.LogDebug("--> " + System.Reflection.MethodBase.GetCurrentMethod().Name); logger.BeginScope(System.Reflection.MethodBase.GetCurrentMethod().Name); var cert = DtlsUtils.CreateSelfSignedCert(); Assert.NotNull(cert); }
public void CreateClientInstanceUnitTest() { logger.LogDebug("--> " + System.Reflection.MethodBase.GetCurrentMethod().Name); logger.BeginScope(System.Reflection.MethodBase.GetCurrentMethod().Name); (var tlsCert, var pvtKey) = DtlsUtils.CreateSelfSignedTlsCert(); DtlsSrtpTransport dtlsTransport = new DtlsSrtpTransport(new DtlsSrtpClient(tlsCert, pvtKey)); Assert.NotNull(dtlsTransport); }
public void CreateSelfSignedCertifcateUnitTest() { logger.LogDebug("--> " + System.Reflection.MethodBase.GetCurrentMethod().Name); logger.BeginScope(System.Reflection.MethodBase.GetCurrentMethod().Name); (var tlsCert, var pvtKey) = DtlsUtils.CreateSelfSignedTlsCert(); logger.LogDebug(tlsCert.ToString()); Assert.NotNull(tlsCert); Assert.NotNull(pvtKey); }
public void SendVideoRtcpFeedbackReportUnitTest() { logger.LogDebug("--> " + System.Reflection.MethodBase.GetCurrentMethod().Name); logger.BeginScope(System.Reflection.MethodBase.GetCurrentMethod().Name); RTCConfiguration pcConfiguration = new RTCConfiguration { certificates = new List <RTCCertificate> { new RTCCertificate { Certificate = DtlsUtils.CreateSelfSignedCert() } }, X_UseRtpFeedbackProfile = true }; RTCPeerConnection pcSrc = new RTCPeerConnection(pcConfiguration); var videoTrackSrc = new MediaStreamTrack(SDPMediaTypesEnum.video, false, new List <SDPMediaFormat> { new SDPMediaFormat(SDPMediaFormatsEnum.VP8) }); pcSrc.addTrack(videoTrackSrc); var offer = pcSrc.createOffer(new RTCOfferOptions()); logger.LogDebug($"offer: {offer.sdp}"); RTCPeerConnection pcDst = new RTCPeerConnection(pcConfiguration); var videoTrackDst = new MediaStreamTrack(SDPMediaTypesEnum.video, false, new List <SDPMediaFormat> { new SDPMediaFormat(SDPMediaFormatsEnum.VP8) }); pcDst.addTrack(videoTrackDst); var setOfferResult = pcDst.setRemoteDescription(offer); Assert.Equal(SetDescriptionResultEnum.OK, setOfferResult); var answer = pcDst.createAnswer(null); var setAnswerResult = pcSrc.setRemoteDescription(answer); Assert.Equal(SetDescriptionResultEnum.OK, setAnswerResult); logger.LogDebug($"answer: {answer.sdp}"); RTCPFeedback pliReport = new RTCPFeedback(pcDst.VideoLocalTrack.Ssrc, pcDst.VideoRemoteTrack.Ssrc, PSFBFeedbackTypesEnum.PLI); pcDst.SendRtcpFeedback(SDPMediaTypesEnum.video, pliReport); }
public void GetCertifcateFingerprintUnitTest() { logger.LogDebug("--> " + System.Reflection.MethodBase.GetCurrentMethod().Name); logger.BeginScope(System.Reflection.MethodBase.GetCurrentMethod().Name); (var tlsCert, var pvtKey) = DtlsUtils.CreateSelfSignedTlsCert(); Assert.NotNull(tlsCert); var fingerprint = DtlsUtils.Fingerprint(tlsCert); logger.LogDebug($"Fingerprint {fingerprint}."); Assert.NotNull(fingerprint.algorithm); Assert.NotNull(fingerprint.value); }
public void LoadSecretFromArchiveUnitTest() { logger.LogDebug("--> " + System.Reflection.MethodBase.GetCurrentMethod().Name); logger.BeginScope(System.Reflection.MethodBase.GetCurrentMethod().Name); var cert = new X509Certificate2("certs/localhost.pfx", (string)null, X509KeyStorageFlags.Exportable); Assert.NotNull(cert); //var rsaParams = ((RSA)cert.PrivateKey).ExportParameters(true); var key = DtlsUtils.LoadPrivateKeyResource(cert); Assert.NotNull(key); }
public void LoadSecretFromArchiveUnitTest() { logger.LogDebug("--> " + System.Reflection.MethodBase.GetCurrentMethod().Name); logger.BeginScope(System.Reflection.MethodBase.GetCurrentMethod().Name); #if NETCOREAPP if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) { logger.LogDebug("Test skipped for netcoreapp and macOS as not able to load certificates from a .pfx file pre .NET Core 5.0."); return; } #endif var cert = new X509Certificate2("certs/localhost.pfx", string.Empty, X509KeyStorageFlags.Exportable); Assert.NotNull(cert); var key = DtlsUtils.LoadPrivateKeyResource(cert); Assert.NotNull(key); }
public void ConnectTest() { //CertificateInfo certificateInfo = DtlsUtils. byte[] testData = { 1, 2, 3, 4, 5 }; int clientUdpPort = 8001, serverUdpPort = 8002; var clientSocket = new Socket(SocketType.Dgram, ProtocolType.Udp); clientSocket.Bind(new IPEndPoint(IPAddress.Any, clientUdpPort)); var serverSocket = new Socket(SocketType.Dgram, ProtocolType.Udp); serverSocket.Bind(new IPEndPoint(IPAddress.Any, serverUdpPort)); clientSocket.Connect(IPAddress.Loopback, serverUdpPort); serverSocket.Connect(IPAddress.Loopback, clientUdpPort); clientSocket.Send(testData); byte[] receiveBuffer = new byte[serverSocket.Available]; serverSocket.Receive(receiveBuffer); CollectionAssert.AreEqual(receiveBuffer, testData); CertificateInfo clientCertificateInfo = DtlsUtils.GenerateCertificateInfo(); var clientDatagramTransport = new DatagramTransportImpl(clientSocket); var client = new DtlsClient(clientDatagramTransport, clientCertificateInfo, new DtlsClientProtocol(new Org.BouncyCastle.Security.SecureRandom())); CertificateInfo serverCertificateInfo = DtlsUtils.GenerateCertificateInfo(); var serverDatagramTransport = new DatagramTransportImpl(serverSocket); var server = new DtlsServer(serverDatagramTransport, serverCertificateInfo, new DtlsServerProtocol(new Org.BouncyCastle.Security.SecureRandom())); Task serverAcceptTask = new Task(() => server.Start()); serverAcceptTask.Start(); client.HandshakeComplete += (sender, args) => { }; client.ServerCertificateAvailable += (sender, args) => { }; client.Start(); }
public void LoadSecretFromArchiveUnitTest() { logger.LogDebug("--> " + System.Reflection.MethodBase.GetCurrentMethod().Name); logger.BeginScope(System.Reflection.MethodBase.GetCurrentMethod().Name); if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) { logger.LogDebug("Test skipped as MacOS is not able to load certificates from a .pfx file pre .NET Core 5.0."); } else { var cert = new X509Certificate2("certs/localhost.pfx", string.Empty, X509KeyStorageFlags.Exportable); Assert.NotNull(cert); //var rsaParams = ((RSA)cert.PrivateKey).ExportParameters(true); var key = DtlsUtils.LoadPrivateKeyResource(cert); Assert.NotNull(key); } }
public void CertificateInfoGenerationTest() { var certInfo = DtlsUtils.GenerateCertificateInfo(); }