From cfbdad9cdb5c978225af796c128e4ad7bd011eee Mon Sep 17 00:00:00 2001
From: Bjoern Schiessle <schiessle@owncloud.com>
Date: Thu, 1 Aug 2013 11:50:56 +0200
Subject: [PATCH] catch broken server config and disable encryption app.

---
 apps/files_encryption/hooks/hooks.php |  2 +-
 apps/files_encryption/lib/helper.php  | 12 ++++++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php
index 741df166b70..e933207a9e1 100644
--- a/apps/files_encryption/hooks/hooks.php
+++ b/apps/files_encryption/hooks/hooks.php
@@ -40,7 +40,7 @@ class Hooks {
 	public static function login($params) {
 		$l = new \OC_L10N('files_encryption');
 		//check if all requirements are met
-		if(!Helper::checkRequirements() ) {
+		if(!Helper::checkRequirements() || !Helper::checkConfiguration() ) {
 			$error_msg = $l->t("Missing requirements.");
 			$hint = $l->t('Please make sure that PHP 5.3.3 or newer is installed and that the OpenSSL PHP extension is enabled and configured properly. For now, the encryption app has been disabled.');
 			\OC_App::disable('files_encryption');
diff --git a/apps/files_encryption/lib/helper.php b/apps/files_encryption/lib/helper.php
index 6eee8fed6a6..d3d4afff912 100755
--- a/apps/files_encryption/lib/helper.php
+++ b/apps/files_encryption/lib/helper.php
@@ -232,6 +232,18 @@ class Helper {
 
 		return (bool) $result;
 	}
+	
+	/**
+	 * check some common errors if the server isn't configured properly for encryption
+	 * @return bool true if configuration seems to be OK
+	 */
+	public static function checkConfiguration() {
+		if(openssl_pkey_new(array('private_key_bits' => 4096))) {
+			return true;
+		} else {
+			return false;
+		}
+	}
 
 	/**
 	 * @brief glob uses different pattern than regular expressions, escape glob pattern only
-- 
GitLab