XmlSignatureNode
in package
Clase que representa el nodo "Signature" en un XML firmado electrónicamente utilizando el estándar de firma digital de XML (XML DSIG).
Table of Contents
Properties
- $certificate : Certificate
- Instancia del certificado digital cuando se están creando firmas.
- $data : array<string|int, mixed>
- Datos del nodo Signature.
- $doc : XmlDocument
- Documento XML que representa el nodo de la firma electrónica.
Methods
- getDigestValue() : string|null
- Obtiene el valor del DigestValue del nodo "Reference".
- getReference() : string|null
- Obtiene la referencia asociada a la firma electrónica, si existe.
- getXML() : string
- Obtiene el XML que representa el nodo "Signature" como string.
- loadXML() : self
- Carga el contenido de un nodo XML "Signature" en la instancia actual.
- setDigestValue() : self
- Establece el valor del DigestValue del nodo "Reference".
- setReference() : self
- Establece la referencia URI para la firma electrónica.
- sign() : self
- Firma el nodo "SignedInfo" del documento XML utilizando un certificado digital. Si no se ha proporcionado previamente un certificado, este puede ser pasado como argumento en la firma.
- validate() : void
- Valida el nodo de la firma electrónica del XML.
- validateDigestValue() : void
- Validar DigestValue de los datos firmados.
- validateSignatureValue() : void
- Valida la firma del nodo "SignedInfo" del XML utilizando el certificado X509.
- getCertificate() : Certificate|null
- Obtiene el certificado asociado a la firma electrónica.
- getSignatureValue() : string
- Obtiene la firma calculada para el nodo "SignedInfo".
- getX509Certificate() : string
- Obtiene el certificado X509 asociado al nodo "KeyInfo".
- getXmlDocument() : XmlDocument
- Obtiene el objeto `XmlDocument` que representa el nodo "Signature".
- setCertificate() : self
- Asigna un certificado digital a la instancia actual y actualiza los valores correspondientes en el nodo "KeyInfo" (módulo, exponente y certificado en formato X509).
- setSignatureValue() : self
- Establece el valor de la firma calculada para el nodo "SignedInfo".
Properties
$certificate
Instancia del certificado digital cuando se están creando firmas.
private
Certificate
$certificate
$data
Datos del nodo Signature.
private
array<string|int, mixed>
$data
= [
// Nodo raíz es Signature.
// Este es el nodo que se incluirá en los XML firmados.
'Signature' => [
'@attributes' => ['xmlns' => 'http://www.w3.org/2000/09/xmldsig#'],
// Datos que se firmarán. Acá el más importante es el tag
// "DigestValue" que contiene un "resumen" (digestión) del C14N
// del nodo de la referencia.
'SignedInfo' => ['@attributes' => ['xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance'], 'CanonicalizationMethod' => ['@attributes' => ['Algorithm' => 'http://www.w3.org/TR/2001/REC-xml-c14n-20010315']], 'SignatureMethod' => ['@attributes' => ['Algorithm' => 'http://www.w3.org/2000/09/xmldsig#rsa-sha1']], 'Reference' => ['@attributes' => [
// Indica cuál es el nodo de la referencia, debe tener
// como prefijo un "#". Si está vacío se entiende que
// se desea firmar todo el XML.
'URI' => '',
], 'Transforms' => ['Transform' => ['@attributes' => ['Algorithm' => 'http://www.w3.org/2000/09/xmldsig#enveloped-signature']]], 'DigestMethod' => ['@attributes' => ['Algorithm' => 'http://www.w3.org/2000/09/xmldsig#sha1']], 'DigestValue' => '']],
// Firma del C14N del nodo "SignedInfo".
// Se agrega después de construir el C14N del SignedInfo y firmar.
'SignatureValue' => '',
// Obligatorio.
// Información de la clave pública para la validación posterior
// de la firma electrónica.
'KeyInfo' => ['KeyValue' => ['RSAKeyValue' => [
'Modulus' => '',
// Obligatorio.
'Exponent' => '',
]], 'X509Data' => ['X509Certificate' => '']],
],
]
Por defecto se dejan vacíos los datos que se completarán posteriormente. Ya sea mediante una asignación de los datos o bien mediante la carga de un nuevo XML con los datos.
$doc
Documento XML que representa el nodo de la firma electrónica.
private
XmlDocument
$doc
Methods
getDigestValue()
Obtiene el valor del DigestValue del nodo "Reference".
public
getDigestValue() : string|null
Return values
string|null —El valor del DigestValue o null
si no está definido.
getReference()
Obtiene la referencia asociada a la firma electrónica, si existe.
public
getReference() : string|null
Return values
string|null —La referencia URI asociada al nodo "Signature", o null
si no tiene.
getXML()
Obtiene el XML que representa el nodo "Signature" como string.
public
getXML() : string
Return values
string —El XML en formato string del nodo "Signature".
loadXML()
Carga el contenido de un nodo XML "Signature" en la instancia actual.
public
loadXML(string $xml) : self
Parameters
- $xml : string
-
String XML que representa el nodo "Signature".
Return values
self —La instancia actual para encadenamiento de métodos.
setDigestValue()
Establece el valor del DigestValue del nodo "Reference".
public
setDigestValue(string $digestValue) : self
Parameters
- $digestValue : string
-
El DigestValue calculado.
Return values
self —La instancia actual para encadenamiento de métodos.
setReference()
Establece la referencia URI para la firma electrónica.
public
setReference([string|null $reference = null ]) : self
Parameters
- $reference : string|null = null
-
La referencia URI (debe incluir el prefijo "#").
Return values
self —La instancia actual para encadenamiento de métodos.
sign()
Firma el nodo "SignedInfo" del documento XML utilizando un certificado digital. Si no se ha proporcionado previamente un certificado, este puede ser pasado como argumento en la firma.
public
sign([Certificate|null $certificate = null ]) : self
Parameters
- $certificate : Certificate|null = null
-
El certificado digital a usar para firmar. Si no se proporciona, se utilizará el ya asignado.
Tags
Return values
self —La instancia actual para encadenamiento de métodos.
validate()
Valida el nodo de la firma electrónica del XML.
public
validate(XmlDocument|string $xml) : void
Valida el DigestValue y la firma de dicho DigestValue.
Parameters
- $xml : XmlDocument|string
-
Documento XML que se desea validar.
Tags
validateDigestValue()
Validar DigestValue de los datos firmados.
public
validateDigestValue(XmlDocument|string $xml) : void
Parameters
- $xml : XmlDocument|string
-
Documento XML que se desea validar.
Tags
validateSignatureValue()
Valida la firma del nodo "SignedInfo" del XML utilizando el certificado X509.
public
validateSignatureValue() : void
Tags
getCertificate()
Obtiene el certificado asociado a la firma electrónica.
private
getCertificate() : Certificate|null
Return values
Certificate|null —El certificado asociado o null
si no está asignado.
getSignatureValue()
Obtiene la firma calculada para el nodo "SignedInfo".
private
getSignatureValue() : string
Return values
string —El valor de la firma calculada en base64.
getX509Certificate()
Obtiene el certificado X509 asociado al nodo "KeyInfo".
private
getX509Certificate() : string
Return values
string —El certificado X509 en base64.
getXmlDocument()
Obtiene el objeto `XmlDocument` que representa el nodo "Signature".
private
getXmlDocument() : XmlDocument
Return values
XmlDocument —El objeto XmlDocument
con los datos del nodo
"Signature".
setCertificate()
Asigna un certificado digital a la instancia actual y actualiza los valores correspondientes en el nodo "KeyInfo" (módulo, exponente y certificado en formato X509).
private
setCertificate(Certificate $certificate) : self
Parameters
- $certificate : Certificate
-
El certificado digital a asignar.
Return values
self —La instancia actual para encadenamiento de métodos.
setSignatureValue()
Establece el valor de la firma calculada para el nodo "SignedInfo".
private
setSignatureValue(string $signatureValue) : self
Parameters
- $signatureValue : string
-
El valor de la firma en base64.
Return values
self —La instancia actual para encadenamiento de métodos.