定制 ged/api-laravel 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

ged/api-laravel

最新稳定版本:2.5.2

Composer 安装命令:

composer require ged/api-laravel

包简介

Laravel Package para integração com GED API — Assinatura Digital PAdES ICP-Brasil e Emissão de Certificados Digitais

README 文档

README

Package oficial para integração com o GED.API.BR — Assinatura Digital e Emissão de Certificados.

Instalação

composer require ged/api-laravel
php artisan vendor:publish --tag=ged-api-config

Configuração (.env)

Uma única API Key com os serviços habilitados no painel (assinatura, certificado ou ambos):

GED_API_KEY=sua-chave-api

Inicialização

use Ged\ApiLaravel\GedApiClient;

$client = new GedApiClient(
    config('ged-api.base_url'),
    config('ged-api.api_key')
);

A mesma instância é usada para todos os serviços. A API valida automaticamente se a key tem o serviço habilitado.

Assinatura Digital PAdES

Requer serviço signature habilitado na key.

1. Preparar PDF

// A partir de arquivo
$result = $client->padesPrepareFromFile('/path/to/document.pdf');

// A partir de base64
$result = $client->padesPrepareFromBase64($pdfBase64);

// Com representação visual
$result = $client->padesPrepareFromFileWithVisual('/path/to/document.pdf', [
    'rect' => [100, 100, 300, 150],
    'page' => 1,
    'signer_name' => 'João da Silva',
]);

// $result['document_id']  → ID do documento
// $result['field_name']   → Campo de assinatura

2. Obter hash para assinar

$result = $client->padesCmsParams($documentId, $certDerBase64);

// $result['hash_hex']         → Hash SHA-256 para assinar
// $result['signed_attrs_hex'] → Atributos assinados

3. Injetar assinatura

// Com PKCS#1 (recomendado)
$result = $client->padesInjectPkcs1(
    $documentId,
    $fieldName,
    $signaturePkcs1DerHex,
    $signerCertDerBase64,
    $signerChainDerBase64  // opcional
);

// Com DER completa
$result = $client->padesInject($documentId, $fieldName, $signatureDerHex);

4. Finalizar

$result = $client->padesFinalize($documentId);

// $result['download_url'] → URL para download do PDF assinado
// $result['sha256']       → Hash do documento final

Extrair chave pública de certificado

// De arquivo PFX/P12
$result = $client->extractPublicKeyFromFile('/path/to/cert.pfx', 'senha');

// De conteúdo binário
$result = $client->extractPublicKey($certContent, 'senha', 'cert.pfx');

// $result['data']['public_key_der_base64'] → Chave pública em DER base64

Emissão de Certificados

Requer serviço certificate habilitado na key.

Emitir

$result = $client->issueCertificate(
    name: 'João da Silva',
    cpf: '123.456.789-00',
    email: 'joao@empresa.com.br',
    password: 'senha-segura-123',
    validityDays: 730  // opcional: 365, 730 (padrão) ou 1095
);

// $result['data']['pfx_base64']     → Certificado .pfx em base64
// $result['data']['serial']         → Serial do certificado
// $result['data']['name']           → Nome do titular
// $result['data']['issuer']         → Emissor (CA)
// $result['data']['valid_from']     → Início da validade
// $result['data']['valid_until']    → Fim da validade
// $result['data']['pfx_size_bytes'] → Tamanho do .pfx

Listar certificados emitidos

$result = $client->listCertificates(
    page: 1,
    perPage: 15,
    status: 'active',  // opcional: active, revoked, expired
    search: 'João'     // opcional: busca por nome, CPF, email ou serial
);

Revogar

$result = $client->revokeCertificate(
    serial: '12345',
    reason: 'Certificado comprometido'  // opcional
);

// Após revogação, o certificado não poderá mais ser usado para assinatura

Verificar validade (público)

$result = $client->verifyCertificate(serial: '12345');

// $result['data']['serial']      → Serial
// $result['data']['subject_cn']  → Nome do titular
// $result['data']['status']      → active, revoked, expired
// $result['data']['is_valid']    → true/false
// $result['data']['valid_from']  → Início da validade
// $result['data']['valid_until'] → Fim da validade
// $result['data']['revoked_at']  → Data da revogação (se revogado)

Endpoints

Assinatura (requer serviço signature)

Método Rota Descrição
POST /api/pades/prepare Preparar PDF
POST /api/pades/cms-params Obter hash
POST /api/pades/inject Injetar assinatura
POST /api/pades/finalize Finalizar

Certificados (requer serviço certificate)

Método Rota Descrição
POST /api/certificate/issue Emitir certificado
GET /api/certificate/list Listar emitidos
POST /api/certificate/revoke Revogar certificado
POST /api/certificate/extract-public-key Extrair chave pública

Públicos (sem autenticação)

Método Rota Descrição
GET /api/certificate/verify/{serial} Verificar validade
GET /api/certificate/crl Lista de revogados (CRL)

Serviços por API Key

Cada key pode ter um ou mais serviços habilitados:

Serviço Descrição Endpoints
signature Assinatura digital PAdES /api/pades/*
certificate Emissão e gestão de certificados /api/certificate/*

Os serviços são configurados no painel ao gerar a key. Uma key com ambos os serviços acessa todos os endpoints.

Revogação de Certificados

Certificados emitidos pela GED Platform CA podem ser revogados:

  • O certificado é marcado como revoked
  • Ao tentar assinar com esse certificado, a API retorna erro 403
  • O certificado aparece na CRL pública (/api/certificate/crl)
  • Certificados de outras CAs (ICP-Brasil, etc.) não são afetados

Suporte

统计信息

  • 总下载量: 133
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-10-09

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固