Beispiel #1
0
        IContentSource CrawlObject(IContentSource content)
        {
            var match = Regex.Match(content.ToString(), Pattern, RegexOptions.Singleline | RegexOptions.IgnoreCase);

            if (match == null || match.Groups.Count <= MatchGroup)
            {
                return(GetDefault(string.Format("Could not match pattern {0}", Pattern)));
            }

            var plainContent = new PlainContent();

            plainContent.ContentList.Add(match.Groups[MatchGroup].Value);
            return(plainContent);
        }
        protected IContentSource GetDefault(string errMessage = null)
        {
            if (DefaultValue != null)
            {
                var content = new PlainContent();
                content.ContentList.Add(DefaultValue);
                return(content);
            }

            if (ThrowIfNotFound)
            {
                throw new ArgumentException(errMessage);
            }

            return(null);
        }
Beispiel #3
0
        public static string Encrypt(string path, string password, bool replaceFilename = false,
            Action<double, string> statusCallback = null)
        {
            if (!File.Exists(path))
                throw new FileNotFoundException();

            SetStatusEncryption(statusCallback, Status.ReadFile);
            var bytes = File.ReadAllBytes(path);

            var iv = CryptoProvider.CreateIV();

            var plainContent = new PlainContent
            {
                Data = bytes,
                Filename = Path.GetFileName(path)
            };

            SetStatusEncryption(statusCallback, Status.EncryptData);
            var encryptedBytes = CryptoProvider.EncryptData(plainContent.GetBytes(), iv, password);

            SetStatusEncryption(statusCallback, Status.CreateHmac);
            var hmac = CryptoProvider.CreateHmac(iv, encryptedBytes, password);

            var newPath = CreateEnryptedFilename(path, replaceFilename);

            var container = new ContainerV1(iv, encryptedBytes, hmac);

            SetStatusEncryption(statusCallback, Status.WriteAllBytes);
            File.WriteAllBytes(newPath, container.GetBytes());

            SetStatusEncryption(statusCallback, Status.Done);
            return newPath;
        }
Beispiel #4
0
            public static PlainContent FromBytes(byte[] decryptedBytes)
            {
                var filenameLength = BitConverter.ToInt32(decryptedBytes.Take(4).ToArray(), 0);

                var result = new PlainContent
                {
                    Filename = Encoding.UTF8.GetString(decryptedBytes.Skip(4).Take(filenameLength).ToArray()),
                    Data = decryptedBytes.Skip(4 + filenameLength).ToArray()
                };
                return result;
            }