nex-go/test/generate_ticket.go
Daniel López Guimaraes 3b90bdc96b
refactor: Update ServerInterface to EndpointInterface
This requires a lot of refactor but it brings back the option of getting
events when a connection disconnects.
2024-02-11 00:03:05 +00:00

37 lines
1.2 KiB
Go

package main
import (
"crypto/rand"
"github.com/PretendoNetwork/nex-go"
"github.com/PretendoNetwork/nex-go/types"
)
func generateTicket(source *nex.Account, target *nex.Account, sessionKeyLength int) []byte {
sourceKey := nex.DeriveKerberosKey(source.PID, []byte(source.Password))
targetKey := nex.DeriveKerberosKey(target.PID, []byte(target.Password))
sessionKey := make([]byte, sessionKeyLength)
_, err := rand.Read(sessionKey)
if err != nil {
panic(err)
}
ticketInternalData := nex.NewKerberosTicketInternalData(authServer)
serverTime := types.NewDateTime(0).Now()
ticketInternalData.Issued = serverTime
ticketInternalData.SourcePID = source.PID
ticketInternalData.SessionKey = sessionKey
encryptedTicketInternalData, _ := ticketInternalData.Encrypt(targetKey, nex.NewByteStreamOut(authServer.LibraryVersions, authServer.ByteStreamSettings))
ticket := nex.NewKerberosTicket()
ticket.SessionKey = sessionKey
ticket.TargetPID = target.PID
ticket.InternalData = types.NewBuffer(encryptedTicketInternalData)
encryptedTicket, _ := ticket.Encrypt(sourceKey, nex.NewByteStreamOut(authServer.LibraryVersions, authServer.ByteStreamSettings))
return encryptedTicket
}