private bool InitializeFederationMemberKey()
        {
            if (this.nodeSettings.DevMode == null)
            {
                // Load key.
                Key key = new KeyTool(this.nodeSettings.DataFolder).LoadPrivateKey();
                if (key == null)
                {
                    this.logger.LogWarning("No federation key was loaded from 'federationKey.dat'.");
                    return(false);
                }

                this.CurrentFederationKey = key;
                this.SetIsFederationMember();

                if (this.CurrentFederationKey == null)
                {
                    this.logger.LogTrace("(-)[NOT_FED_MEMBER]");
                    return(false);
                }

                return(true);
            }
            else
            {
                var keyIndex = this.nodeSettings.ConfigReader.GetOrDefault("fedmemberindex", 0);
                this.CurrentFederationKey = this.network.FederationKeys[keyIndex];
                this.SetIsFederationMember();
                return(true);
            }
        }
Exemple #2
0
        /// <summary>Loads federation key if it exists.</summary>
        private void LoadKey()
        {
            var keyTool = new KeyTool(this.settings.DataFolder);

            Key key = keyTool.LoadPrivateKey();

            this.IsFederationMember  = key != null;
            this.FederationMemberKey = key;
        }
        public virtual void Initialize()
        {
            var genesisFederation = new List <IFederationMember>(this.network.ConsensusOptions.GenesisFederationMembers);

            this.logger.LogInformation("Genesis federation contains {0} members. Their public keys are: {1}", genesisFederation.Count, $"{Environment.NewLine}{string.Join(Environment.NewLine, genesisFederation)}");

            // Load federation from the db.
            this.LoadFederation();

            if (this.federationMembers == null)
            {
                this.logger.LogDebug("Federation members are not stored in the db. Loading genesis federation members.");

                this.federationMembers = genesisFederation;

                this.SaveFederation(this.federationMembers);
            }

            // Display federation.
            this.logger.LogInformation("Current federation contains {0} members. Their public keys are: {1}",
                                       this.federationMembers.Count, Environment.NewLine + string.Join(Environment.NewLine, this.federationMembers));

            // Load key.
            Key key = new KeyTool(this.settings.DataFolder).LoadPrivateKey();

            if (key == null)
            {
                this.logger.LogWarning("No federation key was loaded from 'federationKey.dat'.");
                return;
            }

            this.CurrentFederationKey = key;
            this.SetIsFederationMember();

            if (this.CurrentFederationKey == null)
            {
                this.logger.LogTrace("(-)[NOT_FED_MEMBER]");
                return;
            }

            // Loaded key has to be a key for current federation.
            if (!this.federationMembers.Any(x => x.PubKey == this.CurrentFederationKey.PubKey))
            {
                string message = "Key provided is not registered on the network!";

                this.logger.LogWarning(message);
            }

            this.logger.LogInformation("Federation key pair was successfully loaded. Your public key is: '{0}'.", this.CurrentFederationKey.PubKey);
        }
Exemple #4
0
        // TODO

        /*
         * Subscribe to VotingManager and track when new member is added or deleted. Update keys and then persist.
         */

        public void Initialize()
        {
            // Load federation from the db.
            this.federationMembers = this.LoadFederationKeys();

            if (this.federationMembers == null)
            {
                this.logger.LogDebug("Federation members are not stored in the db. Loading genesis federation members.");

                this.federationMembers = this.network.ConsensusOptions.GenesisFederationPublicKeys;

                this.SaveFederationKeys(this.federationMembers);
            }

            // Display federation.
            this.logger.LogInformation("Federation contains {0} members. Their public keys are: {1}",
                                       this.federationMembers.Count, Environment.NewLine + string.Join(Environment.NewLine, this.federationMembers));

            // Load key.
            Key key = new KeyTool(this.settings.DataFolder).LoadPrivateKey();

            this.IsFederationMember  = key != null;
            this.FederationMemberKey = key;

            if (this.FederationMemberKey == null)
            {
                this.logger.LogTrace("(-)[NOT_FED_MEMBER]");
                return;
            }

            // Loaded key has to be a key for current federation.
            if (!this.federationMembers.Contains(this.FederationMemberKey.PubKey))
            {
                string message = "Key provided is not registered on the network!";

                this.logger.LogCritical(message);
                throw new Exception(message);
            }

            this.logger.LogInformation("Federation key pair was successfully loaded. Your public key is: '{0}'.", this.FederationMemberKey.PubKey);
        }