diff --git a/internal/server/TLS.go b/internal/server/TLS.go index 861c29c..31350f3 100644 --- a/internal/server/TLS.go +++ b/internal/server/TLS.go @@ -59,11 +59,7 @@ func (TLS) makeResponder(clientHelloSessionId []byte, sharedSecret [32]byte) Res var encryptedSessionKeyArr [48]byte copy(encryptedSessionKeyArr[:], encryptedSessionKey) - reply, err := composeReply(clientHelloSessionId, nonce, encryptedSessionKeyArr, cert) - if err != nil { - err = fmt.Errorf("failed to compose TLS reply: %v", err) - return - } + reply := composeReply(clientHelloSessionId, nonce, encryptedSessionKeyArr, cert) _, err = originalConn.Write(reply) if err != nil { err = fmt.Errorf("failed to write TLS reply: %v", err) diff --git a/internal/server/TLSAux.go b/internal/server/TLSAux.go index 331effa..7ffa8f1 100644 --- a/internal/server/TLSAux.go +++ b/internal/server/TLSAux.go @@ -161,7 +161,7 @@ func parseClientHello(data []byte) (ret *ClientHello, err error) { return } -func composeServerHello(sessionId []byte, nonce [12]byte, encryptedSessionKeyWithTag [48]byte) ([]byte, error) { +func composeServerHello(sessionId []byte, nonce [12]byte, encryptedSessionKeyWithTag [48]byte) []byte { var serverHello [11][]byte serverHello[0] = []byte{0x02} // handshake type serverHello[1] = []byte{0x00, 0x00, 0x76} // length 77 @@ -184,22 +184,19 @@ func composeServerHello(sessionId []byte, nonce [12]byte, encryptedSessionKeyWit for _, s := range serverHello { ret = append(ret, s...) } - return ret, nil + return ret } // composeReply composes the ServerHello, ChangeCipherSpec and an ApplicationData messages // together with their respective record layers into one byte slice. -func composeReply(clientHelloSessionId []byte, nonce [12]byte, encryptedSessionKeyWithTag [48]byte, cert []byte) ([]byte, error) { +func composeReply(clientHelloSessionId []byte, nonce [12]byte, encryptedSessionKeyWithTag [48]byte, cert []byte) []byte { TLS12 := []byte{0x03, 0x03} - sh, err := composeServerHello(clientHelloSessionId, nonce, encryptedSessionKeyWithTag) - if err != nil { - return nil, err - } + sh := composeServerHello(clientHelloSessionId, nonce, encryptedSessionKeyWithTag) shBytes := addRecordLayer(sh, []byte{0x16}, TLS12) ccsBytes := addRecordLayer([]byte{0x01}, []byte{0x14}, TLS12) encryptedCertBytes := addRecordLayer(cert, []byte{0x17}, TLS12) ret := append(shBytes, ccsBytes...) ret = append(ret, encryptedCertBytes...) - return ret, nil + return ret }