Download the PHP package lenincrdva/xades-bes-signer without Composer
On this page you can find all versions of the php package lenincrdva/xades-bes-signer. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download lenincrdva/xades-bes-signer
More information about lenincrdva/xades-bes-signer
Files in lenincrdva/xades-bes-signer
Package xades-bes-signer
Short Description PHP library to sign and verify XML documents under the XAdES-BES standard, compliant with the SRI (Ecuador) electronic invoicing requirements.
License MIT
Informations about the package xades-bes-signer
XAdES-BES Signer
Librería PHP para firmar y verificar documentos XML bajo el estándar XAdES-BES, compatible con los requisitos de facturación electrónica del SRI de Ecuador (misma estructura que genera la implementación de referencia XAdES4J que el SRI acepta).
Características
- Firma enveloped XAdES-BES sobre la raíz del documento (XML-DSig +
XAdES
QualifyingProperties). - Estructura espejo de la referencia aceptada por el SRI:
- 3 referencias en
SignedInfoen orden:SignedProperties→KeyInfo→ documento. ds:KeyInfocon certificado (ds:X509Certificate) y clave pública (ds:KeyValue/ds:RSAKeyValue).xades:Description= "contenido comprobante" yxades:MimeTypeenDataObjectFormat.- Base64 envuelto a 76 caracteres por línea.
- Namespaces
ds/xadesdeclarados una sola vez ends:Signature.
- 3 referencias en
- SHA-1 por defecto (
rsa-sha1, digestsha1yCertDigestsha1), tal como exige el SRI; SHA-256 disponible de forma opcional. - Verificación exhaustiva: firma RSA sobre
SignedInfo, digest del documento, deSignedPropertiesy deKeyInfo, coincidencia deCertDigest/IssuerSerialy vigencia del certificado. - Soporte de certificados PKCS#12 (
.p12/.pfx) locales. - Interfaz
PrivateKeySignerInterfacepara firmar con HSM/remoto o cualquier otro origen de clave. - Firmado por lotes (
BatchSigner). - CLI:
bin/xades-bes. - Fixtures y validación contra los XSD oficiales del SRI.
Requisitos
- PHP >= 8.1
- Extensiones:
dom,openssl,json - OpenSSL 3.x con el proveedor legacy activado (ver más abajo).
Instalación
OpenSSL 3.x: activar el proveedor legacy
Importante. Los certificados .p12 emitidos por las entidades
certificadoras ecuatorianas (por ejemplo los tokens del SRI o del BCE)
suelen proteger la clave privada con algoritmos legacy como 3DES o RC2.
OpenSSL 3.x desactiva esos algoritmos por defecto, por lo que
P12CertificateLoader fallará al leer el contenedor con un error similar a:
Para poder leer estos certificados es obligatorio activar el proveedor
legacy de OpenSSL. Incluimos un fichero de configuración listo para usar en
docker/openssl.cnf:
Docker
Monta el fichero sobre la configuración de OpenSSL del contenedor PHP y reinicia el servicio:
Las imágenes PHP oficiales con OpenSSL compilado de forma estática leen la configuración desde una ruta predefinida (p. ej.
/ssl/openssl.cnf), que puede no existir. En ese caso monta el fichero también ahí:Ten en cuenta que una variable de entorno
OPENSSL_CONFestablecida dentro del proceso PHP puede llegar demasiado tarde cuando OpenSSL ya inicializó sus proveedores; el montaje del fichero en la ruta esperada es el método más fiable.
Host local
Apunta OPENSSL_CONF al fichero antes de arrancar el proceso PHP:
Si usas PHP-FPM o Apache, exporta la variable en la configuración del servicio y reinícialo.
Comprobación
Debe aparecer el proveedor legacy. También puedes verificar la lectura
directa de tu certificado:
Uso rápido
Firmar un documento
Verificar un documento firmado
Algoritmo de firma
| Algoritmo | Digest | SignatureMethod | Uso |
|---|---|---|---|
sha1 (default) |
sha1 |
rsa-sha1 |
Compatibilidad total con el SRI |
sha256 |
sha256 |
rsa-sha256 |
Alternativa más fuerte |
Selección explícita:
Nota: el algoritmo debe ser el mismo al cargar la clave y al crear el
SignatureContext, porque el algoritmo de firma RSA se toma delSignatureMethody debe coincidir con el que usó el proveedor de clave.
Firmado por lotes
Firmado remoto / HSM
P12CertificateLoader devuelve un PrivateKeySignerInterface. Para usar un
HSM, un API o un KMS, implementa la misma interfaz con tu token o servicio:
El pipeline de firma y verificación es idéntico al modo local.
CLI
Pruebas
Compatibilidad con el SRI
La estructura generada es la misma que produce la implementación de referencia XAdES4J aceptada por el SRI:
SignedInfocon 3 referencias en orden exacto:SignedProperties,KeyInfoy documento.ds:KeyInfoconId, certificado embebido yKeyValue/RSAKeyValue.xades:Description=contenido comprobanteyxades:MimeType=text/xml.- Base64 a 76 columnas y namespaces normalizados.
- SHA-1 en firma, digest y
CertDigest.
Licencia
MIT
All versions of xades-bes-signer with dependencies
ext-dom Version *
ext-openssl Version *
ext-json Version *