lsarpc

package
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 28, 2024 License: MIT Imports: 10 Imported by: 2

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// Syntax UUID
	LsarpcSyntaxUUID = &uuid.UUID{TimeLow: 0x12345778, TimeMid: 0x1234, TimeHiAndVersion: 0xabcd, ClockSeqHiAndReserved: 0xef, ClockSeqLow: 0x0, Node: [6]uint8{0x1, 0x23, 0x45, 0x67, 0x89, 0xab}}
	// Syntax ID
	LsarpcSyntaxV0_0 = &dcerpc.SyntaxID{IfUUID: LsarpcSyntaxUUID, IfVersionMajor: 0, IfVersionMinor: 0}
)
View Source
var (
	// import guard
	GoPackage = "lsat"
)

Functions

func LsarpcServerHandle

func LsarpcServerHandle(ctx context.Context, o LsarpcServer, opNum int, r ndr.Reader) (dcerpc.Operation, error)

func NewLsarpcServerHandle

func NewLsarpcServerHandle(o LsarpcServer) dcerpc.ServerHandle

func RegisterLsarpcServer

func RegisterLsarpcServer(conn dcerpc.Conn, o LsarpcServer, opts ...dcerpc.Option)

Types

type ACL

type ACL struct {
	ACLRevision uint8  `idl:"name:AclRevision" json:"acl_revision"`
	SBZ1        uint8  `idl:"name:Sbz1" json:"sbz1"`
	ACLSize     uint16 `idl:"name:AclSize" json:"acl_size"`
	// contains filtered or unexported fields
}

ACL structure represents LSAPR_ACL RPC structure.

The LSAPR_ACL structure defines the header of an access control list (ACL) as specified in [MS-LSAD] section 2.2.3.2.

Individual member semantics are specified in [MS-LSAD] section 2.2.3.2.

func (*ACL) MarshalNDR

func (o *ACL) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ACL) NDRSizeInfo

func (o *ACL) NDRSizeInfo() []uint64

func (*ACL) UnmarshalNDR

func (o *ACL) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type CloseRequest

type CloseRequest struct {
	Object *Handle `idl:"name:ObjectHandle" json:"object"`
}

CloseRequest structure represents the LsarClose operation request

func (*CloseRequest) MarshalNDR

func (o *CloseRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*CloseRequest) UnmarshalNDR

func (o *CloseRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type CloseResponse

type CloseResponse struct {
	Object *Handle `idl:"name:ObjectHandle" json:"object"`
	// Return: The LsarClose return value.
	Return int32 `idl:"name:Return" json:"return"`
}

CloseResponse structure represents the LsarClose operation response

func (*CloseResponse) MarshalNDR

func (o *CloseResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*CloseResponse) UnmarshalNDR

func (o *CloseResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type GetUserNameRequest

type GetUserNameRequest struct {
	// SystemName: This parameter has no effect on message processing in any environment.
	// It MUST be ignored.
	SystemName string `idl:"name:SystemName;string;pointer:unique" json:"system_name"`
	// UserName: On return, contains the name of the security principal that is making the
	// call. The string MUST be of the form sAMAccountName. On input, this parameter MUST
	// be ignored. The RPC_UNICODE_STRING structure is defined in [MS-DTYP] section 2.3.10.
	UserName *dtyp.UnicodeString `idl:"name:UserName" json:"user_name"`
	// DomainName: On return, contains the domain name of the security principal that is
	// invoking the method. This string MUST be a NetBIOS name. On input, this parameter
	// MUST be ignored.
	DomainName *dtyp.UnicodeString `idl:"name:DomainName;pointer:unique" json:"domain_name"`
}

GetUserNameRequest structure represents the LsarGetUserName operation request

func (*GetUserNameRequest) MarshalNDR

func (o *GetUserNameRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*GetUserNameRequest) UnmarshalNDR

func (o *GetUserNameRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type GetUserNameResponse

type GetUserNameResponse struct {
	// UserName: On return, contains the name of the security principal that is making the
	// call. The string MUST be of the form sAMAccountName. On input, this parameter MUST
	// be ignored. The RPC_UNICODE_STRING structure is defined in [MS-DTYP] section 2.3.10.
	UserName *dtyp.UnicodeString `idl:"name:UserName" json:"user_name"`
	// DomainName: On return, contains the domain name of the security principal that is
	// invoking the method. This string MUST be a NetBIOS name. On input, this parameter
	// MUST be ignored.
	DomainName *dtyp.UnicodeString `idl:"name:DomainName;pointer:unique" json:"domain_name"`
	// Return: The LsarGetUserName return value.
	Return int32 `idl:"name:Return" json:"return"`
}

GetUserNameResponse structure represents the LsarGetUserName operation response

func (*GetUserNameResponse) MarshalNDR

func (o *GetUserNameResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*GetUserNameResponse) UnmarshalNDR

func (o *GetUserNameResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type Handle

type Handle dcetypes.ContextHandle

Handle structure represents LSAPR_HANDLE RPC structure.

func (*Handle) ContextHandle

func (o *Handle) ContextHandle() *dcetypes.ContextHandle

func (*Handle) MarshalNDR

func (o *Handle) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*Handle) UnmarshalNDR

func (o *Handle) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type LookupLevel

type LookupLevel uint16

LookupLevel type represents LSAP_LOOKUP_LEVEL RPC enumeration.

The LSAP_LOOKUP_LEVEL enumeration defines different scopes for searches during translation.<8>

var (
	// LsapLookupWksta: SIDs MUST be searched in the views under the Security Principal
	// SID and Security Principal SID History columns in the following order:
	//
	// * Predefined Translation View, as specified in section 3.1.1.1.1 ( e09da72e-e6c9-4f91-aa64-68b0475719b6
	// ).
	//
	// * Configurable Translation View, as specified in section 3.1.1.1.2 ( 252cb6b0-2edc-4403-9d75-5b2786ba859e
	// ).
	//
	// * Builtin Domain Principal View of the account database on the RPC server ( e79f2680-84d9-4d34-bc78-5ab9e1255653#gt_ae65dac0-cd24-4e83-a946-6d1097b71553
	// ) , as specified in section 3.1.1.1.3 ( 871df7fe-3470-4b69-9e59-15db70e8d4c6 ).
	//
	// * Account Domain View of account database on that machine, as specified in section
	// 3.1.1.1.6 ( 1777c886-7e47-40a0-979e-da0d76fd6d5c ).
	//
	// * If the machine is not joined to a domain ( e79f2680-84d9-4d34-bc78-5ab9e1255653#gt_b0276eb2-4e65-4cf1-a718-e0920a614aca
	// ) , the search ends here.
	//
	// * If the machine is not a domain controller ( e79f2680-84d9-4d34-bc78-5ab9e1255653#gt_76a05049-3531-4abd-aec8-30e19954b4bd
	// ) : the Account Domain View of the domain to which this machine is joined.
	//
	// * Forest View (section 3.1.1.1.9 ( c69c5834-39c0-430c-9e14-98f3fd7ccfde ) ) of the
	// forest ( e79f2680-84d9-4d34-bc78-5ab9e1255653#gt_fd104241-4fb3-457c-b2c4-e0c18bb20b62
	// ) of the domain to which this machine is joined, unless ClientRevision is 0x00000001
	// and the machine is joined to a mixed mode domain, as specified in [MS-ADTS] ( ../ms-adts/d2435927-0999-4c62-8c6d-13ba31a52e1a
	// ) section 6.1.4.1 ( ../ms-adts/b40f9606-812d-4b76-924e-55a5401e2bc8 ).
	//
	// * Forest Views of trusted forests ( e79f2680-84d9-4d34-bc78-5ab9e1255653#gt_3b76a71f-9697-4836-9c69-09899b23c21b
	// ) for the forest of the domain to which this machine is joined, unless ClientRevision
	// is 0x00000001 and the machine is joined to a mixed mode domain, as specified in [MS-ADTS]
	// section 6.1.4.1.
	//
	// * Account Domain Views of externally trusted domains ( e79f2680-84d9-4d34-bc78-5ab9e1255653#gt_f2f00d47-6cf2-4b32-b8f7-b63e38e2e9c4
	// ) for the domain to which this machine is joined.
	LookupLevelWorkstation LookupLevel = 1
	// LsapLookupPDC: SIDs MUST be searched in the views under the Security Principal SID
	// and Security Principal SID History columns in the following order:
	//
	// * Account Domain View of the domain to which this machine is joined.
	//
	// * Forest View of the forest of the domain to which this machine is joined, unless
	// ClientRevision is 0x00000001 and the machine is joined to a mixed mode domain, as
	// specified in [MS-ADTS] section 6.1.4.1.
	//
	// * Forest Views of trusted forests for the forest of the domain to which this machine
	// is joined, unless ClientRevision is 0x00000001 and the machine is joined to a mixed
	// mode domain, as specified in [MS-ADTS] section 6.1.4.1.
	//
	// * Account Domain Views of externally trusted domains for the domain to which this
	// machine is joined.
	LookupLevelPDC LookupLevel = 2
	// LsapLookupTDL: SIDs MUST be searched in the databases under the Security Principal
	// SID column in the following view:
	//
	// * Account Domain View of the domain NC ( e79f2680-84d9-4d34-bc78-5ab9e1255653#gt_40a58fa4-953e-4cf3-96c8-57dba60237ef
	// ) for the domain to which this machine is joined.
	LookupLevelTDL LookupLevel = 3
	// LsapLookupGC: SIDs MUST be searched in the databases under the Security Principal
	// SID and Security Principal SID History columns in the following view:
	//
	// * Forest View of the forest of the domain to which this machine is joined.
	LookupLevelGC LookupLevel = 4
	// LsapLookupXForestReferral: SIDs MUST be searched in the databases under the Security
	// Principal SID and Security Principal SID History columns in the following views:
	//
	// * Forest Views of trusted forests for the forest of the domain to which this machine
	// is joined.
	LookupLevelXForestReferral LookupLevel = 5
	// LsapLookupXForestResolve: SIDs MUST be searched in the databases under the Security
	// Principal SID and Security Principal SID History columns in the following view:
	//
	// * Forest View of the forest of the domain to which this machine is joined.
	LookupLevelXForestResolve LookupLevel = 6
	// LsapLookupRODCReferralToFullDC: SIDs MUST be searched in the databases under the
	// Security Principal SID and Security Principal SID History columns in the following
	// order:
	//
	// * Forest Views of trusted forests for the forest of the domain to which this machine
	// is joined, unless ClientRevision is 0x00000001 and the machine is joined to a mixed
	// mode domain, as specified in [MS-ADTS] section 6.1.4.1.
	//
	// * Account Domain Views of externally trusted domains for the domain to which this
	// machine is joined.
	LookupLevelReadOnlyDCReferralToFullDC LookupLevel = 7
)

func (LookupLevel) String

func (o LookupLevel) String() string

type LookupNames2Request

type LookupNames2Request struct {
	// PolicyHandle: Context handle obtained by an LsarOpenPolicy or LsarOpenPolicy2 call.
	Policy *Handle `idl:"name:PolicyHandle" json:"policy"`
	// Count: Number of security principal names to look up.<31>
	Count uint32 `idl:"name:Count" json:"count"`
	// Names: Contains the security principal names to translate, as specified in section
	// 3.1.4.5.
	Names []*dtyp.UnicodeString `idl:"name:Names;size_is:(Count)" json:"names"`
	// TranslatedSids: On successful return, contains the corresponding SID forms for security
	// principal names in the Names parameter. It MUST be ignored on input.
	TranslatedSIDs *TranslatedSIDsEx `idl:"name:TranslatedSids" json:"translated_sids"`
	// LookupLevel: Specifies what scopes are to be used during translation, as specified
	// in section 2.2.16.
	LookupLevel LookupLevel `idl:"name:LookupLevel" json:"lookup_level"`
	// MappedCount: On successful return, contains the number of names that are translated
	// completely to the SID form. This parameter has no effect on message processing in
	// any environment. It MUST be ignored on input.
	MappedCount uint32 `idl:"name:MappedCount" json:"mapped_count"`
	// LookupOptions: Flags that control the lookup operation. For possible values and their
	// meanings, see section 3.1.4.5.
	LookupOptions uint32 `idl:"name:LookupOptions" json:"lookup_options"`
	// ClientRevision: Version of the client, which implies the client's capabilities. For
	// possible values and their meanings, see section 3.1.4.5.
	ClientRevision uint32 `idl:"name:ClientRevision" json:"client_revision"`
}

LookupNames2Request structure represents the LsarLookupNames2 operation request

func (*LookupNames2Request) MarshalNDR

func (o *LookupNames2Request) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*LookupNames2Request) UnmarshalNDR

func (o *LookupNames2Request) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type LookupNames2Response

type LookupNames2Response struct {
	// ReferencedDomains: On successful return, contains the domain information for the
	// domain to which each security principal belongs. The domain information includes
	// a NetBIOS domain name and a domain SID for each entry in the list.
	ReferencedDomains *ReferencedDomainList `idl:"name:ReferencedDomains" json:"referenced_domains"`
	// TranslatedSids: On successful return, contains the corresponding SID forms for security
	// principal names in the Names parameter. It MUST be ignored on input.
	TranslatedSIDs *TranslatedSIDsEx `idl:"name:TranslatedSids" json:"translated_sids"`
	// MappedCount: On successful return, contains the number of names that are translated
	// completely to the SID form. This parameter has no effect on message processing in
	// any environment. It MUST be ignored on input.
	MappedCount uint32 `idl:"name:MappedCount" json:"mapped_count"`
	// Return: The LsarLookupNames2 return value.
	Return int32 `idl:"name:Return" json:"return"`
}

LookupNames2Response structure represents the LsarLookupNames2 operation response

func (*LookupNames2Response) MarshalNDR

func (o *LookupNames2Response) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*LookupNames2Response) UnmarshalNDR

func (o *LookupNames2Response) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type LookupNames3Request

type LookupNames3Request struct {
	// PolicyHandle: Context handle obtained by an LsarOpenPolicy or LsarOpenPolicy2 call.
	Policy *Handle `idl:"name:PolicyHandle" json:"policy"`
	// Count: Number of security principal names to look up.<29>
	Count uint32 `idl:"name:Count" json:"count"`
	// Names: Contains the security principal names to translate, as specified in section
	// 3.1.4.5.
	Names []*dtyp.UnicodeString `idl:"name:Names;size_is:(Count)" json:"names"`
	// TranslatedSids: On successful return, contains the corresponding SID forms for security
	// principal names in the Names parameter. It MUST be ignored on input.
	TranslatedSIDs *TranslatedSIDsEx2 `idl:"name:TranslatedSids" json:"translated_sids"`
	// LookupLevel: Specifies what scopes are to be used during translation, as specified
	// in section 2.2.16.
	LookupLevel LookupLevel `idl:"name:LookupLevel" json:"lookup_level"`
	// MappedCount: On successful return, contains the number of names that are translated
	// completely to the SID form. This parameter has no effect on message processing in
	// any environment. It MUST be ignored on input.
	MappedCount uint32 `idl:"name:MappedCount" json:"mapped_count"`
	// LookupOptions: Flags that control the lookup operation. For possible values and their
	// meanings, see section 3.1.4.5.
	LookupOptions uint32 `idl:"name:LookupOptions" json:"lookup_options"`
	// ClientRevision: Version of the client, which implies the client's capabilities. For
	// possible values and their meanings, see section 3.1.4.5.
	ClientRevision uint32 `idl:"name:ClientRevision" json:"client_revision"`
}

LookupNames3Request structure represents the LsarLookupNames3 operation request

func (*LookupNames3Request) MarshalNDR

func (o *LookupNames3Request) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*LookupNames3Request) UnmarshalNDR

