init commit
All checks were successful
build-api-image / build (push) Successful in 51s

This commit is contained in:
Antonio Lopes dos Santos
2026-08-04 16:52:02 -03:00
commit afec302c3e
11594 changed files with 1636728 additions and 0 deletions

View File

@@ -0,0 +1,77 @@
<?php
namespace App\Http\Controllers;
use App\Exceptions\RestPki\CertificadoInvalidException;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Lacuna\RestPki\PadesMeasurementUnits;
use Lacuna\RestPki\PadesSignatureFinisher2;
use Lacuna\RestPki\PadesSignatureStarter;
use Lacuna\RestPki\RestPkiClient;
use Lacuna\RestPki\StandardSecurityContexts;
use Lacuna\RestPki\StandardSignaturePolicies;
class RestPkiController extends Controller
{
private $client;
public function __construct()
{
$this->client = new RestPkiClient(env('PKI_ENDPOINT_URL'), env('PKI_ACCESS_TOKEN'));
}
public function start(Request $request)
{
$visualRepresentation = [
'text' => [
'text' => 'Assinado eletronicamente por {{signerName}} ({{signerNationalId}})',
'fontSize' => 8.0,
'includeSigningTime' => true,
],
'position' => [
'pageNumber' => -1,
'auto' => [
'container' => [
'left' => 5.5,
'right' => 1.5,
'bottom' => 5.5,
'height' => 15.94,
],
'signatureRectangleSize' => [
'height' => 15.94,
'width' => 600.0,
],
'rowSpacing' => 0.0,
],
],
];
$signatureStarter = new PadesSignatureStarter($this->client);
$signatureStarter->signaturePolicy = StandardSignaturePolicies::PADES_BASIC_WITHOUT_LTV;
$signatureStarter->securityContext = StandardSecurityContexts::PKI_BRAZIL;
$signatureStarter->measurementUnits = PadesMeasurementUnits::PDFPOINTS;
$signatureStarter->visualRepresentation = $visualRepresentation;
$signatureStarter->setPdfToSignFromContentBase64($request->base64);
$token = $signatureStarter->startWithWebPki();
return response()->json(['token' => $token], Response::HTTP_OK);
}
public function finish(Request $request)
{
try {
$signatureFinisher = new PadesSignatureFinisher2($this->client);
$signatureFinisher->token = $request->token;
$signatureResult = $signatureFinisher->finish();
return response()->json($signatureResult->getContentBase64(), Response::HTTP_OK);
} catch (\Throwable $e) {
throw new CertificadoInvalidException;
}
}
}