Esempio n. 1
0
        /// <summary>
        /// Delete a secret pgp keyring.
        /// </summary>
        /// <remarks>
        /// Deletes a secret pgp keyring.
        /// </remarks>
        /// <param name="keyring">The pgp keyring.</param>
        /// <exception cref="System.ArgumentNullException">
        /// <paramref name="keyring"/> is <c>null</c>.
        /// </exception>
        public virtual void Delete(PgpSecretKeyRing keyring)
        {
            if (keyring == null)
            {
                throw new ArgumentNullException(nameof(keyring));
            }

            SecretKeyRingBundle = PgpSecretKeyRingBundle.RemoveSecretKeyRing(SecretKeyRingBundle, keyring);
            SaveSecretKeyRingBundle();
        }
Esempio n. 2
0
        static void p5_crypto_delete_private_key(ApplicationContext context, ActiveEventArgs e)
        {
            // House cleaning.
            using (new ArgsRemover(e.Args, true)) {
                // Creating new GnuPG context.
                using (var ctx = new GnuPrivacyContext(true)) {
                    // Signaler boolean.
                    bool somethingWasRemoved = false;
                    var  bundle = ctx.SecretKeyRingBundle;

                    // Looping through each ID given by caller.
                    foreach (var idxId in XUtil.Iterate <string> (context, e.Args))
                    {
                        // Looping through each public key ring in GnuPG database until we find given ID.
                        foreach (PgpSecretKeyRing idxSecretKeyRing in bundle.GetKeyRings())
                        {
                            // Looping through each key in keyring.
                            foreach (PgpSecretKey idxSecretKey in idxSecretKeyRing.GetSecretKeys())
                            {
                                // Checking for a match, making sure we do not match UserIDs.
                                if (ObjectIterator.IsMatch(idxSecretKey.PublicKey, idxId, false))
                                {
                                    // Removing entire keyring, and signaling to save keyring bundle.
                                    somethingWasRemoved = true;
                                    bundle = PgpSecretKeyRingBundle.RemoveSecretKeyRing(bundle, idxSecretKeyRing);

                                    // Breaking inner most foreach.
                                    break;
                                }
                            }

                            // Checking if currently iterated filter was found in currently iterated secret keyring.
                            if (somethingWasRemoved)
                            {
                                break;
                            }
                        }
                    }

                    // Checking to see if something was removed, and if so, saving GnuPG context
                    if (somethingWasRemoved)
                    {
                        ctx.SaveSecretKeyRingBundle(bundle);
                    }
                }
            }
        }
Esempio n. 3
0
        private static void p5_crypto_delete_private_key(ApplicationContext context, ActiveEventArgs e)
        {
            // House cleaning
            using (new ArgsRemover(e.Args, true)) {
                // Creating new GnuPG context
                using (var ctx = new GnuPrivacyContext()) {
                    // Signaler boolean
                    bool somethingWasRemoved = false;
                    var  bundle = ctx.SecretKeyRingBundle;

                    // Looping through each ID given by caller
                    foreach (var idxId in XUtil.Iterate <string> (context, e.Args))
                    {
                        // Looping through each public key ring in GnuPG database until we find given ID
                        foreach (PgpSecretKeyRing idxSecretKeyRing in bundle.GetKeyRings())
                        {
                            // Looping through each key in keyring
                            foreach (PgpSecretKey idxSecretKey in idxSecretKeyRing.GetSecretKeys())
                            {
                                if (idxId == idxSecretKey.KeyId.ToString("X"))
                                {
                                    // Removing entire keyring, and signaling to save keyring bundle
                                    somethingWasRemoved = true;
                                    bundle = PgpSecretKeyRingBundle.RemoveSecretKeyRing(bundle, idxSecretKeyRing);

                                    // Breaking inner most foreach
                                    break;
                                }
                            }
                        }
                    }

                    // Checking to see if something was removed, and if so, saving GnuPG context
                    if (somethingWasRemoved)
                    {
                        ctx.SaveSecretKeyRingBundle(bundle);
                    }
                }
            }
        }