| | |
| | | $homedir = $this->rc->config->get('enigma_smime_homedir', INSTALL_PATH . '/plugins/enigma/home'); |
| | | |
| | | if (!$homedir) |
| | | return new enigma_error(enigma_error::E_INTERNAL, |
| | | return new enigma_error(enigma_error::INTERNAL, |
| | | "Option 'enigma_smime_homedir' not specified"); |
| | | |
| | | // check if homedir exists (create it if not) and is readable |
| | | if (!file_exists($homedir)) |
| | | return new enigma_error(enigma_error::E_INTERNAL, |
| | | return new enigma_error(enigma_error::INTERNAL, |
| | | "Keys directory doesn't exists: $homedir"); |
| | | if (!is_writable($homedir)) |
| | | return new enigma_error(enigma_error::E_INTERNAL, |
| | | return new enigma_error(enigma_error::INTERNAL, |
| | | "Keys directory isn't writeable: $homedir"); |
| | | |
| | | $homedir = $homedir . '/' . $this->user; |
| | |
| | | mkdir($homedir, 0700); |
| | | |
| | | if (!file_exists($homedir)) |
| | | return new enigma_error(enigma_error::E_INTERNAL, |
| | | return new enigma_error(enigma_error::INTERNAL, |
| | | "Unable to create keys directory: $homedir"); |
| | | if (!is_writable($homedir)) |
| | | return new enigma_error(enigma_error::E_INTERNAL, |
| | | return new enigma_error(enigma_error::INTERNAL, |
| | | "Unable to write to keys directory: $homedir"); |
| | | |
| | | $this->homedir = $homedir; |
| | |
| | | if ($sig !== true) { |
| | | // try without certificate verification |
| | | $sig = openssl_pkcs7_verify($msg_file, PKCS7_NOVERIFY, $cert_file); |
| | | $validity = enigma_error::E_UNVERIFIED; |
| | | $validity = enigma_error::UNVERIFIED; |
| | | } |
| | | |
| | | if ($sig === true) { |
| | |
| | | } |
| | | else { |
| | | $errorstr = $this->get_openssl_error(); |
| | | $sig = new enigma_error(enigma_error::E_INTERNAL, $errorstr); |
| | | $sig = new enigma_error(enigma_error::INTERNAL, $errorstr); |
| | | } |
| | | |
| | | // remove temp files |
| | |
| | | $skey->expires = $subkey->getExpirationDate(); |
| | | $skey->fingerprint = $subkey->getFingerprint(); |
| | | $skey->has_private = $subkey->hasPrivate(); |
| | | $skey->can_sign = $subkey->canSign(); |
| | | $skey->can_encrypt = $subkey->canEncrypt(); |
| | | |
| | | $ekey->subkeys[$idx] = $skey; |
| | | }; |
| | |
| | | |
| | | if (empty($cert) || empty($cert['subject'])) { |
| | | $errorstr = $this->get_openssl_error(); |
| | | return new enigma_error(enigm_error::E_INTERNAL, $errorstr); |
| | | return new enigma_error(enigma_error::INTERNAL, $errorstr); |
| | | } |
| | | |
| | | $data = new enigma_signature(); |