mirror of
https://github.com/XTLS/Xray-core.git
synced 2026-10-29 14:37:05 +00:00
MASQUE client: Ignore publicKey in warp when pcs/vcn exists (domain fronting for WARP)
Closes https://github.com/XTLS/Xray-core/issues/7115#issuecomment-6088708005
This commit is contained in:
@@ -54,25 +54,25 @@ func useWarp(config *Config, tlsConfig *gotls.Config) error {
|
|||||||
tlsConfig.GetClientCertificate = func(*gotls.CertificateRequestInfo) (*gotls.Certificate, error) {
|
tlsConfig.GetClientCertificate = func(*gotls.CertificateRequestInfo) (*gotls.Certificate, error) {
|
||||||
return cert, nil
|
return cert, nil
|
||||||
}
|
}
|
||||||
if publicKey := config.Warp.PublicKey; len(publicKey) > 0 {
|
if tlsConfig.InsecureSkipVerify == true {
|
||||||
verify := tlsConfig.VerifyPeerCertificate
|
return nil // pcs or vcn or both
|
||||||
tlsConfig.InsecureSkipVerify = true
|
}
|
||||||
tlsConfig.VerifyPeerCertificate = func(raw [][]byte, chains [][]*x509.Certificate) error {
|
if _, err = x509.ParsePKIXPublicKey(config.Warp.PublicKey); err != nil {
|
||||||
if len(raw) == 0 {
|
return err
|
||||||
return errors.New("the WARP endpoint sent no certificate")
|
}
|
||||||
}
|
tlsConfig.InsecureSkipVerify = true
|
||||||
leaf, err := x509.ParseCertificate(raw[0])
|
tlsConfig.VerifyPeerCertificate = func(raw [][]byte, chains [][]*x509.Certificate) error {
|
||||||
if err != nil {
|
if len(raw) == 0 {
|
||||||
return err
|
return errors.New("the WARP endpoint sent no certificate")
|
||||||
}
|
|
||||||
if !bytes.Equal(leaf.RawSubjectPublicKeyInfo, publicKey) {
|
|
||||||
return errors.New("the WARP endpoint's key doesn't match \"publicKey\"")
|
|
||||||
}
|
|
||||||
if verify != nil {
|
|
||||||
return verify(raw, chains)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
leaf, err := x509.ParseCertificate(raw[0])
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if !bytes.Equal(leaf.RawSubjectPublicKeyInfo, config.Warp.PublicKey) {
|
||||||
|
return errors.New("the WARP endpoint's key doesn't match \"publicKey\"")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user