| 
<?phpdeclare(strict_types=1);
 namespace ParagonIE\Chronicle\CliTests;
 
 use ParagonIE\Chronicle\Chronicle;
 use ParagonIE\Sapient\CryptographyKeys\SealingSecretKey;
 use ParagonIE\Sapient\CryptographyKeys\SigningSecretKey;
 
 if (file_exists(__DIR__ . '/client.json')) {
 exit(0);
 }
 if (file_exists(__DIR__ . '/client-admin.json')) {
 exit(0);
 }
 
 require_once __DIR__ . '/cli-include.php';
 
 Chronicle::getDatabase()->beginTransaction();
 
 $signingKey = SigningSecretKey::generate();
 $publicKey = $signingKey->getPublickey()->getString();
 
 $ret = \file_put_contents(
 __DIR__ . '/client.json',
 \json_encode([
 'secret-key' => $signingKey->getString(),
 'public-key' => $signingKey->getPublickey()->getString()
 ])
 );
 
 if (is_bool($ret)) {
 echo 'Could not save temporary client', PHP_EOL;
 Chronicle::getDatabase()->rollBack();
 exit(255);
 }
 
 Chronicle::getDatabase()->insert(
 'chronicle_clients',
 [
 'isAdmin' => false,
 'publicid' => 'CLI-testing-user',
 'publicKey' => $publicKey
 ]
 );
 
 $signingKey = SigningSecretKey::generate();
 $publicKey = $signingKey->getPublickey()->getString();
 
 $ret = \file_put_contents(
 __DIR__ . '/client-admin.json',
 \json_encode([
 'secret-key' => $signingKey->getString(),
 'public-key' => $signingKey->getPublickey()->getString()
 ])
 );
 
 $sealingKey = SealingSecretKey::generate();
 $publicKey = $sealingKey->getPublickey()->getString();
 
 $ret = \file_put_contents(
 __DIR__ . '/sealing.json',
 \json_encode([
 'secret-key' => $sealingKey->getString(),
 'public-key' => $sealingKey->getPublickey()->getString()
 ])
 );
 
 if (is_bool($ret)) {
 echo 'Could not save temporary client', PHP_EOL;
 Chronicle::getDatabase()->rollBack();
 exit(255);
 }
 
 Chronicle::getDatabase()->insert(
 'chronicle_clients',
 [
 'isAdmin' => true,
 'publicid' => 'CLI-admin-user',
 'publicKey' => $publicKey
 ]
 );
 
 Chronicle::getDatabase()->commit();
 
 |