Ejemplo n.º 1
0
 /**
  * @param $bits
  * @return KeyPair
  */
 public function buildKeyPair($bits)
 {
     $this->rsa_imp->setPrivateKeyFormat(CRYPT_RSA_PRIVATE_FORMAT_PKCS1);
     $this->rsa_imp->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_PKCS1);
     $list = $this->rsa_imp->createKey($bits);
     return new KeyPair(new _RSAPublicKeyPEMFornat($list['publickey']), new _RSAPrivateKeyPEMFornat($list['privatekey']));
 }
Ejemplo n.º 2
0
 function generateAndAdd()
 {
     $rsa = new \Crypt_RSA();
     $rsa->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_OPENSSH);
     $this->set($rsa->createKey());
     $this->save();
 }
Ejemplo n.º 3
0
 /**
  * Generate an SSH public / private key pair
  * @return array
  */
 public static function generateKeyPair()
 {
     $publickey = '';
     $privatekey = '';
     $rsa = new \Crypt_RSA();
     $rsa->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_OPENSSH);
     extract($rsa->createKey());
     $publickey = str_replace('phpseclib-generated-key', self::SSH_KEY_NAME, $publickey);
     return array($publickey, $privatekey);
 }
Ejemplo n.º 4
0
 private function generateSshKeys()
 {
     $rsa = new \Crypt_RSA();
     $rsa->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_OPENSSH);
     $rsa->setPassword(\OC::$server->getConfig()->getSystemValue('secret', ''));
     $key = $rsa->createKey();
     // Replace the placeholder label with a more meaningful one
     $key['publicKey'] = str_replace('phpseclib-generated-key', gethostname(), $key['publickey']);
     return $key;
 }
Ejemplo n.º 5
0
 /**
  * Generates random key with optonal passphrase and stores it
  * in the model
  */
 function generateKey($pack = null)
 {
     $rsa = new Crypt_RSA();
     if ($pack) {
         $rsa->setPassword($pack);
     }
     $rsa->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_OPENSSH);
     $key = $rsa->createKey();
     $this['kind'] = 'key';
     $this['host'] = '*';
     $this['data'] = $key['privatekey'];
     $this['is_secure'] = (bool) $pack;
     $this['notes'] = $key['publickey'];
 }
Ejemplo n.º 6
0
 public function creat_public_key()
 {
     $oldIncludePath = get_include_path();
     $include = realpath(dirname(__FILE__));
     set_include_path($include . DIRECTORY_SEPARATOR . 'CryptLib');
     include_once 'Crypt/RSA.php';
     $rsa = new Crypt_RSA();
     $rsa->setPrivateKeyFormat(CRYPT_RSA_PRIVATE_FORMAT_PKCS1);
     $rsa->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_PKCS1);
     //define('CRYPT_RSA_EXPONENT', 65537);
     //define('CRYPT_RSA_SMALLEST_PRIME', 64); // makes it so multi-prime RSA is used
     $a = $rsa->createKey();
     // == $rsa->createKey(1024) where 1024 is the key size
     return $a;
 }
Ejemplo n.º 7
0
 public function encrypt()
 {
     $binaryKey = bin2hex(base64_decode(GOOGLE_DEFAULT_PUBLIC_KEY));
     $half = substr($binaryKey, 8, 256);
     $modulus = new Math_BigInteger(hex2bin($half), 256);
     $half = substr($binaryKey, 272, 6);
     $exponent = new Math_BigInteger(hex2bin($half), 256);
     $sha1 = sha1(base64_decode($googleDefaultPublicKey), true);
     $signature = "00" . bin2hex(substr($sha1, 0, 4));
     $rsa = new Crypt_RSA();
     $rsa->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_RAW);
     $rsa->loadKey(array("n" => $modulus, "e" => $exponent));
     $rsa->setPublicKey();
     $plain = "{$email}{$password}";
     $rsa->setEncryptionMode("CRYPT_RSA_ENCRYPTION_OAEP");
     $encrypted = bin2hex($rsa->encrypt($plain));
     $output = hex2bin($signature . $encrypted);
     $b64EncryptedPasswd = str_replace(array("+", "/"), array("-", "_"), mb_convert_encoding(base64_encode($output), "US-ASCII"));
     return $b64EncryptedPasswd;
 }
