Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

146 lines
2.9 KiB

  1. //+---------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. // Copyright (C) Microsoft Corporation, 1992 - 1995.
  5. //
  6. // File: mapper.h
  7. //
  8. // Contents:
  9. //
  10. // Classes:
  11. //
  12. // Functions:
  13. //
  14. // History: 10-15-96 RichardW Created
  15. // 12-23-97 jbanes Added support for application mappers
  16. //
  17. //----------------------------------------------------------------------------
  18. #ifndef __MAPPER_H__
  19. #define __MAPPER_H__
  20. HMAPPER *
  21. SslGetMapper(
  22. BOOL fDC);
  23. DWORD
  24. WINAPI
  25. SslReferenceMapper(
  26. HMAPPER * phMapper); // in
  27. DWORD
  28. WINAPI
  29. SslDereferenceMapper(
  30. HMAPPER * phMapper); // in
  31. SECURITY_STATUS
  32. WINAPI
  33. SslGetMapperIssuerList(
  34. HMAPPER * phMapper, // in
  35. BYTE ** ppIssuerList, // out
  36. DWORD * pcbIssuerList); // out
  37. SECURITY_STATUS
  38. WINAPI
  39. SslGetMapperChallenge(
  40. HMAPPER * phMapper, // in
  41. BYTE * pAuthenticatorId, // in
  42. DWORD cbAuthenticatorId, // in
  43. BYTE * pChallenge, // out
  44. DWORD * pcbChallenge); // out
  45. SECURITY_STATUS
  46. WINAPI
  47. SslMapCredential(
  48. HMAPPER * phMapper, // in
  49. DWORD dwCredentialType, // in
  50. PCCERT_CONTEXT pCredential, // in
  51. PCCERT_CONTEXT pAuthority, // in
  52. HLOCATOR * phLocator); // out
  53. SECURITY_STATUS
  54. WINAPI
  55. SslGetAccessToken(
  56. HMAPPER * phMapper, // in
  57. HLOCATOR hLocator, // in
  58. HANDLE * phToken); // out
  59. SECURITY_STATUS
  60. WINAPI
  61. SslCloseLocator(
  62. HMAPPER * phMapper, // in
  63. HLOCATOR hLocator); // in
  64. //
  65. // Issuer cache used for many-to-one mapping.
  66. //
  67. #define ISSUER_CACHE_LIFESPAN (10 * 60 * 1000) // 10 minutes
  68. #define ISSUER_CACHE_SIZE 100
  69. typedef struct
  70. {
  71. PLIST_ENTRY Cache;
  72. DWORD dwLifespan;
  73. DWORD dwCacheSize;
  74. DWORD dwMaximumEntries;
  75. DWORD dwUsedEntries;
  76. LIST_ENTRY EntryList;
  77. RTL_RESOURCE Lock;
  78. BOOL LockInitialized;
  79. } ISSUER_CACHE;
  80. extern ISSUER_CACHE IssuerCache;
  81. typedef struct
  82. {
  83. DWORD CreationTime;
  84. PBYTE pbIssuer;
  85. DWORD cbIssuer;
  86. // List of cache entries assigned to a particular cache index.
  87. LIST_ENTRY IndexEntryList;
  88. // Global list of cache entries sorted by creation time.
  89. LIST_ENTRY EntryList;
  90. } ISSUER_CACHE_ENTRY;
  91. SP_STATUS
  92. SPInitIssuerCache(void);
  93. void
  94. SPShutdownIssuerCache(void);
  95. void
  96. SPPurgeIssuerCache(void);
  97. void
  98. SPDeleteIssuerEntry(
  99. ISSUER_CACHE_ENTRY *pItem);
  100. BOOL
  101. SPFindIssuerInCache(
  102. PBYTE pbIssuer,
  103. DWORD cbIssuer);
  104. void
  105. SPExpireIssuerCacheElements(void);
  106. void
  107. SPAddIssuerToCache(
  108. PBYTE pbIssuer,
  109. DWORD cbIssuer);
  110. #endif