Source File
sid.go
Belonging Package
github.com/jcmturner/rpc/v2/mstypes
package mstypes
import (
)
// RPCSID implements https://msdn.microsoft.com/en-us/library/cc230364.aspx
type RPCSID struct {
Revision uint8 // An 8-bit unsigned integer that specifies the revision level of the SID. This value MUST be set to 0x01.
SubAuthorityCount uint8 // An 8-bit unsigned integer that specifies the number of elements in the SubAuthority array. The maximum number of elements allowed is 15.
IdentifierAuthority [6]byte // An RPC_SID_IDENTIFIER_AUTHORITY structure that indicates the authority under which the SID was created. It describes the entity that created the SID. The Identifier Authority value {0,0,0,0,0,5} denotes SIDs created by the NT SID authority.
SubAuthority []uint32 `ndr:"conformant"` // A variable length array of unsigned 32-bit integers that uniquely identifies a principal relative to the IdentifierAuthority. Its length is determined by SubAuthorityCount.
}
// String returns the string representation of the RPC_SID.
func ( *RPCSID) () string {
var strings.Builder
.WriteString("S-1-")
:= append(make([]byte, 2, 2), .IdentifierAuthority[:]...)
// For a strange reason this is read big endian: https://msdn.microsoft.com/en-us/library/dd302645.aspx
:= binary.BigEndian.Uint64()
if > math.MaxUint32 {
fmt.Fprintf(&, "0x%s", hex.EncodeToString(.IdentifierAuthority[:]))
} else {
fmt.Fprintf(&, "%d", )
}
for , := range .SubAuthority {
fmt.Fprintf(&, "-%d", )
}
return .String()
}
![]() |
The pages are generated with Golds v0.6.7. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |