/*
 * Copyright (C) 2006 Mike McCormack
 *
 * 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
 */

#ifndef __WINE_SOFTPUB_H
#define __WINE_SOFTPUB_H

#include <wintrust.h>

#define WINTRUST_ACTION_GENERIC_CERT_VERIFY \
    { 0x189a3842, 0x3041, 0x11d1, { 0x85,0xe1,0x00,0xc0,0x4f,0xc2,0x95,0xee }}

#if defined(__GNUC__)
#define SP_GENERIC_CERT_INIT_FUNCTION (const WCHAR []) \
    {'S','o','f','t','p','u','b','D','e','f','C','e','r','t','I','n','i','t', 0}
#elif defined(_MSC_VER)
#define SP_GENERIC_CERT_INIT_FUNCTION L"SoftpubDefCertInit"
#else
static const WCHAR SP_GENERIC_CERT_INIT_FUNCTION[] =  \
    {'S','o','f','t','p','u','b','D','e','f','C','e','r','t','I','n','i','t', 0};
#endif

#define WINTRUST_ACTION_GENERIC_CHAIN_VERIFY \
    { 0xfc451c16, 0xac75, 0x11d1, { 0xb4,0xb8,0x00,0xc0,0x4f,0xb6,0x6e,0xa0 }}

#if defined(__GNUC__)
#define GENERIC_CHAIN_FINALPOLICY_FUNCTION (const WCHAR []) \
    {'G','e','n','e','r','i','c','C','h','a','i','n','F','i','n','a','l','P','r','o','v', 0}
#define GENERIC_CHAIN_CERTTRUST_FUNCTION (const WCHAR []) \
    {'G','e','n','e','r','i','c','C','h','a','i','n','C','e','r','t','i','f','i','c','a','t','e','T','r','u','s','t', 0}
#elif defined(_MSC_VER)
#define GENERIC_CHAIN_FINALPOLICY_FUNCTION L"GenericChainFinalProv"
#define GENERIC_CHAIN_CERTTRUST_FUNCTION   L"GenericChainCertificateTrust"
#else
static const WCHAR GENERIC_CHAIN_FINALPOLICY_FUNCTION[] = \
    {'G','e','n','e','r','i','c','C','h','a','i','n','F','i','n','a','l','P','r','o','v', 0};
static const WCHAR GENERIC_CHAIN_CERTTRUST_FUNCTION[] = \
    {'G','e','n','e','r','i','c','C','h','a','i','n','C','e','r','t','i','f','i','c','a','t','e','T','r','u','s','t', 0};
#endif

#if defined(__GNUC__)
#define SP_POLICY_PROVIDER_DLL_NAME (const WCHAR []) \
    {'W','I','N','T','R','U','S','T','.','D','L','L' ,0}
#elif defined(_MSC_VER)
#define SP_POLICY_PROVIDER_DLL_NAME L"WINTRUST.DLL"
#else
static const WCHAR SP_POLICY_PROVIDER_DLL_NAME[] =  \
    {'W','I','N','T','R','U','S','T','.','D','L','L', 0};
#endif

#define WINTRUST_ACTION_GENERIC_VERIFY_V2 \
    { 0xaac56b,   0xcd44, 0x11d0, { 0x8c,0xc2,0x00,0xc0,0x4f,0xc2,0x95,0xee }}

#if defined(__GNUC__)
#define SP_INIT_FUNCTION          (const WCHAR []) \
    {'S','o','f','t','p','u','b','I','n','i','t','i','a','l','i','z','e', 0}
#define SP_OBJTRUST_FUNCTION      (const WCHAR []) \
    {'S','o','f','t','p','u','b','L','o','a','d','M','e','s','s','a','g','e', 0}
#define SP_SIGTRUST_FUNCTION      (const WCHAR []) \
    {'S','o','f','t','p','u','b','L','o','a','d','S','i','g','n','a','t','u','r','e', 0}
