lsarpc

package
v1.2.3 Latest Latest
Warning

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

Go to latest
Published: Mar 7, 2025 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

	// Conn returns the client connection (unsafe)
	Conn() dcerpc.Conn
}

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

type UnimplementedLsarpcServer added in v1.1.5

type UnimplementedLsarpcServer struct {
}

Unimplemented lsarpc

func (UnimplementedLsarpcServer) Close added in v1.1.5

func (UnimplementedLsarpcServer) GetUserName added in v1.1.5

func (UnimplementedLsarpcServer) LookupNames added in v1.1.5

func (UnimplementedLsarpcServer) LookupNames2 added in v1.1.5

func (UnimplementedLsarpcServer) LookupNames3 added in v1.1.5

func (UnimplementedLsarpcServer) LookupNames4 added in v1.1.5

func (UnimplementedLsarpcServer) LookupSIDs added in v1.1.5

func (UnimplementedLsarpcServer) LookupSids2 added in v1.1.5

func (UnimplementedLsarpcServer) LookupSids3 added in v1.1.5

func (UnimplementedLsarpcServer) OpenPolicy added in v1.1.5

func (UnimplementedLsarpcServer) OpenPolicy2 added in v1.1.5

Jump to

Keyboard shortcuts

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