La firma XML (también llamada XMLDsig, DSig XML, XML-Sig) es una recomendación del W3C que define una sintaxis XML para la firma digital. Funcionalmente, tiene mucho en común con PKCS#7, pero es más extensible y está orientada hacia la firma de documentos XML. Es utilizada por diversas tecnologías Web como SOAP, SAML y otras.
Las firmas XML se pueden utilizar para firmar datos o recursos de cualquier tipo, normalmente documentos XML, pero cualquier cosa que sea accesible a través de una URL puede firmarse. Una firma XML que se utiliza para firmar un recurso fuera del documento XML que la contiene se llama una firma separada (detached). Si se utiliza para firmar una parte del documento que la contiene, se llama una firma envuelta (enveloped). Si contiene los datos firmados dentro de sí mismo se llama una firma envolvente (enveloping).
Una firma XML consiste en un elemento Signature (Firma) en el espacio de nombres de http://www.w3.org/2000/09/xmldsig#. La estructura básica es la siguiente:
<Signature>
<SignedInfo>
<SignatureMethod />
<CanonicalizationMethod />
<Reference>
<Transforms>
<DigestMethod>
<DigestValue>
</Reference>
<Reference /> etc.
</SignedInfo>
<SignatureValue />
<KeyInfo />
<Object />
</Signature>