func (o *LookupNames3Request) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type LookupNames3Response

type LookupNames3Response struct {
	// ReferencedDomains: On successful return, contains the domain information for the
	// domain to which each security principal belongs. The domain information includes
	// a NetBIOS domain name and a domain SID for each entry in the list.
	ReferencedDomains *ReferencedDomainList `idl:"name:ReferencedDomains" json:"referenced_domains"`
	// TranslatedSids: On successful return, contains the corresponding SID forms for security
	// principal names in the Names parameter. It MUST be ignored on input.
	TranslatedSIDs *TranslatedSIDsEx2 `idl:"name:TranslatedSids" json:"translated_sids"`
	// MappedCount: On successful return, contains the number of names that are translated
	// completely to the SID form. This parameter has no effect on message processing in
	// any environment. It MUST be ignored on input.
	MappedCount uint32 `idl:"name:MappedCount" json:"mapped_count"`
	// Return: The LsarLookupNames3 return value.
	Return int32 `idl:"name:Return" json:"return"`
}

LookupNames3Response structure represents the LsarLookupNames3 operation response

func (*LookupNames3Response) MarshalNDR

func (o *LookupNames3Response) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*LookupNames3Response) UnmarshalNDR

func (o *LookupNames3Response) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type LookupNames4Request

type LookupNames4Request struct {
	// Count: Number of security principal names to look up.<24>
	Count uint32 `idl:"name:Count" json:"count"`
	// Names: Contains the security principal names to translate. The RPC_UNICODE_STRING
	// structure is defined in [MS-DTYP] section 2.3.10.
	//
	// * User principal names (UPNs) ( e79f2680-84d9-4d34-bc78-5ab9e1255653#gt_9d606f55-b798-4def-bf96-97b878bb92c6
	// ) , such as user_name@example.example.com.
	//
	// * Fully qualified account names based on either DNS or NetBIOS names. For example:
	// example.example.com\user_name or example\user_name, where the generalized form is
	// domain\user account name, and domain is either the fully qualified DNS name ( e79f2680-84d9-4d34-bc78-5ab9e1255653#gt_102a36e2-f66f-49e2-bee3-558736b2ecd5
	// ) or the NetBIOS name of the trusted domain ( e79f2680-84d9-4d34-bc78-5ab9e1255653#gt_f2f00d47-6cf2-4b32-b8f7-b63e38e2e9c4
	// ).
	//
	// * Unqualified or isolated names, such as user_name.
	Names []*dtyp.UnicodeString `idl:"name:Names;size_is:(Count)" json:"names"`
	// TranslatedSids: On successful return, contains the corresponding SID form for security
	// principal names in the Names parameter. It MUST be ignored on input.
	TranslatedSIDs *TranslatedSIDsEx2 `idl:"name:TranslatedSids" json:"translated_sids"`
	// LookupLevel: Specifies what scopes are to be used during translation, as specified
	// in section 2.2.16.
	LookupLevel LookupLevel `idl:"name:LookupLevel" json:"lookup_level"`
	// MappedCount: On successful return, contains the number of names that are translated
	// completely to the SID form. This parameter is left as an input parameter for backward
	// compatibility and has no effect on message processing in any environment. It MUST
	// be ignored on input.
	MappedCount uint32 `idl:"name:MappedCount" json:"mapped_count"`
	// LookupOptions: Flags specified by the caller that control the lookup operation. The
	// value MUST be one of the following.
	//
	//	+------------+----------------------------------------------------------------------------------+
	//	|            |                                                                                  |
	//	|   VALUE    |                                     MEANING                                      |
	//	|            |                                                                                  |
	//	+------------+----------------------------------------------------------------------------------+
	//	+------------+----------------------------------------------------------------------------------+
	//	| 0x00000000 | Isolated names are searched for even when they are not on the local computer.    |
	//	+------------+----------------------------------------------------------------------------------+
	//	| 0x80000000 | Isolated names (except for user principal names (UPNs)) are searched for only on |
	//	|            | the local account database. UPNs are not searched for in any of the views.       |
	//	+------------+----------------------------------------------------------------------------------+
	LookupOptions uint32 `idl:"name:LookupOptions" json:"lookup_options"`
	// ClientRevision: Version of the client, which implies the client's capabilities. The
	// value MUST be one of the following.<25>
	//
	//	+------------+----------------------------------------------------------------------------------+
	//	|            |                                                                                  |
	//	|   VALUE    |                                     MEANING                                      |
	//	|            |                                                                                  |
	//	+------------+----------------------------------------------------------------------------------+
	//	+------------+----------------------------------------------------------------------------------+
	//	| 0x00000001 | The client does not understand DNS domain names and is not aware that it might   |
	//	|            | be part of a forest.                                                             |
	//	+------------+----------------------------------------------------------------------------------+
	//	| 0x00000002 | The client understands DNS domain names and is aware that it might be part of    |
	//	|            | a forest. Error codes returned can include STATUS_TRUSTED_DOMAIN_FAILURE and     |
	//	|            | STATUS_TRUSTED_RELATIONSHIP_FAILURE, which are not returned for ClientRevision   |
	//	|            | of 0x00000001. For more information on error codes, see [MS-ERREF].              |
	//	+------------+----------------------------------------------------------------------------------+
	ClientRevision uint32 `idl:"name:ClientRevision" json:"client_revision"`
}

