| | |
| | | { |
| | | $list = $this->list_keys($keyid); |
| | | |
| | | if (is_array($list)) |
| | | return array_shift($list); |
| | | if (is_array($list)) { |
| | | return $list[key($list)]; |
| | | } |
| | | |
| | | // error |
| | | return $list; |
| | |
| | | // 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; |
| | | } |