Exemple #1
0
        public async Task LoginWithPostingKeyTest(KnownChains apiName)
        {
            var user     = Users[apiName];
            var request  = new ValidatePrivateKeyModel(user.Login, user.PostingKey, KeyRoleType.Posting);
            var response = await Api[apiName].ValidatePrivateKey(request, CancellationToken.None);

            AssertResult(response);
            Assert.That(response.IsSuccess, Is.True);
        }
Exemple #2
0
        public async Task Login_With_Posting_Key_Wrong_Username(KnownChains apiName)
        {
            var user = Users[apiName];

            user.Login += "x";
            var request = new ValidatePrivateKeyModel(user.Login, user.PostingKey, KeyRoleType.Posting);

            var response = await Api[apiName].ValidatePrivateKey(request, CancellationToken.None);

            Assert.IsTrue(response.Exception.Message.StartsWith("13 N5boost16exception_detail10clone_implINS0_19error_info_injectorISt12out_of_rangeEEEE: unknown key"));
        }
Exemple #3
0
        public async Task Login_With_Posting_Key_Wrong_PostingKey(KnownChains apiName)
        {
            var user = Users[apiName];

            user.PostingKey += "x";
            var request = new ValidatePrivateKeyModel(user.Login, user.PostingKey, KeyRoleType.Posting);

            var response = await Api[apiName].ValidatePrivateKey(request, CancellationToken.None);

            Assert.IsTrue(response.Exception.Message.StartsWith(nameof(LocalizationKeys.WrongPrivatePostingKey)));
        }
        public async Task <OperationResult <VoidResponse> > ValidatePrivateKey(ValidatePrivateKeyModel model, CancellationToken ct)
        {
            var results = Validate(model);

            if (results != null)
            {
                return(new OperationResult <VoidResponse>(results));
            }

            var result = await _ditchClient.ValidatePrivateKey(model, ct);

            return(result);
        }
        private void LoginWithPostingKeyTest(StringBuilder sb, int num)
        {
            sb.Append($"{num}) LoginWithPostingKeyTest : ");
            StepFinished?.Invoke(sb.ToString());

            var request  = new ValidatePrivateKeyModel(_user.Login, _user.PostingKey, KeyRoleType.Posting);
            var response = _api.ValidatePrivateKey(request, CancellationToken.None).Result;

            if (!response.IsSuccess)
            {
                sb.AppendLine($"fail. Reason:{Environment.NewLine} {response.Exception.Message}");
                return;
            }
            sb.AppendLine("pass.");
        }
        public override async Task <OperationResult <VoidResponse> > ValidatePrivateKey(ValidatePrivateKeyModel model, CancellationToken ct)
        {
            var keys = ToKey(model.PrivateKey);

            if (keys == null)
            {
                switch (model.KeyRoleType)
                {
                case KeyRoleType.Active:
                    return(new OperationResult <VoidResponse>(new ValidationException(LocalizationKeys.WrongPrivateActimeKey)));

                case KeyRoleType.Posting:
                    return(new OperationResult <VoidResponse>(new ValidationException(LocalizationKeys.WrongPrivatePostingKey)));
                }
            }

            var isConnected = await TryReconnectChain(ct);

            if (!isConnected)
            {
                return(new OperationResult <VoidResponse>(new ValidationException(LocalizationKeys.EnableConnectToBlockchain)));
            }

            var result = new OperationResult <VoidResponse>();


            var args = new FindAccountsArgs
            {
                Accounts = new[] { model.Login }
            };
            var resp = await _operationManager.FindAccounts(args, CancellationToken.None);

            if (resp.IsError)
            {
                result.Exception = new RequestException(resp);
                return(result);
            }

            if (resp.Result.Accounts.Length != 1 || resp.Result.Accounts[0] == null)
            {
                return(new OperationResult <VoidResponse>(new ValidationException(LocalizationKeys.UnexpectedProfileData)));
            }

            Authority authority;

            switch (model.KeyRoleType)
            {
            case KeyRoleType.Active:
                authority = resp.Result.Accounts[0].Active;
                break;

            case KeyRoleType.Posting:
                authority = resp.Result.Accounts[0].Posting;
                break;

            default:
                throw new NotImplementedException();
            }

            var isSame = KeyHelper.ValidatePrivateKey(keys, authority.KeyAuths.Select(i => i.Key.Data).ToArray());

            if (isSame)
            {
                return(new OperationResult <VoidResponse>(new VoidResponse()));
            }

            switch (model.KeyRoleType)
            {
            case KeyRoleType.Active:
                return(new OperationResult <VoidResponse>(new ValidationException(LocalizationKeys.WrongPrivateActimeKey)));

            default:
                return(new OperationResult <VoidResponse>(new ValidationException(LocalizationKeys.WrongPrivatePostingKey)));
            }
        }
 public abstract Task <OperationResult <VoidResponse> > ValidatePrivateKey(ValidatePrivateKeyModel model, CancellationToken ct);