-
Notifications
You must be signed in to change notification settings - Fork 11
/
gen-link-specifier.go
52 lines (45 loc) · 1.51 KB
/
gen-link-specifier.go
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// Code generated by etc/enum/makeenum.py. DO NOT EDIT
package pearl
import "fmt"
// LinkSpecType describes how to connect to the next node in a circuit.
type LinkSpecType byte
// All possible LinkSpecType values.
//
// Reference: https://github.com/torproject/torspec/blob/8aaa36d1a062b20ca263b6ac613b77a3ba1eb113/tor-spec.txt#L954-L964
//
// Link specifiers describe the next node in the circuit and how to
// connect to it. Recognized specifiers are:
// [00] TLS-over-TCP, IPv4 address
// A four-byte IPv4 address plus two-byte ORPort
// [01] TLS-over-TCP, IPv6 address
// A sixteen-byte IPv6 address plus two-byte ORPort
// [02] Legacy identity
// A 20-byte SHA1 identity fingerprint. At most one may be listed.
// [03] Ed25519 identity
// A 32-byte Ed25519 identity fingerprint. At most one may
// be listed.
//
const (
LinkSpecTLSTCPIPv4 LinkSpecType = 0
LinkSpecTLSTCPIPv6 LinkSpecType = 1
LinkSpecLegacyIdentity LinkSpecType = 2
LinkSpecEd25519Identity LinkSpecType = 3
)
var stringsLinkSpecType = map[LinkSpecType]string{
0: "TLS_TCP_IPv4",
1: "TLS_TCP_IPv6",
2: "LEGACY_IDENTITY",
3: "ED25519_IDENTITY",
}
func (l LinkSpecType) String() string {
s, ok := stringsLinkSpecType[l]
if ok {
return s
}
return fmt.Sprintf("LinkSpecType(%d)", byte(l))
}
// IsLinkSpecType determines whether l is a possible LinkSpecType value.
func IsLinkSpecType(l byte) bool {
_, ok := stringsLinkSpecType[LinkSpecType(l)]
return ok
}