Пример #1
0
        public LoginData(CipherResponse cipher, string userId)
        {
            if (cipher.Type != Enums.CipherType.Login)
            {
                throw new ArgumentException(nameof(cipher.Type));
            }

            var data = cipher.Data.ToObject <LoginDataModel>();

            Id                  = cipher.Id;
            FolderId            = cipher.FolderId;
            UserId              = userId;
            OrganizationId      = cipher.OrganizationId;
            Name                = data.Name;
            Uri                 = data.Uri;
            Username            = data.Username;
            Password            = data.Password;
            Notes               = data.Notes;
            Totp                = data.Totp;
            Favorite            = cipher.Favorite;
            Edit                = cipher.Edit;
            OrganizationUseTotp = cipher.OrganizationUseTotp;
            RevisionDateTime    = cipher.RevisionDate;

            if (data.Fields != null && data.Fields.Any())
            {
                try
                {
                    Fields = JsonConvert.SerializeObject(data.Fields);
                }
                catch (JsonSerializationException) { }
            }
        }
Пример #2
0
        public IdentityDataModel(CipherResponse response)
            : base(response)
        {
            if (response?.Identity == null)
            {
                throw new ArgumentNullException(nameof(response.Card));
            }

            Title          = response.Identity.Title;
            FirstName      = response.Identity.FirstName;
            MiddleName     = response.Identity.MiddleName;
            LastName       = response.Identity.LastName;
            Address1       = response.Identity.Address1;
            Address2       = response.Identity.Address2;
            Address3       = response.Identity.Address3;
            City           = response.Identity.City;
            State          = response.Identity.State;
            PostalCode     = response.Identity.PostalCode;
            Country        = response.Identity.Country;
            Company        = response.Identity.Company;
            Email          = response.Identity.Email;
            Phone          = response.Identity.Phone;
            SSN            = response.Identity.SSN;
            Username       = response.Identity.Username;
            PassportNumber = response.Identity.PassportNumber;
            LicenseNumber  = response.Identity.LicenseNumber;
        }
 public CipherDataModel(CipherResponse cipher)
 {
     Name            = cipher.Name;
     Notes           = cipher.Notes;
     Fields          = cipher.Fields?.Select(f => new FieldDataModel(f));
     PasswordHistory = cipher.PasswordHistory?.Select(h => new PasswordHistoryDataModel(h));
 }
Пример #4
0
        public CipherData(CipherResponse cipher, string userId)
        {
            Id                  = cipher.Id;
            FolderId            = cipher.FolderId;
            UserId              = userId;
            OrganizationId      = cipher.OrganizationId;
            Favorite            = cipher.Favorite;
            Edit                = cipher.Edit;
            OrganizationUseTotp = cipher.OrganizationUseTotp;
            RevisionDateTime    = cipher.RevisionDate;
            Type                = cipher.Type;
            Data                = JsonConvert.SerializeObject(cipher.Data);

            CipherDataModel cipherData = null;

            switch (cipher.Type)
            {
            case CipherType.Login:
                var loginData = cipher.Data.ToObject <LoginDataModel>();
                cipherData = loginData;

                Uri      = loginData.Uri;
                Username = loginData.Username;
                Password = loginData.Password;
                Totp     = loginData.Totp;
                break;

            case CipherType.SecureNote:
                var noteData = cipher.Data.ToObject <SecureNoteDataModel>();
                cipherData = noteData;

                SecureNoteType = noteData.Type;
                break;

            case CipherType.Card:
                var cardData = cipher.Data.ToObject <CardDataModel>();
                cipherData = cardData;
                break;

            case CipherType.Identity:
                var idData = cipher.Data.ToObject <IdentityDataModel>();
                cipherData = idData;
                break;

            default:
                throw new ArgumentException(nameof(cipher.Type));
            }

            Name  = cipherData.Name;
            Notes = cipherData.Notes;

            if (cipherData.Fields != null && cipherData.Fields.Any())
            {
                try
                {
                    Fields = JsonConvert.SerializeObject(cipherData.Fields);
                }
                catch (JsonSerializationException) { }
            }
        }