LookupNames4Request structure represents the LsarLookupNames4 operation request

func (*LookupNames4Request) MarshalNDR

func (o *LookupNames4Request) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*LookupNames4Request) UnmarshalNDR

func (o *LookupNames4Request) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type LookupNames4Response

type LookupNames4Response struct {
	// ReferencedDomains: On successful return, contains the domain information for the
	// domain to which each security principal belongs. The domain information includes
	// a NetBIOS domain name and a domain SID for each entry in the list.
	ReferencedDomains *ReferencedDomainList `idl:"name:ReferencedDomains" json:"referenced_domains"`
	// TranslatedSids: On successful return, contains the corresponding SID form for security
	// principal names in the Names parameter. It MUST be ignored on input.
	TranslatedSIDs *TranslatedSIDsEx2 `idl:"name:TranslatedSids" json:"translated_sids"`
	// MappedCount: On successful return, contains the number of names that are translated
	// completely to the SID form. This parameter is left as an input parameter for backward
	// compatibility and has no effect on message processing in any environment. It MUST
	// be ignored on input.
	MappedCount uint32 `idl:"name:MappedCount" json:"mapped_count"`
	// Return: The LsarLookupNames4 return value.
	Return int32 `idl:"name:Return" json:"return"`
}

LookupNames4Response structure represents the LsarLookupNames4 operation response

func (*LookupNames4Response) MarshalNDR

func (o *LookupNames4Response) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*LookupNames4Response) UnmarshalNDR

func (o *LookupNames4Response) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type LookupNamesRequest

type LookupNamesRequest struct {
	// PolicyHandle: Context handle obtained by an LsarOpenPolicy or LsarOpenPolicy2 call.
	Policy *Handle `idl:"name:PolicyHandle" json:"policy"`
	// Count: Number of names in the Names array.<32>
	Count uint32 `idl:"name:Count" json:"count"`
	// Names: Contains the security principal names to translate, as specified in section
	// 3.1.4.5.
	Names []*dtyp.UnicodeString `idl:"name:Names;size_is:(Count)" json:"names"`
	// TranslatedSids: On successful return, contains the corresponding SID forms for security
	// principal names in the Names parameter. It MUST be ignored on input.
	TranslatedSIDs *TranslatedSIDs `idl:"name:TranslatedSids" json:"translated_sids"`
	// LookupLevel: Specifies what scopes are to be used during translation, as specified
	// in section 2.2.16.
	LookupLevel LookupLevel `idl:"name:LookupLevel" json:"lookup_level"`
	// MappedCount: On successful return, contains the number of names that are translated
	// completely to their SID forms. This parameter has no effect on message processing
	// in any environment. It MUST be ignored on input.
	MappedCount uint32 `idl:"name:MappedCount" json:"mapped_count"`
}

LookupNamesRequest structure represents the LsarLookupNames operation request

func (*LookupNamesRequest) MarshalNDR

func (o *LookupNamesRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*LookupNamesRequest) UnmarshalNDR

func (o *LookupNamesRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type LookupNamesResponse

type LookupNamesResponse struct {
	// ReferencedDomains: On successful return, contains the domain information for the
	// domain to which each security principal belongs. The domain information includes
	// a NetBIOS domain name and a domain SID for each entry in the list.
	ReferencedDomains *ReferencedDomainList `idl:"name:ReferencedDomains" json:"referenced_domains"`
	// TranslatedSids: On successful return, contains the corresponding SID forms for security
	// principal names in the Names parameter. It MUST be ignored on input.
	TranslatedSIDs *TranslatedSIDs `idl:"name:TranslatedSids" json:"translated_sids"`
	// MappedCount: On successful return, contains the number of names that are translated
	// completely to their SID forms. This parameter has no effect on message processing
	// in any environment. It MUST be ignored on input.
	MappedCount uint32 `idl:"name:MappedCount" json:"mapped_count"`
	// Return: The LsarLookupNames return value.
	Return int32 `idl:"name:Return" json:"return"`
}

LookupNamesResponse structure represents the LsarLookupNames operation response

func (*LookupNamesResponse) MarshalNDR

func (o *LookupNamesResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*LookupNamesResponse) UnmarshalNDR

func (o *LookupNamesResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type LookupSIDsRequest

type LookupSIDsRequest struct {
	// PolicyHandle: Context handle obtained by an LsarOpenPolicy or LsarOpenPolicy2 call.
	Policy *Handle `idl:"name:PolicyHandle" json:"policy"`
	// SidEnumBuffer: Contains the SIDs to be translated. The SIDs in this structure can
	// be that of users, groups, computers, Windows-defined well-known security principals,
	// or domains.
	SIDEnumBuffer *SIDEnumBuffer `idl:"name:SidEnumBuffer" json:"sid_enum_buffer"`
	// TranslatedNames: On successful return, contains the corresponding name form for security
	// principal SIDs in the SidEnumBuffer parameter. It MUST be ignored on input.
	TranslatedNames *TranslatedNames `idl:"name:TranslatedNames" json:"translated_names"`
	// LookupLevel: Specifies what scopes are to be used during translation, as specified
	// in section 2.2.16.
	LookupLevel LookupLevel `idl:"name:LookupLevel" json:"lookup_level"`
	// MappedCount: On successful return, contains the number of names that are translated
	// completely to their Name forms. It MUST be ignored on input.
	MappedCount uint32 `idl:"name:MappedCount" json:"mapped_count"`
}

LookupSIDsRequest structure represents the LsarLookupSids operation request

func (*LookupSIDsRequest) MarshalNDR

func (o *LookupSIDsRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*LookupSIDsRequest) UnmarshalNDR

func (o *LookupSIDsRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type LookupSIDsResponse

type LookupSIDsResponse struct {
	// ReferencedDomains: On successful return, contains the domain information for the
	// domain to which each security principal belongs. The domain information includes
	// a NetBIOS domain name and a domain SID for each entry in the list.
	ReferencedDomains *ReferencedDomainList `idl:"name:ReferencedDomains" json:"referenced_domains"`
	// TranslatedNames: On successful return, contains the corresponding name form for security
	// principal SIDs in the SidEnumBuffer parameter. It MUST be ignored on input.
	TranslatedNames *TranslatedNames `idl:"name:TranslatedNames" json:"translated_names"`
	// MappedCount: On successful return, contains the number of names that are translated
	// completely to their Name forms. It MUST be ignored on input.
	MappedCount uint32 `idl:"name:MappedCount" json:"mapped_count"`
	// Return: The LsarLookupSids return value.
	Return int32 `idl:"name:Return" json:"return"`
}

LookupSIDsResponse structure represents the LsarLookupSids operation response

func (*LookupSIDsResponse) MarshalNDR

func (o *LookupSIDsResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*LookupSIDsResponse) UnmarshalNDR

func (o *LookupSIDsResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type LookupSids2Request

type LookupSids2Request struct {
	// PolicyHandle: Context handle obtained by an LsarOpenPolicy or LsarOpenPolicy2 call.
	Policy *Handle `idl:"name:PolicyHandle" json:"policy"`
	// SidEnumBuffer: Contains the SIDs to be translated. The SIDs in this structure can
	// be that of users, groups, computers, Windows-defined well-known security principals,
	// or domains.
	SIDEnumBuffer *SIDEnumBuffer `idl:"name:SidEnumBuffer" json:"sid_enum_buffer"`
	// TranslatedNames: On successful return, contains the corresponding name forms for
	// security principal SIDs in the SidEnumBuffer parameter. It MUST be ignored on input.
	TranslatedNames *TranslatedNamesEx `idl:"name:TranslatedNames" json:"translated_names"`
	// LookupLevel: Specifies what scopes are to be used during translation, as specified
	// in section 2.2.16.
	LookupLevel LookupLevel `idl:"name:LookupLevel" json:"lookup_level"`
	// MappedCount: On return, contains the number of names that are translated completely
	// to their name forms. It MUST be ignored on input.
	MappedCount uint32 `idl:"name:MappedCount" json:"mapped_count"`
	// LookupOptions: Flags that control the lookup operation. This parameter is reserved
	// for future use and SHOULD<33> be set to 0.
	LookupOptions uint32 `idl:"name:LookupOptions" json:"lookup_options"`
	// ClientRevision: Version of the client, which implies the client's capabilities. For
	// possible values and their meanings, see section 3.1.4.5.
	ClientRevision uint32 `idl:"name:ClientRevision" json:"client_revision"`
}

LookupSids2Request structure represents the LsarLookupSids2 operation request

func (*LookupSids2Request) MarshalNDR

func (o *LookupSids2Request) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*LookupSids2Request) UnmarshalNDR

func (o *LookupSids2Request) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type LookupSids2Response

type LookupSids2Response struct {
	// ReferencedDomains: On successful return, contains the domain information for the
	// domain to which each security principal belongs. The domain information includes
	// a NetBIOS domain name and a domain SID for each entry in the list.
	ReferencedDomains *ReferencedDomainList `idl:"name:ReferencedDomains" json:"referenced_domains"`
	// TranslatedNames: On successful return, contains the corresponding name forms for
	// security principal SIDs in the SidEnumBuffer parameter. It MUST be ignored on input.
	TranslatedNames *TranslatedNamesEx `idl:"name:TranslatedNames" json:"translated_names"`
	// MappedCount: On return, contains the number of names that are translated completely
	// to their name forms. It MUST be ignored on input.
	MappedCount uint32 `idl:"name:MappedCount" json:"mapped_count"`
	// Return: The LsarLookupSids2 return value.
	Return int32 `idl:"name:Return" json:"return"`
}

LookupSids2Response structure represents the LsarLookupSids2 operation response

func (*LookupSids2Response) MarshalNDR

func (o *LookupSids2Response) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*LookupSids2Response) UnmarshalNDR

func (o *LookupSids2Response) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type LookupSids3Request

type LookupSids3Request struct {
	// SidEnumBuffer: Contains the SIDs to be translated. The SIDs in this structure can
	// be that of users, groups, computers, Windows-defined well-known security principals,
	// or domains.
	SIDEnumBuffer *SIDEnumBuffer `idl:"name:SidEnumBuffer" json:"sid_enum_buffer"`
	// TranslatedNames: On successful return, contains the corresponding name forms for
	// security principal SIDs in the SidEnumBuffer parameter. It MUST be ignored on input.
	TranslatedNames *TranslatedNamesEx `idl:"name:TranslatedNames" json:"translated_names"`
	// LookupLevel: Specifies what scopes are to be used during translation, as specified
	// in section 2.2.16.
	LookupLevel LookupLevel `idl:"name:LookupLevel" json:"lookup_level"`
	// MappedCount: On successful return, contains the number of names that are translated
	// completely to their name forms. It MUST be ignored on input.
	MappedCount uint32 `idl:"name:MappedCount" json:"mapped_count"`
	// LookupOptions: Flags that control the lookup operation. This parameter is reserved
	// for future use; it MUST be set to 0 and ignored on receipt.
	LookupOptions uint32 `idl:"name:LookupOptions" json:"lookup_options"`
	// ClientRevision: Version of the client, which implies the client's capabilities. For
	// possible values and their meanings, see section 3.1.4.5.
	ClientRevision uint32 `idl:"name:ClientRevision" json:"client_revision"`
}

LookupSids3Request structure represents the LsarLookupSids3 operation request

func (*LookupSids3Request) MarshalNDR

func (o *LookupSids3Request) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*LookupSids3Request) UnmarshalNDR

func (o *LookupSids3Request) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type LookupSids3Response

type LookupSids3Response struct {
	// ReferencedDomains: On successful return, contains the domain information for the
	// domain to which each security principal belongs. The domain information includes
	// a NetBIOS domain name and a domain SID for each entry in the list.
	ReferencedDomains *ReferencedDomainList `idl:"name:ReferencedDomains" json:"referenced_domains"`
	// TranslatedNames: On successful return, contains the corresponding name forms for
	// security principal SIDs in the SidEnumBuffer parameter. It MUST be ignored on input.
	TranslatedNames *TranslatedNamesEx `idl:"name:TranslatedNames" json:"translated_names"`
	// MappedCount: On successful return, contains the number of names that are translated
	// completely to their name forms. It MUST be ignored on input.
	MappedCount uint32 `idl:"name:MappedCount" json:"mapped_count"`
	// Return: The LsarLookupSids3 return value.
	Return int32 `idl:"name:Return" json:"return"`
}

LookupSids3Response structure represents the LsarLookupSids3 operation response

func (*LookupSids3Response) MarshalNDR

func (o *LookupSids3Response) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*LookupSids3Response) UnmarshalNDR

