| | |
| | | function init() |
| | | { |
| | | $homedir = $this->rc->config->get('enigma_pgp_homedir', INSTALL_PATH . 'plugins/enigma/home'); |
| | | $debug = $this->rc->config->get('enigma_debug'); |
| | | |
| | | if (!$homedir) |
| | | return new enigma_error(enigma_error::INTERNAL, |
| | |
| | | $this->gpg = new Crypt_GPG(array( |
| | | 'homedir' => $this->homedir, |
| | | // 'binary' => '/usr/bin/gpg2', |
| | | // 'debug' => true, |
| | | 'debug' => $debug ? array($this, 'debug') : false, |
| | | )); |
| | | } |
| | | catch (Exception $e) { |
| | |
| | | public function gen_key($data) |
| | | { |
| | | try { |
| | | $debug = $this->rc->config->get('enigma_debug'); |
| | | $keygen = new Crypt_GPG_KeyGenerator(array( |
| | | 'homedir' => $this->homedir, |
| | | // 'binary' => '/usr/bin/gpg2', |
| | | // 'debug' => true, |
| | | 'debug' => $debug ? array($this, 'debug') : false, |
| | | )); |
| | | |
| | | $key = $keygen |
| | |
| | | else if ($code == enigma_error::DELKEY) { |
| | | $key = $this->get_key($keyid); |
| | | for ($i = count($key->subkeys) - 1; $i >= 0; $i--) { |
| | | $type = $key->subkeys[$i]->can_encrypt ? 'priv' : 'pub'; |
| | | $type = ($key->subkeys[$i]->usage & enigma_key::CAN_ENCRYPT) ? 'priv' : 'pub'; |
| | | $result = $this->{'delete_' . $type . 'key'}($key->subkeys[$i]->id); |
| | | if ($result !== true) { |
| | | return $result; |
| | |
| | | $skey->expires = $subkey->getExpirationDate(); |
| | | $skey->fingerprint = $subkey->getFingerprint(); |
| | | $skey->has_private = $subkey->hasPrivate(); |
| | | $skey->can_sign = $subkey->canSign(); |
| | | $skey->can_encrypt = $subkey->canEncrypt(); |
| | | $skey->algorithm = $subkey->getAlgorithm(); |
| | | $skey->length = $subkey->getLength(); |
| | | $skey->usage = $subkey->usage(); |
| | | |
| | | $ekey->subkeys[$idx] = $skey; |
| | | }; |
| | |
| | | |
| | | return $ekey; |
| | | } |
| | | |
| | | /** |
| | | * Write debug info from Crypt_GPG to logs/enigma |
| | | */ |
| | | public function debug($line) |
| | | { |
| | | rcube::write_log('enigma', 'GPG: ' . $line); |
| | | } |
| | | } |