Skip to content

Commit 1be9426

Browse files
committed
Expose ServerHello (un)marshal
Allow external code to parse raw server hellos, similar to the client hellos.
1 parent 24bd1e0 commit 1be9426

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

u_public.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,22 @@ func (shm *serverHelloMsg) getPublicPtr() *PubServerHelloMsg {
352352
}
353353
}
354354

355+
// UnmarshalServerHello allows external code to parse raw server hellos.
356+
// It returns nil on failure.
357+
func UnmarshalServerHello(data []byte) *PubServerHelloMsg {
358+
m := &serverHelloMsg{}
359+
if m.unmarshal(data) {
360+
return m.getPublicPtr()
361+
}
362+
return nil
363+
}
364+
365+
// Marshal allows external code to convert a ServerHello object back into
366+
// raw bytes.
367+
func (shm *PubServerHelloMsg) Marshal() ([]byte, error) {
368+
return shm.getPrivatePtr().marshal()
369+
}
370+
355371
type PubClientHelloMsg struct {
356372
Raw []byte // renamed to clientHelloMsg.original in crypto/tls
357373
Vers uint16

0 commit comments

Comments
 (0)