Пример #5
0
        public CipherData(CipherResponse response, string userId = null, HashSet <string> collectionIds = null)
        {
            Id                  = response.Id;
            OrganizationId      = response.OrganizationId;
            FolderId            = response.FolderId;
            UserId              = userId;
            Edit                = response.Edit;
            ViewPassword        = response.ViewPassword;
            OrganizationUseTotp = response.OrganizationUseTotp;
            Favorite            = response.Favorite;
            RevisionDate        = response.RevisionDate;
            Type                = response.Type;
            Name                = response.Name;
            Notes               = response.Notes;
            CollectionIds       = collectionIds?.ToList() ?? response.CollectionIds;
            Reprompt            = response.Reprompt;

            try // Added to address Issue (https://github.com/bitwarden/mobile/issues/1006)
            {
                switch (Type)
                {
                case Enums.CipherType.Login:
                    Login = new LoginData(response.Login);
                    break;

                case Enums.CipherType.SecureNote:
                    SecureNote = new SecureNoteData(response.SecureNote);
                    break;

                case Enums.CipherType.Card:
                    Card = new CardData(response.Card);
                    break;

                case Enums.CipherType.Identity:
                    Identity = new IdentityData(response.Identity);
                    break;

                default:
                    break;
                }
            }
            catch
            {
                System.Diagnostics.Trace.WriteLine(new StringBuilder()
                                                   .Append("BitWarden CipherData constructor failed to initialize CyperType '")
                                                   .Append(Type)
                                                   .Append("'; id = {")
                                                   .Append(Id)
                                                   .AppendLine("}")
                                                   .ToString(), "BitWarden CipherData constructor");
            }

            Fields          = response.Fields?.Select(f => new FieldData(f)).ToList();
            Attachments     = response.Attachments?.Select(a => new AttachmentData(a)).ToList();
            PasswordHistory = response.PasswordHistory?.Select(ph => new PasswordHistoryData(ph)).ToList();
            DeletedDate     = response.DeletedDate;
        }
        public SecureNoteDataModel(CipherResponse response)
            : base(response)
        {
            if (response?.SecureNote == null)
            {
                throw new ArgumentNullException(nameof(response.SecureNote));
            }

            Type = response.SecureNote.Type;
        }
Пример #7
0
        public CipherData(CipherResponse cipher, string userId)
        {
            Id                  = cipher.Id;
            FolderId            = cipher.FolderId;
            UserId              = userId;
            OrganizationId      = cipher.OrganizationId;
            Favorite            = cipher.Favorite;
            Edit                = cipher.Edit;
            OrganizationUseTotp = cipher.OrganizationUseTotp;
            RevisionDateTime    = cipher.RevisionDate;
            Type                = cipher.Type;
            Data                = null;

            switch (cipher.Type)
            {
            case CipherType.Login:
                var loginObj = JObject.FromObject(new LoginDataModel(cipher),
                                                  new JsonSerializer {
                    NullValueHandling = NullValueHandling.Ignore
                });
                loginObj[nameof(LoginDataModel.Uri)]?.Parent?.Remove();
                Login = loginObj.ToString(Formatting.None);
                break;

            case CipherType.SecureNote:
                var noteData = new SecureNoteDataModel(cipher);
                SecureNote = JsonConvert.SerializeObject(noteData);
                break;

            case CipherType.Card:
                var cardData = new CardDataModel(cipher);
                Card = JsonConvert.SerializeObject(cardData);
                break;

            case CipherType.Identity:
                var idData = new IdentityDataModel(cipher);
                Identity = JsonConvert.SerializeObject(idData);
                break;

            default:
                throw new ArgumentException(nameof(cipher.Type));
            }

            Name  = cipher.Name;
            Notes = cipher.Notes;

            if (cipher.Fields != null && cipher.Fields.Any())
            {
                try
                {
                    Fields = JsonConvert.SerializeObject(cipher.Fields.Select(f => new FieldDataModel(f)));
                }
                catch (JsonSerializationException) { }
            }
        }
Пример #8
0
        public LoginDataModel(CipherResponse response)
            : base(response)
        {
            if (response?.Login == null)
            {
                throw new ArgumentNullException(nameof(response.Login));
            }

            Uris     = response.Login.Uris?.Where(u => u != null).Select(u => new LoginUriDataModel(u));
            Username = response.Login.Username;
            Password = response.Login.Password;
            Totp     = response.Login.Totp;
        }
Пример #9
0
        public FolderData(CipherResponse cipher, string userId)
        {
            if (cipher.Type != Enums.CipherType.Folder)
            {
                throw new ArgumentException(nameof(cipher.Type));
            }

            var data = cipher.Data.ToObject <SiteDataModel>();

            Id               = cipher.Id;
            UserId           = userId;
            Name             = data.Name;
            RevisionDateTime = cipher.RevisionDate;
        }
Пример #10
0
        public CardDataModel(CipherResponse response)
            : base(response)
        {
            if (response?.Card == null)
            {
                throw new ArgumentNullException(nameof(response.Card));
            }

            CardholderName = response.Card.CardholderName;
            Brand          = response.Card.Brand;
            Number         = response.Card.Number;
            ExpMonth       = response.Card.ExpMonth;
            ExpYear        = response.Card.ExpYear;
            Code           = response.Card.Code;
        }
