/*
 * Copyright 2015-2017 Hans Leidekker for CodeWeavers
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#include <stdarg.h>
#include <assert.h>

#include "windef.h"
#include "winbase.h"
#include "webservices.h"

#include "wine/debug.h"
#include "wine/list.h"
#include "webservices_private.h"

WINE_DEFAULT_DEBUG_CHANNEL(webservices);

const char *debugstr_xmlstr( const WS_XML_STRING *str )
{
    if (!str) return "(null)";
    return debugstr_an( (const char *)str->bytes, str->length );
}

static CRITICAL_SECTION dict_cs;
static CRITICAL_SECTION_DEBUG dict_cs_debug =
{
    0, 0, &dict_cs,
    { &dict_cs_debug.ProcessLocksList,
      &dict_cs_debug.ProcessLocksList},
      0, 0, {(DWORD_PTR)(__FILE__ ": dict_cs") }
};
static CRITICAL_SECTION dict_cs = { &dict_cs_debug, -1, 0, 0, 0, 0 };

struct dictionary dict_builtin =
{
    {{0x82704485,0x222a,0x4f7c,{0xb9,0x7b,0xe9,0xa4,0x62,0xa9,0x66,0x2b}}}
};

static inline int cmp_string( const unsigned char *str, ULONG len, const unsigned char *str2, ULONG len2 )
{
    if (len < len2) return -1;
    else if (len > len2) return 1;
    while (len--)
    {
        if (*str == *str2) { str++; str2++; }
        else return *str - *str2;
    }
    return 0;
}

/* return -1 and string id if found, sort index if not found */
int find_string( const struct dictionary *dict, const unsigned char *data, ULONG len, ULONG *id )
{
    int i, c, min = 0, max = dict->dict.stringCount - 1;
    const WS_XML_STRING *strings = dict->dict.strings;
    while (min <= max)
    {
        i = (min + max) / 2;
        c = cmp_string( data, len, strings[dict->sorted[i]].bytes, strings[dict->sorted[i]].length );
        if (c < 0)
            max = i - 1;
        else if (c > 0)
            min = i + 1;
        else
        {
            if (id) *id = strings[dict->sorted[i]].id;
            return -1;
        }
    }
    return max + 1;
}

#define MIN_DICTIONARY_SIZE 256
#define MAX_DICTIONARY_SIZE 2048

static HRESULT grow_dict( struct dictionary *dict, ULONG size )
{
    WS_XML_STRING *tmp;
    ULONG new_size, *tmp_sorted;

    assert( !dict->dict.isConst );
    if (dict->size >= dict->dict.stringCount + size) return S_OK;
    if (dict->size + size > MAX_DICTIONARY_SIZE) return WS_E_QUOTA_EXCEEDED;

    if (!dict->dict.strings)
    {
        new_size = max( MIN_DICTIONARY_SIZE, size );
        if (!(dict->dict.strings = heap_alloc( new_size * sizeof(*dict->dict.strings) ))) return E_OUTOFMEMORY;
        if (!(dict->sorted = heap_alloc( new_size * sizeof(*dict->sorted) )))
        {
            heap_free( dict->dict.strings );
            dict->dict.strings = NULL;
            return E_OUTOFMEMORY;
        }
        dict->size = new_size;
        return S_OK;
    }

    new_size = max( dict->size * 2, size );
    if (!(tmp = heap_realloc( dict->dict.strings, new_size * sizeof(*tmp) ))) return E_OUTOFMEMORY;
    dict->dict.strings = tmp;
    if (!(tmp_sorted = heap_realloc( dict->sorted, new_size * sizeof(*tmp_sorted) ))) return E_OUTOFMEMORY;
    dict->sorted = tmp_sorted;

    dict->size = new_size;
    return S_OK;
}

void clear_dict( struct dictionary *dict )
{
    ULONG i;
    assert( !dict->dict.isConst );
    for (i = 0; i < dict->dict.stringCount; i++) heap_free( dict->dict.strings[i].bytes );
    heap_free( dict->dict.strings );
    dict->dict.strings = NULL;
    dict->dict.stringCount = 0;
    heap_free( dict->sorted );
    dict->sorted = NULL;
    dict->size = 0;
}

