summaryrefslogtreecommitdiff
path: root/metadata/xslt/sign.xsl
blob: 51d2492a934db83e55a07d81667b223b05c3c356 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
                xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xmlns:xs="http://www.w3.org/2001/XMLSchema"
                xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
                xmlns:exsl="http://exslt.org/common"
                xmlns:mdrpi="urn:oasis:names:tc:SAML:metadata:rpi"
                extension-element-prefixes="exsl"
                xmlns:shibmd="urn:mace:shibboleth:metadata:1.0">

  <xsl:output method="xml" indent="yes" encoding="UTF-8"/>

  <xsl:template match="/md:EntitiesDescriptor">
    <md:EntitiesDescriptor>
      <xsl:apply-templates select="@*|text()|comment()"/>
      <ds:Signature>
	<ds:SignedInfo>
	  <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
	  <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
	  <ds:Reference>
            <xsl:attribute name="URI"><xsl:text>#</xsl:text><xsl:value-of select="@ID"/></xsl:attribute>
            <ds:Transforms>
              <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
	      <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
            </ds:Transforms>
            <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
            <ds:DigestValue></ds:DigestValue>
	  </ds:Reference>
	</ds:SignedInfo>
	<ds:SignatureValue/>
	<ds:KeyInfo>
	  <ds:X509Data>
	  </ds:X509Data>
	</ds:KeyInfo>
      </ds:Signature>
      <xsl:apply-templates/>
    </md:EntitiesDescriptor>
  </xsl:template>

  <xsl:template match="text()|comment()|@*">
    <xsl:copy/>
  </xsl:template>
  
  <xsl:template match="*">
    <xsl:copy>
      <xsl:apply-templates select="node()|@*"/>
    </xsl:copy>
  </xsl:template>

</xsl:stylesheet>