()
| 844 | } |
| 845 | |
| 846 | func (hs *serverHandshakeState) sendSessionTicket() error { |
| 847 | if !hs.hello.ticketSupported { |
| 848 | return nil |
| 849 | } |
| 850 | |
| 851 | c := hs.c |
| 852 | m := new(newSessionTicketMsg) |
| 853 | |
| 854 | state := c.sessionState() |
| 855 | state.secret = hs.masterSecret |
| 856 | if hs.sessionState != nil { |
| 857 | // If this is re-wrapping an old key, then keep |
| 858 | // the original time it was created. |
| 859 | state.createdAt = hs.sessionState.createdAt |
| 860 | } |
| 861 | if c.config.WrapSession != nil { |
| 862 | var err error |
| 863 | m.ticket, err = c.config.WrapSession(c.connectionStateLocked(), state) |
| 864 | if err != nil { |
| 865 | return err |
| 866 | } |
| 867 | } else { |
| 868 | stateBytes, err := state.Bytes() |
| 869 | if err != nil { |
| 870 | return err |
| 871 | } |
| 872 | m.ticket, err = c.config.encryptTicket(stateBytes, c.ticketKeys) |
| 873 | if err != nil { |
| 874 | return err |
| 875 | } |
| 876 | } |
| 877 | |
| 878 | if _, err := hs.c.writeHandshakeRecord(m, &hs.finishedHash); err != nil { |
| 879 | return err |
| 880 | } |
| 881 | |
| 882 | return nil |
| 883 | } |
| 884 | |
| 885 | func (hs *serverHandshakeState) sendFinished(out []byte) error { |
| 886 | c := hs.c |
no test coverage detected