diff --git a/ModernKeePass/ModernKeePass.csproj b/ModernKeePass/ModernKeePass.csproj index 0448914..e38b9c8 100644 --- a/ModernKeePass/ModernKeePass.csproj +++ b/ModernKeePass/ModernKeePass.csproj @@ -159,8 +159,8 @@ - - ..\packages\ModernKeePassLibPCL.2.28.1.33588\lib\portable46-net451+win81+wpa81\ModernKeePassLibPCL.dll + + ..\packages\ModernKeePassLibPCL.2.28.1.32210\lib\netstandard1.2\ModernKeePassLibPCL.dll True diff --git a/ModernKeePass/packages.config b/ModernKeePass/packages.config index 6eff576..b58a4a5 100644 --- a/ModernKeePass/packages.config +++ b/ModernKeePass/packages.config @@ -4,7 +4,7 @@ - + @@ -14,6 +14,7 @@ + diff --git a/ModernKeePassLib/Keys/CompositeKey.cs b/ModernKeePassLib/Keys/CompositeKey.cs index 6c37fe3..4664b37 100644 --- a/ModernKeePassLib/Keys/CompositeKey.cs +++ b/ModernKeePassLib/Keys/CompositeKey.cs @@ -323,6 +323,9 @@ namespace ModernKeePassLibPCL.Keys var iCrypt = WinRTCrypto.CryptographicEngine.CreateEncryptor(key);*/ var aes = SymmetricKeyAlgorithmProvider.OpenAlgorithm(SymmetricAlgorithmNames.AesEcb); var key = aes.CreateSymmetricKey(CryptographicBuffer.CreateFromByteArray(pbKeySeed32)); + var parameters = KeyDerivationParameters.BuildForPbkdf2(CryptographicBuffer.CreateFromByteArray(pbKeySeed32), (uint)uNumRounds); + var result = CryptographicEngine.DeriveKeyMaterial(key, parameters, 32); + CryptographicBuffer.CopyToByteArray(result, out pbNewKey32); #else byte[] pbIV = new byte[16]; @@ -343,7 +346,7 @@ namespace ModernKeePassLibPCL.Keys #endif // !iCrypt.CanReuseTransform -- doesn't work with Mono - if ((iCrypt == null) || (iCrypt.InputBlockSize != 16) || + /*if ((iCrypt == null) || (iCrypt.InputBlockSize != 16) || (iCrypt.OutputBlockSize != 16)) { Debug.Assert(false, "Invalid ICryptoTransform."); @@ -356,7 +359,7 @@ namespace ModernKeePassLibPCL.Keys { iCrypt.TransformBlock(pbNewKey32, 0, 16, pbNewKey32, 0); iCrypt.TransformBlock(pbNewKey32, 16, 16, pbNewKey32, 16); - } + }*/ #endif return true; @@ -374,7 +377,7 @@ namespace ModernKeePassLibPCL.Keys /// a value of 401 is recommended. /// Number of transformations performed in the specified /// amount of time. Maximum value is uint.MaxValue. - public static ulong TransformKeyBenchmark(uint uMilliseconds, ulong uStep) + /*public static ulong TransformKeyBenchmark(uint uMilliseconds, ulong uStep) { ulong uRounds; @@ -398,12 +401,10 @@ namespace ModernKeePassLibPCL.Keys aes.Init(true, kp); #else #if ModernKeePassLibPCL - /*var aes = WinRTCrypto.SymmetricKeyAlgorithmProvider.OpenAlgorithm(SymmetricAlgorithm.AesEcb); + var aes = WinRTCrypto.SymmetricKeyAlgorithmProvider.OpenAlgorithm(SymmetricAlgorithm.AesEcb); var key = aes.CreateSymmetricKey(pbKey); - var iCrypt = WinRTCrypto.CryptographicEngine.CreateEncryptor(key);*/ - var aes = SymmetricKeyAlgorithmProvider.OpenAlgorithm(SymmetricAlgorithmNames.AesEcb); - var key = aes.CreateSymmetricKey(CryptographicBuffer.CreateFromByteArray(pbKey)); - + var iCrypt = WinRTCrypto.CryptographicEngine.CreateEncryptor(key); + #else byte[] pbIV = new byte[16]; Array.Clear(pbIV, 0, pbIV.Length); @@ -422,8 +423,8 @@ namespace ModernKeePassLibPCL.Keys ICryptoTransform iCrypt = r.CreateEncryptor(); #endif - // !iCrypt.CanReuseTransform -- doesn't work with Mono - if((iCrypt == null) || (iCrypt.InputBlockSize != 16) || + // !iCrypt.CanReuseTransform -- doesn't work with Mono + if ((iCrypt == null) || (iCrypt.InputBlockSize != 16) || (iCrypt.OutputBlockSize != 16)) { Debug.Assert(false, "Invalid ICryptoTransform."); @@ -460,7 +461,7 @@ namespace ModernKeePassLibPCL.Keys } return uRounds; - } + }*/ } public sealed class InvalidCompositeKeyException : Exception diff --git a/ModernKeePassLib/Keys/KcpKeyFile.cs b/ModernKeePassLib/Keys/KcpKeyFile.cs index 7786695..af77f4d 100644 --- a/ModernKeePassLib/Keys/KcpKeyFile.cs +++ b/ModernKeePassLib/Keys/KcpKeyFile.cs @@ -87,9 +87,9 @@ namespace ModernKeePassLibPCL.Keys Construct(iocKeyFile, bThrowIfDbFile); } - private void Construct(IOConnectionInfo iocFile, bool bThrowIfDbFile) + private async void Construct(IOConnectionInfo iocFile, bool bThrowIfDbFile) { - byte[] pbFileData = IOConnection.ReadFile(iocFile); + byte[] pbFileData = await IOConnection.ReadFile(iocFile); if(pbFileData == null) throw new FileNotFoundException(); if(bThrowIfDbFile && (pbFileData.Length >= 8)) @@ -310,7 +310,7 @@ namespace ModernKeePassLibPCL.Keys return pbKeyData; } - private static void CreateXmlKeyFile(string strFile, byte[] pbKeyData) + private static async void CreateXmlKeyFile(string strFile, byte[] pbKeyData) { Debug.Assert(strFile != null); if(strFile == null) throw new ArgumentNullException("strFile"); @@ -318,7 +318,7 @@ namespace ModernKeePassLibPCL.Keys if(pbKeyData == null) throw new ArgumentNullException("pbKeyData"); IOConnectionInfo ioc = IOConnectionInfo.FromPath(strFile); - Stream sOut = IOConnection.OpenWrite(ioc); + Stream sOut = await IOConnection.OpenWrite(ioc); #if ModernKeePassLibPCL var settings = new XmlWriterSettings() { Encoding = StrUtil.Utf8 }; diff --git a/ModernKeePassLib/ModernKeePassLibPCL.csproj b/ModernKeePassLib/ModernKeePassLibPCL.csproj index e51d3ac..888f163 100644 --- a/ModernKeePassLib/ModernKeePassLibPCL.csproj +++ b/ModernKeePassLib/ModernKeePassLibPCL.csproj @@ -114,7 +114,6 @@ - diff --git a/ModernKeePassLib/PwDatabase.cs b/ModernKeePassLib/PwDatabase.cs index be4e5f0..2f566d0 100644 --- a/ModernKeePassLib/PwDatabase.cs +++ b/ModernKeePassLib/PwDatabase.cs @@ -566,7 +566,7 @@ namespace ModernKeePassLibPCL /// IO connection to load the database from. /// Key used to open the specified database. /// Logger, which gets all status messages. - public void Open(IOConnectionInfo ioSource, CompositeKey pwKey, + public async void Open(IOConnectionInfo ioSource, CompositeKey pwKey, IStatusLogger slLogger) { Debug.Assert(ioSource != null); @@ -589,7 +589,7 @@ namespace ModernKeePassLibPCL KdbxFile kdbx = new KdbxFile(this); kdbx.DetachBinaries = m_strDetachBins; - Stream s = IOConnection.OpenRead(ioSource); + Stream s = await IOConnection.OpenRead(ioSource); kdbx.Load(s, KdbxFormat.Default, slLogger); s.Dispose(); @@ -612,7 +612,7 @@ namespace ModernKeePassLibPCL /// it has been opened from. /// /// Logger that recieves status information. - public void Save(IStatusLogger slLogger) + public async void Save(IStatusLogger slLogger) { Debug.Assert(ValidateUuidUniqueness()); @@ -622,7 +622,7 @@ namespace ModernKeePassLibPCL { FileTransactionEx ft = new FileTransactionEx(m_ioSource, m_bUseFileTransactions); - Stream s = ft.OpenWrite(); + Stream s = await ft.OpenWrite(); KdbxFile kdb = new KdbxFile(this); kdb.Save(s, null, KdbxFormat.Default, slLogger); diff --git a/ModernKeePassLib/Serialization/FileLock.cs b/ModernKeePassLib/Serialization/FileLock.cs index 880af0d..3c8501c 100644 --- a/ModernKeePassLib/Serialization/FileLock.cs +++ b/ModernKeePassLib/Serialization/FileLock.cs @@ -122,12 +122,12 @@ namespace ModernKeePassLibPCL.Serialization return sb.ToString(); } - public static LockFileInfo Load(IOConnectionInfo iocLockFile) + public static async Task Load(IOConnectionInfo iocLockFile) { Stream s = null; try { - s = IOConnection.OpenRead(iocLockFile); + s = await IOConnection.OpenRead(iocLockFile); if(s == null) return null; StreamReader sr = new StreamReader(s, StrUtil.Utf8); string str = sr.ReadToEnd(); @@ -149,7 +149,7 @@ namespace ModernKeePassLibPCL.Serialization } // Throws on error - public static LockFileInfo Create(IOConnectionInfo iocLockFile) + public static async Task Create(IOConnectionInfo iocLockFile) { LockFileInfo lfi; Stream s = null; @@ -186,7 +186,7 @@ namespace ModernKeePassLibPCL.Serialization byte[] pbFile = StrUtil.Utf8.GetBytes(sb.ToString()); - s = IOConnection.OpenWrite(iocLockFile); + s = await IOConnection.OpenWrite(iocLockFile); if(s == null) throw new IOException(iocLockFile.GetDisplayName()); s.Write(pbFile, 0, pbFile.Length); } @@ -203,7 +203,7 @@ namespace ModernKeePassLibPCL.Serialization m_iocLockFile = iocBaseFile.CloneDeep(); m_iocLockFile.Path += LockFileExt; - LockFileInfo lfiEx = LockFileInfo.Load(m_iocLockFile); + LockFileInfo lfiEx = LockFileInfo.Load(m_iocLockFile).Result; if(lfiEx != null) { m_iocLockFile = null; // Otherwise Dispose deletes the existing one diff --git a/ModernKeePassLib/Serialization/FileTransactionEx.cs b/ModernKeePassLib/Serialization/FileTransactionEx.cs index bad9ac9..989271d 100644 --- a/ModernKeePassLib/Serialization/FileTransactionEx.cs +++ b/ModernKeePassLib/Serialization/FileTransactionEx.cs @@ -29,6 +29,7 @@ using System.Security.AccessControl; using ModernKeePassLibPCL.Native; using ModernKeePassLibPCL.Utility; +using System.Threading.Tasks; namespace ModernKeePassLibPCL.Serialization { @@ -77,7 +78,7 @@ namespace ModernKeePassLibPCL.Serialization else m_iocTemp = m_iocBase; } - public Stream OpenWrite() + public async Task OpenWrite() { if(!m_bTransacted) m_bMadeUnhidden = UrlUtil.UnhideFile(m_iocTemp.Path); else // m_bTransacted @@ -86,7 +87,7 @@ namespace ModernKeePassLibPCL.Serialization catch(Exception) { } } - return IOConnection.OpenWrite(m_iocTemp); + return await IOConnection.OpenWrite(m_iocTemp); } public void CommitWrite() @@ -98,7 +99,7 @@ namespace ModernKeePassLibPCL.Serialization } } - private void CommitWriteTransaction() + private async void CommitWriteTransaction() { bool bMadeUnhidden = UrlUtil.UnhideFile(m_iocBase.Path); @@ -107,7 +108,7 @@ namespace ModernKeePassLibPCL.Serialization bool bEfsEncrypted = false; #endif - if(IOConnection.FileExists(m_iocBase)) + if(await IOConnection.FileExists(m_iocBase)) { #if (!ModernKeePassLibPCL && !KeePassLibSD && !KeePassRT) if(m_iocBase.IsLocalFile()) diff --git a/ModernKeePassLib/Serialization/IOConnection.cs b/ModernKeePassLib/Serialization/IOConnection.cs index 6e9a1af..4157604 100644 --- a/ModernKeePassLib/Serialization/IOConnection.cs +++ b/ModernKeePassLib/Serialization/IOConnection.cs @@ -23,6 +23,7 @@ using System.IO; using System.Net; using System.Diagnostics; using Windows.Storage.Streams; +using System.Threading.Tasks; #if (!ModernKeePassLibPCL && !KeePassLibSD && !KeePassRT) using System.Net.Cache; using System.Net.Security; @@ -421,20 +422,21 @@ namespace ModernKeePassLibPCL.Serialization new Uri(ioc.Path))); } #else - public static Stream OpenRead(IOConnectionInfo ioc) + public static async Task OpenRead(IOConnectionInfo ioc) { RaiseIOAccessPreEvent(ioc, IOAccessType.Read); - return OpenReadLocal(ioc); + return await OpenReadLocal(ioc); } #endif - private static Stream OpenReadLocal(IOConnectionInfo ioc) + private static async Task OpenReadLocal(IOConnectionInfo ioc) { #if ModernKeePassLibPCL - /*if (ioc.StorageFile != null) + /*if (ioc.StorageFile != null) {*/ - return ioc.StorageFile.OpenAsync(FileAccessMode.Read).GetResults().AsStream(); + var file = await ioc.StorageFile.OpenAsync(FileAccessMode.Read); + return file.AsStream(); /*} var file = FileSystem.Current.GetFileFromPathAsync(ioc.Path).Result; return file.OpenAsync(PCLStorage.FileAccess.Read).Result;*/ @@ -467,35 +469,36 @@ namespace ModernKeePassLibPCL.Serialization return IocStream.WrapIfRequired(s); } #else - public static Stream OpenWrite(IOConnectionInfo ioc) + public static async Task OpenWrite(IOConnectionInfo ioc) { RaiseIOAccessPreEvent(ioc, IOAccessType.Write); - return OpenWriteLocal(ioc); + return await OpenWriteLocal(ioc); } #endif - private static Stream OpenWriteLocal(IOConnectionInfo ioc) + private static async Task OpenWriteLocal(IOConnectionInfo ioc) { #if ModernKeePassLibPCL - /*if (ioc.StorageFile != null) + /*if (ioc.StorageFile != null) {*/ - return ioc.StorageFile.OpenAsync(FileAccessMode.ReadWrite).GetResults().AsStream(); - /*} + var file = await ioc.StorageFile.OpenAsync(FileAccessMode.ReadWrite); + return file.AsStream(); + /*} var file = FileSystem.Current.GetFileFromPathAsync(ioc.Path).Result; return file.OpenAsync(FileAccess.ReadAndWrite).Result;*/ #else return new FileStream(ioc.Path, FileMode.Create, FileAccess.Write, FileShare.None); #endif - } + } - public static bool FileExists(IOConnectionInfo ioc) + public static async Task FileExists(IOConnectionInfo ioc) { - return FileExists(ioc, false); + return await FileExists(ioc, false); } - public static bool FileExists(IOConnectionInfo ioc, bool bThrowErrors) + public static async Task FileExists(IOConnectionInfo ioc, bool bThrowErrors) { if(ioc == null) { Debug.Assert(false); return false; } @@ -520,7 +523,7 @@ namespace ModernKeePassLibPCL.Serialization try { - Stream s = OpenRead(ioc); + Stream s = await OpenRead(ioc); if(s == null) throw new FileNotFoundException(); try { s.ReadByte(); } @@ -540,13 +543,13 @@ namespace ModernKeePassLibPCL.Serialization return true; } - public static void DeleteFile(IOConnectionInfo ioc) + public static async void DeleteFile(IOConnectionInfo ioc) { RaiseIOAccessPreEvent(ioc, IOAccessType.Delete); #if ModernKeePassLibPCL if (!ioc.IsLocalFile()) return; - ioc.StorageFile?.DeleteAsync().GetResults(); + await ioc.StorageFile?.DeleteAsync(); /*var file = FileSystem.Current.GetFileFromPathAsync(ioc.Path).Result; file.DeleteAsync().RunSynchronously();*/ #else @@ -581,13 +584,13 @@ namespace ModernKeePassLibPCL.Serialization /// /// Source file path. /// Target file path. - public static void RenameFile(IOConnectionInfo iocFrom, IOConnectionInfo iocTo) + public static async void RenameFile(IOConnectionInfo iocFrom, IOConnectionInfo iocTo) { RaiseIOAccessPreEvent(iocFrom, iocTo, IOAccessType.Move); #if ModernKeePassLibPCL if (!iocFrom.IsLocalFile()) return; - iocFrom.StorageFile?.RenameAsync(iocTo.Path).GetResults(); + await iocFrom.StorageFile?.RenameAsync(iocTo.Path); /*var file = FileSystem.Current.GetFileFromPathAsync(iocFrom.Path).Result; file.MoveAsync(iocTo.Path).RunSynchronously();*/ #else @@ -676,13 +679,13 @@ namespace ModernKeePassLibPCL.Serialization catch(Exception) { Debug.Assert(false); } } #endif - public static byte[] ReadFile(IOConnectionInfo ioc) + public static async Task ReadFile(IOConnectionInfo ioc) { Stream sIn = null; MemoryStream ms = null; try { - sIn = IOConnection.OpenRead(ioc); + sIn = await OpenRead(ioc); if(sIn == null) return null; ms = new MemoryStream(); diff --git a/ModernKeePassLib/Serialization/IOConnectionInfo.cs b/ModernKeePassLib/Serialization/IOConnectionInfo.cs index 6d00cbc..6b0b1aa 100644 --- a/ModernKeePassLib/Serialization/IOConnectionInfo.cs +++ b/ModernKeePassLib/Serialization/IOConnectionInfo.cs @@ -32,6 +32,7 @@ using Windows.Storage; using ModernKeePassLibPCL.Interfaces; using ModernKeePassLibPCL.Utility; +using System.Threading.Tasks; namespace ModernKeePassLibPCL.Serialization { @@ -306,12 +307,15 @@ namespace ModernKeePassLibPCL.Serialization public StorageFile StorageFile { get; set; } - public bool CanProbablyAccess() + public async Task CanProbablyAccess() { #if ModernKeePassLibPCL - if(IsLocalFile()) - //return (FileSystem.Current.GetFileFromPathAsync(m_strUrl).Result != null); - return StorageFile.GetFileFromPathAsync(m_strUrl).GetResults() != null; + if (IsLocalFile()) + { + //return (FileSystem.Current.GetFileFromPathAsync(m_strUrl).Result != null); + var file = await StorageFile.GetFileFromPathAsync(m_strUrl); + return file != null; + } #else if(IsLocalFile()) return File.Exists(m_strUrl); #endif diff --git a/ModernKeePassLib/Serialization/KdbxFile.Read.cs b/ModernKeePassLib/Serialization/KdbxFile.Read.cs index 5f379ec..7f183be 100644 --- a/ModernKeePassLib/Serialization/KdbxFile.Read.cs +++ b/ModernKeePassLib/Serialization/KdbxFile.Read.cs @@ -57,10 +57,10 @@ namespace ModernKeePassLibPCL.Serialization /// File to load. /// Format specifier. /// Status logger (optional). - public void Load(string strFilePath, KdbxFormat kdbFormat, IStatusLogger slLogger) + public async void Load(string strFilePath, KdbxFormat kdbFormat, IStatusLogger slLogger) { IOConnectionInfo ioc = IOConnectionInfo.FromPath(strFilePath); - Load(IOConnection.OpenRead(ioc), kdbFormat, slLogger); + Load(await IOConnection.OpenRead(ioc), kdbFormat, slLogger); } /// diff --git a/ModernKeePassLib/project.json b/ModernKeePassLib/project.json index 191bdf8..f4f328d 100644 --- a/ModernKeePassLib/project.json +++ b/ModernKeePassLib/project.json @@ -6,7 +6,7 @@ "NETStandard.Library": "1.6.0", "PInvoke.Windows.Core": "0.5.97", "Splat": "2.0.0", - "System.Runtime.Extensions": "4.3.0", + "System.Runtime.WindowsRuntime": "4.3.0", "System.Xml.ReaderWriter": "4.3.0", "System.Xml.XmlSerializer": "4.3.0", "Validation": "2.4.15" diff --git a/ModernKeePassLib/project.lock.json b/ModernKeePassLib/project.lock.json index 6f57ce4..6cc2ca6 100644 --- a/ModernKeePassLib/project.lock.json +++ b/ModernKeePassLib/project.lock.json @@ -343,12 +343,12 @@ "ref/netstandard1.2/System.Runtime.dll": {} } }, - "System.Runtime.Extensions/4.3.0": { + "System.Runtime.Extensions/4.1.0": { "type": "package", "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Runtime": "4.1.0" }, "compile": { "ref/netstandard1.0/System.Runtime.Extensions.dll": {} @@ -401,6 +401,17 @@ "ref/netstandard1.1/System.Runtime.Numerics.dll": {} } }, + "System.Runtime.WindowsRuntime/4.3.0": { + "type": "package", + "dependencies": { + "System.IO": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "compile": { + "ref/netstandard1.2/System.Runtime.WindowsRuntime.dll": {} + } + }, "System.Text.Encoding/4.3.0": { "type": "package", "dependencies": { @@ -1973,8 +1984,8 @@ "system.runtime.nuspec" ] }, - "System.Runtime.Extensions/4.3.0": { - "sha512": "guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==", + "System.Runtime.Extensions/4.1.0": { + "sha512": "CUOHjTT/vgP0qGW22U4/hDlOqXmcPq5YicBaXdUR2UiUoLwBT+olO6we4DVbq57jeX5uXH2uerVZhf0qGj+sVQ==", "type": "package", "files": [ "ThirdPartyNotices.txt", @@ -2047,7 +2058,7 @@ "ref/xamarinmac20/_._", "ref/xamarintvos10/_._", "ref/xamarinwatchos10/_._", - "system.runtime.extensions.4.3.0.nupkg.sha512", + "system.runtime.extensions.4.1.0.nupkg.sha512", "system.runtime.extensions.nuspec" ] }, @@ -2223,6 +2234,59 @@ "system.runtime.numerics.nuspec" ] }, + "System.Runtime.WindowsRuntime/4.3.0": { + "sha512": "xbgfgewneLCfKQfz0VzKsYDacZ680CudYw0uzj0bZ8ATpotkwicgtAsyJZ/J7/Dh2QIwpadjA2zLW/LFk7FKiA==", + "type": "package", + "files": [ + "System.Runtime.WindowsRuntime.4.3.0.nupkg.sha512", + "System.Runtime.WindowsRuntime.nuspec", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/portable-win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "ref/netcore50/System.Runtime.WindowsRuntime.dll", + "ref/netcore50/System.Runtime.WindowsRuntime.xml", + "ref/netcore50/de/System.Runtime.WindowsRuntime.xml", + "ref/netcore50/es/System.Runtime.WindowsRuntime.xml", + "ref/netcore50/fr/System.Runtime.WindowsRuntime.xml", + "ref/netcore50/it/System.Runtime.WindowsRuntime.xml", + "ref/netcore50/ja/System.Runtime.WindowsRuntime.xml", + "ref/netcore50/ko/System.Runtime.WindowsRuntime.xml", + "ref/netcore50/ru/System.Runtime.WindowsRuntime.xml", + "ref/netcore50/zh-hans/System.Runtime.WindowsRuntime.xml", + "ref/netcore50/zh-hant/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.0/System.Runtime.WindowsRuntime.dll", + "ref/netstandard1.0/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.0/de/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.0/es/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.0/fr/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.0/it/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.0/ja/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.0/ko/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.0/ru/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.0/zh-hans/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.0/zh-hant/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.2/System.Runtime.WindowsRuntime.dll", + "ref/netstandard1.2/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.2/de/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.2/es/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.2/fr/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.2/it/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.2/ja/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.2/ko/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.2/ru/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.2/zh-hans/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.2/zh-hant/System.Runtime.WindowsRuntime.xml", + "ref/portable-win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "runtimes/win8-aot/lib/netcore50/System.Runtime.WindowsRuntime.dll", + "runtimes/win8/lib/netstandard1.3/System.Runtime.WindowsRuntime.dll" + ] + }, "System.Text.Encoding/4.3.0": { "sha512": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", "type": "package", @@ -2859,7 +2923,7 @@ "NETStandard.Library >= 1.6.0", "PInvoke.Windows.Core >= 0.5.97", "Splat >= 2.0.0", - "System.Runtime.Extensions >= 4.3.0", + "System.Runtime.WindowsRuntime >= 4.3.0", "System.Xml.ReaderWriter >= 4.3.0", "System.Xml.XmlSerializer >= 4.3.0", "Validation >= 2.4.15"