Skip to content

dj-Andres/signSri

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SignSri - Firmador XAdES para SRI Ecuador

Descripción

SignSri es una librería PHP que facilita la firma digital de documentos XML utilizando el estándar XAdES (XML Advanced Electronic Signatures), específicamente diseñado para cumplir con los requisitos del Servicio de Rentas Internas (SRI) de Ecuador. Esta librería es ideal para la facturación electrónica y otros documentos que requieren firmas digitales seguras.

Requisitos

  • PHP 8.2 o superior
  • Extensión OpenSSL habilitada
  • Composer para la gestión de dependencias

Instalación

Instala la librería utilizando Composer:

composer require signsridj/sign-sri

Uso

Carga de Certificado PKCS12

Utiliza la clase Pkcs12Loader para cargar tu certificado digital en formato PKCS12:

use Signsridj\SignSri\Cripto\Pkcs12Loader;

$certs = Pkcs12Loader::load('ruta/al/certificado.p12', 'tu_clave_secreta');

Firma de Documentos XML

Para firmar un documento XML, sigue estos pasos:

  1. Carga el certificado
  2. Carga el documento XML
  3. Construye las propiedades firmadas
  4. Firma el documento
use Signsridj\SignSri\Cripto\Pkcs12Loader;
use Signsridj\SignSri\Signer\XmlSigner;
use Signsridj\SignSri\Xades\SignedPropertiesBuilder;

require 'vendor/autoload.php';

// Cargar certificado
$certs = Pkcs12Loader::load('certificado.p12', 'CLAVE');

// Cargar documento XML
$doc = new DOMDocument('1.0', 'UTF-8');
$doc->load('factura.xml');

// Generar ID único para propiedades firmadas
$signedPropsId = 'SignedProps-' . uniqid();

// Construir propiedades firmadas
$signedProps = SignedPropertiesBuilder::build(
    $doc,
    $signedPropsId,
    $certs['cert']
);

// Agregar propiedades al documento
$doc->documentElement->appendChild($signedProps);

// Firmar el documento
XmlSigner::sign(
    $doc,
    $certs['pkey'],
    $certs['cert'],
    $signedPropsId
);

// Guardar el documento firmado
$doc->save('factura_firmada.xml');

Validación de Firmas

Utiliza XadesValidator para validar firmas existentes:

use Signsridj\SignSri\Xades\XadesValidator;

$validator = new XadesValidator();
$isValid = $validator->validate($doc);

Clases Principales

  • Pkcs12Loader: Maneja la carga y extracción de certificados PKCS12
  • XmlSigner: Realiza la firma digital del documento XML
  • SignedPropertiesBuilder: Construye las propiedades firmadas XAdES
  • XadesValidator: Valida la integridad y autenticidad de las firmas XAdES
  • Certificate: Utilidades para el manejo de certificados digitales

Dependencias

Licencia

Este proyecto está bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.

Autor

Diego Jimenez - andres96jimenez@gmail.com

Contribuciones

Las contribuciones son bienvenidas. Por favor, abre un issue o envía un pull request en el repositorio oficial.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages