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); } }