2025-04-27 07:49:33 -04:00

199 lines
6.4 KiB
C++

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1993.
//
// File: transtest.cxx
//
// Contents: KDC transit field compression testing code
//
// Classes:
//
// Functions:
//
// History: 19-Aug-93 WadeR Created
//
//----------------------------------------------------------------------------
#include <secpch2.hxx>
#pragma hdrstop
#include "transit.hxx"
void
AddRealm( PSECURITY_STRING pssTransit,
PWCHAR pwzPrinRealm,
PWCHAR pwzThisRealm,
PWCHAR pwzNewRealm )
{
printf("Starting tr field:\t%wZ\nAuth. Realm:\t%ws\n"
"ThisRealm:\t%ws\nNew Realm:\t%ws\n", pssTransit, pwzPrinRealm,
pwzThisRealm, pwzNewRealm );
//CTransitData tdFoo;
CNodeList nlRealms;
SECURITY_STRING ssTemp;
//ExpandTransitedField( *pssTransit, pwzPrinRealm, pwzNewRealm, &tdFoo );
//tdFoo.AddRealm( pwzNewRealm );
//ssTemp = CompressTransitedField( tdFoo );
ssTemp = AddToTransitedField( *pssTransit, pwzPrinRealm,
pwzNewRealm, pwzThisRealm, &nlRealms );
printf("New tr field: %wZ\n\n", &ssTemp );
SRtlFreeString( pssTransit );
*pssTransit = ssTemp;
}
int
TransitTest()
{
printf("Testing transit field compression...\n");
SECURITY_STRING ssTransit;
PWCHAR pwAuth;
PWCHAR pwNew;
PWCHAR pwThis;
#if 0
// test 1.
// No links.
SRtlNewString( &ssTransit, L"" );
pwAuth = L"org:\\wpg\\sys\\cairo\\sphinx\\dev";
pwNew = L"org:\\wpg\\sys\\cairo\\sphinx";
pwThis = L"org:\\wpg\\sys\\cairo";
AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
pwNew = L"org:\\wpg\\sys\\cairo";
pwThis = L"org:\\wpg\\sys";
AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
pwNew = L"org:\\wpg\\sys";
pwThis = L"org:\\wpg";
AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
pwNew = L"org:\\wpg";
pwThis = L"org:";
AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
pwNew = L"org:";
pwThis = L"org:\\fin";
AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
pwNew = L"org:\\fin";
pwThis = L"org:\\fin\\apps";
AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
pwNew = L"org:\\fin\\apps";
pwThis = L"org:\\fin\\apps\\word";
AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
pwNew = L"org:\\fin\\apps\\word";
pwThis = L"org:\\fin\\apps\\word\\dev";
AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
pwNew = L"org:\\fin\\apps\\word\\dev";
pwThis = L"org:\\fin\\apps\\word\\dev\\foo";
AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
printf("Resut of going from 'org:\\wpg\\sys\\cairo\\sphinx\\dev'"
" to 'org:\\fin\\apps\\word\\dev\\foo' is: '%wZ' (should be ',')\n\n\n",
&ssTransit);
SRtlFreeString( &ssTransit );
#endif
#if 1
// test 2
// Link between org:\wpg\sys and org:\fin
//
SRtlNewString( &ssTransit, L"" );
pwAuth = L"org:\\wpg\\sys\\cairo\\sphinx\\dev";
pwNew = L"org:\\wpg\\sys\\cairo\\sphinx";
pwThis = L"org:\\wpg\\sys\\cairo";
AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
pwNew = L"org:\\wpg\\sys\\cairo";
pwThis = L"org:\\wpg\\sys";
AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
pwNew = L"org:\\wpg\\sys";
pwThis = L"org:\\fin";
AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
pwNew = L"org:\\fin";
pwThis = L"org:\\fin\\apps";
AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
pwNew = L"org:\\fin\\apps";
pwThis = L"org:\\fin\\apps\\word";
AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
pwNew = L"org:\\fin\\apps\\word";
pwThis = L"org:\\fin\\apps\\word\\dev";
AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
pwNew = L"org:\\fin\\apps\\word\\dev";
pwThis = L"org:\\fin\\apps\\word\\dev\\foo";
AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
printf("Resut of going from 'org:\\wpg\\sys\\cairo\\sphinx\\dev'"
" to 'org:\\fin\\apps\\word\\dev\\foo' is: '%wZ'\n", &ssTransit );
printf("Should be ',org:\\wpg\\sys,org:\\fin,'");
SRtlFreeString( &ssTransit );
#endif
#if 1
// test 2b -- reverse
// Link between org:\fin and org:\fin\apps\word
//
SRtlNewString( &ssTransit, L"" );
pwAuth = L"org:\\wpg\\sys\\cairo\\sphinx\\dev";
pwNew = L"org:\\wpg\\sys\\cairo\\sphinx";
pwThis = L"org:\\wpg\\sys\\cairo";
AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
pwNew = L"org:\\wpg\\sys\\cairo";
pwThis = L"org:\\wpg\\sys";
AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
pwNew = L"org:\\wpg\\sys";
pwThis = L"org:\\wpg";
AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
pwNew = L"org:\\wpg";
pwThis = L"org:";
AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
pwNew = L"org:";
pwThis = L"org:\\fin";
AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
pwNew = L"org:\\fin";
pwThis = L"org:\\fin\\apps\\word";
AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
pwNew = L"org:\\fin\\apps\\word";
pwThis = L"org:\\fin\\apps\\word\\dev";
AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
pwNew = L"org:\\fin\\apps\\word\\dev";
pwThis = L"org:\\fin\\apps\\word\\dev\\foo";
AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
printf("Resut of going from 'org:\\wpg\\sys\\cairo\\sphinx\\dev'"
" to 'org:\\fin\\apps\\word\\dev\\foo' is: '%wZ' (should be ',')\n\n\n",
&ssTransit);
SRtlFreeString( &ssTransit );
#endif
#if 1
// test 3.
// Link outside the normal path.
// org:\wpg -> org:\fin\apps -> org:\wpg\sys\cairo -> org:\wpg\sys\cairo\dev
SRtlNewString( &ssTransit, L"" );
pwAuth = L"org:\\wpg";
pwNew = L"org:\\fin\\apps";
pwThis = L"org:\\wpg\\sys\\cairo";
AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
pwNew = L"org:\\wpg\\sys\\cairo";
pwThis = L"org:\\wpg\\sys\\cairo\\dev";
AddRealm( &ssTransit, pwAuth, pwThis, pwNew );
printf("Resut of traversing "
"'org:\\wpg,org:\\fin\\apps,org:\\wpg\\sys\\cairo,org:\\wpg\\sys\\cairo\\dev'"
"is: '%wZ'\n", &ssTransit);
printf("Should be 'org:\\fin\\apps,org:wpg\\sys\\cairo,'" );
SRtlFreeString( &ssTransit );
#endif
return(0);
}