HRESULT insert_string( struct dictionary *dict, unsigned char *data, ULONG len, int i, ULONG *ret_id )
{
    ULONG id = dict->dict.stringCount;
    HRESULT hr;

    assert( !dict->dict.isConst );
    if ((hr = grow_dict( dict, 1 )) != S_OK) return hr;
    memmove( &dict->sorted[i] + 1, &dict->sorted[i], (dict->dict.stringCount - i) * sizeof(*dict->sorted) );
    dict->sorted[i] = id;

    dict->dict.strings[id].length     = len;
    dict->dict.strings[id].bytes      = data;
    dict->dict.strings[id].dictionary = &dict->dict;
    dict->dict.strings[id].id         = id;
    dict->dict.stringCount++;
    if (ret_id) *ret_id = id;
    return S_OK;
}

HRESULT add_xml_string( WS_XML_STRING *str )
{
    HRESULT hr = S_OK;
    int index;
    ULONG id;

    if (str->dictionary) return S_OK;
    EnterCriticalSection( &dict_cs );
    if ((index = find_string( &dict_builtin, str->bytes, str->length, &id )) == -1)
    {
        heap_free( str->bytes );
        *str = dict_builtin.dict.strings[id];
    }
    else if ((hr = insert_string( &dict_builtin, str->bytes, str->length, index, &id )) == S_OK)
    {
        *str = dict_builtin.dict.strings[id];
    }
    LeaveCriticalSection( &dict_cs );
    return hr;
}

WS_XML_STRING *alloc_xml_string( const unsigned char *data, ULONG len )
{
    WS_XML_STRING *ret;

    if (!(ret = heap_alloc_zero( sizeof(*ret) ))) return NULL;
    if ((ret->length = len) && !(ret->bytes = heap_alloc( len )))
    {
        heap_free( ret );
        return NULL;
    }
    if (data)
    {
        memcpy( ret->bytes, data, len );
        if (add_xml_string( ret ) != S_OK) WARN( "string not added to dictionary\n" );
    }
    return ret;
}

void free_xml_string( WS_XML_STRING *str )
{
    if (!str) return;
    if (!str->dictionary) heap_free( str->bytes );
    heap_free( str );
}

WS_XML_STRING *dup_xml_string( const WS_XML_STRING *src, BOOL use_static_dict )
{
    WS_XML_STRING *ret;
    unsigned char *data;
    HRESULT hr;
    int index;
    ULONG id;

    if (!(ret = heap_alloc( sizeof(*ret) ))) return NULL;
    if (src->dictionary)
    {
        *ret = *src;
        return ret;
    }
    if (use_static_dict && (index = find_string( &dict_builtin_static, src->bytes, src->length, &id )) == -1)
    {
        *ret = dict_builtin_static.dict.strings[id];
        return ret;
    }
    EnterCriticalSection( &dict_cs );
    if ((index = find_string( &dict_builtin, src->bytes, src->length, &id )) == -1)
    {
        *ret = dict_builtin.dict.strings[id];
        LeaveCriticalSection( &dict_cs );
        return ret;
    }
    if (!(data = heap_alloc( src->length )))
    {
        heap_free( ret );
        LeaveCriticalSection( &dict_cs );
        return NULL;
    }
    memcpy( data, src->bytes, src->length );
    if ((hr = insert_string( &dict_builtin, data, src->length, index, &id )) == S_OK)
    {
        *ret = dict_builtin.dict.strings[id];
        LeaveCriticalSection( &dict_cs );
        return ret;
    }
    LeaveCriticalSection( &dict_cs );

    WARN( "string not added to dictionary\n" );
    ret->length     = src->length;
    ret->bytes      = data;
    ret->dictionary = NULL;
    ret->id         = 0;
    return ret;
}

