private static MessageStatus GetMessageStatus(IMessageConverter converter, DataSourceOperationException dataSourceOperationException)
 {
     if (dataSourceOperationException is ADInvalidCredentialException)
     {
         ADTransientException unavailableException = new ADTransientException(dataSourceOperationException.LocalizedString, dataSourceOperationException);
         return(StorageExceptionHandler.GetMessageStatus(converter, unavailableException));
     }
     StorageExceptionHandler.LogException(converter, dataSourceOperationException);
     return(new MessageStatus(MessageAction.NDR, StorageExceptionHandler.GetExceptionSmtpResponse(converter, dataSourceOperationException, true), dataSourceOperationException));
 }
        // Token: 0x06005174 RID: 20852 RVA: 0x0012D668 File Offset: 0x0012B868
        private static AlternateServiceAccountCredential LoadFromRegistry(RegistryKey rootKey, string valueName, bool decryptPasswords)
        {
            string text = rootKey.GetValue(valueName) as string;

            if (text == null)
            {
                return(null);
            }
            DateTime dateTime;
            Match    match;

            if (!DateTime.TryParseExact(valueName, "yyyy-MM-ddTHH:mm:ss.fff", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out dateTime) || !(match = AlternateServiceAccountCredential.regexRegValue.Match(text)).Success)
            {
                return(new AlternateServiceAccountCredential(valueName, new DataValidationException(new ObjectValidationError(DirectoryStrings.FailedToParseAlternateServiceAccountCredential, null, AlternateServiceAccountCredential.GetRegistryValueDisplayPath(rootKey.Name, valueName)))));
            }
            byte[]    array;
            Exception ex;

            try
            {
                array = Convert.FromBase64String(match.Groups["password"].Value);
                ex    = null;
            }
            catch (FormatException ex2)
            {
                ex    = ex2;
                array = null;
            }
            SecureString secureString = null;

            if (decryptPasswords && array != null)
            {
                try
                {
                    secureString = CapiNativeMethods.DPAPIDecryptDataToSecureString(array, (CapiNativeMethods.DPAPIFlags) 0U);
                    secureString.MakeReadOnly();
                }
                catch (CryptographicException innerException)
                {
                    ex = new DataSourceOperationException(DirectoryStrings.FailedToReadAlternateServiceAccountConfigFromRegistry(AlternateServiceAccountCredential.GetRegistryValueDisplayPath(rootKey.Name, valueName)), innerException);
                }
            }
            return(new AlternateServiceAccountCredential(valueName, ex, false, dateTime.ToUniversalTime(), match.Groups["domain"].Value, match.Groups["userName"].Value, secureString));
        }