#define SP_CHKCERT_FUNCTION       (const WCHAR []) \
    {'S','o','f','t','p','u','b','C','h','e','c','k','C','e','r','t', 0}
#define SP_FINALPOLICY_FUNCTION   (const WCHAR []) \
    {'S','o','f','t','p','u','b','A','u','t','h','e','n','t','i','c','o','d','e', 0}
#define SP_CLEANUPPOLICY_FUNCTION (const WCHAR []) \
    {'S','o','f','t','p','u','b','C','l','e','a','n','u','p', 0}
#elif defined(_MSC_VER)
#define SP_INIT_FUNCTION          L"SoftpubInitialize"
#define SP_OBJTRUST_FUNCTION      L"SoftpubLoadMessage"
#define SP_SIGTRUST_FUNCTION      L"SoftpubLoadSignature"
#define SP_CHKCERT_FUNCTION       L"SoftpubCheckCert"
#define SP_FINALPOLICY_FUNCTION   L"SoftpubAuthenticode"
#define SP_CLEANUPPOLICY_FUNCTION L"SoftpubCleanup"
#else
static const WCHAR SP_INIT_FUNCTION[]          =  \
    {'S','o','f','t','p','u','b','I','n','i','t','i','a','l','i','z','e', 0};
static const WCHAR SP_OBJTRUST_FUNCTION[]      =  \
    {'S','o','f','t','p','u','b','L','o','a','d','M','e','s','s','a','g','e', 0};
static const WCHAR SP_SIGTRUST_FUNCTION[]      =  \
    {'S','o','f','t','p','u','b','L','o','a','d','S','i','g','n','a','t','u','r','e', 0};
static const WCHAR SP_CHKCERT_FUNCTION[]       =  \
    {'S','o','f','t','p','u','b','C','h','e','c','k','C','e','r','t', 0};
static const WCHAR SP_FINALPOLICY_FUNCTION[]   =  \
    {'S','o','f','t','p','u','b','A','u','t','h','e','n','t','i','c','o','d','e', 0};
static const WCHAR SP_CLEANUPPOLICY_FUNCTION[] =  \
    {'S','o','f','t','p','u','b','C','l','e','a','n','u','p', 0};
#endif

#define WINTRUST_ACTION_TRUSTPROVIDER_TEST \
    { 0x573e31f8, 0xddba, 0x11d0, { 0x8c,0xcb,0x00,0xc0,0x4f,0xc2,0x95,0xee }}

#if defined(__GNUC__)
#define SP_TESTDUMPPOLICY_FUNCTION_TEST (const WCHAR []) \
    {'S','o','f','t','p','u','b','D','u','m','p','S','t','r','u','c','t','u','r','e', 0}
#elif defined(_MSC_VER)
#define SP_TESTDUMPPOLICY_FUNCTION_TEST L"SoftpubDumpStructure"
#else
static const WCHAR SP_TESTDUMPPOLICY_FUNCTION_TEST[] =  \
    {'S','o','f','t','p','u','b','D','u','m','p','S','t','r','u','c','t','u','r','e', 0};
#endif

#define HTTPSPROV_ACTION \
    { 0x573e31f8, 0xaaba, 0x11d0, { 0x8c,0xcb,0x00,0xc0,0x4f,0xc2,0x95,0xee }}

#if defined(__GNUC__)
#define HTTPS_CERTTRUST_FUNCTION (const WCHAR []) \
    {'H','T','T','P','S','C','e','r','t','i','f','i','c','a','t','e','T','r','u','s','t', 0}
#define HTTPS_FINALPOLICY_FUNCTION (const WCHAR []) \
    {'H','T','T','P','S','F','i','n','a','l','P','r','o','v', 0}
#elif defined(_MSC_VER)
#define HTTPS_FINALPOLICY_FUNCTION L"HTTPSFinalProv"
#define HTTPS_CERTTRUST_FUNCTION   L"HTTPSCertificateTrust"
#else
static const WCHAR HTTPS_CERTTRUST_FUNCTION[] =  \
    {'H','T','T','P','S','C','e','r','t','i','f','i','c','a','t','e','T','r','u','s','t', 0};