const struct dictionary dict_builtin_static;
static const WS_XML_STRING dict_strings[] =
{
#define X(str, id) { sizeof(str) - 1, (BYTE *)(str), (WS_XML_DICTIONARY *)&dict_builtin_static.dict, id },
    X("mustUnderstand", 0)
    X("Envelope", 1)
    X("http://www.w3.org/2003/05/soap-envelope", 2)
    X("http://www.w3.org/2005/08/addressing", 3)
    X("Header", 4)
    X("Action", 5)
    X("To", 6)
    X("Body", 7)
    X("Algorithm", 8)
    X("RelatesTo", 9)
    X("http://www.w3.org/2005/08/addressing/anonymous", 10)
    X("URI", 11)
    X("Reference", 12)
    X("MessageID", 13)
    X("Id", 14)
    X("Identifier", 15)
    X("http://schemas.xmlsoap.org/ws/2005/02/rm", 16)
    X("Transforms", 17)
    X("Transform", 18)
    X("DigestMethod", 19)
    X("DigestValue", 20)
    X("Address", 21)
    X("ReplyTo", 22)
    X("SequenceAcknowledgement", 23)
    X("AcknowledgementRange", 24)
    X("Upper", 25)
    X("Lower", 26)
    X("BufferRemaining", 27)
    X("http://schemas.microsoft.com/ws/2006/05/rm", 28)
    X("http://schemas.xmlsoap.org/ws/2005/02/rm/SequenceAcknowledgement", 29)
    X("SecurityTokenReference", 30)
    X("Sequence", 31)
    X("MessageNumber", 32)
    X("http://www.w3.org/2000/09/xmldsig#", 33)
    X("http://www.w3.org/2000/09/xmldsig#enveloped-signature", 34)
    X("KeyInfo", 35)
    X("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", 36)
    X("http://www.w3.org/2001/04/xmlenc#", 37)
    X("http://schemas.xmlsoap.org/ws/2005/02/sc", 38)
    X("DerivedKeyToken", 39)
    X("Nonce", 40)
    X("Signature", 41)
    X("SignedInfo", 42)
    X("CanonicalizationMethod", 43)
    X("SignatureMethod", 44)
    X("SignatureValue", 45)
    X("DataReference", 46)
    X("EncryptedData", 47)
    X("EncryptionMethod", 48)
    X("CipherData", 49)
    X("CipherValue", 50)
    X("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd", 51)
    X("Security", 52)
    X("Timestamp", 53)
    X("Created", 54)
    X("Expires", 55)
    X("Length", 56)
    X("ReferenceList", 57)
    X("ValueType", 58)
    X("Type", 59)
    X("EncryptedHeader", 60)
    X("http://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd", 61)
    X("RequestSecurityTokenResponseCollection", 62)
    X("http://schemas.xmlsoap.org/ws/2005/02/trust", 63)
    X("http://schemas.xmlsoap.org/ws/2005/02/trust#BinarySecret", 64)
    X("http://schemas.microsoft.com/ws/2006/02/transactions", 65)
    X("s", 66)
    X("Fault", 67)
    X("MustUnderstand", 68)
    X("role", 69)
    X("relay", 70)
    X("Code", 71)
    X("Reason", 72)
    X("Text", 73)
    X("Node", 74)
    X("Role", 75)
    X("Detail", 76)
    X("Value", 77)
    X("Subcode", 78)
    X("NotUnderstood", 79)
    X("qname", 80)
    X("", 81)
    X("From", 82)
    X("FaultTo", 83)
    X("EndpointReference", 84)
    X("PortType", 85)
    X("ServiceName", 86)
    X("PortName", 87)
    X("ReferenceProperties", 88)
    X("RelationshipType", 89)
    X("Reply", 90)
    X("a", 91)
    X("http://schemas.xmlsoap.org/ws/2006/02/addressingidentity", 92)
    X("Identity", 93)
    X("Spn", 94)
    X("Upn", 95)
    X("Rsa", 96)
    X("Dns", 97)
    X("X509v3Certificate", 98)
    X("http://www.w3.org/2005/08/addressing/fault", 99)
    X("ReferenceParameters", 100)
    X("IsReferenceParameter", 101)
    X("http://www.w3.org/2005/08/addressing/reply", 102)
    X("http://www.w3.org/2005/08/addressing/none", 103)
    X("Metadata", 104)
    X("http://schemas.xmlsoap.org/ws/2004/08/addressing", 105)
    X("http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous", 106)
    X("http://schemas.xmlsoap.org/ws/2004/08/addressing/fault", 107)
    X("http://schemas.xmlsoap.org/ws/2004/06/addressingex", 108)
    X("RedirectTo", 109)
    X("Via", 110)
    X("http://www.w3.org/2001/10/xml-exc-c14n#", 111)
    X("PrefixList", 112)
    X("InclusiveNamespaces", 113)
    X("ec", 114)
    X("SecurityContextToken", 115)
    X("Generation", 116)
    X("Label", 117)
    X("Offset", 118)
    X("Properties", 119)
    X("Cookie", 120)
    X("wsc", 121)
    X("http://schemas.xmlsoap.org/ws/2004/04/sc", 122)
    X("http://schemas.xmlsoap.org/ws/2004/04/security/sc/dk", 123)
    X("http://schemas.xmlsoap.org/ws/2004/04/security/sc/sct", 124)
    X("http://schemas.xmlsoap.org/ws/2004/04/security/trust/RST/SCT", 125)
    X("http://schemas.xmlsoap.org/ws/2004/04/security/trust/RSTR/SCT", 126)
    X("RenewNeeded", 127)
    X("BadContextToken", 128)
    X("c", 129)
    X("http://schemas.xmlsoap.org/ws/2005/02/sc/dk", 130)
    X("http://schemas.xmlsoap.org/ws/2005/02/sc/sct", 131)
    X("http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT", 132)
    X("http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT", 133)
    X("http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Renew", 134)
    X("http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Renew", 135)
    X("http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Cancel", 136)
    X("http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Cancel", 137)
    X("http://www.w3.org/2001/04/xmlenc#aes128-cbc", 138)
    X("http://www.w3.org/2001/04/xmlenc#kw-aes128", 139)
    X("http://www.w3.org/2001/04/xmlenc#aes192-cbc", 140)
    X("http://www.w3.org/2001/04/xmlenc#kw-aes192", 141)
    X("http://www.w3.org/2001/04/xmlenc#aes256-cbc", 142)
    X("http://www.w3.org/2001/04/xmlenc#kw-aes256", 143)
    X("http://www.w3.org/2001/04/xmlenc#des-cbc", 144)
    X("http://www.w3.org/2000/09/xmldsig#dsa-sha1", 145)
    X("http://www.w3.org/2001/10/xml-exc-c14n#WithComments", 146)
    X("http://www.w3.org/2000/09/xmldsig#hmac-sha1", 147)
    X("http://www.w3.org/2001/04/xmldsig-more#hmac-sha256", 148)
    X("http://schemas.xmlsoap.org/ws/2005/02/sc/dk/p_sha1", 149)
    X("http://www.w3.org/2001/04/xmlenc#ripemd160", 150)
    X("http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p", 151)
    X("http://www.w3.org/2000/09/xmldsig#rsa-sha1", 152)
    X("http://www.w3.org/2001/04/xmldsig-more#rsa-sha256", 153)
    X("http://www.w3.org/2001/04/xmlenc#rsa-1_5", 154)
    X("http://www.w3.org/2000/09/xmldsig#sha1", 155)
    X("http://www.w3.org/2001/04/xmlenc#sha256", 156)
    X("http://www.w3.org/2001/04/xmlenc#sha512", 157)
    X("http://www.w3.org/2001/04/xmlenc#tripledes-cbc", 158)
    X("http://www.w3.org/2001/04/xmlenc#kw-tripledes", 159)
    X("http://schemas.xmlsoap.org/2005/02/trust/tlsnego#TLS_Wrap", 160)
    X("http://schemas.xmlsoap.org/2005/02/trust/spnego#GSS_Wrap", 161)
    X("http://schemas.microsoft.com/ws/2006/05/security", 162)
    X("dnse", 163)
    X("o", 164)
    X("Password", 165)
    X("PasswordText", 166)
    X("Username", 167)
    X("UsernameToken", 168)
    X("BinarySecurityToken", 169)
    X("EncodingType", 170)
    X("KeyIdentifier", 171)
    X("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary", 172)
    X("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#HexBinary", 173)
    X("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Text", 174)
    X("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509SubjectKeyIdentifier", 175)
    X("http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile-1.1#GSS_Kerberosv5_AP_REQ", 176)
    X("http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile-1.1#GSS_Kerberosv5_AP_REQ1510", 177)
    X("http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.0#SAMLAssertionID", 178)
    X("Assertion", 179)
    X("urn:oasis:names:tc:SAML:1.0:assertion", 180)
    X("http://docs.oasis-open.org/wss/oasis-wss-rel-token-profile-1.0.pdf#license", 181)
    X("FailedAuthentication", 182)
    X("InvalidSecurityToken", 183)
    X("InvalidSecurity", 184)
    X("k", 185)
    X("SignatureConfirmation", 186)
    X("TokenType", 187)
    X("http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#ThumbprintSHA1", 188)
    X("http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKey", 189)
    X("http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKeySHA1", 190)
    X("http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1", 191)
    X("http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0", 192)
    X("http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLID", 193)
    X("AUTH-HASH", 194)
    X("RequestSecurityTokenResponse", 195)
    X("KeySize", 196)
    X("RequestedTokenReference", 197)
    X("AppliesTo", 198)
    X("Authenticator", 199)
    X("CombinedHash", 200)
    X("BinaryExchange", 201)
    X("Lifetime", 202)
    X("RequestedSecurityToken", 203)
    X("Entropy", 204)
    X("RequestedProofToken", 205)
    X("ComputedKey", 206)
    X("RequestSecurityToken", 207)
    X("RequestType", 208)
    X("Context", 209)
    X("BinarySecret", 210)
    X("http://schemas.xmlsoap.org/ws/2005/02/trust/spnego", 211)
    X("http://schemas.xmlsoap.org/ws/2005/02/trust/tlsnego", 212)
    X("wst", 213)
    X("http://schemas.xmlsoap.org/ws/2004/04/trust", 214)
    X("http://schemas.xmlsoap.org/ws/2004/04/security/trust/RST/Issue", 215)
    X("http://schemas.xmlsoap.org/ws/2004/04/security/trust/RSTR/Issue", 216)
    X("http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue", 217)
    X("http://schemas.xmlsoap.org/ws/2004/04/security/trust/CK/PSHA1", 218)
    X("http://schemas.xmlsoap.org/ws/2004/04/security/trust/SymmetricKey", 219)
    X("http://schemas.xmlsoap.org/ws/2004/04/security/trust/Nonce", 220)
    X("KeyType", 221)
    X("http://schemas.xmlsoap.org/ws/2004/04/trust/SymmetricKey", 222)
    X("http://schemas.xmlsoap.org/ws/2004/04/trust/PublicKey", 223)
    X("Claims", 224)
    X("InvalidRequest", 225)
    X("RequestFailed", 226)
    X("SignWith", 227)
    X("EncryptWith", 228)
    X("EncryptionAlgorithm", 229)
    X("CanonicalizationAlgorithm", 230)
    X("ComputedKeyAlgorithm", 231)
    X("UseKey", 232)
    X("http://schemas.microsoft.com/net/2004/07/secext/WS-SPNego", 233)
    X("http://schemas.microsoft.com/net/2004/07/secext/TLSNego", 234)
    X("t", 235)
    X("http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue", 236)
    X("http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/Issue", 237)
    X("http://schemas.xmlsoap.org/ws/2005/02/trust/Issue", 238)
    X("http://schemas.xmlsoap.org/ws/2005/02/trust/SymmetricKey", 239)
    X("http://schemas.xmlsoap.org/ws/2005/02/trust/CK/PSHA1", 240)
    X("http://schemas.xmlsoap.org/ws/2005/02/trust/Nonce", 241)
    X("RenewTarget", 242)
    X("CancelTarget", 243)
    X("RequestedTokenCancelled", 244)
    X("RequestedAttachedReference", 245)
    X("RequestedUnattachedReference", 246)
    X("IssuedTokens", 247)
    X("http://schemas.xmlsoap.org/ws/2005/02/trust/Renew", 248)
    X("http://schemas.xmlsoap.org/ws/2005/02/trust/Cancel", 249)
    X("http://schemas.xmlsoap.org/ws/2005/02/trust/PublicKey", 250)
    X("Access", 251)
    X("AccessDecision", 252)
    X("Advice", 253)
    X("AssertionID", 254)
    X("AssertionIDReference", 255)
    X("Attribute", 256)
    X("AttributeName", 257)
    X("AttributeNamespace", 258)
    X("AttributeStatement", 259)
    X("AttributeValue", 260)
    X("Audience", 261)
    X("AudienceRestrictionCondition", 262)
    X("AuthenticationInstant", 263)
    X("AuthenticationMethod", 264)
    X("AuthenticationStatement", 265)
    X("AuthorityBinding", 266)
    X("AuthorityKind", 267)
    X("AuthorizationDecisionStatement", 268)
    X("Binding", 269)
    X("Condition", 270)
    X("Conditions", 271)
    X("Decision", 272)
    X("DoNotCacheCondition", 273)
    X("Evidence", 274)
    X("IssueInstant", 275)
    X("Issuer", 276)
    X("Location", 277)
    X("MajorVersion", 278)
    X("MinorVersion", 279)
    X("NameIdentifier", 280)
    X("Format", 281)
    X("NameQualifier", 282)
    X("Namespace", 283)
    X("NotBefore", 284)
    X("NotOnOrAfter", 285)
    X("saml", 286)
    X("Statement", 287)
    X("Subject", 288)
    X("SubjectConfirmation", 289)
    X("SubjectConfirmationData", 290)
    X("ConfirmationMethod", 291)
    X("urn:oasis:names:tc:SAML:1.0:cm:holder-of-key", 292)
    X("urn:oasis:names:tc:SAML:1.0:cm:sender-vouches", 293)
    X("SubjectLocality", 294)
    X("DNSAddress", 295)
    X("IPAddress", 296)
    X("SubjectStatement", 297)
    X("urn:oasis:names:tc:SAML:1.0:am:unspecified", 298)
    X("xmlns", 299)
    X("Resource", 300)
    X("UserName", 301)
    X("urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName", 302)
    X("EmailName", 303)
    X("urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", 304)
    X("u", 305)
    X("ChannelInstance", 306)
    X("http://schemas.microsoft.com/ws/2005/02/duplex", 307)
    X("Encoding", 308)
    X("MimeType", 309)
    X("CarriedKeyName", 310)
    X("Recipient", 311)
    X("EncryptedKey", 312)
    X("KeyReference", 313)
    X("e", 314)
    X("http://www.w3.org/2001/04/xmlenc#Element", 315)
    X("http://www.w3.org/2001/04/xmlenc#Content", 316)
    X("KeyName", 317)
    X("MgmtData", 318)
    X("KeyValue", 319)
    X("RSAKeyValue", 320)
    X("Modulus", 321)
    X("Exponent", 322)
    X("X509Data", 323)
    X("X509IssuerSerial", 324)
    X("X509IssuerName", 325)
    X("X509SerialNumber", 326)
    X("X509Certificate", 327)
    X("AckRequested", 328)
    X("http://schemas.xmlsoap.org/ws/2005/02/rm/AckRequested", 329)
    X("AcksTo", 330)
    X("Accept", 331)
    X("CreateSequence", 332)
    X("http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence", 333)
    X("CreateSequenceRefused", 334)
    X("CreateSequenceResponse", 335)
    X("http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequenceResponse", 336)
    X("FaultCode", 337)
    X("InvalidAcknowledgement", 338)
    X("LastMessage", 339)
    X("http://schemas.xmlsoap.org/ws/2005/02/rm/LastMessage", 340)
    X("LastMessageNumberExceeded", 341)
    X("MessageNumberRollover", 342)
    X("Nack", 343)
    X("netrm", 344)
    X("Offer", 345)
    X("r", 346)
    X("SequenceFault", 347)
    X("SequenceTerminated", 348)
    X("TerminateSequence", 349)
    X("http://schemas.xmlsoap.org/ws/2005/02/rm/TerminateSequence", 350)
    X("UnknownSequence", 351)
    X("http://schemas.microsoft.com/ws/2006/02/tx/oletx", 352)
    X("oletx", 353)
    X("OleTxTransaction", 354)
    X("PropagationToken", 355)
    X("http://schemas.xmlsoap.org/ws/2004/10/wscoor", 356)
    X("wscoor", 357)
    X("CreateCoordinationContext", 358)
    X("CreateCoordinationContextResponse", 359)
    X("CoordinationContext", 360)
    X("CurrentContext", 361)
    X("CoordinationType", 362)
    X("RegistrationService", 363)
    X("Register", 364)
    X("RegisterResponse", 365)
    X("ProtocolIdentifier", 366)
    X("CoordinatorProtocolService", 367)
    X("ParticipantProtocolService", 368)
    X("http://schemas.xmlsoap.org/ws/2004/10/wscoor/CreateCoordinationContext", 369)
    X("http://schemas.xmlsoap.org/ws/2004/10/wscoor/CreateCoordinationContextResponse", 370)
    X("http://schemas.xmlsoap.org/ws/2004/10/wscoor/Register", 371)
    X("http://schemas.xmlsoap.org/ws/2004/10/wscoor/RegisterResponse", 372)
    X("http://schemas.xmlsoap.org/ws/2004/10/wscoor/fault", 373)
    X("ActivationCoordinatorPortType", 374)
    X("RegistrationCoordinatorPortType", 375)
    X("InvalidState", 376)
    X("InvalidProtocol", 377)
    X("InvalidParameters", 378)
    X("NoActivity", 379)
    X("ContextRefused", 380)
    X("AlreadyRegistered", 381)
    X("http://schemas.xmlsoap.org/ws/2004/10/wsat", 382)
    X("wsat", 383)
    X("http://schemas.xmlsoap.org/ws/2004/10/wsat/Completion", 384)
    X("http://schemas.xmlsoap.org/ws/2004/10/wsat/Durable2PC", 385)
    X("http://schemas.xmlsoap.org/ws/2004/10/wsat/Volatile2PC", 386)
    X("Prepare", 387)
    X("Prepared", 388)
    X("ReadOnly", 389)
    X("Commit", 390)
    X("Rollback", 391)
    X("Committed", 392)
    X("Aborted", 393)
    X("Replay", 394)
    X("http://schemas.xmlsoap.org/ws/2004/10/wsat/Commit", 395)
    X("http://schemas.xmlsoap.org/ws/2004/10/wsat/Rollback", 396)
    X("http://schemas.xmlsoap.org/ws/2004/10/wsat/Committed", 397)
    X("http://schemas.xmlsoap.org/ws/2004/10/wsat/Aborted", 398)
    X("http://schemas.xmlsoap.org/ws/2004/10/wsat/Prepare", 399)
    X("http://schemas.xmlsoap.org/ws/2004/10/wsat/Prepared", 400)
    X("http://schemas.xmlsoap.org/ws/2004/10/wsat/ReadOnly", 401)
    X("http://schemas.xmlsoap.org/ws/2004/10/wsat/Replay", 402)
    X("http://schemas.xmlsoap.org/ws/2004/10/wsat/fault", 403)
    X("CompletionCoordinatorPortType", 404)
    X("CompletionParticipantPortType", 405)
    X("CoordinatorPortType", 406)
    X("ParticipantPortType", 407)
    X("InconsistentInternalState", 408)
    X("mstx", 409)
    X("Enlistment", 410)
    X("protocol", 411)
    X("LocalTransactionId", 412)
    X("IsolationLevel", 413)
    X("IsolationFlags", 414)
    X("Description", 415)
    X("Loopback", 416)
    X("RegisterInfo", 417)
    X("ContextId", 418)
    X("TokenId", 419)
    X("AccessDenied", 420)
    X("InvalidPolicy", 421)
    X("CoordinatorRegistrationFailed", 422)
    X("TooManyEnlistments", 423)
    X("Disabled", 424)
    X("ActivityId", 425)
    X("http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics", 426)
    X("http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile-1.1#Kerberosv5APREQSHA1", 427)
    X("http://schemas.xmlsoap.org/ws/2002/12/policy", 428)
    X("FloodMessage", 429)
    X("LinkUtility", 430)
    X("Hops", 431)
    X("http://schemas.microsoft.com/net/2006/05/peer/HopCount", 432)
    X("PeerVia", 433)
    X("http://schemas.microsoft.com/net/2006/05/peer", 434)
    X("PeerFlooder", 435)
    X("PeerTo", 436)
    X("http://schemas.microsoft.com/ws/2005/05/routing", 437)
    X("PacketRoutable", 438)
    X("http://schemas.microsoft.com/ws/2005/05/addressing/none", 439)
    X("http://schemas.microsoft.com/ws/2005/05/envelope/none", 440)
    X("http://www.w3.org/2001/XMLSchema-instance", 441)
    X("http://www.w3.org/2001/XMLSchema", 442)
    X("nil", 443)
    X("type", 444)
    X("char", 445)
    X("boolean", 446)
    X("byte", 447)
    X("unsignedByte", 448)
    X("short", 449)
    X("unsignedShort", 450)
    X("int", 451)
    X("unsignedInt", 452)
    X("long", 453)
    X("unsignedLong", 454)
    X("float", 455)
    X("double", 456)
    X("decimal", 457)
    X("dateTime", 458)
    X("string", 459)
    X("base64Binary", 460)
    X("anyType", 461)
    X("duration", 462)
    X("guid", 463)
    X("anyURI", 464)
    X("QName", 465)
    X("time", 466)
    X("date", 467)
    X("hexBinary", 468)
    X("gYearMonth", 469)
    X("gYear", 470)
    X("gMonthDay", 471)
    X("gDay", 472)
    X("gMonth", 473)
    X("integer", 474)
    X("positiveInteger", 475)
    X("negativeInteger", 476)
    X("nonPositiveInteger", 477)
    X("nonNegativeInteger", 478)
    X("normalizedString", 479)
    X("ConnectionLimitReached", 480)
    X("http://schemas.xmlsoap.org/soap/envelope/", 481)
    X("actor", 482)
    X("faultcode", 483)
    X("faultstring", 484)
    X("faultactor", 485)
    X("detail", 486)
    X("urn:oasis:names:tc:SAML:1.0:cm:bearer", 487)
#undef X
};

