MCPcopy Index your code
hub / github.com/XTLS/REALITY / extractRawExtensions

Function extractRawExtensions

ech.go:260–284  ·  view source on GitHub ↗
(hello *clientHelloMsg)

Source from the content-addressed store, hash-verified

258}
259
260func extractRawExtensions(hello *clientHelloMsg) ([]rawExtension, error) {
261 s := cryptobyte.String(hello.original)
262 if !s.Skip(4+2+32) || // header, version, random
263 !skipUint8LengthPrefixed(&s) || // session ID
264 !skipUint16LengthPrefixed(&s) || // cipher suites
265 !skipUint8LengthPrefixed(&s) { // compression methods
266 return nil, errors.New("tls: malformed outer client hello")
267 }
268 var rawExtensions []rawExtension
269 var extensions cryptobyte.String
270 if !s.ReadUint16LengthPrefixed(&extensions) {
271 return nil, errors.New("tls: malformed outer client hello")
272 }
273
274 for !extensions.Empty() {
275 var extension uint16
276 var extData cryptobyte.String
277 if !extensions.ReadUint16(&extension) ||
278 !extensions.ReadUint16LengthPrefixed(&extData) {
279 return nil, errors.New("tls: invalid inner client hello")
280 }
281 rawExtensions = append(rawExtensions, rawExtension{extension, extData})
282 }
283 return rawExtensions, nil
284}
285
286func decodeInnerClientHello(outer *clientHelloMsg, encoded []byte) (*clientHelloMsg, error) {
287 // Reconstructing the inner client hello from its encoded form is somewhat

Callers 1

decodeInnerClientHelloFunction · 0.85

Calls 3

skipUint8LengthPrefixedFunction · 0.85
skipUint16LengthPrefixedFunction · 0.85
StringMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…