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()); }