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