Ejemplo n.º 8
0
 public function encryptPassword($email, $password)
 {
     $googleDefaultPublicKey = "AAAAgMom/1a/v0lblO2Ubrt60J2gcuXSljGFQXgcyZWveWLEwo6prwgi3iJIZdodyhKZQrNWp5nKJ3srRXcUW+F1BD3baEVGcmEgqaLZUNBjm057pKRI16kB0YppeGx5qIQ5QjKzsR8ETQbKLNWgRY0QRNVz34kMJR3P/LgHax/6rmf5AAAAAwEAAQ==";
     $binaryKey = bin2hex(base64_decode($googleDefaultPublicKey));
     $half = substr($binaryKey, 8, 256);
     $modulus = new Math_BigInteger(hex2bin($half), 256);
     $half = substr($binaryKey, 272, 6);
     $exponent = new Math_BigInteger(hex2bin($half), 256);
     $sha1 = sha1(base64_decode($googleDefaultPublicKey), true);
     $signature = "00" . bin2hex(substr($sha1, 0, 4));
     $rsa = new Crypt_RSA();
     $rsa->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_RAW);
     $rsa->loadKey(array("n" => $modulus, "e" => $exponent));
     $rsa->setPublicKey();
     $plain = "{$email}{$password}";
     $rsa->setEncryptionMode("CRYPT_RSA_ENCRYPTION_OAEP");
     $encrypted = bin2hex($rsa->encrypt($plain));
     $output = hex2bin($signature . $encrypted);
     $b64EncryptedPasswd = str_replace(array("+", "/"), array("-", "_"), mb_convert_encoding(base64_encode($output), "US-ASCII"));
     return $b64EncryptedPasswd;
 }
Ejemplo n.º 9
0
 public function rsa_encrypt($input_str, $key)
 {
     $rsa = new Crypt_RSA();
     $rsa->setPrivateKeyFormat(CRYPT_RSA_PRIVATE_FORMAT_PKCS1);
     $rsa->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_PKCS1);
     $rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1);
     $public_key = array('n' => new Math_BigInteger($key, 16), 'e' => new Math_BigInteger('65537', 10));
     $rsa->loadKey($public_key, CRYPT_RSA_PUBLIC_FORMAT_RAW);
     return $rsa->encrypt($input_str);
 }
Ejemplo n.º 10
0
 public function git_ssh_gen()
 {
     //errors need to be on while experimental
     error_reporting(E_ALL);
     ini_set("display_errors", 1);
     $gitpath = preg_replace("#/\$#", "", sanitize_text_field($_POST['sshpath']));
     //create the folder if doesn't exist
     if (!file_exists($gitpath)) {
         mkdir($gitpath, 0700);
     }
     //create known hosts if doesn't exist
     if (!file_exists($gitpath . "/known_hosts")) {
         touch($gitpath . "/known_hosts");
         chmod($gitpath . "/known_hosts", 0700);
     }
     //create keys if not exist
     if (!file_exists($gitpath . "/id_rsa") || !file_exists($gitpath . "/id_rsa.pub")) {
         set_include_path(get_include_path() . PATH_SEPARATOR . plugin_dir_path(__FILE__) . 'git/phpseclib');
         include 'Crypt/RSA.php';
         $rsa = new Crypt_RSA();
         $rsa->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_OPENSSH);
         extract($rsa->createKey());
         // == $rsa->createKey(1024) where 1024 is the key size - $privatekey and $publickey
         //create private key
         file_put_contents($gitpath . "/id_rsa", $privatekey);
         chmod($gitpath . "/id_rsa", 0700);
         //create public key
         file_put_contents($gitpath . "/id_rsa.pub", $publickey);
         chmod($gitpath . "/id_rsa.pub", 0700);
     }
     //return public key
     echo "\n\n" . file_get_contents($gitpath . "/id_rsa.pub") . "\n\n";
     die;
 }
Ejemplo n.º 11
0
<?php

