Example #1
0
        private void UpdateFolderKey(TreeNode node) {
            // alleen keys ophalen als het nog niet eerder is gedaan en het op een map op het rootniveau is.
            if (!node.CheckedForKeys && node.Path.Count(e => e == '/') == 1 && node.Path.Length > 1)
            {
                var explorer = new RemoteExplorer();
                AesKeyResponse response;

                if (explorer.GetAesKey(node.Path, out response))
                {
                    if (response != null && response.IV != null && response.Key != null)
                    {
                        var encryptedIV = Convert.FromBase64String(response.IV);
                        var encryptedKey = Convert.FromBase64String(response.Key);
                        var box = GetSelectedOrDefaultBox();
                        node.Key = CryptoHelper.DecryptPgp(encryptedKey, box.PrivateKey, box.PassPhrase);
                        node.IV = CryptoHelper.DecryptPgp(encryptedIV, box.PrivateKey, box.PassPhrase);
                    }

                    node.CheckedForKeys = true;
                    database.Update(node);
                }
            }

        }