/// <summary>
        /// 从一个字节数组中反序列化对象。
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="bytes">字节数组。</param>
        /// <returns>反序列化后的对象。</returns>
        public override object Deserialize(byte[] bytes, Type type)
        {
            byte[] data;

            if (Token != null && Token.Data != null && Token.Data.Length > 0)
            {
                data = new byte[bytes.Length - Token.Data.Length];
                Array.Copy(bytes, Token.Data.Length, data, 0, data.Length);

                if (Token.Data.Where((t, i) => t != bytes[i]).Any())
                {
                    throw new SerializationException(SR.GetString(SRKind.SerializationTokenInvalid));
                }
            }
            else
            {
                data = bytes;
            }

            try
            {
                using var stream = new MemoryStream(_cryptoProvider.Decrypt(data));
                var bin = new BinaryFormatter
                {
                    Binder = new IgnoreSerializationBinder()
                };
                return(bin.Deserialize(stream));
            }
            catch (Exception ex)
            {
                throw new SerializationException(SR.GetString(SRKind.DeserializationError), ex);
            }
        }
        /// <summary>
        /// Tries to parse an encrypted operation response.
        /// </summary>
        /// <param name="data">The data.</param>
        /// <param name="cryptoProvider">The crypto provider.</param>
        /// <param name="operationResponse">The operation response.</param>
        /// <returns> true if the operation response was parsed successfully; otherwise false.</returns>
        public bool TryParseOperationResponseEncrypted(byte[] data, ICryptoProvider cryptoProvider, out OperationResponse operationResponse)
        {
            object obj2;

            if (cryptoProvider == null)
            {
                operationResponse = null;
                return(false);
            }
            byte[] buffer = cryptoProvider.Decrypt(data, 2, data.Length - 2);
            if (buffer == null)
            {
                operationResponse = null;
                return(false);
            }
            if (operationDataLogger.IsDebugEnabled)
            {
                operationDataLogger.DebugFormat("Decrypted data: data=({0} bytes) {1}", new object[] { buffer.Length, BitConverter.ToString(buffer) });
            }
            int pos = 0;

            if (GpBinaryByteReaderV17.TryReadOperationResponse(buffer, ref pos, out obj2))
            {
                operationResponse = (OperationResponse)obj2;
                return(true);
            }
            operationResponse = null;
            return(false);
        }
Пример #3
0
        public bool IsValidLogin(string alias, string password)
        {
            var user = FindUserByAlias(alias).OperationResult;

            var isValid = user != null &&
                          cryptoProvider.Decrypt(user.Password) == password;

            return(isValid);
        }
Пример #4
0
        /// <summary>
        /// Returns the plaintext of the key this protector protects,
        /// decrypting it if required.
        /// </summary>
        public byte[] GetKey()
        {
            if (_decryptedKey != null)
            {
                return(_decryptedKey);
            }

            _decryptedKey = Provider.Decrypt(ProtectorKey);
            return(_decryptedKey);
        }
Пример #5
0
 public bool TryParseEventDataEncrypted(byte[] data, ICryptoProvider cryptoProvider, out EventData eventData)
 {
     if (cryptoProvider == null)
     {
         eventData = null;
         return(false);
     }
     byte[] buffer = cryptoProvider.Decrypt(data, this.headerSize, data.Length - this.headerSize);
     using (MemoryStream stream = new MemoryStream(buffer))
     {
         if (operationDataLogger.IsDebugEnabled)
         {
             operationDataLogger.DebugFormat("Decrypted data: data=({0} bytes) {1}", new object[] { buffer.Length, BitConverter.ToString(buffer) });
         }
         return(TryParseEventData(stream, out eventData));
     }
 }
        public ActionResult Edit(Guid id, AwsProfileViewModel profileViewModel)
        {
            try
            {
                AwsProfile profile = _profileRepository.Find(id);

                if (profileViewModel.SecretAccessKey == _encryptedMessagePlaceholder)
                {
                    profileViewModel.SecretAccessKey = _cryptoProvider.Decrypt(profile.EncryptedKey, profile.EncryptedSecretAccessKey);
                }

                if (ValidateViewModelAgainstExternalSources(profileViewModel, newProfile: false))
                {
                    profile.Name                    = profileViewModel.Name;
                    profile.Account                 = profileViewModel.Account;
                    profile.AccessKeyId             = profileViewModel.AccessKeyId;
                    profile.DefaultVpcId            = profileViewModel.DefaultVpcId;
                    profile.DefaultSubnetId         = profileViewModel.DefaultSubnetId;
                    profile.HostedZone              = profileViewModel.HostedZone;
                    profile.Groups                  = profileViewModel.Groups.ToList();
                    profile.DetailedBillingS3Bucket = profileViewModel.DetailedBillingS3Bucket;

                    if (profileViewModel.SecretAccessKey != _encryptedMessagePlaceholder)
                    {
                        string dataKey;
                        string encryptedAccessKey = _cryptoProvider.Encrypt(out dataKey, profileViewModel.SecretAccessKey);
                        profile.EncryptedSecretAccessKey = encryptedAccessKey;
                        profile.EncryptedKey             = dataKey;
                    }

                    _profileRepository.Update(profile);

                    _backgroundJobClient.Enqueue <CreateIpRange>(x => x.Execute(profileViewModel.Id, profileViewModel.DefaultSubnetId));

                    return(RedirectToAction("Index"));
                }
            }
            catch
            {
                // err, todo?
                return(View(profileViewModel));
            }

            return(View(profileViewModel));
        }