func (o *LookupSids3Response) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type LsarpcClient

type LsarpcClient interface {

	// The LsarClose method frees the resources held by a context handle that was opened
	// earlier. After response, the context handle is no longer usable, and any subsequent
	// uses of this handle MUST fail.
	Close(context.Context, *CloseRequest, ...dcerpc.CallOption) (*CloseResponse, error)

	// The LsarOpenPolicy method is exactly the same as LsarOpenPolicy2, except that the
	// SystemName parameter in this method contains only one character instead of a full
	// string. This is because its syntactical definition lacks the [string] RPC annotation
	// present in LsarOpenPolicy2, as specified in [C706]. RPC data types are specified
	// in [MS-RPCE] section 2.2.4.1.
	//
	// The SystemName parameter has no effect on message processing in any environment.
	// It MUST be ignored.
	OpenPolicy(context.Context, *OpenPolicyRequest, ...dcerpc.CallOption) (*OpenPolicyResponse, error)

	// The LsarLookupNames method translates a batch of security principal names to their
	// SID form. It also returns the domains that these names are a part of.
	//
	// Return Values: The following table contains a summary of the return values that an
	// implementation MUST return, as specified by the message processing shown after the
	// table.
	//
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	|               RETURN                |                                                                     |
	//	|             VALUE/CODE              |                             DESCRIPTION                             |
	//	|                                     |                                                                     |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0x00000000 STATUS_SUCCESS           | The request was successfully completed.                             |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0x00000107 STATUS_SOME_NOT_MAPPED   | Some of the information to be translated has not been translated.   |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0xC0000022 STATUS_ACCESS_DENIED     | The caller does not have the permissions to perform this operation. |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0xC000000D STATUS_INVALID_PARAMETER | One of the supplied parameters was invalid.                         |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0xC0000073 STATUS_NONE_MAPPED       | None of the information to be translated has been translated.       |
	//	+-------------------------------------+---------------------------------------------------------------------+
	LookupNames(context.Context, *LookupNamesRequest, ...dcerpc.CallOption) (*LookupNamesResponse, error)

	// The LsarLookupSids method translates a batch of security principal SIDs to their
	// name forms. It also returns the domains that these names are a part of.
	//
	// Return Values: The following table contains a summary of the return values that an
	// implementation MUST return, as specified by the message processing shown after the
	// table.
	//
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	|               RETURN                |                                                                     |
	//	|             VALUE/CODE              |                             DESCRIPTION                             |
	//	|                                     |                                                                     |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0x00000000 STATUS_SUCCESS           | The request was successfully completed.                             |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0x00000107 STATUS_SOME_NOT_MAPPED   | Some of the information to be translated has not been translated.   |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0xC0000022 STATUS_ACCESS_DENIED     | The caller does not have the permissions to perform this operation. |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0xC000000D STATUS_INVALID_PARAMETER | One of the supplied parameters was invalid.                         |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0xC0000073 STATUS_NONE_MAPPED       | None of the information to be translated has been translated.       |
	//	+-------------------------------------+---------------------------------------------------------------------+
	LookupSIDs(context.Context, *LookupSIDsRequest, ...dcerpc.CallOption) (*LookupSIDsResponse, error)

	// The LsarOpenPolicy2 method opens a context handle to the RPC server.
	OpenPolicy2(context.Context, *OpenPolicy2Request, ...dcerpc.CallOption) (*OpenPolicy2Response, error)

	// The LsarGetUserName method returns the name and the domain name of the security principal
	// that is invoking the method.
	//
	// Return Values: The following table contains a summary of the return values that an
	// implementation MUST return, as specified by the message processing shown after the
	// table.
	//
	//	+---------------------------------+---------------------------------------------------------------------+
	//	|             RETURN              |                                                                     |
	//	|           VALUE/CODE            |                             DESCRIPTION                             |
	//	|                                 |                                                                     |
	//	+---------------------------------+---------------------------------------------------------------------+
	//	+---------------------------------+---------------------------------------------------------------------+
	//	| 0x00000000 STATUS_SUCCESS       | The request was successfully completed.                             |
	//	+---------------------------------+---------------------------------------------------------------------+
	//	| 0xC0000022 STATUS_ACCESS_DENIED | The caller does not have the permissions to perform this operation. |
	//	+---------------------------------+---------------------------------------------------------------------+
	GetUserName(context.Context, *GetUserNameRequest, ...dcerpc.CallOption) (*GetUserNameResponse, error)

	// The LsarLookupSids2 method translates a batch of security principal SIDs to their
	// name forms. It also returns the domains that these names are a part of.
	//
	// Return Values: The following table contains a summary of the return values that an
	// implementation MUST return, as specified by the message processing shown after the
	// table.
	//
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	|               RETURN                |                                                                     |
	//	|             VALUE/CODE              |                             DESCRIPTION                             |
	//	|                                     |                                                                     |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0x00000000 STATUS_SUCCESS           | The request was successfully completed.                             |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0x00000107 STATUS_SOME_NOT_MAPPED   | Some of the information to be translated has not been translated.   |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0xC0000022 STATUS_ACCESS_DENIED     | The caller does not have the permissions to perform this operation. |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0xC000000D STATUS_INVALID_PARAMETER | One of the supplied parameters was invalid.                         |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0xC0000073 STATUS_NONE_MAPPED       | None of the information to be translated has been translated.       |
	//	+-------------------------------------+---------------------------------------------------------------------+
	LookupSids2(context.Context, *LookupSids2Request, ...dcerpc.CallOption) (*LookupSids2Response, error)

	// The LsarLookupNames2 method translates a batch of security principal names to their
	// SID form. It also returns the domains that these names are a part of.<30>
	//
	// Return Values: The following table contains a summary of the return values that an
	// implementation MUST return, as specified by the message processing shown after the
	// table.
	//
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	|               RETURN                |                                                                     |
	//	|             VALUE/CODE              |                             DESCRIPTION                             |
	//	|                                     |                                                                     |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0x00000000 STATUS_SUCCESS           | The request was successfully completed.                             |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0x00000107 STATUS_SOME_NOT_MAPPED   | Some of the information to be translated has not been translated.   |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0xC0000022 STATUS_ACCESS_DENIED     | The caller does not have the permissions to perform this operation. |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0xC000000D STATUS_INVALID_PARAMETER | One of the supplied parameters was invalid.                         |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0xC0000073 STATUS_NONE_MAPPED       | None of the information to be translated has been translated.       |
	//	+-------------------------------------+---------------------------------------------------------------------+
	LookupNames2(context.Context, *LookupNames2Request, ...dcerpc.CallOption) (*LookupNames2Response, error)

	// The LsarLookupNames3 method translates a batch of security principal names to their
	// SID form. It also returns the domains that these names are a part of.<28>
	//
	// Return Values: The following table contains a summary of the return values that an
	// implementation MUST return, as specified by the message processing shown after the
	// table.
	//
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	|               RETURN                |                                                                     |
	//	|             VALUE/CODE              |                             DESCRIPTION                             |
	//	|                                     |                                                                     |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0x00000000 STATUS_SUCCESS           | The request was successfully completed.                             |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0x00000107 STATUS_SOME_NOT_MAPPED   | Some of the information to be translated has not been translated.   |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0xC0000022 STATUS_ACCESS_DENIED     | The caller does not have the permissions to perform this operation. |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0xC000000D STATUS_INVALID_PARAMETER | One of the supplied parameters was invalid.                         |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0xC0000073 STATUS_NONE_MAPPED       | None of the information to be translated has been translated.       |
	//	+-------------------------------------+---------------------------------------------------------------------+
	LookupNames3(context.Context, *LookupNames3Request, ...dcerpc.CallOption) (*LookupNames3Response, error)

	// The LsarLookupSids3 method translates a batch of security principal SIDs to their
	// name forms. It also returns the domains that these names are a part of.
	//
	// Return Values: The following table contains a summary of the return values that an
	// implementation MUST return, as specified by the message processing shown after the
	// table.
	//
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	|                 RETURN                 |                                                                     |
	//	|               VALUE/CODE               |                             DESCRIPTION                             |
	//	|                                        |                                                                     |
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	| 0x00000000 STATUS_SUCCESS              | The request was successfully completed.                             |
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	| 0x00000107 STATUS_SOME_NOT_MAPPED      | Some of the information to be translated has not been translated.   |
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	| 0xC00000DC STATUS_INVALID_SERVER_STATE | The RPC server is not a domain controller.                          |
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	| 0xC0000022 STATUS_ACCESS_DENIED        | The caller does not have the permissions to perform this operation. |
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	| 0xC000000D STATUS_INVALID_PARAMETER    | One of the supplied parameters was invalid.                         |
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	| 0xC0000073 STATUS_NONE_MAPPED          | None of the information to be translated has been translated.       |
	//	+----------------------------------------+---------------------------------------------------------------------+
	//
	// This message is valid only if the RPC server is a domain controller. The RPC server
	// MUST return STATUS_INVALID_SERVER_STATE in the return value if it is not a domain
	// controller.
	LookupSids3(context.Context, *LookupSids3Request, ...dcerpc.CallOption) (*LookupSids3Response, error)

	// The LsarLookupNames4 method translates a batch of security principal names to their
	// SID form. It also returns the domains of which these security principals are a part.
	//
	// Return Values: The following table contains a summary of the return values that an
	// implementation MUST return, as specified by the message processing shown after the
	// table.
	//
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	|                 RETURN                 |                                                                     |
	//	|               VALUE/CODE               |                             DESCRIPTION                             |
	//	|                                        |                                                                     |
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	| 0x00000000 STATUS_SUCCESS              | The request was successfully completed.                             |
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	| 0x00000107 STATUS_SOME_NOT_MAPPED      | Some of the information to be translated has not been translated.   |
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	| 0xC00000DC STATUS_INVALID_SERVER_STATE | The RPC server is not a domain controller.                          |
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	| 0xC0000022 STATUS_ACCESS_DENIED        | The caller does not have the permissions to perform this operation. |
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	| 0xC000000D STATUS_INVALID_PARAMETER    | One of the supplied parameters was invalid.                         |
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	| 0xC0000073 STATUS_NONE_MAPPED          | None of the information to be translated has been translated.       |
	//	+----------------------------------------+---------------------------------------------------------------------+
	//
	// This message is valid only if the RPC server is a domain controller. The RPC server
	// MUST return STATUS_INVALID_SERVER_STATE in the return value if it is not a domain
	// controller.
	LookupNames4(context.Context, *LookupNames4Request, ...dcerpc.CallOption) (*LookupNames4Response, error)

	// AlterContext alters the client context.
	AlterContext(context.Context, ...dcerpc.Option) error
}

