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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
-
- This file is part of the OpenLink Software Virtuoso Open-Source (VOS)
- project.
-
- Copyright (C) 1998-2018 OpenLink Software
-
- This project is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the
- Free Software Foundation; only version 2 of the License, dated June 1991.
-
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-
-->
<refentry id="fn_dsig_template_ext">
<refmeta>
<refentrytitle>dsig_template_ext</refentrytitle>
<refmiscinfo>hash</refmiscinfo>
</refmeta>
<refnamediv>
<refname>dsig_template_ext</refname>
<refpurpose>Generates a Digital signature template based on a XML document.</refpurpose>
</refnamediv>
<refsynopsisdiv>
<funcsynopsis id="fsyn_dsig_template_ext">
<funcprototype id="fproto_dsig_template_ext">
<funcdef>varchar <function>dsig_template_ext</function></funcdef>
<paramdef>in <parameter>xdoc</parameter> any</paramdef>
<paramdef>in <parameter>tmpl</parameter> varchar</paramdef>
<paramdef>in <parameter>wss_ver</parameter> any</paramdef>
<paramdef>in <parameter>ns-n</parameter> varchar</paramdef>
<paramdef>in <parameter>elm-n</parameter> varchar</paramdef>
<paramdef>in <parameter>...</parameter> varchar</paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsect1 id="desc_dsig_template_ext">
<title>Description</title>
<para>
The function is used to generate dynamically a digital
signature template containing references to be signed.
</para>
</refsect1>
<refsect1 id="params_dsig_template_ext">
<title>Parameters</title>
<refsect2><title>xdoc</title>
<para>input XML document</para>
</refsect2>
<refsect2><title>tmpl</title>
<para>a string containing base XML template</para>
</refsect2>
<refsect2><title>wss_ver</title>
<para>vector containing WS-Security and WS-Utility version URIs</para>
</refsect2>
<refsect2><title>ns-n</title>
<para>namespace to match</para>
</refsect2>
<refsect2><title>elm-n</title>
<para>element name to match</para>
</refsect2>
</refsect1>
<refsect1 id="ret_dsig_template_ext"><title>Return Types</title>
<para>
On success the function will return a string containing
a XML template suitable to pass to the <function>xenc_encrypt</function>.
The elements matching listed in <parameter>elm-n</parameter> from namespace URIs in <parameter>ns-n</parameter> and having Id attribute will be included in the XML signature reference list.
</para>
</refsect1>
<refsect1 id="examples_dsig_template_ext">
<title>Examples</title>
<example id="ex_dsig_template_ext"><title>Making a XML signature template</title>
<screen><![CDATA[
create procedure XENC_TEMPLATE (in body varchar, in key_name varchar)
{
declare tmpl, algo varchar;
declare ns any;
-- OASIS WS-Security extensions
ns := vector (
'wsse', 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd',
'wsu', 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd'
);
algo := xenc_get_key_algo (key_name);
if (algo is null)
return NULL;
-- base XML template
tmpl := sprintf ('<?xml version="1.0" encoding="UTF-8"?>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#" >
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
<SignatureMethod Algorithm="%s" />
</SignedInfo>
<SignatureValue></SignatureValue>
<KeyInfo>
<KeyName>%s</KeyName>
</KeyInfo>
</Signature>', algo, key_name);
return dsig_template_ext (xtree_doc (body), tmpl, ns,
'http://schemas.xmlsoap.org/soap/envelope/', 'Body',
-- WS-Addressing
'http://schemas.xmlsoap.org/ws/2004/03/addressing', 'Action',
'http://schemas.xmlsoap.org/ws/2004/03/addressing', 'From',
'http://schemas.xmlsoap.org/ws/2004/03/addressing', 'To',
'http://schemas.xmlsoap.org/ws/2004/03/addressing', 'MessageID',
'http://schemas.xmlsoap.org/ws/2004/03/addressing', 'ReplyTo',
'http://schemas.xmlsoap.org/ws/2004/03/addressing', 'FaultTo',
'http://schemas.xmlsoap.org/ws/2004/03/addressing', 'RelatesTo'
);
}
;
]]>
</screen>
</example>
</refsect1>
</refentry>
|