Пример #7
0
        private string DecryptBase64StringIfPossible(string base64String)
        {
            EnvelopedCms envelopedCms;

            if (!_cryptoProvider.TryParseEnvelopedCms(base64String, out envelopedCms))
            {
                // base64 string is not a valid envelopedCms.
                // No secret to decrypt.
                return(base64String);
            }

            try
            {
                return(_cryptoProvider.Decrypt(envelopedCms));
            }
            catch (CryptographicException ex)
            {
                Trace.TraceError($"Failed to decrypt secret with exception {ex}");
                throw;
            }
        }
Пример #8
0
        /// <summary>
        /// Creates an instance of SettingsProvider with a ICryptoProvider instance
        /// </summary>
        /// <param name="cryptoProvider">CryptoProvider used for encryption and decryption</param>
        public SettingsProvider(ICryptoProvider cryptoProvider)
        {
            _cryptoProvider = cryptoProvider;

            var key = _cryptoProvider.Hash("_data");

            if (PlayerPrefs.HasKey(key))
            {
                try
                {
                    var decrypted = _cryptoProvider.Decrypt(PlayerPrefs.GetString(key));
                    _data = JsonConvert.DeserializeObject <Dictionary <string, object> >(decrypted, _serializerSettings);
                }
                catch (Exception ex)
                {
                    Debug.LogErrorFormat("Corrupt settings. Deleting. Reason: {0}", ex);

                    PlayerPrefs.DeleteKey(key);
                    _data = new Dictionary <string, object>();
                }
            }
        }
        public void PerformRecovery(User user)
        {
            var template = new RecoveryClueTemplate()
            {
                Model = new RecoveryClueModel
                {
                    ApplicationName = systemContext.AppFullName,
                    CustomerName    = user.FullName,
                    RecoveryClue    = cryptoProvider.Decrypt(user.PasswordRecoveryClue)
                }
            };

            //Starting eMail submission
            string senderAddress  = configProvider.GetSectionKeyValue("PasswordRecovery", "EmailSenderAddress");
            string senderFullName = configProvider.GetSectionKeyValue("PasswordRecovery", "EmailSenderFullName");

            eMailSender.From       = new MailAddress(senderAddress, senderFullName);
            eMailSender.To         = new MailAddress(user.Email, user.FullName);
            eMailSender.IsBodyHtml = true;
            eMailSender.Subject    = template.Subject;
            eMailSender.Body       = template.TransformText();

            eMailSender.Send();
        }
Пример #10
0
        /// <summary>
        ///  Tries to parse an event.
        /// </summary>
        /// <param name="data"> The data.</param>
        /// <param name="cryptoProvider"> The crypto Provider.</param>
        /// <param name="eventData">The event data.</param>
        /// <returns>true if successful.</returns>
        public bool TryParseEventDataEncrypted(byte[] data, ICryptoProvider cryptoProvider, out EventData eventData)
        {
            object obj2;

            if (cryptoProvider == null)
            {
                eventData = null;
                return(false);
            }
            byte[] buffer = cryptoProvider.Decrypt(data, 2, data.Length - 2);
            if (operationDataLogger.IsDebugEnabled)
            {
                operationDataLogger.DebugFormat("Decrypted data: data=({0} bytes) {1}", new object[] { buffer.Length, BitConverter.ToString(buffer) });
            }
            int offset = 0;

            if (GpBinaryByteReaderV17.ReadEventData(buffer, ref offset, out obj2))
            {
                eventData = (EventData)obj2;
                return(true);
            }
            eventData = null;
            return(false);
        }
