(out []byte)
| 701 | } |
| 702 | |
| 703 | func (hs *serverHandshakeState) readFinished(out []byte) error { |
| 704 | c := hs.c |
| 705 | |
| 706 | if err := c.readChangeCipherSpec(); err != nil { |
| 707 | return err |
| 708 | } |
| 709 | |
| 710 | msg, err := c.readHandshake() |
| 711 | if err != nil { |
| 712 | return err |
| 713 | } |
| 714 | clientFinished, ok := msg.(*finishedMsg) |
| 715 | if !ok { |
| 716 | c.sendAlert(alertUnexpectedMessage) |
| 717 | return unexpectedMessageError(clientFinished, msg) |
| 718 | } |
| 719 | |
| 720 | verify := hs.finishedHash.clientSum(hs.masterSecret) |
| 721 | if len(verify) != len(clientFinished.verifyData) || |
| 722 | subtle.ConstantTimeCompare(verify, clientFinished.verifyData) != 1 { |
| 723 | c.sendAlert(alertHandshakeFailure) |
| 724 | return errors.New("tls: client's Finished message is incorrect") |
| 725 | } |
| 726 | |
| 727 | hs.finishedHash.Write(clientFinished.marshal()) |
| 728 | copy(out, verify) |
| 729 | return nil |
| 730 | } |
| 731 | |
| 732 | func (hs *serverHandshakeState) sendSessionTicket() error { |
| 733 | // ticketSupported is set in a resumption handshake if the |
no test coverage detected