private void SignaturePasswordExecute(object obj)
        {
            var certFile = CurrentProfile.PdfSettings.Signature.CertificateFile;

            if (!_file.Exists(certFile))
            {
                ShowCertFileMessage();
                return;
            }

            var signaturePasswordInteraction = new SignaturePasswordInteraction(PasswordMiddleButton.Remove, certFile);

            signaturePasswordInteraction.Password = CurrentProfile.PdfSettings.Signature.SignaturePassword;

            _interactionRequest.Raise(signaturePasswordInteraction, interaction =>
            {
                if (interaction.Result == PasswordResult.StorePassword)
                {
                    CurrentProfile.PdfSettings.Signature.SignaturePassword = interaction.Password;
                }
                else if (interaction.Result == PasswordResult.RemovePassword)
                {
                    CurrentProfile.PdfSettings.Signature.SignaturePassword = "";
                }
            });
        }
예제 #2
0
        private void ShowPasswordEntryInteraction(object obj)
        {
            var interaction =
                new SignaturePasswordInteraction(PasswordMiddleButton.None, CertificateFile)
            {
                Password = Password
            };

            _interactionRequest.Raise(interaction, SecurityPasswordsCallback);
        }
예제 #3
0
        public void SettingPassword_SkipCommand_CallsCloseViewAction()
        {
            var model       = BuildViewModel();
            var interaction = new SignaturePasswordInteraction(PasswordMiddleButton.Skip, "");

            model.SetInteraction(interaction);
            model.FinishInteraction = () => _eventWasRaised = true;

            model.SkipCommand.Execute(null);

            Assert.IsTrue(_eventWasRaised);
        }
예제 #4
0
        private void SecurityPasswordsCallback(SignaturePasswordInteraction interaction)
        {
            switch (interaction.Result)
            {
            case PasswordResult.StorePassword:
                Password = interaction.Password;
                break;

            case PasswordResult.RemovePassword:
                Password = "";
                break;
            }
        }
예제 #5
0
        public void SetInteraction_RaisesPropertyChanged()
        {
            var propertyChangedCalls = new List <string>();

            var viewModel   = new SignaturePasswordViewModel(null, new SignaturePasswordWindowTranslation());
            var interaction = new SignaturePasswordInteraction(PasswordMiddleButton.Skip, "");

            viewModel.PropertyChanged += (sender, args) => propertyChangedCalls.Add(args.PropertyName);

            viewModel.SetInteraction(interaction);

            var expectedProperties = new[] { nameof(viewModel.Interaction), nameof(viewModel.Password), nameof(viewModel.CanRemovePassword), nameof(viewModel.CanSkip) };

            CollectionAssert.AreEquivalent(expectedProperties, propertyChangedCalls);
        }
예제 #6
0
        private SignaturePasswordViewModel BuildViewModel(string expectedPassword = null)
        {
            var signaturePasswordCheck = Substitute.For <ISignaturePasswordCheck>();

            if (expectedPassword != null)
            {
                signaturePasswordCheck.IsValidPassword(Arg.Any <string>(), expectedPassword).Returns(true);
            }

            var viewModel   = new SignaturePasswordViewModel(signaturePasswordCheck, new SignaturePasswordWindowTranslation());
            var interaction = new SignaturePasswordInteraction(PasswordMiddleButton.Skip, "");

            viewModel.SetInteraction(interaction);

            return(viewModel);
        }
        private QueryResult <string> QuerySignaturePassword(string certificateFile)
        {
            var pwInteraction = new SignaturePasswordInteraction(PasswordMiddleButton.Skip, certificateFile);

            _interactionInvoker.Invoke(pwInteraction);

            var result = new QueryResult <string>();

            switch (pwInteraction.Result)
            {
            case PasswordResult.Skip:
                _logger.Info("User skipped Signature Password. Signing disabled.");
                return(result);

            case PasswordResult.StorePassword:
                result.Data    = pwInteraction.Password;
                result.Success = true;
                return(result);
            }

            throw new AbortWorkflowException("Cancelled the signature password dialog.");
        }