aboutsummaryrefslogtreecommitdiff
path: root/pkg/types/encoding.go
blob: 54a1ac61b4d7c25298734a1c92f0cd02805866d7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package types

import (
	"encoding/binary"
	"fmt"
)

// RFC4251, section 5

func putSSHString(b []byte, str string) int {
	l := len(str)

	i := 0
	binary.BigEndian.PutUint32(b[i:i+4], uint32(l))
	i += 4
	copy(b[i:i+l], str)
	i += l

	return i
}

func getSSHString(b []byte) (*string, error) {
	if len(b) < 4 {
		return nil, fmt.Errorf("types: invalid SSH string")
	}

	l := binary.BigEndian.Uint32(b[:4])
	str := string(b[4 : 4+l])
	return &str, nil

}