From fb57ad79f540b70de7d6dda14f28944f8b4805c0 Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Tue, 17 Sep 2024 16:25:51 +0100 Subject: [PATCH] add protocol field encoder --- common/messages/client.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/common/messages/client.go b/common/messages/client.go index da6359e..9e7a235 100644 --- a/common/messages/client.go +++ b/common/messages/client.go @@ -5,6 +5,7 @@ package messages import ( "bytes" + "encoding/base64" "encoding/json" "fmt" "gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/v2/common/bridgefingerprint" @@ -149,3 +150,31 @@ func DecodeClientPollResponse(data []byte) (*ClientPollResponse, error) { return &message, nil } + +type ClientConnectionMetadata struct { + ClientID string `json:"client_id"` +} + +func (meta *ClientConnectionMetadata) EncodeConnectionMetadata() (string, error) { + jsonData, err := json.Marshal(meta) + if err != nil { + return "", err + } + + return base64.RawURLEncoding.EncodeToString(jsonData), nil +} + +func DecodeConnectionMetadata(data string) (*ClientConnectionMetadata, error) { + decodedData, err := base64.RawURLEncoding.DecodeString(data) + if err != nil { + return nil, err + } + + var meta ClientConnectionMetadata + err = json.Unmarshal(decodedData, &meta) + if err != nil { + return nil, err + } + + return &meta, nil +}