/// <summary> /// Gets the credentials. /// </summary> /// <param name="pair">The pair.</param> /// <returns></returns> public static DecryptedCredentials GetCredentials(EncryptedCredentials pair) { var user = Rijndael.Instance.DecryptFromBase64(pair.Username); var pass = Rijndael.Instance.DecryptFromBase64(pair.Password); return(new DecryptedCredentials(pair.Name, user, pass)); }
/// <inheritdoc /> public Credentials DecryptCredentials( EncryptedCredentials encryptedCredentials, RSA key ) { if (encryptedCredentials is null) { throw new ArgumentNullException(nameof(encryptedCredentials)); } if (key is null) { throw new ArgumentNullException(nameof(key)); } if (encryptedCredentials.Data is null) { throw new ArgumentNullException(nameof(encryptedCredentials.Data)); } if (encryptedCredentials.Secret is null) { throw new ArgumentNullException(nameof(encryptedCredentials.Secret)); } if (encryptedCredentials.Hash is null) { throw new ArgumentNullException(nameof(encryptedCredentials.Hash)); } byte[] data = Convert.FromBase64String(encryptedCredentials.Data); if (data.Length == 0) { throw new ArgumentException("Data is empty.", nameof(encryptedCredentials.Data)); } if (data.Length % 16 != 0) { throw new PassportDataDecryptionException ($"Data length is not divisible by 16: {data.Length}."); } byte[] encryptedSecret = Convert.FromBase64String(encryptedCredentials.Secret); byte[] hash = Convert.FromBase64String(encryptedCredentials.Hash); if (hash.Length != 32) { throw new PassportDataDecryptionException($"Hash length is not 32: {hash.Length}."); } byte[] secret = key.Decrypt(encryptedSecret, RSAEncryptionPadding.OaepSHA1); byte[] decryptedData = DecryptDataBytes(data, secret, hash); string json = Encoding.UTF8.GetString(decryptedData); Credentials credentials = JsonConvert.DeserializeObject <Credentials>(json); return(credentials); }
public void Should_Throw_If_Invalid_Credentials_Hash(string hash) { EncryptedCredentials encryptedCredentials = new EncryptedCredentials { Data = "dGV4dCBvZiAxNiBjaGFycw==", Secret = "", Hash = hash, }; IDecrypter decrypter = new Decrypter(); Assert.ThrowsAny <FormatException>(() => decrypter.DecryptCredentials(encryptedCredentials, RSA.Create()) ); }
public void Should_Throw_If_Null_Credentials_Secret() { EncryptedCredentials encryptedCredentials = new EncryptedCredentials { Data = "", }; IDecrypter decrypter = new Decrypter(); Exception exception = Assert.ThrowsAny <Exception>(() => decrypter.DecryptCredentials(encryptedCredentials, RSA.Create()) ); Assert.Matches(@"^Value cannot be null\.\s+Parameter name: Secret$", exception.Message); Assert.IsType <ArgumentNullException>(exception); }
public void Should_Decrypt_Credentials_Personal_Details() { EncryptedCredentials encryptedCredentials = new EncryptedCredentials { Data = "tHcn5IEhx7REdkb/C9BTEJW7Ftob4UFzl/vWQXADBqfTCG05OvvgMn6GYZQpi8qW92tREsju35adGvzX6+lJrcSZYPr3" + "sRbok+2lBIBs/tIeGWl39HpTTHhQsMTCILnOsuqpJzYAq0TvbTcaq2rkD8qTG30fxbVNWpQbRJCvFkLH3ueuJfMHs/ig" + "P85QsO1sjz4915ZOPbsh9VR3x3dS+pKM+LCB4sQs2/o8Qy6jES1ZIHckTRNHNBfKeMnzlOPbTZHjJvAJ4B0P8sCpbzKQ" + "M/buRZhpLRsv5Pe9U61UNALSg/Vq98st41WKH35CaLME+dwHvO4a+xCO78GnySjNjCPsCjCqEWHEXtUtbodZsMw4sdje" + "rwfC3LBpPJygjn8pAwyt2LjqRSjtwxqW86AdkkFpAW4qJJ2Uy70onxtY2M97yYXRkizIt6y/sLvkh2mRWW917lUhdTf/" + "M3YaTK6kiQXhWPTX/78U8AtXvhiw07iMRxVwRmHKyAVyI334C3ZKiY0rscRAVwYlrCHFtVcxMQ==", Hash = "QN3IRzvFR9k/yvDfi9ChnQtIHo8No2SZm3iGwwj4NVk=", Secret = "Sr/17/6JrtKCP7X/e9c7XIMAdigeI1QO6u43prhnS9wuNralsZhvPnKIc3qL7A2jcgML273TM2blHywbzt6cAqLxjC" + "ntyjSay0FyMnctarY3soCkCZsUynMsPC9g39CTVBCUXbZZ6tWZ8mgQ9WDXeMVTRaLXLBr9EZdICauFGsln/LaopfU9" + "CvdYXQ0PcdhCFNbisuPwXOqd5jUu0x49+sPAc4V68TsnWRUC3CYEhEfqkRmtomM8UV+/JyHk0zYdiRxarGzAXfgdXJ" + "wjfjXARhERA/hZRYKH+w9vsPpZWdqQg7zSi5EU8Fr2Cs3IzAes+txLUekFprWsKff7j21KXg==" }; IDecrypter decrypter = new Decrypter(); Credentials credentials = decrypter.DecryptCredentials(encryptedCredentials, EncryptionKey.RsaPrivateKey); Assert.NotNull(credentials); Assert.Equal("TEST", credentials.Nonce); Assert.NotNull(credentials.SecureData); Assert.NotNull(credentials.SecureData.PersonalDetails); Assert.NotNull(credentials.SecureData.PersonalDetails.Data); Assert.Equal( "v9Hx0oaQHLxyGuZdiYmszC3gTGyfYnc57zWLg+WaMus=", credentials.SecureData.PersonalDetails.Data.Secret ); Assert.Equal( "IeyXbEWBTXXQYG+O0vv7munuGs0H0S4Jr7jzYV1ltCk=", credentials.SecureData.PersonalDetails.Data.DataHash ); Assert.Null(credentials.SecureData.DriverLicense); Assert.Null(credentials.SecureData.Address); Assert.Null(credentials.SecureData.Passport); Assert.Null(credentials.SecureData.BankStatement); Assert.Null(credentials.SecureData.IdentityCard); Assert.Null(credentials.SecureData.InternalPassport); Assert.Null(credentials.SecureData.PassportRegistration); Assert.Null(credentials.SecureData.RentalAgreement); Assert.Null(credentials.SecureData.TemporaryRegistration); Assert.Null(credentials.SecureData.UtilityBill); }
public void Should_Throw_If_Invalid_Credentials_Hash_Length(string hash) { EncryptedCredentials encryptedCredentials = new EncryptedCredentials { Data = "dGV4dCBvZiAxNiBjaGFycw==", Secret = "", Hash = hash, }; IDecrypter decrypter = new Decrypter(); Exception exception = Assert.ThrowsAny <Exception>(() => decrypter.DecryptCredentials(encryptedCredentials, RSA.Create()) ); Assert.Matches(@"^Hash length is not 32: \d+\.$", exception.Message); Assert.IsType <PassportDataDecryptionException>(exception); }
public void Should_Throw_If_Invalid_Credentials_Data_String_Length() { EncryptedCredentials encryptedCredentials = new EncryptedCredentials { Data = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", Secret = "", Hash = "", }; IDecrypter decrypter = new Decrypter(); Exception exception = Assert.ThrowsAny <Exception>(() => decrypter.DecryptCredentials(encryptedCredentials, RSA.Create()) ); Assert.Equal("Data length is not divisible by 16: 31.", exception.Message); Assert.IsType <PassportDataDecryptionException>(exception); }
public void Should_Throw_If_Empty_Credentials_Data_String() { EncryptedCredentials encryptedCredentials = new EncryptedCredentials { Data = "", Secret = "", Hash = "", }; IDecrypter decrypter = new Decrypter(); Exception exception = Assert.ThrowsAny <Exception>(() => decrypter.DecryptCredentials(encryptedCredentials, RSA.Create()) ); Assert.Matches(@"^Data is empty\.\s+Parameter name: Data$", exception.Message); Assert.IsType <ArgumentException>(exception); }
public void Should_Throw_Decrypting_Unencrypted_Credentials_Data_Invalid_Length() { EncryptedCredentials encryptedCredentials = new EncryptedCredentials { Data = "dGV4dCBvZiAxNiBjaGFycw==", // unencrypted data Hash = "QN3IRzvFR9k/yvDfi9ChnQtIHo8No2SZm3iGwwj4NVk=", Secret = "Sr/17/6JrtKCP7X/e9c7XIMAdigeI1QO6u43prhnS9wuNralsZhvPnKIc3qL7A2jcgML273TM2blHywbzt6cAqLxjC" + "ntyjSay0FyMnctarY3soCkCZsUynMsPC9g39CTVBCUXbZZ6tWZ8mgQ9WDXeMVTRaLXLBr9EZdICauFGsln/LaopfU9" + "CvdYXQ0PcdhCFNbisuPwXOqd5jUu0x49+sPAc4V68TsnWRUC3CYEhEfqkRmtomM8UV+/JyHk0zYdiRxarGzAXfgdXJ" + "wjfjXARhERA/hZRYKH+w9vsPpZWdqQg7zSi5EU8Fr2Cs3IzAes+txLUekFprWsKff7j21KXg==" }; IDecrypter decrypter = new Decrypter(); Exception exception = Assert.ThrowsAny <Exception>(() => decrypter.DecryptCredentials(encryptedCredentials, EncryptionKey.RsaPrivateKey) ); Assert.Matches(@"^Data hash mismatch at position \d+\.$", exception.Message); Assert.IsType <PassportDataDecryptionException>(exception); }
/// <summary> /// Adds the credential. /// </summary> /// <param name="name">The name.</param> /// <param name="username">The username.</param> /// <param name="password">The password.</param> /// <exception cref="System.Exception">[CredentialManager] Can't add a credential without valid values!</exception> public static void AddCredentials(string name, string username, string password) { if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password)) { throw new Exception("[CredentialManager] Can't add a credential without valid values!"); } username = Rijndael.Instance.EncryptToBase64(username); password = Rijndael.Instance.EncryptToBase64(password); var newEntry = new EncryptedCredentials(name, username, password); Credentials.Instance.Entries.Add(newEntry); Entries.Add(newEntry); Logging.WriteDiagnostic("[CredentialManager] Added credentials for user {0} with name {1}. Reloading the CredentialManager.", username, name); Credentials.Instance.Save(); Reload("Credentials added"); }
public async Task <LieferantCredentials> Decrypt(EncryptedCredentials credentials) { var key = await keyProvider.GetKey(); var mailbytes = Convert.FromBase64String(credentials.L_MAIL); using (var aes = Aes.Create()) { var iv = new byte[aes.IV.Length]; Buffer.BlockCopy(mailbytes, 0, iv, 0, iv.Length); var maildec = new byte[mailbytes.Length - iv.Length]; Buffer.BlockCopy(mailbytes, iv.Length, maildec, 0, maildec.Length); using (var decryptor = aes.CreateDecryptor(key, iv)) { return(new LieferantCredentials() { L_MAIL = await Decrypt(decryptor, maildec), L_PASSWORD = await Decrypt(decryptor, Convert.FromBase64String(credentials.L_PASSWORD)) }); } } }
public void Should_Throw_If_Decrypt_Credentials_Wrong_Key() { EncryptedCredentials encryptedCredentials = new EncryptedCredentials { Data = "tHcn5IEhx7REdkb/C9BTEJW7Ftob4UFzl/vWQXADBqfTCG05OvvgMn6GYZQpi8qW92tREsju35adGvzX6+lJrcSZYPr3" + "sRbok+2lBIBs/tIeGWl39HpTTHhQsMTCILnOsuqpJzYAq0TvbTcaq2rkD8qTG30fxbVNWpQbRJCvFkLH3ueuJfMHs/ig" + "P85QsO1sjz4915ZOPbsh9VR3x3dS+pKM+LCB4sQs2/o8Qy6jES1ZIHckTRNHNBfKeMnzlOPbTZHjJvAJ4B0P8sCpbzKQ" + "M/buRZhpLRsv5Pe9U61UNALSg/Vq98st41WKH35CaLME+dwHvO4a+xCO78GnySjNjCPsCjCqEWHEXtUtbodZsMw4sdje" + "rwfC3LBpPJygjn8pAwyt2LjqRSjtwxqW86AdkkFpAW4qJJ2Uy70onxtY2M97yYXRkizIt6y/sLvkh2mRWW917lUhdTf/" + "M3YaTK6kiQXhWPTX/78U8AtXvhiw07iMRxVwRmHKyAVyI334C3ZKiY0rscRAVwYlrCHFtVcxMQ==", Hash = "QN3IRzvFR9k/yvDfi9ChnQtIHo8No2SZm3iGwwj4NVk=", Secret = "Sr/17/6JrtKCP7X/e9c7XIMAdigeI1QO6u43prhnS9wuNralsZhvPnKIc3qL7A2jcgML273TM2blHywbzt6cAqLxjC" + "ntyjSay0FyMnctarY3soCkCZsUynMsPC9g39CTVBCUXbZZ6tWZ8mgQ9WDXeMVTRaLXLBr9EZdICauFGsln/LaopfU9" + "CvdYXQ0PcdhCFNbisuPwXOqd5jUu0x49+sPAc4V68TsnWRUC3CYEhEfqkRmtomM8UV+/JyHk0zYdiRxarGzAXfgdXJ" + "wjfjXARhERA/hZRYKH+w9vsPpZWdqQg7zSi5EU8Fr2Cs3IzAes+txLUekFprWsKff7j21KXg==" }; IDecrypter decrypter = new Decrypter(); Assert.ThrowsAny <CryptographicException>(() => decrypter.DecryptCredentials(encryptedCredentials, RSA.Create()) ); }
public void Should_Decrypt_Credentials_Driver_License() { EncryptedCredentials encryptedCredentials = new EncryptedCredentials { Data = "nh/lJN9e0kATdoWVU01ellh1Hdl4IkqkJIxtIUMwi37wx5cTsZC0d2NFOs6W2WYaGkOzvxyvAEuIK5UlVS05Wyjr7cMI" + "mY7hcO5v8FZyIXCs1PGnOEBr+U3kB7adWoAIKyfcBlQlTnqlRJaUXoqTZuErqpcI/XBAZWMSj09oQ4vxB7ReQxQxLLTw" + "3PHsfl6Oij52tvQrjtfMQSChyEB2BS29xmykn/cx3Bx8866x2HSlD47MU8NxQR0rxwesXzqS6sz7IJh/iRbJVpCeSRxg" + "Gtczrks7qT33GUlGd7uLOqv/vss5Yhn08Vo3nwemew3/JPoJ0ZORYa5+CR4L/SZqtGNIdhqXLWhvGyPa6VW3VrS27juz" + "HarGQDiEBBO1+TzQ/uPyEmLcurcJ1d8uOnD61lIkyVzd6E0IGfRw/VPv0H0BJpKbh81hD012ESl4CxKLnnWBbwkqIiIm" + "CLmMZMp8bxlQn4oV1MXhSqVEODUVyThKq6+kAYBMX6Nse/w0xt0UJxwfKojYcWnBR3SSSBAr3TZOjguZ8DPIixVGDgKS" + "ArmgEdYx71XYrfCjM97iDJ/3BJENTxHX7zfbCXBrt41HhCsZ09MaWFlWUUivMDelCsxY7a/yiODkh1rFdTjzCm11s8kv" + "p9wEXU8EXSqNJ0BoC+AbIgdp4n3r0hjbPkPvN+0dAuBXHPpCfMfJRSadscAnWJG0NTnfIbE9GLcOCIUt90d0Fx1yoCNE" + "mMFUiifofOzpr5nvirAU6cHNESRh/cCJTnMF21YuE6wPR0TK3f9326sG4xmYE65gya9xVNZaA7TSME9w7M9gADDERcAU" + "PqUlQVFejWdT/VfTDcFCgpcGNnF4MSP8dWMmOWBYQOJU9WgK1xzftrL30et8w/OAFFsYx3eOVPnnby0KVeEZFj4AI2BQ" + "u46JBaKjE0+gTU+7KC49icXzleVniMSLF+5jUO964ZGEOuiubmEmc+Ncxvs5C2+c5zcptGq75JBd6jHxMNdLCxUa5eub" + "ShysT+1VSxOepemjvHKIkxkdFMtr3r0rs0ilRBw4tbspoVcPZ1/abb/KD99qYqIse8H37OmWm2LcQnknZvi8TsFNAPaW" + "4+2+Ko2E1sfMrvB3+EJMGyUhqkvvC5XRYvK7kXr3xrxX48w9", Hash = "y8fTLZW7Gvf1c25tQY/bMjzbnGpnfGHPKnEC9Vk39Us=", Secret = "J4j2cRBWuNLRc6yXsCL8RgzKSDZAlS27uFqFw3pMs+w3ScHDLcQgk/6+QidKSAzX0EccS6rbZ0UTDoSEptvdUT61A4" + "hqMG61kbczf0UAopVQAeqlTkbZfgiUUXj5hpAKJI2Z/o78UWzRH6hoFhqPN1T+zs4FAhBEbv6nF1K2Rav8SOmE5OXa" + "7B4a31FhH/1b47uAT1AxskzJZ6LjY6UrgkHU4/em413L0Boyl/nh1PNmgoTFCd3S+CnujpyZW67rBuNodFzJAEzXTe" + "8M4bm/diGXNjht+mq0vB8dnwkGcNKFNVv6wWqvNWY8AZdJDdZChW+N4weATQGUAAgNQax1Tw==" }; IDecrypter decrypter = new Decrypter(); Credentials credentials = decrypter.DecryptCredentials(encryptedCredentials, EncryptionKey.RsaPrivateKey); Assert.NotNull(credentials); Assert.Equal("TEST", credentials.Nonce); Assert.NotNull(credentials.SecureData); Assert.NotNull(credentials.SecureData.DriverLicense); Assert.NotNull(credentials.SecureData.DriverLicense.Data); Assert.Equal( "OUbagqviVbzbJZugFdTZDU4Yh6cPTLC9sWuyGOGKRGw=", credentials.SecureData.DriverLicense.Data.Secret ); Assert.Equal( "v1Kxeb2E6ZAdnfsIRy7C2yas3ssTw2qP4274QCRgHPA=", credentials.SecureData.DriverLicense.Data.DataHash ); Assert.NotNull(credentials.SecureData.DriverLicense.FrontSide); Assert.Equal( "a+jxJoKPEaz77VCjRvDVcYHfIO3+h+oI+ruZh+KkYa0=", credentials.SecureData.DriverLicense.FrontSide.Secret ); Assert.Equal( "THTjgv2FU7kff/29Vty/IcqKPmOGkL7F35fAzmkfZdI=", credentials.SecureData.DriverLicense.FrontSide.FileHash ); Assert.NotNull(credentials.SecureData.DriverLicense.ReverseSide); Assert.Equal( "pBkfn4122dJSJRyhYCP03d9/BBA3oRvWVtqPDx/qrXE=", credentials.SecureData.DriverLicense.ReverseSide.Secret ); Assert.Equal( "LgS7DLrLslUqgKftFPQ2GJj/T54Fti17qKTmd61kOmw=", credentials.SecureData.DriverLicense.ReverseSide.FileHash ); Assert.NotNull(credentials.SecureData.DriverLicense.Selfie); Assert.Equal( "vF7nut7clg/H/pEaTJigo4mQJ0s8B+HGCWKTWtOTIdo=", credentials.SecureData.DriverLicense.Selfie.Secret ); Assert.Equal( "v3q47iscI6TS94CMo7HGQUOxw28LIf82NJBkImzP57c=", credentials.SecureData.DriverLicense.Selfie.FileHash ); Assert.NotNull(credentials.SecureData.DriverLicense.Translation); FileCredentials translationCredentials = Assert.Single(credentials.SecureData.DriverLicense.Translation); Assert.NotNull(translationCredentials); Assert.Equal("y/la59gA5ZQe7A+2pOQH1Jp+LwurLw3HOvpjrvnWvoQ=", translationCredentials.Secret); Assert.Equal("sImKv6vUZhj7J10pwpJW7pSykUQJ2NpIetmGrTqbyy8=", translationCredentials.FileHash); Assert.Null(credentials.SecureData.DriverLicense.Files); Assert.Null(credentials.SecureData.PersonalDetails); Assert.Null(credentials.SecureData.Address); Assert.Null(credentials.SecureData.Passport); Assert.Null(credentials.SecureData.BankStatement); Assert.Null(credentials.SecureData.IdentityCard); Assert.Null(credentials.SecureData.InternalPassport); Assert.Null(credentials.SecureData.PassportRegistration); Assert.Null(credentials.SecureData.RentalAgreement); Assert.Null(credentials.SecureData.TemporaryRegistration); Assert.Null(credentials.SecureData.UtilityBill); }
public void Should_Decrypt_Credentials_ID_Card_Utility_Bill() { EncryptedCredentials encryptedCredentials = new EncryptedCredentials { Data = "8QKNwpmjaLNWOwK1Hqp0luB9/q/qSujDA5pGid1d7tyokaDn+6Y1RWFOGXBYoQMonm1kmIFmsw4iu8LjKMm4SZpH5bqS" + "PMiuD7j7O2FPE5A99A/TrDsNCNzeu+TVKNBWInSrks3wsmITMLT3WPvVaXFeolCXugJChwgY+cnmpUecitbqQxR/9Xpz" + "TQapyIuKWdhWhcL8fS3fdCyojw5b7BWAxOXba7zuWA+nsKX1V7v1puMDiNHwDuIJGPl3mbAJ24afqdlT4UJXaVw9XWVb" + "17c7g68qzaEqMaIb3OR1ydrE7vKpHHvFWSaEENoz2wv0PnDA0jyWMOnoL42HbVbu06XJoHuDSsFR2Rx2Hm7KZ1QM/OhD" + "bpEiEa2+jJ1At9jftNL3JwEpktLAso5UQJbqCPgAPhowD9l/yvzUa0MRU+2P+lzZPDUNsZiy0wi0QhJafaHOg0mmjlao" + "Nw37ebpPDCfF71NzoV4cetIv5YE2wauaN+20NQyPyUDlHKhpeEpsBVfpw0jGpannopX+aBwKEIANqlLto0HCY8/o81kf" + "kgBqxqT7vKfr7Xm1glYwWNa9gNws4NEQZ2mCvZb3CyCsZL1b0GWc3O66F140rus+fO6Kz5jlc7ASVamsBytwvhTwnW/T" + "llYTFRArNRRStlKDMxADKIdeTzVBWIRPxqEuI7TTT5r1gZBi7NW9to7nbMCoXjoLEdNOjtiRLgb5TyDjRXgdHbfKg428" + "Q+Lvu1BlxGwTJuPQAwBdgpQKBoAmypix8BIHZBz0SBXozOq+KgHXWKX5tu5zDu86x1BMgl/l4KuqAz8NtPEB6VISPExu" + "UxhDzWYqpI0yjFrKnE1aRX6I/gif4cQhkl+2eqUquYuxszTPrQJ4BhNsB7KR4x8WNcNm59xSjA1TxrNkJ6xcen7DNi0+" + "bApRcPWMB+0dYBPXD1cFKo9he0fp9EpPN1tdvZQNpa4/LzjpwlbuX5bUSWWnlBKT60gMqtbzbRWC96deOHB11jTmvfFP" + "+uTutO17Z3Gr9jIeC4cLjU5jcJh40KoNw3NHkIXx3ckixAvrGIsfkjDZrQa8ALqY8XXxgq7CaM8zYrbn9DU5rx5+MNa/" + "IjpSDEELD4pFiPYUfm1Z4lF/N3pWDkiKZ10z+iPDigdIbdHcI7TPCDmpcHEHxYHvNG6GA2KLnliA0g3zLs6q+K8WnaqL" + "Zq4XqknT/98NvfjBm4OSjnnVmXEEz60G+1I7oRrZ0A==", Hash = "TMUO1tE81hIOCgaqN7buhqG8SIZHjFfJrD93LNKL4Yg=", Secret = "QcOxuwd9OiB/9akjMzyY7wR4NcrpbhpjQuO9yOWhe0u34VVLraTr3gwkBNv0eKEZHoyulhhLr9tkSSO+BYZAp4engu" + "ed3eL11jqQkosJQBCPg8m1arIvNM+/E5Kw8dnF7dEx9v8t9QA11kSfAqdgnqCtSAq6GGGu5ixuYM1VMbk270qcm3F7" + "wrLN+9YQwUVkiai8WvdA7Q7BnywsbrekKOam95tiFeA7jE8Cf78D6gh47/uirO/KD3Hwl1PNo1f8ORgFf8EixSQuV5" + "Gh8HxEY1uE+yfOxksG5MiWOC5A1lNQuVcZqzVfbReRvs2M2tvX5KeeN+/xsIps+Xp+szWSaw==" }; IDecrypter decrypter = new Decrypter(); Credentials credentials = decrypter.DecryptCredentials(encryptedCredentials, EncryptionKey.RsaPrivateKey); Assert.NotNull(credentials); Assert.Equal("TEST", credentials.Nonce); Assert.NotNull(credentials.SecureData); Assert.NotNull(credentials.SecureData.IdentityCard); Assert.NotNull(credentials.SecureData.UtilityBill); Assert.NotNull(credentials.SecureData.IdentityCard.Data); Assert.Equal( "N4kE1ol2nNr072G9K3oX/+3rq6ma9zu6qIjc7XmWvZo=", credentials.SecureData.IdentityCard.Data.Secret ); Assert.Equal( "ygNgkwXnr0MrkVO4Ru5q6GmmFQ9TKDrJYwcQkkGBxLk=", credentials.SecureData.IdentityCard.Data.DataHash ); Assert.NotNull(credentials.SecureData.IdentityCard.FrontSide); Assert.Equal( "gK4F8D7+rvWIo+qNDdfxmq3KDTB6XQZIu4aXYPaNOf4=", credentials.SecureData.IdentityCard.FrontSide.Secret ); Assert.Equal( "lLAReRFMP3vWc6j2Cmr00/lKeEnDnHRK2enpNwbQ+Wk=", credentials.SecureData.IdentityCard.FrontSide.FileHash ); Assert.NotNull(credentials.SecureData.IdentityCard.ReverseSide); Assert.Equal( "7BRjRIe3N86vXWkc12dKRrDtpoG1d5IfgvLIvGyO/gU=", credentials.SecureData.IdentityCard.ReverseSide.Secret ); Assert.Equal( "/TLkaj2kgjL5/NmZiZMp1h0B1ZAUQeLLAcpZam6nW4w=", credentials.SecureData.IdentityCard.ReverseSide.FileHash ); Assert.NotNull(credentials.SecureData.IdentityCard.Selfie); Assert.Equal( "5pLOfRfSFvHofKI0v51EPSAUioipLLbHVBMZ+tPI/2k=", credentials.SecureData.IdentityCard.Selfie.Secret ); Assert.Equal( "vuyqgh8ZXt2p43vJ1u14qzcTfRUEuj4oSG4BO0JJle0=", credentials.SecureData.IdentityCard.Selfie.FileHash ); Assert.Null(credentials.SecureData.IdentityCard.Files); Assert.Null(credentials.SecureData.IdentityCard.Translation); Assert.NotNull(credentials.SecureData.UtilityBill.Files); FileCredentials billFileCredentials = Assert.Single(credentials.SecureData.UtilityBill.Files); Assert.NotNull(billFileCredentials); Assert.Equal("SVH5PR7vKkjRCL9NpNRqV5DX9jqDWbW8f5SdjqcrUS4=", billFileCredentials.Secret); Assert.Equal("Yek2IalAvcaOanrWzBRB2AU7kBdgCleELUWeL7dpkuM=", billFileCredentials.FileHash); Assert.NotNull(credentials.SecureData.UtilityBill.Translation); FileCredentials translationCredentials = Assert.Single(credentials.SecureData.UtilityBill.Translation); Assert.NotNull(translationCredentials); Assert.Equal("R7vXeQE6xv4vmBInReyIJM+HqWu+QzPjxSmlkuHScOg=", translationCredentials.Secret); Assert.Equal("beHjnDS8SRXQYDLUOKERJXhBTFIdFQWYvjNdteYRF+I=", translationCredentials.FileHash); Assert.Null(credentials.SecureData.UtilityBill.Data); Assert.Null(credentials.SecureData.UtilityBill.FrontSide); Assert.Null(credentials.SecureData.UtilityBill.ReverseSide); Assert.Null(credentials.SecureData.UtilityBill.FrontSide); Assert.Null(credentials.SecureData.PersonalDetails); Assert.Null(credentials.SecureData.DriverLicense); Assert.Null(credentials.SecureData.Address); Assert.Null(credentials.SecureData.Passport); Assert.Null(credentials.SecureData.BankStatement); Assert.Null(credentials.SecureData.InternalPassport); Assert.Null(credentials.SecureData.PassportRegistration); Assert.Null(credentials.SecureData.RentalAgreement); Assert.Null(credentials.SecureData.TemporaryRegistration); }
private ICredentials Decrypt(EncryptedCredentials encrypted) { return new Credentials { Key = Decrypt(encrypted.Key), User = Decrypt(encrypted.User), Password = Decrypt(encrypted.Password) }; }