This commit is contained in:
Smile Rex
2026-01-21 19:14:25 +03:00
parent 9033264a15
commit ca06471d9e
2 changed files with 47 additions and 0 deletions

6
auth.go Normal file
View File

@@ -0,0 +1,6 @@
package main
type AuthMessage struct {
Type string `json:"type"`
InitData string `json:"initData"`
}

41
telegram.go Normal file
View File

@@ -0,0 +1,41 @@
package main
import (
"crypto/hmac"
"crypto/sha256"
"encoding/hex"
"net/url"
"sort"
"strings"
)
func VerifyTelegramInitData(initData, botToken string) (map[string]string, bool) {
values, _ := url.ParseQuery(initData)
hash := values.Get("hash")
values.Del("hash")
var data []string
for k, v := range values {
data = append(data, k+"="+v[0])
}
sort.Strings(data)
checkString := strings.Join(data, "\n")
secret := sha256.Sum256([]byte(botToken))
h := hmac.New(sha256.New, secret[:])
h.Write([]byte(checkString))
expected := hex.EncodeToString(h.Sum(nil))
return valuesToMap(values), expected == hash
}
func valuesToMap(v url.Values) map[string]string {
m := make(map[string]string)
for k, val := range v {
m[k] = val[0]
}
return m
}