//
//  Microsoft Windows Media Technologies
//  Copyright (C) Microsoft Corporation, 1999 - 2001. All rights reserved.
//

cpp_quote("#define SAC_MAC_LEN 8")
#define SAC_MAC_LEN 8

[
	object,
	uuid(A9889C00-6D2B-11d3-8496-00C04F79DBC0),
	pointer_default(unique)
]
interface IComponentAuthenticate : IUnknown
{
    // This method will be call one or more time as dictated by the protocolID.
    // The stucuture of the data in pbDataIn and pbDataOut is determined by 
    // the values of dwProtocolID and dwPass.
    HRESULT SACAuth([in] DWORD dwProtocolID,
                    [in] DWORD dwPass,
                    [in, size_is(dwDataInLen)] BYTE *pbDataIn,
                    [in] DWORD dwDataInLen,
                    [out, size_is(, *pdwDataOutLen)] BYTE **ppbDataOut,
                    [out] DWORD *pdwDataOutLen);

    // This method allows a component to discover the authentication protocols
    // supported by another component.
    HRESULT SACGetProtocols([out, size_is(, *pdwProtocolCount)] DWORD **ppdwProtocols,
                            [out] DWORD *pdwProtocolCount);
};