128 lines
3.6 KiB
C#
128 lines
3.6 KiB
C#
using LevelCode.License.DataAccess;
|
|
using LevelCode.License.Models;
|
|
using LevelCode.License.Security;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Windows.Forms;
|
|
|
|
namespace LevelCode.License.Forms
|
|
{
|
|
public partial class FrmGerarLicencaKey : Form
|
|
{
|
|
private List<ModeloLicenca> _licencas;
|
|
|
|
public FrmGerarLicencaKey()
|
|
{
|
|
InitializeComponent();
|
|
|
|
// 🔐 Garante que as chaves RSA existem
|
|
KeyManager.GarantirChaves();
|
|
|
|
CarregarLicencas();
|
|
}
|
|
|
|
private void CarregarLicencas()
|
|
{
|
|
using (DbConexao db = new DbConexao())
|
|
{
|
|
LicencaDAL dal = new LicencaDAL(db);
|
|
|
|
_licencas = dal.BuscarTodas();
|
|
|
|
dgvLicencas.AutoGenerateColumns = true;
|
|
dgvLicencas.DataSource = _licencas;
|
|
}
|
|
}
|
|
|
|
|
|
private void btnGerarKey_Click(object sender, EventArgs e)
|
|
{
|
|
if (dgvLicencas.CurrentRow == null)
|
|
{
|
|
MessageBox.Show(
|
|
"Selecione uma licença.",
|
|
"Aviso",
|
|
MessageBoxButtons.OK,
|
|
MessageBoxIcon.Warning);
|
|
return;
|
|
}
|
|
|
|
ModeloLicenca licenca =
|
|
dgvLicencas.CurrentRow.DataBoundItem as ModeloLicenca;
|
|
|
|
if (licenca == null)
|
|
return;
|
|
|
|
SaveFileDialog sfd = new SaveFileDialog
|
|
{
|
|
Filter = "Arquivo de Licença (*.key)|*.key",
|
|
FileName = $"license_{licenca.IdLicenca}.key"
|
|
};
|
|
|
|
if (sfd.ShowDialog() != DialogResult.OK)
|
|
return;
|
|
|
|
try
|
|
{
|
|
// 🔑 Chave privada SEMPRE via KeyManager
|
|
string chavePrivada = KeyManager.ObterChavePrivada();
|
|
|
|
LicensePayload payload = new LicensePayload
|
|
{
|
|
// 🔴 ESSENCIAL PARA O CLIENTE
|
|
Key = licenca.LicenseKey,
|
|
|
|
// (opcional, mas útil)
|
|
LicencaId = licenca.IdLicenca,
|
|
|
|
Cliente = licenca.Cliente,
|
|
ExpiraEm = licenca.ExpiraEm,
|
|
LimiteMaquinas = licenca.LimiteMaquinas,
|
|
|
|
// ✅ AGORA COMPATÍVEL
|
|
Modulos = licenca.ModulosLista
|
|
};
|
|
|
|
LicenseEngine.GerarArquivoKey(
|
|
payload,
|
|
chavePrivada,
|
|
sfd.FileName);
|
|
|
|
MessageBox.Show(
|
|
"Arquivo .key gerado com sucesso!\n\n" +
|
|
"Chaves RSA em:\n" +
|
|
@"C:\LevelCode\Licensing\Keys\",
|
|
"Sucesso",
|
|
MessageBoxButtons.OK,
|
|
MessageBoxIcon.Information);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show(
|
|
ex.Message,
|
|
"Erro",
|
|
MessageBoxButtons.OK,
|
|
MessageBoxIcon.Error);
|
|
}
|
|
}
|
|
|
|
private void btnGerarChaves_Click(object sender, EventArgs e)
|
|
{
|
|
KeyManager.GarantirChaves();
|
|
|
|
MessageBox.Show(
|
|
"Chaves RSA geradas com sucesso!\n\n" +
|
|
@"C:\LevelCode\Licensing\Keys\",
|
|
"Chaves criadas",
|
|
MessageBoxButtons.OK,
|
|
MessageBoxIcon.Information);
|
|
}
|
|
|
|
private void button1_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
}
|
|
}
|