<?php
// Depto de Engenharia e Automacao - Master Automacao - Autor: Derlivon Silva
// Criptografia simetrica (AES-256-CBC) pra guardar senha de email no disco.
// Chave deriva do TOKEN do painel + hostname do servidor — quem copiar o emails.php
// pra outra maquina nao consegue descriptografar.

function _cryptoChave(string $tokenPainel): string
{
    // Deriva 32 bytes do token + hostname (uniao garante que so descriptografa nesta maquina)
    return hash('sha256', $tokenPainel . '|' . gethostname() . '|painel-backup-master', true);
}

function cryptoEncrypt(string $plain, string $tokenPainel): string
{
    $iv = random_bytes(16);
    $key = _cryptoChave($tokenPainel);
    $ct  = openssl_encrypt($plain, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);
    if ($ct === false) return '';
    return 'ENC1:' . base64_encode($iv . $ct);
}

function cryptoDecrypt(string $enc, string $tokenPainel): string
{
    if (strpos($enc, 'ENC1:') !== 0) return $enc;  // legado: senha em texto puro
    $raw = base64_decode(substr($enc, 5), true);
    if ($raw === false || strlen($raw) < 17) return '';
    $iv = substr($raw, 0, 16);
    $ct = substr($raw, 16);
    $key = _cryptoChave($tokenPainel);
    $pt = openssl_decrypt($ct, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);
    return $pt === false ? '' : $pt;
}
