From 27aaa8023a230df231cb2aa502331469c5fdac4e Mon Sep 17 00:00:00 2001 From: Geoffroy Bonneville Date: Tue, 26 Sep 2017 14:32:15 +0200 Subject: [PATCH] Write-mode is finally working!!! Lib uses BouncyCastle crypto --- ModernKeePass.sln | 3 ++ ModernKeePass/ModernKeePass.csproj | 28 +--------- ModernKeePass/Pages/EntryDetailPage.xaml | 2 +- ModernKeePass/Pages/EntryDetailPage.xaml.cs | 22 +------- ModernKeePass/Pages/GroupDetailPage.xaml.cs | 10 ++-- ModernKeePass/ViewModels/EntryVm.cs | 51 +++++++++++++++---- ModernKeePass/packages.config | 2 +- .../ModernKeePassLib.Test.csproj | 48 ++++------------- ModernKeePassLib.Test/app.config | 4 ++ ModernKeePassLib.Test/packages.config | 9 ---- .../Cryptography/Cipher/StandardAesEngine.cs | 26 +++++++--- .../Cryptography/HashingStreamEx.cs | 31 +++++++---- ModernKeePassLib/Keys/KcpKeyFile.cs | 2 +- .../ModernKeePassLibPCL.nuget.targets | 9 ---- ModernKeePassLib/Serialization/FileLock.cs | 4 +- .../Serialization/FileTransactionEx.cs | 4 +- .../Serialization/IOConnection.cs | 16 +++--- .../Serialization/KdbxFile.Read.cs | 10 ++-- .../Serialization/KdbxFile.Write.cs | 10 ++-- ModernKeePassLib/app.config | 4 ++ ModernKeePassLib/project.json | 1 - ModernKeePassLib/project.lock.json | 15 ------ 22 files changed, 133 insertions(+), 178 deletions(-) delete mode 100644 ModernKeePassLib/ModernKeePassLibPCL.nuget.targets diff --git a/ModernKeePass.sln b/ModernKeePass.sln index afc08f4..c8ea3bb 100644 --- a/ModernKeePass.sln +++ b/ModernKeePass.sln @@ -8,6 +8,9 @@ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ModernKeePassLibPCL", "ModernKeePassLib\ModernKeePassLibPCL.csproj", "{2E710089-9559-4967-846C-E763DD1F3ACB}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ModernKeePassLib.Test", "ModernKeePassLib.Test\ModernKeePassLib.Test.csproj", "{067456C0-086C-46A8-B37F-1405717B7BFC}" + ProjectSection(ProjectDependencies) = postProject + {2E710089-9559-4967-846C-E763DD1F3ACB} = {2E710089-9559-4967-846C-E763DD1F3ACB} + EndProjectSection EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/ModernKeePass/ModernKeePass.csproj b/ModernKeePass/ModernKeePass.csproj index 55188a3..426196d 100644 --- a/ModernKeePass/ModernKeePass.csproj +++ b/ModernKeePass/ModernKeePass.csproj @@ -163,32 +163,8 @@ ..\packages\Portable.BouncyCastle.1.8.1.1\lib\netstandard1.0\crypto.dll True - - ..\packages\ModernKeePassLibPCL.2.28.1.31251\lib\netstandard1.2\ModernKeePassLibPCL.dll - True - - - ..\packages\PCLCrypto.2.0.147\lib\portable-win81+wpa81\PCLCrypto.dll - True - - - ..\packages\PCLStorage.1.0.2\lib\portable-win8+wpa81\PCLStorage.dll - True - - - ..\packages\PCLStorage.1.0.2\lib\portable-win8+wpa81\PCLStorage.Abstractions.dll - True - - - ..\packages\PInvoke.BCrypt.0.5.97\lib\portable-net45+win8+wpa81\PInvoke.BCrypt.dll - True - - - ..\packages\PInvoke.Kernel32.0.5.97\lib\portable-net45+win8+wpa81\PInvoke.Kernel32.dll - True - - - ..\packages\PInvoke.NCrypt.0.5.97\lib\portable-net45+win8+wpa81\PInvoke.NCrypt.dll + + ..\packages\ModernKeePassLibPCL.2.28.1.25559\lib\netstandard1.2\ModernKeePassLibPCL.dll True diff --git a/ModernKeePass/Pages/EntryDetailPage.xaml b/ModernKeePass/Pages/EntryDetailPage.xaml index b15ec6e..d07d042 100644 --- a/ModernKeePass/Pages/EntryDetailPage.xaml +++ b/ModernKeePass/Pages/EntryDetailPage.xaml @@ -44,7 +44,7 @@ - + diff --git a/ModernKeePass/Pages/EntryDetailPage.xaml.cs b/ModernKeePass/Pages/EntryDetailPage.xaml.cs index bb1979c..ccc6b8b 100644 --- a/ModernKeePass/Pages/EntryDetailPage.xaml.cs +++ b/ModernKeePass/Pages/EntryDetailPage.xaml.cs @@ -1,17 +1,7 @@ using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Runtime.InteropServices.WindowsRuntime; using ModernKeePass.Common; -using Windows.Foundation; -using Windows.Foundation.Collections; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Controls.Primitives; -using Windows.UI.Xaml.Data; -using Windows.UI.Xaml.Input; -using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Navigation; using ModernKeePass.ViewModels; @@ -31,10 +21,7 @@ namespace ModernKeePass.Pages /// NavigationHelper est utilisé sur chaque page pour faciliter la navigation et /// gestion de la durée de vie des processus /// - public NavigationHelper NavigationHelper - { - get { return this.navigationHelper; } - } + public NavigationHelper NavigationHelper => navigationHelper; public EntryDetailPage() { @@ -51,16 +38,11 @@ namespace ModernKeePass.Pages /// Source de l'événement ; en général /// /// Données d'événement qui fournissent le paramètre de navigation transmis à - /// lors de la requête initiale de cette page et + /// lors de la requête initiale de cette page et /// un dictionnaire d'état conservé par cette page durant une session /// antérieure. L'état n'aura pas la valeur Null lors de la première visite de la page. private void navigationHelper_LoadState(object sender, LoadStateEventArgs e) { - object navigationParameter; - if (e.PageState != null && e.PageState.ContainsKey("SelectedItem")) - { - navigationParameter = e.PageState["SelectedItem"]; - } } #region Inscription de NavigationHelper diff --git a/ModernKeePass/Pages/GroupDetailPage.xaml.cs b/ModernKeePass/Pages/GroupDetailPage.xaml.cs index fa2ad71..9570fbf 100644 --- a/ModernKeePass/Pages/GroupDetailPage.xaml.cs +++ b/ModernKeePass/Pages/GroupDetailPage.xaml.cs @@ -1,4 +1,5 @@ -using ModernKeePass.Common; +using System; +using ModernKeePass.Common; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Navigation; using ModernKeePass.ViewModels; @@ -19,10 +20,7 @@ namespace ModernKeePass.Pages /// NavigationHelper is used on each page to aid in navigation and /// process lifetime management /// - public NavigationHelper NavigationHelper - { - get { return navigationHelper; } - } + public NavigationHelper NavigationHelper => navigationHelper; public GroupDetailPage() @@ -40,7 +38,7 @@ namespace ModernKeePass.Pages /// The source of the event; typically /// /// Event data that provides both the navigation parameter passed to - /// when this page was initially requested and + /// when this page was initially requested and /// a dictionary of state preserved by this page during an earlier /// session. The state will be null the first time a page is visited. private void navigationHelper_LoadState(object sender, LoadStateEventArgs e) diff --git a/ModernKeePass/ViewModels/EntryVm.cs b/ModernKeePass/ViewModels/EntryVm.cs index 7c6761d..a7c6826 100644 --- a/ModernKeePass/ViewModels/EntryVm.cs +++ b/ModernKeePass/ViewModels/EntryVm.cs @@ -1,26 +1,55 @@ using System.ComponentModel; using ModernKeePassLibPCL; +using ModernKeePassLibPCL.Security; namespace ModernKeePass.ViewModels { public class EntryVm : INotifyPropertyChanged { - public string Title { get; set; } - public string UserName { get; private set; } - public string Password { get; private set; } - public string URL { get; private set; } - public string Notes { get; private set; } + public string Title + { + get { return GetEntryValue(PwDefs.TitleField); } + set { SetEntryValue(PwDefs.TitleField, value); } + } + public string UserName + { + get { return GetEntryValue(PwDefs.UserNameField); } + set { SetEntryValue(PwDefs.UserNameField, value); } + } + public string Password + { + get { return GetEntryValue(PwDefs.PasswordField); } + set { SetEntryValue(PwDefs.PasswordField, value); } + } + public string Url + { + get { return GetEntryValue(PwDefs.UrlField); } + set { SetEntryValue(PwDefs.UrlField, value); } + } + public string Notes + { + get { return GetEntryValue(PwDefs.NotesField); } + set { SetEntryValue(PwDefs.NotesField, value); } + } + + public event PropertyChangedEventHandler PropertyChanged; + + private readonly PwEntry _pwEntry; public EntryVm() { } public EntryVm(PwEntry entry) { - Title = entry.Strings.GetSafe(PwDefs.TitleField).ReadString(); - UserName = entry.Strings.GetSafe(PwDefs.UserNameField).ReadString(); - Password = entry.Strings.GetSafe(PwDefs.PasswordField).ReadString(); - URL = entry.Strings.GetSafe(PwDefs.UrlField).ReadString(); - Notes = entry.Strings.GetSafe(PwDefs.NotesField).ReadString(); + _pwEntry = entry; } - public event PropertyChangedEventHandler PropertyChanged; + private string GetEntryValue(string key) + { + return _pwEntry.Strings.GetSafe(key).ReadString(); + } + + private void SetEntryValue(string key, string newValue) + { + _pwEntry.Strings.Set(key, new ProtectedString(true, newValue)); + } } } diff --git a/ModernKeePass/packages.config b/ModernKeePass/packages.config index 8a95652..9289d4a 100644 --- a/ModernKeePass/packages.config +++ b/ModernKeePass/packages.config @@ -4,7 +4,7 @@ - + diff --git a/ModernKeePassLib.Test/ModernKeePassLib.Test.csproj b/ModernKeePassLib.Test/ModernKeePassLib.Test.csproj index 73a6a5b..ddc2348 100644 --- a/ModernKeePassLib.Test/ModernKeePassLib.Test.csproj +++ b/ModernKeePassLib.Test/ModernKeePassLib.Test.csproj @@ -33,42 +33,13 @@ 4 - - ..\packages\ModernKeePassLibPCL.2.28.1.32947\lib\portable46-net451+win81+wpa81\ModernKeePassLibPCL.dll - True + + ..\packages\Portable.BouncyCastle.1.8.1.1\lib\portable-net4+sl5+wp8+win8+wpa81\crypto.dll ..\packages\NUnit.3.8.1\lib\net45\nunit.framework.dll True - - ..\packages\PCLCrypto.2.0.147\lib\net45\PCLCrypto.dll - True - - - ..\packages\PCLStorage.1.0.2\lib\net45\PCLStorage.dll - True - - - ..\packages\PCLStorage.1.0.2\lib\net45\PCLStorage.Abstractions.dll - True - - - ..\packages\PInvoke.BCrypt.0.5.97\lib\net45\PInvoke.BCrypt.dll - True - - - ..\packages\PInvoke.Kernel32.0.5.97\lib\net45\PInvoke.Kernel32.dll - True - - - ..\packages\PInvoke.NCrypt.0.5.97\lib\net45\PInvoke.NCrypt.dll - True - - - ..\packages\PInvoke.Windows.Core.0.5.97\lib\net35\PInvoke.Windows.Core.dll - True - ..\packages\Splat.2.0.0\lib\Net45\Splat.dll True @@ -78,13 +49,8 @@ - - False - ..\..\..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore\v4.5.1\System.Runtime.WindowsRuntime.dll - - - ..\packages\Validation.2.4.15\lib\net45\Validation.dll - True + + ..\ModernKeePassLib\Libs\Windows.winmd @@ -106,6 +72,12 @@ + + + {2e710089-9559-4967-846c-e763dd1f3acb} + ModernKeePassLibPCL + + diff --git a/ModernKeePassLib.Test/app.config b/ModernKeePassLib.Test/app.config index 869e12a..042eee6 100644 --- a/ModernKeePassLib.Test/app.config +++ b/ModernKeePassLib.Test/app.config @@ -14,6 +14,10 @@ + + + + \ No newline at end of file diff --git a/ModernKeePassLib.Test/packages.config b/ModernKeePassLib.Test/packages.config index 8b06047..596ae52 100644 --- a/ModernKeePassLib.Test/packages.config +++ b/ModernKeePassLib.Test/packages.config @@ -1,15 +1,6 @@  - - - - - - - - - \ No newline at end of file diff --git a/ModernKeePassLib/Cryptography/Cipher/StandardAesEngine.cs b/ModernKeePassLib/Cryptography/Cipher/StandardAesEngine.cs index 8965ef4..c038e4a 100644 --- a/ModernKeePassLib/Cryptography/Cipher/StandardAesEngine.cs +++ b/ModernKeePassLib/Cryptography/Cipher/StandardAesEngine.cs @@ -43,6 +43,12 @@ using Org.BouncyCastle.Crypto.Parameters; #endif using ModernKeePassLibPCL.Resources; +using Org.BouncyCastle.Crypto; +using Org.BouncyCastle.Crypto.Engines; +using Org.BouncyCastle.Crypto.IO; +using Org.BouncyCastle.Crypto.Modes; +using Org.BouncyCastle.Crypto.Paddings; +using Org.BouncyCastle.Crypto.Parameters; namespace ModernKeePassLibPCL.Cryptography.Cipher { @@ -123,8 +129,8 @@ namespace ModernKeePassLibPCL.Cryptography.Cipher byte[] pbLocalKey = new byte[32]; Array.Copy(pbKey, pbLocalKey, 32); - -#if ModernKeePassLibPCL +#if !ModernKeePassLibPCL +//#if ModernKeePassLibPCL /*var provider = WinRTCrypto.SymmetricKeyAlgorithmProvider. OpenAlgorithm(SymmetricAlgorithm.AesCbcPkcs7); var key = provider.CreateSymmetricKey(pbLocalKey); @@ -140,9 +146,11 @@ namespace ModernKeePassLibPCL.Cryptography.Cipher return new CryptoStream(s, decryptor, CryptoStreamMode.Read); } */ + var provider = SymmetricKeyAlgorithmProvider. OpenAlgorithm(SymmetricAlgorithmNames.AesCbcPkcs7); var key = provider.CreateSymmetricKey(CryptographicBuffer.CreateFromByteArray(pbLocalKey)); + using (var ms = new MemoryStream()) { s.CopyTo(ms); @@ -152,18 +160,21 @@ namespace ModernKeePassLibPCL.Cryptography.Cipher { var encrypted = CryptographicEngine.Encrypt(key, data, CryptographicBuffer.CreateFromByteArray(pbLocalIV)); CryptographicBuffer.CopyToByteArray(encrypted, out resultByteArray); + return new MemoryStream(resultByteArray); } else { var decrypted = CryptographicEngine.Decrypt(key, data, CryptographicBuffer.CreateFromByteArray(pbLocalIV)); CryptographicBuffer.CopyToByteArray(decrypted, out resultByteArray); - } return new MemoryStream(resultByteArray, true); + } } -#else + +//#else -#if !KeePassRT - RijndaelManaged r = new RijndaelManaged(); +//#if !KeePassRT +//#if !ModernKeePassLibPCL + RijndaelManaged r = new RijndaelManaged(); if(r.BlockSize != 128) // AES block size { Debug.Assert(false); @@ -183,6 +194,7 @@ namespace ModernKeePassLibPCL.Cryptography.Cipher return new CryptoStream(s, iTransform, bEncrypt ? CryptoStreamMode.Write : CryptoStreamMode.Read); #else + AesEngine aes = new AesEngine(); CbcBlockCipher cbc = new CbcBlockCipher(aes); PaddedBufferedBlockCipher bc = new PaddedBufferedBlockCipher(cbc, @@ -196,7 +208,7 @@ namespace ModernKeePassLibPCL.Cryptography.Cipher return new CipherStream(s, cpRead, cpWrite); #endif -#endif +//#endif } public Stream EncryptStream(Stream sPlainText, byte[] pbKey, byte[] pbIV) diff --git a/ModernKeePassLib/Cryptography/HashingStreamEx.cs b/ModernKeePassLib/Cryptography/HashingStreamEx.cs index eb22b70..6c84a71 100644 --- a/ModernKeePassLib/Cryptography/HashingStreamEx.cs +++ b/ModernKeePassLib/Cryptography/HashingStreamEx.cs @@ -23,13 +23,16 @@ using System.Text; using System.IO; #if ModernKeePassLibPCL using Windows.Security.Cryptography; +using Windows.Security.Cryptography.Core; +using Org.BouncyCastle.Crypto; +using Org.BouncyCastle.Crypto.Digests; #else using System.Security.Cryptography; #endif using System.Diagnostics; - +using System.Runtime.InteropServices.ComTypes; using ModernKeePassLibPCL.Utility; -using Windows.Security.Cryptography.Core; +using Org.BouncyCastle.Crypto.Tls; namespace ModernKeePassLibPCL.Cryptography { @@ -39,7 +42,8 @@ namespace ModernKeePassLibPCL.Cryptography private bool m_bWriting; #if ModernKeePassLibPCL //private ICryptoTransform m_hash; - private CryptographicHash m_hash; + //private CryptographicHash m_hash; + private IDigest m_hash; #else private HashAlgorithm m_hash; #endif @@ -53,7 +57,7 @@ namespace ModernKeePassLibPCL.Cryptography public override bool CanRead { - get { return /*!m_bWriting;*/true; } + get { return !m_bWriting; } } public override bool CanSeek @@ -91,7 +95,8 @@ namespace ModernKeePassLibPCL.Cryptography m_bWriting = bWriting; #if ModernKeePassLibPCL //m_hash = WinRTCrypto.HashAlgorithmProvider.OpenAlgorithm(hashAlgorithm ?? HashAlgorithm.Sha256).CreateHash(); - m_hash = HashAlgorithmProvider.OpenAlgorithm(hashAlgorithm ?? HashAlgorithmNames.Sha256).CreateHash(); + //m_hash = HashAlgorithmProvider.OpenAlgorithm(hashAlgorithm ?? HashAlgorithmNames.Sha256).CreateHash(); + m_hash = new Sha256Digest(); #elif !KeePassLibSD m_hash = (hashAlgorithm ?? new SHA256Managed()); #else // KeePassLibSD @@ -135,7 +140,10 @@ namespace ModernKeePassLibPCL.Cryptography //m_hash.TransformFinalBlock(new byte[0], 0, 0); #if ModernKeePassLibPCL //m_pbFinalHash = (m_hash as CryptographicHash).GetValueAndReset (); - CryptographicBuffer.CopyToByteArray(m_hash.GetValueAndReset(), out m_pbFinalHash); + //CryptographicBuffer.CopyToByteArray(m_hash.GetValueAndReset(), out m_pbFinalHash); + m_pbFinalHash = new byte[32]; + m_hash.DoFinal(m_pbFinalHash, 0); + m_hash.Reset(); #else m_pbFinalHash = m_hash.Hash; #endif @@ -160,7 +168,7 @@ namespace ModernKeePassLibPCL.Cryptography public override int Read(byte[] pbBuffer, int nOffset, int nCount) { - //if(m_bWriting) throw new InvalidOperationException(); + if(m_bWriting) throw new InvalidOperationException(); int nRead = m_sBaseStream.Read(pbBuffer, nOffset, nCount); int nPartialRead = nRead; @@ -178,7 +186,8 @@ namespace ModernKeePassLibPCL.Cryptography if((m_hash != null) && (nRead > 0)) //m_hash.TransformBlock(pbBuffer, nOffset, nRead, pbBuffer, nOffset); - m_hash.Append(CryptographicBuffer.CreateFromByteArray(pbBuffer)); + //m_hash.Append(CryptographicBuffer.CreateFromByteArray(pbBuffer)); + m_hash.BlockUpdate(pbBuffer, nOffset, nRead); #if DEBUG Debug.Assert(MemUtil.ArraysEqual(pbBuffer, pbOrg)); @@ -198,10 +207,10 @@ namespace ModernKeePassLibPCL.Cryptography if ((m_hash != null) && (nCount > 0)) //m_hash.TransformBlock(pbBuffer, nOffset, nCount, pbBuffer, nOffset); - m_hash.Append(CryptographicBuffer.CreateFromByteArray(pbBuffer)); - + //m_hash.Append(CryptographicBuffer.CreateFromByteArray(pbBuffer)); + m_hash.BlockUpdate(pbBuffer, nOffset, nCount); #if DEBUG - Debug.Assert(MemUtil.ArraysEqual(pbBuffer, pbOrg)); + Debug.Assert(MemUtil.ArraysEqual(pbBuffer, pbOrg)); #endif m_sBaseStream.Write(pbBuffer, nOffset, nCount); diff --git a/ModernKeePassLib/Keys/KcpKeyFile.cs b/ModernKeePassLib/Keys/KcpKeyFile.cs index 0959f34..a1704c6 100644 --- a/ModernKeePassLib/Keys/KcpKeyFile.cs +++ b/ModernKeePassLib/Keys/KcpKeyFile.cs @@ -322,7 +322,7 @@ namespace ModernKeePassLibPCL.Keys #if ModernKeePassLibPCL var settings = new XmlWriterSettings() { Encoding = StrUtil.Utf8 }; - var xtw = XmlWriter.Create(sOut.AsStream(), settings); + var xtw = XmlWriter.Create(sOut, settings); #else XmlTextWriter xtw = new XmlTextWriter(sOut, StrUtil.Utf8); #endif diff --git a/ModernKeePassLib/ModernKeePassLibPCL.nuget.targets b/ModernKeePassLib/ModernKeePassLibPCL.nuget.targets deleted file mode 100644 index ac12fe8..0000000 --- a/ModernKeePassLib/ModernKeePassLibPCL.nuget.targets +++ /dev/null @@ -1,9 +0,0 @@ - - - - $(UserProfile)\.nuget\packages\ - - - - - \ No newline at end of file diff --git a/ModernKeePassLib/Serialization/FileLock.cs b/ModernKeePassLib/Serialization/FileLock.cs index c4d318a..c23236c 100644 --- a/ModernKeePassLib/Serialization/FileLock.cs +++ b/ModernKeePassLib/Serialization/FileLock.cs @@ -129,7 +129,7 @@ namespace ModernKeePassLibPCL.Serialization try { if(s == null) return null; - using (var sr = new StreamReader(s.AsStream(), StrUtil.Utf8)) + using (var sr = new StreamReader(s, StrUtil.Utf8)) { string str = sr.ReadToEnd(); if (str == null) @@ -179,7 +179,7 @@ namespace ModernKeePassLibPCL.Serialization { byte[] pbFile = StrUtil.Utf8.GetBytes(sb.ToString()); if (s == null) throw new IOException(iocLockFile.GetDisplayName()); - s.WriteAsync(pbFile.AsBuffer()).GetAwaiter().GetResult(); + s.WriteAsync(pbFile, 0, pbFile.Length).GetAwaiter().GetResult(); } return lfi; diff --git a/ModernKeePassLib/Serialization/FileTransactionEx.cs b/ModernKeePassLib/Serialization/FileTransactionEx.cs index 79d75cd..72a6c42 100644 --- a/ModernKeePassLib/Serialization/FileTransactionEx.cs +++ b/ModernKeePassLib/Serialization/FileTransactionEx.cs @@ -79,7 +79,7 @@ namespace ModernKeePassLibPCL.Serialization else m_iocTemp = m_iocBase; } - public IRandomAccessStream OpenWrite() + public Stream OpenWrite() { if(!m_bTransacted) m_bMadeUnhidden = UrlUtil.UnhideFile(m_iocTemp.Path); else // m_bTransacted @@ -100,7 +100,7 @@ namespace ModernKeePassLibPCL.Serialization } } - private async void CommitWriteTransaction() + private void CommitWriteTransaction() { bool bMadeUnhidden = UrlUtil.UnhideFile(m_iocBase.Path); diff --git a/ModernKeePassLib/Serialization/IOConnection.cs b/ModernKeePassLib/Serialization/IOConnection.cs index cdbc056..1f0601d 100644 --- a/ModernKeePassLib/Serialization/IOConnection.cs +++ b/ModernKeePassLib/Serialization/IOConnection.cs @@ -422,7 +422,7 @@ namespace ModernKeePassLibPCL.Serialization new Uri(ioc.Path))); } #else - public static IRandomAccessStream OpenRead(IOConnectionInfo ioc) + public static Stream OpenRead(IOConnectionInfo ioc) { RaiseIOAccessPreEvent(ioc, IOAccessType.Read); @@ -430,9 +430,9 @@ namespace ModernKeePassLibPCL.Serialization } #endif - private static IRandomAccessStream OpenReadLocal(IOConnectionInfo ioc) + private static Stream OpenReadLocal(IOConnectionInfo ioc) { - return ioc.StorageFile.OpenAsync(FileAccessMode.Read).GetAwaiter().GetResult(); + return ioc.StorageFile.OpenAsync(FileAccessMode.Read).GetAwaiter().GetResult().AsStream(); } #if (!ModernKeePassLibPCL && !KeePassLibSD && !KeePassRT) @@ -458,7 +458,7 @@ namespace ModernKeePassLibPCL.Serialization return IocStream.WrapIfRequired(s); } #else - public static IRandomAccessStream OpenWrite(IOConnectionInfo ioc) + public static Stream OpenWrite(IOConnectionInfo ioc) { RaiseIOAccessPreEvent(ioc, IOAccessType.Write); @@ -466,9 +466,9 @@ namespace ModernKeePassLibPCL.Serialization } #endif - private static IRandomAccessStream OpenWriteLocal(IOConnectionInfo ioc) + private static Stream OpenWriteLocal(IOConnectionInfo ioc) { - return ioc.StorageFile.OpenAsync(FileAccessMode.ReadWrite).GetAwaiter().GetResult(); + return ioc.StorageFile.OpenAsync(FileAccessMode.ReadWrite).GetAwaiter().GetResult().AsStream(); } public static bool FileExists(IOConnectionInfo ioc) @@ -546,7 +546,7 @@ namespace ModernKeePassLibPCL.Serialization #endif public static byte[] ReadFile(IOConnectionInfo ioc) { - IRandomAccessStream sIn = null; + Stream sIn = null; MemoryStream ms = null; try { @@ -555,7 +555,7 @@ namespace ModernKeePassLibPCL.Serialization ms = new MemoryStream(); - MemUtil.CopyStream(sIn.AsStream(), ms); + MemUtil.CopyStream(sIn, ms); return ms.ToArray(); } diff --git a/ModernKeePassLib/Serialization/KdbxFile.Read.cs b/ModernKeePassLib/Serialization/KdbxFile.Read.cs index 538cd13..e46759c 100644 --- a/ModernKeePassLib/Serialization/KdbxFile.Read.cs +++ b/ModernKeePassLib/Serialization/KdbxFile.Read.cs @@ -71,7 +71,7 @@ namespace ModernKeePassLibPCL.Serialization /// a KDBX stream. /// Format specifier. /// Status logger (optional). - public void Load(IRandomAccessStream sSource, KdbxFormat kdbFormat, IStatusLogger slLogger) + public void Load(Stream sSource, KdbxFormat kdbFormat, IStatusLogger slLogger) { Debug.Assert(sSource != null); if(sSource == null) throw new ArgumentNullException("sSource"); @@ -79,7 +79,7 @@ namespace ModernKeePassLibPCL.Serialization m_format = kdbFormat; m_slLogger = slLogger; - HashingStreamEx hashedStream = new HashingStreamEx(sSource.AsStream(), false, null); + HashingStreamEx hashedStream = new HashingStreamEx(sSource, false, null); UTF8Encoding encNoBom = StrUtil.Utf8; try @@ -165,7 +165,7 @@ namespace ModernKeePassLibPCL.Serialization finally { CommonCleanUpRead(sSource, hashedStream); } } - private void CommonCleanUpRead(IRandomAccessStream sSource, HashingStreamEx hashedStream) + private void CommonCleanUpRead(Stream sSource, HashingStreamEx hashedStream) { hashedStream.Dispose(); m_pbHashOfFileOnDisk = hashedStream.Hash; @@ -376,7 +376,7 @@ namespace ModernKeePassLibPCL.Serialization } [Obsolete] - public static List ReadEntries(PwDatabase pwDatabase, IRandomAccessStream msData) + public static List ReadEntries(PwDatabase pwDatabase, Stream msData) { return ReadEntries(msData); } @@ -386,7 +386,7 @@ namespace ModernKeePassLibPCL.Serialization /// /// Input stream to read the entries from. /// Extracted entries. - public static List ReadEntries(IRandomAccessStream msData) + public static List ReadEntries(Stream msData) { /* KdbxFile f = new KdbxFile(pwDatabase); f.m_format = KdbxFormat.PlainXml; diff --git a/ModernKeePassLib/Serialization/KdbxFile.Write.cs b/ModernKeePassLib/Serialization/KdbxFile.Write.cs index ec2e425..cb9f75e 100644 --- a/ModernKeePassLib/Serialization/KdbxFile.Write.cs +++ b/ModernKeePassLib/Serialization/KdbxFile.Write.cs @@ -77,7 +77,7 @@ namespace ModernKeePassLibPCL.Serialization /// be written. /// Format of the file to create. /// Logger that recieves status information. - public void Save(IRandomAccessStream sSaveTo, PwGroup pgDataSource, KdbxFormat format, + public void Save(Stream sSaveTo, PwGroup pgDataSource, KdbxFormat format, IStatusLogger slLogger) { Debug.Assert(sSaveTo != null); @@ -86,7 +86,7 @@ namespace ModernKeePassLibPCL.Serialization m_format = format; m_slLogger = slLogger; - HashingStreamEx hashedStream = new HashingStreamEx(sSaveTo.AsStream(), true, null); + HashingStreamEx hashedStream = new HashingStreamEx(sSaveTo, true, null); UTF8Encoding encNoBom = StrUtil.Utf8; CryptoRandom cr = CryptoRandom.Instance; @@ -146,7 +146,7 @@ namespace ModernKeePassLibPCL.Serialization finally { CommonCleanUpWrite(sSaveTo, hashedStream); } } - private void CommonCleanUpWrite(IRandomAccessStream sSaveTo, HashingStreamEx hashedStream) + private void CommonCleanUpWrite(Stream sSaveTo, HashingStreamEx hashedStream) { hashedStream.Dispose(); m_pbHashOfFileOnDisk = hashedStream.Hash; @@ -836,7 +836,7 @@ namespace ModernKeePassLibPCL.Serialization } [Obsolete] - public static bool WriteEntries(IRandomAccessStream msOutput, PwDatabase pwDatabase, + public static bool WriteEntries(Stream msOutput, PwDatabase pwDatabase, PwEntry[] vEntries) { return WriteEntries(msOutput, vEntries); @@ -849,7 +849,7 @@ namespace ModernKeePassLibPCL.Serialization /// Entries to serialize. /// Returns true, if the entries were written successfully /// to the stream. - public static bool WriteEntries(IRandomAccessStream msOutput, PwEntry[] vEntries) + public static bool WriteEntries(Stream msOutput, PwEntry[] vEntries) { /* KdbxFile f = new KdbxFile(pwDatabase); f.m_format = KdbxFormat.PlainXml; diff --git a/ModernKeePassLib/app.config b/ModernKeePassLib/app.config index b4834a7..9cf3b82 100644 --- a/ModernKeePassLib/app.config +++ b/ModernKeePassLib/app.config @@ -2,6 +2,10 @@ + + + + diff --git a/ModernKeePassLib/project.json b/ModernKeePassLib/project.json index 86efe1b..2764ad2 100644 --- a/ModernKeePassLib/project.json +++ b/ModernKeePassLib/project.json @@ -1,7 +1,6 @@ { "supports": {}, "dependencies": { - "Microsoft.Bcl.Build": "1.0.21", "Microsoft.NETCore.Portable.Compatibility": "1.0.1", "NETStandard.Library": "1.6.0", "PInvoke.Windows.Core": "0.5.97", diff --git a/ModernKeePassLib/project.lock.json b/ModernKeePassLib/project.lock.json index 046022d..2f35586 100644 --- a/ModernKeePassLib/project.lock.json +++ b/ModernKeePassLib/project.lock.json @@ -3,9 +3,6 @@ "version": 2, "targets": { ".NETStandard,Version=v1.2": { - "Microsoft.Bcl.Build/1.0.21": { - "type": "package" - }, "Microsoft.NETCore.Jit/1.0.2": { "type": "package" }, @@ -545,17 +542,6 @@ } }, "libraries": { - "Microsoft.Bcl.Build/1.0.21": { - "sha512": "sgHu4mIt0+NVGyI12Bj4hLPypNK55UOH+ologj2LqDCjxq3EbIxe/uAtHjY+fEwbE1dtsAHG8SXHf+V/EYbKTg==", - "type": "package", - "files": [ - "License-Stable.rtf", - "Microsoft.Bcl.Build.1.0.21.nupkg.sha512", - "Microsoft.Bcl.Build.nuspec", - "build/Microsoft.Bcl.Build.Tasks.dll", - "build/Microsoft.Bcl.Build.targets" - ] - }, "Microsoft.NETCore.Jit/1.0.2": { "sha512": "Ok2vWofa6X8WD9vc4pfLHwvJz1/B6t3gOAoZcjrjrQf7lQOlNIuZIZtLn3wnWX28DuQGpPJkRlBxFj7Z5txNqw==", "type": "package", @@ -2959,7 +2945,6 @@ }, "projectFileDependencyGroups": { "": [ - "Microsoft.Bcl.Build >= 1.0.21", "Microsoft.NETCore.Portable.Compatibility >= 1.0.1", "NETStandard.Library >= 1.6.0", "PInvoke.Windows.Core >= 0.5.97",