Documentation
¶
Overview ¶
Package types provides Kerberos 5 data types.
Index ¶
- func GetPAEncTSEncAsnMarshalled() ([]byte, error)
- func HostAddressesContains(h []HostAddress, a HostAddress) bool
- func HostAddressesEqual(h, a []HostAddress) bool
- func IsFlagSet(f *asn1.BitString, i int) bool
- func NewKrbFlags() asn1.BitString
- func SetFlag(f *asn1.BitString, i int)
- func SetFlags(f *asn1.BitString, j []int)
- func UnsetFlag(f *asn1.BitString, i int)
- func UnsetFlags(f *asn1.BitString, j []int)
- type ADAndOr
- type ADIfRelevant
- type ADKDCIssued
- type ADMandatoryForKDC
- type Authenticator
- type AuthorizationData
- type AuthorizationDataEntry
- type Checksum
- type ETypeInfo
- type ETypeInfo2
- type ETypeInfo2Entry
- type ETypeInfoEntry
- type EncryptedData
- type EncryptionKey
- type HostAddress
- type HostAddresses
- type MethodData
- type PAData
- type PADataSequence
- type PAEncTSEnc
- type PAEncTimestamp
- type PAReqEncPARep
- type PrincipalName
- type TypedData
- type TypedDataSequence
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetPAEncTSEncAsnMarshalled ¶
GetPAEncTSEncAsnMarshalled returns the bytes of a PAEncTSEnc.
func HostAddressesContains ¶
func HostAddressesContains(h []HostAddress, a HostAddress) bool
HostAddressesContains tests if a HostAddress is contained in a HostAddress slice.
func HostAddressesEqual ¶
func HostAddressesEqual(h, a []HostAddress) bool
HostAddressesEqual tests if two HostAddress slices are equal.
func NewKrbFlags ¶
NewKrbFlags returns an ASN1 BitString struct of the right size for KrbFlags.
func UnsetFlags ¶
UnsetFlags unsets flags in an ASN1 BitString.
Types ¶
type ADAndOr ¶
type ADAndOr struct {
ConditionCount int32 `asn1:"explicit,tag:0"`
Elements AuthorizationData `asn1:"explicit,tag:1"`
}
ADAndOr implements RFC 4120 type: https://tools.ietf.org/html/rfc4120#section-5.2.6.3
type ADIfRelevant ¶
type ADIfRelevant AuthorizationData
ADIfRelevant implements RFC 4120 type: https://tools.ietf.org/html/rfc4120#section-5.2.6.1
type ADKDCIssued ¶
type ADKDCIssued struct {
ADChecksum Checksum `asn1:"explicit,tag:0"`
IRealm string `asn1:"optional,generalstring,explicit,tag:1"`
Isname PrincipalName `asn1:"optional,explicit,tag:2"`
Elements AuthorizationData `asn1:"explicit,tag:3"`
}
ADKDCIssued implements RFC 4120 type: https://tools.ietf.org/html/rfc4120#section-5.2.6.2
func (*ADKDCIssued) Unmarshal ¶
func (a *ADKDCIssued) Unmarshal(b []byte) error
Unmarshal bytes into the ADKDCIssued.
type ADMandatoryForKDC ¶
type ADMandatoryForKDC AuthorizationData
ADMandatoryForKDC implements RFC 4120 type: https://tools.ietf.org/html/rfc4120#section-5.2.6.4
type Authenticator ¶
type Authenticator struct {
AVNO int `asn1:"explicit,tag:0"`
CRealm string `asn1:"generalstring,explicit,tag:1"`
CName PrincipalName `asn1:"explicit,tag:2"`
Cksum Checksum `asn1:"explicit,optional,tag:3"`
Cusec int `asn1:"explicit,tag:4"`
CTime time.Time `asn1:"generalized,explicit,tag:5"`
SubKey EncryptionKey `asn1:"explicit,optional,tag:6"`
SeqNumber int64 `asn1:"explicit,optional,tag:7"`
AuthorizationData AuthorizationData `asn1:"explicit,optional,tag:8"`
}
Authenticator - A record containing information that can be shown to have been recently generated using the session key known only by the client and server. https://tools.ietf.org/html/rfc4120#section-5.5.1
func NewAuthenticator ¶
func NewAuthenticator(realm string, cname PrincipalName) (Authenticator, error)
NewAuthenticator creates a new Authenticator.
func (*Authenticator) GenerateSeqNumberAndSubKey ¶
func (a *Authenticator) GenerateSeqNumberAndSubKey(keyType int32, keySize int) error
GenerateSeqNumberAndSubKey sets the Authenticator's sequence number and subkey.
func (*Authenticator) Marshal ¶
func (a *Authenticator) Marshal() ([]byte, error)
Marshal the Authenticator.
func (*Authenticator) Unmarshal ¶
func (a *Authenticator) Unmarshal(b []byte) error
Unmarshal bytes into the Authenticator.
type AuthorizationData ¶
type AuthorizationData []AuthorizationDataEntry
AuthorizationData implements RFC 4120 type: https://tools.ietf.org/html/rfc4120#section-5.2.6
func (*AuthorizationData) Unmarshal ¶
func (a *AuthorizationData) Unmarshal(b []byte) error
Unmarshal bytes into the AuthorizationData.
type AuthorizationDataEntry ¶
type AuthorizationDataEntry struct {
ADType int32 `asn1:"explicit,tag:0"`
ADData []byte `asn1:"explicit,tag:1"`
}
AuthorizationDataEntry implements RFC 4120 type: https://tools.ietf.org/html/rfc4120#section-5.2.6
func (*AuthorizationDataEntry) Unmarshal ¶
func (a *AuthorizationDataEntry) Unmarshal(b []byte) error
Unmarshal bytes into the AuthorizationDataEntry.
type Checksum ¶
type Checksum struct {
CksumType int32 `asn1:"explicit,tag:0"`
Checksum []byte `asn1:"explicit,tag:1"`
}
Checksum implements RFC 4120 type: https://tools.ietf.org/html/rfc4120#section-5.2.9
type ETypeInfo ¶
type ETypeInfo []ETypeInfoEntry
ETypeInfo implements RFC 4120 types: https://tools.ietf.org/html/rfc4120#section-5.2.7.4
type ETypeInfo2 ¶
type ETypeInfo2 []ETypeInfo2Entry
ETypeInfo2 implements RFC 4120 types: https://tools.ietf.org/html/rfc4120#section-5.2.7.5
func (*ETypeInfo2) Unmarshal ¶
func (a *ETypeInfo2) Unmarshal(b []byte) error
Unmarshal bytes into the ETypeInfo2
type ETypeInfo2Entry ¶
type ETypeInfo2Entry struct {
EType int32 `asn1:"explicit,tag:0"`
Salt string `asn1:"explicit,optional,generalstring,tag:1"`
S2KParams []byte `asn1:"explicit,optional,tag:2"`
}
ETypeInfo2Entry implements RFC 4120 types: https://tools.ietf.org/html/rfc4120#section-5.2.7.5
func (*ETypeInfo2Entry) Unmarshal ¶
func (a *ETypeInfo2Entry) Unmarshal(b []byte) error
Unmarshal bytes into the ETypeInfo2Entry
type ETypeInfoEntry ¶
type ETypeInfoEntry struct {
EType int32 `asn1:"explicit,tag:0"`
Salt []byte `asn1:"explicit,optional,tag:1"`
}
ETypeInfoEntry implements RFC 4120 types: https://tools.ietf.org/html/rfc4120#section-5.2.7.4
func (*ETypeInfoEntry) Unmarshal ¶
func (a *ETypeInfoEntry) Unmarshal(b []byte) error
Unmarshal bytes into the ETypeInfoEntry
type EncryptedData ¶
type EncryptedData struct {
EType int32 `asn1:"explicit,tag:0"`
KVNO int `asn1:"explicit,optional,tag:1"`
Cipher []byte `asn1:"explicit,tag:2"`
}
EncryptedData implements RFC 4120 type: https://tools.ietf.org/html/rfc4120#section-5.2.9
func (*EncryptedData) Marshal ¶
func (a *EncryptedData) Marshal() ([]byte, error)
Marshal the EncryptedData.
func (*EncryptedData) Unmarshal ¶
func (a *EncryptedData) Unmarshal(b []byte) error
Unmarshal bytes into the EncryptedData.
type EncryptionKey ¶
type EncryptionKey struct {
KeyType int32 `asn1:"explicit,tag:0"`
KeyValue []byte `asn1:"explicit,tag:1"`
}
EncryptionKey implements RFC 4120 type: https://tools.ietf.org/html/rfc4120#section-5.2.9 AKA KeyBlock
func (*EncryptionKey) Unmarshal ¶
func (a *EncryptionKey) Unmarshal(b []byte) error
Unmarshal bytes into the EncryptionKey.
type HostAddress ¶
type HostAddress struct {
AddrType int32 `asn1:"explicit,tag:0"`
Address []byte `asn1:"explicit,tag:1"`
}
HostAddress implements RFC 4120 type: https://tools.ietf.org/html/rfc4120#section-5.2.5
func GetHostAddress ¶
func GetHostAddress(s string) (HostAddress, error)
GetHostAddress returns a HostAddress struct from a string in the format <hostname>:<port>
func HostAddressFromNetIP ¶
func HostAddressFromNetIP(ip net.IP) HostAddress
HostAddressFromNetIP returns a HostAddress type from a net.IP
func (*HostAddress) Equal ¶
func (h *HostAddress) Equal(a HostAddress) bool
Equal tests if the HostAddress is equal to another HostAddress provided.
func (*HostAddress) GetAddress ¶
func (h *HostAddress) GetAddress() (string, error)
GetAddress returns a string representation of the HostAddress.
type HostAddresses ¶
type HostAddresses []HostAddress
HostAddresses implements RFC 4120 type: https://tools.ietf.org/html/rfc4120#section-5.2.5
func HostAddressesFromNetIPs ¶
func HostAddressesFromNetIPs(ips []net.IP) (ha HostAddresses)
HostAddressesFromNetIPs returns a HostAddresses type from a slice of net.IP
func LocalHostAddresses ¶
func LocalHostAddresses() (ha HostAddresses, err error)
LocalHostAddresses returns a HostAddresses struct for the local machines interface IP addresses.
func (*HostAddresses) Contains ¶
func (h *HostAddresses) Contains(a HostAddress) bool
Contains tests if a HostAddress is contained within the HostAddresses struct.
func (*HostAddresses) Equal ¶
func (h *HostAddresses) Equal(a []HostAddress) bool
Equal tests if a HostAddress slice is equal to the HostAddresses struct.
type MethodData ¶
type MethodData []PAData
MethodData implements RFC 4120 types: https://tools.ietf.org/html/rfc4120#section-5.9.1
type PAData ¶
type PAData struct {
PADataType int32 `asn1:"explicit,tag:1"`
PADataValue []byte `asn1:"explicit,tag:2"`
}
PAData implements RFC 4120 types: https://tools.ietf.org/html/rfc4120#section-5.2.7
func (*PAData) GetETypeInfo ¶
GetETypeInfo returns an ETypeInfo from the PAData.
func (*PAData) GetETypeInfo2 ¶
func (pa *PAData) GetETypeInfo2() (d ETypeInfo2, err error)
GetETypeInfo2 returns an ETypeInfo2 from the PAData.
type PADataSequence ¶
type PADataSequence []PAData
PADataSequence implements RFC 4120 types: https://tools.ietf.org/html/rfc4120#section-5.2.7
func (*PADataSequence) Contains ¶
func (pas *PADataSequence) Contains(patype int32) bool
Contains tests if a PADataSequence contains PA Data of a certain type.
func (*PADataSequence) Unmarshal ¶
func (pas *PADataSequence) Unmarshal(b []byte) error
Unmarshal bytes into the PADataSequence
type PAEncTSEnc ¶
type PAEncTSEnc struct {
PATimestamp time.Time `asn1:"generalized,explicit,tag:0"`
PAUSec int `asn1:"explicit,optional,tag:1"`
}
PAEncTSEnc implements RFC 4120 types: https://tools.ietf.org/html/rfc4120#section-5.2.7.2
func (*PAEncTSEnc) Unmarshal ¶
func (pa *PAEncTSEnc) Unmarshal(b []byte) error
Unmarshal bytes into the PAEncTSEnc
type PAEncTimestamp ¶
type PAEncTimestamp EncryptedData
PAEncTimestamp implements RFC 4120 types: https://tools.ietf.org/html/rfc4120#section-5.2.7.2
func (*PAEncTimestamp) Unmarshal ¶
func (pa *PAEncTimestamp) Unmarshal(b []byte) error
Unmarshal bytes into the PAEncTimestamp
type PAReqEncPARep ¶
type PAReqEncPARep struct {
ChksumType int32 `asn1:"explicit,tag:0"`
Chksum []byte `asn1:"explicit,tag:1"`
}
PAReqEncPARep PA Data Type
func (*PAReqEncPARep) Unmarshal ¶
func (pa *PAReqEncPARep) Unmarshal(b []byte) error
Unmarshal bytes into the PAReqEncPARep
type PrincipalName ¶
type PrincipalName struct {
NameType int32 `asn1:"explicit,tag:0"`
NameString []string `asn1:"generalstring,explicit,tag:1"`
}
PrincipalName implements RFC 4120 type: https://tools.ietf.org/html/rfc4120#section-5.2.2
func NewPrincipalName ¶
func NewPrincipalName(ntype int32, spn string) PrincipalName
NewPrincipalName creates a new PrincipalName from the name type int32 and name string provided.
func ParseSPNString ¶
func ParseSPNString(spn string) (pn PrincipalName, realm string)
ParseSPNString will parse a string in the format <service>/<name>@<realm> a PrincipalName type will be returned with the name type set to KRB_NT_PRINCIPAL(1) and the realm will be returned as a string. If the "@<realm>" suffix is not included in the SPN then the value of realm string returned will be ""
func (PrincipalName) Equal ¶
func (pn PrincipalName) Equal(n PrincipalName) bool
Equal tests if the PrincipalName is equal to the one provided.
func (PrincipalName) GetSalt ¶
func (pn PrincipalName) GetSalt(realm string) string
GetSalt returns a salt derived from the PrincipalName.
func (PrincipalName) PrincipalNameString ¶
func (pn PrincipalName) PrincipalNameString() string
PrincipalNameString returns the PrincipalName in string form.
type TypedData ¶
type TypedData struct {
DataType int32 `asn1:"explicit,tag:0"`
DataValue []byte `asn1:"optional,explicit,tag:1"`
}
TypedData implements RFC 4120 type: https://tools.ietf.org/html/rfc4120#section-5.9.1
type TypedDataSequence ¶
type TypedDataSequence []TypedData
TypedDataSequence implements RFC 4120 type: https://tools.ietf.org/html/rfc4120#section-5.9.1
func (*TypedDataSequence) Unmarshal ¶
func (a *TypedDataSequence) Unmarshal(b []byte) error
Unmarshal bytes into the TypedDataSequence.