0
0
mirror of https://github.com/XTLS/Xray-core.git synced 2025-08-22 14:38:34 +00:00
RPRX 2025-08-13 11:24:10 +00:00 committed by GitHub
parent 1720be168f
commit 0fd7691d6b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 11 additions and 14 deletions

View File

@ -212,19 +212,19 @@ func (c *ClientConn) Read(b []byte) (int, error) {
}
}
if t != 0 {
return 0, errors.New("unexpected type ", t, ", expect server random")
return 0, errors.New("unexpected type ", t, ", expect random hello")
}
peerRandom := make([]byte, 32)
if l != len(peerRandom) {
return 0, errors.New("unexpected length ", l, " for server random")
peerRandomHello := make([]byte, 32)
if l != len(peerRandomHello) {
return 0, errors.New("unexpected length ", l, " for random hello")
}
if _, err := io.ReadFull(c.Conn, peerRandom); err != nil {
if _, err := io.ReadFull(c.Conn, peerRandomHello); err != nil {
return 0, err
}
if c.random == nil {
return 0, errors.New("empty c.random")
}
c.peerAead = NewAead(ClientCipher, c.baseKey, peerRandom, c.random)
c.peerAead = NewAead(ClientCipher, c.baseKey, peerRandomHello, c.random)
c.peerNonce = make([]byte, 12)
}
if len(c.peerCache) != 0 {

View File

@ -203,20 +203,17 @@ func (c *ServerConn) Read(b []byte) (int, error) {
if t != 0 {
return 0, errors.New("unexpected type ", t, ", expect ticket hello")
}
peerTicket := make([]byte, 21)
if l != len(peerTicket) {
peerTicketHello := make([]byte, 21+32)
if l != len(peerTicketHello) {
return 0, errors.New("unexpected length ", l, " for ticket hello")
}
if _, err := io.ReadFull(c.Conn, peerTicket); err != nil {
if _, err := io.ReadFull(c.Conn, peerTicketHello); err != nil {
return 0, err
}
if !bytes.Equal(peerTicket, c.ticket) {
if !bytes.Equal(peerTicketHello[:21], c.ticket) {
return 0, errors.New("naughty boy")
}
c.peerRandom = make([]byte, 32)
if _, err := io.ReadFull(c.Conn, c.peerRandom); err != nil {
return 0, err
}
c.peerRandom = peerTicketHello[21:]
}
c.peerAead = NewAead(c.cipher, c.baseKey, c.peerRandom, c.ticket)
c.peerNonce = make([]byte, 12)