summaryrefslogtreecommitdiff
path: root/xslt
diff options
context:
space:
mode:
Diffstat (limited to 'xslt')
-rw-r--r--xslt/swamid-sign.xsl123
1 files changed, 123 insertions, 0 deletions
diff --git a/xslt/swamid-sign.xsl b/xslt/swamid-sign.xsl
new file mode 100644
index 00000000..94e38477
--- /dev/null
+++ b/xslt/swamid-sign.xsl
@@ -0,0 +1,123 @@
+<?xml version="1.0"?>
+<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: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">
+ <xsl:comment>
+
+ IMPORTANT NOTICE: READ CAREFULLY
+
+You are reading this because You wish to use the technical information (the “Metadata”)
+published on behalf of the Registrars. These Terms of Access and Use (these “Terms”) govern
+the use of the Metadata. By accessing or using the Metadata You accept that the access and
+use will be on and subject to these Terms. These Terms will be binding and enforceable on
+You as contractual obligations.
+
+The Terms is available at
+
+- http://md.swamid.se/md/swamid-tou-sv.txt Swedish version - Legally Binding!
+- http://md.swamid.se/md/swamid-tou-en.txt English version - Non-normative translation
+
+If You do not accept these Terms, then You must not continue to use this Metadata.
+
+ </xsl:comment>
+ <md:EntitiesDescriptor>
+ <xsl:attribute name="Name"><xsl:value-of select="@Name"/></xsl:attribute>
+ <xsl:if test="@cacheDuration">
+ <xsl:attribute name="cacheDuration"><xsl:value-of select="@cacheDuration"/></xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@validUntil">
+ <xsl:attribute name="validUntil"><xsl:value-of select="$date"/></xsl:attribute>
+ </xsl:if>
+ <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 URI="">
+ <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#WithComments"/>
+ </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="md:EntityDescriptor">
+ <xsl:variable name="path"><xsl:value-of select="substring-after(@entityID,'://')"/></xsl:variable>
+ <xsl:variable name="host">
+ <xsl:if test="contains($path,'/')">
+ <xsl:value-of select="substring-before($path,'/')"/>
+ </xsl:if>
+ <xsl:if test="not(contains($path,'/'))">
+ <xsl:value-of select="$path"/>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="domain">
+ <xsl:value-of select="substring-after($host,'.')"/>
+ </xsl:variable>
+ <xsl:variable name="orginfo">
+ <xsl:value-of select="concat('../organization','/',$domain,'.xml')"/>
+ </xsl:variable>
+ <md:EntityDescriptor>
+ <xsl:apply-templates select="@*"/>
+ <xsl:if test="$rpi='true' and not(md:Extensions)">
+ <md:Extensions><xsl:call-template name="add-swamid-rpi"/></md:Extensions>
+ </xsl:if>
+ <xsl:apply-templates select="text()|comment()|md:Extensions|md:RoleDescriptor|md:IDPSSODescriptor|md:SPSSODescriptor|md:AuthnAuthorityDescriptor|md:AttributeAuthorityDescriptor|md:PDPDescriptor|md:AffiliationDescriptor"/>
+ <xsl:if test="not(md:Organization)">
+ <xsl:apply-templates select="document($orginfo)"/>
+ </xsl:if>
+ <xsl:if test="$defaultContact='true' and not(md:ContactPerson)">
+ <md:ContactPerson contactType="technical"><md:EmailAddress>operations@swamid.se</md:EmailAddress></md:ContactPerson>
+ </xsl:if>
+ <xsl:apply-templates select="md:Organization|md:ContactPerson|md:AdditionalMetadataLocation"/>
+ </md:EntityDescriptor>
+ </xsl:template>
+
+ <xsl:template match="md:EntityDescriptor/md:Extensions">
+ <md:Extensions>
+ <xsl:call-template name="add-swamid-rpi"/>
+ <xsl:apply-templates select="text()|comment()|node()"/>
+ </md:Extensions>
+ </xsl:template>
+
+ <xsl:template name="add-swamid-rpi">
+ <xsl:if test="$rpi='true' and not(mdrpi:RegistrationInfo[@registrationAuthority='http://swamid.se/'])">
+ <mdrpi:RegistrationInfo registrationAuthority="http://www.swamid.se/">
+ <mdrpi:RegistrationPolicy xml:lang="en">http://www.swamid.se/download/18.248ad5af12aa8136533800012293/SWAMID+Metadata+Registration+Practice+Statement-20110714.pdf</mdrpi:RegistrationPolicy>
+ </mdrpi:RegistrationInfo>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="@xml:base|@ID"/>
+
+ <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>