internal SigningCertificateSettings(SigningCertificateSettings signingStoreSettings)
 {
     Utility.IfNullThrowNullArgumentException(signingStoreSettings, "signingStoreSettings");
     this.StoreLocation = signingStoreSettings.StoreLocation;
     this.StoreFindType = signingStoreSettings.StoreFindType;
     this.StoreName = signingStoreSettings.StoreName;
     this.StoreIdentifyingValue = signingStoreSettings.StoreIdentifyingValue;
 }
Esempio n. 2
0
        public static void Main(string[] args)
        {
            Console.WriteLine(" **** Announcement service ****");
            AnnouncementService announcementService = new AnnouncementService();
            announcementService.OnlineAnnouncementReceived += new EventHandler<AnnouncementEventArgs>(announcementService_OnlineAnnouncementReceived);
            announcementService.OfflineAnnouncementReceived += new EventHandler<AnnouncementEventArgs>(announcementService_OfflineAnnouncementReceived);

            // Search for the signing certificate in StoreLocation.LocalMachine, StoreName.My, using FindBySubjectDistinguishedName
            // Keep the default settings for client certificates (used to validate incoming messages): StoreLocation.LocalMachine, StoreName.My
            SigningCertificateSettings signingStoreSettings = new SigningCertificateSettings("CN=DiscoverySecureServiceCertificate");

            ServiceHost host = new ServiceHost(announcementService);

            UdpAnnouncementEndpoint announcementEndpoint = new UdpSecureAnnouncementEndpoint(
                DiscoveryVersion.WSDiscovery11,
                signingStoreSettings);

            try
            {
                host.AddServiceEndpoint(announcementEndpoint);
                host.Open();

                Console.WriteLine("\nPress enter to exit ..");
                Console.ReadLine();
                host.Close();
            }
            catch (CommunicationException e)
            {
                Console.WriteLine(e.Message);
            }
            catch (TimeoutException e)
            {
                Console.WriteLine(e.Message);
            }

            if (host.State != CommunicationState.Closed)
            {
                Console.WriteLine("Aborting the service...");
                host.Abort();
            }
        }
        void Intitialize(DiscoveryVersion discoveryVersion, SigningCertificateSettings signingStoreSettings)
        {
            Utility.IfNullThrowNullArgumentException(signingStoreSettings, "signingStoreSettings");

            this.secureBindingElement = new CompactSignatureSecurityBindingElement(
                discoveryVersion,
                signingStoreSettings);

            Binding binding = base.Binding;
            CustomBinding customBinding = binding as CustomBinding;
            if (customBinding == null)
            {
                customBinding = new CustomBinding(binding);
                customBinding.Elements.Insert(0, secureBindingElement);
                base.Binding = customBinding;
            }
            else
            {
                customBinding.Elements.Insert(0, secureBindingElement);
            }
        }
 public UdpSecureDiscoveryEndpoint(DiscoveryVersion discoveryVersion, SigningCertificateSettings signingStoreSettings)
     : base(discoveryVersion)
 {
     this.Intitialize(discoveryVersion, signingStoreSettings);
 }
 public UdpSecureAnnouncementEndpoint(SigningCertificateSettings signingStoreSettings)
     : base()
 {
     this.Intialize(signingStoreSettings);
 }