package kadmin
import (
"github.com/jcmturner/gokrb5/v8/crypto"
"github.com/jcmturner/gokrb5/v8/krberror"
"github.com/jcmturner/gokrb5/v8/messages"
"github.com/jcmturner/gokrb5/v8/types"
)
func ChangePasswdMsg (cname types .PrincipalName , realm , password string , tkt messages .Ticket , sessionKey types .EncryptionKey ) (r Request , k types .EncryptionKey , err error ) {
chgpasswd := ChangePasswdData {
NewPasswd : []byte (password ),
TargName : cname ,
TargRealm : realm ,
}
chpwdb , err := chgpasswd .Marshal ()
if err != nil {
err = krberror .Errorf (err , krberror .KRBMsgError , "error marshaling change passwd data" )
return
}
auth , err := types .NewAuthenticator (realm , cname )
if err != nil {
err = krberror .Errorf (err , krberror .KRBMsgError , "error generating new authenticator" )
return
}
etype , err := crypto .GetEtype (sessionKey .KeyType )
if err != nil {
err = krberror .Errorf (err , krberror .KRBMsgError , "error generating subkey etype" )
return
}
err = auth .GenerateSeqNumberAndSubKey (etype .GetETypeID (), etype .GetKeyByteSize ())
if err != nil {
err = krberror .Errorf (err , krberror .KRBMsgError , "error generating subkey" )
return
}
k = auth .SubKey
APreq , err := messages .NewAPReq (tkt , sessionKey , auth )
if err != nil {
return
}
kp := messages .EncKrbPrivPart {
UserData : chpwdb ,
Timestamp : auth .CTime ,
Usec : auth .Cusec ,
SequenceNumber : auth .SeqNumber ,
}
kpriv := messages .NewKRBPriv (kp )
err = kpriv .EncryptEncPart (k )
if err != nil {
err = krberror .Errorf (err , krberror .EncryptingError , "error encrypting change passwd data" )
return
}
r = Request {
APREQ : APreq ,
KRBPriv : kpriv ,
}
return
}
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 .