From 56a1a78bd0d98d7f4b17e3fd17fa3f7504ff0ee0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A3=8E=E6=89=87=E6=BB=91=E7=BF=94=E7=BF=BC?= Date: Thu, 13 Feb 2025 09:47:13 +0000 Subject: [PATCH] Reality: Remove unnecessary usage of reflect package --- transport/internet/reality/reality.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/transport/internet/reality/reality.go b/transport/internet/reality/reality.go index 0efcd96e..ed60f7d3 100644 --- a/transport/internet/reality/reality.go +++ b/transport/internet/reality/reality.go @@ -18,12 +18,11 @@ import ( "io" "math/big" "net/http" - "reflect" "regexp" "strings" "sync" "time" - "unsafe" + _ "unsafe" utls "github.com/refraction-networking/utls" "github.com/xtls/reality" @@ -78,8 +77,10 @@ func (c *UConn) HandshakeAddress() net.Address { } func (c *UConn) VerifyPeerCertificate(rawCerts [][]byte, verifiedChains [][]*x509.Certificate) error { - p, _ := reflect.TypeOf(c.Conn).Elem().FieldByName("peerCertificates") - certs := *(*([]*x509.Certificate))(unsafe.Pointer(uintptr(unsafe.Pointer(c.Conn)) + p.Offset)) + certs := make([]*x509.Certificate, len(rawCerts)) + for i, rawCert := range rawCerts { + certs[i], _ = x509.ParseCertificate(rawCert) + } if pub, ok := certs[0].PublicKey.(ed25519.PublicKey); ok { h := hmac.New(sha512.New, c.AuthKey) h.Write(pub)