12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106 |
- {******************************************************************************}
- { }
- { LSA API interface Unit for Object Pascal }
- { }
- { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
- { Corporation. All Rights Reserved. }
- { }
- { The original file is: ntsecapi.h, released June 2000. The original Pascal }
- { code is: NtSecApi.pas, released December 2000. The initial developer of the }
- { Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
- { }
- { Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
- { Marcel van Brakel. All Rights Reserved. }
- { }
- { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
- { }
- { You may retrieve the latest version of this file at the Project JEDI }
- { APILIB home page, located at http://jedi-apilib.sourceforge.net }
- { }
- { The contents of this file are used with permission, subject to the Mozilla }
- { Public License Version 1.1 (the "License"); you may not use this file except }
- { in compliance with the License. You may obtain a copy of the License at }
- { http://www.mozilla.org/MPL/MPL-1.1.html }
- { }
- { Software distributed under the License is distributed on an "AS IS" basis, }
- { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
- { the specific language governing rights and limitations under the License. }
- { }
- { Alternatively, the contents of this file may be used under the terms of the }
- { GNU Lesser General Public License (the "LGPL License"), in which case the }
- { provisions of the LGPL License are applicable instead of those above. }
- { If you wish to allow use of your version of this file only under the terms }
- { of the LGPL License and not to allow others to use your version of this file }
- { under the MPL, indicate your decision by deleting the provisions above and }
- { replace them with the notice and other provisions required by the LGPL }
- { License. If you do not delete the provisions above, a recipient may use }
- { your version of this file under either the MPL or the LGPL License. }
- { }
- { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
- { }
- {******************************************************************************}
- unit JwaNtSecApi;
- {$WEAKPACKAGEUNIT}
- {$HPPEMIT ''}
- {$HPPEMIT '#include "ntsecapi.h"'}
- {$HPPEMIT ''}
- {$I jediapilib.inc}
- interface
- uses
- JwaWinType, JwaNtStatus, JwaWinNT;
- //
- // Security operation mode of the system is held in a control
- // longword.
- //
- type
- LSA_OPERATIONAL_MODE = ULONG;
- {$EXTERNALSYM LSA_OPERATIONAL_MODE}
- PLSA_OPERATIONAL_MODE = ^LSA_OPERATIONAL_MODE;
- {$EXTERNALSYM PLSA_OPERATIONAL_MODE}
- //
- // The flags in the security operational mode are defined
- // as:
- //
- // PasswordProtected - Some level of authentication (such as
- // a password) must be provided by users before they are
- // allowed to use the system. Once set, this value will
- // not be cleared without re-booting the system.
- //
- // IndividualAccounts - Each user must identify an account to
- // logon to. This flag is only meaningful if the
- // PasswordProtected flag is also set. If this flag is
- // not set and the PasswordProtected flag is set, then all
- // users may logon to the same account. Once set, this value
- // will not be cleared without re-booting the system.
- //
- // MandatoryAccess - Indicates the system is running in a mandatory
- // access control mode (e.g., B-level as defined by the U.S.A's
- // Department of Defense's "Orange Book"). This is not utilized
- // in the current release of NT. This flag is only meaningful
- // if both the PasswordProtected and IndividualAccounts flags are
- // set. Once set, this value will not be cleared without
- // re-booting the system.
- //
- // LogFull - Indicates the system has been brought up in a mode in
- // which if must perform security auditing, but its audit log
- // is full. This may (should) restrict the operations that
- // can occur until the audit log is made not-full again. THIS
- // VALUE MAY BE CLEARED WHILE THE SYSTEM IS RUNNING (I.E., WITHOUT
- // REBOOTING).
- //
- // If the PasswordProtected flag is not set, then the system is running
- // without security, and user interface should be adjusted appropriately.
- //
- const
- LSA_MODE_PASSWORD_PROTECTED = $00000001;
- {$EXTERNALSYM LSA_MODE_PASSWORD_PROTECTED}
- LSA_MODE_INDIVIDUAL_ACCOUNTS = $00000002;
- {$EXTERNALSYM LSA_MODE_INDIVIDUAL_ACCOUNTS}
- LSA_MODE_MANDATORY_ACCESS = $00000004;
- {$EXTERNALSYM LSA_MODE_MANDATORY_ACCESS}
- LSA_MODE_LOG_FULL = $00000008;
- {$EXTERNALSYM LSA_MODE_LOG_FULL}
- //
- // Used by a logon process to indicate what type of logon is being
- // requested.
- //
- type
- _SECURITY_LOGON_TYPE = (
- seltFiller0, seltFiller1,
- Interactive, // Interactively logged on (locally or remotely)
- Network, // Accessing system via network
- Batch, // Started via a batch queue
- Service, // Service started by service controller
- Proxy, // Proxy logon
- Unlock, // Unlock workstation
- NetworkCleartext, // Network logon with cleartext credentials
- NewCredentials, // Clone caller, new default credentials
- RemoteInteractive, // Remote, yet interactive. Terminal server
- CachedInteractive, // Try cached credentials without hitting the net.
- CachedRemoteInteractive, // Same as RemoteInteractive, this is used internally for auditing purpose
- CachedUnlock); // Cached Unlock workstation
- {$EXTERNALSYM _SECURITY_LOGON_TYPE}
- SECURITY_LOGON_TYPE = _SECURITY_LOGON_TYPE;
- {$EXTERNALSYM SECURITY_LOGON_TYPE}
- PSECURITY_LOGON_TYPE = ^SECURITY_LOGON_TYPE;
- {$EXTERNALSYM PSECURITY_LOGON_TYPE}
- TSecurityLogonType = SECURITY_LOGON_TYPE;
- PSecurityLogonType = PSECURITY_LOGON_TYPE;
- //
- // Audit Event Categories
- //
- // The following are the built-in types or Categories of audit event.
- // WARNING! This structure is subject to expansion. The user should not
- // compute the number of elements of this type directly, but instead
- // should obtain the count of elements by calling LsaQueryInformationPolicy()
- // for the PolicyAuditEventsInformation class and extracting the count from
- // the MaximumAuditEventCount field of the returned structure.
- //
- _POLICY_AUDIT_EVENT_TYPE = (
- AuditCategorySystem,
- AuditCategoryLogon,
- AuditCategoryObjectAccess,
- AuditCategoryPrivilegeUse,
- AuditCategoryDetailedTracking,
- AuditCategoryPolicyChange,
- AuditCategoryAccountManagement,
- AuditCategoryDirectoryServiceAccess,
- AuditCategoryAccountLogon);
- {$EXTERNALSYM _POLICY_AUDIT_EVENT_TYPE}
- POLICY_AUDIT_EVENT_TYPE = _POLICY_AUDIT_EVENT_TYPE;
- {$EXTERNALSYM POLICY_AUDIT_EVENT_TYPE}
- PPOLICY_AUDIT_EVENT_TYPE = ^POLICY_AUDIT_EVENT_TYPE;
- {$EXTERNALSYM PPOLICY_AUDIT_EVENT_TYPE}
- TPolicyAuditEventType = POLICY_AUDIT_EVENT_TYPE;
- PPolicyAuditEventType = PPOLICY_AUDIT_EVENT_TYPE;
- //
- // The following defines describe the auditing options for each
- // event type
- //
- const
- // Leave options specified for this event unchanged
- POLICY_AUDIT_EVENT_UNCHANGED = $00000000;
- {$EXTERNALSYM POLICY_AUDIT_EVENT_UNCHANGED}
- // Audit successful occurrences of events of this type
- POLICY_AUDIT_EVENT_SUCCESS = $00000001;
- {$EXTERNALSYM POLICY_AUDIT_EVENT_SUCCESS}
- // Audit failed attempts to cause an event of this type to occur
- POLICY_AUDIT_EVENT_FAILURE = $00000002;
- {$EXTERNALSYM POLICY_AUDIT_EVENT_FAILURE}
- POLICY_AUDIT_EVENT_NONE = $00000004;
- {$EXTERNALSYM POLICY_AUDIT_EVENT_NONE}
- // Mask of valid event auditing options
- POLICY_AUDIT_EVENT_MASK = (POLICY_AUDIT_EVENT_SUCCESS or POLICY_AUDIT_EVENT_FAILURE or
- POLICY_AUDIT_EVENT_UNCHANGED or POLICY_AUDIT_EVENT_NONE);
- {$EXTERNALSYM POLICY_AUDIT_EVENT_MASK}
- TPolicyAuditEventMask = POLICY_AUDIT_EVENT_MASK;
- type
- PLSA_UNICODE_STRING = ^LSA_UNICODE_STRING;
- {$EXTERNALSYM PLSA_UNICODE_STRING}
- _LSA_UNICODE_STRING = record
- Length: USHORT;
- MaximumLength: USHORT;
- Buffer: PWSTR;
- end;
- {$EXTERNALSYM _LSA_UNICODE_STRING}
- LSA_UNICODE_STRING = _LSA_UNICODE_STRING;
- {$EXTERNALSYM LSA_UNICODE_STRING}
- TLsaUnicodeString = LSA_UNICODE_STRING;
- PLsaUnicodeString = PLSA_UNICODE_STRING;
- PLSA_STRING = ^LSA_STRING;
- {$EXTERNALSYM PLSA_STRING}
- _LSA_STRING = record
- Length: USHORT;
- MaximumLength: USHORT;
- Buffer: PCHAR;
- end;
- {$EXTERNALSYM _LSA_STRING}
- LSA_STRING = _LSA_STRING;
- {$EXTERNALSYM LSA_STRING}
- TLsaString = LSA_STRING;
- PLsaString = PLSA_STRING;
- PLSA_OBJECT_ATTRIBUTES = ^LSA_OBJECT_ATTRIBUTES;
- {$EXTERNALSYM PLSA_OBJECT_ATTRIBUTES}
- _LSA_OBJECT_ATTRIBUTES = record
- Length: ULONG;
- RootDirectory: HANDLE;
- ObjectName: PLSA_UNICODE_STRING;
- Attributes: ULONG;
- SecurityDescriptor: PVOID; // Points to type SECURITY_DESCRIPTOR
- SecurityQualityOfService: PVOID; // Points to type SECURITY_QUALITY_OF_SERVICE
- end;
- {$EXTERNALSYM _LSA_OBJECT_ATTRIBUTES}
- LSA_OBJECT_ATTRIBUTES = _LSA_OBJECT_ATTRIBUTES;
- {$EXTERNALSYM LSA_OBJECT_ATTRIBUTES}
- TLsaObjectAttributes = LSA_OBJECT_ATTRIBUTES;
- PLsaObjectAttributes = PLSA_OBJECT_ATTRIBUTES;
- //
- // Macro for determining whether an API succeeded.
- //
- function LSA_SUCCESS(Error: NTSTATUS): BOOL;
- {$EXTERNALSYM LSA_SUCCESS}
- function LsaRegisterLogonProcess(const LogonProcessName: LSA_STRING;
- var LsaHandle: HANDLE; SecurityMode: PLSA_OPERATIONAL_MODE): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaRegisterLogonProcess}
- function LsaLogonUser(LsaHandle: HANDLE; const OriginName: LSA_STRING;
- LogonType: SECURITY_LOGON_TYPE; AuthenticationPackage: ULONG;
- AuthenticationInformation: PVOID; AuthenticationInformationLength: ULONG;
- LocalGroups: PTOKEN_GROUPS; SourceContext: PTOKEN_SOURCE;
- var ProfileBuffer: PVOID; var ProfileBufferLength: ULONG; var LogonId: LUID;
- var Token: HANDLE; var Quotas: QUOTA_LIMITS; var SubStatus: NTSTATUS): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaLogonUser}
- function LsaLookupAuthenticationPackage(LsaHandle: HANDLE;
- const PackageName: LSA_STRING; var AuthenticationPackage: ULONG): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaLookupAuthenticationPackage}
- function LsaFreeReturnBuffer(Buffer: PVOID): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaFreeReturnBuffer}
- function LsaCallAuthenticationPackage(LsaHandle: HANDLE;
- AuthenticationPackage: ULONG; ProtocolSubmitBuffer: PVOID;
- SubmitBufferLength: ULONG; var ProtocolReturnBuffer: PVOID;
- var ReturnBufferLength: ULONG; var ProtocolStatus: NTSTATUS): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaCallAuthenticationPackage}
- function LsaDeregisterLogonProcess(LsaHandle: HANDLE): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaDeregisterLogonProcess}
- function LsaConnectUntrusted(var LsaHandle: HANDLE): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaConnectUntrusted}
- ////////////////////////////////////////////////////////////////////////////
- // //
- // Local Security Policy Administration API datatypes and defines //
- // //
- ////////////////////////////////////////////////////////////////////////////
- //
- // Access types for the Policy object
- //
- const
- POLICY_VIEW_LOCAL_INFORMATION = $00000001;
- {$EXTERNALSYM POLICY_VIEW_LOCAL_INFORMATION}
- POLICY_VIEW_AUDIT_INFORMATION = $00000002;
- {$EXTERNALSYM POLICY_VIEW_AUDIT_INFORMATION}
- POLICY_GET_PRIVATE_INFORMATION = $00000004;
- {$EXTERNALSYM POLICY_GET_PRIVATE_INFORMATION}
- POLICY_TRUST_ADMIN = $00000008;
- {$EXTERNALSYM POLICY_TRUST_ADMIN}
- POLICY_CREATE_ACCOUNT = $00000010;
- {$EXTERNALSYM POLICY_CREATE_ACCOUNT}
- POLICY_CREATE_SECRET = $00000020;
- {$EXTERNALSYM POLICY_CREATE_SECRET}
- POLICY_CREATE_PRIVILEGE = $00000040;
- {$EXTERNALSYM POLICY_CREATE_PRIVILEGE}
- POLICY_SET_DEFAULT_QUOTA_LIMITS = $00000080;
- {$EXTERNALSYM POLICY_SET_DEFAULT_QUOTA_LIMITS}
- POLICY_SET_AUDIT_REQUIREMENTS = $00000100;
- {$EXTERNALSYM POLICY_SET_AUDIT_REQUIREMENTS}
- POLICY_AUDIT_LOG_ADMIN = $00000200;
- {$EXTERNALSYM POLICY_AUDIT_LOG_ADMIN}
- POLICY_SERVER_ADMIN = $00000400;
- {$EXTERNALSYM POLICY_SERVER_ADMIN}
- POLICY_LOOKUP_NAMES = $00000800;
- {$EXTERNALSYM POLICY_LOOKUP_NAMES}
- POLICY_NOTIFICATION = $00001000;
- {$EXTERNALSYM POLICY_NOTIFICATION}
- POLICY_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED or
- POLICY_VIEW_LOCAL_INFORMATION or
- POLICY_VIEW_AUDIT_INFORMATION or
- POLICY_GET_PRIVATE_INFORMATION or
- POLICY_TRUST_ADMIN or
- POLICY_CREATE_ACCOUNT or
- POLICY_CREATE_SECRET or
- POLICY_CREATE_PRIVILEGE or
- POLICY_SET_DEFAULT_QUOTA_LIMITS or
- POLICY_SET_AUDIT_REQUIREMENTS or
- POLICY_AUDIT_LOG_ADMIN or
- POLICY_SERVER_ADMIN or
- POLICY_LOOKUP_NAMES);
- {$EXTERNALSYM POLICY_ALL_ACCESS}
- POLICY_READ = (STANDARD_RIGHTS_READ or
- POLICY_VIEW_AUDIT_INFORMATION or
- POLICY_GET_PRIVATE_INFORMATION);
- {$EXTERNALSYM POLICY_READ}
- POLICY_WRITE = (STANDARD_RIGHTS_WRITE or
- POLICY_TRUST_ADMIN or
- POLICY_CREATE_ACCOUNT or
- POLICY_CREATE_SECRET or
- POLICY_CREATE_PRIVILEGE or
- POLICY_SET_DEFAULT_QUOTA_LIMITS or
- POLICY_SET_AUDIT_REQUIREMENTS or
- POLICY_AUDIT_LOG_ADMIN or
- POLICY_SERVER_ADMIN);
- {$EXTERNALSYM POLICY_WRITE}
- POLICY_EXECUTE = (STANDARD_RIGHTS_EXECUTE or
- POLICY_VIEW_LOCAL_INFORMATION or
- POLICY_LOOKUP_NAMES);
- {$EXTERNALSYM POLICY_EXECUTE}
- //
- // Policy object specific data types.
- //
- //
- // The following data type is used to identify a domain
- //
- type
- PLSA_TRUST_INFORMATION = ^LSA_TRUST_INFORMATION;
- {$EXTERNALSYM PLSA_TRUST_INFORMATION}
- _LSA_TRUST_INFORMATION = record
- Name: LSA_UNICODE_STRING;
- Sid: PSID;
- end;
- {$EXTERNALSYM _LSA_TRUST_INFORMATION}
- LSA_TRUST_INFORMATION = _LSA_TRUST_INFORMATION;
- {$EXTERNALSYM LSA_TRUST_INFORMATION}
- TLsaTrustInformation = LSA_TRUST_INFORMATION;
- PLsaTrustInformation = PLSA_TRUST_INFORMATION;
- // where members have the following usage:
- //
- // Name - The name of the domain.
- //
- // Sid - A pointer to the Sid of the Domain
- //
- //
- // The following data type is used in name and SID lookup services to
- // describe the domains referenced in the lookup operation.
- //
- PLSA_REFERENCED_DOMAIN_LIST = ^LSA_REFERENCED_DOMAIN_LIST;
- {$EXTERNALSYM PLSA_REFERENCED_DOMAIN_LIST}
- _LSA_REFERENCED_DOMAIN_LIST = record
- Entries: ULONG;
- Domains: PLSA_TRUST_INFORMATION;
- end;
- {$EXTERNALSYM _LSA_REFERENCED_DOMAIN_LIST}
- LSA_REFERENCED_DOMAIN_LIST = _LSA_REFERENCED_DOMAIN_LIST;
- {$EXTERNALSYM LSA_REFERENCED_DOMAIN_LIST}
- TLsaReferencedDomainList = LSA_REFERENCED_DOMAIN_LIST;
- PLsaReferencedDomainList = PLSA_REFERENCED_DOMAIN_LIST;
- // where members have the following usage:
- //
- // Entries - Is a count of the number of domains described in the
- // Domains array.
- //
- // Domains - Is a pointer to an array of Entries LSA_TRUST_INFORMATION data
- // structures.
- //
- //
- // The following data type is used in name to SID lookup services to describe
- // the domains referenced in the lookup operation.
- //
- PLSA_TRANSLATED_SID = ^LSA_TRANSLATED_SID;
- {$EXTERNALSYM PLSA_TRANSLATED_SID}
- _LSA_TRANSLATED_SID = record
- Use: SID_NAME_USE;
- RelativeId: ULONG;
- DomainIndex: LONG;
- end;
- {$EXTERNALSYM _LSA_TRANSLATED_SID}
- LSA_TRANSLATED_SID = _LSA_TRANSLATED_SID;
- {$EXTERNALSYM LSA_TRANSLATED_SID}
- TLsaTranslatedSid = LSA_TRANSLATED_SID;
- PLsaTranslatedSid = PLSA_TRANSLATED_SID;
- // where members have the following usage:
- //
- // Use - identifies the use of the SID. If this value is SidUnknown or
- // SidInvalid, then the remainder of the record is not set and
- // should be ignored.
- //
- // RelativeId - Contains the relative ID of the translated SID. The
- // remainder of the SID (the prefix) is obtained using the
- // DomainIndex field.
- //
- // DomainIndex - Is the index of an entry in a related
- // LSA_REFERENCED_DOMAIN_LIST data structure describing the
- // domain in which the account was found.
- //
- // If there is no corresponding reference domain for an entry, then
- // this field will contain a negative value.
- //
- _LSA_TRANSLATED_SID2 = record
- Use: SID_NAME_USE;
- Sid: PSID;
- DomainIndex: LONG;
- Flags: ULONG;
- end;
- {$EXTERNALSYM _LSA_TRANSLATED_SID2}
- LSA_TRANSLATED_SID2 = _LSA_TRANSLATED_SID2;
- {$EXTERNALSYM LSA_TRANSLATED_SID2}
- PLSA_TRANSLATED_SID2 = ^LSA_TRANSLATED_SID2;
- {$EXTERNALSYM PLSA_TRANSLATED_SID2}
- TLsaTranslatedSid2 = LSA_TRANSLATED_SID2;
- PLsaTranslatedSid2 = PLSA_TRANSLATED_SID2;
- // where members have the following usage:
- //
- // Use - identifies the use of the SID. If this value is SidUnknown or
- // SidInvalid, then the remainder of the record is not set and
- // should be ignored.
- //
- // Sid - Contains the complete Sid of the tranlated SID
- //
- // DomainIndex - Is the index of an entry in a related
- // LSA_REFERENCED_DOMAIN_LIST data structure describing the
- // domain in which the account was found.
- //
- // If there is no corresponding reference domain for an entry, then
- // this field will contain a negative value.
- //
- //
- // The following data type is used in SID to name lookup services to
- // describe the domains referenced in the lookup operation.
- //
- PLSA_TRANSLATED_NAME = ^LSA_TRANSLATED_NAME;
- {$EXTERNALSYM PLSA_TRANSLATED_NAME}
- _LSA_TRANSLATED_NAME = record
- Use: SID_NAME_USE;
- Name: LSA_UNICODE_STRING;
- DomainIndex: LONG;
- end;
- {$EXTERNALSYM _LSA_TRANSLATED_NAME}
- LSA_TRANSLATED_NAME = _LSA_TRANSLATED_NAME;
- {$EXTERNALSYM LSA_TRANSLATED_NAME}
- TLsaTranslatedName = LSA_TRANSLATED_NAME;
- PLsaTranslatedName = PLSA_TRANSLATED_NAME;
- // where the members have the following usage:
- //
- // Use - Identifies the use of the name. If this value is SidUnknown
- // or SidInvalid, then the remainder of the record is not set and
- // should be ignored. If this value is SidWellKnownGroup then the
- // Name field is invalid, but the DomainIndex field is not.
- //
- // Name - Contains the isolated name of the translated SID.
- //
- // DomainIndex - Is the index of an entry in a related
- // LSA_REFERENCED_DOMAIN_LIST data structure describing the domain
- // in which the account was found.
- //
- // If there is no corresponding reference domain for an entry, then
- // this field will contain a negative value.
- //
- //
- // The following data type is used to represent the role of the LSA
- // server (primary or backup).
- //
- _POLICY_LSA_SERVER_ROLE = (plsrFiller0, plsrFiller1, PolicyServerRoleBackup,
- PolicyServerRolePrimary);
- {$EXTERNALSYM _POLICY_LSA_SERVER_ROLE}
- POLICY_LSA_SERVER_ROLE = _POLICY_LSA_SERVER_ROLE;
- {$EXTERNALSYM POLICY_LSA_SERVER_ROLE}
- PPOLICY_LSA_SERVER_ROLE = ^POLICY_LSA_SERVER_ROLE;
- {$EXTERNALSYM PPOLICY_LSA_SERVER_ROLE}
- TPolicyLsaServerRole = POLICY_LSA_SERVER_ROLE;
- PPolicyLsaServerRole = PPOLICY_LSA_SERVER_ROLE;
- //
- // The following data type is used to specify the auditing options for
- // an Audit Event Type.
- //
- POLICY_AUDIT_EVENT_OPTIONS = ULONG;
- {$EXTERNALSYM POLICY_AUDIT_EVENT_OPTIONS}
- PPOLICY_AUDIT_EVENT_OPTIONS = ^POLICY_AUDIT_EVENT_OPTIONS;
- {$EXTERNALSYM PPOLICY_AUDIT_EVENT_OPTIONS}
- // where the following flags can be set:
- //
- // POLICY_AUDIT_EVENT_UNCHANGED - Leave existing auditing options
- // unchanged for events of this type. This flag is only used for
- // set operations. If this flag is set, then all other flags
- // are ignored.
- //
- // POLICY_AUDIT_EVENT_NONE - Cancel all auditing options for events
- // of this type. If this flag is set, the success/failure flags
- // are ignored.
- //
- // POLICY_AUDIT_EVENT_SUCCESS - When auditing is enabled, audit all
- // successful occurrences of events of the given type.
- //
- // POLICY_AUDIT_EVENT_FAILURE - When auditing is enabled, audit all
- // unsuccessful occurrences of events of the given type.
- //
- //
- // The following data type defines the classes of Policy Information
- // that may be queried/set.
- //
- type
- _POLICY_INFORMATION_CLASS = (
- picFiller0,
- PolicyAuditLogInformation,
- PolicyAuditEventsInformation,
- PolicyPrimaryDomainInformation,
- PolicyPdAccountInformation,
- PolicyAccountDomainInformation,
- PolicyLsaServerRoleInformation,
- PolicyReplicaSourceInformation,
- PolicyDefaultQuotaInformation,
- PolicyModificationInformation,
- PolicyAuditFullSetInformation,
- PolicyAuditFullQueryInformation,
- PolicyDnsDomainInformation,
- PolicyDnsDomainInformationInt);
- {$EXTERNALSYM _POLICY_INFORMATION_CLASS}
- POLICY_INFORMATION_CLASS = _POLICY_INFORMATION_CLASS;
- {$EXTERNALSYM POLICY_INFORMATION_CLASS}
- PPOLICY_INFORMATION_CLASS = ^POLICY_INFORMATION_CLASS;
- {$EXTERNALSYM PPOLICY_INFORMATION_CLASS}
- TPolicyInformationClass = POLICY_INFORMATION_CLASS;
- PPolicyInformationClass = PPOLICY_INFORMATION_CLASS;
- //
- // The following data type corresponds to the PolicyAuditLogInformation
- // information class. It is used to represent information relating to
- // the Audit Log.
- //
- // This structure may be used in both query and set operations. However,
- // when used in set operations, some fields are ignored.
- //
- PPOLICY_AUDIT_LOG_INFO = ^POLICY_AUDIT_LOG_INFO;
- {$EXTERNALSYM PPOLICY_AUDIT_LOG_INFO}
- _POLICY_AUDIT_LOG_INFO = record
- AuditLogPercentFull: ULONG;
- MaximumLogSize: ULONG;
- AuditRetentionPeriod: LARGE_INTEGER;
- AuditLogFullShutdownInProgress: ByteBool;
- TimeToShutdown: LARGE_INTEGER;
- NextAuditRecordId: ULONG;
- end;
- {$EXTERNALSYM _POLICY_AUDIT_LOG_INFO}
- POLICY_AUDIT_LOG_INFO = _POLICY_AUDIT_LOG_INFO;
- {$EXTERNALSYM POLICY_AUDIT_LOG_INFO}
- TPolicyAuditLogInfo = POLICY_AUDIT_LOG_INFO;
- PPolicyAuditLogInfo = PPOLICY_AUDIT_LOG_INFO;
- // where the members have the following usage:
- //
- // AuditLogPercentFull - Indicates the percentage of the Audit Log
- // currently being used.
- //
- // MaximumLogSize - Specifies the maximum size of the Audit Log in
- // kilobytes.
- //
- // AuditRetentionPeriod - Indicates the length of time that Audit
- // Records are to be retained. Audit Records are discardable
- // if their timestamp predates the current time minus the
- // retention period.
- //
- // AuditLogFullShutdownInProgress - Indicates whether or not a system
- // shutdown is being initiated due to the security Audit Log becoming
- // full. This condition will only occur if the system is configured
- // to shutdown when the log becomes full.
- //
- // TRUE indicates that a shutdown is in progress
- // FALSE indicates that a shutdown is not in progress.
- //
- // Once a shutdown has been initiated, this flag will be set to
- // TRUE. If an administrator is able to currect the situation
- // before the shutdown becomes irreversible, then this flag will
- // be reset to false.
- //
- // This field is ignored for set operations.
- //
- // TimeToShutdown - If the AuditLogFullShutdownInProgress flag is set,
- // then this field contains the time left before the shutdown
- // becomes irreversible.
- //
- // This field is ignored for set operations.
- //
- //
- // The following data type corresponds to the PolicyAuditEventsInformation
- // information class. It is used to represent information relating to
- // the audit requirements.
- //
- PPOLICY_AUDIT_EVENTS_INFO = ^POLICY_AUDIT_EVENTS_INFO;
- {$EXTERNALSYM PPOLICY_AUDIT_EVENTS_INFO}
- _POLICY_AUDIT_EVENTS_INFO = record
- AuditingMode: ByteBool;
- EventAuditingOptions: PPOLICY_AUDIT_EVENT_OPTIONS;
- MaximumAuditEventCount: ULONG;
- end;
- {$EXTERNALSYM _POLICY_AUDIT_EVENTS_INFO}
- POLICY_AUDIT_EVENTS_INFO = _POLICY_AUDIT_EVENTS_INFO;
- {$EXTERNALSYM POLICY_AUDIT_EVENTS_INFO}
- TPolicyAuditEventsInfo = POLICY_AUDIT_EVENTS_INFO;
- PPolicyAuditEventsInfo = PPOLICY_AUDIT_EVENTS_INFO;
- // where the members have the following usage:
- //
- // AuditingMode - A Boolean variable specifying the Auditing Mode value.
- // This value is interpreted as follows:
- //
- // TRUE - Auditing is to be enabled (set operations) or is enabled
- // (query operations). Audit Records will be generated according
- // to the Event Auditing Options in effect (see the
- // EventAuditingOptions field.
- //
- // FALSE - Auditing is to be disabled (set operations) or is
- // disabled (query operations). No Audit Records will be
- // generated. Note that for set operations the Event Auditing
- // Options in effect will still be updated as specified by the
- // EventAuditingOptions field whether Auditing is enabled or
- // disabled.
- //
- // EventAuditingOptions - Pointer to an array of Auditing Options
- // indexed by Audit Event Type.
- //
- // MaximumAuditEventCount - Specifiesa count of the number of Audit
- // Event Types specified by the EventAuditingOptions parameter. If
- // this count is less than the number of Audit Event Types supported
- // by the system, the Auditing Options for Event Types with IDs
- // higher than (MaximumAuditEventCount + 1) are left unchanged.
- //
- //
- // The following structure corresponds to the PolicyAccountDomainInformation
- // information class.
- //
- PPOLICY_ACCOUNT_DOMAIN_INFO = ^POLICY_ACCOUNT_DOMAIN_INFO;
- {$EXTERNALSYM PPOLICY_ACCOUNT_DOMAIN_INFO}
- _POLICY_ACCOUNT_DOMAIN_INFO = record
- DomainName: LSA_UNICODE_STRING;
- DomainSid: PSID;
- end;
- {$EXTERNALSYM _POLICY_ACCOUNT_DOMAIN_INFO}
- POLICY_ACCOUNT_DOMAIN_INFO = _POLICY_ACCOUNT_DOMAIN_INFO;
- {$EXTERNALSYM POLICY_ACCOUNT_DOMAIN_INFO}
- TPolicyAccountDomainInfo = POLICY_ACCOUNT_DOMAIN_INFO;
- PPolicyAccountDomainInfo = PPOLICY_ACCOUNT_DOMAIN_INFO;
- // where the members have the following usage:
- //
- // DomainName - Is the name of the domain
- //
- // DomainSid - Is the Sid of the domain
- //
- //
- // The following structure corresponds to the PolicyPrimaryDomainInformation
- // information class.
- //
- PPOLICY_PRIMARY_DOMAIN_INFO = ^POLICY_PRIMARY_DOMAIN_INFO;
- {$EXTERNALSYM PPOLICY_PRIMARY_DOMAIN_INFO}
- _POLICY_PRIMARY_DOMAIN_INFO = record
- Name: LSA_UNICODE_STRING;
- Sid: PSID;
- end;
- {$EXTERNALSYM _POLICY_PRIMARY_DOMAIN_INFO}
- POLICY_PRIMARY_DOMAIN_INFO = _POLICY_PRIMARY_DOMAIN_INFO;
- {$EXTERNALSYM POLICY_PRIMARY_DOMAIN_INFO}
- TPolicyPrimaryDomainInfo = POLICY_PRIMARY_DOMAIN_INFO;
- PPolicyPrimaryDomainInfo = PPOLICY_PRIMARY_DOMAIN_INFO;
- // where the members have the following usage:
- //
- // Name - Is the name of the domain
- //
- // Sid - Is the Sid of the domain
- //
- //
- // The following structure corresponds to the PolicyDnsDomainInformation
- // information class
- //
- PPOLICY_DNS_DOMAIN_INFO = ^POLICY_DNS_DOMAIN_INFO;
- {$EXTERNALSYM PPOLICY_DNS_DOMAIN_INFO}
- _POLICY_DNS_DOMAIN_INFO = record
- Name: LSA_UNICODE_STRING;
- DnsDomainName: LSA_UNICODE_STRING;
- DnsForestName: LSA_UNICODE_STRING;
- DomainGuid: GUID;
- Sid: PSID;
- end;
- {$EXTERNALSYM _POLICY_DNS_DOMAIN_INFO}
- POLICY_DNS_DOMAIN_INFO = _POLICY_DNS_DOMAIN_INFO;
- {$EXTERNALSYM POLICY_DNS_DOMAIN_INFO}
- TPolicyDnsDomainInfo = POLICY_DNS_DOMAIN_INFO;
- PPolicyDnsDomainInfo = PPOLICY_DNS_DOMAIN_INFO;
- // where the members have the following usage:
- //
- // Name - Is the name of the Domain
- //
- // DnsDomainName - Is the DNS name of the domain
- //
- // DnsForestName - Is the DNS forest name of the domain
- //
- // DomainGuid - Is the GUID of the domain
- //
- // Sid - Is the Sid of the domain
- //
- // The following structure corresponds to the PolicyPdAccountInformation
- // information class. This structure may be used in Query operations
- // only.
- //
- PPOLICY_PD_ACCOUNT_INFO = ^POLICY_PD_ACCOUNT_INFO;
- {$EXTERNALSYM PPOLICY_PD_ACCOUNT_INFO}
- _POLICY_PD_ACCOUNT_INFO = record
- Name: LSA_UNICODE_STRING;
- end;
- {$EXTERNALSYM _POLICY_PD_ACCOUNT_INFO}
- POLICY_PD_ACCOUNT_INFO = _POLICY_PD_ACCOUNT_INFO;
- {$EXTERNALSYM POLICY_PD_ACCOUNT_INFO}
- TPolicyPdAccountInfo = POLICY_PD_ACCOUNT_INFO;
- PPolicyPdAccountInfo = PPOLICY_PD_ACCOUNT_INFO;
- // where the members have the following usage:
- //
- // Name - Is the name of an account in the domain that should be used
- // for authentication and name/ID lookup requests.
- //
- //
- // The following structure corresponds to the PolicyLsaServerRoleInformation
- // information class.
- //
- PPOLICY_LSA_SERVER_ROLE_INFO = ^POLICY_LSA_SERVER_ROLE_INFO;
- {$EXTERNALSYM PPOLICY_LSA_SERVER_ROLE_INFO}
- _POLICY_LSA_SERVER_ROLE_INFO = record
- LsaServerRole: POLICY_LSA_SERVER_ROLE;
- end;
- {$EXTERNALSYM _POLICY_LSA_SERVER_ROLE_INFO}
- POLICY_LSA_SERVER_ROLE_INFO = _POLICY_LSA_SERVER_ROLE_INFO;
- {$EXTERNALSYM POLICY_LSA_SERVER_ROLE_INFO}
- TPolicyLsaServerRoleInfo = POLICY_LSA_SERVER_ROLE_INFO;
- PPolicyLsaServerRoleInfo = PPOLICY_LSA_SERVER_ROLE_INFO;
- // where the fields have the following usage:
- //
- // TBS
- //
- //
- // The following structure corresponds to the PolicyReplicaSourceInformation
- // information class.
- //
- PPOLICY_REPLICA_SOURCE_INFO = ^POLICY_REPLICA_SOURCE_INFO;
- {$EXTERNALSYM PPOLICY_REPLICA_SOURCE_INFO}
- _POLICY_REPLICA_SOURCE_INFO = record
- ReplicaSource: LSA_UNICODE_STRING;
- ReplicaAccountName: LSA_UNICODE_STRING;
- end;
- {$EXTERNALSYM _POLICY_REPLICA_SOURCE_INFO}
- POLICY_REPLICA_SOURCE_INFO = _POLICY_REPLICA_SOURCE_INFO;
- {$EXTERNALSYM POLICY_REPLICA_SOURCE_INFO}
- TPolicyReplicaSourceInfo = POLICY_REPLICA_SOURCE_INFO;
- PPolicyReplicaSourceInfo = PPOLICY_REPLICA_SOURCE_INFO;
- //
- // The following structure corresponds to the PolicyDefaultQuotaInformation
- // information class.
- //
- PPOLICY_DEFAULT_QUOTA_INFO = ^POLICY_DEFAULT_QUOTA_INFO;
- {$EXTERNALSYM PPOLICY_DEFAULT_QUOTA_INFO}
- _POLICY_DEFAULT_QUOTA_INFO = record
- QuotaLimits: QUOTA_LIMITS;
- end;
- {$EXTERNALSYM _POLICY_DEFAULT_QUOTA_INFO}
- POLICY_DEFAULT_QUOTA_INFO = _POLICY_DEFAULT_QUOTA_INFO;
- {$EXTERNALSYM POLICY_DEFAULT_QUOTA_INFO}
- TPolicyDefaultQuotaInfo = POLICY_DEFAULT_QUOTA_INFO;
- PPolicyDefaultQuotaInfo = PPOLICY_DEFAULT_QUOTA_INFO;
- //
- // The following structure corresponds to the PolicyModificationInformation
- // information class.
- //
- PPOLICY_MODIFICATION_INFO = ^POLICY_MODIFICATION_INFO;
- {$EXTERNALSYM PPOLICY_MODIFICATION_INFO}
- _POLICY_MODIFICATION_INFO = record
- ModifiedId: LARGE_INTEGER;
- DatabaseCreationTime: LARGE_INTEGER;
- end;
- {$EXTERNALSYM _POLICY_MODIFICATION_INFO}
- POLICY_MODIFICATION_INFO = _POLICY_MODIFICATION_INFO;
- {$EXTERNALSYM POLICY_MODIFICATION_INFO}
- TPolicyModificationInfo = POLICY_MODIFICATION_INFO;
- PPolicyModificationInfo = PPOLICY_MODIFICATION_INFO;
- // where the members have the following usage:
- //
- // ModifiedId - Is a 64-bit unsigned integer that is incremented each
- // time anything in the LSA database is modified. This value is
- // only modified on Primary Domain Controllers.
- //
- // DatabaseCreationTime - Is the date/time that the LSA Database was
- // created. On Backup Domain Controllers, this value is replicated
- // from the Primary Domain Controller.
- //
- //
- // The following structure type corresponds to the PolicyAuditFullSetInformation
- // Information Class.
- //
- PPOLICY_AUDIT_FULL_SET_INFO = ^POLICY_AUDIT_FULL_SET_INFO;
- {$EXTERNALSYM PPOLICY_AUDIT_FULL_SET_INFO}
- _POLICY_AUDIT_FULL_SET_INFO = record
- ShutDownOnFull: ByteBool;
- end;
- {$EXTERNALSYM _POLICY_AUDIT_FULL_SET_INFO}
- POLICY_AUDIT_FULL_SET_INFO = _POLICY_AUDIT_FULL_SET_INFO;
- {$EXTERNALSYM POLICY_AUDIT_FULL_SET_INFO}
- TPolicyAuditFullSetInfo = POLICY_AUDIT_FULL_SET_INFO;
- PPolicyAuditFullSetInfo = PPOLICY_AUDIT_FULL_SET_INFO;
- //
- // The following structure type corresponds to the PolicyAuditFullQueryInformation
- // Information Class.
- //
- PPOLICY_AUDIT_FULL_QUERY_INFO = ^POLICY_AUDIT_FULL_QUERY_INFO;
- {$EXTERNALSYM PPOLICY_AUDIT_FULL_QUERY_INFO}
- _POLICY_AUDIT_FULL_QUERY_INFO = record
- ShutDownOnFull: ByteBool;
- LogIsFull: ByteBool;
- end;
- {$EXTERNALSYM _POLICY_AUDIT_FULL_QUERY_INFO}
- POLICY_AUDIT_FULL_QUERY_INFO = _POLICY_AUDIT_FULL_QUERY_INFO;
- {$EXTERNALSYM POLICY_AUDIT_FULL_QUERY_INFO}
- TPolicyAuditFullQueryInfo = POLICY_AUDIT_FULL_QUERY_INFO;
- PPolicyAuditFullQueryInfo = PPOLICY_AUDIT_FULL_QUERY_INFO;
- //
- // The following data type defines the classes of Policy Information
- // that may be queried/set that has domain wide effect.
- //
- _POLICY_DOMAIN_INFORMATION_CLASS = (
- pdicFiller0,
- PolicyDomainQualityOfServiceInformation, // value was used in W2K; no longer supported
- PolicyDomainEfsInformation,
- PolicyDomainKerberosTicketInformation);
- {$EXTERNALSYM _POLICY_DOMAIN_INFORMATION_CLASS}
- POLICY_DOMAIN_INFORMATION_CLASS = _POLICY_DOMAIN_INFORMATION_CLASS;
- {$EXTERNALSYM POLICY_DOMAIN_INFORMATION_CLASS}
- PPOLICY_DOMAIN_INFORMATION_CLASS = ^POLICY_DOMAIN_INFORMATION_CLASS;
- {$EXTERNALSYM PPOLICY_DOMAIN_INFORMATION_CLASS}
- TPolicyDomainInformationClass = POLICY_DOMAIN_INFORMATION_CLASS;
- PPolicyDomainInformationClass = PPOLICY_DOMAIN_INFORMATION_CLASS;
- type
- // mvb has dissapeared in november 2002 release!
- PPOLICY_DOMAIN_QUALITY_OF_SERVICE_INFO = ^POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO;
- {$EXTERNALSYM PPOLICY_DOMAIN_QUALITY_OF_SERVICE_INFO}
- _POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO = record
- QualityOfService: ULONG;
- end;
- {$EXTERNALSYM _POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO}
- POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO = _POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO;
- {$EXTERNALSYM POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO}
- TPolicyDomainQualityOfServiceInfo = POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO;
- PPolicyDomainQualityOfServiceInfo = PPOLICY_DOMAIN_QUALITY_OF_SERVICE_INFO;
- //
- // where the members have the following usage:
- //
- // QualityOfService - Determines what specific QOS actions a machine should take
- //
- //
- // The following structure corresponds to the PolicyEfsInformation
- // information class
- //
- PPOLICY_DOMAIN_EFS_INFO = ^POLICY_DOMAIN_EFS_INFO;
- {$EXTERNALSYM PPOLICY_DOMAIN_EFS_INFO}
- _POLICY_DOMAIN_EFS_INFO = record
- InfoLength: ULONG;
- EfsBlob: PUCHAR;
- end;
- {$EXTERNALSYM _POLICY_DOMAIN_EFS_INFO}
- POLICY_DOMAIN_EFS_INFO = _POLICY_DOMAIN_EFS_INFO;
- {$EXTERNALSYM POLICY_DOMAIN_EFS_INFO}
- TPolicyDomainEfsInfo = POLICY_DOMAIN_EFS_INFO;
- PPolicyDomainEfsInfo = PPOLICY_DOMAIN_EFS_INFO;
- // where the members have the following usage:
- //
- // InfoLength - Length of the EFS Information blob
- //
- // EfsBlob - Efs blob data
- //
- //
- // The following structure corresponds to the PolicyDomainKerberosTicketInformation
- // information class
- const
- POLICY_KERBEROS_VALIDATE_CLIENT = $00000080;
- {$EXTERNALSYM POLICY_KERBEROS_VALIDATE_CLIENT}
- type
- PPOLICY_DOMAIN_KERBEROS_TICKET_INFO = ^POLICY_DOMAIN_KERBEROS_TICKET_INFO;
- {$EXTERNALSYM PPOLICY_DOMAIN_KERBEROS_TICKET_INFO}
- _POLICY_DOMAIN_KERBEROS_TICKET_INFO = record
- AuthenticationOptions: ULONG;
- MaxServiceTicketAge: LARGE_INTEGER;
- MaxTicketAge: LARGE_INTEGER;
- MaxRenewAge: LARGE_INTEGER;
- MaxClockSkew: LARGE_INTEGER;
- Reserved: LARGE_INTEGER;
- end;
- {$EXTERNALSYM _POLICY_DOMAIN_KERBEROS_TICKET_INFO}
- POLICY_DOMAIN_KERBEROS_TICKET_INFO = _POLICY_DOMAIN_KERBEROS_TICKET_INFO;
- {$EXTERNALSYM POLICY_DOMAIN_KERBEROS_TICKET_INFO}
- TPolicyDomainKerberosTicketInfo = POLICY_DOMAIN_KERBEROS_TICKET_INFO;
- PPolicyDomainKerberosTicketInfo = PPOLICY_DOMAIN_KERBEROS_TICKET_INFO;
- //
- // where the members have the following usage
- //
- // AuthenticationOptions -- allowed ticket options (POLICY_KERBEROS_* flags )
- //
- // MaxServiceTicketAge -- Maximum lifetime for a service ticket
- //
- // MaxTicketAge -- Maximum lifetime for the initial ticket
- //
- // MaxRenewAge -- Maximum cumulative age a renewable ticket can be with
- // requring authentication
- //
- // MaxClockSkew -- Maximum tolerance for synchronization of computer clocks
- //
- // Reserved -- Reserved
- //
- // The following data type defines the classes of Policy Information / Policy Domain Information
- // that may be used to request notification
- //
- _POLICY_NOTIFICATION_INFORMATION_CLASS = (
- pnicFiller0,
- PolicyNotifyAuditEventsInformation,
- PolicyNotifyAccountDomainInformation,
- PolicyNotifyServerRoleInformation,
- PolicyNotifyDnsDomainInformation,
- PolicyNotifyDomainEfsInformation,
- PolicyNotifyDomainKerberosTicketInformation,
- PolicyNotifyMachineAccountPasswordInformation);
- {$EXTERNALSYM _POLICY_NOTIFICATION_INFORMATION_CLASS}
- POLICY_NOTIFICATION_INFORMATION_CLASS = _POLICY_NOTIFICATION_INFORMATION_CLASS;
- {$EXTERNALSYM POLICY_NOTIFICATION_INFORMATION_CLASS}
- PPOLICY_NOTIFICATION_INFORMATION_CLASS = ^POLICY_NOTIFICATION_INFORMATION_CLASS;
- {$EXTERNALSYM PPOLICY_NOTIFICATION_INFORMATION_CLASS}
- TPolicyNotificationInformationClass = POLICY_NOTIFICATION_INFORMATION_CLASS;
- PPolicyNotificationInformationClass = PPOLICY_NOTIFICATION_INFORMATION_CLASS;
- //
- // LSA RPC Context Handle (Opaque form). Note that a Context Handle is
- // always a pointer type unlike regular handles.
- //
- LSA_HANDLE = PVOID;
- {$EXTERNALSYM LSA_HANDLE}
- PLSA_HANDLE = ^LSA_HANDLE;
- {$EXTERNALSYM PLSA_HANDLE}
- TLsaHandle = LSA_HANDLE;
- //
- // Trusted Domain Object specific data types
- //
- //
- // This data type defines the following information classes that may be
- // queried or set.
- //
- _TRUSTED_INFORMATION_CLASS = (
- ticFiller0,
- TrustedDomainNameInformation,
- TrustedControllersInformation,
- TrustedPosixOffsetInformation,
- TrustedPasswordInformation,
- TrustedDomainInformationBasic,
- TrustedDomainInformationEx,
- TrustedDomainAuthInformation,
- TrustedDomainFullInformation,
- TrustedDomainAuthInformationInternal,
- TrustedDomainFullInformationInternal,
- TrustedDomainInformationEx2Internal,
- TrustedDomainFullInformation2Internal);
- {$EXTERNALSYM _TRUSTED_INFORMATION_CLASS}
- TRUSTED_INFORMATION_CLASS = _TRUSTED_INFORMATION_CLASS;
- {$EXTERNALSYM TRUSTED_INFORMATION_CLASS}
- PTRUSTED_INFORMATION_CLASS = ^TRUSTED_INFORMATION_CLASS;
- {$EXTERNALSYM PTRUSTED_INFORMATION_CLASS}
- TTrustedInfomationClass = TRUSTED_INFORMATION_CLASS;
- PTrustedInfomationClass = PTRUSTED_INFORMATION_CLASS;
- //
- // The following data type corresponds to the TrustedDomainNameInformation
- // information class.
- //
- PTRUSTED_DOMAIN_NAME_INFO = ^TRUSTED_DOMAIN_NAME_INFO;
- {$EXTERNALSYM PTRUSTED_DOMAIN_NAME_INFO}
- _TRUSTED_DOMAIN_NAME_INFO = record
- Name: LSA_UNICODE_STRING;
- end;
- {$EXTERNALSYM _TRUSTED_DOMAIN_NAME_INFO}
- TRUSTED_DOMAIN_NAME_INFO = _TRUSTED_DOMAIN_NAME_INFO;
- {$EXTERNALSYM TRUSTED_DOMAIN_NAME_INFO}
- TTrustedDomainNameInfo = TRUSTED_DOMAIN_NAME_INFO;
- PTrustedDomainNameInfo = PTRUSTED_DOMAIN_NAME_INFO;
- // where members have the following meaning:
- //
- // Name - The name of the Trusted Domain.
- //
- //
- // The following data type corresponds to the TrustedControllersInformation
- // information class.
- //
- PTRUSTED_CONTROLLERS_INFO = ^TRUSTED_CONTROLLERS_INFO;
- {$EXTERNALSYM PTRUSTED_CONTROLLERS_INFO}
- _TRUSTED_CONTROLLERS_INFO = record
- Entries: ULONG;
- Names: PLSA_UNICODE_STRING;
- end;
- {$EXTERNALSYM _TRUSTED_CONTROLLERS_INFO}
- TRUSTED_CONTROLLERS_INFO = _TRUSTED_CONTROLLERS_INFO;
- {$EXTERNALSYM TRUSTED_CONTROLLERS_INFO}
- TTrustedControllersInfo = TRUSTED_CONTROLLERS_INFO;
- PTrustedControllersInfo = PTRUSTED_CONTROLLERS_INFO;
- // where members have the following meaning:
- //
- // Entries - Indicate how mamy entries there are in the Names array.
- //
- // Names - Pointer to an array of LSA_UNICODE_STRING structures containing the
- // names of domain controllers of the domain. This information may not
- // be accurate and should be used only as a hint. The order of this
- // list is considered significant and will be maintained.
- //
- // By convention, the first name in this list is assumed to be the
- // Primary Domain Controller of the domain. If the Primary Domain
- // Controller is not known, the first name should be set to the NULL
- // string.
- //
- //
- // The following data type corresponds to the TrustedPosixOffsetInformation
- // information class.
- //
- PTRUSTED_POSIX_OFFSET_INFO = ^TRUSTED_POSIX_OFFSET_INFO;
- {$EXTERNALSYM PTRUSTED_POSIX_OFFSET_INFO}
- _TRUSTED_POSIX_OFFSET_INFO = record
- Offset: ULONG;
- end;
- {$EXTERNALSYM _TRUSTED_POSIX_OFFSET_INFO}
- TRUSTED_POSIX_OFFSET_INFO = _TRUSTED_POSIX_OFFSET_INFO;
- {$EXTERNALSYM TRUSTED_POSIX_OFFSET_INFO}
- TTrustedPosixOffsetInfo = TRUSTED_POSIX_OFFSET_INFO;
- PTrustedPosixOffsetInfo = PTRUSTED_POSIX_OFFSET_INFO;
- // where members have the following meaning:
- //
- // Offset - Is an offset to use for the generation of Posix user and group
- // IDs from SIDs. The Posix ID corresponding to any particular SID is
- // generated by adding the RID of that SID to the Offset of the SID's
- // corresponding TrustedDomain object.
- //
- //
- // The following data type corresponds to the TrustedPasswordInformation
- // information class.
- //
- PTRUSTED_PASSWORD_INFO = ^TRUSTED_PASSWORD_INFO;
- {$EXTERNALSYM PTRUSTED_PASSWORD_INFO}
- _TRUSTED_PASSWORD_INFO = record
- Password: LSA_UNICODE_STRING;
- OldPassword: LSA_UNICODE_STRING;
- end;
- {$EXTERNALSYM _TRUSTED_PASSWORD_INFO}
- TRUSTED_PASSWORD_INFO = _TRUSTED_PASSWORD_INFO;
- {$EXTERNALSYM TRUSTED_PASSWORD_INFO}
- TTrustedPasswordInfo = TRUSTED_PASSWORD_INFO;
- PTrustedPasswordInfo = PTRUSTED_PASSWORD_INFO;
- TRUSTED_DOMAIN_INFORMATION_BASIC = LSA_TRUST_INFORMATION;
- {$EXTERNALSYM TRUSTED_DOMAIN_INFORMATION_BASIC}
- PTRUSTED_DOMAIN_INFORMATION_BASIC = PLSA_TRUST_INFORMATION;
- {$EXTERNALSYM PTRUSTED_DOMAIN_INFORMATION_BASIC}
- TTrustedDomainInformationBasic = TRUSTED_DOMAIN_INFORMATION_BASIC;
- PTrustedDomainInformationBasic = PTRUSTED_DOMAIN_INFORMATION_BASIC;
- //
- // Direction of the trust
- //
- const
- TRUST_DIRECTION_DISABLED = $00000000;
- {$EXTERNALSYM TRUST_DIRECTION_DISABLED}
- TRUST_DIRECTION_INBOUND = $00000001;
- {$EXTERNALSYM TRUST_DIRECTION_INBOUND}
- TRUST_DIRECTION_OUTBOUND = $00000002;
- {$EXTERNALSYM TRUST_DIRECTION_OUTBOUND}
- TRUST_DIRECTION_BIDIRECTIONAL = TRUST_DIRECTION_INBOUND or TRUST_DIRECTION_OUTBOUND;
- {$EXTERNALSYM TRUST_DIRECTION_BIDIRECTIONAL}
- TRUST_TYPE_DOWNLEVEL = $00000001; // NT4 and before
- {$EXTERNALSYM TRUST_TYPE_DOWNLEVEL}
- TRUST_TYPE_UPLEVEL = $00000002; // NT5
- {$EXTERNALSYM TRUST_TYPE_UPLEVEL}
- TRUST_TYPE_MIT = $00000003; // Trust with a MIT Kerberos realm
- {$EXTERNALSYM TRUST_TYPE_MIT}
- // TRUST_TYPE_DCE = $00000004; // Trust with a DCE realm
- // {$EXTERNALSYM TRUST_TYPE_DCE}
- // Levels 0x5 - 0x000FFFFF reserved for future use
- // Provider specific trust levels are from 0x00100000 to 0xFFF00000
- TRUST_ATTRIBUTE_NON_TRANSITIVE = $00000001; // Disallow transitivity
- {$EXTERNALSYM TRUST_ATTRIBUTE_NON_TRANSITIVE}
- TRUST_ATTRIBUTE_UPLEVEL_ONLY = $00000002; // Trust link only valid for uplevel client
- {$EXTERNALSYM TRUST_ATTRIBUTE_UPLEVEL_ONLY}
- TRUST_ATTRIBUTE_QUARANTINED_DOMAIN = $00000004; // Used to quarantine domains
- {$EXTERNALSYM TRUST_ATTRIBUTE_QUARANTINED_DOMAIN}
- TRUST_ATTRIBUTE_FOREST_TRANSITIVE = $00000008; // This link may contain forest trust information
- {$EXTERNALSYM TRUST_ATTRIBUTE_FOREST_TRANSITIVE}
- TRUST_ATTRIBUTE_CROSS_ORGANIZATION = $00000010; // This trust is to a domain/forest which is not part of this enterprise
- {$EXTERNALSYM TRUST_ATTRIBUTE_CROSS_ORGANIZATION}
- TRUST_ATTRIBUTE_WITHIN_FOREST = $00000020; // Trust is internal to this forest
- {$EXTERNALSYM TRUST_ATTRIBUTE_WITHIN_FOREST}
- TRUST_ATTRIBUTE_TREAT_AS_EXTERNAL = $00000040; // Trust is to be treated as external for trust boundary purposes
- {$EXTERNALSYM TRUST_ATTRIBUTE_TREAT_AS_EXTERNAL}
- // Trust attributes 0x00000040 through 0x00200000 are reserved for future use
- // Trust attributes 0x00400000 through 0x00800000 were used previously (up to W2K) and should not be re-used
- // Trust attributes 0x01000000 through 0x80000000 are reserved for user
- TRUST_ATTRIBUTES_VALID = DWORD($FF03FFFF);
- {$EXTERNALSYM TRUST_ATTRIBUTES_VALID}
- TRUST_ATTRIBUTES_USER = DWORD($FF000000);
- {$EXTERNALSYM TRUST_ATTRIBUTES_USER}
- type
- PTRUSTED_DOMAIN_INFORMATION_EX = ^TRUSTED_DOMAIN_INFORMATION_EX;
- {$EXTERNALSYM PTRUSTED_DOMAIN_INFORMATION_EX}
- _TRUSTED_DOMAIN_INFORMATION_EX = record
- Name: LSA_UNICODE_STRING;
- FlatName: LSA_UNICODE_STRING;
- Sid: PSID;
- TrustDirection: ULONG;
- TrustType: ULONG;
- TrustAttributes: ULONG;
- end;
- {$EXTERNALSYM _TRUSTED_DOMAIN_INFORMATION_EX}
- TRUSTED_DOMAIN_INFORMATION_EX = _TRUSTED_DOMAIN_INFORMATION_EX;
- {$EXTERNALSYM TRUSTED_DOMAIN_INFORMATION_EX}
- TTrustedDomainInformationEx = TRUSTED_DOMAIN_INFORMATION_EX;
- PTrustedDomainInformationEx = PTRUSTED_DOMAIN_INFORMATION_EX;
- _TRUSTED_DOMAIN_INFORMATION_EX2 = record
- Name: LSA_UNICODE_STRING;
- FlatName: LSA_UNICODE_STRING;
- Sid: PSID;
- TrustDirection: ULONG;
- TrustType: ULONG;
- TrustAttributes: ULONG;
- ForestTrustLength: ULONG;
- ForestTrustInfo: PUCHAR;
- end;
- {$EXTERNALSYM _TRUSTED_DOMAIN_INFORMATION_EX2}
- TRUSTED_DOMAIN_INFORMATION_EX2 = _TRUSTED_DOMAIN_INFORMATION_EX2;
- {$EXTERNALSYM TRUSTED_DOMAIN_INFORMATION_EX2}
- PTRUSTED_DOMAIN_INFORMATION_EX2 = ^TRUSTED_DOMAIN_INFORMATION_EX2;
- {$EXTERNALSYM PTRUSTED_DOMAIN_INFORMATION_EX2}
- TTrustedDomainInformationEx2 = TRUSTED_DOMAIN_INFORMATION_EX2;
- PTrustedDomainInformationEx2 = PTRUSTED_DOMAIN_INFORMATION_EX2;
- //
- // Type of authentication information
- //
- const
- TRUST_AUTH_TYPE_NONE = 0; // Ignore this entry
- {$EXTERNALSYM TRUST_AUTH_TYPE_NONE}
- TRUST_AUTH_TYPE_NT4OWF = 1; // NT4 OWF password
- {$EXTERNALSYM TRUST_AUTH_TYPE_NT4OWF}
- TRUST_AUTH_TYPE_CLEAR = 2; // Cleartext password
- {$EXTERNALSYM TRUST_AUTH_TYPE_CLEAR}
- TRUST_AUTH_TYPE_VERSION = 3; // Cleartext password version number
- {$EXTERNALSYM TRUST_AUTH_TYPE_VERSION}
- type
- PLSA_AUTH_INFORMATION = ^LSA_AUTH_INFORMATION;
- {$EXTERNALSYM PLSA_AUTH_INFORMATION}
- _LSA_AUTH_INFORMATION = record
- LastUpdateTime: LARGE_INTEGER;
- AuthType: ULONG;
- AuthInfoLength: ULONG;
- AuthInfo: PUCHAR;
- end;
- {$EXTERNALSYM _LSA_AUTH_INFORMATION}
- LSA_AUTH_INFORMATION = _LSA_AUTH_INFORMATION;
- {$EXTERNALSYM LSA_AUTH_INFORMATION}
- TLsaAuthInformation = LSA_AUTH_INFORMATION;
- PLsaAuthInformation = PLSA_AUTH_INFORMATION;
- PTRUSTED_DOMAIN_AUTH_INFORMATION = ^TRUSTED_DOMAIN_AUTH_INFORMATION;
- {$EXTERNALSYM PTRUSTED_DOMAIN_AUTH_INFORMATION}
- _TRUSTED_DOMAIN_AUTH_INFORMATION = record
- IncomingAuthInfos: ULONG;
- IncomingAuthenticationInformation: PLSA_AUTH_INFORMATION;
- IncomingPreviousAuthenticationInformation: PLSA_AUTH_INFORMATION;
- OutgoingAuthInfos: ULONG;
- OutgoingAuthenticationInformation: PLSA_AUTH_INFORMATION;
- OutgoingPreviousAuthenticationInformation: PLSA_AUTH_INFORMATION;
- end;
- {$EXTERNALSYM _TRUSTED_DOMAIN_AUTH_INFORMATION}
- TRUSTED_DOMAIN_AUTH_INFORMATION = _TRUSTED_DOMAIN_AUTH_INFORMATION;
- {$EXTERNALSYM TRUSTED_DOMAIN_AUTH_INFORMATION}
- TTrustedDomainAuthInformation = TRUSTED_DOMAIN_AUTH_INFORMATION;
- PTrustedDomainAuthInformation = PTRUSTED_DOMAIN_AUTH_INFORMATION;
- PTRUSTED_DOMAIN_FULL_INFORMATION = ^TRUSTED_DOMAIN_FULL_INFORMATION;
- {$EXTERNALSYM PTRUSTED_DOMAIN_FULL_INFORMATION}
- _TRUSTED_DOMAIN_FULL_INFORMATION = record
- Information: TRUSTED_DOMAIN_INFORMATION_EX;
- PosixOffset: TRUSTED_POSIX_OFFSET_INFO;
- AuthInformation: TRUSTED_DOMAIN_AUTH_INFORMATION;
- end;
- {$EXTERNALSYM _TRUSTED_DOMAIN_FULL_INFORMATION}
- TRUSTED_DOMAIN_FULL_INFORMATION = _TRUSTED_DOMAIN_FULL_INFORMATION;
- {$EXTERNALSYM TRUSTED_DOMAIN_FULL_INFORMATION}
- TTrustedDomainFullInformation = TRUSTED_DOMAIN_FULL_INFORMATION;
- PTrustedDomainFullInformation = PTRUSTED_DOMAIN_FULL_INFORMATION;
- PTRUSTED_DOMAIN_FULL_INFORMATION2 = ^TRUSTED_DOMAIN_FULL_INFORMATION2;
- {$EXTERNALSYM PTRUSTED_DOMAIN_FULL_INFORMATION2}
- _TRUSTED_DOMAIN_FULL_INFORMATION2 = record
- Information: TRUSTED_DOMAIN_INFORMATION_EX2;
- PosixOffset: TRUSTED_POSIX_OFFSET_INFO;
- AuthInformation: TRUSTED_DOMAIN_AUTH_INFORMATION;
- end;
- {$EXTERNALSYM _TRUSTED_DOMAIN_FULL_INFORMATION2}
- TRUSTED_DOMAIN_FULL_INFORMATION2 = _TRUSTED_DOMAIN_FULL_INFORMATION2;
- {$EXTERNALSYM TRUSTED_DOMAIN_FULL_INFORMATION2}
- TTrustedDomainFullInformation2 = TRUSTED_DOMAIN_FULL_INFORMATION2;
- PTrustedDomainFullInformation2 = PTRUSTED_DOMAIN_FULL_INFORMATION2;
- LSA_FOREST_TRUST_RECORD_TYPE = (
- ForestTrustTopLevelName,
- ForestTrustTopLevelNameEx,
- ForestTrustDomainInfo);
- {$EXTERNALSYM LSA_FOREST_TRUST_RECORD_TYPE}
- TLsaForestTrustRecordType = LSA_FOREST_TRUST_RECORD_TYPE;
- const
- ForestTrustRecordTypeLast = ForestTrustDomainInfo;
- {$EXTERNALSYM ForestTrustRecordTypeLast}
- //
- // Bottom 16 bits of the flags are reserved for disablement reasons
- //
- LSA_FTRECORD_DISABLED_REASONS = $0000FFFF;
- {$EXTERNALSYM LSA_FTRECORD_DISABLED_REASONS}
- //
- // Reasons for a top-level name forest trust record to be disabled
- //
- LSA_TLN_DISABLED_NEW = $00000001;
- {$EXTERNALSYM LSA_TLN_DISABLED_NEW}
- LSA_TLN_DISABLED_ADMIN = $00000002;
- {$EXTERNALSYM LSA_TLN_DISABLED_ADMIN}
- LSA_TLN_DISABLED_CONFLICT = $00000004;
- {$EXTERNALSYM LSA_TLN_DISABLED_CONFLICT}
- //
- // Reasons for a domain information forest trust record to be disabled
- //
- LSA_SID_DISABLED_ADMIN = $00000001;
- {$EXTERNALSYM LSA_SID_DISABLED_ADMIN}
- LSA_SID_DISABLED_CONFLICT = $00000002;
- {$EXTERNALSYM LSA_SID_DISABLED_CONFLICT}
- LSA_NB_DISABLED_ADMIN = $00000004;
- {$EXTERNALSYM LSA_NB_DISABLED_ADMIN}
- LSA_NB_DISABLED_CONFLICT = $00000008;
- {$EXTERNALSYM LSA_NB_DISABLED_CONFLICT}
- type
- PLSA_FOREST_TRUST_DOMAIN_INFO = ^LSA_FOREST_TRUST_DOMAIN_INFO;
- {$EXTERNALSYM PLSA_FOREST_TRUST_DOMAIN_INFO}
- _LSA_FOREST_TRUST_DOMAIN_INFO = record
- Sid: PSID;
- DnsName: LSA_UNICODE_STRING;
- NetbiosName: LSA_UNICODE_STRING;
- end;
- {$EXTERNALSYM _LSA_FOREST_TRUST_DOMAIN_INFO}
- LSA_FOREST_TRUST_DOMAIN_INFO = _LSA_FOREST_TRUST_DOMAIN_INFO;
- {$EXTERNALSYM LSA_FOREST_TRUST_DOMAIN_INFO}
- TLsaForestTrustDomainInfo = LSA_FOREST_TRUST_DOMAIN_INFO;
- PLsaForestTrustDomainInfo = PLSA_FOREST_TRUST_DOMAIN_INFO;
- //
- // To prevent huge data to be passed in, we should put a limit on LSA_FOREST_TRUST_BINARY_DATA.
- // 128K is large enough that can't be reached in the near future, and small enough not to
- // cause memory problems.
- const
- MAX_FOREST_TRUST_BINARY_DATA_SIZE = 128 * 1024;
- {$EXTERNALSYM MAX_FOREST_TRUST_BINARY_DATA_SIZE}
- type
- PLSA_FOREST_TRUST_BINARY_DATA = ^LSA_FOREST_TRUST_BINARY_DATA;
- {$EXTERNALSYM PLSA_FOREST_TRUST_BINARY_DATA}
- _LSA_FOREST_TRUST_BINARY_DATA = record
- Length: ULONG;
- Buffer: PUCHAR;
- end;
- {$EXTERNALSYM _LSA_FOREST_TRUST_BINARY_DATA}
- LSA_FOREST_TRUST_BINARY_DATA = _LSA_FOREST_TRUST_BINARY_DATA;
- {$EXTERNALSYM LSA_FOREST_TRUST_BINARY_DATA}
- TLsaForestTrustBinaryData = LSA_FOREST_TRUST_BINARY_DATA;
- PLsaForestTrustBinaryData = PLSA_FOREST_TRUST_BINARY_DATA;
- PLSA_FOREST_TRUST_RECORD = ^LSA_FOREST_TRUST_RECORD;
- {$EXTERNALSYM PLSA_FOREST_TRUST_RECORD}
- _LSA_FOREST_TRUST_RECORD = record
- Flags: ULONG;
- ForestTrustType: LSA_FOREST_TRUST_RECORD_TYPE; // type of record
- Time: LARGE_INTEGER;
- case Integer of // actual data
- 0: (TopLevelName: LSA_UNICODE_STRING);
- 1: (DomainInfo: LSA_FOREST_TRUST_DOMAIN_INFO);
- 2: (Data: LSA_FOREST_TRUST_BINARY_DATA); // used for unrecognized types
- // } ForestTrustData;
- end;
- {$EXTERNALSYM _LSA_FOREST_TRUST_RECORD}
- LSA_FOREST_TRUST_RECORD = _LSA_FOREST_TRUST_RECORD;
- {$EXTERNALSYM LSA_FOREST_TRUST_RECORD}
- TLsaForestTrustRecord = LSA_FOREST_TRUST_RECORD;
- PLsaForestTrustRecord = PLSA_FOREST_TRUST_RECORD;
- //
- // To prevent forest trust blobs of large size, number of records must be
- // smaller than MAX_RECORDS_IN_FOREST_TRUST_INFO
- //
- const
- MAX_RECORDS_IN_FOREST_TRUST_INFO = 4000;
- {$EXTERNALSYM MAX_RECORDS_IN_FOREST_TRUST_INFO}
- type
- PLSA_FOREST_TRUST_INFORMATION = ^LSA_FOREST_TRUST_INFORMATION;
- {$EXTERNALSYM PLSA_FOREST_TRUST_INFORMATION}
- _LSA_FOREST_TRUST_INFORMATION = record
- RecordCount: ULONG;
- Entries: ^PLSA_FOREST_TRUST_RECORD;
- end;
- {$EXTERNALSYM _LSA_FOREST_TRUST_INFORMATION}
- LSA_FOREST_TRUST_INFORMATION = _LSA_FOREST_TRUST_INFORMATION;
- {$EXTERNALSYM LSA_FOREST_TRUST_INFORMATION}
- TLsaForestTrustInformation = LSA_FOREST_TRUST_INFORMATION;
- PLsaForestTrustInformation = PLSA_FOREST_TRUST_INFORMATION;
- LSA_FOREST_TRUST_COLLISION_RECORD_TYPE = (
- CollisionTdo,
- CollisionXref,
- CollisionOther);
- {$EXTERNALSYM LSA_FOREST_TRUST_COLLISION_RECORD_TYPE}
- TLsaForestTrustCollisionRecordType = LSA_FOREST_TRUST_COLLISION_RECORD_TYPE;
- PLSA_FOREST_TRUST_COLLISION_RECORD = ^LSA_FOREST_TRUST_COLLISION_RECORD;
- {$EXTERNALSYM PLSA_FOREST_TRUST_COLLISION_RECORD}
- _LSA_FOREST_TRUST_COLLISION_RECORD = record
- Index: ULONG;
- Type_: LSA_FOREST_TRUST_COLLISION_RECORD_TYPE;
- Flags: ULONG;
- Name: LSA_UNICODE_STRING;
- end;
- {$EXTERNALSYM _LSA_FOREST_TRUST_COLLISION_RECORD}
- LSA_FOREST_TRUST_COLLISION_RECORD = _LSA_FOREST_TRUST_COLLISION_RECORD;
- {$EXTERNALSYM LSA_FOREST_TRUST_COLLISION_RECORD}
- TLsaForestTrustCollisionRecord = LSA_FOREST_TRUST_COLLISION_RECORD;
- PLsaForestTrustCollisionRecord = PLSA_FOREST_TRUST_COLLISION_RECORD;
- PLSA_FOREST_TRUST_COLLISION_INFORMATION = ^LSA_FOREST_TRUST_COLLISION_INFORMATION;
- {$EXTERNALSYM PLSA_FOREST_TRUST_COLLISION_INFORMATION}
- _LSA_FOREST_TRUST_COLLISION_INFORMATION = record
- RecordCount: ULONG;
- Entries: ^PLSA_FOREST_TRUST_COLLISION_RECORD;
- end;
- {$EXTERNALSYM _LSA_FOREST_TRUST_COLLISION_INFORMATION}
- LSA_FOREST_TRUST_COLLISION_INFORMATION = _LSA_FOREST_TRUST_COLLISION_INFORMATION;
- {$EXTERNALSYM LSA_FOREST_TRUST_COLLISION_INFORMATION}
- TLsaForestTrustCollisionInformation = LSA_FOREST_TRUST_COLLISION_INFORMATION;
- PLsaForestTrustCollisionInformation = PLSA_FOREST_TRUST_COLLISION_INFORMATION;
- //
- // LSA Enumeration Context
- //
- LSA_ENUMERATION_HANDLE = ULONG;
- {$EXTERNALSYM LSA_ENUMERATION_HANDLE}
- PLSA_ENUMERATION_HANDLE = LSA_ENUMERATION_HANDLE;
- {$EXTERNALSYM PLSA_ENUMERATION_HANDLE}
- //
- // LSA Enumeration Information
- //
- PLSA_ENUMERATION_INFORMATION = ^LSA_ENUMERATION_INFORMATION;
- {$EXTERNALSYM PLSA_ENUMERATION_INFORMATION}
- _LSA_ENUMERATION_INFORMATION = record
- Sid: PSID;
- end;
- {$EXTERNALSYM _LSA_ENUMERATION_INFORMATION}
- LSA_ENUMERATION_INFORMATION = _LSA_ENUMERATION_INFORMATION;
- {$EXTERNALSYM LSA_ENUMERATION_INFORMATION}
- TLsaEnumerationInformation = LSA_ENUMERATION_INFORMATION;
- PLsaEnumerationInformation = PLSA_ENUMERATION_INFORMATION;
- ////////////////////////////////////////////////////////////////////////////
- // //
- // Local Security Policy - Miscellaneous API function prototypes //
- // //
- ////////////////////////////////////////////////////////////////////////////
- function LsaFreeMemory(Buffer: PVOID): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaFreeMemory}
- function LsaClose(ObjectHandle: LSA_HANDLE): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaClose}
- type
- _SECURITY_LOGON_SESSION_DATA = record
- Size: ULONG;
- LogonId: LUID;
- UserName: LSA_UNICODE_STRING;
- LogonDomain: LSA_UNICODE_STRING;
- AuthenticationPackage: LSA_UNICODE_STRING;
- LogonType: SECURITY_LOGON_TYPE;
- Session: ULONG;
- Sid: PSID;
- LogonTime: LARGE_INTEGER;
- //
- // new for whistler:
- //
- LogonServer: LSA_UNICODE_STRING;
- DnsDomainName: LSA_UNICODE_STRING;
- Upn: LSA_UNICODE_STRING;
- end;
- {$EXTERNALSYM _SECURITY_LOGON_SESSION_DATA}
- SECURITY_LOGON_SESSION_DATA = _SECURITY_LOGON_SESSION_DATA;
- {$EXTERNALSYM SECURITY_LOGON_SESSION_DATA}
- PSECURITY_LOGON_SESSION_DATA = ^SECURITY_LOGON_SESSION_DATA;
- {$EXTERNALSYM PSECURITY_LOGON_SESSION_DATA}
- TSecurityLogonSessionData = SECURITY_LOGON_SESSION_DATA;
- PSecurityLogonSessionData = PSECURITY_LOGON_SESSION_DATA;
- function LsaEnumerateLogonSessions(LogonSessionCount: PULONG; var LogonSessionList: PLUID): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaEnumerateLogonSessions}
- function LsaGetLogonSessionData(LogonId: PLUID; var ppLogonSessionData: PSECURITY_LOGON_SESSION_DATA): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaGetLogonSessionData}
- function LsaOpenPolicy(SystemName: PLSA_UNICODE_STRING;
- var ObjectAttributes: LSA_OBJECT_ATTRIBUTES; DesiredAccess: ACCESS_MASK;
- var PolicyHandle: LSA_HANDLE): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaOpenPolicy}
- function LsaQueryInformationPolicy(PolicyHandle: LSA_HANDLE;
- InformationClass: POLICY_INFORMATION_CLASS; var Buffer: PVOID): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaQueryInformationPolicy}
- function LsaSetInformationPolicy(PolicyHandle: LSA_HANDLE;
- InformationClass: POLICY_INFORMATION_CLASS; Buffer: PVOID): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaSetInformationPolicy}
- function LsaQueryDomainInformationPolicy(PolicyHandle: LSA_HANDLE;
- InformationClass: POLICY_DOMAIN_INFORMATION_CLASS; Buffer: PPVOID): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaQueryDomainInformationPolicy}
- function LsaSetDomainInformationPolicy(PolicyHandle: LSA_HANDLE;
- InformationClass: POLICY_DOMAIN_INFORMATION_CLASS; Buffer: PVOID): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaSetDomainInformationPolicy}
- function LsaRegisterPolicyChangeNotification(InformationClass: POLICY_NOTIFICATION_INFORMATION_CLASS;
- NotificationEventHandle: HANDLE): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaRegisterPolicyChangeNotification}
- function LsaUnregisterPolicyChangeNotification(InformationClass: POLICY_NOTIFICATION_INFORMATION_CLASS;
- NotificationEventHandle: HANDLE): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaUnregisterPolicyChangeNotification}
- function LsaEnumerateTrustedDomains(PolicyHandle: LSA_HANDLE;
- var EnumerationContext: LSA_ENUMERATION_HANDLE; Buffer: PPVOID;
- PreferedMaximumLength: ULONG; var CountReturned: ULONG): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaEnumerateTrustedDomains}
- function LsaLookupNames(PolicyHandle: LSA_HANDLE; Count: ULONG;
- Names: PLSA_UNICODE_STRING; var ReferencedDomains: PLSA_REFERENCED_DOMAIN_LIST;
- var Sids: PLSA_TRANSLATED_SID): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaLookupNames}
- function LsaLookupNames2(PolicyHandle: LSA_HANDLE; Flags, Count: ULONG; Names: PLSA_UNICODE_STRING;
- var ReferencedDomains: PLSA_REFERENCED_DOMAIN_LIST; var Sids: PLSA_TRANSLATED_SID2): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaLookupNames2}
- function LsaLookupSids(PolicyHandle: LSA_HANDLE; Count: ULONG; Sids: PPSID;
- var ReferencedDomains: PLSA_REFERENCED_DOMAIN_LIST;
- var Names: PLSA_TRANSLATED_NAME): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaLookupSids}
- const
- SE_INTERACTIVE_LOGON_NAME = 'SeInteractiveLogonRight';
- {$EXTERNALSYM SE_INTERACTIVE_LOGON_NAME}
- SE_NETWORK_LOGON_NAME = 'SeNetworkLogonRight';
- {$EXTERNALSYM SE_NETWORK_LOGON_NAME}
- SE_BATCH_LOGON_NAME = 'SeBatchLogonRight';
- {$EXTERNALSYM SE_BATCH_LOGON_NAME}
- SE_SERVICE_LOGON_NAME = 'SeServiceLogonRight';
- {$EXTERNALSYM SE_SERVICE_LOGON_NAME}
- SE_DENY_INTERACTIVE_LOGON_NAME = 'SeDenyInteractiveLogonRight';
- {$EXTERNALSYM SE_DENY_INTERACTIVE_LOGON_NAME}
- SE_DENY_NETWORK_LOGON_NAME = 'SeDenyNetworkLogonRight';
- {$EXTERNALSYM SE_DENY_NETWORK_LOGON_NAME}
- SE_DENY_BATCH_LOGON_NAME = 'SeDenyBatchLogonRight';
- {$EXTERNALSYM SE_DENY_BATCH_LOGON_NAME}
- SE_DENY_SERVICE_LOGON_NAME = 'SeDenyServiceLogonRight';
- {$EXTERNALSYM SE_DENY_SERVICE_LOGON_NAME}
- SE_REMOTE_INTERACTIVE_LOGON_NAME = 'SeRemoteInteractiveLogonRight';
- {$EXTERNALSYM SE_REMOTE_INTERACTIVE_LOGON_NAME}
- SE_DENY_REMOTE_INTERACTIVE_LOGON_NAME = 'SeDenyRemoteInteractiveLogonRight';
- {$EXTERNALSYM SE_DENY_REMOTE_INTERACTIVE_LOGON_NAME}
- //
- // This new API returns all the accounts with a certain privilege
- //
- function LsaEnumerateAccountsWithUserRight(PolicyHandle: LSA_HANDLE;
- UserRights: PLSA_UNICODE_STRING; var EnumerationBuffer: PLSA_ENUMERATION_INFORMATION;
- var CountReturned: ULONG): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaEnumerateAccountsWithUserRight}
- //
- // These new APIs differ by taking a SID instead of requiring the caller
- // to open the account first and passing in an account handle
- //
- function LsaEnumerateAccountRights(PolicyHandle: LSA_HANDLE; AccountSid: PSID;
- var UserRights: PLSA_UNICODE_STRING; var CountOfRights: ULONG): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaEnumerateAccountRights}
- function LsaAddAccountRights(PolicyHandle: LSA_HANDLE; AccountSid: PSID;
- UserRights: PLSA_UNICODE_STRING; CountOfRights: ULONG): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaAddAccountRights}
- function LsaRemoveAccountRights(PolicyHandle: LSA_HANDLE; AccountSid: PSID;
- AllRights: ByteBool; UserRights: PLSA_UNICODE_STRING; CountOfRights: ULONG): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaRemoveAccountRights}
- ///////////////////////////////////////////////////////////////////////////////
- // //
- // Local Security Policy - Trusted Domain Object API function prototypes //
- // //
- ///////////////////////////////////////////////////////////////////////////////
- function LsaOpenTrustedDomainByName(PolicyHandle: LSA_HANDLE;
- const TrustedDomainName: LSA_UNICODE_STRING; DesiredAccess: ACCESS_MASK;
- var TrustedDomainHandle: LSA_HANDLE): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaOpenTrustedDomainByName}
- function LsaQueryTrustedDomainInfo(PolicyHandle: LSA_HANDLE; TrustedDomainSid: PSID;
- InformationClass: TRUSTED_INFORMATION_CLASS; Buffer: PPVOID): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaQueryTrustedDomainInfo}
- function LsaSetTrustedDomainInformation(PolicyHandle: LSA_HANDLE; TrustedDomainSid: PSID;
- InformationClass: TRUSTED_INFORMATION_CLASS; Buffer: PVOID): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaSetTrustedDomainInformation}
- function LsaDeleteTrustedDomain(PolicyHandle: LSA_HANDLE; TrustedDomainSid: PSID): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaDeleteTrustedDomain}
- function LsaQueryTrustedDomainInfoByName(PolicyHandle: LSA_HANDLE;
- const TrustedDomainName: LSA_UNICODE_STRING;
- InformationClass: TRUSTED_INFORMATION_CLASS; Buffer: PPVOID): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaQueryTrustedDomainInfoByName}
- function LsaSetTrustedDomainInfoByName(PolicyHandle: LSA_HANDLE;
- const TrustedDomainName: LSA_UNICODE_STRING;
- InformationClass: TRUSTED_INFORMATION_CLASS; Buffer: PVOID): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaSetTrustedDomainInfoByName}
- function LsaEnumerateTrustedDomainsEx(PolicyHandle: LSA_HANDLE;
- var EnumerationContext: LSA_ENUMERATION_HANDLE; Buffer: PPVOID;
- PreferedMaximumLength: ULONG; var CountReturned: ULONG): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaEnumerateTrustedDomainsEx}
- function LsaCreateTrustedDomainEx(PolicyHandle: LSA_HANDLE;
- const TrustedDomainInformation: TRUSTED_DOMAIN_INFORMATION_EX;
- const AuthenticationInformation: TRUSTED_DOMAIN_AUTH_INFORMATION;
- DesiredAccess: ACCESS_MASK; var TrustedDomainHandle: LSA_HANDLE): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaCreateTrustedDomainEx}
- function LsaQueryForestTrustInformation(PolicyHandle: LSA_HANDLE; TrustedDomainName: PLSA_UNICODE_STRING;
- var ForestTrustInfo: PLSA_FOREST_TRUST_INFORMATION): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaQueryForestTrustInformation}
- function LsaSetForestTrustInformation(PolicyHandle: LSA_HANDLE; TrustedDomainName: PLSA_UNICODE_STRING;
- ForestTrustInfo: PLSA_FOREST_TRUST_INFORMATION; CheckOnly: BOOLEAN; var CollisionInfo: PLSA_FOREST_TRUST_COLLISION_INFORMATION): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaSetForestTrustInformation}
- {.DEFINE TESTING_MATCHING_ROUTINE}
- {$IFDEF TESTING_MATCHING_ROUTINE}
- function LsaForestTrustFindMatch(PolicyHandle: LSA_HANDLE; Type_: ULONG; Name: PLSA_UNICODE_STRING; var Match: PLSA_UNICODE_STRING): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaForestTrustFindMatch}
- {$ENDIF TESTING_MATCHING_ROUTINE}
- //
- // This API sets the workstation password (equivalent of setting/getting
- // the SSI_SECRET_NAME secret)
- //
- function LsaStorePrivateData(PolicyHandle: LSA_HANDLE;
- const KeyName: LSA_UNICODE_STRING; PrivateData: PLSA_UNICODE_STRING): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaStorePrivateData}
- function LsaRetrievePrivateData(PolicyHandle: LSA_HANDLE;
- const KeyName: LSA_UNICODE_STRING; var PrivateData: PLSA_UNICODE_STRING): NTSTATUS; stdcall;
- {$EXTERNALSYM LsaRetrievePrivateData}
- function LsaNtStatusToWinError(Status: NTSTATUS): ULONG; stdcall;
- {$EXTERNALSYM LsaNtStatusToWinError}
- (*#if 0
- NTSTATUS
- NTAPI
- LsaLookupNamesEx(
- IN LSA_HANDLE PolicyHandle,
- IN ULONG Count,
- IN PLSA_NAME_LOOKUP_EX Names,
- OUT PLSA_TRANSLATED_SID_EX *TranslatedSids,
- IN ULONG LookupOptions,
- IN OUT PULONG MappedCount
- );
- NTSTATUS
- NTAPI
- LsaLookupSidsEx(
- IN LSA_HANDLE PolicyHandle,
- IN ULONG Count,
- IN PLSA_SID_LOOKUP_EX Sids,
- OUT PLSA_TRANSLATED_NAME_EX *TranslatedNames,
- IN ULONG LookupOptions,
- IN OUT PULONG MappedCount
- );
- #endif*)
- //
- // SPNEGO package stuff
- //
- type
- NEGOTIATE_MESSAGES = (NegEnumPackagePrefixes, NegGetCallerName, NegCallPackageMax);
- {$EXTERNALSYM NEGOTIATE_MESSAGES}
- const
- NEGOTIATE_MAX_PREFIX = 32;
- {$EXTERNALSYM NEGOTIATE_MAX_PREFIX}
- type
- PNEGOTIATE_PACKAGE_PREFIX = ^NEGOTIATE_PACKAGE_PREFIX;
- {$EXTERNALSYM PNEGOTIATE_PACKAGE_PREFIX}
- _NEGOTIATE_PACKAGE_PREFIX = record
- PackageId: ULONG_PTR;
- PackageDataA: PVOID;
- PackageDataW: PVOID;
- PrefixLen: ULONG_PTR;
- Prefix: array [0..NEGOTIATE_MAX_PREFIX - 1] of UCHAR;
- end;
- {$EXTERNALSYM _NEGOTIATE_PACKAGE_PREFIX}
- NEGOTIATE_PACKAGE_PREFIX = _NEGOTIATE_PACKAGE_PREFIX;
- {$EXTERNALSYM NEGOTIATE_PACKAGE_PREFIX}
- TNegotiatePackagePrefix = NEGOTIATE_PACKAGE_PREFIX;
- PNegotiatePackagePrefix = PNEGOTIATE_PACKAGE_PREFIX;
- PNEGOTIATE_PACKAGE_PREFIXES = ^NEGOTIATE_PACKAGE_PREFIXES;
- {$EXTERNALSYM PNEGOTIATE_PACKAGE_PREFIXES}
- _NEGOTIATE_PACKAGE_PREFIXES = record
- MessageType: ULONG;
- PrefixCount: ULONG;
- Offset: ULONG; // Offset to array of _PREFIX above
- Pad: ULONG; // Align structure for 64-bit
- end;
- {$EXTERNALSYM _NEGOTIATE_PACKAGE_PREFIXES}
- NEGOTIATE_PACKAGE_PREFIXES = _NEGOTIATE_PACKAGE_PREFIXES;
- {$EXTERNALSYM NEGOTIATE_PACKAGE_PREFIXES}
- TNegotiatePackagePrefixes = NEGOTIATE_PACKAGE_PREFIXES;
- PNegotiatePackagePrefixes = PNEGOTIATE_PACKAGE_PREFIXES;
- PNEGOTIATE_CALLER_NAME_REQUEST = ^NEGOTIATE_CALLER_NAME_REQUEST;
- {$EXTERNALSYM PNEGOTIATE_CALLER_NAME_REQUEST}
- _NEGOTIATE_CALLER_NAME_REQUEST = record
- MessageType: ULONG;
- LogonId: LUID;
- end;
- {$EXTERNALSYM _NEGOTIATE_CALLER_NAME_REQUEST}
- NEGOTIATE_CALLER_NAME_REQUEST = _NEGOTIATE_CALLER_NAME_REQUEST;
- {$EXTERNALSYM NEGOTIATE_CALLER_NAME_REQUEST}
- TNegotiateCallerNameRequest = NEGOTIATE_CALLER_NAME_REQUEST;
- PNegotiateCallerNameRequest = PNEGOTIATE_CALLER_NAME_REQUEST;
- PNEGOTIATE_CALLER_NAME_RESPONSE = ^NEGOTIATE_CALLER_NAME_RESPONSE;
- {$EXTERNALSYM PNEGOTIATE_CALLER_NAME_RESPONSE}
- _NEGOTIATE_CALLER_NAME_RESPONSE = record
- MessageType: ULONG;
- CallerName: PWSTR;
- end;
- {$EXTERNALSYM _NEGOTIATE_CALLER_NAME_RESPONSE}
- NEGOTIATE_CALLER_NAME_RESPONSE = _NEGOTIATE_CALLER_NAME_RESPONSE;
- {$EXTERNALSYM NEGOTIATE_CALLER_NAME_RESPONSE}
- TNegotiateCallerNameResponse = NEGOTIATE_CALLER_NAME_RESPONSE;
- PNegotiateCallerNameResponse = PNEGOTIATE_CALLER_NAME_RESPONSE;
- type
- PDOMAIN_PASSWORD_INFORMATION = ^DOMAIN_PASSWORD_INFORMATION;
- {$EXTERNALSYM PDOMAIN_PASSWORD_INFORMATION}
- _DOMAIN_PASSWORD_INFORMATION = record
- MinPasswordLength: USHORT;
- PasswordHistoryLength: USHORT;
- PasswordProperties: ULONG;
- MaxPasswordAge: LARGE_INTEGER;
- MinPasswordAge: LARGE_INTEGER;
- end;
- {$EXTERNALSYM _DOMAIN_PASSWORD_INFORMATION}
- DOMAIN_PASSWORD_INFORMATION = _DOMAIN_PASSWORD_INFORMATION;
- {$EXTERNALSYM DOMAIN_PASSWORD_INFORMATION}
- TDomainPasswordInformation = DOMAIN_PASSWORD_INFORMATION;
- PDomainPasswordInformation = PDOMAIN_PASSWORD_INFORMATION;
- //
- // PasswordProperties flags
- //
- const
- DOMAIN_PASSWORD_COMPLEX = $00000001;
- {$EXTERNALSYM DOMAIN_PASSWORD_COMPLEX}
- DOMAIN_PASSWORD_NO_ANON_CHANGE = $00000002;
- {$EXTERNALSYM DOMAIN_PASSWORD_NO_ANON_CHANGE}
- DOMAIN_PASSWORD_NO_CLEAR_CHANGE = $00000004;
- {$EXTERNALSYM DOMAIN_PASSWORD_NO_CLEAR_CHANGE}
- DOMAIN_LOCKOUT_ADMINS = $00000008;
- {$EXTERNALSYM DOMAIN_LOCKOUT_ADMINS}
- DOMAIN_PASSWORD_STORE_CLEARTEXT = $00000010;
- {$EXTERNALSYM DOMAIN_PASSWORD_STORE_CLEARTEXT}
- DOMAIN_REFUSE_PASSWORD_CHANGE = $00000020;
- {$EXTERNALSYM DOMAIN_REFUSE_PASSWORD_CHANGE}
- type
- PSAM_PASSWORD_NOTIFICATION_ROUTINE = function(UserName: PUNICODE_STRING;
- RelativeId: ULONG; NewPassword: PUNICODE_STRING): NTSTATUS; stdcall;
- {$EXTERNALSYM PSAM_PASSWORD_NOTIFICATION_ROUTINE}
- TSamPasswordNotificationRoutine = PSAM_PASSWORD_NOTIFICATION_ROUTINE;
- const
- SAM_PASSWORD_CHANGE_NOTIFY_ROUTINE = 'PasswordChangeNotify';
- {$EXTERNALSYM SAM_PASSWORD_CHANGE_NOTIFY_ROUTINE}
- type
- PSAM_INIT_NOTIFICATION_ROUTINE = function : ByteBool; stdcall;
- {$EXTERNALSYM PSAM_INIT_NOTIFICATION_ROUTINE}
- TSamInitNotificationRoutine = PSAM_INIT_NOTIFICATION_ROUTINE;
- const
- SAM_INIT_NOTIFICATION_ROUTINE = 'InitializeChangeNotify';
- {$EXTERNALSYM SAM_INIT_NOTIFICATION_ROUTINE}
- SAM_PASSWORD_FILTER_ROUTINE = 'PasswordFilter';
- {$EXTERNALSYM SAM_PASSWORD_FILTER_ROUTINE}
- type
- PSAM_PASSWORD_FILTER_ROUTINE = function(AccountName, FullName,
- Password: PUNICODE_STRING; SetOperation: ByteBool): ByteBool; stdcall;
- {$EXTERNALSYM PSAM_PASSWORD_FILTER_ROUTINE}
- TSamPasswordFilterRoutine = PSAM_PASSWORD_FILTER_ROUTINE;
- /////////////////////////////////////////////////////////////////////////
- // //
- // Name of the MSV1_0 authentication package //
- // //
- /////////////////////////////////////////////////////////////////////////
- const
- MSV1_0_PACKAGE_NAME = 'MICROSOFT_AUTHENTICATION_PACKAGE_V1_0';
- {$EXTERNALSYM MSV1_0_PACKAGE_NAME}
- MSV1_0_PACKAGE_NAMEW = WideString('MICROSOFT_AUTHENTICATION_PACKAGE_V1_0');
- {$EXTERNALSYM MSV1_0_PACKAGE_NAMEW}
- MSV1_0_PACKAGE_NAMEW_LENGTH = SizeOf(MSV1_0_PACKAGE_NAMEW) - SizeOf(WCHAR);
- {$EXTERNALSYM MSV1_0_PACKAGE_NAMEW_LENGTH}
- //
- // Location of MSV authentication package data
- //
- MSV1_0_SUBAUTHENTICATION_KEY = 'SYSTEM\\CurrentControlSet\\Control\\Lsa\\MSV1_0';
- {$EXTERNALSYM MSV1_0_SUBAUTHENTICATION_KEY}
- MSV1_0_SUBAUTHENTICATION_VALUE = 'Auth';
- {$EXTERNALSYM MSV1_0_SUBAUTHENTICATION_VALUE}
- /////////////////////////////////////////////////////////////////////////
- // //
- // Widely used MSV1_0 data types //
- // //
- /////////////////////////////////////////////////////////////////////////
- ///////////////////////////////////////////////////////////////////////////////
- // //
- // LOGON Related Data Structures
- //
- // //
- ///////////////////////////////////////////////////////////////////////////////
- //
- // When a LsaLogonUser() call is dispatched to the MsV1_0 authentication
- // package, the beginning of the AuthenticationInformation buffer is
- // cast to a MSV1_0_LOGON_SUBMIT_TYPE to determine the type of logon
- // being requested. Similarly, upon return, the type of profile buffer
- // can be determined by typecasting it to a MSV_1_0_PROFILE_BUFFER_TYPE.
- //
- //
- // MSV1.0 LsaLogonUser() submission message types.
- //
- type
- _MSV1_0_LOGON_SUBMIT_TYPE = (
- mlstFiller0, mlstFiller1,
- MsV1_0InteractiveLogon,
- MsV1_0Lm20Logon,
- MsV1_0NetworkLogon,
- MsV1_0SubAuthLogon,
- mlstFiller6,
- MsV1_0WorkstationUnlockLogon);
- {$EXTERNALSYM _MSV1_0_LOGON_SUBMIT_TYPE}
- MSV1_0_LOGON_SUBMIT_TYPE = _MSV1_0_LOGON_SUBMIT_TYPE;
- {$EXTERNALSYM MSV1_0_LOGON_SUBMIT_TYPE}
- PMSV1_0_LOGON_SUBMIT_TYPE = ^MSV1_0_LOGON_SUBMIT_TYPE;
- {$EXTERNALSYM PMSV1_0_LOGON_SUBMIT_TYPE}
- TMsv1_0LogonSubmitType = MSV1_0_LOGON_SUBMIT_TYPE;
- PMsv1_0LogonSubmitType = PMSV1_0_LOGON_SUBMIT_TYPE;
- //
- // MSV1.0 LsaLogonUser() profile buffer types.
- //
- _MSV1_0_PROFILE_BUFFER_TYPE = (
- mpbtFiller0, mpbtFiller1,
- MsV1_0InteractiveProfile,
- MsV1_0Lm20LogonProfile,
- MsV1_0SmartCardProfile);
- {$EXTERNALSYM _MSV1_0_PROFILE_BUFFER_TYPE}
- MSV1_0_PROFILE_BUFFER_TYPE = _MSV1_0_PROFILE_BUFFER_TYPE;
- {$EXTERNALSYM MSV1_0_PROFILE_BUFFER_TYPE}
- PMSV1_0_PROFILE_BUFFER_TYPE = ^MSV1_0_PROFILE_BUFFER_TYPE;
- {$EXTERNALSYM PMSV1_0_PROFILE_BUFFER_TYPE}
- TMsv1_0ProfileBufferType = MSV1_0_PROFILE_BUFFER_TYPE;
- PMsv1_0ProfileBufferType = PMSV1_0_PROFILE_BUFFER_TYPE;
- //
- // MsV1_0InteractiveLogon
- //
- // The AuthenticationInformation buffer of an LsaLogonUser() call to
- // perform an interactive logon contains the following data structure:
- //
- PMSV1_0_INTERACTIVE_LOGON = ^MSV1_0_INTERACTIVE_LOGON;
- {$EXTERNALSYM PMSV1_0_INTERACTIVE_LOGON}
- _MSV1_0_INTERACTIVE_LOGON = record
- MessageType: MSV1_0_LOGON_SUBMIT_TYPE;
- LogonDomainName: UNICODE_STRING;
- UserName: UNICODE_STRING;
- Password: UNICODE_STRING;
- end;
- {$EXTERNALSYM _MSV1_0_INTERACTIVE_LOGON}
- MSV1_0_INTERACTIVE_LOGON = _MSV1_0_INTERACTIVE_LOGON;
- {$EXTERNALSYM MSV1_0_INTERACTIVE_LOGON}
- TMsv10InteractiveLogon = MSV1_0_INTERACTIVE_LOGON;
- PMsv10InteractiveLogon = PMSV1_0_INTERACTIVE_LOGON;
- //
- // Where:
- //
- // MessageType - Contains the type of logon being requested. This
- // field must be set to MsV1_0InteractiveLogon.
- //
- // UserName - Is a string representing the user's account name. The
- // name may be up to 255 characters long. The name is treated case
- // insensitive.
- //
- // Password - Is a string containing the user's cleartext password.
- // The password may be up to 255 characters long and contain any
- // UNICODE value.
- //
- //
- //
- // The ProfileBuffer returned upon a successful logon of this type
- // contains the following data structure:
- //
- PMSV1_0_INTERACTIVE_PROFILE = ^MSV1_0_INTERACTIVE_PROFILE;
- {$EXTERNALSYM PMSV1_0_INTERACTIVE_PROFILE}
- _MSV1_0_INTERACTIVE_PROFILE = record
- MessageType: MSV1_0_PROFILE_BUFFER_TYPE;
- LogonCount: USHORT;
- BadPasswordCount: USHORT;
- LogonTime: LARGE_INTEGER;
- LogoffTime: LARGE_INTEGER;
- KickOffTime: LARGE_INTEGER;
- PasswordLastSet: LARGE_INTEGER;
- PasswordCanChange: LARGE_INTEGER;
- PasswordMustChange: LARGE_INTEGER;
- LogonScript: UNICODE_STRING;
- HomeDirectory: UNICODE_STRING;
- FullName: UNICODE_STRING;
- ProfilePath: UNICODE_STRING;
- HomeDirectoryDrive: UNICODE_STRING;
- LogonServer: UNICODE_STRING;
- UserFlags: ULONG;
- end;
- {$EXTERNALSYM _MSV1_0_INTERACTIVE_PROFILE}
- MSV1_0_INTERACTIVE_PROFILE = _MSV1_0_INTERACTIVE_PROFILE;
- {$EXTERNALSYM MSV1_0_INTERACTIVE_PROFILE}
- TMsv10InteractiveProfile = MSV1_0_INTERACTIVE_PROFILE;
- PMsv10InteractiveProfile = PMSV1_0_INTERACTIVE_PROFILE;
- //
- // where:
- //
- // MessageType - Identifies the type of profile data being returned.
- // Contains the type of logon being requested. This field must
- // be set to MsV1_0InteractiveProfile.
- //
- // LogonCount - Number of times the user is currently logged on.
- //
- // BadPasswordCount - Number of times a bad password was applied to
- // the account since last successful logon.
- //
- // LogonTime - Time when user last logged on. This is an absolute
- // format NT standard time value.
- //
- // LogoffTime - Time when user should log off. This is an absolute
- // format NT standard time value.
- //
- // KickOffTime - Time when system should force user logoff. This is
- // an absolute format NT standard time value.
- //
- // PasswordLastChanged - Time and date the password was last
- // changed. This is an absolute format NT standard time
- // value.
- //
- // PasswordCanChange - Time and date when the user can change the
- // password. This is an absolute format NT time value. To
- // prevent a password from ever changing, set this field to a
- // date very far into the future.
- //
- // PasswordMustChange - Time and date when the user must change the
- // password. If the user can never change the password, this
- // field is undefined. This is an absolute format NT time
- // value.
- //
- // LogonScript - The (relative) path to the account's logon
- // script.
- //
- // HomeDirectory - The home directory for the user.
- //
- //
- // MsV1_0Lm20Logon and MsV1_0NetworkLogon
- //
- // The AuthenticationInformation buffer of an LsaLogonUser() call to
- // perform an network logon contains the following data structure:
- //
- // MsV1_0NetworkLogon logon differs from MsV1_0Lm20Logon in that the
- // ParameterControl field exists.
- //
- const
- MSV1_0_CHALLENGE_LENGTH = 8;
- {$EXTERNALSYM MSV1_0_CHALLENGE_LENGTH}
- MSV1_0_USER_SESSION_KEY_LENGTH = 16;
- {$EXTERNALSYM MSV1_0_USER_SESSION_KEY_LENGTH}
- MSV1_0_LANMAN_SESSION_KEY_LENGTH = 8;
- {$EXTERNALSYM MSV1_0_LANMAN_SESSION_KEY_LENGTH}
- //
- // Values for ParameterControl.
- //
- MSV1_0_CLEARTEXT_PASSWORD_ALLOWED = $02;
- {$EXTERNALSYM MSV1_0_CLEARTEXT_PASSWORD_ALLOWED}
- MSV1_0_UPDATE_LOGON_STATISTICS = $04;
- {$EXTERNALSYM MSV1_0_UPDATE_LOGON_STATISTICS}
- MSV1_0_RETURN_USER_PARAMETERS = $08;
- {$EXTERNALSYM MSV1_0_RETURN_USER_PARAMETERS}
- MSV1_0_DONT_TRY_GUEST_ACCOUNT = $10;
- {$EXTERNALSYM MSV1_0_DONT_TRY_GUEST_ACCOUNT}
- MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT = $20;
- {$EXTERNALSYM MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT}
- MSV1_0_RETURN_PASSWORD_EXPIRY = $40;
- {$EXTERNALSYM MSV1_0_RETURN_PASSWORD_EXPIRY}
- // this next flag says that CaseInsensitiveChallengeResponse
- // (aka LmResponse) contains a client challenge in the first 8 bytes
- MSV1_0_USE_CLIENT_CHALLENGE = $80;
- {$EXTERNALSYM MSV1_0_USE_CLIENT_CHALLENGE}
- MSV1_0_TRY_GUEST_ACCOUNT_ONLY = $100;
- {$EXTERNALSYM MSV1_0_TRY_GUEST_ACCOUNT_ONLY}
- MSV1_0_RETURN_PROFILE_PATH = $200;
- {$EXTERNALSYM MSV1_0_RETURN_PROFILE_PATH}
- MSV1_0_TRY_SPECIFIED_DOMAIN_ONLY = $400;
- {$EXTERNALSYM MSV1_0_TRY_SPECIFIED_DOMAIN_ONLY}
- MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT = $800;
- {$EXTERNALSYM MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT}
- MSV1_0_DISABLE_PERSONAL_FALLBACK = $00001000;
- {$EXTERNALSYM MSV1_0_DISABLE_PERSONAL_FALLBACK}
- MSV1_0_ALLOW_FORCE_GUEST = $00002000;
- {$EXTERNALSYM MSV1_0_ALLOW_FORCE_GUEST}
- MSV1_0_CLEARTEXT_PASSWORD_SUPPLIED = $00004000;
- {$EXTERNALSYM MSV1_0_CLEARTEXT_PASSWORD_SUPPLIED}
- MSV1_0_USE_DOMAIN_FOR_ROUTING_ONLY = $00008000;
- {$EXTERNALSYM MSV1_0_USE_DOMAIN_FOR_ROUTING_ONLY}
- MSV1_0_SUBAUTHENTICATION_DLL_EX = $00100000;
- {$EXTERNALSYM MSV1_0_SUBAUTHENTICATION_DLL_EX}
- //
- // The high order byte is a value indicating the SubAuthentication DLL.
- // Zero indicates no SubAuthentication DLL.
- //
- MSV1_0_SUBAUTHENTICATION_DLL = DWORD($FF000000);
- {$EXTERNALSYM MSV1_0_SUBAUTHENTICATION_DLL}
- MSV1_0_SUBAUTHENTICATION_DLL_SHIFT = 24;
- {$EXTERNALSYM MSV1_0_SUBAUTHENTICATION_DLL_SHIFT}
- MSV1_0_MNS_LOGON = $01000000;
- {$EXTERNALSYM MSV1_0_MNS_LOGON}
- //
- // This is the list of subauthentication dlls used in MS
- //
- MSV1_0_SUBAUTHENTICATION_DLL_RAS = 2;
- {$EXTERNALSYM MSV1_0_SUBAUTHENTICATION_DLL_RAS}
- MSV1_0_SUBAUTHENTICATION_DLL_IIS = 132;
- {$EXTERNALSYM MSV1_0_SUBAUTHENTICATION_DLL_IIS}
- type
- PMSV1_0_LM20_LOGON = ^MSV1_0_LM20_LOGON;
- {$EXTERNALSYM PMSV1_0_LM20_LOGON}
- _MSV1_0_LM20_LOGON = record
- MessageType: MSV1_0_LOGON_SUBMIT_TYPE;
- LogonDomainName: UNICODE_STRING;
- UserName: UNICODE_STRING;
- Workstation: UNICODE_STRING;
- ChallengeToClient: array [0..MSV1_0_CHALLENGE_LENGTH - 1] of UCHAR;
- CaseSensitiveChallengeResponse: STRING;
- CaseInsensitiveChallengeResponse: STRING;
- ParameterControl: ULONG;
- end;
- {$EXTERNALSYM _MSV1_0_LM20_LOGON}
- MSV1_0_LM20_LOGON = _MSV1_0_LM20_LOGON;
- {$EXTERNALSYM MSV1_0_LM20_LOGON}
- TMsv10Lm20Logon = MSV1_0_LM20_LOGON;
- PMsv10Lm20Logon = PMSV1_0_LM20_LOGON;
- //
- // NT 5.0 SubAuth dlls can use this struct
- //
- PMSV1_0_SUBAUTH_LOGON = ^MSV1_0_SUBAUTH_LOGON;
- {$EXTERNALSYM PMSV1_0_SUBAUTH_LOGON}
- _MSV1_0_SUBAUTH_LOGON = record
- MessageType: MSV1_0_LOGON_SUBMIT_TYPE;
- LogonDomainName: UNICODE_STRING;
- UserName: UNICODE_STRING;
- Workstation: UNICODE_STRING;
- ChallengeToClient: array [0..MSV1_0_CHALLENGE_LENGTH - 1] of UCHAR;
- AuthenticationInfo1: STRING;
- AuthenticationInfo2: STRING;
- ParameterControl: ULONG;
- SubAuthPackageId: ULONG;
- end;
- {$EXTERNALSYM _MSV1_0_SUBAUTH_LOGON}
- MSV1_0_SUBAUTH_LOGON = _MSV1_0_SUBAUTH_LOGON;
- {$EXTERNALSYM MSV1_0_SUBAUTH_LOGON}
- TMsv10SubauthLogon = MSV1_0_SUBAUTH_LOGON;
- PMsv10SubauthLogon = PMSV1_0_SUBAUTH_LOGON;
- //
- // Values for UserFlags.
- //
- const
- LOGON_GUEST = $01;
- {$EXTERNALSYM LOGON_GUEST}
- LOGON_NOENCRYPTION = $02;
- {$EXTERNALSYM LOGON_NOENCRYPTION}
- LOGON_CACHED_ACCOUNT = $04;
- {$EXTERNALSYM LOGON_CACHED_ACCOUNT}
- LOGON_USED_LM_PASSWORD = $08;
- {$EXTERNALSYM LOGON_USED_LM_PASSWORD}
- LOGON_EXTRA_SIDS = $20;
- {$EXTERNALSYM LOGON_EXTRA_SIDS}
- LOGON_SUBAUTH_SESSION_KEY = $40;
- {$EXTERNALSYM LOGON_SUBAUTH_SESSION_KEY}
- LOGON_SERVER_TRUST_ACCOUNT = $80;
- {$EXTERNALSYM LOGON_SERVER_TRUST_ACCOUNT}
- LOGON_NTLMV2_ENABLED = $100; // says DC understands NTLMv2
- {$EXTERNALSYM LOGON_NTLMV2_ENABLED}
- LOGON_RESOURCE_GROUPS = $200;
- {$EXTERNALSYM LOGON_RESOURCE_GROUPS}
- LOGON_PROFILE_PATH_RETURNED = $400;
- {$EXTERNALSYM LOGON_PROFILE_PATH_RETURNED}
- //
- // The high order byte is reserved for return by SubAuthentication DLLs.
- //
- MSV1_0_SUBAUTHENTICATION_FLAGS = DWORD($FF000000);
- {$EXTERNALSYM MSV1_0_SUBAUTHENTICATION_FLAGS}
- // Values returned by the MSV1_0_MNS_LOGON SubAuthentication DLL
- LOGON_GRACE_LOGON = $01000000;
- {$EXTERNALSYM LOGON_GRACE_LOGON}
- type
- PMSV1_0_LM20_LOGON_PROFILE = ^MSV1_0_LM20_LOGON_PROFILE;
- {$EXTERNALSYM PMSV1_0_LM20_LOGON_PROFILE}
- _MSV1_0_LM20_LOGON_PROFILE = record
- MessageType: MSV1_0_PROFILE_BUFFER_TYPE;
- KickOffTime: LARGE_INTEGER;
- LogoffTime: LARGE_INTEGER;
- UserFlags: ULONG;
- UserSessionKey: array [0..MSV1_0_USER_SESSION_KEY_LENGTH - 1] of UCHAR;
- LogonDomainName: UNICODE_STRING;
- LanmanSessionKey: array [0..MSV1_0_LANMAN_SESSION_KEY_LENGTH - 1] of UCHAR;
- LogonServer: UNICODE_STRING;
- UserParameters: UNICODE_STRING;
- end;
- {$EXTERNALSYM _MSV1_0_LM20_LOGON_PROFILE}
- MSV1_0_LM20_LOGON_PROFILE = _MSV1_0_LM20_LOGON_PROFILE;
- {$EXTERNALSYM MSV1_0_LM20_LOGON_PROFILE}
- TMsv10Lm20LogonProfile = MSV1_0_LM20_LOGON_PROFILE;
- PMsv10Lm20LogonProfile = PMSV1_0_LM20_LOGON_PROFILE;
- //
- // Supplemental credentials structure used for passing credentials into
- // MSV1_0 from other packages
- //
- const
- MSV1_0_OWF_PASSWORD_LENGTH = 16;
- {$EXTERNALSYM MSV1_0_OWF_PASSWORD_LENGTH}
- MSV1_0_CRED_LM_PRESENT = $1;
- {$EXTERNALSYM MSV1_0_CRED_LM_PRESENT}
- MSV1_0_CRED_NT_PRESENT = $2;
- {$EXTERNALSYM MSV1_0_CRED_NT_PRESENT}
- MSV1_0_CRED_VERSION = 0;
- {$EXTERNALSYM MSV1_0_CRED_VERSION}
- type
- PMSV1_0_SUPPLEMENTAL_CREDENTIAL = ^MSV1_0_SUPPLEMENTAL_CREDENTIAL;
- {$EXTERNALSYM PMSV1_0_SUPPLEMENTAL_CREDENTIAL}
- _MSV1_0_SUPPLEMENTAL_CREDENTIAL = record
- Version: ULONG;
- Flags: ULONG;
- LmPassword: array [0..MSV1_0_OWF_PASSWORD_LENGTH - 1] of UCHAR;
- NtPassword: array [0..MSV1_0_OWF_PASSWORD_LENGTH - 1] of UCHAR;
- end;
- {$EXTERNALSYM _MSV1_0_SUPPLEMENTAL_CREDENTIAL}
- MSV1_0_SUPPLEMENTAL_CREDENTIAL = _MSV1_0_SUPPLEMENTAL_CREDENTIAL;
- {$EXTERNALSYM MSV1_0_SUPPLEMENTAL_CREDENTIAL}
- TMsv10SupplementalCredential = MSV1_0_SUPPLEMENTAL_CREDENTIAL;
- PMsv10SupplementalCredential = PMSV1_0_SUPPLEMENTAL_CREDENTIAL;
- //
- // NTLM3 definitions.
- //
- const
- MSV1_0_NTLM3_RESPONSE_LENGTH = 16;
- {$EXTERNALSYM MSV1_0_NTLM3_RESPONSE_LENGTH}
- MSV1_0_NTLM3_OWF_LENGTH = 16;
- {$EXTERNALSYM MSV1_0_NTLM3_OWF_LENGTH}
- //
- // this is the longest amount of time we'll allow challenge response
- // pairs to be used. Note that this also has to allow for worst case clock skew
- //
- MSV1_0_MAX_NTLM3_LIFE = 129600; // 36 hours (in seconds)
- {$EXTERNALSYM MSV1_0_MAX_NTLM3_LIFE}
- MSV1_0_MAX_AVL_SIZE = 64000;
- {$EXTERNALSYM MSV1_0_MAX_AVL_SIZE}
- //
- // MsvAvFlags bit values
- //
- MSV1_0_AV_FLAG_FORCE_GUEST = $00000001;
- {$EXTERNALSYM MSV1_0_AV_FLAG_FORCE_GUEST}
- // this is an MSV1_0 private data structure, defining the layout of an NTLM3 response, as sent by a
- // client in the NtChallengeResponse field of the NETLOGON_NETWORK_INFO structure. If can be differentiated
- // from an old style NT response by its length. This is crude, but it needs to pass through servers and
- // the servers' DCs that do not understand NTLM3 but that are willing to pass longer responses.
- type
- PMSV1_0_NTLM3_RESPONSE = ^MSV1_0_NTLM3_RESPONSE;
- {$EXTERNALSYM PMSV1_0_NTLM3_RESPONSE}
- _MSV1_0_NTLM3_RESPONSE = record
- Response: array [0..MSV1_0_NTLM3_RESPONSE_LENGTH - 1] of UCHAR; // hash of OWF of password with all the following fields
- RespType: UCHAR; // id number of response; current is 1
- HiRespType: UCHAR; // highest id number understood by client
- Flags: USHORT; // reserved; must be sent as zero at this version
- MsgWord: ULONG; // 32 bit message from client to server (for use by auth protocol)
- TimeStamp: ULONGLONG; // time stamp when client generated response -- NT system time, quad part
- ChallengeFromClient: array [0..MSV1_0_CHALLENGE_LENGTH - 1] of UCHAR;
- AvPairsOff: ULONG; // offset to start of AvPairs (to allow future expansion)
- Buffer: array [0..0] of UCHAR; // start of buffer with AV pairs (or future stuff -- so use the offset)
- end;
- {$EXTERNALSYM _MSV1_0_NTLM3_RESPONSE}
- MSV1_0_NTLM3_RESPONSE = _MSV1_0_NTLM3_RESPONSE;
- {$EXTERNALSYM MSV1_0_NTLM3_RESPONSE}
- TMsv10Ntlm3Response = MSV1_0_NTLM3_RESPONSE;
- PMsv10Ntlm3Response = PMSV1_0_NTLM3_RESPONSE;
- const
- MSV1_0_NTLM3_INPUT_LENGTH = SizeOf(MSV1_0_NTLM3_RESPONSE) - MSV1_0_NTLM3_RESPONSE_LENGTH;
- {$EXTERNALSYM MSV1_0_NTLM3_INPUT_LENGTH}
- //todo MSV1_0_NTLM3_MIN_NT_RESPONSE_LENGTH = RTL_SIZEOF_THROUGH_FIELD(MSV1_0_NTLM3_RESPONSE, AvPairsOff)
- //{$EXTERNALSYM MSV1_0_NTLM3_MIN_NT_RESPONSE_LENGTH}
- type
- MSV1_0_AVID = (
- MsvAvEOL, // end of list
- MsvAvNbComputerName, // server's computer name -- NetBIOS
- MsvAvNbDomainName, // server's domain name -- NetBIOS
- MsvAvDnsComputerName, // server's computer name -- DNS
- MsvAvDnsDomainName, // server's domain name -- DNS
- MsvAvDnsTreeName, // server's tree name -- DNS
- MsvAvFlags); // server's extended flags -- DWORD mask
- {$EXTERNALSYM MSV1_0_AVID}
- PMSV1_0_AV_PAIR = ^MSV1_0_AV_PAIR;
- {$EXTERNALSYM PMSV1_0_AV_PAIR}
- _MSV1_0_AV_PAIR = record
- AvId: USHORT;
- AvLen: USHORT;
- // Data is treated as byte array following structure
- end;
- {$EXTERNALSYM _MSV1_0_AV_PAIR}
- MSV1_0_AV_PAIR = _MSV1_0_AV_PAIR;
- {$EXTERNALSYM MSV1_0_AV_PAIR}
- TMsv10AvPair = MSV1_0_AV_PAIR;
- PMsv10AvPair = PMSV1_0_AV_PAIR;
- ///////////////////////////////////////////////////////////////////////////////
- // //
- // CALL PACKAGE Related Data Structures //
- // //
- ///////////////////////////////////////////////////////////////////////////////
- //
- // MSV1.0 LsaCallAuthenticationPackage() submission and response
- // message types.
- //
- _MSV1_0_PROTOCOL_MESSAGE_TYPE = (
- MsV1_0Lm20ChallengeRequest, // Both submission and response
- MsV1_0Lm20GetChallengeResponse, // Both submission and response
- MsV1_0EnumerateUsers, // Both submission and response
- MsV1_0GetUserInfo, // Both submission and response
- MsV1_0ReLogonUsers, // Submission only
- MsV1_0ChangePassword, // Both submission and response
- MsV1_0ChangeCachedPassword, // Both submission and response
- MsV1_0GenericPassthrough, // Both submission and response
- MsV1_0CacheLogon, // Submission only, no response
- MsV1_0SubAuth, // Both submission and response
- MsV1_0DeriveCredential, // Both submission and response
- MsV1_0CacheLookup, // Both submission and response
- MsV1_0SetProcessOption); // Submission only, no response
- {$EXTERNALSYM _MSV1_0_PROTOCOL_MESSAGE_TYPE}
- MSV1_0_PROTOCOL_MESSAGE_TYPE = _MSV1_0_PROTOCOL_MESSAGE_TYPE;
- {$EXTERNALSYM MSV1_0_PROTOCOL_MESSAGE_TYPE}
- PMSV1_0_PROTOCOL_MESSAGE_TYPE = ^MSV1_0_PROTOCOL_MESSAGE_TYPE;
- {$EXTERNALSYM PMSV1_0_PROTOCOL_MESSAGE_TYPE}
- TMsv1_0ProtocolMessageType = MSV1_0_PROTOCOL_MESSAGE_TYPE;
- PMsv1_0ProtocolMessageType = PMSV1_0_PROTOCOL_MESSAGE_TYPE;
- PMSV1_0_CHANGEPASSWORD_REQUEST = ^MSV1_0_CHANGEPASSWORD_REQUEST;
- {$EXTERNALSYM PMSV1_0_CHANGEPASSWORD_REQUEST}
- _MSV1_0_CHANGEPASSWORD_REQUEST = record
- MessageType: MSV1_0_PROTOCOL_MESSAGE_TYPE;
- DomainName: UNICODE_STRING;
- AccountName: UNICODE_STRING;
- OldPassword: UNICODE_STRING;
- NewPassword: UNICODE_STRING;
- Impersonating: ByteBool;
- end;
- {$EXTERNALSYM _MSV1_0_CHANGEPASSWORD_REQUEST}
- MSV1_0_CHANGEPASSWORD_REQUEST = _MSV1_0_CHANGEPASSWORD_REQUEST;
- {$EXTERNALSYM MSV1_0_CHANGEPASSWORD_REQUEST}
- TMsv10ChangepasswordRequest = MSV1_0_CHANGEPASSWORD_REQUEST;
- PMsv10ChangepasswordRequest = PMSV1_0_CHANGEPASSWORD_REQUEST;
- PMSV1_0_CHANGEPASSWORD_RESPONSE = ^MSV1_0_CHANGEPASSWORD_RESPONSE;
- {$EXTERNALSYM PMSV1_0_CHANGEPASSWORD_RESPONSE}
- _MSV1_0_CHANGEPASSWORD_RESPONSE = record
- MessageType: MSV1_0_PROTOCOL_MESSAGE_TYPE;
- PasswordInfoValid: ByteBool;
- DomainPasswordInfo: DOMAIN_PASSWORD_INFORMATION;
- end;
- {$EXTERNALSYM _MSV1_0_CHANGEPASSWORD_RESPONSE}
- MSV1_0_CHANGEPASSWORD_RESPONSE = _MSV1_0_CHANGEPASSWORD_RESPONSE;
- {$EXTERNALSYM MSV1_0_CHANGEPASSWORD_RESPONSE}
- TMsv10ChangepasswordResponse = MSV1_0_CHANGEPASSWORD_RESPONSE;
- PMsv10ChangepasswordResponse = PMSV1_0_CHANGEPASSWORD_RESPONSE;
- //
- // MsV1_0GenericPassthrough - for remoting a CallPackage to
- // a domain controller on the specified domain
- //
- _MSV1_0_PASSTHROUGH_REQUEST = record
- MessageType: MSV1_0_PROTOCOL_MESSAGE_TYPE;
- DomainName: UNICODE_STRING;
- PackageName: UNICODE_STRING;
- DataLength: ULONG;
- LogonData: PUCHAR;
- Pad: ULONG;
- end;
- {$EXTERNALSYM _MSV1_0_PASSTHROUGH_REQUEST}
- MSV1_0_PASSTHROUGH_REQUEST = _MSV1_0_PASSTHROUGH_REQUEST;
- {$EXTERNALSYM MSV1_0_PASSTHROUGH_REQUEST}
- PMSV1_0_PASSTHROUGH_REQUEST = ^MSV1_0_PASSTHROUGH_REQUEST;
- {$EXTERNALSYM PMSV1_0_PASSTHROUGH_REQUEST}
- TMsv10PassThroughRequest = MSV1_0_PASSTHROUGH_REQUEST;
- PMsv10PassThroughRequest = PMSV1_0_PASSTHROUGH_REQUEST;
- _MSV1_0_PASSTHROUGH_RESPONSE = record
- MessageType: MSV1_0_PROTOCOL_MESSAGE_TYPE;
- Pad: ULONG;
- DataLength: ULONG;
- ValidationData: PUCHAR;
- end;
- {$EXTERNALSYM _MSV1_0_PASSTHROUGH_RESPONSE}
- MSV1_0_PASSTHROUGH_RESPONSE = _MSV1_0_PASSTHROUGH_RESPONSE;
- {$EXTERNALSYM MSV1_0_PASSTHROUGH_RESPONSE}
- PMSV1_0_PASSTHROUGH_RESPONSE = ^MSV1_0_PASSTHROUGH_RESPONSE;
- {$EXTERNALSYM PMSV1_0_PASSTHROUGH_RESPONSE}
- TMsv10PassThroughResponse = MSV1_0_PASSTHROUGH_RESPONSE;
- PMsv10PassThroughResponse = PMSV1_0_PASSTHROUGH_RESPONSE;
- //
- // MsV1_0SubAuthInfo submit buffer and response - for submitting a buffer to a
- // specified Subauthentication Package during an LsaCallAuthenticationPackage().
- // If this Subauthentication is to be done locally, then package this message
- // in LsaCallAuthenticationPackage(). If this SubAuthentication needs to be done
- // on the domain controller, then call LsaCallauthenticationPackage with the
- // message type being MsV1_0GenericPassThrough and the LogonData in this struct
- // should be a PMSV1_0_SUBAUTH_REQUEST
- //
- PMSV1_0_SUBAUTH_REQUEST = ^MSV1_0_SUBAUTH_REQUEST;
- {$EXTERNALSYM PMSV1_0_SUBAUTH_REQUEST}
- _MSV1_0_SUBAUTH_REQUEST = record
- MessageType: MSV1_0_PROTOCOL_MESSAGE_TYPE;
- SubAuthPackageId: ULONG;
- SubAuthInfoLength: ULONG;
- SubAuthSubmitBuffer: PUCHAR;
- end;
- {$EXTERNALSYM _MSV1_0_SUBAUTH_REQUEST}
- MSV1_0_SUBAUTH_REQUEST = _MSV1_0_SUBAUTH_REQUEST;
- {$EXTERNALSYM MSV1_0_SUBAUTH_REQUEST}
- TMsv10SubauthRequest = MSV1_0_SUBAUTH_REQUEST;
- PMsv10SubauthRequest = PMSV1_0_SUBAUTH_REQUEST;
- PMSV1_0_SUBAUTH_RESPONSE = ^MSV1_0_SUBAUTH_RESPONSE;
- {$EXTERNALSYM PMSV1_0_SUBAUTH_RESPONSE}
- _MSV1_0_SUBAUTH_RESPONSE = record
- MessageType: MSV1_0_PROTOCOL_MESSAGE_TYPE;
- SubAuthInfoLength: ULONG;
- SubAuthReturnBuffer: PUCHAR;
- end;
- {$EXTERNALSYM _MSV1_0_SUBAUTH_RESPONSE}
- MSV1_0_SUBAUTH_RESPONSE = _MSV1_0_SUBAUTH_RESPONSE;
- {$EXTERNALSYM MSV1_0_SUBAUTH_RESPONSE}
- TMsv10SubauthResponse = MSV1_0_SUBAUTH_RESPONSE;
- PMsv10SubauthResponse = PMSV1_0_SUBAUTH_RESPONSE;
- //
- // Credential Derivation types for MsV1_0DeriveCredential Submit DeriveCredType
- //
- //
- // Derive Credential using SHA-1 and Request buffer DeriveCredSubmitBuffer of
- // length DeriveCredInfoLength mixing bytes.
- // Response buffer DeriveCredReturnBuffer will contain SHA-1 hash of size
- // A_SHA_DIGEST_LEN (20)
- //
- const
- MSV1_0_DERIVECRED_TYPE_SHA1 = 0;
- {$EXTERNALSYM MSV1_0_DERIVECRED_TYPE_SHA1}
- //
- // MsV1_0DeriveCredential submit buffer and response - for submitting a buffer
- // an call to LsaCallAuthenticationPackage().
- //
- type
- PMSV1_0_DERIVECRED_REQUEST = ^MSV1_0_DERIVECRED_REQUEST;
- {$EXTERNALSYM PMSV1_0_DERIVECRED_REQUEST}
- _MSV1_0_DERIVECRED_REQUEST = record
- MessageType: MSV1_0_PROTOCOL_MESSAGE_TYPE;
- LogonId: LUID;
- DeriveCredType: ULONG;
- DeriveCredInfoLength: ULONG;
- DeriveCredSubmitBuffer: array [0..0] of UCHAR; // in-place array of length DeriveCredInfoLength
- end;
- {$EXTERNALSYM _MSV1_0_DERIVECRED_REQUEST}
- MSV1_0_DERIVECRED_REQUEST = _MSV1_0_DERIVECRED_REQUEST;
- {$EXTERNALSYM MSV1_0_DERIVECRED_REQUEST}
- TMsv10DeriveCredRequest = MSV1_0_DERIVECRED_REQUEST;
- PMsv10DeriveCredRequest = PMSV1_0_DERIVECRED_REQUEST;
- PMSV1_0_DERIVECRED_RESPONSE = ^MSV1_0_DERIVECRED_RESPONSE;
- {$EXTERNALSYM PMSV1_0_DERIVECRED_RESPONSE}
- _MSV1_0_DERIVECRED_RESPONSE = record
- MessageType: MSV1_0_PROTOCOL_MESSAGE_TYPE;
- DeriveCredInfoLength: ULONG;
- DeriveCredReturnBuffer: array [0..0] of UCHAR; // in-place array of length DeriveCredInfoLength
- end;
- {$EXTERNALSYM _MSV1_0_DERIVECRED_RESPONSE}
- MSV1_0_DERIVECRED_RESPONSE = _MSV1_0_DERIVECRED_RESPONSE;
- {$EXTERNALSYM MSV1_0_DERIVECRED_RESPONSE}
- TMsv10DeriveCredResponse = MSV1_0_DERIVECRED_RESPONSE;
- PMsv10DeriveCredResponse = PMSV1_0_DERIVECRED_RESPONSE;
- // Revision of the Kerberos Protocol. MS uses Version 5, Revision 6
- const
- KERBEROS_VERSION = 5;
- {$EXTERNALSYM KERBEROS_VERSION}
- KERBEROS_REVISION = 6;
- {$EXTERNALSYM KERBEROS_REVISION}
- // Encryption Types:
- // These encryption types are supported by the default MS KERBSUPP DLL
- // as crypto systems. Values over 127 are local values, and may be changed
- // without notice.
- KERB_ETYPE_NULL = 0;
- {$EXTERNALSYM KERB_ETYPE_NULL}
- KERB_ETYPE_DES_CBC_CRC = 1;
- {$EXTERNALSYM KERB_ETYPE_DES_CBC_CRC}
- KERB_ETYPE_DES_CBC_MD4 = 2;
- {$EXTERNALSYM KERB_ETYPE_DES_CBC_MD4}
- KERB_ETYPE_DES_CBC_MD5 = 3;
- {$EXTERNALSYM KERB_ETYPE_DES_CBC_MD5}
- KERB_ETYPE_RC4_MD4 = -128;
- {$EXTERNALSYM KERB_ETYPE_RC4_MD4}
- KERB_ETYPE_RC4_PLAIN2 = -129;
- {$EXTERNALSYM KERB_ETYPE_RC4_PLAIN2}
- KERB_ETYPE_RC4_LM = -130;
- {$EXTERNALSYM KERB_ETYPE_RC4_LM}
- KERB_ETYPE_RC4_SHA = -131;
- {$EXTERNALSYM KERB_ETYPE_RC4_SHA}
- KERB_ETYPE_DES_PLAIN = -132;
- {$EXTERNALSYM KERB_ETYPE_DES_PLAIN}
- KERB_ETYPE_RC4_HMAC_OLD = -133;
- {$EXTERNALSYM KERB_ETYPE_RC4_HMAC_OLD}
- KERB_ETYPE_RC4_PLAIN_OLD = -134;
- {$EXTERNALSYM KERB_ETYPE_RC4_PLAIN_OLD}
- KERB_ETYPE_RC4_HMAC_OLD_EXP = -135;
- {$EXTERNALSYM KERB_ETYPE_RC4_HMAC_OLD_EXP}
- KERB_ETYPE_RC4_PLAIN_OLD_EXP = -136;
- {$EXTERNALSYM KERB_ETYPE_RC4_PLAIN_OLD_EXP}
- KERB_ETYPE_RC4_PLAIN = -140;
- {$EXTERNALSYM KERB_ETYPE_RC4_PLAIN}
- KERB_ETYPE_RC4_PLAIN_EXP = -141;
- {$EXTERNALSYM KERB_ETYPE_RC4_PLAIN_EXP}
- //
- // Pkinit encryption types
- //
- KERB_ETYPE_DSA_SHA1_CMS = 9;
- {$EXTERNALSYM KERB_ETYPE_DSA_SHA1_CMS}
- KERB_ETYPE_RSA_MD5_CMS = 10;
- {$EXTERNALSYM KERB_ETYPE_RSA_MD5_CMS}
- KERB_ETYPE_RSA_SHA1_CMS = 11;
- {$EXTERNALSYM KERB_ETYPE_RSA_SHA1_CMS}
- KERB_ETYPE_RC2_CBC_ENV = 12;
- {$EXTERNALSYM KERB_ETYPE_RC2_CBC_ENV}
- KERB_ETYPE_RSA_ENV = 13;
- {$EXTERNALSYM KERB_ETYPE_RSA_ENV}
- KERB_ETYPE_RSA_ES_OEAP_ENV = 14;
- {$EXTERNALSYM KERB_ETYPE_RSA_ES_OEAP_ENV}
- KERB_ETYPE_DES_EDE3_CBC_ENV = 15;
- {$EXTERNALSYM KERB_ETYPE_DES_EDE3_CBC_ENV}
- //
- // Deprecated
- //
- KERB_ETYPE_DSA_SIGN = 8;
- {$EXTERNALSYM KERB_ETYPE_DSA_SIGN}
- KERB_ETYPE_RSA_PRIV = 9;
- {$EXTERNALSYM KERB_ETYPE_RSA_PRIV}
- KERB_ETYPE_RSA_PUB = 10;
- {$EXTERNALSYM KERB_ETYPE_RSA_PUB}
- KERB_ETYPE_RSA_PUB_MD5 = 11;
- {$EXTERNALSYM KERB_ETYPE_RSA_PUB_MD5}
- KERB_ETYPE_RSA_PUB_SHA1 = 12;
- {$EXTERNALSYM KERB_ETYPE_RSA_PUB_SHA1}
- KERB_ETYPE_PKCS7_PUB = 13;
- {$EXTERNALSYM KERB_ETYPE_PKCS7_PUB}
- //
- // Unsupported but defined types
- //
- KERB_ETYPE_DES3_CBC_MD5 = 5;
- {$EXTERNALSYM KERB_ETYPE_DES3_CBC_MD5}
- KERB_ETYPE_DES3_CBC_SHA1 = 7;
- {$EXTERNALSYM KERB_ETYPE_DES3_CBC_SHA1}
- KERB_ETYPE_DES3_CBC_SHA1_KD = 16;
- {$EXTERNALSYM KERB_ETYPE_DES3_CBC_SHA1_KD}
- //
- // In use types
- //
- KERB_ETYPE_DES_CBC_MD5_NT = 20;
- {$EXTERNALSYM KERB_ETYPE_DES_CBC_MD5_NT}
- KERB_ETYPE_RC4_HMAC_NT = 23;
- {$EXTERNALSYM KERB_ETYPE_RC4_HMAC_NT}
- KERB_ETYPE_RC4_HMAC_NT_EXP = 24;
- {$EXTERNALSYM KERB_ETYPE_RC4_HMAC_NT_EXP}
- // Checksum algorithms.
- // These algorithms are keyed internally for our use.
- KERB_CHECKSUM_NONE = 0;
- {$EXTERNALSYM KERB_CHECKSUM_NONE}
- KERB_CHECKSUM_CRC32 = 1;
- {$EXTERNALSYM KERB_CHECKSUM_CRC32}
- KERB_CHECKSUM_MD4 = 2;
- {$EXTERNALSYM KERB_CHECKSUM_MD4}
- KERB_CHECKSUM_KRB_DES_MAC = 4;
- {$EXTERNALSYM KERB_CHECKSUM_KRB_DES_MAC}
- KERB_CHECKSUM_KRB_DES_MAC_K = 5;
- {$EXTERNALSYM KERB_CHECKSUM_KRB_DES_MAC_K}
- KERB_CHECKSUM_MD5 = 7;
- {$EXTERNALSYM KERB_CHECKSUM_MD5}
- KERB_CHECKSUM_MD5_DES = 8;
- {$EXTERNALSYM KERB_CHECKSUM_MD5_DES}
- KERB_CHECKSUM_LM = -130;
- {$EXTERNALSYM KERB_CHECKSUM_LM}
- KERB_CHECKSUM_SHA1 = -131;
- {$EXTERNALSYM KERB_CHECKSUM_SHA1}
- KERB_CHECKSUM_REAL_CRC32 = -132;
- {$EXTERNALSYM KERB_CHECKSUM_REAL_CRC32}
- KERB_CHECKSUM_DES_MAC = -133;
- {$EXTERNALSYM KERB_CHECKSUM_DES_MAC}
- KERB_CHECKSUM_DES_MAC_MD5 = -134;
- {$EXTERNALSYM KERB_CHECKSUM_DES_MAC_MD5}
- KERB_CHECKSUM_MD25 = -135;
- {$EXTERNALSYM KERB_CHECKSUM_MD25}
- KERB_CHECKSUM_RC4_MD5 = -136;
- {$EXTERNALSYM KERB_CHECKSUM_RC4_MD5}
- KERB_CHECKSUM_MD5_HMAC = -137; // used by netlogon
- {$EXTERNALSYM KERB_CHECKSUM_MD5_HMAC}
- KERB_CHECKSUM_HMAC_MD5 = -138; // used by Kerberos
- {$EXTERNALSYM KERB_CHECKSUM_HMAC_MD5}
- AUTH_REQ_ALLOW_FORWARDABLE = $00000001;
- {$EXTERNALSYM AUTH_REQ_ALLOW_FORWARDABLE}
- AUTH_REQ_ALLOW_PROXIABLE = $00000002;
- {$EXTERNALSYM AUTH_REQ_ALLOW_PROXIABLE}
- AUTH_REQ_ALLOW_POSTDATE = $00000004;
- {$EXTERNALSYM AUTH_REQ_ALLOW_POSTDATE}
- AUTH_REQ_ALLOW_RENEWABLE = $00000008;
- {$EXTERNALSYM AUTH_REQ_ALLOW_RENEWABLE}
- AUTH_REQ_ALLOW_NOADDRESS = $00000010;
- {$EXTERNALSYM AUTH_REQ_ALLOW_NOADDRESS}
- AUTH_REQ_ALLOW_ENC_TKT_IN_SKEY = $00000020;
- {$EXTERNALSYM AUTH_REQ_ALLOW_ENC_TKT_IN_SKEY}
- AUTH_REQ_ALLOW_VALIDATE = $00000040;
- {$EXTERNALSYM AUTH_REQ_ALLOW_VALIDATE}
- AUTH_REQ_VALIDATE_CLIENT = $00000080;
- {$EXTERNALSYM AUTH_REQ_VALIDATE_CLIENT}
- AUTH_REQ_OK_AS_DELEGATE = $00000100;
- {$EXTERNALSYM AUTH_REQ_OK_AS_DELEGATE}
- AUTH_REQ_PREAUTH_REQUIRED = $00000200;
- {$EXTERNALSYM AUTH_REQ_PREAUTH_REQUIRED}
- AUTH_REQ_TRANSITIVE_TRUST = $00000400;
- {$EXTERNALSYM AUTH_REQ_TRANSITIVE_TRUST}
- AUTH_REQ_ALLOW_S4U_DELEGATE = $00000800;
- {$EXTERNALSYM AUTH_REQ_ALLOW_S4U_DELEGATE}
- AUTH_REQ_PER_USER_FLAGS = (AUTH_REQ_ALLOW_FORWARDABLE or
- AUTH_REQ_ALLOW_PROXIABLE or
- AUTH_REQ_ALLOW_POSTDATE or
- AUTH_REQ_ALLOW_RENEWABLE or
- AUTH_REQ_ALLOW_VALIDATE);
- {$EXTERNALSYM AUTH_REQ_PER_USER_FLAGS}
- //
- // Ticket Flags:
- //
- KERB_TICKET_FLAGS_reserved = DWORD($80000000);
- {$EXTERNALSYM KERB_TICKET_FLAGS_reserved}
- KERB_TICKET_FLAGS_forwardable = $40000000;
- {$EXTERNALSYM KERB_TICKET_FLAGS_forwardable}
- KERB_TICKET_FLAGS_forwarded = $20000000;
- {$EXTERNALSYM KERB_TICKET_FLAGS_forwarded}
- KERB_TICKET_FLAGS_proxiable = $10000000;
- {$EXTERNALSYM KERB_TICKET_FLAGS_proxiable}
- KERB_TICKET_FLAGS_proxy = $08000000;
- {$EXTERNALSYM KERB_TICKET_FLAGS_proxy}
- KERB_TICKET_FLAGS_may_postdate = $04000000;
- {$EXTERNALSYM KERB_TICKET_FLAGS_may_postdate}
- KERB_TICKET_FLAGS_postdated = $02000000;
- {$EXTERNALSYM KERB_TICKET_FLAGS_postdated}
- KERB_TICKET_FLAGS_invalid = $01000000;
- {$EXTERNALSYM KERB_TICKET_FLAGS_invalid}
- KERB_TICKET_FLAGS_renewable = $00800000;
- {$EXTERNALSYM KERB_TICKET_FLAGS_renewable}
- KERB_TICKET_FLAGS_initial = $00400000;
- {$EXTERNALSYM KERB_TICKET_FLAGS_initial}
- KERB_TICKET_FLAGS_pre_authent = $00200000;
- {$EXTERNALSYM KERB_TICKET_FLAGS_pre_authent}
- KERB_TICKET_FLAGS_hw_authent = $00100000;
- {$EXTERNALSYM KERB_TICKET_FLAGS_hw_authent}
- KERB_TICKET_FLAGS_ok_as_delegate = $00040000;
- {$EXTERNALSYM KERB_TICKET_FLAGS_ok_as_delegate}
- KERB_TICKET_FLAGS_name_canonicalize = $00010000;
- {$EXTERNALSYM KERB_TICKET_FLAGS_name_canonicalize}
- KERB_TICKET_FLAGS_reserved1 = $00000001;
- {$EXTERNALSYM KERB_TICKET_FLAGS_reserved1}
- //
- // Name types
- //
- KRB_NT_UNKNOWN = 0; // Name type not known
- {$EXTERNALSYM KRB_NT_UNKNOWN}
- KRB_NT_PRINCIPAL = 1; // Just the name of the principal as in DCE, or for users
- {$EXTERNALSYM KRB_NT_PRINCIPAL}
- KRB_NT_PRINCIPAL_AND_ID = -131; // Name of the principal and its SID.
- {$EXTERNALSYM KRB_NT_PRINCIPAL_AND_ID}
- KRB_NT_SRV_INST = 2; // Service and other unique instance (krbtgt)
- {$EXTERNALSYM KRB_NT_SRV_INST}
- KRB_NT_SRV_INST_AND_ID = -132; // SPN and SID
- {$EXTERNALSYM KRB_NT_SRV_INST_AND_ID}
- KRB_NT_SRV_HST = 3; // Service with host name as instance (telnet, rcommands)
- {$EXTERNALSYM KRB_NT_SRV_HST}
- KRB_NT_SRV_XHST = 4; // Service with host as remaining components
- {$EXTERNALSYM KRB_NT_SRV_XHST}
- KRB_NT_UID = 5; // Unique ID
- {$EXTERNALSYM KRB_NT_UID}
- KRB_NT_ENTERPRISE_PRINCIPAL = 10; // UPN or SPN
- {$EXTERNALSYM KRB_NT_ENTERPRISE_PRINCIPAL}
- KRB_NT_ENT_PRINCIPAL_AND_ID = -130; // UPN and SID
- {$EXTERNALSYM KRB_NT_ENT_PRINCIPAL_AND_ID}
- //
- // MS extensions, negative according to the RFC
- //
- KRB_NT_MS_PRINCIPAL = -128; // NT4 style name
- {$EXTERNALSYM KRB_NT_MS_PRINCIPAL}
- KRB_NT_MS_PRINCIPAL_AND_ID = -129; // nt4 style name with sid
- {$EXTERNALSYM KRB_NT_MS_PRINCIPAL_AND_ID}
- // todo #define KERB_IS_MS_PRINCIPAL(_x_) (((_x_) <= KRB_NT_MS_PRINCIPAL) || ((_x_) >= KRB_NT_ENTERPRISE_PRINCIPAL))
- MICROSOFT_KERBEROS_NAME_A = 'Kerberos';
- {$EXTERNALSYM MICROSOFT_KERBEROS_NAME_A}
- MICROSOFT_KERBEROS_NAME_W = WideString('Kerberos');
- {$EXTERNALSYM MICROSOFT_KERBEROS_NAME_W}
- {$IFDEF UNICODE}
- MICROSOFT_KERBEROS_NAME = MICROSOFT_KERBEROS_NAME_W;
- {$EXTERNALSYM MICROSOFT_KERBEROS_NAME}
- {$ELSE}
- MICROSOFT_KERBEROS_NAME = MICROSOFT_KERBEROS_NAME_A;
- {$EXTERNALSYM MICROSOFT_KERBEROS_NAME}
- {$ENDIF UNICODE}
- /////////////////////////////////////////////////////////////////////////
- //
- // Quality of protection parameters for MakeSignature / EncryptMessage
- //
- /////////////////////////////////////////////////////////////////////////
- //
- // This flag indicates to EncryptMessage that the message is not to actually
- // be encrypted, but a header/trailer are to be produced.
- //
- KERB_WRAP_NO_ENCRYPT = DWORD($80000001);
- {$EXTERNALSYM KERB_WRAP_NO_ENCRYPT}
- /////////////////////////////////////////////////////////////////////////
- //
- // LsaLogonUser parameters
- //
- /////////////////////////////////////////////////////////////////////////
- const
- KerbInteractiveLogon = 2;
- KerbSmartCardLogon = 6;
- KerbWorkstationUnlockLogon = 7;
- KerbSmartCardUnlockLogon = 8;
- KerbProxyLogon = 9;
- KerbTicketLogon = 10;
- KerbTicketUnlockLogon = 11;
- KerbS4ULogon = 12;
- type
- KERB_LOGON_SUBMIT_TYPE = DWORD;
- {$EXTERNALSYM KERB_LOGON_SUBMIT_TYPE}
- PKERB_LOGON_SUBMIT_TYPE = ^KERB_LOGON_SUBMIT_TYPE;
- {$EXTERNALSYM PKERB_LOGON_SUBMIT_TYPE}
- PKERB_INTERACTIVE_LOGON = ^KERB_INTERACTIVE_LOGON;
- {$EXTERNALSYM PKERB_INTERACTIVE_LOGON}
- _KERB_INTERACTIVE_LOGON = record
- MessageType: KERB_LOGON_SUBMIT_TYPE;
- LogonDomainName: UNICODE_STRING;
- UserName: UNICODE_STRING;
- Password: UNICODE_STRING;
- end;
- {$EXTERNALSYM _KERB_INTERACTIVE_LOGON}
- KERB_INTERACTIVE_LOGON = _KERB_INTERACTIVE_LOGON;
- {$EXTERNALSYM KERB_INTERACTIVE_LOGON}
- TKerbInteractiveLogon = KERB_INTERACTIVE_LOGON;
- PKerbInteractiveLogon = PKERB_INTERACTIVE_LOGON;
- PKERB_INTERACTIVE_UNLOCK_LOGON = ^KERB_INTERACTIVE_UNLOCK_LOGON;
- {$EXTERNALSYM PKERB_INTERACTIVE_UNLOCK_LOGON}
- _KERB_INTERACTIVE_UNLOCK_LOGON = record
- Logon: KERB_INTERACTIVE_LOGON;
- LogonId: LUID;
- end;
- {$EXTERNALSYM _KERB_INTERACTIVE_UNLOCK_LOGON}
- KERB_INTERACTIVE_UNLOCK_LOGON = _KERB_INTERACTIVE_UNLOCK_LOGON;
- {$EXTERNALSYM KERB_INTERACTIVE_UNLOCK_LOGON}
- TKerbInteractiveUnlockLogon = KERB_INTERACTIVE_UNLOCK_LOGON;
- PKerbInteractiveUnlockLogon = PKERB_INTERACTIVE_UNLOCK_LOGON;
- PKERB_SMART_CARD_LOGON = ^KERB_SMART_CARD_LOGON;
- {$EXTERNALSYM PKERB_SMART_CARD_LOGON}
- _KERB_SMART_CARD_LOGON = record
- MessageType: KERB_LOGON_SUBMIT_TYPE;
- Pin: UNICODE_STRING;
- CspDataLength: ULONG;
- CspData: PUCHAR;
- end;
- {$EXTERNALSYM _KERB_SMART_CARD_LOGON}
- KERB_SMART_CARD_LOGON = _KERB_SMART_CARD_LOGON;
- {$EXTERNALSYM KERB_SMART_CARD_LOGON}
- TKerbSmartCardLogon = KERB_SMART_CARD_LOGON;
- PKerbSmartCardLogon = PKERB_SMART_CARD_LOGON;
- PKERB_SMART_CARD_UNLOCK_LOGON = ^KERB_SMART_CARD_UNLOCK_LOGON;
- {$EXTERNALSYM PKERB_SMART_CARD_UNLOCK_LOGON}
- _KERB_SMART_CARD_UNLOCK_LOGON = record
- Logon: KERB_SMART_CARD_LOGON;
- LogonId: LUID;
- end;
- {$EXTERNALSYM _KERB_SMART_CARD_UNLOCK_LOGON}
- KERB_SMART_CARD_UNLOCK_LOGON = _KERB_SMART_CARD_UNLOCK_LOGON;
- {$EXTERNALSYM KERB_SMART_CARD_UNLOCK_LOGON}
- TKerbSmartCardUnlockLogon = KERB_SMART_CARD_UNLOCK_LOGON;
- PKerbSmartCardUnlockLogon = PKERB_SMART_CARD_UNLOCK_LOGON;
- //
- // Structure used for a ticket-only logon
- //
- PKERB_TICKET_LOGON = ^KERB_TICKET_LOGON;
- {$EXTERNALSYM PKERB_TICKET_LOGON}
- _KERB_TICKET_LOGON = record
- MessageType: KERB_LOGON_SUBMIT_TYPE;
- Flags: ULONG;
- ServiceTicketLength: ULONG;
- TicketGrantingTicketLength: ULONG;
- ServiceTicket: PUCHAR; // REQUIRED: Service ticket "host"
- TicketGrantingTicket: PUCHAR; // OPTIONAL: User's encdoded in a KERB_CRED message, encrypted with session key from service ticket
- end;
- {$EXTERNALSYM _KERB_TICKET_LOGON}
- KERB_TICKET_LOGON = _KERB_TICKET_LOGON;
- {$EXTERNALSYM KERB_TICKET_LOGON}
- TKerbTicketLogon = KERB_TICKET_LOGON;
- PKerbTicketLogon = PKERB_TICKET_LOGON;
- //
- // Flags for the ticket logon flags field
- //
- const
- KERB_LOGON_FLAG_ALLOW_EXPIRED_TICKET = $1;
- {$EXTERNALSYM KERB_LOGON_FLAG_ALLOW_EXPIRED_TICKET}
- type
- PKERB_TICKET_UNLOCK_LOGON = ^KERB_TICKET_UNLOCK_LOGON;
- {$EXTERNALSYM PKERB_TICKET_UNLOCK_LOGON}
- _KERB_TICKET_UNLOCK_LOGON = record
- Logon: KERB_TICKET_LOGON;
- LogonId: LUID;
- end;
- {$EXTERNALSYM _KERB_TICKET_UNLOCK_LOGON}
- KERB_TICKET_UNLOCK_LOGON = _KERB_TICKET_UNLOCK_LOGON;
- {$EXTERNALSYM KERB_TICKET_UNLOCK_LOGON}
- TKerbTicketUnlockLogon = KERB_TICKET_UNLOCK_LOGON;
- PKerbTicketUnlockLogon = PKERB_TICKET_UNLOCK_LOGON;
- //
- // Used for S4U Client requests
- //
- //
- _KERB_S4U_LOGON = record
- MessageType: KERB_LOGON_SUBMIT_TYPE;
- Flags: ULONG;
- ClientUpn: UNICODE_STRING; // REQUIRED: UPN for client
- ClientRealm: UNICODE_STRING; // Optional: Client Realm, if known
- end;
- {$EXTERNALSYM _KERB_S4U_LOGON}
- KERB_S4U_LOGON = _KERB_S4U_LOGON;
- {$EXTERNALSYM KERB_S4U_LOGON}
- PKERB_S4U_LOGON = ^KERB_S4U_LOGON;
- {$EXTERNALSYM PKERB_S4U_LOGON}
- TKerbS4ULogon = KERB_S4U_LOGON;
- PKerbS4ULogon = PKERB_S4U_LOGON;
- //
- // Use the same profile structure as MSV1_0
- //
- type
- _KERB_PROFILE_BUFFER_TYPE = (
- kpbtFiller0, kpbtFiller1,
- KerbInteractiveProfile,
- kpbtFiller3,
- KerbSmartCardProfile,
- kpbtFiller5,
- KerbTicketProfile);
- {$EXTERNALSYM _KERB_PROFILE_BUFFER_TYPE}
- KERB_PROFILE_BUFFER_TYPE = _KERB_PROFILE_BUFFER_TYPE;
- {$EXTERNALSYM KERB_PROFILE_BUFFER_TYPE}
- PKERB_PROFILE_BUFFER_TYPE = ^KERB_PROFILE_BUFFER_TYPE;
- {$EXTERNALSYM PKERB_PROFILE_BUFFER_TYPE}
- TKerbProfileBufferType = KERB_PROFILE_BUFFER_TYPE;
- PKerbProfileBufferType = PKERB_PROFILE_BUFFER_TYPE;
- PKERB_INTERACTIVE_PROFILE = ^KERB_INTERACTIVE_PROFILE;
- {$EXTERNALSYM PKERB_INTERACTIVE_PROFILE}
- _KERB_INTERACTIVE_PROFILE = record
- MessageType: KERB_PROFILE_BUFFER_TYPE;
- LogonCount: USHORT;
- BadPasswordCount: USHORT;
- LogonTime: LARGE_INTEGER;
- LogoffTime: LARGE_INTEGER;
- KickOffTime: LARGE_INTEGER;
- PasswordLastSet: LARGE_INTEGER;
- PasswordCanChange: LARGE_INTEGER;
- PasswordMustChange: LARGE_INTEGER;
- LogonScript: UNICODE_STRING;
- HomeDirectory: UNICODE_STRING;
- FullName: UNICODE_STRING;
- ProfilePath: UNICODE_STRING;
- HomeDirectoryDrive: UNICODE_STRING;
- LogonServer: UNICODE_STRING;
- UserFlags: ULONG;
- end;
- {$EXTERNALSYM _KERB_INTERACTIVE_PROFILE}
- KERB_INTERACTIVE_PROFILE = _KERB_INTERACTIVE_PROFILE;
- {$EXTERNALSYM KERB_INTERACTIVE_PROFILE}
- TKerbInteractiveProfile = KERB_INTERACTIVE_PROFILE;
- PKerbInteractiveProfile = PKERB_INTERACTIVE_PROFILE;
- //
- // For smart card, we return a smart card profile, which is an interactive
- // profile plus a certificate
- //
- PKERB_SMART_CARD_PROFILE = ^KERB_SMART_CARD_PROFILE;
- {$EXTERNALSYM PKERB_SMART_CARD_PROFILE}
- _KERB_SMART_CARD_PROFILE = record
- Profile: KERB_INTERACTIVE_PROFILE;
- CertificateSize: ULONG;
- CertificateData: PUCHAR;
- end;
- {$EXTERNALSYM _KERB_SMART_CARD_PROFILE}
- KERB_SMART_CARD_PROFILE = _KERB_SMART_CARD_PROFILE;
- {$EXTERNALSYM KERB_SMART_CARD_PROFILE}
- TKerbSmartCardProfile = KERB_SMART_CARD_PROFILE;
- PKerbSmartCardProfile = PKERB_SMART_CARD_PROFILE;
- //
- // For a ticket logon profile, we return the session key from the ticket
- //
- PKERB_CRYPTO_KEY = ^KERB_CRYPTO_KEY;
- {$EXTERNALSYM PKERB_CRYPTO_KEY}
- KERB_CRYPTO_KEY = record
- KeyType: LONG;
- Length: ULONG;
- Value: PUCHAR;
- end;
- {$EXTERNALSYM KERB_CRYPTO_KEY}
- TKerbCryptoKey = KERB_CRYPTO_KEY;
- PKerbCryptoKey = PKERB_CRYPTO_KEY;
- PKERB_TICKET_PROFILE = ^KERB_TICKET_PROFILE;
- {$EXTERNALSYM PKERB_TICKET_PROFILE}
- _KERB_TICKET_PROFILE = record
- Profile: KERB_INTERACTIVE_PROFILE;
- SessionKey: KERB_CRYPTO_KEY;
- end;
- {$EXTERNALSYM _KERB_TICKET_PROFILE}
- KERB_TICKET_PROFILE = _KERB_TICKET_PROFILE;
- {$EXTERNALSYM KERB_TICKET_PROFILE}
- TKerbTicketProfile = KERB_TICKET_PROFILE;
- PKerbTicketProfile = PKERB_TICKET_PROFILE;
- _KERB_PROTOCOL_MESSAGE_TYPE = (
- KerbDebugRequestMessage,
- KerbQueryTicketCacheMessage,
- KerbChangeMachinePasswordMessage,
- KerbVerifyPacMessage,
- KerbRetrieveTicketMessage,
- KerbUpdateAddressesMessage,
- KerbPurgeTicketCacheMessage,
- KerbChangePasswordMessage,
- KerbRetrieveEncodedTicketMessage,
- KerbDecryptDataMessage,
- KerbAddBindingCacheEntryMessage,
- KerbSetPasswordMessage,
- KerbSetPasswordExMessage,
- KerbVerifyCredentialsMessage,
- KerbQueryTicketCacheExMessage,
- KerbPurgeTicketCacheExMessage,
- KerbRefreshSmartcardCredentialsMessage,
- KerbAddExtraCredentialsMessage,
- KerbQuerySupplementalCredentialsMessage);
- {$EXTERNALSYM _KERB_PROTOCOL_MESSAGE_TYPE}
- KERB_PROTOCOL_MESSAGE_TYPE = _KERB_PROTOCOL_MESSAGE_TYPE;
- {$EXTERNALSYM KERB_PROTOCOL_MESSAGE_TYPE}
- PKERB_PROTOCOL_MESSAGE_TYPE = ^KERB_PROTOCOL_MESSAGE_TYPE;
- {$EXTERNALSYM PKERB_PROTOCOL_MESSAGE_TYPE}
- TKerbProtocolMessageType = KERB_PROTOCOL_MESSAGE_TYPE;
- PKerbProtocolMessageType = PKERB_PROTOCOL_MESSAGE_TYPE;
- //
- // Used both for retrieving tickets and for querying ticket cache
- //
- PKERB_QUERY_TKT_CACHE_REQUEST = ^KERB_QUERY_TKT_CACHE_REQUEST;
- {$EXTERNALSYM PKERB_QUERY_TKT_CACHE_REQUEST}
- _KERB_QUERY_TKT_CACHE_REQUEST = record
- MessageType: KERB_PROTOCOL_MESSAGE_TYPE;
- LogonId: LUID;
- end;
- {$EXTERNALSYM _KERB_QUERY_TKT_CACHE_REQUEST}
- KERB_QUERY_TKT_CACHE_REQUEST = _KERB_QUERY_TKT_CACHE_REQUEST;
- {$EXTERNALSYM KERB_QUERY_TKT_CACHE_REQUEST}
- TKerbQueryTktCacheRequest = KERB_QUERY_TKT_CACHE_REQUEST;
- PKerbQueryTktCacheRequest = PKERB_QUERY_TKT_CACHE_REQUEST;
- PKERB_TICKET_CACHE_INFO = ^KERB_TICKET_CACHE_INFO;
- {$EXTERNALSYM PKERB_TICKET_CACHE_INFO}
- _KERB_TICKET_CACHE_INFO = record
- ServerName: UNICODE_STRING;
- RealmName: UNICODE_STRING;
- StartTime: LARGE_INTEGER;
- EndTime: LARGE_INTEGER;
- RenewTime: LARGE_INTEGER;
- EncryptionType: LONG;
- TicketFlags: ULONG;
- end;
- {$EXTERNALSYM _KERB_TICKET_CACHE_INFO}
- KERB_TICKET_CACHE_INFO = _KERB_TICKET_CACHE_INFO;
- {$EXTERNALSYM KERB_TICKET_CACHE_INFO}
- TKerbTicketCacheInfo = KERB_TICKET_CACHE_INFO;
- PKerbTicketCacheInfo = PKERB_TICKET_CACHE_INFO;
- _KERB_TICKET_CACHE_INFO_EX = record
- ClientName: UNICODE_STRING;
- ClientRealm: UNICODE_STRING;
- ServerName: UNICODE_STRING;
- ServerRealm: UNICODE_STRING;
- StartTime: LARGE_INTEGER;
- EndTime: LARGE_INTEGER;
- RenewTime: LARGE_INTEGER;
- EncryptionType: LONG;
- TicketFlags: ULONG;
- end;
- {$EXTERNALSYM _KERB_TICKET_CACHE_INFO_EX}
- KERB_TICKET_CACHE_INFO_EX = _KERB_TICKET_CACHE_INFO_EX;
- {$EXTERNALSYM KERB_TICKET_CACHE_INFO_EX}
- PKERB_TICKET_CACHE_INFO_EX = ^KERB_TICKET_CACHE_INFO_EX;
- {$EXTERNALSYM PKERB_TICKET_CACHE_INFO_EX}
- TKerbTicketCacheInfoEx = KERB_TICKET_CACHE_INFO_EX;
- PKerbTicketCacheInfoEx = PKERB_TICKET_CACHE_INFO_EX;
- PKERB_QUERY_TKT_CACHE_RESPONSE = ^KERB_QUERY_TKT_CACHE_RESPONSE;
- {$EXTERNALSYM PKERB_QUERY_TKT_CACHE_RESPONSE}
- _KERB_QUERY_TKT_CACHE_RESPONSE = record
- MessageType: KERB_PROTOCOL_MESSAGE_TYPE;
- CountOfTickets: ULONG;
- Tickets: array [0..ANYSIZE_ARRAY - 1] of KERB_TICKET_CACHE_INFO;
- end;
- {$EXTERNALSYM _KERB_QUERY_TKT_CACHE_RESPONSE}
- KERB_QUERY_TKT_CACHE_RESPONSE = _KERB_QUERY_TKT_CACHE_RESPONSE;
- {$EXTERNALSYM KERB_QUERY_TKT_CACHE_RESPONSE}
- TKerbQueryTktCacheResponse = KERB_QUERY_TKT_CACHE_RESPONSE;
- PKerbQueryTktCacheResponse = PKERB_QUERY_TKT_CACHE_RESPONSE;
- _KERB_QUERY_TKT_CACHE_EX_RESPONSE = record
- MessageType: KERB_PROTOCOL_MESSAGE_TYPE;
- CountOfTickets: ULONG;
- Tickets: array [0..ANYSIZE_ARRAY - 1] of KERB_TICKET_CACHE_INFO_EX;
- end;
- {$EXTERNALSYM _KERB_QUERY_TKT_CACHE_EX_RESPONSE}
- KERB_QUERY_TKT_CACHE_EX_RESPONSE = _KERB_QUERY_TKT_CACHE_EX_RESPONSE;
- {$EXTERNALSYM KERB_QUERY_TKT_CACHE_EX_RESPONSE}
- PKERB_QUERY_TKT_CACHE_EX_RESPONSE = ^KERB_QUERY_TKT_CACHE_EX_RESPONSE;
- {$EXTERNALSYM PKERB_QUERY_TKT_CACHE_EX_RESPONSE}
- TKerbQueryTktCacheExResponse = KERB_QUERY_TKT_CACHE_EX_RESPONSE;
- PKerbQueryTktCacheExResponse = PKERB_QUERY_TKT_CACHE_EX_RESPONSE;
- //
- // Types for retrieving encoded ticket from the cache
- //
- _SecHandle = record
- dwLower: ULONG_PTR;
- dwUpper: ULONG_PTR;
- end;
- {$EXTERNALSYM _SecHandle}
- SecHandle = _SecHandle;
- {$EXTERNALSYM SecHandle}
- PSecHandle = ^SecHandle;
- {$EXTERNALSYM PSecHandle}
- // Ticket Flags
- const
- KERB_USE_DEFAULT_TICKET_FLAGS = $0;
- {$EXTERNALSYM KERB_USE_DEFAULT_TICKET_FLAGS}
- // CacheOptions
- KERB_RETRIEVE_TICKET_DEFAULT = $0;
- {$EXTERNALSYM KERB_RETRIEVE_TICKET_DEFAULT}
- KERB_RETRIEVE_TICKET_DONT_USE_CACHE = $1;
- {$EXTERNALSYM KERB_RETRIEVE_TICKET_DONT_USE_CACHE}
- KERB_RETRIEVE_TICKET_USE_CACHE_ONLY = $2;
- {$EXTERNALSYM KERB_RETRIEVE_TICKET_USE_CACHE_ONLY}
- KERB_RETRIEVE_TICKET_USE_CREDHANDLE = $4;
- {$EXTERNALSYM KERB_RETRIEVE_TICKET_USE_CREDHANDLE}
- KERB_RETRIEVE_TICKET_AS_KERB_CRED = $8;
- {$EXTERNALSYM KERB_RETRIEVE_TICKET_AS_KERB_CRED}
- KERB_RETRIEVE_TICKET_WITH_SEC_CRED = $10;
- {$EXTERNALSYM KERB_RETRIEVE_TICKET_WITH_SEC_CRED}
- // Encryption Type options
- KERB_ETYPE_DEFAULT = $0; // don't specify etype in tkt req.
- {$EXTERNALSYM KERB_ETYPE_DEFAULT}
- type
- _KERB_AUTH_DATA = record
- Type_: ULONG;
- Length: ULONG;
- Data: PUCHAR;
- end;
- {$EXTERNALSYM _KERB_AUTH_DATA}
- KERB_AUTH_DATA = _KERB_AUTH_DATA;
- {$EXTERNALSYM KERB_AUTH_DATA}
- PKERB_AUTH_DATA = ^KERB_AUTH_DATA;
- {$EXTERNALSYM PKERB_AUTH_DATA}
- TKerbAuthData = KERB_AUTH_DATA;
- PKerbAuthData = PKERB_AUTH_DATA;
- _KERB_NET_ADDRESS = record
- Family: ULONG;
- Length: ULONG;
- Address: PCHAR;
- end;
- {$EXTERNALSYM _KERB_NET_ADDRESS}
- KERB_NET_ADDRESS = _KERB_NET_ADDRESS;
- {$EXTERNALSYM KERB_NET_ADDRESS}
- PKERB_NET_ADDRESS = ^KERB_NET_ADDRESS;
- {$EXTERNALSYM PKERB_NET_ADDRESS}
- TKerbNetAddress = KERB_NET_ADDRESS;
- PKerbNetAddress = PKERB_NET_ADDRESS;
- _KERB_NET_ADDRESSES = record
- Number: ULONG;
- Addresses: array [0..ANYSIZE_ARRAY - 1] of KERB_NET_ADDRESS;
- end;
- {$EXTERNALSYM _KERB_NET_ADDRESSES}
- KERB_NET_ADDRESSES = _KERB_NET_ADDRESSES;
- {$EXTERNALSYM KERB_NET_ADDRESSES}
- PKERB_NET_ADDRESSES = ^KERB_NET_ADDRESSES;
- {$EXTERNALSYM PKERB_NET_ADDRESSES}
- TKerbNetAddresses = KERB_NET_ADDRESSES;
- PKerbNetAddresses = PKERB_NET_ADDRESSES;
- //
- // Types for the information about a ticket
- //
- type
- PKERB_EXTERNAL_NAME = ^KERB_EXTERNAL_NAME;
- {$EXTERNALSYM PKERB_EXTERNAL_NAME}
- _KERB_EXTERNAL_NAME = record
- NameType: SHORT;
- NameCount: USHORT;
- Names: array [0..ANYSIZE_ARRAY - 1] of UNICODE_STRING;
- end;
- {$EXTERNALSYM _KERB_EXTERNAL_NAME}
- KERB_EXTERNAL_NAME = _KERB_EXTERNAL_NAME;
- {$EXTERNALSYM KERB_EXTERNAL_NAME}
- TKerbExternalName = KERB_EXTERNAL_NAME;
- PKerbExternalName = PKERB_EXTERNAL_NAME;
- PKERB_EXTERNAL_TICKET = ^KERB_EXTERNAL_TICKET;
- {$EXTERNALSYM PKERB_EXTERNAL_TICKET}
- _KERB_EXTERNAL_TICKET = record
- ServiceName: PKERB_EXTERNAL_NAME;
- TargetName: PKERB_EXTERNAL_NAME;
- ClientName: PKERB_EXTERNAL_NAME;
- DomainName: UNICODE_STRING;
- TargetDomainName: UNICODE_STRING; // contains ClientDomainName
- AltTargetDomainName: UNICODE_STRING;
- SessionKey: KERB_CRYPTO_KEY;
- TicketFlags: ULONG;
- Flags: ULONG;
- KeyExpirationTime: LARGE_INTEGER;
- StartTime: LARGE_INTEGER;
- EndTime: LARGE_INTEGER;
- RenewUntil: LARGE_INTEGER;
- TimeSkew: LARGE_INTEGER;
- EncodedTicketSize: ULONG;
- EncodedTicket: PUCHAR;
- end;
- {$EXTERNALSYM _KERB_EXTERNAL_TICKET}
- KERB_EXTERNAL_TICKET = _KERB_EXTERNAL_TICKET;
- {$EXTERNALSYM KERB_EXTERNAL_TICKET}
- TKerbExternalTicket = KERB_EXTERNAL_TICKET;
- PKerbExternalTicket = PKERB_EXTERNAL_TICKET;
- _KERB_RETRIEVE_TKT_REQUEST = record
- MessageType: KERB_PROTOCOL_MESSAGE_TYPE;
- LogonId: LUID;
- TargetName: UNICODE_STRING;
- TicketFlags: ULONG;
- CacheOptions: ULONG;
- EncryptionType: LONG;
- CredentialsHandle: SecHandle;
- end;
- {$EXTERNALSYM _KERB_RETRIEVE_TKT_REQUEST}
- KERB_RETRIEVE_TKT_REQUEST = _KERB_RETRIEVE_TKT_REQUEST;
- {$EXTERNALSYM KERB_RETRIEVE_TKT_REQUEST}
- PKERB_RETRIEVE_TKT_REQUEST = ^KERB_RETRIEVE_TKT_REQUEST;
- {$EXTERNALSYM PKERB_RETRIEVE_TKT_REQUEST}
- TKerbRetrieveTktRequest = KERB_RETRIEVE_TKT_REQUEST;
- PKerbRetrieveTktRequest = PKERB_RETRIEVE_TKT_REQUEST;
- PKERB_RETRIEVE_TKT_RESPONSE = ^KERB_RETRIEVE_TKT_RESPONSE;
- {$EXTERNALSYM PKERB_RETRIEVE_TKT_RESPONSE}
- _KERB_RETRIEVE_TKT_RESPONSE = record
- Ticket: KERB_EXTERNAL_TICKET;
- end;
- {$EXTERNALSYM _KERB_RETRIEVE_TKT_RESPONSE}
- KERB_RETRIEVE_TKT_RESPONSE = _KERB_RETRIEVE_TKT_RESPONSE;
- {$EXTERNALSYM KERB_RETRIEVE_TKT_RESPONSE}
- TKerbRetrieveTktResponse = KERB_RETRIEVE_TKT_RESPONSE;
- PKerbRetrieveTktResponse = PKERB_RETRIEVE_TKT_RESPONSE;
- //
- // Used to purge entries from the ticket cache
- //
- PKERB_PURGE_TKT_CACHE_REQUEST = ^KERB_PURGE_TKT_CACHE_REQUEST;
- {$EXTERNALSYM PKERB_PURGE_TKT_CACHE_REQUEST}
- _KERB_PURGE_TKT_CACHE_REQUEST = record
- MessageType: KERB_PROTOCOL_MESSAGE_TYPE;
- LogonId: LUID;
- ServerName: UNICODE_STRING;
- RealmName: UNICODE_STRING;
- end;
- {$EXTERNALSYM _KERB_PURGE_TKT_CACHE_REQUEST}
- KERB_PURGE_TKT_CACHE_REQUEST = _KERB_PURGE_TKT_CACHE_REQUEST;
- {$EXTERNALSYM KERB_PURGE_TKT_CACHE_REQUEST}
- TKerbPurgeTktCacheRequest = KERB_PURGE_TKT_CACHE_REQUEST;
- PKerbPurgeTktCacheRequest = PKERB_PURGE_TKT_CACHE_REQUEST;
- //
- // Flags for purge requests
- //
- const
- KERB_PURGE_ALL_TICKETS = 1;
- {$EXTERNALSYM KERB_PURGE_ALL_TICKETS}
- type
- _KERB_PURGE_TKT_CACHE_EX_REQUEST = record
- MessageType: KERB_PROTOCOL_MESSAGE_TYPE;
- LogonId: LUID;
- Flags: ULONG;
- TicketTemplate: KERB_TICKET_CACHE_INFO_EX;
- end;
- {$EXTERNALSYM _KERB_PURGE_TKT_CACHE_EX_REQUEST}
- KERB_PURGE_TKT_CACHE_EX_REQUEST = _KERB_PURGE_TKT_CACHE_EX_REQUEST;
- {$EXTERNALSYM KERB_PURGE_TKT_CACHE_EX_REQUEST}
- PKERB_PURGE_TKT_CACHE_EX_REQUEST = ^KERB_PURGE_TKT_CACHE_EX_REQUEST;
- {$EXTERNALSYM PKERB_PURGE_TKT_CACHE_EX_REQUEST}
- TKerbPurgeTktCacheExRequest = KERB_PURGE_TKT_CACHE_EX_REQUEST;
- PKerbPurgeTktCacheExRequest = PKERB_PURGE_TKT_CACHE_EX_REQUEST;
- //
- // KerbChangePassword
- //
- // KerbChangePassword changes the password on the KDC account plus
- // the password cache and logon credentials if applicable.
- //
- //
- PKERB_CHANGEPASSWORD_REQUEST = ^KERB_CHANGEPASSWORD_REQUEST;
- {$EXTERNALSYM PKERB_CHANGEPASSWORD_REQUEST}
- _KERB_CHANGEPASSWORD_REQUEST = record
- MessageType: KERB_PROTOCOL_MESSAGE_TYPE;
- DomainName: UNICODE_STRING;
- AccountName: UNICODE_STRING;
- OldPassword: UNICODE_STRING;
- NewPassword: UNICODE_STRING;
- Impersonating: ByteBool;
- end;
- {$EXTERNALSYM _KERB_CHANGEPASSWORD_REQUEST}
- KERB_CHANGEPASSWORD_REQUEST = _KERB_CHANGEPASSWORD_REQUEST;
- {$EXTERNALSYM KERB_CHANGEPASSWORD_REQUEST}
- TKerbChangepasswordRequest = KERB_CHANGEPASSWORD_REQUEST;
- PKerbChangepasswordRequest = PKERB_CHANGEPASSWORD_REQUEST;
- //
- // KerbSetPassword
- //
- // KerbSetPassword changes the password on the KDC account plus
- // the password cache and logon credentials if applicable.
- //
- //
- PKERB_SETPASSWORD_REQUEST = ^KERB_SETPASSWORD_REQUEST;
- {$EXTERNALSYM PKERB_SETPASSWORD_REQUEST}
- _KERB_SETPASSWORD_REQUEST = record
- MessageType: KERB_PROTOCOL_MESSAGE_TYPE;
- LogonId: LUID;
- CredentialsHandle: SecHandle;
- Flags: ULONG;
- DomainName: UNICODE_STRING;
- AccountName: UNICODE_STRING;
- Password: UNICODE_STRING;
- end;
- {$EXTERNALSYM _KERB_SETPASSWORD_REQUEST}
- KERB_SETPASSWORD_REQUEST = _KERB_SETPASSWORD_REQUEST;
- {$EXTERNALSYM KERB_SETPASSWORD_REQUEST}
- TKerbSetpasswordRequest = KERB_SETPASSWORD_REQUEST;
- PKerbSetpasswordRequest = PKERB_SETPASSWORD_REQUEST;
- _KERB_SETPASSWORD_EX_REQUEST = record
- MessageType: KERB_PROTOCOL_MESSAGE_TYPE;
- LogonId: LUID;
- CredentialsHandle: SecHandle;
- Flags: ULONG;
- AccountRealm: UNICODE_STRING;
- AccountName: UNICODE_STRING;
- Password: UNICODE_STRING;
- ClientRealm: UNICODE_STRING;
- ClientName: UNICODE_STRING;
- Impersonating: BOOLEAN;
- KdcAddress: UNICODE_STRING;
- KdcAddressType: ULONG;
- end;
- {$EXTERNALSYM _KERB_SETPASSWORD_EX_REQUEST}
- KERB_SETPASSWORD_EX_REQUEST = _KERB_SETPASSWORD_EX_REQUEST;
- {$EXTERNALSYM KERB_SETPASSWORD_EX_REQUEST}
- PKERB_SETPASSWORD_EX_REQUEST = ^KERB_SETPASSWORD_EX_REQUEST;
- {$EXTERNALSYM PKERB_SETPASSWORD_EX_REQUEST}
- TKerbSetPasswordExRequest = KERB_SETPASSWORD_EX_REQUEST;
- PKerbSetPasswordExRequest = PKERB_SETPASSWORD_EX_REQUEST;
- const
- DS_UNKNOWN_ADDRESS_TYPE = 0; // anything *but* IP
- {$EXTERNALSYM DS_UNKNOWN_ADDRESS_TYPE}
- KERB_SETPASS_USE_LOGONID = 1;
- {$EXTERNALSYM KERB_SETPASS_USE_LOGONID}
- KERB_SETPASS_USE_CREDHANDLE = 2;
- {$EXTERNALSYM KERB_SETPASS_USE_CREDHANDLE}
- type
- PKERB_DECRYPT_REQUEST = ^KERB_DECRYPT_REQUEST;
- {$EXTERNALSYM PKERB_DECRYPT_REQUEST}
- _KERB_DECRYPT_REQUEST = record
- MessageType: KERB_PROTOCOL_MESSAGE_TYPE;
- LogonId: LUID;
- Flags: ULONG;
- CryptoType: LONG;
- KeyUsage: LONG;
- Key: KERB_CRYPTO_KEY; // optional
- EncryptedDataSize: ULONG;
- InitialVectorSize: ULONG;
- InitialVector: PUCHAR;
- EncryptedData: PUCHAR;
- end;
- {$EXTERNALSYM _KERB_DECRYPT_REQUEST}
- KERB_DECRYPT_REQUEST = _KERB_DECRYPT_REQUEST;
- {$EXTERNALSYM KERB_DECRYPT_REQUEST}
- TKerbDecryptRequest = KERB_DECRYPT_REQUEST;
- PKerbDecryptRequest = PKERB_DECRYPT_REQUEST;
- //
- // If set, use the primary key from the current logon session of the one provided in the LogonId field.
- // Otherwise, use the Key in the KERB_DECRYPT_MESSAGE.
- const
- KERB_DECRYPT_FLAG_DEFAULT_KEY = $00000001;
- {$EXTERNALSYM KERB_DECRYPT_FLAG_DEFAULT_KEY}
- type
- PKERB_DECRYPT_RESPONSE = ^KERB_DECRYPT_RESPONSE;
- {$EXTERNALSYM PKERB_DECRYPT_RESPONSE}
- _KERB_DECRYPT_RESPONSE = record
- DecryptedData: array [0..ANYSIZE_ARRAY - 1] of UCHAR;
- end;
- {$EXTERNALSYM _KERB_DECRYPT_RESPONSE}
- KERB_DECRYPT_RESPONSE = _KERB_DECRYPT_RESPONSE;
- {$EXTERNALSYM KERB_DECRYPT_RESPONSE}
- TKerbDecryptResponse = KERB_DECRYPT_RESPONSE;
- PKerbDecryptResponse = PKERB_DECRYPT_RESPONSE;
- //
- // Request structure for adding a binding cache entry. TCB privilege
- // is required for this operation.
- //
- PKERB_ADD_BINDING_CACHE_ENTRY_REQUEST = ^KERB_ADD_BINDING_CACHE_ENTRY_REQUEST;
- {$EXTERNALSYM PKERB_ADD_BINDING_CACHE_ENTRY_REQUEST}
- _KERB_ADD_BINDING_CACHE_ENTRY_REQUEST = record
- MessageType: KERB_PROTOCOL_MESSAGE_TYPE;
- RealmName: UNICODE_STRING;
- KdcAddress: UNICODE_STRING;
- AddressType: ULONG; //dsgetdc.h DS_NETBIOS_ADDRESS||DS_INET_ADDRESS
- end;
- {$EXTERNALSYM _KERB_ADD_BINDING_CACHE_ENTRY_REQUEST}
- KERB_ADD_BINDING_CACHE_ENTRY_REQUEST = _KERB_ADD_BINDING_CACHE_ENTRY_REQUEST;
- {$EXTERNALSYM KERB_ADD_BINDING_CACHE_ENTRY_REQUEST}
- TKerbAddBindingCacheEntryRequest = KERB_ADD_BINDING_CACHE_ENTRY_REQUEST;
- PKerbAddBindingCacheEntryRequest = PKERB_ADD_BINDING_CACHE_ENTRY_REQUEST;
- //
- // Request structure for reacquiring smartcard credentials for a
- // given LUID.
- // Requires TCB.
- //
- _KERB_REFRESH_SCCRED_REQUEST = record
- MessageType: KERB_PROTOCOL_MESSAGE_TYPE;
- CredentialBlob: UNICODE_STRING; // optional
- LogonId: LUID;
- Flags: ULONG;
- end;
- {$EXTERNALSYM _KERB_REFRESH_SCCRED_REQUEST}
- KERB_REFRESH_SCCRED_REQUEST = _KERB_REFRESH_SCCRED_REQUEST;
- {$EXTERNALSYM KERB_REFRESH_SCCRED_REQUEST}
- PKERB_REFRESH_SCCRED_REQUEST = ^KERB_REFRESH_SCCRED_REQUEST;
- {$EXTERNALSYM PKERB_REFRESH_SCCRED_REQUEST}
- TKerbRefreshScCredRequest = KERB_REFRESH_SCCRED_REQUEST;
- PKerbRefreshScCredRequest = PKERB_REFRESH_SCCRED_REQUEST;
- //
- // Flags for KERB_REFRESH_SCCRED_REQUEST
- //
- // KERB_REFRESH_SCCRED_RELEASE
- // Release the smartcard handle for LUID
- //
- // KERB_REFRESH_SCCRED_GETTGT
- // Use the certificate hash in the blob to get a TGT for the logon
- // session.
- //
- const
- KERB_REFRESH_SCCRED_RELEASE = $0;
- {$EXTERNALSYM KERB_REFRESH_SCCRED_RELEASE}
- KERB_REFRESH_SCCRED_GETTGT = $1;
- {$EXTERNALSYM KERB_REFRESH_SCCRED_GETTGT}
- //
- // Request structure for adding extra Server credentials to a given
- // logon session. Only applicable during AcceptSecurityContext, and
- // requires TCB to alter "other" creds
- //
- type
- _KERB_ADD_CREDENTIALS_REQUEST = record
- MessageType: KERB_PROTOCOL_MESSAGE_TYPE;
- UserName: UNICODE_STRING;
- DomainName: UNICODE_STRING;
- Password: UNICODE_STRING;
- LogonId: LUID; // optional
- Flags: ULONG;
- end;
- {$EXTERNALSYM _KERB_ADD_CREDENTIALS_REQUEST}
- KERB_ADD_CREDENTIALS_REQUEST = _KERB_ADD_CREDENTIALS_REQUEST;
- {$EXTERNALSYM KERB_ADD_CREDENTIALS_REQUEST}
- PKERB_ADD_CREDENTIALS_REQUEST = ^KERB_ADD_CREDENTIALS_REQUEST;
- {$EXTERNALSYM PKERB_ADD_CREDENTIALS_REQUEST}
- TKerbAddCredentialsRequest = KERB_ADD_CREDENTIALS_REQUEST;
- PKerbAddCredentialsRequest = PKERB_ADD_CREDENTIALS_REQUEST;
- const
- KERB_REQUEST_ADD_CREDENTIAL = 1;
- {$EXTERNALSYM KERB_REQUEST_ADD_CREDENTIAL}
- KERB_REQUEST_REPLACE_CREDENTIAL = 2;
- {$EXTERNALSYM KERB_REQUEST_REPLACE_CREDENTIAL}
- KERB_REQUEST_REMOVE_CREDENTIAL = 4;
- {$EXTERNALSYM KERB_REQUEST_REMOVE_CREDENTIAL}
- implementation
- const
- secur32 = 'secur32.dll';
- advapi32 = 'advapi32.dll';
- function LSA_SUCCESS(Error: NTSTATUS): BOOL;
- begin
- Result := LONG(Error) > 0;
- end;
- {$IFDEF DYNAMIC_LINK}
- var
- _LsaRegisterLogonProcess: Pointer;
- function LsaRegisterLogonProcess;
- begin
- GetProcedureAddress(_LsaRegisterLogonProcess, secur32, 'LsaRegisterLogonProcess');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaRegisterLogonProcess]
- end;
- end;
- var
- _LsaLogonUser: Pointer;
- function LsaLogonUser;
- begin
- GetProcedureAddress(_LsaLogonUser, secur32, 'LsaLogonUser');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaLogonUser]
- end;
- end;
- var
- _LsaLookupAuthenticationPackage: Pointer;
- function LsaLookupAuthenticationPackage;
- begin
- GetProcedureAddress(_LsaLookupAuthenticationPackage, secur32, 'LsaLookupAuthenticationPackage');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaLookupAuthenticationPackage]
- end;
- end;
- var
- _LsaFreeReturnBuffer: Pointer;
- function LsaFreeReturnBuffer;
- begin
- GetProcedureAddress(_LsaFreeReturnBuffer, secur32, 'LsaFreeReturnBuffer');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaFreeReturnBuffer]
- end;
- end;
- var
- _LsaCallAuthenticationPackage: Pointer;
- function LsaCallAuthenticationPackage;
- begin
- GetProcedureAddress(_LsaCallAuthenticationPackage, secur32, 'LsaCallAuthenticationPackage');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaCallAuthenticationPackage]
- end;
- end;
- var
- _LsaDeregisterLogonProcess: Pointer;
- function LsaDeregisterLogonProcess;
- begin
- GetProcedureAddress(_LsaDeregisterLogonProcess, secur32, 'LsaDeregisterLogonProcess');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaDeregisterLogonProcess]
- end;
- end;
- var
- _LsaConnectUntrusted: Pointer;
- function LsaConnectUntrusted;
- begin
- GetProcedureAddress(_LsaConnectUntrusted, secur32, 'LsaConnectUntrusted');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaConnectUntrusted]
- end;
- end;
- var
- _LsaFreeMemory: Pointer;
- function LsaFreeMemory;
- begin
- GetProcedureAddress(_LsaFreeMemory, advapi32, 'LsaFreeMemory');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaFreeMemory]
- end;
- end;
- var
- _LsaClose: Pointer;
- function LsaClose;
- begin
- GetProcedureAddress(_LsaClose, advapi32, 'LsaClose');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaClose]
- end;
- end;
- var
- _LsaOpenPolicy: Pointer;
- function LsaOpenPolicy;
- begin
- GetProcedureAddress(_LsaOpenPolicy, advapi32, 'LsaOpenPolicy');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaOpenPolicy]
- end;
- end;
- var
- _LsaEnumerateLogonSessions: Pointer;
- function LsaEnumerateLogonSessions;
- begin
- GetProcedureAddress(_LsaEnumerateLogonSessions, secur32, 'LsaEnumerateLogonSessions');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaEnumerateLogonSessions]
- end;
- end;
- var
- _LsaGetLogonSessionData: Pointer;
- function LsaGetLogonSessionData;
- begin
- GetProcedureAddress(_LsaGetLogonSessionData, secur32, 'LsaGetLogonSessionData');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaGetLogonSessionData]
- end;
- end;
- var
- _LsaQueryInformationPolicy: Pointer;
- function LsaQueryInformationPolicy;
- begin
- GetProcedureAddress(_LsaQueryInformationPolicy, advapi32, 'LsaQueryInformationPolicy');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaQueryInformationPolicy]
- end;
- end;
- var
- _LsaSetInformationPolicy: Pointer;
- function LsaSetInformationPolicy;
- begin
- GetProcedureAddress(_LsaSetInformationPolicy, advapi32, 'LsaSetInformationPolicy');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaSetInformationPolicy]
- end;
- end;
- var
- _LsaQueryDomainInformationPolicy: Pointer;
- function LsaQueryDomainInformationPolicy;
- begin
- GetProcedureAddress(_LsaQueryDomainInformationPolicy, advapi32, 'LsaQueryDomainInformationPolicy');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaQueryDomainInformationPolicy]
- end;
- end;
- var
- _LsaSetDomainInformationPolicy: Pointer;
- function LsaSetDomainInformationPolicy;
- begin
- GetProcedureAddress(_LsaSetDomainInformationPolicy, advapi32, 'LsaSetDomainInformationPolicy');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaSetDomainInformationPolicy]
- end;
- end;
- var
- _LsaRegisterPolicyChangeNot: Pointer;
- function LsaRegisterPolicyChangeNotification;
- begin
- GetProcedureAddress(_LsaRegisterPolicyChangeNot, secur32, 'LsaRegisterPolicyChangeNotification');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaRegisterPolicyChangeNot]
- end;
- end;
- var
- _LsaUnregisterPolicyChangeNot: Pointer;
- function LsaUnregisterPolicyChangeNotification;
- begin
- GetProcedureAddress(_LsaUnregisterPolicyChangeNot, secur32, 'LsaUnregisterPolicyChangeNotification');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaUnregisterPolicyChangeNot]
- end;
- end;
- var
- _LsaEnumerateTrustedDomains: Pointer;
- function LsaEnumerateTrustedDomains;
- begin
- GetProcedureAddress(_LsaEnumerateTrustedDomains, advapi32, 'LsaEnumerateTrustedDomains');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaEnumerateTrustedDomains]
- end;
- end;
- var
- _LsaLookupNames: Pointer;
- function LsaLookupNames;
- begin
- GetProcedureAddress(_LsaLookupNames, advapi32, 'LsaLookupNames');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaLookupNames]
- end;
- end;
- var
- _LsaLookupNames2: Pointer;
- function LsaLookupNames2;
- begin
- GetProcedureAddress(_LsaLookupNames2, advapi32, 'LsaLookupNames2');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaLookupNames2]
- end;
- end;
- var
- _LsaLookupSids: Pointer;
- function LsaLookupSids;
- begin
- GetProcedureAddress(_LsaLookupSids, advapi32, 'LsaLookupSids');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaLookupSids]
- end;
- end;
- var
- _LsaEnumAccountsWithUserRight: Pointer;
- function LsaEnumerateAccountsWithUserRight;
- begin
- GetProcedureAddress(_LsaEnumAccountsWithUserRight, advapi32, 'LsaEnumerateAccountsWithUserRight');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaEnumAccountsWithUserRight]
- end;
- end;
- var
- _LsaEnumerateAccountRights: Pointer;
- function LsaEnumerateAccountRights;
- begin
- GetProcedureAddress(_LsaEnumerateAccountRights, advapi32, 'LsaEnumerateAccountRights');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaEnumerateAccountRights]
- end;
- end;
- var
- _LsaAddAccountRights: Pointer;
- function LsaAddAccountRights;
- begin
- GetProcedureAddress(_LsaAddAccountRights, advapi32, 'LsaAddAccountRights');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaAddAccountRights]
- end;
- end;
- var
- _LsaRemoveAccountRights: Pointer;
- function LsaRemoveAccountRights;
- begin
- GetProcedureAddress(_LsaRemoveAccountRights, advapi32, 'LsaRemoveAccountRights');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaRemoveAccountRights]
- end;
- end;
- var
- _LsaOpenTrustedDomainByName: Pointer;
- function LsaOpenTrustedDomainByName;
- begin
- GetProcedureAddress(_LsaOpenTrustedDomainByName, advapi32, 'LsaOpenTrustedDomainByName');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaOpenTrustedDomainByName]
- end;
- end;
- var
- _LsaQueryTrustedDomainInfo: Pointer;
- function LsaQueryTrustedDomainInfo;
- begin
- GetProcedureAddress(_LsaQueryTrustedDomainInfo, advapi32, 'LsaQueryTrustedDomainInfo');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaQueryTrustedDomainInfo]
- end;
- end;
- var
- _LsaSetTrustedDomainInformation: Pointer;
- function LsaSetTrustedDomainInformation;
- begin
- GetProcedureAddress(_LsaSetTrustedDomainInformation, advapi32, 'LsaSetTrustedDomainInformation');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaSetTrustedDomainInformation]
- end;
- end;
- var
- _LsaDeleteTrustedDomain: Pointer;
- function LsaDeleteTrustedDomain;
- begin
- GetProcedureAddress(_LsaDeleteTrustedDomain, advapi32, 'LsaDeleteTrustedDomain');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaDeleteTrustedDomain]
- end;
- end;
- var
- _LsaQueryTrustedDomainInfoByName: Pointer;
- function LsaQueryTrustedDomainInfoByName;
- begin
- GetProcedureAddress(_LsaQueryTrustedDomainInfoByName, advapi32, 'LsaQueryTrustedDomainInfoByName');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaQueryTrustedDomainInfoByName]
- end;
- end;
- var
- _LsaSetTrustedDomainInfoByName: Pointer;
- function LsaSetTrustedDomainInfoByName;
- begin
- GetProcedureAddress(_LsaSetTrustedDomainInfoByName, advapi32, 'LsaSetTrustedDomainInfoByName');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaSetTrustedDomainInfoByName]
- end;
- end;
- var
- _LsaEnumerateTrustedDomainsEx: Pointer;
- function LsaEnumerateTrustedDomainsEx;
- begin
- GetProcedureAddress(_LsaEnumerateTrustedDomainsEx, advapi32, 'LsaEnumerateTrustedDomainsEx');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaEnumerateTrustedDomainsEx]
- end;
- end;
- var
- _LsaCreateTrustedDomainEx: Pointer;
- function LsaCreateTrustedDomainEx;
- begin
- GetProcedureAddress(_LsaCreateTrustedDomainEx, advapi32, 'LsaCreateTrustedDomainEx');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaCreateTrustedDomainEx]
- end;
- end;
- var
- _LsaQueryForestTrustInformation: Pointer;
- function LsaQueryForestTrustInformation;
- begin
- GetProcedureAddress(_LsaQueryForestTrustInformation, advapi32, 'LsaQueryForestTrustInformation');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaQueryForestTrustInformation]
- end;
- end;
- var
- _LsaSetForestTrustInformation: Pointer;
- function LsaSetForestTrustInformation;
- begin
- GetProcedureAddress(_LsaSetForestTrustInformation, advapi32, 'LsaSetForestTrustInformation');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaSetForestTrustInformation]
- end;
- end;
- var
- _LsaStorePrivateData: Pointer;
- function LsaStorePrivateData;
- begin
- GetProcedureAddress(_LsaStorePrivateData, advapi32, 'LsaStorePrivateData');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaStorePrivateData]
- end;
- end;
- var
- _LsaRetrievePrivateData: Pointer;
- function LsaRetrievePrivateData;
- begin
- GetProcedureAddress(_LsaRetrievePrivateData, advapi32, 'LsaRetrievePrivateData');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaRetrievePrivateData]
- end;
- end;
- var
- _LsaNtStatusToWinError: Pointer;
- function LsaNtStatusToWinError;
- begin
- GetProcedureAddress(_LsaNtStatusToWinError, advapi32, 'LsaNtStatusToWinError');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LsaNtStatusToWinError]
- end;
- end;
- {$ELSE}
- function LsaRegisterLogonProcess; external secur32 name 'LsaRegisterLogonProcess';
- function LsaLogonUser; external secur32 name 'LsaLogonUser';
- function LsaLookupAuthenticationPackage; external secur32 name 'LsaLookupAuthenticationPackage';
- function LsaFreeReturnBuffer; external secur32 name 'LsaFreeReturnBuffer';
- function LsaCallAuthenticationPackage; external secur32 name 'LsaCallAuthenticationPackage';
- function LsaDeregisterLogonProcess; external secur32 name 'LsaDeregisterLogonProcess';
- function LsaConnectUntrusted; external secur32 name 'LsaConnectUntrusted';
- function LsaFreeMemory; external advapi32 name 'LsaFreeMemory';
- function LsaClose; external advapi32 name 'LsaClose';
- function LsaOpenPolicy; external advapi32 name 'LsaOpenPolicy';
- function LsaEnumerateLogonSessions; external secur32 name 'LsaEnumerateLogonSessions';
- function LsaGetLogonSessionData; external secur32 name 'LsaGetLogonSessionData';
- function LsaQueryInformationPolicy; external advapi32 name 'LsaQueryInformationPolicy';
- function LsaSetInformationPolicy; external advapi32 name 'LsaSetInformationPolicy';
- function LsaQueryDomainInformationPolicy; external advapi32 name 'LsaQueryDomainInformationPolicy';
- function LsaSetDomainInformationPolicy; external advapi32 name 'LsaSetDomainInformationPolicy';
- function LsaRegisterPolicyChangeNotification; external secur32 name 'LsaRegisterPolicyChangeNotification';
- function LsaUnregisterPolicyChangeNotification; external secur32 name 'LsaUnregisterPolicyChangeNotification';
- function LsaEnumerateTrustedDomains; external advapi32 name 'LsaEnumerateTrustedDomains';
- function LsaLookupNames; external advapi32 name 'LsaLookupNames';
- function LsaLookupNames2; external advapi32 name 'LsaLookupNames2';
- function LsaLookupSids; external advapi32 name 'LsaLookupSids';
- function LsaEnumerateAccountsWithUserRight; external advapi32 name 'LsaEnumerateAccountsWithUserRight';
- function LsaEnumerateAccountRights; external advapi32 name 'LsaEnumerateAccountRights';
- function LsaAddAccountRights; external advapi32 name 'LsaAddAccountRights';
- function LsaRemoveAccountRights; external advapi32 name 'LsaRemoveAccountRights';
- function LsaOpenTrustedDomainByName; external advapi32 name 'LsaOpenTrustedDomainByName';
- function LsaQueryTrustedDomainInfo; external advapi32 name 'LsaQueryTrustedDomainInfo';
- function LsaSetTrustedDomainInformation; external advapi32 name 'LsaSetTrustedDomainInformation';
- function LsaDeleteTrustedDomain; external advapi32 name 'LsaDeleteTrustedDomain';
- function LsaQueryTrustedDomainInfoByName; external advapi32 name 'LsaQueryTrustedDomainInfoByName';
- function LsaSetTrustedDomainInfoByName; external advapi32 name 'LsaSetTrustedDomainInfoByName';
- function LsaEnumerateTrustedDomainsEx; external advapi32 name 'LsaEnumerateTrustedDomainsEx';
- function LsaCreateTrustedDomainEx; external advapi32 name 'LsaCreateTrustedDomainEx';
- function LsaQueryForestTrustInformation; external advapi32 name 'LsaQueryForestTrustInformation';
- function LsaSetForestTrustInformation; external advapi32 name 'LsaSetForestTrustInformation';
- function LsaStorePrivateData; external advapi32 name 'LsaStorePrivateData';
- function LsaRetrievePrivateData; external advapi32 name 'LsaRetrievePrivateData';
- function LsaNtStatusToWinError; external advapi32 name 'LsaNtStatusToWinError';
- {$ENDIF DYNAMIC_LINK}
- end.
|