public void ExtractEncryptedAccounts_returns_accounts_and_caches_keys() { var blob = "c2FsdHNhbHRzYWx0c2FsdHNhbHRzYWx0c2FsdHNhbHRLV0MzAxW0NQiQrbiEe4yl26Ga" + "gNu1edW/lK/INVrdUkE1+nmpiTZHlNkKKSK5NXbWGuztnk3256De1/2GtaUXjTKOMYvh" + "eV3TJJZWHKHEbSBHJ63OXH/svTCBm1yncDDcqWicVOjQwzP5C4oTmRB9jCAE9A7kx8bZ" + "jz2VQaAAxbKWwCFCSrzFXB22R6DwH+rpnKshrcHiflI8Fy2o000mU1XRhk1yFNqYZkiJ" + "BH0N3aJR7AkqRRALhUaLsMgYWsCxPqD9dP0dsp7A03htUKllVMfjfRexwJfJGi2ezSUv" + "egGVt3k="; var cache = new Parse.DerivedKeyCache(); var accounts = Parse.ExtractEncryptedAccounts(blob.Decode64(), Password, cache); Assert.Equal(2, accounts.Length); Assert.Single(cache.Keys); }
public void ComputeEncryptionKey_derives_key_and_stores_it_in_cache() { var cache = new Parse.DerivedKeyCache(); var key = Parse.ComputeEncryptionKey( Password.ToBytes(), Salt32, new Parse.CryptoConfig( new Parse.Pbkdf2Config(Parse.Pbkdf2Config.HashMethodType.Sha1, 10204, 32), Parse.CryptoConfig.CipherModeType.Cbc, Parse.CryptoConfig.IvGenerationModeType.EvpByteToKey, Parse.CryptoConfig.SignatureModeType.None), cache); Assert.Equal("OAIU9FREAugcAkNtoeoUithzi2qXJQc6Gfj5WgPD0mY=".Decode64(), key); Assert.Single(cache.Keys); Assert.Contains( "pbkdf2-Sha1-10204-70617373776f7264-73616c7473616c7473616c7473616c7473616c7473616c7473616c7473616c74", cache.Keys); }