lsarpc interface.

func NewLsarpcClient

func NewLsarpcClient(ctx context.Context, cc dcerpc.Conn, opts ...dcerpc.Option) (LsarpcClient, error)

type LsarpcServer

type LsarpcServer interface {

	// The LsarClose method frees the resources held by a context handle that was opened
	// earlier. After response, the context handle is no longer usable, and any subsequent
	// uses of this handle MUST fail.
	Close(context.Context, *CloseRequest) (*CloseResponse, error)

	// The LsarOpenPolicy method is exactly the same as LsarOpenPolicy2, except that the
	// SystemName parameter in this method contains only one character instead of a full
	// string. This is because its syntactical definition lacks the [string] RPC annotation
	// present in LsarOpenPolicy2, as specified in [C706]. RPC data types are specified
	// in [MS-RPCE] section 2.2.4.1.
	//
	// The SystemName parameter has no effect on message processing in any environment.
	// It MUST be ignored.
	OpenPolicy(context.Context, *OpenPolicyRequest) (*OpenPolicyResponse, error)

	// The LsarLookupNames method translates a batch of security principal names to their
	// SID form. It also returns the domains that these names are a part of.
	//
	// Return Values: The following table contains a summary of the return values that an
	// implementation MUST return, as specified by the message processing shown after the
	// table.
	//
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	|               RETURN                |                                                                     |
	//	|             VALUE/CODE              |                             DESCRIPTION                             |
	//	|                                     |                                                                     |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0x00000000 STATUS_SUCCESS           | The request was successfully completed.                             |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0x00000107 STATUS_SOME_NOT_MAPPED   | Some of the information to be translated has not been translated.   |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0xC0000022 STATUS_ACCESS_DENIED     | The caller does not have the permissions to perform this operation. |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0xC000000D STATUS_INVALID_PARAMETER | One of the supplied parameters was invalid.                         |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0xC0000073 STATUS_NONE_MAPPED       | None of the information to be translated has been translated.       |
	//	+-------------------------------------+---------------------------------------------------------------------+
	LookupNames(context.Context, *LookupNamesRequest) (*LookupNamesResponse, error)

	// The LsarLookupSids method translates a batch of security principal SIDs to their
	// name forms. It also returns the domains that these names are a part of.
	//
	// Return Values: The following table contains a summary of the return values that an
	// implementation MUST return, as specified by the message processing shown after the
	// table.
	//
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	|               RETURN                |                                                                     |
	//	|             VALUE/CODE              |                             DESCRIPTION                             |
	//	|                                     |                                                                     |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0x00000000 STATUS_SUCCESS           | The request was successfully completed.                             |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0x00000107 STATUS_SOME_NOT_MAPPED   | Some of the information to be translated has not been translated.   |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0xC0000022 STATUS_ACCESS_DENIED     | The caller does not have the permissions to perform this operation. |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0xC000000D STATUS_INVALID_PARAMETER | One of the supplied parameters was invalid.                         |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0xC0000073 STATUS_NONE_MAPPED       | None of the information to be translated has been translated.       |
	//	+-------------------------------------+---------------------------------------------------------------------+
	LookupSIDs(context.Context, *LookupSIDsRequest) (*LookupSIDsResponse, error)

	// The LsarOpenPolicy2 method opens a context handle to the RPC server.
	OpenPolicy2(context.Context, *OpenPolicy2Request) (*OpenPolicy2Response, error)

	// The LsarGetUserName method returns the name and the domain name of the security principal
	// that is invoking the method.
	//
	// Return Values: The following table contains a summary of the return values that an
	// implementation MUST return, as specified by the message processing shown after the
	// table.
	//
	//	+---------------------------------+---------------------------------------------------------------------+
	//	|             RETURN              |                                                                     |
	//	|           VALUE/CODE            |                             DESCRIPTION                             |
	//	|                                 |                                                                     |
	//	+---------------------------------+---------------------------------------------------------------------+
	//	+---------------------------------+---------------------------------------------------------------------+
	//	| 0x00000000 STATUS_SUCCESS       | The request was successfully completed.                             |
	//	+---------------------------------+---------------------------------------------------------------------+
	//	| 0xC0000022 STATUS_ACCESS_DENIED | The caller does not have the permissions to perform this operation. |
	//	+---------------------------------+---------------------------------------------------------------------+
	GetUserName(context.Context, *GetUserNameRequest) (*GetUserNameResponse, error)

	// The LsarLookupSids2 method translates a batch of security principal SIDs to their
	// name forms. It also returns the domains that these names are a part of.
	//
	// Return Values: The following table contains a summary of the return values that an
	// implementation MUST return, as specified by the message processing shown after the
	// table.
	//
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	|               RETURN                |                                                                     |
	//	|             VALUE/CODE              |                             DESCRIPTION                             |
	//	|                                     |                                                                     |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0x00000000 STATUS_SUCCESS           | The request was successfully completed.                             |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0x00000107 STATUS_SOME_NOT_MAPPED   | Some of the information to be translated has not been translated.   |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0xC0000022 STATUS_ACCESS_DENIED     | The caller does not have the permissions to perform this operation. |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0xC000000D STATUS_INVALID_PARAMETER | One of the supplied parameters was invalid.                         |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0xC0000073 STATUS_NONE_MAPPED       | None of the information to be translated has been translated.       |
	//	+-------------------------------------+---------------------------------------------------------------------+
	LookupSids2(context.Context, *LookupSids2Request) (*LookupSids2Response, error)

	// The LsarLookupNames2 method translates a batch of security principal names to their
	// SID form. It also returns the domains that these names are a part of.<30>
	//
	// Return Values: The following table contains a summary of the return values that an
	// implementation MUST return, as specified by the message processing shown after the
	// table.
	//
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	|               RETURN                |                                                                     |
	//	|             VALUE/CODE              |                             DESCRIPTION                             |
	//	|                                     |                                                                     |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0x00000000 STATUS_SUCCESS           | The request was successfully completed.                             |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0x00000107 STATUS_SOME_NOT_MAPPED   | Some of the information to be translated has not been translated.   |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0xC0000022 STATUS_ACCESS_DENIED     | The caller does not have the permissions to perform this operation. |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0xC000000D STATUS_INVALID_PARAMETER | One of the supplied parameters was invalid.                         |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0xC0000073 STATUS_NONE_MAPPED       | None of the information to be translated has been translated.       |
	//	+-------------------------------------+---------------------------------------------------------------------+
	LookupNames2(context.Context, *LookupNames2Request) (*LookupNames2Response, error)

	// The LsarLookupNames3 method translates a batch of security principal names to their
	// SID form. It also returns the domains that these names are a part of.<28>
	//
	// Return Values: The following table contains a summary of the return values that an
	// implementation MUST return, as specified by the message processing shown after the
	// table.
	//
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	|               RETURN                |                                                                     |
	//	|             VALUE/CODE              |                             DESCRIPTION                             |
	//	|                                     |                                                                     |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0x00000000 STATUS_SUCCESS           | The request was successfully completed.                             |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0x00000107 STATUS_SOME_NOT_MAPPED   | Some of the information to be translated has not been translated.   |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0xC0000022 STATUS_ACCESS_DENIED     | The caller does not have the permissions to perform this operation. |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0xC000000D STATUS_INVALID_PARAMETER | One of the supplied parameters was invalid.                         |
	//	+-------------------------------------+---------------------------------------------------------------------+
	//	| 0xC0000073 STATUS_NONE_MAPPED       | None of the information to be translated has been translated.       |
	//	+-------------------------------------+---------------------------------------------------------------------+
	LookupNames3(context.Context, *LookupNames3Request) (*LookupNames3Response, error)

	// The LsarLookupSids3 method translates a batch of security principal SIDs to their
	// name forms. It also returns the domains that these names are a part of.
	//
	// Return Values: The following table contains a summary of the return values that an
	// implementation MUST return, as specified by the message processing shown after the
	// table.
	//
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	|                 RETURN                 |                                                                     |
	//	|               VALUE/CODE               |                             DESCRIPTION                             |
	//	|                                        |                                                                     |
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	| 0x00000000 STATUS_SUCCESS              | The request was successfully completed.                             |
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	| 0x00000107 STATUS_SOME_NOT_MAPPED      | Some of the information to be translated has not been translated.   |
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	| 0xC00000DC STATUS_INVALID_SERVER_STATE | The RPC server is not a domain controller.                          |
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	| 0xC0000022 STATUS_ACCESS_DENIED        | The caller does not have the permissions to perform this operation. |
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	| 0xC000000D STATUS_INVALID_PARAMETER    | One of the supplied parameters was invalid.                         |
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	| 0xC0000073 STATUS_NONE_MAPPED          | None of the information to be translated has been translated.       |
	//	+----------------------------------------+---------------------------------------------------------------------+
	//
	// This message is valid only if the RPC server is a domain controller. The RPC server
	// MUST return STATUS_INVALID_SERVER_STATE in the return value if it is not a domain
	// controller.
	LookupSids3(context.Context, *LookupSids3Request) (*LookupSids3Response, error)

	// The LsarLookupNames4 method translates a batch of security principal names to their
	// SID form. It also returns the domains of which these security principals are a part.
	//
	// Return Values: The following table contains a summary of the return values that an
	// implementation MUST return, as specified by the message processing shown after the
	// table.
	//
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	|                 RETURN                 |                                                                     |
	//	|               VALUE/CODE               |                             DESCRIPTION                             |
	//	|                                        |                                                                     |
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	| 0x00000000 STATUS_SUCCESS              | The request was successfully completed.                             |
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	| 0x00000107 STATUS_SOME_NOT_MAPPED      | Some of the information to be translated has not been translated.   |
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	| 0xC00000DC STATUS_INVALID_SERVER_STATE | The RPC server is not a domain controller.                          |
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	| 0xC0000022 STATUS_ACCESS_DENIED        | The caller does not have the permissions to perform this operation. |
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	| 0xC000000D STATUS_INVALID_PARAMETER    | One of the supplied parameters was invalid.                         |
	//	+----------------------------------------+---------------------------------------------------------------------+
	//	| 0xC0000073 STATUS_NONE_MAPPED          | None of the information to be translated has been translated.       |
	//	+----------------------------------------+---------------------------------------------------------------------+
	//
	// This message is valid only if the RPC server is a domain controller. The RPC server
	// MUST return STATUS_INVALID_SERVER_STATE in the return value if it is not a domain
	// controller.
	LookupNames4(context.Context, *LookupNames4Request) (*LookupNames4Response, error)
}

