Beispiel #1
0
SEXP R_gpg_delete(SEXP id, SEXP secret){
  gpgme_key_t key;
  const char * idstr = CHAR(STRING_ELT(id, 0));
  bail(gpgme_get_key(ctx, idstr, &key, 0), "find key");
  gpgme_error_t err = gpgme_op_delete(ctx, key, asLogical(secret));
  if(gpg_err_code (err) == GPG_ERR_CONFLICT){
    Rf_warningcall(R_NilValue, "Did not delete %s. Set secret = TRUE to delete private keys", idstr);
    return mkString("");
  }
  bail(err, "delete key");
  return mkString(key->subkeys->keyid);
}
Beispiel #2
0
void c_gpgme::remove_key_from_keyring ( const std::string &fingerprint ) {
	gpgme_key_t key;
	m_error_code = gpgme_get_key(m_ctx, fingerprint.c_str(), &key, 0);

	if (m_error_code != GPG_ERR_NO_ERROR) {
		throw std::runtime_error(gpgme_strsource(m_error_code));
	}

	m_error_code = gpgme_op_delete(m_ctx, key, 0);

	if (m_error_code != GPG_ERR_NO_ERROR) {
		throw std::runtime_error(gpgme_strsource(m_error_code));
	}
}
static PyObject *
pygpgme_context_delete(PyGpgmeContext *self, PyObject *args)
{
    PyGpgmeKey *key;
    int allow_secret = 0;
    gpgme_error_t err;

    if (!PyArg_ParseTuple(args, "O!|i", &PyGpgmeKey_Type, &key, &allow_secret))
        return NULL;

    Py_BEGIN_ALLOW_THREADS;
    err = gpgme_op_delete(self->ctx, key->key, allow_secret);
    Py_END_ALLOW_THREADS;

    if (pygpgme_check_error(err))
        return NULL;
    Py_RETURN_NONE;
}