static const ULONG dict_sorted[] =
{
    81, 91, 129, 314, 185, 164, 346, 66, 235, 305, 14, 6, 114, 97, 96, 94, 11, 95, 110, 451,
    443, 121, 213, 7, 71, 82, 431, 343, 74, 75, 73, 59, 447, 445, 467, 163, 472, 463, 453, 409,
    69, 286, 466, 444, 383, 67, 117, 26, 40, 345, 465, 90, 25, 77, 482, 455, 470, 344, 353, 80,
    70, 449, 299, 331, 251, 330, 5, 253, 224, 390, 120, 76, 281, 4, 276, 56, 118, 436, 72, 394,
    232, 464, 486, 456, 473, 459, 357, 393, 21, 269, 209, 54, 204, 55, 83, 35, 317, 196, 221, 321,
    433, 387, 22, 78, 288, 419, 461, 446, 457, 474, 261, 272, 424, 308, 1, 274, 322, 93, 319, 202,
    277, 416, 104, 318, 309, 165, 87, 85, 388, 389, 364, 300, 391, 52, 31, 227, 301, 167, 323, 458,
    462, 411, 194, 8, 198, 179, 256, 392, 270, 418, 303, 337, 296, 13, 283, 284, 311, 12, 9, 41,
    287, 53, 187, 18, 58, 483, 471, 468, 425, 49, 271, 295, 410, 116, 15, 379, 112, 119, 109, 42,
    17, 485, 469, 254, 50, 206, 415, 20, 228, 339, 430, 435, 320, 127, 242, 208, 86, 484, 452, 420,
    328, 210, 243, 200, 19, 170, 312, 429, 376, 275, 247, 313, 278, 279, 285, 166, 417, 460, 448, 454,
    257, 199, 267, 46, 47, 421, 171, 32, 282, 79, 57, 226, 347, 168, 450, 252, 260, 201, 310, 380,
    332, 361, 225, 414, 413, 68, 280, 438, 45, 325, 0, 128, 27, 306, 39, 60, 377, 184, 44, 294,
    351, 327, 476, 475, 266, 362, 48, 354, 355, 365, 89, 297, 324, 326, 479, 381, 84, 378, 349, 98,
    258, 259, 291, 412, 366, 348, 423, 478, 477, 169, 360, 406, 273, 229, 113, 407, 100, 88, 363, 205,
    289, 24, 255, 264, 231, 182, 183, 101, 207, 115, 263, 334, 342, 186, 43, 480, 335, 338, 203, 30,
    265, 244, 197, 23, 290, 230, 358, 408, 341, 367, 368, 245, 262, 195, 246, 374, 404, 405, 422, 268,
    375, 442, 359, 37, 33, 3, 180, 487, 62, 155, 156, 157, 111, 2, 122, 16, 38, 316, 315, 144,
    154, 481, 441, 103, 28, 382, 145, 152, 139, 141, 143, 150, 99, 102, 298, 214, 130, 63, 147, 138,
    140, 142, 428, 356, 131, 292, 434, 159, 293, 307, 158, 10, 437, 151, 352, 162, 105, 403, 395, 402,
    238, 241, 248, 153, 108, 398, 399, 373, 149, 249, 211, 148, 400, 401, 396, 132, 212, 146, 65, 123,
    397, 340, 240, 133, 440, 124, 223, 384, 385, 371, 329, 250, 236, 34, 432, 107, 386, 237, 304, 234,
    439, 333, 161, 222, 64, 239, 92, 233, 160, 134, 217, 220, 350, 136, 135, 137, 125, 426, 218, 126,
    372, 215, 216, 106, 336, 29, 219, 61, 302, 193, 369, 191, 192, 181, 370, 178, 189, 36, 188, 51,
    190, 174, 427, 176, 173, 177, 172, 175,
};

