Esempio n. 1
0
        /// <summary>
        ///     запросить пин-код?
        /// </summary>
        /// <param name="model"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        public static bool RequestPin(ref WizardModel model, Guid token)
        {
            if (model.SigningOptions.WrongPIN || model.DecryptionOptions.WrongPIN)
            {
                return(true);
            }
            var client = new CryptxServiceClient();

            if (model.Settings.Id == Guid.Empty)
            {
                return(true);
            }
            ProfileResponse profileResponse = client.GetProfile(model.Settings.Id, Guid.Empty, token);

            //произошла ошибка в получении профиля
            //запросим пинкод
            if (profileResponse.Exception != null)
            {
                return(true);
            }

            if (model.Type == OperationType.Decrypt)
            {
                if (model.DecryptionOptions.DecryptCertificate ==
                    profileResponse.Settings._DecryptionSettings.DecryptCertificate &&
                    !string.IsNullOrEmpty(profileResponse.Settings._DecryptionSettings.KeysetPassword))
                {
                    model.Settings._DecryptionSettings.KeysetPassword =
                        profileResponse.Settings._DecryptionSettings.KeysetPassword;
                    return(false);
                }
            }
            if (model.Type == OperationType.Sign)
            {
                if (model.SigningOptions.SignerCertificate1 ==
                    profileResponse.Settings._SignatureSettings.SignerCertificate1 &&
                    !string.IsNullOrEmpty(profileResponse.Settings._SignatureSettings.KeysetPassword))
                {
                    model.Settings._SignatureSettings.KeysetPassword =
                        profileResponse.Settings._SignatureSettings.KeysetPassword;
                    return(false);
                }
            }


            return(true);
        }