diff --git a/html/ops/generate_account_ownership_keys.php b/html/ops/generate_account_ownership_keys.php
index 4f96fd4b32..1886c1fe20 100755
--- a/html/ops/generate_account_ownership_keys.php
+++ b/html/ops/generate_account_ownership_keys.php
@@ -18,56 +18,68 @@
// You should have received a copy of the GNU Lesser General Public License
// along with BOINC. If not, see .
+// usage: generate_account_ownership_keys.php [overwrite]
+//
+// This script generates the public and private keys for the proof of
+// account ownership feature of the website that is described
+// here: https://boinc.berkeley.edu/trac/wiki/ProofOfOwnership
+//
+// If the overwrite option is set, then the existing keys will be deleted and
+// new keys generated. This will invalidate all existing account ownership
+// proofs so use with caution.
+
require_once("../inc/boinc_db.inc");
require_once("../inc/user.inc");
require_once("../inc/util.inc");
require_once("../inc/account_ownership.inc");
+if ( !function_exists('openssl_pkey_new') ) {
+ echo "WARNING: OpenSSL functions not available. Not generating account ownership keys.\n";
+ exit(1);
+}
+
if (php_sapi_name() == "cli") {
- if (!empty($argv[1])) {
- if ($argv[1] == "overwrite") {
- if (file_exists($account_ownership_private_key_file_path)) {
- // If the private key exists, delete it.
- unlink($account_ownership_private_key);
- echo "erased '$account_ownership_private_key_file_name' \n";
- }
- if (file_exists($account_ownership_public_key_file_path)) {
- // If the public key exists, delete it.
- unlink($account_ownership_public_key);
- echo "erased '$account_ownership_public_key_file_name' \n";
- }
+ if (!empty($argv[1])) {
+ if ($argv[1] == "overwrite") {
+ if (file_exists($account_ownership_private_key_file_path)) {
+ // If the private key exists, delete it.
+ unlink($account_ownership_private_key);
+ echo "erased '$account_ownership_private_key_file_name' \n";
+ }
+ if (file_exists($account_ownership_public_key_file_path)) {
+ // If the public key exists, delete it.
+ unlink($account_ownership_public_key);
+ echo "erased '$account_ownership_public_key_file_name' \n";
+ }
+ }
}
- }
-
- if ((!file_exists($account_ownership_private_key_file_path)) && (!file_exists($account_ownership_public_key_file_path))) {
-
- try {
- $generated_pkey = openssl_pkey_new(array(
- 'digest_alg' => 'sha512',
- 'private_key_bits' => 4096,
- 'private_key_type' => OPENSSL_KEYTYPE_RSA
- ));
-
- $pubkey = openssl_pkey_get_details($generated_pkey); // Get the public key from the generated pkey pair
- file_put_contents($account_ownership_public_key, $pubkey['key']); // Save the public key to disk
- openssl_pkey_export_to_file($generated_pkey, $account_ownership_private_key); // Save the private key to disk
- openssl_pkey_free($generated_pkey); // Free key data securely from memory
-
- if ((file_exists($account_ownership_private_key_file_path)) && (file_exists($account_ownership_public_key_file_path))) {
- echo "Successfully generated a new account ownership keypair. \n";
- } else {
- throw new Exception('Failed to generate account ownership keypair.');
- }
-
- } catch (Exception $e) {
- echo 'Caught exception during account ownership key generation: ', $e->getMessage(), "\n";
+
+ if ((!file_exists($account_ownership_private_key_file_path)) && (!file_exists($account_ownership_public_key_file_path))) {
+ try {
+ $generated_pkey = openssl_pkey_new(array(
+ 'digest_alg' => 'sha512',
+ 'private_key_bits' => 4096,
+ 'private_key_type' => OPENSSL_KEYTYPE_RSA
+ ));
+
+ $pubkey = openssl_pkey_get_details($generated_pkey); // Get the public key from the generated pkey pair
+ file_put_contents($account_ownership_public_key, $pubkey['key']); // Save the public key to disk
+ openssl_pkey_export_to_file($generated_pkey, $account_ownership_private_key); // Save the private key to disk
+ openssl_pkey_free($generated_pkey); // Free key data securely from memory
+
+ if ((file_exists($account_ownership_private_key_file_path)) && (file_exists($account_ownership_public_key_file_path))) {
+ echo "Successfully generated a new account ownership keypair. \n";
+ } else {
+ throw new Exception('Failed to generate account ownership keypair.');
+ }
+ } catch (Exception $e) {
+ echo 'Caught exception during account ownership key generation: ', $e->getMessage(), "\n";
+ }
+ } else {
+ echo "The private and public keys already exist. Repeat the command with the 'overwrite' parameter to replace the existing ownership keys. \n";
}
-
- } else {
- echo "The private and public keys already exist. Repeat the command with the 'overwrite' parameter to replace the existing ownership keys. \n";
- }
} else {
- echo "This script must be run from the CLI \n";
+ echo "This script must be run from the CLI \n";
}
?>
diff --git a/tools/make_project b/tools/make_project
index 98015824c7..0606dd674f 100755
--- a/tools/make_project
+++ b/tools/make_project
@@ -324,11 +324,6 @@ try:
except:
print '''Couldn't install translation files'''
-try:
- os.system('cd '+proot+'/html/ops; ./generate_account_ownership_keys.php')
-except:
- print '''Couldn't generate account ownership keypair'''
-
print '''Done installing default daemons.'''
# copy the test app if needed