Aleksander Machniak
2015-08-10 d5501a8bb2951f2142b9f888dbc0610e25e00b2d
plugins/enigma/lib/enigma_driver_gnupg.php
@@ -180,8 +180,9 @@
    {
        $list = $this->list_keys($keyid);
        if (is_array($list))
            return array_shift($list);
        if (is_array($list)) {
            return $list[key($list)];
        }
        // error
        return $list;
@@ -196,10 +197,26 @@
        // delete public key
        $result = $this->delete_pubkey($keyid);
        // error handling
        if ($result !== true) {
            $code = $result->getCode();
        // if not found, delete private key
        if ($result !== true && $result->getCode() == enigma_error::E_KEYNOTFOUND) {
            if ($code == enigma_error::E_KEYNOTFOUND) {
            $result = $this->delete_privkey($keyid);
        }
            // need to delete private key first
            else if ($code == enigma_error::E_DELKEY) {
                $key = $this->get_key($keyid);
                for ($i = count($key->subkeys) - 1; $i >= 0; $i--) {
                    $type = $key->subkeys[$i]->can_encrypt ? 'priv' : 'pub';
                    $result = $this->{'delete_' . $type . 'key'}($key->subkeys[$i]->id);
                    if ($result !== true) {
                        return $result;
                    }
                }
            }
        }
        return $result;
    }