Пример #11
0
        public void Decrypt(IDataSource dataSource, IDataDestination dataDestination)
        {
            var decryptedData = _cryptoProvider.Decrypt(dataSource.GetData());

            dataDestination.PutData(decryptedData);
        }
        /// <summary>
        /// Creates a <see cref="NameValueSettings"/> from an xml element of a config file.
        /// <para>
        /// NOTE: The settings collection is case sensitive.
        /// </para>
        /// </summary>
        /// <param name="section">The XElement that contains the configuration information from the configuration file. Provides direct access to the XML contents of the configuration section</param>
        /// <param name="cryptoProvider">An <see cref="ICryptoProvider"/> instance that can be used to decrypt settings.</param>
        /// <param name="decryptAll">If <see langword="true" /> all settings will be decrypted. This is ignored since the <see cref="NameValueSettings"/> handles this by itself.</param>
        /// <returns>A <see cref="NameValueSettings"/> instance containing the configuration data, or empty if section is null or in fact empty.</returns>
        public object ReadSection(XElement section, ICryptoProvider cryptoProvider, bool decryptAll)
        {
            Ensure.ArgumentNotNull(section, "section");

            _errors = null;

            //Create a case sensitive collection
            var data = new NameValueSettings();

            if (section != null)
            {
                var settings = from node in section.Elements(ConfigElement.KeyValueSettingNode)
                               let key = node.Attribute(ConfigElement.SettingKeyAttribute)
                               let val = node.Attribute(ConfigElement.SettingValueAttribute)
                               where key != null && val != null
                               select new
                               {
                                   Key = key.Value,
                                   Value = val.Value,
                                   Comment = node.PreviousNode as XComment
                               };

                foreach (var node in settings)
                {
                    string val = node.Value;
                    bool encrypted = false;

                    if (cryptoProvider != null && cryptoProvider.IsEncrypted(val))
                    {
                        try
                        {
                            val = cryptoProvider.Decrypt(val);
                            encrypted = true;
                        }
                        catch
                        {
                            if (_errors == null)
                            {
                                _errors = new List<ConfigError>();
                            }

                            _errors.Add(
                                new ConfigError(
                                    ConfigErrorCode.InvalidConfigValue,
                                    string.Format("Reading value of setting {0} failed, value appears to be encrypted, but decryption failed.", node.Key)));

                            continue;
                        }
                    }

                    data.SetSetting(node.Key, val, encrypted);

                    if (node.Comment != null)
                    {
                        data.SetDescription(node.Key, node.Comment.Value);
                    }
                }
            }

            return data;
        }
Пример #13
0
 protected override CodedData DecodeDataFromBytes(byte[] data)
 {
     return(new CodedData(cryptor.Decrypt(data)));
 }
Пример #14
0
        public void Send()
        {
            var mailMessage = new MailMessage(From, To)
            {
                Subject         = Subject,
                SubjectEncoding = Encoding.UTF8,
                Body            = Body,
                BodyEncoding    = Encoding.UTF8,
                IsBodyHtml      = IsBodyHtml
            };

            ReplyToList.ToList().ForEach(t =>
            {
                mailMessage.ReplyToList.Add(t);
            });

            var smtpSection = (SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp");

            using (var client = new SmtpClient())
            {
                client.UseDefaultCredentials = true;
                client.Credentials           = new NetworkCredential(smtpSection.Network.UserName, cryptoProvider.Decrypt(smtpSection.Network.Password));

                client.Send(mailMessage);
            }
        }
Пример #15
0
 public void DecryptMessage(object obj)
 {
     EncryptoText = ConvertToString(_provider.Decrypt(ConvertToStringArray(DecryptoText)));
     DecryptoText = null;
 }
Пример #16
0
        public AWSCredentials GetCredentials(AwsProfile profile)
        {
            var secretAccessKey = _cryptoProvider.Decrypt(profile.EncryptedKey, profile.EncryptedSecretAccessKey);

            return(new BasicAWSCredentials(profile.AccessKeyId, secretAccessKey));
        }