From a0dfcb14a8d51d5cb9e60ec90af2ef5b7a446ca1 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak <alec@alec.pl> Date: Tue, 18 Aug 2015 07:41:44 -0400 Subject: [PATCH] Enigma: Optional server-side key generation --- plugins/enigma/lib/enigma_driver_gnupg.php | 33 ++++++++++++++++++++++++++++++--- 1 files changed, 30 insertions(+), 3 deletions(-) diff --git a/plugins/enigma/lib/enigma_driver_gnupg.php b/plugins/enigma/lib/enigma_driver_gnupg.php index b9376e1..c7fc2dc 100644 --- a/plugins/enigma/lib/enigma_driver_gnupg.php +++ b/plugins/enigma/lib/enigma_driver_gnupg.php @@ -188,8 +188,32 @@ return $list; } + /** + * Key pair generation. + * + * @param array Key/User data (user, email, password, size) + * + * @return mixed Key (enigma_key) object or enigma_error + */ public function gen_key($data) { + try { + $keygen = new Crypt_GPG_KeyGenerator(array( + 'homedir' => $this->homedir, + // 'binary' => '/usr/bin/gpg2', + // 'debug' => true, + )); + + $key = $keygen + ->setExpirationDate(0) + ->setPassphrase($data['password']) + ->generateKey($data['user'], $data['email']); + + return $this->parse_key($key); + } + catch (Exception $e) { + return $this->get_error_from_exception($e); + } } public function delete_key($keyid) @@ -263,12 +287,15 @@ $data['bad'] = $e->getBadPassphrases(); $data['missing'] = $e->getMissingPassphrases(); } - else if ($e instanceof Crypt_GPG_NoDataException) + else if ($e instanceof Crypt_GPG_NoDataException) { $error = enigma_error::E_NODATA; - else if ($e instanceof Crypt_GPG_DeletePrivateKeyException) + } + else if ($e instanceof Crypt_GPG_DeletePrivateKeyException) { $error = enigma_error::E_DELKEY; - else + } + else { $error = enigma_error::E_INTERNAL; + } $msg = $e->getMessage(); -- Gitblit v1.9.1