static const WCHAR HTTPS_FINALPOLICY_FUNCTION[] =  \
    {'H','T','T','P','S','F','i','n','a','l','P','r','o','v', 0};
#endif

#define OFFICESIGN_ACTION_VERIFY \
    { 0x5555c2cd, 0x17fb, 0x11d1, { 0x85,0xc4,0x00,0xc0,0x4f,0xc2,0x95,0xee }}

#if defined(__GNUC__)
#define OFFICE_POLICY_PROVIDER_DLL_NAME (const WCHAR []) \
    {'W','I','N','T','R','U','S','T','.','D','L','L' ,0}
#define OFFICE_INITPROV_FUNCTION (const WCHAR []) \
    {'O','f','f','i','c','e','I','n','i','t','i','a','l','i','z','e','P','o','l','i','c','y', 0}
#define OFFICE_CLEANUPPOLICY_FUNCTION (const WCHAR []) \
    {'O','f','f','i','c','e','C','l','e','a','n','u','p','P','o','l','i','c','y', 0}
#elif defined(_MSC_VER)
#define     OFFICE_POLICY_PROVIDER_DLL_NAME SP_POLICY_PROVIDER_DLL_NAME
#define     OFFICE_INITPROV_FUNCTION        L"OfficeInitializePolicy"
#define     OFFICE_CLEANUPPOLICY_FUNCTION   L"OfficeCleanupPolicy"
#else
static const WCHAR OFFICE_POLICY_PROVIDER_DLL_NAME[] =  \
    {'W','I','N','T','R','U','S','T','.','D','L','L', 0};
static const WCHAR OFFICE_INITPROV_FUNCTION[] = \
    {'O','f','f','i','c','e','I','n','i','t','i','a','l','i','z','e','P','o','l','i','c','y', 0};
static const WCHAR OFFICE_CLEANUPPOLICY_FUNCTION[] = \
    {'O','f','f','i','c','e','C','l','e','a','n','u','p','P','o','l','i','c','y', 0};
#endif

#define DRIVER_ACTION_VERIFY \
    { 0xf750e6c3, 0x38ee, 0x11d1, { 0x85,0xe5,0x00,0xc0,0x4f,0xc2,0x95,0xee }}

#if defined(__GNUC__)
#define DRIVER_INITPROV_FUNCTION (const WCHAR []) \
    {'D','r','i','v','e','r','I','n','i','t','i','a','l','i','z','e','P','o','l','i','c','y', 0}
#define DRIVER_FINALPOLPROV_FUNCTION (const WCHAR []) \
    {'D','r','i','v','e','r','F','i','n','a','l','P','o','l','i','c','y', 0}
#define DRIVER_CLEANUPPOLICY_FUNCTION (const WCHAR []) \
    {'D','r','i','v','e','r','C','l','e','a','n','u','p','P','o','l','i','c','y', 0}
#elif defined(_MSC_VER)
#define     DRIVER_INITPROV_FUNCTION      L"DriverInitializePolicy"
#define     DRIVER_FINALPOLPROV_FUNCTION  L"DriverFinalPolicy"
#define     DRIVER_CLEANUPPOLICY_FUNCTION L"DriverCleanupPolicy"
#else
static const WCHAR DRIVER_INITPROV_FUNCTION[] = \
    {'D','r','i','v','e','r','I','n','i','t','i','a','l','i','z','e','P','o','l','i','c','y', 0};
static const WCHAR DRIVER_FINALPOLPROV_FUNCTION[] = \
    {'D','r','i','v','e','r','F','i','n','a','l','P','o','l','i','c','y', 0};
static const WCHAR DRIVER_CLEANUPPOLICY_FUNCTION[] = \
    {'D','r','i','v','e','r','C','l','e','a','n','u','p','P','o','l','i','c','y', 0};
#endif

#endif /* __WINE_SOFTPUB_H */