Пример #11
0
        public CipherData(CipherResponse response, string userId = null, HashSet <string> collectionIds = null)
        {
            Id                  = response.Id;
            OrganizationId      = response.OrganizationId;
            FolderId            = response.FolderId;
            UserId              = userId;
            Edit                = response.Edit;
            ViewPassword        = response.ViewPassword;
            OrganizationUseTotp = response.OrganizationUseTotp;
            Favorite            = response.Favorite;
            RevisionDate        = response.RevisionDate;
            Type                = response.Type;
            Name                = response.Name;
            Notes               = response.Notes;
            CollectionIds       = collectionIds?.ToList() ?? response.CollectionIds;

            switch (Type)
            {
            case Enums.CipherType.Login:
                Login = new LoginData(response.Login);
                break;

            case Enums.CipherType.SecureNote:
                SecureNote = new SecureNoteData(response.SecureNote);
                break;

            case Enums.CipherType.Card:
                Card = new CardData(response.Card);
                break;

            case Enums.CipherType.Identity:
                Identity = new IdentityData(response.Identity);
                break;

            default:
                break;
            }

            Fields          = response.Fields?.Select(f => new FieldData(f)).ToList();
            Attachments     = response.Attachments?.Select(a => new AttachmentData(a)).ToList();
            PasswordHistory = response.PasswordHistory?.Select(ph => new PasswordHistoryData(ph)).ToList();
            DeletedDate     = response.DeletedDate;
        }
Пример #12
0
        public LoginData(CipherResponse cipher, string userId)
        {
            if (cipher.Type != Enums.CipherType.Login)
            {
                throw new ArgumentException(nameof(cipher.Type));
            }

            var data = cipher.Data.ToObject <LoginDataModel>();

            Id               = cipher.Id;
            FolderId         = cipher.FolderId;
            UserId           = userId;
            Name             = data.Name;
            Uri              = data.Uri;
            Username         = data.Username;
            Password         = data.Password;
            Notes            = data.Notes;
            Favorite         = cipher.Favorite;
            RevisionDateTime = cipher.RevisionDate;
        }
Пример #13
0
        public async Task SaveWithServerAsync_FallsBackToLegacyFormData(HttpStatusCode statusCode,
                                                                        SutProvider <CipherService> sutProvider, Cipher cipher, string fileName, EncByteArray data,
                                                                        CipherResponse response, EncString encKey)
        {
            sutProvider.GetDependency <ICryptoService>().EncryptAsync(fileName, Arg.Any <SymmetricCryptoKey>())
            .Returns(new EncString(fileName));
            sutProvider.GetDependency <ICryptoService>().EncryptToBytesAsync(data.Buffer, Arg.Any <SymmetricCryptoKey>())
            .Returns(data);
            sutProvider.GetDependency <ICryptoService>().MakeEncKeyAsync(Arg.Any <SymmetricCryptoKey>()).Returns(new Tuple <SymmetricCryptoKey, EncString>(null, encKey));
            sutProvider.GetDependency <IApiService>().PostCipherAttachmentAsync(cipher.Id, Arg.Any <AttachmentRequest>())
            .Throws(new ApiException(new ErrorResponse {
                StatusCode = statusCode
            }));
            sutProvider.GetDependency <IApiService>().PostCipherAttachmentLegacyAsync(cipher.Id, Arg.Any <MultipartFormDataContent>())
            .Returns(response);

            await sutProvider.Sut.SaveAttachmentRawWithServerAsync(cipher, fileName, data.Buffer);

            await sutProvider.GetDependency <IApiService>().Received(1)
            .PostCipherAttachmentLegacyAsync(cipher.Id, Arg.Any <MultipartFormDataContent>());
        }
        public CipherResponse EncryptWord(CipherRequest request)
        {
            var response = new CipherResponse();

            response.UserInput     = request.UserInput;
            response.ModifiedInput = response.UserInput.ToUpper();
            var temp = new StringBuilder();

            for (int i = 0; i < response.ModifiedInput.Length; i++)
            {
                char c = response.ModifiedInput[i];
                if (response.Caesar.ContainsKey(c))
                {
                    temp.Append(response.Caesar[c]);
                }


                response.Output = temp.ToString();
            }

            return(response);
        }
Пример #15
0
 public CipherDataModel(CipherResponse cipher)
 {
     Name   = cipher.Name;
     Notes  = cipher.Notes;
     Fields = cipher.Fields?.Select(f => new FieldDataModel(f));
 }