lsarpc server interface.

type ObjectAttributes

type ObjectAttributes struct {
	Length                   uint32                    `idl:"name:Length" json:"length"`
	RootDirectory            []byte                    `idl:"name:RootDirectory" json:"root_directory"`
	ObjectName               *String                   `idl:"name:ObjectName" json:"object_name"`
	Attributes               uint32                    `idl:"name:Attributes" json:"attributes"`
	SecurityDescriptor       *SecurityDescriptor       `idl:"name:SecurityDescriptor" json:"security_descriptor"`
	SecurityQualityOfService *SecurityQualityOfService `idl:"name:SecurityQualityOfService" json:"security_quality_of_service"`
}

ObjectAttributes structure represents LSAPR_OBJECT_ATTRIBUTES RPC structure.

The LSAPR_OBJECT_ATTRIBUTES structure specifies an object and its properties as specified in [MS-LSAD] section 2.2.2.4.

Individual member semantics are specified in [MS-LSAD] section 2.2.2.4.

func (*ObjectAttributes) MarshalNDR

func (o *ObjectAttributes) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ObjectAttributes) UnmarshalNDR

func (o *ObjectAttributes) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type OpenPolicy2Request

type OpenPolicy2Request struct {
	SystemName       string            `idl:"name:SystemName;string;pointer:unique" json:"system_name"`
	ObjectAttributes *ObjectAttributes `idl:"name:ObjectAttributes" json:"object_attributes"`
	DesiredAccess    uint32            `idl:"name:DesiredAccess" json:"desired_access"`
}

OpenPolicy2Request structure represents the LsarOpenPolicy2 operation request

func (*OpenPolicy2Request) MarshalNDR

func (o *OpenPolicy2Request) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*OpenPolicy2Request) UnmarshalNDR

func (o *OpenPolicy2Request) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type OpenPolicy2Response

type OpenPolicy2Response struct {
	Policy *Handle `idl:"name:PolicyHandle" json:"policy"`
	// Return: The LsarOpenPolicy2 return value.
	Return int32 `idl:"name:Return" json:"return"`
}

OpenPolicy2Response structure represents the LsarOpenPolicy2 operation response

func (*OpenPolicy2Response) MarshalNDR

func (o *OpenPolicy2Response) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*OpenPolicy2Response) UnmarshalNDR

func (o *OpenPolicy2Response) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type OpenPolicyRequest

type OpenPolicyRequest struct {
	SystemName       string            `idl:"name:SystemName;pointer:unique" json:"system_name"`
	ObjectAttributes *ObjectAttributes `idl:"name:ObjectAttributes" json:"object_attributes"`
	DesiredAccess    uint32            `idl:"name:DesiredAccess" json:"desired_access"`
}

OpenPolicyRequest structure represents the LsarOpenPolicy operation request

func (*OpenPolicyRequest) MarshalNDR

func (o *OpenPolicyRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*OpenPolicyRequest) UnmarshalNDR

func (o *OpenPolicyRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type OpenPolicyResponse

type OpenPolicyResponse struct {
	Policy *Handle `idl:"name:PolicyHandle" json:"policy"`
	// Return: The LsarOpenPolicy return value.
	Return int32 `idl:"name:Return" json:"return"`
}

OpenPolicyResponse structure represents the LsarOpenPolicy operation response

func (*OpenPolicyResponse) MarshalNDR

func (o *OpenPolicyResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*OpenPolicyResponse) UnmarshalNDR

func (o *OpenPolicyResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type ReferencedDomainList

type ReferencedDomainList struct {
	// Entries:  Contains the number of domains referenced in the lookup operation.
	Entries uint32 `idl:"name:Entries" json:"entries"`
	// Domains:  Contains a set of structures that identify domains. If the Entries field
	// in this structure is not 0, this field MUST be non-NULL. If Entries is 0, this field
	// MUST be ignored.
	Domains []*TrustInformation `idl:"name:Domains;size_is:(Entries)" json:"domains"`
	// MaxEntries:  This field MUST be ignored. The content is unspecified, and no requirements
	// are placed on its value since it is never used.
	MaxEntries uint32 `idl:"name:MaxEntries" json:"max_entries"`
}

ReferencedDomainList structure represents LSAPR_REFERENCED_DOMAIN_LIST RPC structure.

The LSAPR_REFERENCED_DOMAIN_LIST structure contains information about the domains referenced in a lookup operation.

func (*ReferencedDomainList) MarshalNDR

func (o *ReferencedDomainList) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ReferencedDomainList) UnmarshalNDR

func (o *ReferencedDomainList) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type SIDEnumBuffer

type SIDEnumBuffer struct {
	// Entries:  Contains the number of translated SIDs.<9>
	Entries uint32 `idl:"name:Entries" json:"entries"`
	// SidInfo:  Contains a set of structures that contain SIDs, as specified in section
	// 2.2.17. If the Entries field in this structure is not 0, this field MUST be non-NULL.
	// If Entries is 0, this field MUST be ignored.
	SIDInfo []*SIDInformation `idl:"name:SidInfo;size_is:(Entries)" json:"sid_info"`
}

SIDEnumBuffer structure represents LSAPR_SID_ENUM_BUFFER RPC structure.

The LSAPR_SID_ENUM_BUFFER structure defines a set of SIDs. This structure is used during a translation request for a batch of SIDs to names.

func (*SIDEnumBuffer) MarshalNDR

func (o *SIDEnumBuffer) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*SIDEnumBuffer) UnmarshalNDR

