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.

198 lines
6.4 KiB

  1. //+---------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. // Copyright (C) Microsoft Corporation, 1992 - 1993.
  5. //
  6. // File: transtest.cxx
  7. //
  8. // Contents: KDC transit field compression testing code
  9. //
  10. // Classes:
  11. //
  12. // Functions:
  13. //
  14. // History: 19-Aug-93 WadeR Created
  15. //
  16. //----------------------------------------------------------------------------
  17. #include <secpch2.hxx>
  18. #pragma hdrstop
  19. #include "transit.hxx"
  20. void
  21. AddRealm( PSECURITY_STRING pssTransit,
  22. PWCHAR pwzPrinRealm,
  23. PWCHAR pwzThisRealm,
  24. PWCHAR pwzNewRealm )
  25. {
  26. printf("Starting tr field:\t%wZ\nAuth. Realm:\t%ws\n"
  27. "ThisRealm:\t%ws\nNew Realm:\t%ws\n", pssTransit, pwzPrinRealm,
  28. pwzThisRealm, pwzNewRealm );
  29. //CTransitData tdFoo;
  30. CNodeList nlRealms;
  31. SECURITY_STRING ssTemp;
  32. //ExpandTransitedField( *pssTransit, pwzPrinRealm, pwzNewRealm, &tdFoo );
  33. //tdFoo.AddRealm( pwzNewRealm );
  34. //ssTemp = CompressTransitedField( tdFoo );
  35. ssTemp = AddToTransitedField( *pssTransit, pwzPrinRealm,
  36. pwzNewRealm, pwzThisRealm, &nlRealms );
  37. printf("New tr field: %wZ\n\n", &ssTemp );
  38. SRtlFreeString( pssTransit );
  39. *pssTransit = ssTemp;
  40. }
  41. int
  42. TransitTest()
  43. {
  44. printf("Testing transit field compression...\n");
  45. SECURITY_STRING ssTransit;
  46. PWCHAR pwAuth;
  47. PWCHAR pwNew;
  48. PWCHAR pwThis;
  49. #if 0
  50. // test 1.
  51. // No links.
  52. SRtlNewString( &ssTransit, L"" );
  53. pwAuth = L"org:\\wpg\\sys\\cairo\\sphinx\\dev";
  54. pwNew = L"org:\\wpg\\sys\\cairo\\sphinx";
  55. pwThis = L"org:\\wpg\\sys\\cairo";
  56. AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
  57. pwNew = L"org:\\wpg\\sys\\cairo";
  58. pwThis = L"org:\\wpg\\sys";
  59. AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
  60. pwNew = L"org:\\wpg\\sys";
  61. pwThis = L"org:\\wpg";
  62. AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
  63. pwNew = L"org:\\wpg";
  64. pwThis = L"org:";
  65. AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
  66. pwNew = L"org:";
  67. pwThis = L"org:\\fin";
  68. AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
  69. pwNew = L"org:\\fin";
  70. pwThis = L"org:\\fin\\apps";
  71. AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
  72. pwNew = L"org:\\fin\\apps";
  73. pwThis = L"org:\\fin\\apps\\word";
  74. AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
  75. pwNew = L"org:\\fin\\apps\\word";
  76. pwThis = L"org:\\fin\\apps\\word\\dev";
  77. AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
  78. pwNew = L"org:\\fin\\apps\\word\\dev";
  79. pwThis = L"org:\\fin\\apps\\word\\dev\\foo";
  80. AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
  81. printf("Resut of going from 'org:\\wpg\\sys\\cairo\\sphinx\\dev'"
  82. " to 'org:\\fin\\apps\\word\\dev\\foo' is: '%wZ' (should be ',')\n\n\n",
  83. &ssTransit);
  84. SRtlFreeString( &ssTransit );
  85. #endif
  86. #if 1
  87. // test 2
  88. // Link between org:\wpg\sys and org:\fin
  89. //
  90. SRtlNewString( &ssTransit, L"" );
  91. pwAuth = L"org:\\wpg\\sys\\cairo\\sphinx\\dev";
  92. pwNew = L"org:\\wpg\\sys\\cairo\\sphinx";
  93. pwThis = L"org:\\wpg\\sys\\cairo";
  94. AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
  95. pwNew = L"org:\\wpg\\sys\\cairo";
  96. pwThis = L"org:\\wpg\\sys";
  97. AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
  98. pwNew = L"org:\\wpg\\sys";
  99. pwThis = L"org:\\fin";
  100. AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
  101. pwNew = L"org:\\fin";
  102. pwThis = L"org:\\fin\\apps";
  103. AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
  104. pwNew = L"org:\\fin\\apps";
  105. pwThis = L"org:\\fin\\apps\\word";
  106. AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
  107. pwNew = L"org:\\fin\\apps\\word";
  108. pwThis = L"org:\\fin\\apps\\word\\dev";
  109. AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
  110. pwNew = L"org:\\fin\\apps\\word\\dev";
  111. pwThis = L"org:\\fin\\apps\\word\\dev\\foo";
  112. AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
  113. printf("Resut of going from 'org:\\wpg\\sys\\cairo\\sphinx\\dev'"
  114. " to 'org:\\fin\\apps\\word\\dev\\foo' is: '%wZ'\n", &ssTransit );
  115. printf("Should be ',org:\\wpg\\sys,org:\\fin,'");
  116. SRtlFreeString( &ssTransit );
  117. #endif
  118. #if 1
  119. // test 2b -- reverse
  120. // Link between org:\fin and org:\fin\apps\word
  121. //
  122. SRtlNewString( &ssTransit, L"" );
  123. pwAuth = L"org:\\wpg\\sys\\cairo\\sphinx\\dev";
  124. pwNew = L"org:\\wpg\\sys\\cairo\\sphinx";
  125. pwThis = L"org:\\wpg\\sys\\cairo";
  126. AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
  127. pwNew = L"org:\\wpg\\sys\\cairo";
  128. pwThis = L"org:\\wpg\\sys";
  129. AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
  130. pwNew = L"org:\\wpg\\sys";
  131. pwThis = L"org:\\wpg";
  132. AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
  133. pwNew = L"org:\\wpg";
  134. pwThis = L"org:";
  135. AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
  136. pwNew = L"org:";
  137. pwThis = L"org:\\fin";
  138. AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
  139. pwNew = L"org:\\fin";
  140. pwThis = L"org:\\fin\\apps\\word";
  141. AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
  142. pwNew = L"org:\\fin\\apps\\word";
  143. pwThis = L"org:\\fin\\apps\\word\\dev";
  144. AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
  145. pwNew = L"org:\\fin\\apps\\word\\dev";
  146. pwThis = L"org:\\fin\\apps\\word\\dev\\foo";
  147. AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
  148. printf("Resut of going from 'org:\\wpg\\sys\\cairo\\sphinx\\dev'"
  149. " to 'org:\\fin\\apps\\word\\dev\\foo' is: '%wZ' (should be ',')\n\n\n",
  150. &ssTransit);
  151. SRtlFreeString( &ssTransit );
  152. #endif
  153. #if 1
  154. // test 3.
  155. // Link outside the normal path.
  156. // org:\wpg -> org:\fin\apps -> org:\wpg\sys\cairo -> org:\wpg\sys\cairo\dev
  157. SRtlNewString( &ssTransit, L"" );
  158. pwAuth = L"org:\\wpg";
  159. pwNew = L"org:\\fin\\apps";
  160. pwThis = L"org:\\wpg\\sys\\cairo";
  161. AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
  162. pwNew = L"org:\\wpg\\sys\\cairo";
  163. pwThis = L"org:\\wpg\\sys\\cairo\\dev";
  164. AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
  165. printf("Resut of traversing "
  166. "'org:\\wpg,org:\\fin\\apps,org:\\wpg\\sys\\cairo,org:\\wpg\\sys\\cairo\\dev'"
  167. "is: '%wZ'\n", &ssTransit);
  168. printf("Should be 'org:\\fin\\apps,org:wpg\\sys\\cairo,'" );
  169. SRtlFreeString( &ssTransit );
  170. #endif
  171. return(0);
  172. }