forked from La_Bureautique/zeg1jeux
102 lines
2.2 KiB
PHP
102 lines
2.2 KiB
PHP
<?php
|
|
|
|
class Keygen {
|
|
|
|
private $keygenPath = __DIR__ . '/../vendors/keygen/keygen';
|
|
|
|
// private $keygenPath = 'keygen'; // if you use Docker
|
|
|
|
private $pubsecDir = __DIR__ .'/../cache/pubsec/';
|
|
|
|
private $userPubsecPath;
|
|
|
|
public function __construct () {
|
|
|
|
}
|
|
|
|
public function getG1Pub ($salt, $pepper) {
|
|
|
|
$salt = str_replace('"', '\"', $salt);
|
|
$pepper = str_replace('"', '\"', $pepper);
|
|
|
|
$cmd = $this->keygenPath;
|
|
$cmd .= ' -f pubsec';
|
|
$cmd .= ' -t duniter';
|
|
$cmd .= ' "'. $salt .'"';
|
|
$cmd .= ' -p "'. $pepper .'"';
|
|
|
|
$output=null;
|
|
$result_code=null;
|
|
exec($cmd, $output, $result_code);
|
|
|
|
// die($cmd . '<br />'. print_r($output, true) . '<br />'. print_r($result_code, true));
|
|
|
|
if (empty($output) or empty($output[0])) {
|
|
|
|
throw new Exception('Keygen me calcule pas (la G1 pub)');
|
|
}
|
|
|
|
return $output[0];
|
|
}
|
|
|
|
public function getIPNSPub ($salt, $pepper) {
|
|
|
|
$salt = str_replace('"', '\"', $salt);
|
|
$pepper = str_replace('"', '\"', $pepper);
|
|
|
|
$cmd = $this->keygenPath;
|
|
$cmd .= ' -t b36mf';
|
|
$cmd .= ' "'. $salt .'"';
|
|
$cmd .= ' -p "'. $pepper .'"';
|
|
|
|
$output=null;
|
|
$result_code=null;
|
|
exec($cmd, $output, $result_code);
|
|
|
|
// die($cmd . '<br />'. print_r($output, true) . '<br />'. print_r($result_code, true));
|
|
|
|
if (empty($output) or empty($output[0])) {
|
|
|
|
throw new Exception('Keygen me calcule pas (la pub IPNS) :<br />' . $cmd . '<br />');
|
|
}
|
|
|
|
return $output[0];
|
|
}
|
|
|
|
public function generatePubsec ($salt, $pepper) {
|
|
|
|
$salt = str_replace('"', '\"', $salt);
|
|
$pepper = str_replace('"', '\"', $pepper);
|
|
|
|
$userPubkey = $this->getG1Pub($salt, $pepper);
|
|
|
|
if (!file_exists($this->pubsecDir)) {
|
|
|
|
mkdir($this->pubsecDir, 0777, true);
|
|
|
|
}
|
|
|
|
if (!file_exists($this->pubsecDir . $userPubkey . '.dunikey')) {
|
|
|
|
$cmd = $this->keygenPath;
|
|
$cmd .= ' -f pubsec';
|
|
$cmd .= ' -t duniter';
|
|
$cmd .= ' "'. $salt .'"';
|
|
$cmd .= ' -p "'. $pepper .'"';
|
|
$cmd .= ' -o '. $this->pubsecDir . $userPubkey . '.dunikey';
|
|
|
|
$output=null;
|
|
$result_code=null;
|
|
exec($cmd, $output, $result_code);
|
|
|
|
// die($cmd . '<br />'. print_r($result_code, true));
|
|
|
|
if ($result_code != 0) {
|
|
|
|
throw new Exception('Keygen me calcule pas (la dunikey)');
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|