Exemple #1
0
        //********************************************************************************************
        // Function: InitializeDrt
        //
        // Description: Initializes and brings a DRT instance online
        // 1) Brings up an ipv6 transport layer
        // 2) Attaches a security provider (according to user's choice)
        // 3) Attaches a bootstrap provider (according to user's choice)
        // 4) Calls DrtOpen to bring the DRT instance online
        //
        //********************************************************************************************
        private static bool InitializeDrt(DRT_CONTEXT Drt)
        {
            string pwszCompName          = default;
            string pwszBootstrapHostname = null;

            //
            // Initialize DrtSettings
            //
            Drt.port = 0;
            Drt.settings.pwzDrtInstancePrefix = "Local_DRT";
            Drt.settings.dwSize = (uint)Marshal.SizeOf <DRT_SETTINGS>();
            Drt.settings.cbKey  = 32;            // KEYSIZE
            Drt.settings.ulMaxRoutingAddresses = 4;
            Drt.settings.bProtocolMajorVersion = 0x6;
            Drt.settings.bProtocolMinorVersion = 0x65;
            Drt.settings.eSecurityMode         = DRT_SECURITY_MODE.DRT_SECURE_CONFIDENTIALPAYLOAD;
            Drt.settings.hTransport            = default;
            Drt.settings.pSecurityProvider     = default;
            Drt.settings.pBootstrapProvider    = default;
            Drt.hDrt = default;

            //
            // *Transport*
            //

            var hr = DrtCreateIpv6UdpTransport(DRT_SCOPE.DRT_GLOBAL_SCOPE, 0, 300, ref Drt.port, out Drt.settings.hTransport);

            if (hr.Failed)
            {
                DisplayError(hr, "DrtCreateTransport"); goto Cleanup;
            }

            //
            // *Security Provider*
            //

            if (Drt.SecurityProviderType == 0)             //Null Security Provider
            {
                hr = DrtCreateNullSecurityProvider(out Drt.settings.pSecurityProvider);
            }
            else if (Drt.SecurityProviderType == 1)             //Derived Key Security Provider
            {
                hr = ReadCertFromFile("RootCertificate.cer", out var pRoot, out _);
                if (hr.Failed)
                {
                    Console.Write("No RootCertificate.cer file found in the current directory, Creating a new root certificate.\n");
                    hr = MakeCert("RootCertificate.cer", "RootCert", default, default);
Exemple #2
0
 private static IntPtr AddCtx(DRT_CONTEXT ctx)
 {
     var id = System.Diagnostics.Process.GetCurrentProcess().Id; contexts.Add(id, ctx); return(new IntPtr(id));
 }