internal static void InvokeLambda(
            ISignaler signaler,
            Node lambda,
            PgpPublicKey key)
        {
            // Parametrizing [.lambda] callback with key and data.
            var keyNode = new Node(".key");

            keyNode.Add(new Node("private", false));
            keyNode.Add(new Node("fingerprint", PgpHelpers.GetFingerprint(key)));
            keyNode.Add(new Node("id", key.KeyId));
            keyNode.Add(new Node("content", PgpHelpers.GetAsciiArmoredPublicKey(key)));
            keyNode.Add(new Node("created", key.CreationTime));
            keyNode.Add(new Node("valid-seconds", key.GetValidSeconds()));
            keyNode.Add(new Node("algorithm", key.Algorithm.ToString()));
            keyNode.Add(new Node("bit-strength", key.BitStrength));
            keyNode.Add(new Node("is-encryption", key.IsEncryptionKey));
            keyNode.Add(new Node("is-master", key.IsMasterKey));
            keyNode.Add(new Node("is-revoked", key.IsRevoked()));

            // Adding ID for key.
            var ids = new Node("ids");

            foreach (var idxId in key.GetUserIds())
            {
                ids.Add(new Node(".", idxId.ToString()));
            }
            if (ids.Children.Any())
            {
                keyNode.Add(ids);
            }

            // Invoking [.lambda] making sure we reset it after evaluation.
            var exe = lambda.Clone();

            lambda.Insert(0, keyNode);
            signaler.Signal("eval", lambda);
            lambda.Clear();
            lambda.AddRange(exe.Children.ToList());
        }
        internal static void InvokeLambda(
            ISignaler signaler,
            Node lambda,
            PgpSecretKey idxKey)
        {
            // Parametrizing [.lambda] callback with key and data.
            var keyNode = new Node(".key");

            keyNode.Add(new Node("private", true));
            keyNode.Add(new Node("fingerprint", PgpHelpers.GetFingerprint(idxKey.PublicKey)));
            keyNode.Add(new Node("id", idxKey.KeyId));
            keyNode.Add(new Node("content", PgpHelpers.GetAsciiArmoredSecretKey(idxKey)));
            keyNode.Add(new Node("is-master", idxKey.IsMasterKey));
            keyNode.Add(new Node("is-signing-key", idxKey.IsSigningKey));
            keyNode.Add(new Node("encryption-algorithm", idxKey.KeyEncryptionAlgorithm.ToString()));

            // Adding ID for key.
            var ids = new Node("ids");

            foreach (var idxId in idxKey.UserIds)
            {
                ids.Add(new Node(".", idxId.ToString()));
            }
            if (ids.Children.Any())
            {
                keyNode.Add(ids);
            }

            // Invoking [.lambda] making sure we reset it after evaluation.
            var exe = lambda.Clone();

            lambda.Insert(0, keyNode);
            signaler.Signal("eval", lambda);
            lambda.Clear();
            lambda.AddRange(exe.Children.ToList());
        }