//+--------------------------------------------------------------------------- // // 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 #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); }