<?php
namespace App\Core\Library;
use Firebase\JWT\JWT;
use Firebase\JWT\Key;

class Crypto 
{
    private static $enc_key = 'sansoftwares1806';

    public static function setKey() {
        $enc_key = $_ENV['ENCRYPTION_KEY'];
        if(!empty($enc_key) || strlen($enc_key) == 16) {
            self::$enc_key = $enc_key;
        }
    }

    public static function random_strings() {
		$a = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
		$b = substr(str_shuffle($a), 0, 100);
		return substr(md5(time().$b), 0, 100);
	}

	public static function decrytData(String $encrypted) {
		self::setKey();	
		return openssl_decrypt(base64_decode($encrypted), 'AES-128-CBC', self::$enc_key, OPENSSL_RAW_DATA, self::$enc_key);
	}

	public static function encryptData(String $data) {
		self::setKey();
		return base64_encode(openssl_encrypt($data, 'AES-128-CBC', self::$enc_key, OPENSSL_RAW_DATA, self::$enc_key));
	}

	public static function getJwtToken(Array $payload) {
		self::setKey();
		return JWT::encode($payload, self::$enc_key, 'HS256');
	}

	public static function decryptJwtToken(String $jwt) {
		self::setKey();
		return JWT::decode($jwt, new Key(self::$enc_key, 'HS256'));
	}
}