Generate an an encryption key (symmetric-key cryptography)
public static generateEncryptionKey ( string &$secretKey = '' ) : EncryptionKey | ||
$secretKey | string | |
return | EncryptionKey |
/** * Execute the console command. * * @return mixed */ public function handle() { $enc_key = KeyFactory::generateEncryptionKey(); try { KeyFactory::save($enc_key, config('laracrypt.path')); } catch (\Throwable $t) { $this->error($t); } return $this->info("Your LaraCrypt encryption key has been generated."); }
public function testKeyTypes() { $key = KeyFactory::generateAuthenticationKey(); $this->assertFalse($key->isAsymmetricKey()); $this->assertFalse($key->isEncryptionKey()); $this->assertTrue($key->isSecretKey()); $this->assertTrue($key->isSigningKey()); $this->assertFalse($key->isPublicKey()); $key = KeyFactory::generateEncryptionKey(); $this->assertFalse($key->isAsymmetricKey()); $this->assertTrue($key->isEncryptionKey()); $this->assertTrue($key->isSecretKey()); $this->assertFalse($key->isSigningKey()); $this->assertFalse($key->isPublicKey()); $keypair = KeyFactory::generateEncryptionKeyPair(); $enc_secret = $keypair->getSecretKey(); $enc_public = $keypair->getPublicKey(); $this->assertTrue($enc_secret->isAsymmetricKey()); $this->assertTrue($enc_secret->isEncryptionKey()); $this->assertTrue($enc_secret->isSecretKey()); $this->assertFalse($enc_secret->isSigningKey()); $this->assertFalse($enc_secret->isPublicKey()); $this->assertTrue($enc_public->isAsymmetricKey()); $this->assertTrue($enc_public->isEncryptionKey()); $this->assertFalse($enc_public->isSecretKey()); $this->assertFalse($enc_public->isSigningKey()); $this->assertTrue($enc_public->isPublicKey()); $keypair = KeyFactory::generateSignatureKeyPair(); $sign_secret = $keypair->getSecretKey(); $sign_public = $keypair->getPublicKey(); $this->assertTrue($sign_secret->isAsymmetricKey()); $this->assertFalse($sign_secret->isEncryptionKey()); $this->assertTrue($sign_secret->isSecretKey()); $this->assertTrue($sign_public->isSigningKey()); $this->assertFalse($sign_secret->isPublicKey()); $this->assertTrue($sign_public->isAsymmetricKey()); $this->assertFalse($sign_public->isEncryptionKey()); $this->assertFalse($sign_public->isSecretKey()); $this->assertTrue($sign_public->isSigningKey()); $this->assertTrue($sign_public->isPublicKey()); }
public function it_can_create_new_auth_records($authenticationMapper, User $user5, AuthenticationRecordInterface $newAuth) { $newAuth->getSessionKey()->willReturn(KeyFactory::generateEncryptionKey()->getRawKeyMaterial()); $newAuth->getUsername()->willReturn('email'); $newAuth->getUserId()->willReturn(5); $user5->getId()->willReturn(5); $authenticationMapper->save(Argument::type(AuthenticationRecordInterface::class))->shouldBeCalled(); $authenticationMapper->create(Argument::type('integer'), Argument::type('string'), Argument::type('string'), Argument::type('string'))->willReturn($newAuth); $this->create($user5, 'userC', 'beestring')->shouldBeAnInstanceOf(AuthenticationRecordInterface::class); }
/** * Resalt a user's authentication table salt * * @param AuthenticationRecordInterface $auth * * @return AuthenticationRecordInterface */ private function resetAuthenticationKey(AuthenticationRecordInterface $auth) : AuthenticationRecordInterface { $key = KeyFactory::generateEncryptionKey(); $auth->setSessionKey($key->getRawKeyMaterial()); $this->authenticationProvider->update($auth); return $auth; }
break; default: throw new \Error(\trk('errors.crypto.unknown_key_type', $keyConfig['type'])); } } else { // We must generate this key/keypair at once: switch ($keyConfig['type']) { case 'EncryptionPublicKey': case 'SignaturePublicKey': throw new \Error(\trk('errors.crypto.cannot_generate_public_key')); case 'AuthenticationKey': $keys[$index] = KeyFactory::generateAuthenticationKey(); KeyFactory::save($keys[$index], $path); break; case 'EncryptionKey': $keys[$index] = KeyFactory::generateEncryptionKey(); KeyFactory::save($keys[$index], $path); break; case 'EncryptionSecretKey': $kp = KeyFactory::generateEncryptionKeyPair(); $keys[$index] = $kp->getSecretKey(); KeyFactory::save($keys[$index], $path); break; case 'SignatureSecretKey': $kp = KeyFactory::generateSignatureKeyPair(); $keys[$index] = $kp->getSecretKey(); KeyFactory::save($keys[$index], $path); break; case 'EncryptionKeyPair': $keys[$index] = KeyFactory::generateEncryptionKeyPair(); KeyFactory::save($keys[$index], $path);
<?php /** * Created by PhpStorm. * User: Glenn * Date: 2016-05-27 * Time: 11:22 AM */ include "/../vendor/autoload.php"; use ParagonIE\Halite\KeyFactory; // Generate a new random encryption key: $encryptionKey = KeyFactory::generateEncryptionKey(); // Saving a key to a file: KeyFactory::save($encryptionKey, './sec/encryption.key');
/** * Generate encryption key and save the file * */ public static function generateKey() { $enc_key = KeyFactory::generateEncryptionKey(); KeyFactory::save($enc_key, config('laracrypt.path')); }