Beispiel #1
0
        internal static CoreKey NewKey(this PrimeCoreKey prime, CoreKeyConfig config)
        {
            var maxLength  = config.Length;
            var keyBuilder = new StringBuilder();
            var format     = config.CoreKeyFormatterConfig;

            for (int i = 0; i <= maxLength; i++)
            {
                GeneratedKeys(out string firstSmallChar, out string secondSmallChar, out int num, out string bigChar);

                var combined = $"{firstSmallChar}{secondSmallChar}{num}{bigChar}";
                if (config.UseSalt)
                {
                    keyBuilder.Append(KeySalt.RNGCrypto(combined));
                }
                keyBuilder.Append(combined);

                if (keyBuilder.Length > config.Length)
                {
                    keyBuilder.Remove(maxLength, keyBuilder.Length - maxLength);
                    break;
                }
            }
            if (PrimeStore.IgnoredKeys.Any(x => x.Result == keyBuilder.ToString()))
            {
                NewKey(prime, config);
            }

            if (format.Format == PrimeFormatter.Ignore || format.Format == null)
            {
                return new CoreKey {
                           Result = keyBuilder.ToString()
                }
            }
            ;

            if (format.IsStrictedLength)
            {
                return new CoreKey {
                           Result = KeyFormatter.UseUnderscore(keyBuilder.ToString(), config)
                }
            }
            ;

            return(new CoreKey {
                Result = KeyFormatter.UseUnderscore(keyBuilder.ToString())
            });
        }
Beispiel #2
0
 public bool Compare(EncryptionData other) => other.Password == Password &&
 other.KeySalt.CompareArrayItems(KeySalt.ToArray()) &&
 other.IvSalt.CompareArrayItems(IvSalt.ToArray());