rmaauthn.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:19k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /****************************************************************************
  2.  * 
  3.  *  $Id: rmaauthn.h,v 1.1 2003/05/30 02:17:36 gabest Exp $
  4.  *
  5.  *  Copyright (C) 1995-1999 RealNetworks, Inc. All rights reserved.
  6.  *  
  7.  *  http://www.real.com/devzone
  8.  *
  9.  *  This program contains proprietary 
  10.  *  information of Progressive Networks, Inc, and is licensed
  11.  *  subject to restrictions on use and distribution.
  12.  *
  13.  *
  14.  *  RealMedia Architecture Interface.
  15.  *
  16.  */
  17. #ifndef _RMAAUTHN_H_
  18. #define _RMAAUTHN_H_
  19. /*
  20.  * Forward declarations of some interfaces defined or used here-in.
  21.  */
  22. typedef _INTERFACE  IUnknown     IUnknown;
  23. typedef _INTERFACE  IRMACredRequest     IRMACredRequest;
  24. typedef _INTERFACE  IRMACredRequestResponse     IRMACredRequestResponse;
  25. typedef _INTERFACE  IRMAClientAuthConversation     IRMAClientAuthConversation;
  26. typedef _INTERFACE  IRMAClientAuthResponse     IRMAClientAuthResponse;
  27. typedef _INTERFACE  IRMAServerAuthConversation     IRMAServerAuthConversation;
  28. typedef _INTERFACE  IRMAServerAuthResponse     IRMAServerAuthResponse;
  29. typedef _INTERFACE  IRMAUserContext     IRMAUserContext;
  30. typedef _INTERFACE  IRMAUserProperties     IRMAUserProperties;
  31. typedef _INTERFACE  IRMAUserImpersonation     IRMAUserImpersonation;
  32. typedef _INTERFACE  IRMAChallenge     IRMAChallenge;
  33. typedef _INTERFACE  IRMAChallengeResponse     IRMAChallengeResponse;
  34. typedef _INTERFACE  IRMARequest     IRMARequest;
  35. typedef _INTERFACE  IRMABuffer     IRMABuffer;
  36. typedef _INTERFACE  IRMAValues     IRMAValues;
  37. /****************************************************************************
  38.  * 
  39.  *  Interface:
  40.  *
  41.  * IRMACredRequest
  42.  *
  43.  *  Purpose:
  44.  *
  45.  * This is queried from the response interface passed into 
  46.  * IRMAClientAuthConversation::MakeResponse.  MakeResponse
  47.  * uses it to request the current user to enter their credentials. 
  48.  *
  49.  *  IRMACredRequest:
  50.  *
  51.  * {00002801-0901-11d1-8B06-00A024406D59}
  52.  *
  53.  */
  54. DEFINE_GUID(IID_IRMACredRequest,   0x00002801, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  55. #undef  INTERFACE
  56. #define INTERFACE   IRMACredRequest
  57. DECLARE_INTERFACE_(IRMACredRequest, IUnknown)
  58. {
  59.     /*
  60.      * IUnknown methods
  61.      */
  62.     STDMETHOD(QueryInterface) (THIS_
  63. REFIID riid,
  64. void** ppvObj) PURE;
  65.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  66.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  67.     /************************************************************************
  68.      * Method:
  69.      *     IRMACredRequest::GetCredentials
  70.      * Purpose:
  71.      *     
  72.      *     Call this to request the credentials.  Usually presents UI to 
  73.      *     the user asking for username and password.
  74.      *
  75.      *     While ignored at this time, pValuesCredentialRequest should
  76.      *     contain CString properties that describe the reason for the 
  77.      *     request. (like the URL, the Realm, the Auth protocol, and how 
  78.      *     secure it is, etc..)  In the future this data will be displayed
  79.      *     to the user.
  80.      *
  81.      */
  82.     STDMETHOD(GetCredentials)
  83.     (
  84. THIS_
  85. IRMACredRequestResponse* pCredRequestResponseRequester,
  86. IRMAValues* pValuesCredentialRequest
  87.     ) PURE;
  88. };
  89. /****************************************************************************
  90.  * 
  91.  *  Interface:
  92.  *
  93.  * IRMACredRequestResponse
  94.  *
  95.  *  Purpose:
  96.  *
  97.  * This is implemented by a client authenticator in order to receive
  98.  * the credentials requested in IRMACredRequest::GetCredentials
  99.  *
  100.  *  IRMACredRequestResponse:
  101.  *
  102.  * {00002800-0901-11d1-8B06-00A024406D59}
  103.  *
  104.  */
  105. DEFINE_GUID(IID_IRMACredRequestResponse,   0x00002800, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  106. #undef  INTERFACE
  107. #define INTERFACE   IRMACredRequestResponse
  108. DECLARE_INTERFACE_(IRMACredRequestResponse, IUnknown)
  109. {
  110.     /*
  111.      * IUnknown methods
  112.      */
  113.     STDMETHOD(QueryInterface) (THIS_
  114. REFIID riid,
  115. void** ppvObj) PURE;
  116.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  117.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  118.     /************************************************************************
  119.      * Method:
  120.      *     IRMACredRequestResponse::CredentialsReady
  121.      * Purpose:
  122.      *     
  123.      *     Reports the success or failure of 
  124.      *     IRMACredRequest::GetCredentials
  125.      *
  126.      *     If successful pValuesCredentials contains the requested 
  127.      *     credentials.  (usually CString:Username and CString:Password)
  128.      *
  129.      */
  130.     STDMETHOD(CredentialsReady)
  131.     (
  132. THIS_
  133. PN_RESULT ResultStatus,
  134. IRMAValues* pValuesCredentials
  135.     ) PURE;
  136. };
  137. /****************************************************************************
  138.  * 
  139.  *  Interface:
  140.  *
  141.  * IRMAClientAuthConversation
  142.  *
  143.  *  Purpose:
  144.  *
  145.  * This is implemented by a client authenticator in order to perform 
  146.  * the client side of an authentication protocol.
  147.  *
  148.  *  IRMAClientAuthConversation:
  149.  *
  150.  * {00002803-0901-11d1-8B06-00A024406D59}
  151.  *
  152.  */
  153. DEFINE_GUID(IID_IRMAClientAuthConversation,   0x00002803, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  154. /*
  155.  *  The IRMACommonClassFactory supports creating an instance
  156.  *  of this object.
  157.  */
  158. #define CLSID_CRMAClientAuthenticator IID_IRMAClientAuthConversation
  159. #undef  INTERFACE
  160. #define INTERFACE   IRMAClientAuthConversation
  161. DECLARE_INTERFACE_(IRMAClientAuthConversation, IUnknown)
  162. {
  163.     /*
  164.      * IUnknown methods
  165.      */
  166.     STDMETHOD(QueryInterface) (THIS_
  167. REFIID riid,
  168. void** ppvObj) PURE;
  169.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  170.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  171.     /************************************************************************
  172.      * Method:
  173.      *     IRMAClientAuthConversation::MakeResponse
  174.      * Purpose:
  175.      *     
  176.      *     Call this when a challenge is received from the server.
  177.      *     
  178.      *     pRequestChallengeHeaders should contain the server challenge.
  179.      *
  180.      */
  181.     STDMETHOD(MakeResponse)
  182.     (
  183. THIS_
  184. IRMAClientAuthResponse* pClientAuthResponseRequester,
  185. IRMARequest* pRequestChallengeHeaders
  186.     ) PURE;
  187.     /************************************************************************
  188.      * Method:
  189.      *     IRMAClientAuthConversation::IsDone
  190.      * Purpose:
  191.      *     
  192.      *     Call this to determine whether the conversation is complete.
  193.      *     (some protocols have more then one message exchange.)
  194.      *
  195.      */
  196.     STDMETHOD_(BOOL,IsDone)(THIS) PURE;
  197.     /************************************************************************
  198.      * Method:
  199.      *     IRMAClientAuthConversation::Authenticated
  200.      * Purpose:
  201.      *     
  202.      *     Call this to signal the authenticator that the conversation 
  203.      *     just completed succeeded or failed.
  204.      *
  205.      */
  206.     STDMETHOD(Authenticated)(THIS_ BOOL bAuthenticated) PURE;
  207. };
  208. /****************************************************************************
  209.  * 
  210.  *  Interface:
  211.  *
  212.  * IRMAClientAuthResponse
  213.  *
  214.  *  Purpose:
  215.  *
  216.  * This is implemented by the client core in order to receive the 
  217.  * response generated by IRMAClientAuthConversation::MakeResponse
  218.  *
  219.  *  IRMAClientAuthResponse:
  220.  *
  221.  * {00002802-0901-11d1-8B06-00A024406D59}
  222.  *
  223.  */
  224. DEFINE_GUID(IID_IRMAClientAuthResponse,   0x00002802, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  225. #undef  INTERFACE
  226. #define INTERFACE   IRMAClientAuthResponse
  227. DECLARE_INTERFACE_(IRMAClientAuthResponse, IUnknown)
  228. {
  229.     /*
  230.      * IUnknown methods
  231.      */
  232.     STDMETHOD(QueryInterface) (THIS_
  233. REFIID riid,
  234. void** ppvObj) PURE;
  235.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  236.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  237.     /************************************************************************
  238.      * Method:
  239.      *     IRMAClientAuthResponse::ResponseReady
  240.      * Purpose:
  241.      *     
  242.      *     Reports the success or failure of 
  243.      *     IRMAClientAuthConversation::MakeResponse
  244.      *
  245.      *     pRequestResponseHeaders should be the same Request object 
  246.      *     that was passed into MakeResponse, it should contain
  247.      *     CString values for each MimeHeader it wishes to send to 
  248.      *     the Server.
  249.      *
  250.      */
  251.     STDMETHOD(ResponseReady)
  252.     (
  253. THIS_
  254. PN_RESULT ResultStatus,
  255. IRMARequest* pRequestResponseHeaders
  256.     ) PURE;
  257. };
  258. /****************************************************************************
  259.  * 
  260.  *  Interface:
  261.  *
  262.  * IRMAServerAuthConversation
  263.  *
  264.  *  Purpose:
  265.  *
  266.  * This is implemented by a server authenticator in order to perform 
  267.  * the server side of an authentication protocol.
  268.  *
  269.  *  IRMAServerAuthConversation:
  270.  *
  271.  * {00002805-0901-11d1-8B06-00A024406D59}
  272.  *
  273.  */
  274. DEFINE_GUID(IID_IRMAServerAuthConversation,   0x00002805, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  275. /*
  276.  *  The IRMACommonClassFactory supports creating an instance
  277.  *  of this object.
  278.  */
  279. #define CLSID_CRMAServerAuthenticator IID_IRMAServerAuthResponse
  280. #undef  INTERFACE
  281. #define INTERFACE   IRMAServerAuthConversation
  282. DECLARE_INTERFACE_(IRMAServerAuthConversation, IUnknown)
  283. {
  284.     /*
  285.      * IUnknown methods
  286.      */
  287.     STDMETHOD(QueryInterface) (THIS_
  288. REFIID riid,
  289. void** ppvObj) PURE;
  290.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  291.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  292.     /************************************************************************
  293.      * Method:
  294.      *     IRMAServerAuthConversation::MakeChallenge
  295.      * Purpose:
  296.      *     
  297.      *     Call this to create a challenge for a client.  If the request 
  298.      *     passed in does not contain a respose from the client, then it 
  299.      *     will generate the initial challenge.
  300.      *
  301.      *     pRequestResponseHeaders is the request for a secured URL.  If
  302.      *     this is the initial request for the URL it probably does not
  303.      *     have any credentials from the client.
  304.      *
  305.      */
  306.     STDMETHOD(MakeChallenge)
  307.     (
  308. THIS_
  309. IRMAServerAuthResponse* pServerAuthResponseRequester,
  310. IRMARequest* pRequestResponseHeaders
  311.     ) PURE;
  312.     /************************************************************************
  313.      * Method:
  314.      *     IRMAServerAuthConversation::IsAuthenticated
  315.      * Purpose:
  316.      *     
  317.      *     Call this to determine whether the last response from the 
  318.      *     client completed the authentication successfully.
  319.      *
  320.      */
  321.     STDMETHOD_(BOOL,IsAuthenticated)(THIS) PURE;
  322.     /************************************************************************
  323.      * Method:
  324.      *     IRMAServerAuthConversation::GetUserContext
  325.      * Purpose:
  326.      *     
  327.      *     Call this to retrieve the Context of the user that completed
  328.      *     authentication successfully.
  329.      *
  330.      *     If successful pUnknownUser is a valid context
  331.      *
  332.      */
  333.     STDMETHOD(GetUserContext)(THIS_ REF(IUnknown*) pUnknownUser) PURE;
  334. };
  335. /****************************************************************************
  336.  * 
  337.  *  Interface:
  338.  *
  339.  * IRMAServerAuthResponse
  340.  *
  341.  *  Purpose:
  342.  *
  343.  * This is implemented by various server plugins in order to receive the 
  344.  * challenge generated by IRMAServerAuthConversation::MakeChallenge
  345.  *
  346.  *  IRMAServerAuthResponse:
  347.  *
  348.  * {00002804-0901-11d1-8B06-00A024406D59}
  349.  *
  350.  */
  351. DEFINE_GUID(IID_IRMAServerAuthResponse,   0x00002804, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  352. #undef  INTERFACE
  353. #define INTERFACE   IRMAServerAuthResponse
  354. DECLARE_INTERFACE_(IRMAServerAuthResponse, IUnknown)
  355. {
  356.     /*
  357.      * IUnknown methods
  358.      */
  359.     STDMETHOD(QueryInterface) (THIS_
  360. REFIID riid,
  361. void** ppvObj) PURE;
  362.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  363.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  364.     /************************************************************************
  365.      * Method:
  366.      *     IRMAServerAuthResponse::ChallengeReady
  367.      * Purpose:
  368.      *     
  369.      *     Reports the success or failure of 
  370.      *     IRMAServerAuthConversation::MakeChallenge
  371.      *
  372.      *     pRequestChallengeHeaders should be the same Request object 
  373.      *     that was passed into MakeChallenge, it should contain
  374.      *     CString values for each MimeHeader it wishes to send to 
  375.      *     the client.
  376.      *
  377.      */
  378.     STDMETHOD(ChallengeReady)
  379.     (
  380. THIS_
  381. PN_RESULT ResultStatus,
  382. IRMARequest* pRequestChallengeHeaders
  383.     ) PURE;
  384. };
  385. /****************************************************************************
  386.  * 
  387.  *  Interface:
  388.  *
  389.  * IRMAUserContext
  390.  *
  391.  *  Purpose:
  392.  *
  393.  * This is implemented by a user context in order to provide 
  394.  * access to information about the currently authenticated user.
  395.  *
  396.  *  IRMAUserContext:
  397.  *
  398.  * {00002806-0901-11d1-8B06-00A024406D59}
  399.  *
  400.  */
  401. DEFINE_GUID(IID_IRMAUserContext,   0x00002806, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  402. #undef  INTERFACE
  403. #define INTERFACE   IRMAUserContext
  404. DECLARE_INTERFACE_(IRMAUserContext, IUnknown)
  405. {
  406.     /*
  407.      * IUnknown methods
  408.      */
  409.     STDMETHOD(QueryInterface) (THIS_
  410. REFIID riid,
  411. void** ppvObj) PURE;
  412.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  413.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  414.     /************************************************************************
  415.      * Method:
  416.      *     IRMAUserContext::IsMemberOf
  417.      * Purpose:
  418.      *     
  419.      *     Call this to determine whether the authenticated user
  420.      *     is a member of the specified group.
  421.      *
  422.      */
  423.     STDMETHOD(IsMemberOf)(THIS_ IRMABuffer* pBufferGroupID) PURE;
  424. };
  425. /****************************************************************************
  426.  * 
  427.  *  Interface:
  428.  *
  429.  * IRMAUserProperties
  430.  *
  431.  *  Purpose:
  432.  *
  433.  * This is implemented by a user context in order to provide 
  434.  * access to properties of the currently authenticated user.
  435.  *
  436.  *  IRMAUserProperties:
  437.  *
  438.  * {00002807-0901-11d1-8B06-00A024406D59}
  439.  *
  440.  */
  441. DEFINE_GUID(IID_IRMAUserProperties,   0x00002807, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  442. #undef  INTERFACE
  443. #define INTERFACE   IRMAUserProperties
  444. DECLARE_INTERFACE_(IRMAUserProperties, IUnknown)
  445. {
  446.     /*
  447.      * IUnknown methods
  448.      */
  449.     STDMETHOD(QueryInterface) (THIS_
  450. REFIID riid,
  451. void** ppvObj) PURE;
  452.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  453.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  454.     /************************************************************************
  455.      * Method:
  456.      *     IRMAUserProperties::GetPrincipalID
  457.      * Purpose:
  458.      *     
  459.      *     Call this to determine the principalID of the authenticated user.
  460.      *
  461.      */
  462.     STDMETHOD(GetPrincipalID)(THIS_ REF(IRMABuffer*) pBufferPrincipalID) PURE;
  463.     /************************************************************************
  464.      * Method:
  465.      *     IRMAUserProperties::GetAuthorityName
  466.      * Purpose:
  467.      *     
  468.      *     Call this to determine the authority name that authorized the 
  469.      *     authenticated user. (realm or domain name)
  470.      *
  471.      */
  472.     STDMETHOD(GetAuthorityName)(THIS_ REF(IRMABuffer*) pBufferAuthorityName) PURE;
  473. };
  474. /****************************************************************************
  475.  * 
  476.  *  Interface:
  477.  *
  478.  * IRMAUserImpersonation
  479.  *
  480.  *  Purpose:
  481.  *
  482.  * This can be implemented by a user context in order to provide 
  483.  * the ability to have the server impersonate the currently authenticated
  484.  * user.
  485.  *
  486.  *  IRMAUserImpersonation:
  487.  *
  488.  * {00002808-0901-11d1-8B06-00A024406D59}
  489.  *
  490.  */
  491. DEFINE_GUID(IID_IRMAUserImpersonation,   0x00002808, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  492. #undef  INTERFACE
  493. #define INTERFACE   IRMAUserImpersonation
  494. DECLARE_INTERFACE_(IRMAUserImpersonation, IUnknown)
  495. {
  496.     /*
  497.      * IUnknown methods
  498.      */
  499.     STDMETHOD(QueryInterface) (THIS_
  500. REFIID riid,
  501. void** ppvObj) PURE;
  502.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  503.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  504.     /************************************************************************
  505.      * Method:
  506.      *     IRMAUserImpersonation::Start
  507.      * Purpose:
  508.      *     
  509.      *     Call this to impersonate the authenticated user.
  510.      *
  511.      */
  512.     STDMETHOD(Start)(THIS) PURE;
  513.     /************************************************************************
  514.      * Method:
  515.      *     IRMAUserImpersonation::Stop
  516.      * Purpose:
  517.      *     
  518.      *     Call this to stop impersonating the authenticated user.
  519.      *
  520.      */
  521.     STDMETHOD(Stop)(THIS) PURE;
  522. };
  523. /****************************************************************************
  524.  * 
  525.  *  Interface:
  526.  *
  527.  * IRMAChallenge
  528.  *
  529.  *  Purpose:
  530.  *
  531.  * This is implemented by the server core in order to allow 
  532.  * additional exchanges of information with the client without
  533.  * creating a new request. (It is stored in the IRMARequest object
  534.  * and can be retrieved by calling IRMARequestContext::GetRequester()
  535.  * if it is absent then the protocol that this request was made on 
  536.  * does not support multi-message authentication (PNA doesn't) )
  537.  *
  538.  *  IRMAChallenge:
  539.  *
  540.  * {0000280A-0901-11d1-8B06-00A024406D59}
  541.  *
  542.  */
  543. DEFINE_GUID(IID_IRMAChallenge,   0x0000280A, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  544. #undef  INTERFACE
  545. #define INTERFACE   IRMAChallenge
  546. DECLARE_INTERFACE_(IRMAChallenge, IUnknown)
  547. {
  548.     /*
  549.      * IUnknown methods
  550.      */
  551.     STDMETHOD(QueryInterface) (THIS_
  552. REFIID riid,
  553. void** ppvObj) PURE;
  554.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  555.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  556.     /************************************************************************
  557.      * Method:
  558.      *     IRMAChallenge::SendChallenge
  559.      * Purpose:
  560.      *     
  561.      *     Call this to request additional information from the client.
  562.      *
  563.      *     pRequestChallenge should be the same Request object 
  564.      *     that was passed into MakeChallenge, it should contain
  565.      *     CString values for each MimeHeader it wishes to send to 
  566.      *     the client.
  567.      *
  568.      */
  569.     STDMETHOD(SendChallenge)
  570.     (
  571. THIS_
  572. IRMAChallengeResponse* pChallengeResponseSender,
  573. IRMARequest* pRequestChallenge
  574.     ) PURE;
  575. };
  576. /****************************************************************************
  577.  * 
  578.  *  Interface:
  579.  *
  580.  * IRMAChallengeResponse
  581.  *
  582.  *  Purpose:
  583.  *
  584.  * This is implemented by a server authenticator in order to 
  585.  * receive the Response returned by the client in response to 
  586.  * IRMAChallenge::SendChallenge.
  587.  *
  588.  *  IRMAChallengeResponse:
  589.  *
  590.  * {00002809-0901-11d1-8B06-00A024406D59}
  591.  *
  592.  */
  593. DEFINE_GUID(IID_IRMAChallengeResponse,   0x00002809, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  594. #undef  INTERFACE
  595. #define INTERFACE   IRMAChallengeResponse
  596. DECLARE_INTERFACE_(IRMAChallengeResponse, IUnknown)
  597. {
  598.     /*
  599.      * IUnknown methods
  600.      */
  601.     STDMETHOD(QueryInterface) (THIS_
  602. REFIID riid,
  603. void** ppvObj) PURE;
  604.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  605.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  606.     /************************************************************************
  607.      * Method:
  608.      *     IRMAChallengeResponse::ResponseReady
  609.      * Purpose:
  610.      *     
  611.      *     Called this to return the additional information requested 
  612.      *     from IRMAChallenge::SendChallenge.
  613.      *
  614.      *     pRequestResponse should be the same Request object 
  615.      *     that was passed into MakeChallenge and SendChallenge.
  616.      *
  617.      */
  618.     STDMETHOD(ResponseReady)
  619.     (
  620. THIS_
  621. IRMARequest* pRequestResponse
  622.     ) PURE;
  623. };
  624. #endif //!_RMAAUTHN_H_