示例#1
0
        public async ValueTask <byte[]?> EB(byte[]?value, EncryptionMode encryptionMode, string?secondaryPassword)
        {
            if (value == null)
            {
                return(value);
            }
            if (value.Length == 0)
            {
                return(value);
            }

            switch (encryptionMode)
            {
            case EncryptionMode.EmbeddedAes:
                var value_1   = ea.EB(value);
                var value_1_r = Concat(value_1, encryptionMode);
                return(value_1_r);

            case EncryptionMode.EmbeddedAesWithLocal:
                var value_2       = ea.EB(value);
                var value_2_local = await local.EB(value_2);

                var value_2_r = Concat(value_2_local, encryptionMode);
                return(value_2_r);

            case EncryptionMode.EmbeddedAesWithSecondaryPassword:
                if (string.IsNullOrWhiteSpace(secondaryPassword))
                {
                    throw new ArgumentNullException(nameof(secondaryPassword));
                }
                var value_3    = ea.EB(value);
                var value_3_sp = sp.EB(value_3, secondaryPassword);
                var value_3_r  = Concat(value_3_sp, encryptionMode);
                return(value_3_r);

            case EncryptionMode.EmbeddedAesWithSecondaryPasswordWithLocal:
                if (string.IsNullOrWhiteSpace(secondaryPassword))
                {
                    throw new ArgumentNullException(nameof(secondaryPassword));
                }
                var value_4       = ea.EB(value);
                var value_4_sp    = sp.EB(value_4, secondaryPassword);
                var value_4_local = await local.EB(value_4_sp);

                var value_4_r = Concat(value_4_local, encryptionMode);
                return(value_4_r);

            default:
                throw new ArgumentOutOfRangeException(nameof(encryptionMode), encryptionMode, null);
            }
        }