コード例 #1
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="character">The character</param>
 /// <param name="src">The static certificate class</param>
 /// <param name="category">The owning category</param>
 internal CertificateClass(Character character, StaticCertificateClass src, CertificateGroup category)
 {
     Character = character;
     Category = category;
     StaticData = src;
     Certificate = new Certificate(character, src.Certificate, this);
 }
コード例 #2
0
 /// <summary>
 /// Does any initialization required before the address space can be used.
 /// </summary>
 /// <remarks>
 /// The externalReferences is an out parameter that allows the node manager to link to nodes
 /// in other node managers. For example, the 'Objects' node is managed by the CoreNodeManager and
 /// should have a reference to the root folder node(s) exposed by this node manager.
 /// </remarks>
 public override void CreateAddressSpace(IDictionary <NodeId, IList <IReference> > externalReferences)
 {
     lock (Lock)
     {
         base.CreateAddressSpace(externalReferences);
         _database.NamespaceIndex = NamespaceIndexes[0];
         _request.NamespaceIndex  = NamespaceIndexes[0];
         foreach (CertificateGroupConfiguration certificateGroupConfiguration in _certificateGroupConfigurationCollection)
         {
             try
             {
                 CertificateGroup certificateGroup = _certificateGroupFactory.Create(
                     _authoritiesStorePath, certificateGroupConfiguration);
                 SetCertificateGroupNodes(certificateGroup);
                 certificateGroup.Init();
                 _certificateGroups[certificateGroup.Id] = certificateGroup;
             }
             catch (Exception e)
             {
                 Utils.Trace(e, $"Unexpected error initializing certificateGroup: {certificateGroupConfiguration.Id}\r\n{e.StackTrace}");
                 // make sure gds server doesn't start without cert groups!
                 throw;
             }
         }
         _certTypeMap = new Dictionary <NodeId, string>
         {
             // list of supported cert type mappings (V1.04)
             { ObjectTypeIds.HttpsCertificateType, nameof(ObjectTypeIds.HttpsCertificateType) },
             { ObjectTypeIds.UserCredentialCertificateType, nameof(ObjectTypeIds.UserCredentialCertificateType) },
             { ObjectTypeIds.ApplicationCertificateType, nameof(ObjectTypeIds.ApplicationCertificateType) },
             { ObjectTypeIds.RsaMinApplicationCertificateType, nameof(ObjectTypeIds.RsaMinApplicationCertificateType) },
             { ObjectTypeIds.RsaSha256ApplicationCertificateType, nameof(ObjectTypeIds.RsaSha256ApplicationCertificateType) }
         };
     }
 }
コード例 #3
0
        public override async Task StartAsync(CancellationToken cancellationToken)
        {
            _logger.LogInformation($"Worker started at: {DateTime.Now}");
            //server settings
            StringCollection baseAddress = new StringCollection
            {
                DiscoveryEndpointUrl
            };
            StringCollection serverCapabilities = new StringCollection {
                "LDS", "GDS"
            };
            StringCollection discoveryUrls = new StringCollection
            {
                "opc.tcp://localhost:58810/UADiscovery"
            };

            //Initialise
            _applicationInstanceManager = new ApplicationInstanceManager(ApplicationName, ApplicationUri,
                                                                         baseAddress,
                                                                         serverCapabilities,
                                                                         DiscoveryEndpointUrl,
                                                                         DiscoveryEndpointApplicationUri,
                                                                         discoveryUrls,
                                                                         null,
                                                                         _applicationType,
                                                                         true);

            string directoryName = Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly()?.Location);

            if (!string.IsNullOrEmpty(directoryName))
            {
                string databaseDirectory = Path.Combine(directoryName, "gds\\database");
                if (!Directory.Exists(databaseDirectory))
                {
                    Directory.CreateDirectory(databaseDirectory);
                }
                string databaseFile = Path.Combine(databaseDirectory, "gds.database.json");
                if (!File.Exists(databaseFile))
                {
                    File.Create(databaseFile).Close();
                }

                ApplicationsDatabase applicationDatabase = ApplicationsDatabase.Load(databaseFile);
                CertificateGroup     certificateGroup    = new CertificateGroup();

                _mainServer = new MainServer(
                    applicationDatabase,
                    applicationDatabase,
                    certificateGroup);
                _mainServer.Start(_applicationInstanceManager.ApplicationInstance.ApplicationConfiguration);
            }

            await base.StartAsync(cancellationToken);
        }
コード例 #4
0
        /// <summary>
        /// Create CA test certificates.
        /// </summary>
        private async Task CreateCATestCerts(string tempStorePath)
        {
            Assert.IsTrue(EraseStore(tempStorePath));

            string           subjectName = "CN=CA Test Cert, O=OPC Foundation";
            X509Certificate2 newCACert   = CertificateFactory.CreateCertificate(
                null, null, subjectName, null)
                                           .SetCAConstraint()
                                           .CreateForRSA()
                                           .AddToStore(CertificateStoreType.Directory, tempStorePath);

            _caCert = newCACert;

            // initialize cert revocation list (CRL)
            X509CRL newCACrl = await CertificateGroup.RevokeCertificateAsync(tempStorePath, newCACert);

            _caCrl = newCACrl;
        }
        private void PopulateModelWithSelectedValues(IEnumerable <string> applicationIds, IEnumerable <string> serverIds, IEnumerable <string> groupIds, Certificate certificate)
        {
            foreach (string item in applicationIds)
            {
                CertificateApplication certificateApplication = new CertificateApplication();
                certificateApplication.Application = _context.Application.FirstOrDefault(x => x.Id == Convert.ToInt32(item));
                certificate.Applications.Add(certificateApplication);
            }

            foreach (string item in serverIds)
            {
                CertificateServer certificateServer = new CertificateServer();
                certificateServer.Server = _context.Server.FirstOrDefault(x => x.Id == Convert.ToInt32(item));
                certificate.Servers.Add(certificateServer);
            }

            foreach (string item in groupIds)
            {
                CertificateGroup certificateGroup = new CertificateGroup();
                certificateGroup.Group = _context.Group.FirstOrDefault(x => x.Id == Convert.ToInt32(item));
                certificate.Groups.Add(certificateGroup);
            }
        }
コード例 #6
0
        /// <summary>
        /// Create CA test certificates.
        /// </summary>
        private async Task CreateCATestCerts(string tempStorePath)
        {
            Assert.IsTrue(EraseStore(tempStorePath));

            string           subjectName = "CN=CA Test Cert, O=OPC Foundation";
            X509Certificate2 newCACert   = CertificateFactory.CreateCertificate(
                CertificateStoreType.Directory, tempStorePath, null,
                null,
                null,
                subjectName,
                null,
                CertificateFactory.DefaultKeySize,
                DateTime.UtcNow,
                CertificateFactory.DefaultLifeTime,
                CertificateFactory.DefaultHashSize,
                true);

            _caCert = newCACert;

            // initialize cert revocation list (CRL)
            X509CRL newCACrl = await CertificateGroup.RevokeCertificateAsync(tempStorePath, newCACert);

            _caCrl = newCACrl;
        }