<?xml version="1.0" encoding="utf-8"?>

<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements. See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership. The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License. You may obtain a copy of the License at
  ~
  ~ http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied. See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License.
  -->

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
    xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/04/secext"
    xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
    <S:Header>
        <m:path xmlns:m="http://schemas.xmlsoap.org/rp">
            <m:action>http://fabrikam123.com/getQuote</m:action>
            <m:to>http://fabrikam123.com/stocks</m:to>
            <m:from>mailto:johnsmith@fabrikam123.com</m:from>
            <m:id>uuid:84b9f5d0-33fb-4a81-b02b-5b760641c1d6</m:id>
        </m:path>
        <wsse:Security>
            <wsse:BinarySecurityToken
                ValueType="wsse:X509v3"
                EncodingType="wsse:Base64Binary"
                Id="X509Token">
                MIIEZzCCA9CgAwIBAgIQEmtJZc0rqrKh5i...
            </wsse:BinarySecurityToken>
            <ds:Signature>
                <ds:SignedInfo>
                    <ds:CanonicalizationMethod Algorithm=
                                               "http://www.w3.org/2001/10/xml-exc-c14n#"/>
                    <ds:SignatureMethod Algorithm=
                                        "http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
                    <ds:Reference>
                        <ds:Transforms>
                            <ds:Transform Algorithm=
                                          "http://...#RoutingTransform"/>
                            <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>EULddytSo1...</ds:DigestValue>
                    </ds:Reference>
                </ds:SignedInfo>
                <ds:SignatureValue>
                    BL8jdfToEb1l/vXcMZNNjPOV...
                </ds:SignatureValue>
                <ds:KeyInfo>
                    <wsse:SecurityTokenReference>
                        <wsse:Reference URI="#X509Token"/>
                    </wsse:SecurityTokenReference>
                </ds:KeyInfo>
            </ds:Signature>
        </wsse:Security>
    </S:Header>
    <S:Body>
        <tru:StockSymbol xmlns:tru="http://fabrikam123.com/payloads">
            QQQ
        </tru:StockSymbol>
    </S:Body>
</S:Envelope>