(out []byte)
| 765 | } |
| 766 | |
| 767 | func (hs *clientHandshakeState) readFinished(out []byte) error { |
| 768 | c := hs.c |
| 769 | |
| 770 | if err := c.readChangeCipherSpec(); err != nil { |
| 771 | return err |
| 772 | } |
| 773 | |
| 774 | msg, err := c.readHandshake() |
| 775 | if err != nil { |
| 776 | return err |
| 777 | } |
| 778 | serverFinished, ok := msg.(*finishedMsg) |
| 779 | if !ok { |
| 780 | c.sendAlert(alertUnexpectedMessage) |
| 781 | return unexpectedMessageError(serverFinished, msg) |
| 782 | } |
| 783 | |
| 784 | verify := hs.finishedHash.serverSum(hs.masterSecret) |
| 785 | if len(verify) != len(serverFinished.verifyData) || |
| 786 | subtle.ConstantTimeCompare(verify, serverFinished.verifyData) != 1 { |
| 787 | c.sendAlert(alertHandshakeFailure) |
| 788 | return errors.New("tls: server's Finished message was incorrect") |
| 789 | } |
| 790 | hs.finishedHash.Write(serverFinished.marshal()) |
| 791 | copy(out, verify) |
| 792 | return nil |
| 793 | } |
| 794 | |
| 795 | func (hs *clientHandshakeState) readSessionTicket() error { |
| 796 | if !hs.serverHello.ticketSupported { |
no test coverage detected