hxauth.h
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:12k
源码类别:

Symbian

开发平台:

C/C++

  1. /* ***** BEGIN LICENSE BLOCK ***** 
  2.  * Version: RCSL 1.0/RPSL 1.0 
  3.  *  
  4.  * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
  5.  *      
  6.  * The contents of this file, and the files included with this file, are 
  7.  * subject to the current version of the RealNetworks Public Source License 
  8.  * Version 1.0 (the "RPSL") available at 
  9.  * http://www.helixcommunity.org/content/rpsl unless you have licensed 
  10.  * the file under the RealNetworks Community Source License Version 1.0 
  11.  * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
  12.  * in which case the RCSL will apply. You may also obtain the license terms 
  13.  * directly from RealNetworks.  You may not use this file except in 
  14.  * compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
  15.  * applicable to this file, the RCSL.  Please see the applicable RPSL or 
  16.  * RCSL for the rights, obligations and limitations governing use of the 
  17.  * contents of the file.  
  18.  *  
  19.  * This file is part of the Helix DNA Technology. RealNetworks is the 
  20.  * developer of the Original Code and owns the copyrights in the portions 
  21.  * it created. 
  22.  *  
  23.  * This file, and the files included with this file, is distributed and made 
  24.  * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  25.  * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  26.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
  27.  * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  28.  * 
  29.  * Technology Compatibility Kit Test Suite(s) Location: 
  30.  *    http://www.helixcommunity.org/content/tck 
  31.  * 
  32.  * Contributor(s): 
  33.  *  
  34.  * ***** END LICENSE BLOCK ***** */ 
  35. #ifndef _HXAUTH_H_
  36. #define _HXAUTH_H_
  37. /*
  38.  * Forward declarations of some interfaces defined or used here-in.
  39.  */
  40. typedef _INTERFACE  IHXAuthenticator     IHXAuthenticator;
  41. typedef _INTERFACE  IHXAuthenticatorResponse     IHXAuthenticatorResponse;
  42. typedef _INTERFACE  IHXAuthenticatorRequest     IHXAuthenticatorRequest;
  43. typedef _INTERFACE  IHXPassword     IHXPassword;
  44. typedef _INTERFACE  IHXAuthenticationManagerResponse IHXAuthenticationManagerResponse;
  45. typedef _INTERFACE  IHXValues     IHXValues;
  46. typedef _INTERFACE  IHXBuffer     IHXBuffer;
  47. /****************************************************************************
  48.  * 
  49.  *  Interface:
  50.  * 
  51.  *      IHXAuthenticator
  52.  * 
  53.  *  Purpose:
  54.  * 
  55.  *      Provide a means of authenticating users.
  56.  *
  57.  *  IID_IHXAuthenticator:
  58.  * 
  59.  *      {00001800-0901-11d1-8B06-00A024406D59}
  60.  * 
  61.  */
  62. DEFINE_GUID(IID_IHXAuthenticator, 0x00001800, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  63. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  64. #define CLSID_IHXAuthenticator IID_IHXAuthenticator
  65. #undef  INTERFACE
  66. #define INTERFACE IHXAuthenticator
  67. DECLARE_INTERFACE_(IHXAuthenticator, IUnknown)
  68. {
  69.     STDMETHOD(QueryInterface)           (THIS_
  70. REFIID riid,
  71. void** ppvObj) PURE;
  72.     STDMETHOD_(ULONG32,AddRef)          (THIS) PURE;
  73.     STDMETHOD_(ULONG32,Release)         (THIS) PURE;
  74.     /*
  75.      * InitAuthenticator is called by the creator of the Authenticator
  76.      * object in order to pass it an IHXAuthenticatorRequest object,
  77.      * usually implemented by the creator itself.
  78.      */
  79.     STDMETHOD(InitAuthenticator) (THIS_ 
  80.   IHXAuthenticatorRequest* pRequest) PURE;
  81.     /*
  82.      * Authenticate is called by a file object (and others??)
  83.      * when it wants to ask the creator, presumably an FS Manager,
  84.      * for authorization to open it's file.
  85.      *
  86.      * Authenticate will call IHXAuthenticateResponse::AuthenticateDone
  87.      * when done with HXR_OK or an error.
  88.      *
  89.      * File objects will presumably perform the Authenticate response as
  90.      * part of their Init() call, and not call InitDone until they receive
  91.      * a response one way or the other.
  92.      */
  93.     STDMETHOD(Authenticate) (THIS_
  94.      IHXValues* pValues,
  95.      IHXAuthenticatorResponse* pResponse) PURE;
  96.     /* GenerateAuthRequest is called by the creator of this object
  97.      * when they want to send an authentication request to someone.
  98.      */
  99.     STDMETHOD(GenerateAuthRequest) (THIS_
  100.     UINT32 authType,
  101.     REF(IHXValues*) pValues) PURE;
  102.     /*
  103.      * AuthValuesReady is called by IHXAuthenticatorRequest when it
  104.      * is ready to respond to a GetAuthValues request.
  105.      */
  106.     STDMETHOD(AuthValuesReady) (THIS_ 
  107. HX_RESULT result,
  108. IHXValues* pValues) PURE;
  109. };
  110. /****************************************************************************
  111.  * 
  112.  *  Interface:
  113.  * 
  114.  *      IHXAuthenticatorResponse
  115.  * 
  116.  *  Purpose:
  117.  *
  118.  *      Response object for the Authenticator class.
  119.  * 
  120.  *  IID_IHXAuthenticatorResponse:
  121.  * 
  122.  *      {00001801-0901-11d1-8B06-00A024406D59}
  123.  * 
  124.  */
  125. DEFINE_GUID(IID_IHXAuthenticatorResponse, 0x00001801, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  126. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  127. #undef  INTERFACE
  128. #define INTERFACE IHXAuthenticatorResponse
  129. DECLARE_INTERFACE_(IHXAuthenticatorResponse, IUnknown)
  130. {
  131.     STDMETHOD(QueryInterface)           (THIS_
  132. REFIID riid,
  133. void** ppvObj) PURE;
  134.     STDMETHOD_(ULONG32,AddRef)          (THIS) PURE;
  135.     STDMETHOD_(ULONG32,Release)         (THIS) PURE;
  136.     /* AuthenticateDone is called by an IHXAuthenticator when it has
  137.      * finished it's authorization steps.  If the result is HXR_OK,
  138.      * then the values contain authorization information as generated by
  139.      * IHXPassword.
  140.      */
  141.     STDMETHOD(AuthenticateDone) (THIS_ HX_RESULT result,
  142. IHXValues* pAuthResponseValues) PURE;
  143. };
  144. /****************************************************************************
  145.  * 
  146.  *  Interface:
  147.  * 
  148.  *      IHXAuthenticatorRequest
  149.  * 
  150.  *  Purpose:
  151.  *
  152.  *      Request object for the Authenticator class.
  153.  * 
  154.  *  IID_IHXAuthenticatorRequest:
  155.  * 
  156.  *      {00001802-0901-11d1-8B06-00A024406D59}
  157.  * 
  158.  */
  159. DEFINE_GUID(IID_IHXAuthenticatorRequest, 0x00001802, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  160. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  161. #undef  INTERFACE
  162. #define INTERFACE IHXAuthenticatorRequest
  163. DECLARE_INTERFACE_(IHXAuthenticatorRequest, IUnknown)
  164. {
  165.     STDMETHOD(QueryInterface)           (THIS_
  166. REFIID riid,
  167. void** ppvObj) PURE;
  168.     STDMETHOD_(ULONG32,AddRef)          (THIS) PURE;
  169.     STDMETHOD_(ULONG32,Release)         (THIS) PURE;
  170.     /* GetAuthValues is called by the Authenticator object when it
  171.      * needs to know the authorization info for this transaction.
  172.      *
  173.      * This object should call AuthValuesReady when ready.
  174.      */
  175.     STDMETHOD(GetAuthValues) (THIS_ IHXValues* pOrigValues) PURE;
  176. };
  177. /****************************************************************************
  178.  * 
  179.  *  Interface:
  180.  * 
  181.  *      IHXPassword
  182.  * 
  183.  *  Purpose:
  184.  * 
  185.  *      Provides a general password facility for storing of passwords in
  186.  * an encrypted form and a facility for verifying passwords securely
  187.  * over the network.
  188.  * 
  189.  *  IID_IHXPassword:
  190.  * 
  191.  *      {00001700-0901-11d1-8B06-00A024406D59}
  192.  * 
  193.  */
  194. #define HX_AUTH_BASIC 1
  195. #define HX_AUTH_DIGEST 2
  196. #define PN_AUTH_HX5 3
  197. #define HX_AUTH_NTLM 4
  198. DEFINE_GUID(IID_IHXPassword, 0x00001700, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  199. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  200. #undef  INTERFACE
  201. #define INTERFACE IHXPassword
  202. DECLARE_INTERFACE_(IHXPassword, IUnknown)
  203. {
  204.     /*
  205.      *  IUnknown methods
  206.      */
  207.     STDMETHOD(QueryInterface)           (THIS_
  208. REFIID riid,
  209. void** ppvObj) PURE;
  210.     STDMETHOD_(ULONG32,AddRef)          (THIS) PURE;
  211.     STDMETHOD_(ULONG32,Release)         (THIS) PURE;
  212.     /*
  213.      *  IHXPassword methods
  214.      */
  215.     STDMETHOD(Crypt) (THIS_ IHXValues* pAuthentication) PURE;
  216.     STDMETHOD(Verify) (THIS_ IHXValues* pAuth1, IHXValues* pAuth2) PURE;
  217.     STDMETHOD(AsString) (THIS_ IHXValues* pAuth, REF(IHXBuffer*) pBuffer) PURE;
  218.     STDMETHOD(AsValues) (THIS_ const char* str, IHXValues* pValues) PURE;
  219.     /*
  220.      * CreateBuffer is provided for the convenince of external users,
  221.      * who would otherwise have to get a context and common class factory
  222.      * just to create IHXBuffers.  This method can be used instead, but
  223.      * is not advisable if other means are available.
  224.      */
  225.     STDMETHOD(CreateBuffer) (THIS_ REF(IHXBuffer*) pBuffer) PURE;
  226.     /*
  227.      * Ditto for CreateValues
  228.      */
  229.     STDMETHOD(CreateValues) (THIS_ REF(IHXValues*) pValues) PURE;
  230. };
  231. /****************************************************************************
  232.  * 
  233.  *  Interface:
  234.  * 
  235.  *      IHXAuthenticationManager
  236.  * 
  237.  *  Purpose:
  238.  * 
  239.  *      Provide a means of authenticating users.
  240.  *
  241.  *  IID_IHXAuthenticator:
  242.  * 
  243.  *      {00001a00-0901-11d1-8B06-00A024406D59}
  244.  * 
  245.  */
  246. DEFINE_GUID(IID_IHXAuthenticationManager, 0x00001a00, 0x901, 0x11d1,
  247.     0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  248. #undef  INTERFACE
  249. #define INTERFACE IHXAuthenticationManager
  250. DECLARE_INTERFACE_(IHXAuthenticationManager, IUnknown)
  251. {
  252.     STDMETHOD(QueryInterface)           (THIS_
  253. REFIID riid,
  254. void** ppvObj) PURE;
  255.     STDMETHOD_(ULONG32,AddRef)          (THIS) PURE;
  256.     STDMETHOD_(ULONG32,Release)         (THIS) PURE;
  257.     /* HandleAuthenticationRequest is called when the core wants us to get
  258.      * a username and password.
  259.      */
  260.     STDMETHOD(HandleAuthenticationRequest) (
  261. THIS_ IHXAuthenticationManagerResponse* pResponse) PURE;
  262. };
  263. /****************************************************************************
  264.  * 
  265.  *  Interface:
  266.  * 
  267.  *      IHXAuthenticationManager2
  268.  * 
  269.  *  Purpose:
  270.  * 
  271.  *      Provide a means of authenticating users.
  272.  *
  273.  *      Includes sending an IHXValues list to the
  274.  *      authentication manager, for support of proxy
  275.  *      authentication, for example, which may include
  276.  *      a "pseudonym" header or something.
  277.  *
  278.  *  IID_IHXAuthenticator2:
  279.  * 
  280.  *      {34e171d2-a8f0-4832-bc7d-06dfe3ae58fd}
  281.  * 
  282.  */
  283. DEFINE_GUID(IID_IHXAuthenticationManager2,
  284.  0x34e171d2,  0xa8f0,  0x4832,  0xbc,  0x7d,  0x06,
  285.  0xdf,  0xe3,  0xae,  0x58,  0xfd);
  286. #undef  INTERFACE
  287. #define INTERFACE IHXAuthenticationManager2
  288. DECLARE_INTERFACE_(IHXAuthenticationManager2, IUnknown)
  289. {
  290.     STDMETHOD(QueryInterface)           (THIS_
  291. REFIID riid,
  292. void** ppvObj) PURE;
  293.     STDMETHOD_(ULONG32,AddRef)          (THIS) PURE;
  294.     STDMETHOD_(ULONG32,Release)         (THIS) PURE;
  295.     /* HandleAuthenticationRequest2 is called when the core wants us to get
  296.      * a username and password.
  297.      */
  298.     STDMETHOD(HandleAuthenticationRequest2) (
  299. THIS_
  300. IHXAuthenticationManagerResponse* pResponse,
  301. IHXValues* pHeader) PURE;
  302. };
  303. /****************************************************************************
  304.  * 
  305.  *  Interface:
  306.  * 
  307.  *      IHXAuthenticationManagerResponse
  308.  * 
  309.  *  Purpose:
  310.  * 
  311.  *      Response object for IHXAuthenticationManager.
  312.  *
  313.  *  IID_IHXAuthenticator:
  314.  * 
  315.  *      {00001a01-0901-11d1-8B06-00A024406D59}
  316.  * 
  317.  */
  318. DEFINE_GUID(IID_IHXAuthenticationManagerResponse, 0x00001a01, 0x901, 0x11d1,
  319.             0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59); 
  320. #undef  INTERFACE
  321. #define INTERFACE IHXAuthenticationManagerResponse
  322. DECLARE_INTERFACE_(IHXAuthenticationManagerResponse, IUnknown)
  323. {
  324.     STDMETHOD(QueryInterface)           (THIS_
  325. REFIID riid,
  326. void** ppvObj) PURE;
  327.     STDMETHOD_(ULONG32,AddRef)          (THIS) PURE;
  328.     STDMETHOD_(ULONG32,Release)         (THIS) PURE;
  329.     /* HandleAuthenticationRequest is called when the core wants us to get
  330.      * a username and password.
  331.      */
  332.     STDMETHOD(AuthenticationRequestDone) (THIS_
  333.   HX_RESULT result,
  334.   const char* pUserName,
  335.   const char* pPassword) PURE;
  336. };
  337. #ifdef _MACINTOSH
  338. #pragma export on
  339. #endif
  340. STDAPI CreatePassword(IUnknown** /* OUT */ ppIUnknown);
  341. #ifdef _MACINTOSH
  342. #pragma export off
  343. #endif
  344. #endif /* _HXAUTH_H_ */