const struct dictionary dict_builtin_static =
{
    {{0xf93578f8,0x5852,0x4eb7,{0xa6,0xfc,0xe7,0x2b,0xb7,0x1d,0xb6,0x22}},
     (WS_XML_STRING *)dict_strings, sizeof(dict_strings)/sizeof(dict_strings[0]), TRUE},
    (ULONG *)dict_sorted
};

/**************************************************************************
 *          WsGetDictionary		[webservices.@]
 */
HRESULT WINAPI WsGetDictionary( WS_ENCODING encoding, WS_XML_DICTIONARY **dict, WS_ERROR *error )
{
    TRACE( "%u %p %p\n", encoding, dict, error );
    if (error) FIXME( "ignoring error parameter\n" );

    if (!dict) return E_INVALIDARG;

    if (encoding == WS_ENCODING_XML_BINARY_1 || encoding == WS_ENCODING_XML_BINARY_SESSION_1)
        *dict = (WS_XML_DICTIONARY *)&dict_builtin_static;
    else
        *dict = NULL;

    return S_OK;
}

/**************************************************************************
 *          WsXmlStringEquals		[webservices.@]
 */
HRESULT WINAPI WsXmlStringEquals( const WS_XML_STRING *str1, const WS_XML_STRING *str2, WS_ERROR *error )
{
    TRACE( "%s %s %p\n", debugstr_xmlstr(str1), debugstr_xmlstr(str2), error );
    if (error) FIXME( "ignoring error parameter\n" );

    if (!str1 || !str2) return E_INVALIDARG;

    if (str1->length != str2->length) return S_FALSE;
    if (!memcmp( str1->bytes, str2->bytes, str1->length )) return S_OK;
    return S_FALSE;
}
