From ff98f1a5c1bc68f6715f171ca7cd4fb08b7d92d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Chy=C5=BCy?= Date: Sun, 7 Jun 2020 14:49:02 +0200 Subject: [PATCH] authorizationService --- .../SafeMessageStorage/App.xaml.cs | 3 +- .../Encryption/Hash/HashProviderBase.cs | 48 +++++++++++++++++++ .../Encryption/Hash/IHashProvider.cs | 17 +++++++ .../Hash/Providers/Sha256HashProvider.cs | 14 ++++++ .../Hash/Providers/Sha512HashProvider.cs | 14 ++++++ .../Pages/AuthorizationPage.xaml | 2 +- .../SafeMessageStorage.csproj | 1 + .../AuthorizationService.cs | 47 ++++++++++++++++++ .../ViewModels/AuthorizationPageViewModel.cs | 12 ++--- 9 files changed, 150 insertions(+), 8 deletions(-) create mode 100644 src/SafeMessageStorage/SafeMessageStorage/SafeMessageStorage/Encryption/Hash/HashProviderBase.cs create mode 100644 src/SafeMessageStorage/SafeMessageStorage/SafeMessageStorage/Encryption/Hash/IHashProvider.cs create mode 100644 src/SafeMessageStorage/SafeMessageStorage/SafeMessageStorage/Encryption/Hash/Providers/Sha256HashProvider.cs create mode 100644 src/SafeMessageStorage/SafeMessageStorage/SafeMessageStorage/Encryption/Hash/Providers/Sha512HashProvider.cs create mode 100644 src/SafeMessageStorage/SafeMessageStorage/SafeMessageStorage/Services/AuthorizationService/AuthorizationService.cs diff --git a/src/SafeMessageStorage/SafeMessageStorage/SafeMessageStorage/App.xaml.cs b/src/SafeMessageStorage/SafeMessageStorage/SafeMessageStorage/App.xaml.cs index c640ba3..08c9be0 100644 --- a/src/SafeMessageStorage/SafeMessageStorage/SafeMessageStorage/App.xaml.cs +++ b/src/SafeMessageStorage/SafeMessageStorage/SafeMessageStorage/App.xaml.cs @@ -1,4 +1,5 @@ using System; +using SafeMessageStorage.Encryption.Hash.Providers; using SafeMessageStorage.Pages; using SafeMessageStorage.Services.AuthorizationService; using Xamarin.Forms; @@ -11,7 +12,7 @@ namespace SafeMessageStorage public App() { InitializeComponent(); - MainPage = new NavigationPage(new AuthorizationPage(new AuthorizationServiceMOCK())); + MainPage = new NavigationPage(new AuthorizationPage(new AuthorizationService(new Sha256HashProvider()))); } protected override void OnStart() diff --git a/src/SafeMessageStorage/SafeMessageStorage/SafeMessageStorage/Encryption/Hash/HashProviderBase.cs b/src/SafeMessageStorage/SafeMessageStorage/SafeMessageStorage/Encryption/Hash/HashProviderBase.cs new file mode 100644 index 0000000..2836dd8 --- /dev/null +++ b/src/SafeMessageStorage/SafeMessageStorage/SafeMessageStorage/Encryption/Hash/HashProviderBase.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Cryptography; +using System.Text; + +namespace SafeMessageStorage.Encryption.Hash +{ + public abstract class HashProviderBase : IHashProvider + { + private readonly HashAlgorithm _hashAlgorithm; + + protected HashProviderBase(HashAlgorithm hashAlgorithm) + { + _hashAlgorithm = hashAlgorithm; + } + + public virtual string GetHashString(string input) + { + return GetHashString(Encoding.UTF8.GetBytes(input)); + } + + public virtual string GetHashString(byte[] bytes) + { + using (_hashAlgorithm) + { + return GetHashBytes(bytes) + .Select(b => + b.ToString("x2")) + .Aggregate((a, b) => + a + b); + } + } + + public virtual byte[] GetHashBytes(string input) + { + return GetHashBytes(Encoding.UTF8.GetBytes(input)); + } + + public virtual byte[] GetHashBytes(byte[] bytes) + { + using (_hashAlgorithm) + { + return _hashAlgorithm.ComputeHash(bytes); + } + } + } +} \ No newline at end of file diff --git a/src/SafeMessageStorage/SafeMessageStorage/SafeMessageStorage/Encryption/Hash/IHashProvider.cs b/src/SafeMessageStorage/SafeMessageStorage/SafeMessageStorage/Encryption/Hash/IHashProvider.cs new file mode 100644 index 0000000..0dffb71 --- /dev/null +++ b/src/SafeMessageStorage/SafeMessageStorage/SafeMessageStorage/Encryption/Hash/IHashProvider.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace SafeMessageStorage.Encryption.Hash +{ + public interface IHashProvider + { + string GetHashString(string input); + + string GetHashString(byte[] bytes); + + byte[] GetHashBytes(string input); + + byte[] GetHashBytes(byte[] bytes); + } +} diff --git a/src/SafeMessageStorage/SafeMessageStorage/SafeMessageStorage/Encryption/Hash/Providers/Sha256HashProvider.cs b/src/SafeMessageStorage/SafeMessageStorage/SafeMessageStorage/Encryption/Hash/Providers/Sha256HashProvider.cs new file mode 100644 index 0000000..2b12609 --- /dev/null +++ b/src/SafeMessageStorage/SafeMessageStorage/SafeMessageStorage/Encryption/Hash/Providers/Sha256HashProvider.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Security.Cryptography; +using System.Text; + +namespace SafeMessageStorage.Encryption.Hash.Providers +{ + public class Sha256HashProvider : HashProviderBase + { + public Sha256HashProvider() : base(new SHA256CryptoServiceProvider()) + { + } + } +} diff --git a/src/SafeMessageStorage/SafeMessageStorage/SafeMessageStorage/Encryption/Hash/Providers/Sha512HashProvider.cs b/src/SafeMessageStorage/SafeMessageStorage/SafeMessageStorage/Encryption/Hash/Providers/Sha512HashProvider.cs new file mode 100644 index 0000000..5de6c00 --- /dev/null +++ b/src/SafeMessageStorage/SafeMessageStorage/SafeMessageStorage/Encryption/Hash/Providers/Sha512HashProvider.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Security.Cryptography; +using System.Text; + +namespace SafeMessageStorage.Encryption.Hash.Providers +{ + public class Sha512HashProvider : HashProviderBase + { + public Sha512HashProvider() : base(new SHA512CryptoServiceProvider()) + { + } + } +} diff --git a/src/SafeMessageStorage/SafeMessageStorage/SafeMessageStorage/Pages/AuthorizationPage.xaml b/src/SafeMessageStorage/SafeMessageStorage/SafeMessageStorage/Pages/AuthorizationPage.xaml index edeaccd..6839fc5 100644 --- a/src/SafeMessageStorage/SafeMessageStorage/SafeMessageStorage/Pages/AuthorizationPage.xaml +++ b/src/SafeMessageStorage/SafeMessageStorage/SafeMessageStorage/Pages/AuthorizationPage.xaml @@ -10,7 +10,7 @@