From c68927c17a19dc0eeb9ab0fdc01afb36c12bd5c6 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 9 Apr 2019 09:08:15 -0400 Subject: [PATCH] crypto service interface --- src/Core/Abstractions/ICryptoService.cs | 52 +++++++++++++++++++++++++ src/Core/Services/CryptoService.cs | 2 +- 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 src/Core/Abstractions/ICryptoService.cs diff --git a/src/Core/Abstractions/ICryptoService.cs b/src/Core/Abstractions/ICryptoService.cs new file mode 100644 index 000000000..6df2cc9f2 --- /dev/null +++ b/src/Core/Abstractions/ICryptoService.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Bit.Core.Enums; +using Bit.Core.Models.Domain; +using Bit.Core.Models.Response; + +namespace Bit.Core.Abstractions +{ + public interface ICryptoService + { + Task ClearEncKeyAsync(bool memoryOnly = false); + Task ClearKeyAsync(); + Task ClearKeyHashAsync(); + Task ClearKeyPairAsync(bool memoryOnly = false); + Task ClearKeysAsync(); + Task ClearOrgKeysAsync(bool memoryOnly = false); + Task ClearPinProtectedKeyAsync(); + Task DecryptFromBytesAsync(byte[] encBytes, SymmetricCryptoKey key); + Task DecryptToBytesAsync(CipherString cipherString, SymmetricCryptoKey key = null); + Task DecryptToUtf8Async(CipherString cipherString, SymmetricCryptoKey key = null); + Task EncryptAsync(byte[] plainValue, SymmetricCryptoKey key = null); + Task EncryptAsync(string plainValue, SymmetricCryptoKey key = null); + Task EncryptToBytesAsync(byte[] plainValue, SymmetricCryptoKey key = null); + Task GetEncKeyAsync(); + Task> GetFingerprintAsync(string userId, byte[] publicKey = null); + Task GetKeyAsync(); + Task GetKeyHashAsync(); + Task GetOrgKeyAsync(string orgId); + Task> GetOrgKeysAsync(); + Task GetPrivateKeyAsync(); + Task GetPublicKeyAsync(); + Task HasEncKeyAsync(); + Task HashPasswordAsync(string password, SymmetricCryptoKey key); + Task HasKeyAsync(); + Task> MakeEncKeyAsync(SymmetricCryptoKey key); + Task MakeKeyAsync(string password, string salt, KdfType? kdf, int? kdfIterations); + Task MakeKeyFromPinAsync(string pin, string salt, KdfType kdf, int kdfIterations); + Task> MakeKeyPairAsync(SymmetricCryptoKey key = null); + Task MakePinKeyAysnc(string pin, string salt, KdfType kdf, int kdfIterations); + Task> MakeShareKeyAsync(); + Task RandomNumberAsync(int min, int max); + Task> RemakeEncKeyAsync(SymmetricCryptoKey key); + Task RsaEncryptAsync(byte[] data, byte[] publicKey = null); + Task SetEncKeyAsync(string encKey); + Task SetEncPrivateKeyAsync(string encPrivateKey); + Task SetKeyAsync(SymmetricCryptoKey key); + Task SetKeyHashAsync(string keyHash); + Task SetOrgKeysAsync(IEnumerable orgs); + Task ToggleKeyAsync(); + } +} \ No newline at end of file diff --git a/src/Core/Services/CryptoService.cs b/src/Core/Services/CryptoService.cs index 9b8a8f2af..f4b7dc08b 100644 --- a/src/Core/Services/CryptoService.cs +++ b/src/Core/Services/CryptoService.cs @@ -10,7 +10,7 @@ using System.Threading.Tasks; namespace Bit.Core.Services { - public class CryptoService + public class CryptoService : ICryptoService { private readonly IStorageService _storageService; private readonly IStorageService _secureStorageService;