package sshfx
type InitPacket struct {
Version uint32
Extensions []*ExtensionPair
}
func (p *InitPacket ) MarshalBinary () ([]byte , error ) {
size := 1 + 4
for _ , ext := range p .Extensions {
size += ext .Len ()
}
b := NewBuffer (make ([]byte , 4 , 4 +size ))
b .AppendUint8 (uint8 (PacketTypeInit ))
b .AppendUint32 (p .Version )
for _ , ext := range p .Extensions {
ext .MarshalInto (b )
}
b .PutLength (size )
return b .Bytes (), nil
}
func (p *InitPacket ) UnmarshalBinary (data []byte ) (err error ) {
buf := NewBuffer (data )
*p = InitPacket {
Version : buf .ConsumeUint32 (),
}
for buf .Len () > 0 {
var ext ExtensionPair
if err := ext .UnmarshalFrom (buf ); err != nil {
return err
}
p .Extensions = append (p .Extensions , &ext )
}
return buf .Err
}
type VersionPacket struct {
Version uint32
Extensions []*ExtensionPair
}
func (p *VersionPacket ) MarshalBinary () ([]byte , error ) {
size := 1 + 4
for _ , ext := range p .Extensions {
size += ext .Len ()
}
b := NewBuffer (make ([]byte , 4 , 4 +size ))
b .AppendUint8 (uint8 (PacketTypeVersion ))
b .AppendUint32 (p .Version )
for _ , ext := range p .Extensions {
ext .MarshalInto (b )
}
b .PutLength (size )
return b .Bytes (), nil
}
func (p *VersionPacket ) UnmarshalBinary (data []byte ) (err error ) {
buf := NewBuffer (data )
*p = VersionPacket {
Version : buf .ConsumeUint32 (),
}
for buf .Len () > 0 {
var ext ExtensionPair
if err := ext .UnmarshalFrom (buf ); err != nil {
return err
}
p .Extensions = append (p .Extensions , &ext )
}
return nil
}
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 .