增加对 mojang 签名的单元测试

This commit is contained in:
xmdhs 2023-09-16 00:11:36 +08:00
parent 59252ee21e
commit 0885168ebe
No known key found for this signature in database
GPG Key ID: E809D6D43DEFCC95

View File

@ -9,6 +9,7 @@ import (
"encoding/base64" "encoding/base64"
"encoding/pem" "encoding/pem"
"fmt" "fmt"
"os"
"testing" "testing"
"github.com/samber/lo" "github.com/samber/lo"
@ -78,3 +79,21 @@ func TestAuthlibNew(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
} }
func TestMojangSign(t *testing.T) {
b, err := os.ReadFile("../../service/yggdrasil/yggdrasil_session_pubkey.der")
if err != nil {
t.Fatal(err)
}
pub := lo.Must(x509.ParsePKIXPublicKey(b)).(*rsa.PublicKey)
const value = "ewogICJ0aW1lc3RhbXAiIDogMTY5NDc5NDE2NzU3NSwKICAicHJvZmlsZUlkIiA6ICI5ZjUxNTczYTVlYzU0NTgyOGMyYjA5ZjdmMDg0OTdiMSIsCiAgInByb2ZpbGVOYW1lIiA6ICJ4bWRocyIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9iNDc4YmQxY2FlODJhNGQwN2M4NWU4Y2FjYTc3NTA3MWQ5ZjYxZWYyYTkzNDQzOWU2NTFhZTcwYzAzZDBmMTVkIgogICAgfSwKICAgICJDQVBFIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8yMzQwYzBlMDNkZDI0YTExYjE1YThiMzNjMmE3ZTllMzJhYmIyMDUxYjI0ODFkMGJhN2RlZmQ2MzVjYTdhOTMzIgogICAgfQogIH0KfQ=="
const signature = "h1dqL2jie5uRBt1xVOHACsn3YrdOWidSYvXq+eQXJIv9cyQAlns9ASE20sRHaQCL6Gil0nfnyGDaHWbXJ3Vi9+bCyvPNRgFFKLgNDfcWEgEhPducWH30Pl3zDyAXWUZQbT2ecmHDTfkzb1UR3SGEnVxmJpV3++RDjgotRy6bWLE1Hx8U8OZdpTwhZb9Y3m/otPBpYgHl0SQAEGQvr1dn4/SAMM13GNXqynlWzZ2X94I9DvO8oLEn6VtIIgw+0kHKmQfdepgeLMDDOOUaXskGo1liV7efEMTGlTLZrgEzgo/rNsWn1O98Wc+3mjshLPP2PIJqSfGpXvPeE6Z2wCKJdfguQEYNRomP/8gCxEzfXG1eg/XE7FQBEVi6Eoath3aYopTqcDwKL4v0f520JNcPtTfXfIZiYGpJ9JiZFqjL8q51Y4SUIcDN7vX2/OzdPiJ5xI1MEK1AsLDUaSWAzR6ZwjmOoFv0m68U44c5GDnnvt4kN+oWM0jUAzGAU1QXutrGiVee/1jryEgXJVM43x+D9ZYJvWBXDFqoCLY9hLvRKtt3ohv/aQTDFwTLZzhM82kQ74RdqwtRCtrNsCIqjLlwxrQTY8xYWjLWMvYI82x40+Zk4aEmfc6PEp8gwlLV/gTtYlzsR7uJC+lpmN9Is/LiC9bMj4iHjP3Dk4ykwA/s/5k="
hashed := sha1.Sum([]byte(value))
err = rsa.VerifyPKCS1v15(pub, crypto.SHA1, hashed[:], lo.Must(base64.StdEncoding.DecodeString(signature)))
if err != nil {
t.Fatal(err)
}
}