diff --git a/src/Core/Models/Data/LoginUriData.cs b/src/Core/Models/Data/LoginUriData.cs index ff090efe7..a27344f43 100644 --- a/src/Core/Models/Data/LoginUriData.cs +++ b/src/Core/Models/Data/LoginUriData.cs @@ -19,4 +19,3 @@ namespace Bit.Core.Models.Data public string UriChecksum { get; set; } } } - \ No newline at end of file diff --git a/src/Core/Models/Domain/Login.cs b/src/Core/Models/Domain/Login.cs index c6362ac6c..e9df86924 100644 --- a/src/Core/Models/Domain/Login.cs +++ b/src/Core/Models/Domain/Login.cs @@ -45,7 +45,8 @@ namespace Bit.Core.Models.Domain foreach (var uri in Uris) { var loginUriView = await uri.DecryptAsync(orgId, key); - if (bypassValidation || (await uri.ValidateChecksum(loginUriView.Uri, orgId, key))) { + if (bypassValidation || (await uri.ValidateChecksum(loginUriView.Uri, orgId, key))) + { view.Uris.Add(loginUriView); } } diff --git a/src/Core/Models/Domain/LoginUri.cs b/src/Core/Models/Domain/LoginUri.cs index 118ca6b15..6c45af91e 100644 --- a/src/Core/Models/Domain/LoginUri.cs +++ b/src/Core/Models/Domain/LoginUri.cs @@ -20,6 +20,12 @@ namespace Bit.Core.Models.Domain public LoginUri(LoginUriData obj, bool alreadyEncrypted = false) { Match = obj.Match; + + if (obj.UriChecksum != null) + { + UriChecksum = new EncString(obj.UriChecksum); + } + BuildDomainModel(this, obj, _map, alreadyEncrypted); } @@ -41,6 +47,11 @@ namespace Bit.Core.Models.Domain public async Task ValidateChecksum(string clearTextUri, string orgId, SymmetricCryptoKey key) { + if (this.UriChecksum == null) + { + return false; + } + // HACK: I don't like resolving this here but I can't see a better way without // refactoring a lot of things. var cryptoService = ServiceContainer.Resolve(); diff --git a/src/Core/Models/Request/CipherRequest.cs b/src/Core/Models/Request/CipherRequest.cs index f0b44d402..ae48b83b5 100644 --- a/src/Core/Models/Request/CipherRequest.cs +++ b/src/Core/Models/Request/CipherRequest.cs @@ -27,7 +27,7 @@ namespace Bit.Core.Models.Request Login = new LoginApi { Uris = cipher.Login.Uris?.Select( - u => new LoginUriApi { Match = u.Match, Uri = u.Uri?.EncryptedString }).ToList(), + u => new LoginUriApi { Match = u.Match, Uri = u.Uri?.EncryptedString, UriChecksum = u.UriChecksum?.EncryptedString }).ToList(), Username = cipher.Login.Username?.EncryptedString, Password = cipher.Login.Password?.EncryptedString, PasswordRevisionDate = cipher.Login.PasswordRevisionDate, diff --git a/src/Core/Services/CryptoService.cs b/src/Core/Services/CryptoService.cs index 3007cecec..02c7542e0 100644 --- a/src/Core/Services/CryptoService.cs +++ b/src/Core/Services/CryptoService.cs @@ -1,4 +1,4 @@ - using System; +using System; using System.Collections.Generic; using System.Linq; using System.Numerics;