Esempio n. 1
0
        public AccountWithPublicKey GetAccountFromSecretPhrase(string secretPhrase)
        {
            var localAccountService  = new LocalAccountService();
            var accountWithPublicKey = localAccountService.GetAccount(AccountIdLocator.BySecretPhrase(secretPhrase));

            return(accountWithPublicKey);
        }
Esempio n. 2
0
        private void GetAccountProperties()
        {
            var localAccountService = new LocalAccountService();

            TestSettings.Account1 = localAccountService.GetAccount(AccountIdLocator.BySecretPhrase(TestSettings.SecretPhrase1));
            TestSettings.Account2 = localAccountService.GetAccount(AccountIdLocator.BySecretPhrase(TestSettings.SecretPhrase2));
        }
Esempio n. 3
0
        static CreateTransaction()
        {
            var localCrypto = new LocalAccountService();

            SecretPhrase = TestSettings.SecretPhrase1;
            Account      = localCrypto.GetAccount(AccountIdLocator.BySecretPhrase(SecretPhrase));
        }
Esempio n. 4
0
        public string GeneratePasswordWithAccountEnding(string ending)
        {
            if (string.IsNullOrWhiteSpace(ending))
            {
                throw new ArgumentException("Must have a value", nameof(ending));
            }
            if (ending.Length > 5)
            {
                throw new ArgumentException("Ending is too long, maximum 5 chars is allowed", nameof(ending));
            }
            if (ending.ToCharArray().ToList().Any(c => !AllowedAccountCharacters.Contains(c)))
            {
                throw new ArgumentException($"Illegal characters: {ending}, only these are allowed: {AllowedAccountCharacters}", nameof(ending));
            }

            var found    = false;
            var password = string.Empty;

            while (!found)
            {
                password = GeneratePassword();
                var account = _localAccountService.GetAccount(AccountIdLocator.BySecretPhrase(password));
                if (account.AccountRs.EndsWith(ending))
                {
                    found = true;
                }
            }
            return(password);
        }
Esempio n. 5
0
        public AccountWithPublicKey GetAccount(AccountIdLocator locator)
        {
            var publicKey = !string.IsNullOrEmpty(locator.SecretPhrase)
                ? _crypto.GetPublicKey(locator.SecretPhrase)
                : locator.PublicKey;

            var accountId = _crypto.GetAccountIdFromPublicKey(publicKey);

            return(new AccountWithPublicKey(accountId, publicKey));
        }
Esempio n. 6
0
        private async Task CheckShufflingDistributionTransactions()
        {
            if (!_knownTransactions.Any())
            {
                var shufflings          = (await _nxtServer.GetShufflingsStageDone()).ToList();
                var localAccountService = new LocalAccountService();
                var found          = false;
                var shufflingIndex = 0;

                while (!found && shufflings.Count() > shufflingIndex)
                {
                    var shuffling = shufflings[shufflingIndex];
                    foreach (var recipientPublicKey in shuffling.RecipientPublicKeys)
                    {
                        var account = localAccountService.GetAccount(AccountIdLocator.ByPublicKey(recipientPublicKey));
                        if (_walletRepository.NxtAccount.AccountId == account.AccountId)
                        {
                            var participants = await _nxtServer.GetShufflingParticipants(shuffling.ShufflingId);

                            var lastParticipant         = participants.Participants.Single(p => p.NextAccountId == 0);
                            var lastParticipantToVerify = participants.Participants.Single(p => p.NextAccountId == lastParticipant.AccountId);

                            var verifyShufflingTransactions = await _nxtServer.GetTransactionsAsync(lastParticipantToVerify.AccountRs, TransactionSubType.ShufflingVerification);

                            var verifyShufflingTransaction = verifyShufflingTransactions.Single(t => ((ShufflingVerificationAttachment)t.Attachment).ShufflingId == shuffling.ShufflingId);
                            var block = await _nxtServer.GetBlockAsync(verifyShufflingTransaction.Height);

                            var transaction = new ShufflingDistributionTransaction
                            {
                                AccountFrom                = Transaction.GeneratedFromAddress,
                                AccountTo                  = _walletRepository.NxtAccount.AccountRs,
                                Height                     = verifyShufflingTransaction.Height,
                                IsConfirmed                = true,
                                NqtAmount                  = shuffling.Amount.Nqt,
                                Message                    = "[Shuffling Distribution]",
                                NqtFee                     = 0,
                                RecipientPublicKey         = recipientPublicKey.ToHexString(),
                                ShufflingId                = (long)shuffling.ShufflingId,
                                Timestamp                  = block.Timestamp,
                                TransactionType            = TransactionType.ShufflingDistribution,
                                UserIsTransactionSender    = false,
                                UserIsTransactionRecipient = true
                            };
                            _newTransactions.Add(transaction);

                            found = true;
                            break;
                        }
                    }
                    shufflingIndex++;
                }
            }
        }