func (o *SIDEnumBuffer) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type SIDInformation

type SIDInformation struct {
	// Sid:  Contains the PRPC_SID value, as specified in [MS-DTYP] section 2.4.2.3. This
	// field MUST be non-NULL.
	SID *dtyp.SID `idl:"name:Sid" json:"sid"`
}

SIDInformation structure represents LSAPR_SID_INFORMATION RPC structure.

The LSAPR_SID_INFORMATION structure contains a PRPC_SID value.

func (*SIDInformation) MarshalNDR

func (o *SIDInformation) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*SIDInformation) UnmarshalNDR

func (o *SIDInformation) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type SIDNameUse

type SIDNameUse uint16

SIDNameUse type represents SID_NAME_USE RPC enumeration.

The SID_NAME_USE enumeration contains values that specify the type of an account.<6>

The SidTypeInvalid and SidTypeComputer enumeration values are not used in this protocol. Usage information on the remaining enumeration values is specified in section 3.1.1.

var (
	SIDNameUseTypeUser           SIDNameUse = 1
	SIDNameUseTypeGroup          SIDNameUse = 2
	SIDNameUseTypeDomain         SIDNameUse = 3
	SIDNameUseTypeAlias          SIDNameUse = 4
	SIDNameUseTypeWellKnownGroup SIDNameUse = 5
	SIDNameUseTypeDeletedAccount SIDNameUse = 6
	SIDNameUseTypeInvalid        SIDNameUse = 7
	SIDNameUseTypeUnknown        SIDNameUse = 8
	SIDNameUseTypeComputer       SIDNameUse = 9
	SIDNameUseTypeLabel          SIDNameUse = 10
)

func (SIDNameUse) String

func (o SIDNameUse) String() string

type SecurityDescriptor

type SecurityDescriptor struct {
	Revision uint8     `idl:"name:Revision" json:"revision"`
	SBZ1     uint8     `idl:"name:Sbz1" json:"sbz1"`
	Control  uint16    `idl:"name:Control" json:"control"`
	Owner    *dtyp.SID `idl:"name:Owner" json:"owner"`
	Group    *dtyp.SID `idl:"name:Group" json:"group"`
	SACL     *ACL      `idl:"name:Sacl" json:"sacl"`
	DACL     *ACL      `idl:"name:Dacl" json:"dacl"`
}

SecurityDescriptor structure represents LSAPR_SECURITY_DESCRIPTOR RPC structure.

The LSAPR_SECURITY_DESCRIPTOR structure defines an object's security descriptor as specified in [MS-LSAD] section 2.2.3.4.

Individual member semantics are specified in [MS-LSAD] section 2.2.3.4.

func (*SecurityDescriptor) MarshalNDR

func (o *SecurityDescriptor) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*SecurityDescriptor) UnmarshalNDR

func (o *SecurityDescriptor) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type SecurityImpersonationLevel

type SecurityImpersonationLevel uint16

SecurityImpersonationLevel type represents SECURITY_IMPERSONATION_LEVEL RPC enumeration.

The SECURITY_IMPERSONATION_LEVEL enumeration defines a set of values that specify security impersonation levels as specified in [MS-LSAD] section 2.2.3.5.

Individual value semantics are specified in [MS-LSAD] section 2.2.3.5.

var (
	SecurityImpersonationLevelAnonymous      SecurityImpersonationLevel = 0
	SecurityImpersonationLevelIdentification SecurityImpersonationLevel = 1
	SecurityImpersonationLevelImpersonation  SecurityImpersonationLevel = 2
	SecurityImpersonationLevelDelegation     SecurityImpersonationLevel = 3
)

func (SecurityImpersonationLevel) String

type SecurityQualityOfService

type SecurityQualityOfService struct {
	Length              uint32                     `idl:"name:Length" json:"length"`
	ImpersonationLevel  SecurityImpersonationLevel `idl:"name:ImpersonationLevel" json:"impersonation_level"`
	ContextTrackingMode uint8                      `idl:"name:ContextTrackingMode" json:"context_tracking_mode"`
	EffectiveOnly       uint8                      `idl:"name:EffectiveOnly" json:"effective_only"`
}

SecurityQualityOfService structure represents SECURITY_QUALITY_OF_SERVICE RPC structure.

The SECURITY_QUALITY_OF_SERVICE structure defines information used to support client impersonation as specified in [MS-LSAD] section 2.2.3.7.

Individual member semantics are specified in [MS-LSAD] section 2.2.3.7.

func (*SecurityQualityOfService) MarshalNDR

func (o *SecurityQualityOfService) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*SecurityQualityOfService) UnmarshalNDR

func (o *SecurityQualityOfService) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type String

type String struct {
	Length        uint16 `idl:"name:Length" json:"length"`
	MaximumLength uint16 `idl:"name:MaximumLength" json:"maximum_length"`
	Buffer        []byte `idl:"name:Buffer;size_is:(MaximumLength);length_is:(Length)" json:"buffer"`
}

String structure represents STRING RPC structure.

The STRING structure defines a string along with the number of characters in the string, as specified in [MS-LSAD] section 2.2.3.1.

Individual member semantics are specified in [MS-LSAD] section 2.2.3.1.

func (*String) MarshalNDR

func (o *String) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*String) UnmarshalNDR

func (o *String) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type TranslatedName

type TranslatedName struct {
	// Use:  Defines the type of the security principal, as specified in section 2.2.13.
	Use SIDNameUse `idl:"name:Use" json:"use"`
	// Name:  Contains the name of the security principal, with syntaxes described in section
	// 3.1.4.5. The RPC_UNICODE_STRING structure is defined in [MS-DTYP] section 2.3.10.
	Name *dtyp.UnicodeString `idl:"name:Name" json:"name"`
	// DomainIndex:  Contains the index into the corresponding LSAPR_REFERENCED_DOMAIN_LIST
	// structure that specifies the domain that the security principal is in. A DomainIndex
	// value of -1 MUST be used to specify that there are no corresponding domains. Other
	// negative values MUST NOT be used.
	DomainIndex int32 `idl:"name:DomainIndex" json:"domain_index"`
}

TranslatedName structure represents LSAPR_TRANSLATED_NAME RPC structure.

The LSAPR_TRANSLATED_NAME structure contains information about a security principal, along with the human-readable identifier for that security principal. This structure MUST always be accompanied by an LSAPR_REFERENCED_DOMAIN_LIST structure when DomainIndex is not -1, which contains the domain information for the security principals.

func (*TranslatedName) MarshalNDR

func (o *TranslatedName) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*TranslatedName) UnmarshalNDR

func (o *TranslatedName) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type TranslatedNameEx

type TranslatedNameEx struct {
	// Use:  Defines the type of the security principal, as specified in section 2.2.13.
	Use SIDNameUse `idl:"name:Use" json:"use"`
	// Name:  Contains the name of the security principal. The RPC_UNICODE_STRING structure
	// is defined in [MS-DTYP] section 2.3.10.
	Name *dtyp.UnicodeString `idl:"name:Name" json:"name"`
	// DomainIndex:  Contains the index into the corresponding LSAPR_REFERENCED_DOMAIN_LIST
	// structure that specifies the domain that the security principal is in. A DomainIndex
	// value of -1 MUST be used to specify that there are no corresponding domains. Other
	// negative values MUST NOT be used.
	DomainIndex int32 `idl:"name:DomainIndex" json:"domain_index"`
	// Flags:  Contains bitmapped values that define the properties of this translation.
	// The value MUST be the logical OR of zero or more of the following flags. These flags
	// communicate the following additional information about how the SID was resolved.
	//
	//	+------------+----------------------------------------------------------------------------------+
	//	|            |                                                                                  |
	//	|   VALUE    |                                     MEANING                                      |
	//	|            |                                                                                  |
	//	+------------+----------------------------------------------------------------------------------+
	//	+------------+----------------------------------------------------------------------------------+
	//	| 0x00000001 | The SID was not found by matching against the security principal SID property.   |
	//	+------------+----------------------------------------------------------------------------------+
	//	| 0x00000002 | The SID might be found by traversing a forest trust.                             |
	//	+------------+----------------------------------------------------------------------------------+
	//	| 0x00000004 | The SID was found by matching against the last database view, defined in section |
	//	|            | 3.1.1.1.1.                                                                       |
	//	+------------+----------------------------------------------------------------------------------+
	Flags uint32 `idl:"name:Flags" json:"flags"`
}

TranslatedNameEx structure represents LSAPR_TRANSLATED_NAME_EX RPC structure.

The LSAPR_TRANSLATED_NAME_EX structure contains information about a security principal along with the human-readable identifier for that security principal. This structure MUST always be accompanied by an LSAPR_REFERENCED_DOMAIN_LIST structure when DomainIndex is not -1, which contains the domain information for the security principals.

func (*TranslatedNameEx) MarshalNDR

func (o *TranslatedNameEx) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*TranslatedNameEx) UnmarshalNDR

func (o *TranslatedNameEx) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type TranslatedNames

type TranslatedNames struct {
	// Entries:  Contains the number of translated names.<10>
	Entries uint32 `idl:"name:Entries" json:"entries"`
	// Names:  Contains a set of translated names, as specified in section 2.2.19. If the
	// Entries field in this structure is not 0, this field MUST be non-NULL. If Entries
	// is 0, this field MUST be ignored.
	Names []*TranslatedName `idl:"name:Names;size_is:(Entries)" json:"names"`
}

TranslatedNames structure represents LSAPR_TRANSLATED_NAMES RPC structure.

The LSAPR_TRANSLATED_NAMES structure defines a set of translated names. This is used in the response to a translation request from SIDs to names.

func (*TranslatedNames) MarshalNDR

func (o *TranslatedNames) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*TranslatedNames) UnmarshalNDR

func (o *TranslatedNames) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type TranslatedNamesEx

