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.
- PHP 8.2 o superior
- Extensión OpenSSL habilitada
- Composer para la gestión de dependencias
Instala la librería utilizando Composer:
composer require signsridj/sign-sriUtiliza 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');Para firmar un documento XML, sigue estos pasos:
- Carga el certificado
- Carga el documento XML
- Construye las propiedades firmadas
- 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');Utiliza XadesValidator para validar firmas existentes:
use Signsridj\SignSri\Xades\XadesValidator;
$validator = new XadesValidator();
$isValid = $validator->validate($doc);- 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
- robrichards/xmlseclibs: Librería para manipulación de XML y firmas digitales
Este proyecto está bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.
Diego Jimenez - andres96jimenez@gmail.com
Las contribuciones son bienvenidas. Por favor, abre un issue o envía un pull request en el repositorio oficial.