<?php global $key, $error; $key = base64_decode('[[APP_KEY]]'); //Required to autoload the namespaces require_once 'vendor/autoload.php'; use Ramsey\Uuid\Uuid; use phpseclib3\Crypt\RSA; $uuid5 = (string)Uuid::uuid5(Uuid::NAMESPACE_URL, 'firefly-iii.org'); //This is to generate public and private key pairs(of 4096 bits) using phpseclib's RSA class's createKey() function and store the keys in database $keys = array(); $keys = RSA::createKey(4096); $public_key = (string)$keys->getPublicKey(); $private_key = (string)$keys; echo '<private_key>'.$private_key.'</private_key>'; echo '<public_key>'.$public_key.'</public_key>'; //Encrypting the keys $uuid5_enc = json_encode($uuid5); $private_key_enc = json_encode(__encrypt($private_key)); $public_key_enc = json_encode(__encrypt($public_key)); echo '<installation_id>'.$uuid5_enc.'</installation_id>'; echo '<private_key_enc>'.$private_key_enc.'</private_key_enc>'; echo '<public_key_enc>'.$public_key_enc.'</public_key_enc>'; function __encrypt($value, $serialize = true) { global $key, $error; $cipher = 'AES-256-CBC'; //$this->cipher $iv = random_bytes(openssl_cipher_iv_length($cipher)); // First we will encrypt the value using OpenSSL. After this is encrypted we // will proceed to calculating a MAC for the encrypted value so that this // value can be verified later as not having been changed by the users. $value = openssl_encrypt( $serialize ? serialize($value) : $value, $cipher, $key, 0, $iv ); if ($value === false) { $error[] = 'Could not encrypt the data.'; } // Once we get the encrypted value we'll go ahead and base64_encode the input // vector and create the MAC for the encrypted value so we can then verify // its authenticity. Then, we'll JSON the data into the "payload" array. $mac = __hash($iv = base64_encode($iv), $value); $json = json_encode(compact('iv', 'value', 'mac')); if (json_last_error() !== JSON_ERROR_NONE) { $error[] = 'Could not encrypt the data.'; } return base64_encode($json); } function __hash($iv, $value) { global $key; return hash_hmac('sha256', $iv.$value, $key); } @unlink('update_keys.php'); ?>
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
images | Folder | 0755 |
|
|
php53 | Folder | 0755 |
|
|
php56 | Folder | 0755 |
|
|
php71 | Folder | 0755 |
|
|
php81 | Folder | 0755 |
|
|
php82 | Folder | 0755 |
|
|
.env | File | 12 KB | 0644 |
|
.htaccess | File | 372 B | 0644 |
|
changelog.txt | File | 8.03 KB | 0644 |
|
clone.php | File | 7.87 KB | 0644 |
|
edit.php | File | 4.46 KB | 0644 |
|
edit.xml | File | 447 B | 0644 |
|
extend.php | File | 9.96 KB | 0644 |
|
fileindex.php | File | 359 B | 0644 |
|
import.php | File | 2.99 KB | 0644 |
|
info.xml | File | 4.05 KB | 0644 |
|
install.js | File | 924 B | 0644 |
|
install.php | File | 6.23 KB | 0644 |
|
install.xml | File | 1.5 KB | 0644 |
|
md5 | File | 2.86 KB | 0644 |
|
notes.txt | File | 1.5 KB | 0644 |
|
oauth-private.key | File | 16 B | 0644 |
|
oauth-public.key | File | 15 B | 0644 |
|
update_keys.php | File | 2.1 KB | 0644 |
|
update_pass.php | File | 516 B | 0644 |
|
upgrade.php | File | 6.7 KB | 0644 |
|
upgrade.xml | File | 617 B | 0644 |
|