type TranslatedNamesEx struct {
	// Entries:  Contains the number of translated names.<12>
	Entries uint32 `idl:"name:Entries" json:"entries"`
	// Names:  Contains a set of structures that contain translated names, as specified
	// in section 2.2.21. If the Entries field in this structure is not 0, this field MUST
	// be non-NULL. If Entries is 0, this field MUST be ignored.
	Names []*TranslatedNameEx `idl:"name:Names;size_is:(Entries)" json:"names"`
}

TranslatedNamesEx structure represents LSAPR_TRANSLATED_NAMES_EX RPC structure.

The LSAPR_TRANSLATED_NAMES_EX structure contains a set of translated names.

func (*TranslatedNamesEx) MarshalNDR

func (o *TranslatedNamesEx) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*TranslatedNamesEx) UnmarshalNDR

func (o *TranslatedNamesEx) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type TranslatedSID

type TranslatedSID struct {
	// Use:  Defines the type of the security principal, as specified in section 2.2.13.
	Use SIDNameUse `idl:"name:Use" json:"use"`
	// RelativeId:  Contains the relative identifier (RID) of the security principal with
	// respect to its domain.
	RelativeID uint32 `idl:"name:RelativeId" json:"relative_id"`
	// DomainIndex:  Contains the index into an LSAPR_REFERENCED_DOMAIN_LIST structure that
	// specifies the domain that the security principal is in. A DomainIndex value of -1
	// MUST be used to specify that there are no corresponding domains. Other negative values
	// MUST NOT be returned.
	DomainIndex int32 `idl:"name:DomainIndex" json:"domain_index"`
}

TranslatedSID structure represents LSA_TRANSLATED_SID RPC structure.

The LSA_TRANSLATED_SID structure contains information about a security principal after translation from a name to a SID. This structure MUST always be accompanied by an LSAPR_REFERENCED_DOMAIN_LIST structure when DomainIndex is not -1.

func (*TranslatedSID) MarshalNDR

func (o *TranslatedSID) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*TranslatedSID) UnmarshalNDR

func (o *TranslatedSID) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type TranslatedSIDEx

type TranslatedSIDEx struct {
	// Use:  Defines the type of the security principal, as specified in section 2.2.13.
	Use SIDNameUse `idl:"name:Use" json:"use"`
	// RelativeId:  Contains the relative identifier (RID) of the security principal with
	// respect to its domain.
	RelativeID uint32 `idl:"name:RelativeId" json:"relative_id"`
	// DomainIndex:  Contains the index into the corresponding LSAPR_REFERENCED_DOMAIN_LIST
	// structure that specifies the domain that the security principal is in. A DomainIndex
	// value of -1 MUST be used to specify that there are no corresponding domains. Other
	// negative values MUST NOT be used.
	DomainIndex int32 `idl:"name:DomainIndex" json:"domain_index"`
	// Flags:  Contains bitmapped values that define the properties of this translation.
	// The value MUST be the logical OR of zero or more of the following flags. These flags
	// communicate additional information on how the name was resolved.
	//
	//	+------------+----------------------------------------------------------------------------------+
	//	|            |                                                                                  |
	//	|   VALUE    |                                     MEANING                                      |
	//	|            |                                                                                  |
	//	+------------+----------------------------------------------------------------------------------+
	//	+------------+----------------------------------------------------------------------------------+
	//	| 0x00000001 | The name was not found by matching against the Security Principal Name property. |
	//	+------------+----------------------------------------------------------------------------------+
	//	| 0x00000002 | The name might be found by traversing a forest trust.                            |
	//	+------------+----------------------------------------------------------------------------------+
	//	| 0x00000004 | The name was found by matching against the last database view, as defined in     |
	//	|            | section 3.1.1.1.1.                                                               |
	//	+------------+----------------------------------------------------------------------------------+
	Flags uint32 `idl:"name:Flags" json:"flags"`
}

TranslatedSIDEx structure represents LSAPR_TRANSLATED_SID_EX RPC structure.

The LSAPR_TRANSLATED_SID_EX structure contains information about a security principal after it has been translated into a SID. This structure MUST always be accompanied by an LSAPR_REFERENCED_DOMAIN_LIST structure when DomainIndex is not -1, which contains the domain information for the security principal.

This structure differs from LSA_TRANSLATED_SID only in that a new Flags field is added.

func (*TranslatedSIDEx) MarshalNDR

func (o *TranslatedSIDEx) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*TranslatedSIDEx) UnmarshalNDR

func (o *TranslatedSIDEx) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type TranslatedSIDEx2

type TranslatedSIDEx2 struct {
	// Use:  Defines the type of the security principal, as specified in section 2.2.13.
	Use SIDNameUse `idl:"name:Use" json:"use"`
	// Sid:  Contains the SID ([MS-DTYP] section 2.4.2.3) of the security principal. This
	// field MUST be treated as a [ref] pointer and hence MUST be non-NULL.
	SID *dtyp.SID `idl:"name:Sid" json:"sid"`
	// DomainIndex:  Contains the index into an LSAPR_REFERENCED_DOMAIN_LIST structure that
	// specifies the domain that the security principal is in. A DomainIndex value of -1
	// MUST be used to specify that there are no corresponding domains. Other negative values
	// MUST NOT be used.
	DomainIndex int32 `idl:"name:DomainIndex" json:"domain_index"`
	// Flags:  Contains bitmapped values that define the properties of this translation.
	// The value MUST be the logical OR of zero or more of the following flags. These flags
	// communicate additional information on how the name was resolved.
	//
	//	+------------+----------------------------------------------------------------------------------+
	//	|            |                                                                                  |
	//	|   VALUE    |                                     MEANING                                      |
	//	|            |                                                                                  |
	//	+------------+----------------------------------------------------------------------------------+
	//	+------------+----------------------------------------------------------------------------------+
	//	| 0x00000001 | The name was not found by matching against the Security Principal Name property. |
	//	+------------+----------------------------------------------------------------------------------+
	//	| 0x00000002 | The name might be found by traversing a forest trust.                            |
	//	+------------+----------------------------------------------------------------------------------+
	//	| 0x00000004 | The name was found by matching against the last database view (see section       |
	//	|            | 3.1.1.1.1).                                                                      |
	//	+------------+----------------------------------------------------------------------------------+
	Flags uint32 `idl:"name:Flags" json:"flags"`
}

TranslatedSIDEx2 structure represents LSAPR_TRANSLATED_SID_EX2 RPC structure.

The LSAPR_TRANSLATED_SID_EX2 structure contains information about a security principal after it has been translated into a SID. This structure MUST always be accompanied by an LSAPR_REFERENCED_DOMAIN_LIST structure when DomainIndex is not -1.

This structure differs from LSAPR_TRANSLATED_SID_EX only in that a SID is returned instead of a RID.

func (*TranslatedSIDEx2) MarshalNDR

func (o *TranslatedSIDEx2) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*TranslatedSIDEx2) UnmarshalNDR

func (o *TranslatedSIDEx2) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type TranslatedSIDs

type TranslatedSIDs struct {
	// Entries:  Contains the number of translated SIDs.<7>
	Entries uint32 `idl:"name:Entries" json:"entries"`
	// Sids:  Contains a set of structures that contain translated SIDs. If the Entries
	// field in this structure is not 0, this field MUST be non-NULL. If Entries is 0, this
	// field MUST be NULL.
	SIDs []*TranslatedSID `idl:"name:Sids;size_is:(Entries)" json:"sids"`
}

TranslatedSIDs structure represents LSAPR_TRANSLATED_SIDS RPC structure.

The LSAPR_TRANSLATED_SIDS structure defines a set of translated SIDs.

func (*TranslatedSIDs) MarshalNDR

func (o *TranslatedSIDs) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*TranslatedSIDs) UnmarshalNDR

func (o *TranslatedSIDs) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type TranslatedSIDsEx

type TranslatedSIDsEx struct {
	// Entries:  Contains the number of translated SIDs.<14>
	Entries uint32 `idl:"name:Entries" json:"entries"`
	// Sids:  Contains a set of structures that contain translated SIDs, as specified in
	// section 2.2.23. If the Entries field in this structure is not 0, this field MUST
	// be non-NULL. If Entries is 0, this field MUST be NULL.
	SIDs []*TranslatedSIDEx `idl:"name:Sids;size_is:(Entries)" json:"sids"`
}

TranslatedSIDsEx structure represents LSAPR_TRANSLATED_SIDS_EX RPC structure.

The LSAPR_TRANSLATED_SIDS_EX structure contains a set of translated SIDs.

func (*TranslatedSIDsEx) MarshalNDR

func (o *TranslatedSIDsEx) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*TranslatedSIDsEx) UnmarshalNDR

func (o *TranslatedSIDsEx) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type TranslatedSIDsEx2

type TranslatedSIDsEx2 struct {
	// Entries:  Contains the number of translated SIDs.<16>
	Entries uint32 `idl:"name:Entries" json:"entries"`
	// Sids:  Contains a set of structures that define translated SIDs, as specified in
	// section 2.2.25. If the Entries field in this structure is not 0, this field MUST
	// be non-NULL. If Entries is 0, this field MUST be NULL.
	SIDs []*TranslatedSIDEx2 `idl:"name:Sids;size_is:(Entries)" json:"sids"`
}

TranslatedSIDsEx2 structure represents LSAPR_TRANSLATED_SIDS_EX2 RPC structure.

The LSAPR_TRANSLATED_SIDS_EX2 structure contains a set of translated SIDs.

func (*TranslatedSIDsEx2) MarshalNDR

func (o *TranslatedSIDsEx2) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*TranslatedSIDsEx2) UnmarshalNDR

func (o *TranslatedSIDsEx2) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type TrustInformation

type TrustInformation struct {
	Name *dtyp.UnicodeString `idl:"name:Name" json:"name"`
	SID  *dtyp.SID           `idl:"name:Sid" json:"sid"`
}

TrustInformation structure represents LSAPR_TRUST_INFORMATION RPC structure.

The LSAPR_TRUST_INFORMATION structure contains information about a domain.

Individual member semantics are specified in [MS-LSAD] section 2.2.7.1.

func (*TrustInformation) MarshalNDR

func (o *TrustInformation) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*TrustInformation) UnmarshalNDR

func (o *TrustInformation) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL