summaryrefslogtreecommitdiff
path: root/internal/packet
diff options
context:
space:
mode:
authorKyren223 <Kyren223@proton.me>2025-07-05 22:35:34 +0300
committerKyren223 <Kyren223@proton.me>2025-07-05 22:35:34 +0300
commit5f8ab176b62efee8139626a353b7e00f7fa754c3 (patch)
tree1f3e5b71344c5d5fe3d2eb33daad4f499a20ab74 /internal/packet
parent9199959cf46f3f300f08604d0018f47a79c7f02f (diff)
Added new packet types to facilitate TOS acceptance, Authentication and
re-authentication for sensitive information updates
Diffstat (limited to 'internal/packet')
-rw-r--r--internal/packet/packet.go125
-rw-r--r--internal/packet/types.go46
2 files changed, 105 insertions, 66 deletions
diff --git a/internal/packet/packet.go b/internal/packet/packet.go
index d3dcd7e..2285065 100644
--- a/internal/packet/packet.go
+++ b/internal/packet/packet.go
@@ -52,6 +52,14 @@ type PacketType uint8
const (
PacketError PacketType = iota
+ PacketTosInfo
+ PacketAcceptTos
+
+ PacketGetNonce
+ PacketNonceInfo
+
+ PacketAuthenticate
+
PacketSetUserData
PacketGetUserData
@@ -92,7 +100,57 @@ const (
PacketMax
)
-func Init() {
+var packetNames = map[PacketType]string{
+ PacketError: "PacketError",
+
+ PacketTosInfo: "PacketTosInfo",
+ PacketAcceptTos: "PacketAcceptTos",
+
+ PacketGetNonce: "PacketGetNonce",
+ PacketNonceInfo: "PacketNonceInfo",
+
+ PacketAuthenticate: "PacketAuthenticate",
+
+ PacketSetUserData: "PacketSetUserData",
+ PacketGetUserData: "PacketGetUserData",
+
+ PacketCreateNetwork: "PacketCreateNetwork",
+ PacketUpdateNetwork: "PacketUpdateNetwork",
+ PacketTransferNetwork: "PacketTransferNetwork",
+ PacketDeleteNetwork: "PacketDeleteNetwork",
+ PacketNetworksInfo: "PacketNetworksInfo",
+
+ PacketCreateFrequency: "PacketCreateFrequency",
+ PacketUpdateFrequency: "PacketUpdateFrequency",
+ PacketDeleteFrequency: "PacketDeleteFrequency",
+ PacketSwapFrequencies: "PacketSwapFrequencies",
+ PacketFrequenciesInfo: "PacketFrequenciesInfo",
+
+ PacketSendMessage: "PacketSendMessage",
+ PacketEditMessage: "PacketEditMessage",
+ PacketDeleteMessage: "PacketDeleteMessage",
+ PacketRequestMessages: "PacketRequestMessages",
+ PacketMessagesInfo: "PacketMessagesInfo",
+
+ PacketGetBannedMembers: "PacketGetBannedMembers",
+ PacketSetMember: "PacketSetMember",
+ PacketMembersInfo: "PacketMembersInfo",
+
+ PacketTrustUser: "PacketTrustUser",
+ PacketTrustInfo: "PacketTrustInfo",
+
+ PacketSetLastReadMessages: "PacketSetLastReadMessages",
+ PacketNotificationsInfo: "PacketNotificationsInfo",
+
+ PacketBlockUser: "PacketBlockUser",
+ PacketBlockInfo: "PacketBlockInfo",
+
+ PacketGetUsers: "PacketGetUsers",
+ PacketUsersInfo: "PacketUsersInfo",
+}
+
+func init() {
+ assert.Assert(len(packetNames) == int(PacketMax), "packetName length mismatches with PacketMax", "len(packetNames)", len(packetNames), "PacketMax", int(PacketMax))
assert.Assert(PacketMax <= 64, "packet types exceeded allowed limit of 64 types")
}
@@ -101,71 +159,10 @@ func (e PacketType) IsSupported() bool {
}
func (e PacketType) String() string {
- switch e {
- case PacketBlockInfo:
- return "PacketBlockInfo"
- case PacketBlockUser:
- return "PacketBlockUser"
- case PacketCreateFrequency:
- return "PacketCreateFrequency"
- case PacketCreateNetwork:
- return "PacketCreateNetwork"
- case PacketDeleteFrequency:
- return "PacketDeleteFrequency"
- case PacketDeleteMessage:
- return "PacketDeleteMessage"
- case PacketDeleteNetwork:
- return "PacketDeleteNetwork"
- case PacketEditMessage:
- return "PacketEditMessage"
- case PacketError:
- return "PacketError"
- case PacketFrequenciesInfo:
- return "PacketFrequenciesInfo"
- case PacketGetBannedMembers:
- return "PacketGetBannedMembers"
- case PacketGetUserData:
- return "PacketGetUserData"
- case PacketGetUsers:
- return "PacketGetUsers"
- case PacketMax:
- return "PacketMax"
- case PacketMembersInfo:
- return "PacketMembersInfo"
- case PacketMessagesInfo:
- return "PacketMessagesInfo"
- case PacketNetworksInfo:
- return "PacketNetworksInfo"
- case PacketNotificationsInfo:
- return "PacketNotificationsInfo"
- case PacketRequestMessages:
- return "PacketRequestMessages"
- case PacketSendMessage:
- return "PacketSendMessage"
- case PacketSetLastReadMessages:
- return "PacketSetLastReadMessages"
- case PacketSetMember:
- return "PacketSetMember"
- case PacketSetUserData:
- return "PacketSetUserData"
- case PacketSwapFrequencies:
- return "PacketSwapFrequencies"
- case PacketTransferNetwork:
- return "PacketTransferNetwork"
- case PacketTrustInfo:
- return "PacketTrustInfo"
- case PacketTrustUser:
- return "PacketTrustUser"
- case PacketUpdateFrequency:
- return "PacketUpdateFrequency"
- case PacketUpdateNetwork:
- return "PacketUpdateNetwork"
- case PacketUsersInfo:
- return "PacketUsersInfo"
- default:
- assert.Assert(!e.IsSupported(), "missing string for supported packet type", "type", e)
+ if !e.IsSupported() {
return fmt.Sprintf("UnsupportedPacket(%d)", e)
}
+ return packetNames[e]
}
const (
diff --git a/internal/packet/types.go b/internal/packet/types.go
index f251450..156fa5f 100644
--- a/internal/packet/types.go
+++ b/internal/packet/types.go
@@ -193,8 +193,9 @@ func (m *MembersInfo) Type() PacketType {
}
type SetUserData struct {
- Data *string
- User *data.User
+ Data *string
+ User *data.User
+ Nonce []byte // optional
}
func (m *SetUserData) Type() PacketType {
@@ -288,3 +289,44 @@ type UsersInfo struct {
func (m *UsersInfo) Type() PacketType {
return PacketUsersInfo
}
+
+type TosInfo struct {
+ Tos string
+ PrivacyPolicy string
+ Date string // 2025-07-05
+}
+
+func (m *TosInfo) Type() PacketType {
+ return PacketTosInfo
+}
+
+type AcceptTos struct {
+ IAgreeToTheTermsOfServiceAndPrivacyPolicy bool
+}
+
+func (m *AcceptTos) Type() PacketType {
+ return PacketAcceptTos
+}
+
+type GetNonce struct{}
+
+func (m *GetNonce) Type() PacketType {
+ return PacketGetNonce
+}
+
+type NonceInfo struct {
+ Nonce []byte
+}
+
+func (m *NonceInfo) Type() PacketType {
+ return PacketNonceInfo
+}
+
+type Authenticate struct {
+ PubKey ed25519.PublicKey
+ Signature []byte
+}
+
+func (m *Authenticate) Type() PacketType {
+ return PacketAuthenticate
+}