Jonathan Turner 9 лет назад
Родитель
Сommit
3d691cf52c
2 измененных файлов с 41 добавлено и 3 удалено
  1. 32 2
      messages/KDCReq.go
  2. 9 1
      types/Ticket.go

+ 32 - 2
messages/KDCReq.go

@@ -31,7 +31,7 @@ type TGSReq KDCReq
 type marshalKDCReqBody struct {
 	KDCOptions  asn1.BitString      `asn1:"explicit,tag:0"`
 	CName       types.PrincipalName `asn1:"explicit,optional,tag:1"`
-	Realm       string              `asn1:"explicit,tag:2"`
+	Realm       string              `asn1:"ia5,explicit,tag:2"`
 	SName       types.PrincipalName `asn1:"explicit,optional,tag:3"`
 	From        time.Time           `asn1:"explicit,optional,tag:4"`
 	Till        time.Time           `asn1:"explicit,tag:5"`
@@ -47,7 +47,7 @@ type marshalKDCReqBody struct {
 type KDCReqBody struct {
 	KDCOptions        asn1.BitString      `asn1:"explicit,tag:0"`
 	CName             types.PrincipalName `asn1:"explicit,optional,tag:1"`
-	Realm             string              `asn1:"explicit,tag:2"`
+	Realm             string              `asn1:"ia5,explicit,tag:2"`
 	SName             types.PrincipalName `asn1:"explicit,optional,tag:3"`
 	From              time.Time           `asn1:"explicit,optional,tag:4"`
 	Till              time.Time           `asn1:"explicit,tag:5"`
@@ -128,3 +128,33 @@ func (k *KDCReqBody) Unmarshal(b []byte) error {
 	}
 	return nil
 }
+
+func NewASReq() ASReq {
+	return ASReq{
+		PVNO:    5,
+		MsgType: types.KrbDictionary.MsgTypesByName["KRB_AS_REQ"],
+		ReqBody: KDCReqBody{
+			KDCOptions: asn1.BitString{},
+		},
+	}
+}
+
+func (k *ASReq) Marshal() ([]byte, error) {
+
+}
+
+func (k *KDCReqBody) Marshal() ([]byte, error) {
+	m := marshalKDCReqBody{
+		KDCOptions:  k.KDCOptions,
+		CName:       k.CName,
+		Realm:       k.Realm,
+		SName:       k.SName,
+		From:        k.From,
+		Till:        k.Till,
+		RTime:       k.RTime,
+		Nonce:       k.Nonce,
+		EType:       k.EType,
+		Addresses:   k.Addresses,
+		EncAuthData: k.EncAuthData,
+	}
+}

+ 9 - 1
types/Ticket.go

@@ -27,7 +27,7 @@ type EncTicketPart struct {
 	StartTime         time.Time         `asn1:"explicit,optional,tag:6"`
 	EndTime           time.Time         `asn1:"explicit,tag:7"`
 	RenewTill         time.Time         `asn1:"explicit,optional,tag:8"`
-	CAddr             HostAddresses       `asn1:"explicit,optional,tag:9"`
+	CAddr             HostAddresses     `asn1:"explicit,optional,tag:9"`
 	AuthorizationData AuthorizationData `asn1:"explicit,optional,tag:10"`
 }
 
@@ -73,3 +73,11 @@ func UnmarshalSequenceTickets(in asn1.RawValue) ([]Ticket, error) {
 	}
 	return tkts, nil
 }
+
+func MarshalTicketSequence([]Ticket) (asn1.RawValue, error) {
+	raw := asn1.RawValue{
+		Class:      16,
+		IsCompound: true,
+	}
+
+}