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 @@