public static TDSPreLoginTokenEncryptionType GetEncryptionResponse(TDSPreLoginTokenEncryptionType client, TDSPreLoginTokenEncryptionType server)
{
// Check each equivalence class
if (client == TDSPreLoginTokenEncryptionType.NotSupported)
{
// Check server response
if (server == TDSPreLoginTokenEncryptionType.Off || server == TDSPreLoginTokenEncryptionType.NotSupported)
{
return TDSPreLoginTokenEncryptionType.NotSupported;
}
else
{
return TDSPreLoginTokenEncryptionType.Required;
}
}
else if (client == TDSPreLoginTokenEncryptionType.Off)
{
// Check corresponding server
if (server == TDSPreLoginTokenEncryptionType.NotSupported)
{
return TDSPreLoginTokenEncryptionType.NotSupported;
}
else if (server == TDSPreLoginTokenEncryptionType.Off)
{
return TDSPreLoginTokenEncryptionType.Off;
}
else
{
return TDSPreLoginTokenEncryptionType.Required;
}
}
else if (client == TDSPreLoginTokenEncryptionType.On)
{
// Check server
if (server == TDSPreLoginTokenEncryptionType.Off || server == TDSPreLoginTokenEncryptionType.On || server == TDSPreLoginTokenEncryptionType.Required)
{
return TDSPreLoginTokenEncryptionType.On;
}
else
{
throw new ArgumentException("Server is configured to not support encryption", "server");
}
}
// This case is not documented so pick a default
return TDSPreLoginTokenEncryptionType.Off;
}