
cpp_quote("/*++")
cpp_quote("                                                                                ")
cpp_quote("Copyright (c) 1997-1999 Microsoft Corporation")
cpp_quote("                                                                                ")
cpp_quote("Module Name: admex.h")
cpp_quote("                                                                                ")
cpp_quote("    Admin Extension Objects Interfaces")
cpp_quote("                                                                                ")
cpp_quote ("--*/")
cpp_quote("#ifndef _ADMEX_IADM_")
cpp_quote("#define _ADMEX_IADM_")

import "unknwn.idl";
import "wtypes.idl";
import "objidl.idl";
import "ocidl.idl";


cpp_quote("DEFINE_GUID(IID_IMSAdminReplication, 0xc804d980, 0xebec, 0x11d0, 0xa6, 0xa0, 0x0,0xa0, 0xc9, 0x22, 0xe7, 0x52);")
cpp_quote("DEFINE_GUID(IID_IMSAdminCryptoCapabilities, 0x78b64540, 0xf26d, 0x11d0, 0xa6, 0xa3, 0x0,0xa0, 0xc9, 0x22, 0xe7, 0x52);")
cpp_quote("DEFINE_GUID(CLSID_MSCryptoAdmEx, 0x9f0bd3a0, 0xec01, 0x11d0, 0xa6, 0xa0, 0x0,0xa0, 0xc9, 0x22, 0xe7, 0x52);")

cpp_quote("/*                                                                              ")
cpp_quote("The Replication Interface                                                              ")
cpp_quote("*/                                                                              ")


[
    object,
    uuid(c804d980-ebec-11d0-a6a0-00a0c922e752),
    pointer_default(unique)
]

interface IMSAdminReplication : IUnknown {

  // Interfaces

    HRESULT GetSignature(
                    [in] DWORD dwBufferSize,
                    [out, size_is(dwBufferSize)] unsigned char *pbBuffer,
					[out] DWORD *pdwMDRequiredBufferSize );

    HRESULT Propagate(
                    [in] DWORD dwBufferSize,
                    [in, size_is(dwBufferSize)] unsigned char *pszBuffer );

    HRESULT Propagate2(
                    [in] DWORD dwBufferSize,
                    [in, size_is(dwBufferSize)] unsigned char *pszBuffer,
                    [in] DWORD dwSignatureMismatch );

    HRESULT Serialize(
                    [in] DWORD dwBufferSize,
                    [out, size_is(dwBufferSize)] unsigned char *pbBuffer,
					[out] DWORD *pdwMDRequiredBufferSize );

    HRESULT DeSerialize(
                    [in] DWORD dwBufferSize,
                    [in, size_is(dwBufferSize)] unsigned char *pbBuffer );
};


cpp_quote("/*                                                                              ")
cpp_quote("The Crypto capabilities Interface                                                              ")
cpp_quote("*/                                                                              ")

[
    object,
    uuid(78b64540-f26d-11d0-a6a3-00a0c922e752),
    pointer_default(unique)
]

interface IMSAdminCryptoCapabilities : IUnknown {

  // Interfaces

    HRESULT GetProtocols( 
        [in] DWORD dwBufferSize,
        [out, size_is(dwBufferSize)] unsigned char *pbBuffer,
        [out] DWORD *pdwMDRequiredBufferSize);

    HRESULT GetMaximumCipherStrength( 
        [out] LPDWORD pdwMaximumCipherStrength );

    HRESULT GetRootCertificates( 
        [in] DWORD dwBufferSize,
        [out, size_is(dwBufferSize)] unsigned char *pbBuffer,
        [out] DWORD *pdwMDRequiredBufferSize);

    HRESULT GetSupportedAlgs( 
        [in] DWORD dwBufferSize,
        [out, size_is(dwBufferSize)] DWORD *pbBuffer,
        [out] DWORD *pdwMDRequiredBufferSize);

    HRESULT SetCAList( 
        [in] DWORD dwBufferSize,
        [in, size_is(dwBufferSize)] unsigned char *pbBuffer );
};

cpp_quote("#endif")
