Remove IEncryptionManager

This commit is contained in:
Claus Vium 2019-02-16 12:39:53 +01:00
parent 6c6e9ca9f2
commit a23f04623e
4 changed files with 11 additions and 88 deletions

View file

@ -739,10 +739,8 @@ namespace Emby.Server.Implementations
TVSeriesManager = new TVSeriesManager(UserManager, UserDataManager, LibraryManager, ServerConfigurationManager);
serviceCollection.AddSingleton(TVSeriesManager);
var encryptionManager = new EncryptionManager();
serviceCollection.AddSingleton<IEncryptionManager>(encryptionManager);
DeviceManager = new DeviceManager(AuthenticationRepository, JsonSerializer, LibraryManager, LocalizationManager, UserManager, FileSystemManager, LibraryMonitor, ServerConfigurationManager);
serviceCollection.AddSingleton(DeviceManager);
MediaSourceManager = new MediaSourceManager(ItemRepository, ApplicationPaths, LocalizationManager, UserManager, LibraryManager, LoggerFactory, JsonSerializer, FileSystemManager, UserDataManager, () => MediaEncoder);

View file

@ -1,57 +0,0 @@
using System;
using System.Text;
using MediaBrowser.Controller.Security;
namespace Emby.Server.Implementations.Security
{
public class EncryptionManager : IEncryptionManager
{
/// <summary>
/// Encrypts the string.
/// </summary>
/// <param name="value">The value.</param>
/// <returns>System.String.</returns>
/// <exception cref="ArgumentNullException">value</exception>
public string EncryptString(string value)
{
if (value == null)
{
throw new ArgumentNullException(nameof(value));
}
return EncryptStringUniversal(value);
}
/// <summary>
/// Decrypts the string.
/// </summary>
/// <param name="value">The value.</param>
/// <returns>System.String.</returns>
/// <exception cref="ArgumentNullException">value</exception>
public string DecryptString(string value)
{
if (value == null)
{
throw new ArgumentNullException(nameof(value));
}
return DecryptStringUniversal(value);
}
private static string EncryptStringUniversal(string value)
{
// Yes, this isn't good, but ProtectedData in mono is throwing exceptions, so use this for now
var bytes = Encoding.UTF8.GetBytes(value);
return Convert.ToBase64String(bytes);
}
private static string DecryptStringUniversal(string value)
{
// Yes, this isn't good, but ProtectedData in mono is throwing exceptions, so use this for now
var bytes = Convert.FromBase64String(value);
return Encoding.UTF8.GetString(bytes, 0, bytes.Length);
}
}
}

View file

@ -1,19 +0,0 @@
namespace MediaBrowser.Controller.Security
{
public interface IEncryptionManager
{
/// <summary>
/// Encrypts the string.
/// </summary>
/// <param name="value">The value.</param>
/// <returns>System.String.</returns>
string EncryptString(string value);
/// <summary>
/// Decrypts the string.
/// </summary>
/// <param name="value">The value.</param>
/// <returns>System.String.</returns>
string DecryptString(string value);
}
}

View file

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Common.Configuration;
@ -29,17 +30,15 @@ namespace MediaBrowser.MediaEncoding.Subtitles
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
private readonly IServerConfigurationManager _config;
private readonly IEncryptionManager _encryption;
private readonly IJsonSerializer _json;
private readonly IFileSystem _fileSystem;
public OpenSubtitleDownloader(ILoggerFactory loggerFactory, IHttpClient httpClient, IServerConfigurationManager config, IEncryptionManager encryption, IJsonSerializer json, IFileSystem fileSystem)
public OpenSubtitleDownloader(ILoggerFactory loggerFactory, IHttpClient httpClient, IServerConfigurationManager config, IJsonSerializer json, IFileSystem fileSystem)
{
_logger = loggerFactory.CreateLogger(GetType().Name);
_httpClient = httpClient;
_config = config;
_encryption = encryption;
_json = json;
_fileSystem = fileSystem;
@ -63,16 +62,17 @@ namespace MediaBrowser.MediaEncoding.Subtitles
!string.IsNullOrWhiteSpace(options.OpenSubtitlesPasswordHash) &&
!options.OpenSubtitlesPasswordHash.StartsWith(PasswordHashPrefix, StringComparison.OrdinalIgnoreCase))
{
options.OpenSubtitlesPasswordHash = EncryptPassword(options.OpenSubtitlesPasswordHash);
options.OpenSubtitlesPasswordHash = ToBase64EncodedString(options.OpenSubtitlesPasswordHash);
}
}
private string EncryptPassword(string password)
private static string ToBase64EncodedString(string password)
{
return PasswordHashPrefix + _encryption.EncryptString(password);
var bytes = Encoding.UTF8.GetBytes(password);
return PasswordHashPrefix + bytes;
}
private string DecryptPassword(string password)
private static string DecodeBase64EncodedString(string password)
{
if (password == null ||
!password.StartsWith(PasswordHashPrefix, StringComparison.OrdinalIgnoreCase))
@ -80,7 +80,8 @@ namespace MediaBrowser.MediaEncoding.Subtitles
return string.Empty;
}
return _encryption.DecryptString(password.Substring(2));
var bytes = Convert.FromBase64String(password.Substring(2));
return Encoding.UTF8.GetString(bytes, 0, bytes.Length);
}
public string Name => "Open Subtitles";
@ -186,7 +187,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles
var options = GetOptions();
var user = options.OpenSubtitlesUsername ?? string.Empty;
var password = DecryptPassword(options.OpenSubtitlesPasswordHash);
var password = DecodeBase64EncodedString(options.OpenSubtitlesPasswordHash);
var loginResponse = await OpenSubtitles.LogInAsync(user, password, "en", cancellationToken).ConfigureAwait(false);