45 lines
1.1 KiB
Go
45 lines
1.1 KiB
Go
package internal
|
|
|
|
// Ref paper:
|
|
// https://www.usenix.org/system/files/sec22fall_xue-diwen.pdf
|
|
|
|
// OpenVPN Opcodes definitions from:
|
|
// https://github.com/OpenVPN/openvpn/blob/master/src/openvpn/ssl_pkt.h
|
|
const (
|
|
OpenVpnControlHardResetClientV1 = 1
|
|
OpenVpnControlHardResetServerV1 = 2
|
|
OpenVpnControlSoftResetV1 = 3
|
|
OpenVpnControlV1 = 4
|
|
OpenVpnAckV1 = 5
|
|
OpenVpnDataV1 = 6
|
|
OpenVpnControlHardResetClientV2 = 7
|
|
OpenVpnControlHardResetServerV2 = 8
|
|
OpenVpnDataV2 = 9
|
|
OpenVpnControlHardResetClientV3 = 10
|
|
OpenVpnControlWkcV1 = 11
|
|
)
|
|
|
|
const (
|
|
OpenVpnMinPktLen = 6
|
|
OpenVpnTcpPktDefaultLimit = 256
|
|
OpenVpnUdpPktDefaultLimit = 256
|
|
)
|
|
|
|
func OpenVpnCheckForValidOpcode(opcode byte) bool {
|
|
switch opcode {
|
|
case OpenVpnControlHardResetClientV1,
|
|
OpenVpnControlHardResetServerV1,
|
|
OpenVpnControlSoftResetV1,
|
|
OpenVpnControlV1,
|
|
OpenVpnAckV1,
|
|
OpenVpnDataV1,
|
|
OpenVpnControlHardResetClientV2,
|
|
OpenVpnControlHardResetServerV2,
|
|
OpenVpnDataV2,
|
|
OpenVpnControlHardResetClientV3,
|
|
OpenVpnControlWkcV1:
|
|
return true
|
|
}
|
|
return false
|
|
}
|