Esempio n. 7
0
        private void SetupAccounts(string readOnlyAccount)
        {
            IsReadOnlyAccount = !string.IsNullOrEmpty(readOnlyAccount);

            if (IsReadOnlyAccount)
            {
                NxtAccount = readOnlyAccount;
            }
            else
            {
                NxtAccountWithPublicKey = new LocalAccountService().GetAccount(AccountIdLocator.BySecretPhrase(SecretPhrase));
                NxtAccount = NxtAccountWithPublicKey;
            }
        }
Esempio n. 8
0
        private static void Main()
        {
            var generator      = new LocalPasswordGenerator();
            var accountService = new LocalAccountService();

            Console.Write("Enter desired ending:");
            var ending = Console.ReadLine();

            var secretPhrase = generator.GeneratePasswordWithAccountEnding(ending);
            var account      = accountService.GetAccount(AccountIdLocator.BySecretPhrase(secretPhrase));

            Console.WriteLine($"Generated NXT Address: {account.AccountRs}");
            Console.WriteLine($"Secret phrase: {secretPhrase}");
            Console.WriteLine("Press enter to quit.");
            Console.ReadLine();
        }
Esempio n. 9
0
        public async Task <NxtAccount> AddAccount()
        {
            var localPasswordGenerator = new LocalPasswordGenerator();
            var localAccountService    = new LocalAccountService();

            var secretPhrase         = localPasswordGenerator.GeneratePassword();
            var accountWithPublicKey = localAccountService.GetAccount(AccountIdLocator.BySecretPhrase(secretPhrase));

            var account = new NxtAccount
            {
                Address      = accountWithPublicKey.AccountRs,
                SecretPhrase = secretPhrase,
                BalanceNqt   = 0
            };

            await wallet.AddAccount(account);

            return(account);
        }
Esempio n. 10
0
        public LocalGeneratedToken GenerateToken(string secretPhrase, string message, DateTime?timestamp = null)
        {
            var messageBytes = Encoding.UTF8.GetBytes(message);

            if (!timestamp.HasValue)
            {
                timestamp = DateTime.UtcNow;
            }
            var datetimeConverter = new DateTimeConverter();
            var nxtTimestamp      = datetimeConverter.GetNxtTimestamp(timestamp.Value);
            var tokenString       = _crypto.GenerateToken(secretPhrase, messageBytes, nxtTimestamp);

            var generatedToken = new LocalGeneratedToken
            {
                Timestamp = datetimeConverter.GetFromNxtTime(nxtTimestamp),
                Token     = tokenString,
                Valid     = true,
                Account   = _localAccountService.GetAccount(AccountIdLocator.BySecretPhrase(secretPhrase))
            };

            return(generatedToken);
        }
        private void TestDecodeToken()
        {
            var random = new Random();

            using (Logger = new TestsessionLogger(_logger))
            {
                for (var i = 0; i < 100; i++)
                {
                    var expected = BuildRandomString(random);
                    var token    = _localTokenService.GenerateToken(TestSettings.SecretPhrase1, expected);

                    var decodedToken        = _localTokenService.DecodeToken(expected, token.Token);
                    var serviceDecodedToken = _tokenService.DecodeToken(expected, token.Token).Result;

                    var account = _localAccountService.GetAccount(AccountIdLocator.ByPublicKey(decodedToken.PublicKey));

                    AssertEquals(token.Timestamp, decodedToken.Timestamp, nameof(decodedToken.Timestamp));
                    AssertEquals(serviceDecodedToken.Account, account.AccountId, nameof(decodedToken.PublicKey));
                    AssertEquals(serviceDecodedToken.AccountRs, account.AccountRs, nameof(decodedToken.PublicKey));
                    AssertEquals(TestSettings.Account1.PublicKey.ToHexString(), decodedToken.PublicKey.ToHexString(), nameof(decodedToken.PublicKey));
                    AssertIsTrue(decodedToken.Valid, nameof(decodedToken.Valid));
                }
            }
        }
Esempio n. 12
0
        public async Task Init()
        {
            var accountIdReply = await _accountService.GetAccountId(AccountIdLocator.BySecretPhrase(_secretPhrase));

            _accountId = accountIdReply.AccountId;
        }