set_time_limit(0);
if (file_exists('private.key')) {
    echo base64_encode(file_get_contents('private.key'));
} else {
    include 'Crypt/RSA.php';
    $rsa = new Crypt_RSA();
    $rsa->setHash('sha1');
    $rsa->setMGFHash('sha1');
    $rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_OAEP);
    $rsa->setPrivateKeyFormat(CRYPT_RSA_PRIVATE_FORMAT_PKCS1);
    $rsa->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_PKCS1);
    $res = $rsa->createKey(1024);
    $privateKey = $res['privatekey'];
    $publicKey = $res['publickey'];
    file_put_contents('public.key', $publicKey);
    file_put_contents('private.key', $privateKey);
    echo base64_encode($privateKey);
}
Ejemplo n.º 12
0
     exit('Critical error while installing ! Unable to write to /conf/secret.keys.ini !');
 }
 if (is_writable(CONF_API_KEY_INI)) {
     $handle = fopen(CONF_API_KEY_INI, 'w');
     $data = "; API KEY FILE\nAPP_API_KEY \t\t= \"" . $APP_API_KEY . "\"\n";
     fwrite($handle, $data);
     fclose($handle);
     unset($handle);
 } else {
     exit('Critical error while installing ! Unable to write to /conf/api.conf.ini !');
 }
 //---------------------------------------------------------+
 // Generating RSA Keys
 if (is_writable(RSA_KEYS_DIR)) {
     $rsa = new Crypt_RSA();
     $rsa->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_OPENSSH);
     $keypair = $rsa->createKey(2048);
     $handle = fopen(RSA_PRIVATE_KEY_FILE, 'w');
     $data = $keypair['privatekey'];
     fwrite($handle, $data);
     fclose($handle);
     unset($handle);
     $handle = fopen(RSA_PUBLIC_KEY_FILE, 'w');
     $data = $keypair['publickey'];
     fwrite($handle, $data);
     fclose($handle);
     unset($handle);
 } else {
     exit('Critical error while installing ! Unable to write to /app/crypto/ !');
 }
 //---------------------------------------------------------+
Ejemplo n.º 13
0
 public static function encrypt_value($encrypt_key_id, $value)
 {
     $encrypt_key = self::get_encrypt_key($encrypt_key_id);
     if ($encrypt_key && $encrypt_key['public_key']) {
         $dir = getcwd();
         chdir('includes/plugin_encrypt/phpseclib/');
         require_once 'Crypt/RSA.php';
         chdir($dir);
         // if encrypt fails return plain tet
         $rsa = new Crypt_RSA();
         //echo "Public Key: '".$encrypt_key['public_key']."'\n\n";
         $rsa->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_RAW);
         $rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1);
         $public_key = array('n' => new Math_BigInteger($encrypt_key['public_key'], 16), 'e' => new Math_BigInteger($encrypt_key['e'], 16));
         $rsa->loadKey($public_key, CRYPT_RSA_PUBLIC_FORMAT_RAW);
         $ciphertext = $rsa->encrypt($value);
         return bin2hex($ciphertext);
     }
     return false;
 }
Ejemplo n.º 14
0
<?php

if (!isset($_POST) || empty($_POST['pcname'])) {
    exit;
}
set_include_path(get_include_path() . PATH_SEPARATOR . 'lib');
include 'lib/Crypt/RSA.php';
$rsa = new Crypt_RSA();
$rsa->setPrivateKeyFormat(CRYPT_RSA_PRIVATE_FORMAT_XML);
$rsa->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_XML);
extract($rsa->createKey(2048));
$pcname = $_POST['pcname'];
$username = $_POST['username'];
include 'db.php';
$stmt = $connection->prepare('INSERT INTO dummy (pcname, username, privatekey) VALUES (?, ?, ?)');
$stmt->execute([$pcname, $username, $privatekey]);
//var_dump($privatekey);
echo $publickey;
Ejemplo n.º 15
0
 /**
  * @return array
  */
 public function DoGetPublicKey()
 {
     if ($this->Config()->Get('security', 'use_rsa_encryption', false)) {
         \RainLoop\Service::$__HIDE_ERROR_NOTICES = true;
         if (!\class_exists('Crypt_RSA')) {
             \set_include_path(\get_include_path() . PATH_SEPARATOR . APP_VERSION_ROOT_PATH . 'app/libraries/phpseclib');
             \defined('CRYPT_RSA_MODE') || \define('CRYPT_RSA_MODE', CRYPT_RSA_MODE_INTERNAL);
             include_once 'Crypt/RSA.php';
         }
         $oRsa = new \Crypt_RSA();
         $oRsa->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_RAW);
         $aKeys = $oRsa->createKey(1024);
         if (!empty($aKeys['privatekey']) && !empty($aKeys['publickey']['e']) && !empty($aKeys['publickey']['n'])) {
             $e = new \Math_BigInteger($aKeys['publickey']['e'], 10);
             $n = new \Math_BigInteger($aKeys['publickey']['n'], 10);
             $sHash = \md5($e->toHex() . $n->toHex());
             \RainLoop\Service::$__HIDE_ERROR_NOTICES = false;
             return $this->DefaultResponse(__FUNCTION__, $this->Cacher()->Set(\RainLoop\KeyPathHelper::RsaCacherKey($sHash), $aKeys['privatekey']) ? array($sHash, $e->toHex(), $n->toHex()) : false);
         }
     }
     \RainLoop\Service::$__HIDE_ERROR_NOTICES = false;
     return $this->FalseResponse(__FUNCTION__);
 }