From 112c23612f5fdfb776d8f338479e1dc374ee6f1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20Geisend=C3=B6rfer?= Date: Fri, 28 Feb 2025 16:07:16 +0100 Subject: [PATCH 01/99] runtime,internal/trace: emit clock snapshots at the start of trace generations Replace the per-generation EvEventBatch containing a lone EvFrequency event with a per-generation EvEventBatch containing a EvSync header followed by an EvFrequency and EvClockSnapshot event. The new EvClockSnapshot event contains trace, mono and wall clock snapshots taken in close time proximity. Ignoring minor resolution differences, the trace and mono clock are the same on linux, but not on windows (which still uses a TSC based trace clock). Emit the new sync batch at the very beginning of every new generation rather than the end to be in harmony with the internal/trace reader which emits a sync event at the beginning of every generation as well and guarantees monotonically increasing event timestamps. Bump the version of the trace file format to 1.25 since this change is not backwards compatible. Update the internal/trace reader implementation to decode the new events, but do not expose them to the public reader API yet. This is done in the next CL. For #69869 Change-Id: I5bfedccdd23dc0adaf2401ec0970cbcc32363393 Reviewed-on: https://go-review.googlesource.com/c/go/+/653575 Reviewed-by: David Chase Auto-Submit: Michael Knyszek LUCI-TryBot-Result: Go LUCI Reviewed-by: Michael Knyszek --- src/internal/trace/base.go | 2 +- src/internal/trace/batch.go | 7 +- src/internal/trace/generation.go | 108 ++++++++++++++++++++------ src/internal/trace/reader.go | 9 +-- src/internal/trace/tracev2/events.go | 12 +++ src/internal/trace/version/version.go | 8 +- src/runtime/trace.go | 29 ++++--- src/runtime/tracetime.go | 28 +++++-- 8 files changed, 149 insertions(+), 54 deletions(-) diff --git a/src/internal/trace/base.go b/src/internal/trace/base.go index 693dbc6fa6..1f17daa5f5 100644 --- a/src/internal/trace/base.go +++ b/src/internal/trace/base.go @@ -41,7 +41,7 @@ func (e *baseEvent) extra(v version.Version) []uint64 { // evTable contains the per-generation data necessary to // interpret an individual event. type evTable struct { - freq frequency + sync strings dataTable[stringID, string] stacks dataTable[stackID, stack] pcs map[uint64]frame diff --git a/src/internal/trace/batch.go b/src/internal/trace/batch.go index 58f18d6381..3ff056f604 100644 --- a/src/internal/trace/batch.go +++ b/src/internal/trace/batch.go @@ -11,6 +11,7 @@ import ( "io" "internal/trace/tracev2" + "internal/trace/version" ) // timestamp is an unprocessed timestamp. @@ -37,8 +38,10 @@ func (b *batch) isCPUSamplesBatch() bool { return b.exp == tracev2.NoExperiment && len(b.data) > 0 && tracev2.EventType(b.data[0]) == tracev2.EvCPUSamples } -func (b *batch) isFreqBatch() bool { - return b.exp == tracev2.NoExperiment && len(b.data) > 0 && tracev2.EventType(b.data[0]) == tracev2.EvFrequency +func (b *batch) isSyncBatch(ver version.Version) bool { + return (b.exp == tracev2.NoExperiment && len(b.data) > 0) && + ((tracev2.EventType(b.data[0]) == tracev2.EvFrequency && ver < version.Go125) || + (tracev2.EventType(b.data[0]) == tracev2.EvSync && ver >= version.Go125)) } // readBatch reads the next full batch from r. diff --git a/src/internal/trace/generation.go b/src/internal/trace/generation.go index 90a7f3b6c6..e91ba80f7d 100644 --- a/src/internal/trace/generation.go +++ b/src/internal/trace/generation.go @@ -13,8 +13,10 @@ import ( "io" "slices" "strings" + "time" "internal/trace/tracev2" + "internal/trace/version" ) // generation contains all the trace data for a single @@ -45,7 +47,7 @@ type spilledBatch struct { // // If gen is non-nil, it is valid and must be processed before handling the returned // error. -func readGeneration(r *bufio.Reader, spill *spilledBatch) (*generation, *spilledBatch, error) { +func readGeneration(r *bufio.Reader, spill *spilledBatch, ver version.Version) (*generation, *spilledBatch, error) { g := &generation{ evTable: &evTable{ pcs: make(map[uint64]frame), @@ -55,7 +57,8 @@ func readGeneration(r *bufio.Reader, spill *spilledBatch) (*generation, *spilled // Process the spilled batch. if spill != nil { g.gen = spill.gen - if err := processBatch(g, *spill.batch); err != nil { + g.minTs = spill.batch.time + if err := processBatch(g, *spill.batch, ver); err != nil { return nil, nil, err } spill = nil @@ -103,7 +106,7 @@ func readGeneration(r *bufio.Reader, spill *spilledBatch) (*generation, *spilled if g.minTs == 0 || b.time < g.minTs { g.minTs = b.time } - if err := processBatch(g, b); err != nil { + if err := processBatch(g, b, ver); err != nil { return nil, nil, err } } @@ -112,6 +115,10 @@ func readGeneration(r *bufio.Reader, spill *spilledBatch) (*generation, *spilled if g.freq == 0 { return nil, nil, fmt.Errorf("no frequency event found") } + if ver >= version.Go125 && !g.hasClockSnapshot { + return nil, nil, fmt.Errorf("no clock snapshot event found") + } + // N.B. Trust that the batch order is correct. We can't validate the batch order // by timestamp because the timestamps could just be plain wrong. The source of // truth is the order things appear in the trace and the partial order sequence @@ -140,7 +147,7 @@ func readGeneration(r *bufio.Reader, spill *spilledBatch) (*generation, *spilled } // processBatch adds the batch to the generation. -func processBatch(g *generation, b batch) error { +func processBatch(g *generation, b batch, ver version.Version) error { switch { case b.isStringsBatch(): if err := addStrings(&g.strings, b); err != nil { @@ -156,15 +163,10 @@ func processBatch(g *generation, b batch) error { return err } g.cpuSamples = samples - case b.isFreqBatch(): - freq, err := parseFreq(b) - if err != nil { + case b.isSyncBatch(ver): + if err := setSyncBatch(&g.sync, b, ver); err != nil { return err } - if g.freq != 0 { - return fmt.Errorf("found multiple frequency events") - } - g.freq = freq case b.exp != tracev2.NoExperiment: if g.expBatches == nil { g.expBatches = make(map[tracev2.Experiment][]ExperimentalBatch) @@ -421,21 +423,81 @@ func addCPUSamples(samples []cpuSample, b batch) ([]cpuSample, error) { return samples, nil } -// parseFreq parses out a lone EvFrequency from a batch. -func parseFreq(b batch) (frequency, error) { - if !b.isFreqBatch() { - return 0, fmt.Errorf("internal error: parseFreq called on non-frequency batch") +// sync holds the per-generation sync data. +type sync struct { + freq frequency + hasClockSnapshot bool + snapTime timestamp + snapMono uint64 + snapWall time.Time +} + +func setSyncBatch(s *sync, b batch, ver version.Version) error { + if !b.isSyncBatch(ver) { + return fmt.Errorf("internal error: setSyncBatch called on non-sync batch") } r := bytes.NewReader(b.data) - r.ReadByte() // Consume the EvFrequency byte. - - // Read the frequency. It'll come out as timestamp units per second. - f, err := binary.ReadUvarint(r) - if err != nil { - return 0, err + if ver >= version.Go125 { + hdr, err := r.ReadByte() // Consume the EvSync byte. + if err != nil || tracev2.EventType(hdr) != tracev2.EvSync { + return fmt.Errorf("missing sync batch header") + } } - // Convert to nanoseconds per timestamp unit. - return frequency(1.0 / (float64(f) / 1e9)), nil + + lastTs := b.time + for r.Len() != 0 { + // Read the header + ev, err := r.ReadByte() + if err != nil { + return err + } + et := tracev2.EventType(ev) + switch { + case et == tracev2.EvFrequency: + if s.freq != 0 { + return fmt.Errorf("found multiple frequency events") + } + // Read the frequency. It'll come out as timestamp units per second. + f, err := binary.ReadUvarint(r) + if err != nil { + return err + } + // Convert to nanoseconds per timestamp unit. + s.freq = frequency(1.0 / (float64(f) / 1e9)) + case et == tracev2.EvClockSnapshot && ver >= version.Go125: + if s.hasClockSnapshot { + return fmt.Errorf("found multiple clock snapshot events") + } + s.hasClockSnapshot = true + // Read the EvClockSnapshot arguments. + tdiff, err := binary.ReadUvarint(r) + if err != nil { + return err + } + lastTs += timestamp(tdiff) + s.snapTime = lastTs + mono, err := binary.ReadUvarint(r) + if err != nil { + return err + } + s.snapMono = mono + sec, err := binary.ReadUvarint(r) + if err != nil { + return err + } + nsec, err := binary.ReadUvarint(r) + if err != nil { + return err + } + // TODO(felixge): In theory we could inject s.snapMono into the time + // value below to make it comparable. But there is no API for this + // in the time package right now. + s.snapWall = time.Unix(int64(sec), int64(nsec)) + default: + return fmt.Errorf("expected frequency or clock snapshot event, got %d", ev) + } + } + return nil } // addExperimentalBatch takes an experimental batch and adds it to the list of experimental diff --git a/src/internal/trace/reader.go b/src/internal/trace/reader.go index 7212a424d7..83b5a2f123 100644 --- a/src/internal/trace/reader.go +++ b/src/internal/trace/reader.go @@ -54,7 +54,7 @@ func NewReader(r io.Reader) (*Reader, error) { return &Reader{ v1Events: convertV1Trace(tr), }, nil - case version.Go122, version.Go123: + case version.Go122, version.Go123, version.Go125: return &Reader{ version: v, r: br, @@ -158,7 +158,7 @@ func (r *Reader) ReadEvent() (e Event, err error) { return syncEvent(nil, r.lastTs, r.syncs), nil } // Read the next generation. - r.gen, r.spill, r.spillErr = readGeneration(r.r, r.spill) + r.gen, r.spill, r.spillErr = readGeneration(r.r, r.spill, r.version) if r.gen == nil { r.spillErrSync = true r.syncs++ @@ -183,11 +183,8 @@ func (r *Reader) ReadEvent() (e Event, err error) { r.frontier = heapInsert(r.frontier, bc) } r.syncs++ - if r.lastTs == 0 { - r.lastTs = r.gen.freq.mul(r.gen.minTs) - } // Always emit a sync event at the beginning of the generation. - return syncEvent(r.gen.evTable, r.lastTs, r.syncs), nil + return syncEvent(r.gen.evTable, r.gen.freq.mul(r.gen.minTs), r.syncs), nil } tryAdvance := func(i int) (bool, error) { bc := r.frontier[i] diff --git a/src/internal/trace/tracev2/events.go b/src/internal/trace/tracev2/events.go index 2f3581ab5b..fc7b27720a 100644 --- a/src/internal/trace/tracev2/events.go +++ b/src/internal/trace/tracev2/events.go @@ -83,6 +83,10 @@ const ( // Batch event for an experimental batch with a custom format. Added in Go 1.23. EvExperimentalBatch // start of extra data [experiment ID, generation, M ID, timestamp, batch length, batch data...] + // Sync batch. Added in Go 1.25. Previously a lone EvFrequency event. + EvSync // start of a sync batch [...EvFrequency|EvClockSnapshot] + EvClockSnapshot // snapshot of trace, mono and wall clocks [timestamp, mono, sec, nsec] + NumEvents ) @@ -182,6 +186,9 @@ var specs = [...]EventSpec{ Args: []string{"exp", "gen", "m", "time"}, HasData: true, // Easier to represent for raw readers. }, + EvSync: { + Name: "Sync", + }, // "Timed" Events. EvProcsChange: { @@ -419,6 +426,11 @@ var specs = [...]EventSpec{ IsTimedEvent: true, StackIDs: []int{4}, }, + EvClockSnapshot: { + Name: "ClockSnapshot", + Args: []string{"dt", "mono", "sec", "nsec"}, + IsTimedEvent: true, + }, // Experimental events. diff --git a/src/internal/trace/version/version.go b/src/internal/trace/version/version.go index 8c460734ce..ce994bbf4a 100644 --- a/src/internal/trace/version/version.go +++ b/src/internal/trace/version/version.go @@ -20,7 +20,8 @@ const ( Go121 Version = 21 // v1 Go122 Version = 22 // v2 Go123 Version = 23 // v2 - Current = Go123 + Go125 Version = 25 // v2 + Current = Go125 ) var versions = map[Version][]tracev2.EventSpec{ @@ -30,8 +31,9 @@ var versions = map[Version][]tracev2.EventSpec{ Go119: nil, Go121: nil, - Go122: tracev2.Specs()[:tracev2.EvUserLog+1], // All events after are Go 1.23+. - Go123: tracev2.Specs(), + Go122: tracev2.Specs()[:tracev2.EvUserLog+1], // All events after are Go 1.23+. + Go123: tracev2.Specs()[:tracev2.EvExperimentalBatch+1], // All events after are Go 1.25+. + Go125: tracev2.Specs(), } // Specs returns the set of event.Specs for this version. diff --git a/src/runtime/trace.go b/src/runtime/trace.go index bc2978bb4b..c4d68cb714 100644 --- a/src/runtime/trace.go +++ b/src/runtime/trace.go @@ -184,6 +184,10 @@ func StartTrace() error { // Register some basic strings in the string tables. traceRegisterLabelsAndReasons(firstGen) + // N.B. This may block for quite a while to get a frequency estimate. Do it + // here to minimize the time that the world is stopped. + frequency := traceClockUnitsPerSecond() + // Stop the world. // // The purpose of stopping the world is to make sure that no goroutine is in a @@ -280,8 +284,9 @@ func StartTrace() error { // // N.B. This will also emit a status event for this goroutine. tl := traceAcquire() - tl.Gomaxprocs(gomaxprocs) // Get this as early in the trace as possible. See comment in traceAdvance. - tl.STWStart(stwStartTrace) // We didn't trace this above, so trace it now. + traceSyncBatch(firstGen, frequency) // Get this as early in the trace as possible. See comment in traceAdvance. + tl.Gomaxprocs(gomaxprocs) // Get this as early in the trace as possible. See comment in traceAdvance. + tl.STWStart(stwStartTrace) // We didn't trace this above, so trace it now. // Record the fact that a GC is active, if applicable. if gcphase == _GCmark || gcphase == _GCmarktermination { @@ -340,12 +345,6 @@ func traceAdvance(stopTrace bool) { return } - // Write an EvFrequency event for this generation. - // - // N.B. This may block for quite a while to get a good frequency estimate, so make sure we do - // this here and not e.g. on the trace reader. - traceFrequency(gen) - // Collect all the untraced Gs. type untracedG struct { gp *g @@ -410,6 +409,10 @@ func traceAdvance(stopTrace bool) { traceRegisterLabelsAndReasons(traceNextGen(gen)) } + // N.B. This may block for quite a while to get a frequency estimate. Do it + // here to minimize the time that we prevent the world from stopping. + frequency := traceClockUnitsPerSecond() + // Now that we've done some of the heavy stuff, prevent the world from stopping. // This is necessary to ensure the consistency of the STW events. If we're feeling // adventurous we could lift this restriction and add a STWActive event, but the @@ -441,14 +444,16 @@ func traceAdvance(stopTrace bool) { trace.gen.Store(traceNextGen(gen)) } - // Emit a ProcsChange event so we have one on record for each generation. - // Let's emit it as soon as possible so that downstream tools can rely on the value - // being there fairly soon in a generation. + // Emit a sync batch which contains a ClockSnapshot. Also emit a ProcsChange + // event so we have one on record for each generation. Let's emit it as soon + // as possible so that downstream tools can rely on the value being there + // fairly soon in a generation. // // It's important that we do this before allowing stop-the-worlds again, // because the procs count could change. if !stopTrace { tl := traceAcquire() + traceSyncBatch(tl.gen, frequency) tl.Gomaxprocs(gomaxprocs) traceRelease(tl) } @@ -820,7 +825,7 @@ func readTrace0() (buf []byte, park bool) { if !trace.headerWritten { trace.headerWritten = true unlock(&trace.lock) - return []byte("go 1.23 trace\x00\x00\x00"), false + return []byte("go 1.25 trace\x00\x00\x00"), false } // Read the next buffer. diff --git a/src/runtime/tracetime.go b/src/runtime/tracetime.go index bfda0aac9a..df52f00ad4 100644 --- a/src/runtime/tracetime.go +++ b/src/runtime/tracetime.go @@ -74,18 +74,32 @@ func traceClockUnitsPerSecond() uint64 { return uint64(1.0 / float64(traceTimeDiv) * 1e9) } -// traceFrequency writes a batch with a single EvFrequency event. -// -// freq is the number of trace clock units per second. -func traceFrequency(gen uintptr) { +func traceSyncBatch(gen uintptr, frequency uint64) { w := unsafeTraceWriter(gen, nil) // Ensure we have a place to write to. - w, _ = w.ensure(1 + traceBytesPerNumber /* tracev2.EvFrequency + frequency */) + w, _ = w.ensure(3 /* EvSync + EvFrequency + EvClockSnapshot */ + 5*traceBytesPerNumber /* frequency, timestamp, mono, sec, nsec */) - // Write out the string. + // Write out the sync batch event. + w.byte(byte(tracev2.EvSync)) + + // Write out the frequency event. w.byte(byte(tracev2.EvFrequency)) - w.varint(traceClockUnitsPerSecond()) + w.varint(frequency) + + // Write out the clock snapshot event. + sec, nsec, mono := time_now() + ts := traceClockNow() + if ts <= w.traceBuf.lastTime { + ts = w.traceBuf.lastTime + 1 + } + tsDiff := uint64(ts - w.traceBuf.lastTime) + w.traceBuf.lastTime = ts + w.byte(byte(tracev2.EvClockSnapshot)) + w.varint(tsDiff) + w.varint(uint64(mono)) + w.varint(uint64(sec)) + w.varint(uint64(nsec)) // Immediately flush the buffer. systemstack(func() { From 2d216141a10fc7bb7872f13b95b070df471ece45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20Geisend=C3=B6rfer?= Date: Fri, 28 Feb 2025 16:07:45 +0100 Subject: [PATCH 02/99] internal/trace: expose clock snapshot timestamps on sync event Add ClockSnapshot field to the Sync event type and populate it with the information from the new EvClockSnapshot event when available. For #69869 Change-Id: I3b24b5bfa15cc7a7dba270f5e6bf189adb096840 Reviewed-on: https://go-review.googlesource.com/c/go/+/653576 Reviewed-by: Michael Knyszek LUCI-TryBot-Result: Go LUCI Reviewed-by: David Chase Auto-Submit: Michael Knyszek --- src/internal/trace/event.go | 47 ++++++++++++++++++++++++++++++++----- 1 file changed, 41 insertions(+), 6 deletions(-) diff --git a/src/internal/trace/event.go b/src/internal/trace/event.go index 896ab7f73a..21f1569f43 100644 --- a/src/internal/trace/event.go +++ b/src/internal/trace/event.go @@ -665,17 +665,22 @@ func (e Event) Sync() Sync { if e.Kind() != EventSync { panic("Sync called on non-Sync event") } - var expBatches map[string][]ExperimentalBatch + s := Sync{N: int(e.base.args[0])} if e.table != nil { - expBatches = make(map[string][]ExperimentalBatch) + expBatches := make(map[string][]ExperimentalBatch) for exp, batches := range e.table.expBatches { expBatches[tracev2.Experiments()[exp]] = batches } + s.ExperimentalBatches = expBatches + if e.table.hasClockSnapshot { + s.ClockSnapshot = &ClockSnapshot{ + Trace: e.table.freq.mul(e.table.snapTime), + Wall: e.table.snapWall, + Mono: e.table.snapMono, + } + } } - return Sync{ - N: int(e.base.args[0]), - ExperimentalBatches: expBatches, - } + return s } // Sync contains details potentially relevant to all the following events, up to but excluding @@ -684,10 +689,30 @@ type Sync struct { // N indicates that this is the Nth sync event in the trace. N int + // ClockSnapshot is a snapshot of different clocks taken in close in time + // that can be used to correlate trace events with data captured by other + // tools. May be nil for older trace versions. + ClockSnapshot *ClockSnapshot + // ExperimentalBatches contain all the unparsed batches of data for a given experiment. ExperimentalBatches map[string][]ExperimentalBatch } +// ClockSnapshot represents a near-simultaneous clock reading of several +// different system clocks. The snapshot can be used as a reference to convert +// timestamps to different clocks, which is helpful for correlating timestamps +// with data captured by other tools. +type ClockSnapshot struct { + // Trace is a snapshot of the trace clock. + Trace Time + + // Wall is a snapshot of the system's wall clock. + Wall time.Time + + // Mono is a snapshot of the system's monotonic clock. + Mono uint64 +} + // Experimental returns a view of the raw event for an experimental event. // // Panics if Kind != EventExperimental. @@ -844,6 +869,16 @@ func (e Event) String() string { fmt.Fprintf(&sb, "%s=%s", arg, r.ArgValue(i).String()) } fmt.Fprintf(&sb, "]") + case EventSync: + s := e.Sync() + fmt.Fprintf(&sb, " N=%d", s.N) + if s.ClockSnapshot != nil { + fmt.Fprintf(&sb, " Trace=%d Mono=%d Wall=%s", + s.ClockSnapshot.Trace, + s.ClockSnapshot.Mono, + s.ClockSnapshot.Wall.Format(time.RFC3339), + ) + } } if stk := e.Stack(); stk != NoStack { fmt.Fprintln(&sb) From 847f15716625d24c6a6af8f741dff66781b6bcdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20Geisend=C3=B6rfer?= Date: Sat, 3 May 2025 15:56:23 +0300 Subject: [PATCH 03/99] internal/trace: add a validator test for the new clock snapshots Check that the clock snapshots, when expected to be present, are non-zero and monotonically increasing. This required some refactoring to make the validator aware of the version of the trace it is validating. Change-Id: I04c4dd10fe6975cbac12bb0ddaebcec3a5284e7b Reviewed-on: https://go-review.googlesource.com/c/go/+/669715 Auto-Submit: Michael Knyszek LUCI-TryBot-Result: Go LUCI Reviewed-by: Michael Knyszek Reviewed-by: David Chase --- src/internal/trace/gc_test.go | 2 +- src/internal/trace/reader_test.go | 7 ++- src/internal/trace/summary_test.go | 4 +- src/internal/trace/testtrace/format.go | 23 ++++---- src/internal/trace/testtrace/validation.go | 68 ++++++++++++++++------ src/internal/trace/trace_test.go | 3 +- src/internal/trace/tracev1_test.go | 3 +- 7 files changed, 72 insertions(+), 38 deletions(-) diff --git a/src/internal/trace/gc_test.go b/src/internal/trace/gc_test.go index 39f28cc0f6..9c6d0fcb0e 100644 --- a/src/internal/trace/gc_test.go +++ b/src/internal/trace/gc_test.go @@ -118,7 +118,7 @@ func TestMMUTrace(t *testing.T) { } t.Run("V2", func(t *testing.T) { testPath := "testdata/tests/go122-gc-stress.test" - r, _, err := testtrace.ParseFile(testPath) + r, _, _, err := testtrace.ParseFile(testPath) if err != nil { t.Fatalf("malformed test %s: bad trace file: %v", testPath, err) } diff --git a/src/internal/trace/reader_test.go b/src/internal/trace/reader_test.go index 37c21da667..b395183e0e 100644 --- a/src/internal/trace/reader_test.go +++ b/src/internal/trace/reader_test.go @@ -37,11 +37,11 @@ func TestReaderGolden(t *testing.T) { t.Fatalf("failed to relativize testdata path: %v", err) } t.Run(testName, func(t *testing.T) { - tr, exp, err := testtrace.ParseFile(testPath) + tr, ver, exp, err := testtrace.ParseFile(testPath) if err != nil { t.Fatalf("failed to parse test file at %s: %v", testPath, err) } - testReader(t, tr, exp) + testReader(t, tr, ver, exp) }) } } @@ -93,7 +93,7 @@ func FuzzReader(f *testing.F) { }) } -func testReader(t *testing.T, tr io.Reader, exp *testtrace.Expectation) { +func testReader(t *testing.T, tr io.Reader, ver version.Version, exp *testtrace.Expectation) { r, err := trace.NewReader(tr) if err != nil { if err := exp.Check(err); err != nil { @@ -102,6 +102,7 @@ func testReader(t *testing.T, tr io.Reader, exp *testtrace.Expectation) { return } v := testtrace.NewValidator() + v.GoVersion = ver for { ev, err := r.ReadEvent() if err == io.EOF { diff --git a/src/internal/trace/summary_test.go b/src/internal/trace/summary_test.go index 396bd5f096..c5f1910262 100644 --- a/src/internal/trace/summary_test.go +++ b/src/internal/trace/summary_test.go @@ -264,7 +264,7 @@ func basicGoroutineSummaryChecks(t *testing.T, summary *trace.GoroutineSummary) } func summarizeTraceTest(t *testing.T, testPath string) *trace.Summary { - trc, _, err := testtrace.ParseFile(testPath) + trc, _, _, err := testtrace.ParseFile(testPath) if err != nil { t.Fatalf("malformed test %s: bad trace file: %v", testPath, err) } @@ -388,7 +388,7 @@ func basicGoroutineExecStatsChecks(t *testing.T, stats *trace.GoroutineExecStats func TestRelatedGoroutinesV2Trace(t *testing.T) { testPath := "testdata/tests/go122-gc-stress.test" - trc, _, err := testtrace.ParseFile(testPath) + trc, _, _, err := testtrace.ParseFile(testPath) if err != nil { t.Fatalf("malformed test %s: bad trace file: %v", testPath, err) } diff --git a/src/internal/trace/testtrace/format.go b/src/internal/trace/testtrace/format.go index 82b69340ae..5c3c64787d 100644 --- a/src/internal/trace/testtrace/format.go +++ b/src/internal/trace/testtrace/format.go @@ -8,33 +8,34 @@ import ( "bytes" "fmt" "internal/trace/raw" + "internal/trace/version" "internal/txtar" "io" ) // ParseFile parses a test file generated by the testgen package. -func ParseFile(testPath string) (io.Reader, *Expectation, error) { +func ParseFile(testPath string) (io.Reader, version.Version, *Expectation, error) { ar, err := txtar.ParseFile(testPath) if err != nil { - return nil, nil, fmt.Errorf("failed to read test file for %s: %v", testPath, err) + return nil, 0, nil, fmt.Errorf("failed to read test file for %s: %v", testPath, err) } if len(ar.Files) != 2 { - return nil, nil, fmt.Errorf("malformed test %s: wrong number of files", testPath) + return nil, 0, nil, fmt.Errorf("malformed test %s: wrong number of files", testPath) } if ar.Files[0].Name != "expect" { - return nil, nil, fmt.Errorf("malformed test %s: bad filename %s", testPath, ar.Files[0].Name) + return nil, 0, nil, fmt.Errorf("malformed test %s: bad filename %s", testPath, ar.Files[0].Name) } if ar.Files[1].Name != "trace" { - return nil, nil, fmt.Errorf("malformed test %s: bad filename %s", testPath, ar.Files[1].Name) + return nil, 0, nil, fmt.Errorf("malformed test %s: bad filename %s", testPath, ar.Files[1].Name) } tr, err := raw.NewTextReader(bytes.NewReader(ar.Files[1].Data)) if err != nil { - return nil, nil, fmt.Errorf("malformed test %s: bad trace file: %v", testPath, err) + return nil, 0, nil, fmt.Errorf("malformed test %s: bad trace file: %v", testPath, err) } var buf bytes.Buffer tw, err := raw.NewWriter(&buf, tr.Version()) if err != nil { - return nil, nil, fmt.Errorf("failed to create trace byte writer: %v", err) + return nil, 0, nil, fmt.Errorf("failed to create trace byte writer: %v", err) } for { ev, err := tr.ReadEvent() @@ -42,15 +43,15 @@ func ParseFile(testPath string) (io.Reader, *Expectation, error) { break } if err != nil { - return nil, nil, fmt.Errorf("malformed test %s: bad trace file: %v", testPath, err) + return nil, 0, nil, fmt.Errorf("malformed test %s: bad trace file: %v", testPath, err) } if err := tw.WriteEvent(ev); err != nil { - return nil, nil, fmt.Errorf("internal error during %s: failed to write trace bytes: %v", testPath, err) + return nil, 0, nil, fmt.Errorf("internal error during %s: failed to write trace bytes: %v", testPath, err) } } exp, err := ParseExpectation(ar.Files[0].Data) if err != nil { - return nil, nil, fmt.Errorf("internal error during %s: failed to parse expectation %q: %v", testPath, string(ar.Files[0].Data), err) + return nil, 0, nil, fmt.Errorf("internal error during %s: failed to parse expectation %q: %v", testPath, string(ar.Files[0].Data), err) } - return &buf, exp, nil + return &buf, tr.Version(), exp, nil } diff --git a/src/internal/trace/testtrace/validation.go b/src/internal/trace/testtrace/validation.go index f61f7a3ffa..da0e871287 100644 --- a/src/internal/trace/testtrace/validation.go +++ b/src/internal/trace/testtrace/validation.go @@ -8,20 +8,21 @@ import ( "errors" "fmt" "internal/trace" + "internal/trace/version" "slices" "strings" ) // Validator is a type used for validating a stream of trace.Events. type Validator struct { - lastTs trace.Time - gs map[trace.GoID]*goState - ps map[trace.ProcID]*procState - ms map[trace.ThreadID]*schedContext - ranges map[trace.ResourceID][]string - tasks map[trace.TaskID]string - nSync int - Go121 bool + lastTs trace.Time + gs map[trace.GoID]*goState + ps map[trace.ProcID]*procState + ms map[trace.ThreadID]*schedContext + ranges map[trace.ResourceID][]string + tasks map[trace.TaskID]string + lastSync trace.Sync + GoVersion version.Version } type schedContext struct { @@ -43,11 +44,12 @@ type procState struct { // NewValidator creates a new Validator. func NewValidator() *Validator { return &Validator{ - gs: make(map[trace.GoID]*goState), - ps: make(map[trace.ProcID]*procState), - ms: make(map[trace.ThreadID]*schedContext), - ranges: make(map[trace.ResourceID][]string), - tasks: make(map[trace.TaskID]string), + gs: make(map[trace.GoID]*goState), + ps: make(map[trace.ProcID]*procState), + ms: make(map[trace.ThreadID]*schedContext), + ranges: make(map[trace.ResourceID][]string), + tasks: make(map[trace.TaskID]string), + GoVersion: version.Current, } } @@ -74,10 +76,38 @@ func (v *Validator) Event(ev trace.Event) error { switch ev.Kind() { case trace.EventSync: s := ev.Sync() - if s.N != v.nSync+1 { - e.Errorf("sync count is not sequential: expected %d, got %d", v.nSync+1, s.N) + if s.N != v.lastSync.N+1 { + e.Errorf("sync count is not sequential: expected %d, got %d", v.lastSync.N+1, s.N) } - v.nSync = s.N + // The trace reader currently emits synthetic sync events at the end of + // a trace. Those don't contain clock snapshots data, so we don't try + // to validate them. + // + // TODO(felixge): Drop the synthetic syncs as discussed in CL 653576. + if v.GoVersion >= version.Go125 && !(s.N > 1 && s.ClockSnapshot == nil) { + if s.ClockSnapshot == nil { + e.Errorf("sync %d has no clock snapshot", s.N) + } + if s.ClockSnapshot.Wall.IsZero() { + e.Errorf("sync %d has zero wall time", s.N) + } + if s.ClockSnapshot.Mono == 0 { + e.Errorf("sync %d has zero mono time", s.N) + } + if s.ClockSnapshot.Trace == 0 { + e.Errorf("sync %d has zero trace time", s.N) + } + if s.N >= 2 && !s.ClockSnapshot.Wall.After(v.lastSync.ClockSnapshot.Wall) { + e.Errorf("sync %d has non-increasing wall time: %v vs %v", s.N, s.ClockSnapshot.Wall, v.lastSync.ClockSnapshot.Wall) + } + if s.N >= 2 && !(s.ClockSnapshot.Mono > v.lastSync.ClockSnapshot.Mono) { + e.Errorf("sync %d has non-increasing mono time: %v vs %v", s.N, s.ClockSnapshot.Mono, v.lastSync.ClockSnapshot.Mono) + } + if s.N >= 2 && !(s.ClockSnapshot.Trace > v.lastSync.ClockSnapshot.Trace) { + e.Errorf("sync %d has non-increasing trace time: %v vs %v", s.N, s.ClockSnapshot.Trace, v.lastSync.ClockSnapshot.Trace) + } + } + v.lastSync = s case trace.EventMetric: m := ev.Metric() if !strings.Contains(m.Name, ":") { @@ -143,7 +173,7 @@ func (v *Validator) Event(ev trace.Event) error { if new == trace.GoUndetermined { e.Errorf("transition to undetermined state for goroutine %d", id) } - if v.nSync > 1 && old == trace.GoUndetermined { + if v.lastSync.N > 1 && old == trace.GoUndetermined { e.Errorf("undetermined goroutine %d after first global sync", id) } if new == trace.GoNotExist && v.hasAnyRange(trace.MakeResourceID(id)) { @@ -196,7 +226,7 @@ func (v *Validator) Event(ev trace.Event) error { if new == trace.ProcUndetermined { e.Errorf("transition to undetermined state for proc %d", id) } - if v.nSync > 1 && old == trace.ProcUndetermined { + if v.lastSync.N > 1 && old == trace.ProcUndetermined { e.Errorf("undetermined proc %d after first global sync", id) } if new == trace.ProcNotExist && v.hasAnyRange(trace.MakeResourceID(id)) { @@ -325,7 +355,7 @@ func (v *Validator) getOrCreateThread(e *errAccumulator, ev trace.Event, m trace // Be lenient about GoUndetermined -> GoSyscall transitions if they // originate from an old trace. These transitions lack thread // information in trace formats older than 1.22. - if !v.Go121 { + if v.GoVersion >= version.Go122 { return false } if ev.Kind() != trace.EventStateTransition { diff --git a/src/internal/trace/trace_test.go b/src/internal/trace/trace_test.go index 4ff87c1ede..8c40e84a81 100644 --- a/src/internal/trace/trace_test.go +++ b/src/internal/trace/trace_test.go @@ -12,6 +12,7 @@ import ( "internal/testenv" "internal/trace" "internal/trace/testtrace" + "internal/trace/version" "io" "os" "path/filepath" @@ -617,7 +618,7 @@ func testTraceProg(t *testing.T, progName string, extra func(t *testing.T, trace tb := traceBuf.Bytes() // Test the trace and the parser. - testReader(t, bytes.NewReader(tb), testtrace.ExpectSuccess()) + testReader(t, bytes.NewReader(tb), version.Current, testtrace.ExpectSuccess()) // Run some extra validation. if !t.Failed() && extra != nil { diff --git a/src/internal/trace/tracev1_test.go b/src/internal/trace/tracev1_test.go index 008c7535c9..42a8371887 100644 --- a/src/internal/trace/tracev1_test.go +++ b/src/internal/trace/tracev1_test.go @@ -7,6 +7,7 @@ package trace_test import ( "internal/trace" "internal/trace/testtrace" + "internal/trace/version" "io" "os" "path/filepath" @@ -38,7 +39,7 @@ func TestTraceV1(t *testing.T) { } v := testtrace.NewValidator() - v.Go121 = true + v.GoVersion = version.Go121 for { ev, err := tr.ReadEvent() if err != nil { From b22da3f544418aa4d962848cab9e3458a1fe075b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20Geisend=C3=B6rfer?= Date: Fri, 28 Feb 2025 17:28:43 +0100 Subject: [PATCH 04/99] internal/trace/internal/testgen: make generated trace version configurable Replace hard coded references to version.Go122 with the trace version passed to NewTrace. This allows writing testgen tests for newer trace versions. For #69869 Change-Id: Id25350cea1c397a09ca23465526ff259e34a4752 Reviewed-on: https://go-review.googlesource.com/c/go/+/653875 Auto-Submit: Michael Knyszek Reviewed-by: Michael Knyszek Reviewed-by: Cherry Mui LUCI-TryBot-Result: Go LUCI --- src/internal/trace/internal/testgen/trace.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/internal/trace/internal/testgen/trace.go b/src/internal/trace/internal/testgen/trace.go index 0ae7e9924e..af469f525c 100644 --- a/src/internal/trace/internal/testgen/trace.go +++ b/src/internal/trace/internal/testgen/trace.go @@ -66,6 +66,7 @@ func NewTrace(ver version.Version) *Trace { return &Trace{ names: tracev2.EventNames(ver.Specs()), specs: ver.Specs(), + ver: ver, validTimestamps: true, } } @@ -115,7 +116,7 @@ func (t *Trace) Generation(gen uint64) *Generation { func (t *Trace) Generate() []byte { // Trace file contents. var buf bytes.Buffer - tw, err := raw.NewTextWriter(&buf, version.Go122) + tw, err := raw.NewTextWriter(&buf, t.ver) if err != nil { panic(err.Error()) } @@ -153,7 +154,7 @@ func (t *Trace) createEvent(ev tracev2.EventType, data []byte, args ...uint64) r } } return raw.Event{ - Version: version.Go122, + Version: t.ver, Ev: ev, Args: args, Data: data, @@ -382,7 +383,7 @@ func (b *Batch) RawEvent(typ tracev2.EventType, data []byte, args ...uint64) { // writeEventsTo emits events in the batch, including the batch header, to tw. func (b *Batch) writeEventsTo(tw *raw.TextWriter) { tw.WriteEvent(raw.Event{ - Version: version.Go122, + Version: b.gen.trace.ver, Ev: tracev2.EvEventBatch, Args: []uint64{b.gen.gen, uint64(b.thread), uint64(b.timestamp), b.size}, }) From 07b94b2db23eda9ff4629cd8c2a0a32decdae08b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20Geisend=C3=B6rfer?= Date: Fri, 28 Feb 2025 17:30:54 +0100 Subject: [PATCH 05/99] internal/trace: add generator tests for sync events Add generator tests that verify the timestamps for the sync events emitted in the go1.25 trace format and earlier versions. Add the ability to configure the properties of the per-generation sync batches in testgen. Also refactor testgen to produce more realistic timestamps by keeping track of lastTs and using it for structural batches that don't have their own timestamps. Otherwise they default to zero which means the minTs of the generation can't be controlled. For #69869 Change-Id: I92a49b8281bc4169b63e13c030c1de7720cd6f26 Reviewed-on: https://go-review.googlesource.com/c/go/+/653876 Auto-Submit: Michael Knyszek Reviewed-by: David Chase LUCI-TryBot-Result: Go LUCI Reviewed-by: Michael Knyszek --- src/internal/trace/internal/testgen/trace.go | 77 +++++++++++++++---- src/internal/trace/reader_test.go | 74 ++++++++++++++++++ .../trace/testdata/generators/go123-sync.go | 30 ++++++++ .../trace/testdata/generators/go125-sync.go | 31 ++++++++ .../trace/testdata/tests/go123-sync.test | 26 +++++++ .../trace/testdata/tests/go125-sync.test | 32 ++++++++ 6 files changed, 257 insertions(+), 13 deletions(-) create mode 100644 src/internal/trace/testdata/generators/go123-sync.go create mode 100644 src/internal/trace/testdata/generators/go125-sync.go create mode 100644 src/internal/trace/testdata/tests/go123-sync.test create mode 100644 src/internal/trace/testdata/tests/go125-sync.test diff --git a/src/internal/trace/internal/testgen/trace.go b/src/internal/trace/internal/testgen/trace.go index af469f525c..415acaccae 100644 --- a/src/internal/trace/internal/testgen/trace.go +++ b/src/internal/trace/internal/testgen/trace.go @@ -11,6 +11,7 @@ import ( "os" "regexp" "strings" + "time" "internal/trace" "internal/trace/raw" @@ -55,6 +56,7 @@ type Trace struct { events []raw.Event gens []*Generation validTimestamps bool + lastTs Time // Expectation state. bad bool @@ -107,6 +109,7 @@ func (t *Trace) Generation(gen uint64) *Generation { gen: gen, strings: make(map[string]uint64), stacks: make(map[stack]uint64), + sync: sync{freq: 15625000}, } t.gens = append(t.gens, g) return g @@ -178,6 +181,7 @@ type Generation struct { batches []*Batch strings map[string]uint64 stacks map[stack]uint64 + sync sync // Options applied when Trace.Generate is called. ignoreStringBatchSizeLimit bool @@ -188,14 +192,11 @@ type Generation struct { // // This is convenience function for generating correct batches. func (g *Generation) Batch(thread trace.ThreadID, time Time) *Batch { - if !g.trace.validTimestamps { - time = 0 - } b := &Batch{ - gen: g, - thread: thread, - timestamp: time, + gen: g, + thread: thread, } + b.setTimestamp(time) g.batches = append(g.batches, b) return b } @@ -238,20 +239,59 @@ func (g *Generation) Stack(stk []trace.StackFrame) uint64 { return id } +// Sync configures the sync batch for the generation. For go1.25 and later, +// the time value is the timestamp of the EvClockSnapshot event. For earlier +// version, the time value is the timestamp of the batch containing a lone +// EvFrequency event. +func (g *Generation) Sync(freq uint64, time Time, mono uint64, wall time.Time) { + if g.trace.ver < version.Go125 && (mono != 0 || !wall.IsZero()) { + panic(fmt.Sprintf("mono and wall args are not supported in go1.%d traces", g.trace.ver)) + } + g.sync = sync{ + freq: freq, + time: time, + mono: mono, + walltime: wall, + } +} + +type sync struct { + freq uint64 + time Time + mono uint64 + walltime time.Time +} + // writeEventsTo emits event batches in the generation to tw. func (g *Generation) writeEventsTo(tw *raw.TextWriter) { + // go1.25+ sync batches are emitted at the start of the generation. + if g.trace.ver >= version.Go125 { + b := g.newStructuralBatch() + // Arrange for EvClockSnapshot's ts to be exactly g.sync.time. + b.setTimestamp(g.sync.time - 1) + b.RawEvent(tracev2.EvSync, nil) + b.RawEvent(tracev2.EvFrequency, nil, g.sync.freq) + sec := uint64(g.sync.walltime.Unix()) + nsec := uint64(g.sync.walltime.Nanosecond()) + b.Event("ClockSnapshot", g.sync.mono, sec, nsec) + b.writeEventsTo(tw) + } + // Write event batches for the generation. for _, b := range g.batches { b.writeEventsTo(tw) } - // Write frequency. - b := g.newStructuralBatch() - b.RawEvent(tracev2.EvFrequency, nil, 15625000) - b.writeEventsTo(tw) + // Write lone EvFrequency sync batch for older traces. + if g.trace.ver < version.Go125 { + b := g.newStructuralBatch() + b.setTimestamp(g.sync.time) + b.RawEvent(tracev2.EvFrequency, nil, g.sync.freq) + b.writeEventsTo(tw) + } // Write stacks. - b = g.newStructuralBatch() + b := g.newStructuralBatch() b.RawEvent(tracev2.EvStacks, nil) for stk, id := range g.stacks { stk := stk.stk[:stk.len] @@ -285,7 +325,9 @@ func (g *Generation) writeEventsTo(tw *raw.TextWriter) { } func (g *Generation) newStructuralBatch() *Batch { - return &Batch{gen: g, thread: trace.NoThread} + b := &Batch{gen: g, thread: trace.NoThread} + b.setTimestamp(g.trace.lastTs + 1) + return b } // Batch represents an event batch. @@ -310,6 +352,7 @@ func (b *Batch) Event(name string, args ...any) { if b.gen.trace.specs[ev].IsTimedEvent { if b.gen.trace.validTimestamps { uintArgs = []uint64{1} + b.gen.trace.lastTs += 1 } else { uintArgs = []uint64{0} } @@ -333,7 +376,7 @@ func (b *Batch) uintArgFor(arg any, argSpec string) uint64 { } var u uint64 switch typStr { - case "value": + case "value", "mono", "sec", "nsec": u = arg.(uint64) case "stack": u = b.gen.Stack(arg.([]trace.StackFrame)) @@ -392,6 +435,14 @@ func (b *Batch) writeEventsTo(tw *raw.TextWriter) { } } +// setTimestamp sets the timestamp for the batch. +func (b *Batch) setTimestamp(t Time) { + if b.gen.trace.validTimestamps { + b.timestamp = t + b.gen.trace.lastTs = t + } +} + // Seq represents a sequence counter. type Seq uint64 diff --git a/src/internal/trace/reader_test.go b/src/internal/trace/reader_test.go index b395183e0e..222d2dfa82 100644 --- a/src/internal/trace/reader_test.go +++ b/src/internal/trace/reader_test.go @@ -13,6 +13,7 @@ import ( "path/filepath" "strings" "testing" + "time" "internal/trace" "internal/trace/raw" @@ -171,3 +172,76 @@ func dumpTraceToFile(t *testing.T, testName string, stress bool, b []byte) strin } return f.Name() } + +func TestTraceGenSync(t *testing.T) { + type sync struct { + Time trace.Time + ClockSnapshot *trace.ClockSnapshot + } + runTest := func(testName string, wantSyncs []sync) { + t.Run(testName, func(t *testing.T) { + testPath := "testdata/tests/" + testName + r, _, _, err := testtrace.ParseFile(testPath) + if err != nil { + t.Fatalf("malformed test %s: bad trace file: %v", testPath, err) + } + tr, err := trace.NewReader(r) + if err != nil { + t.Fatalf("malformed test %s: bad trace file: %v", testPath, err) + } + var syncEvents []trace.Event + for { + ev, err := tr.ReadEvent() + if err == io.EOF { + break + } + if err != nil { + t.Fatalf("malformed test %s: bad trace file: %v", testPath, err) + } + if ev.Kind() == trace.EventSync { + syncEvents = append(syncEvents, ev) + } + } + + if got, want := len(syncEvents), len(wantSyncs); got != want { + t.Errorf("got %d sync events, want %d", got, want) + } + + for i, want := range wantSyncs { + got := syncEvents[i] + gotSync := syncEvents[i].Sync() + if got.Time() != want.Time { + t.Errorf("sync=%d got time %d, want %d", i+1, got.Time(), want.Time) + } + if gotSync.ClockSnapshot == nil && want.ClockSnapshot == nil { + continue + } + if gotSync.ClockSnapshot.Trace != want.ClockSnapshot.Trace { + t.Errorf("sync=%d got trace time %d, want %d", i+1, gotSync.ClockSnapshot.Trace, want.ClockSnapshot.Trace) + } + if !gotSync.ClockSnapshot.Wall.Equal(want.ClockSnapshot.Wall) { + t.Errorf("sync=%d got wall time %s, want %s", i+1, gotSync.ClockSnapshot.Wall, want.ClockSnapshot.Wall) + } + if gotSync.ClockSnapshot.Mono != want.ClockSnapshot.Mono { + t.Errorf("sync=%d got mono time %d, want %d", i+1, gotSync.ClockSnapshot.Mono, want.ClockSnapshot.Mono) + } + } + }) + } + + runTest("go123-sync.test", []sync{ + {10, nil}, + {40, nil}, + // The EvFrequency batch for generation 3 is emitted at trace.Time(80), + // but 60 is the minTs of the generation, see b30 in the go generator. + {60, nil}, + {63, nil}, + }) + + runTest("go125-sync.test", []sync{ + {9, &trace.ClockSnapshot{Trace: 10, Mono: 99, Wall: time.Date(2025, 2, 28, 15, 4, 9, 123, time.UTC)}}, + {38, &trace.ClockSnapshot{Trace: 40, Mono: 199, Wall: time.Date(2025, 2, 28, 15, 4, 10, 123, time.UTC)}}, + {58, &trace.ClockSnapshot{Trace: 60, Mono: 299, Wall: time.Date(2025, 2, 28, 15, 4, 11, 123, time.UTC)}}, + {83, nil}, + }) +} diff --git a/src/internal/trace/testdata/generators/go123-sync.go b/src/internal/trace/testdata/generators/go123-sync.go new file mode 100644 index 0000000000..257581c7ea --- /dev/null +++ b/src/internal/trace/testdata/generators/go123-sync.go @@ -0,0 +1,30 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package main + +import ( + "internal/trace" + "internal/trace/internal/testgen" + "internal/trace/tracev2" + "internal/trace/version" + "time" +) + +func main() { + testgen.Main(version.Go123, gen) +} + +func gen(t *testgen.Trace) { + g1 := t.Generation(1) + g1.Sync(1000000000, 10, 0, time.Time{}) + b10 := g1.Batch(1, 15) + b10.Event("ProcStatus", trace.ProcID(0), tracev2.ProcRunning) + g2 := t.Generation(2) + g2.Sync(500000000, 20, 0, time.Time{}) + g3 := t.Generation(3) + b30 := g3.Batch(1, 30) + b30.Event("ProcStatus", trace.ProcID(0), tracev2.ProcRunning) + g3.Sync(500000000, 40, 0, time.Time{}) +} diff --git a/src/internal/trace/testdata/generators/go125-sync.go b/src/internal/trace/testdata/generators/go125-sync.go new file mode 100644 index 0000000000..30ebf6717a --- /dev/null +++ b/src/internal/trace/testdata/generators/go125-sync.go @@ -0,0 +1,31 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package main + +import ( + "internal/trace" + "internal/trace/internal/testgen" + "internal/trace/tracev2" + "internal/trace/version" + "time" +) + +func main() { + testgen.Main(version.Go125, gen) +} + +func gen(t *testgen.Trace) { + start := time.Date(2025, 2, 28, 15, 4, 9, 123, time.UTC) + g1 := t.Generation(1) + g1.Sync(1000000000, 10, 99, start) + b10 := g1.Batch(1, 15) + b10.Event("ProcStatus", trace.ProcID(0), tracev2.ProcRunning) + g2 := t.Generation(2) + g2.Sync(500000000, 20, 199, start.Add(1*time.Second)) + g3 := t.Generation(3) + g3.Sync(500000000, 30, 299, start.Add(2*time.Second)) + b30 := g3.Batch(1, 40) + b30.Event("ProcStatus", trace.ProcID(0), tracev2.ProcRunning) +} diff --git a/src/internal/trace/testdata/tests/go123-sync.test b/src/internal/trace/testdata/tests/go123-sync.test new file mode 100644 index 0000000000..44e98e6c95 --- /dev/null +++ b/src/internal/trace/testdata/tests/go123-sync.test @@ -0,0 +1,26 @@ +-- expect -- +SUCCESS +-- trace -- +Trace Go1.23 +EventBatch gen=1 m=1 time=15 size=4 +ProcStatus dt=1 p=0 pstatus=1 +EventBatch gen=1 m=18446744073709551615 time=10 size=6 +Frequency freq=1000000000 +EventBatch gen=1 m=18446744073709551615 time=11 size=1 +Stacks +EventBatch gen=1 m=18446744073709551615 time=12 size=1 +Strings +EventBatch gen=2 m=18446744073709551615 time=20 size=6 +Frequency freq=500000000 +EventBatch gen=2 m=18446744073709551615 time=21 size=1 +Stacks +EventBatch gen=2 m=18446744073709551615 time=22 size=1 +Strings +EventBatch gen=3 m=1 time=30 size=4 +ProcStatus dt=1 p=0 pstatus=1 +EventBatch gen=3 m=18446744073709551615 time=40 size=6 +Frequency freq=500000000 +EventBatch gen=3 m=18446744073709551615 time=41 size=1 +Stacks +EventBatch gen=3 m=18446744073709551615 time=42 size=1 +Strings diff --git a/src/internal/trace/testdata/tests/go125-sync.test b/src/internal/trace/testdata/tests/go125-sync.test new file mode 100644 index 0000000000..dac3723b62 --- /dev/null +++ b/src/internal/trace/testdata/tests/go125-sync.test @@ -0,0 +1,32 @@ +-- expect -- +SUCCESS +-- trace -- +Trace Go1.25 +EventBatch gen=1 m=18446744073709551615 time=9 size=16 +Sync +Frequency freq=1000000000 +ClockSnapshot dt=1 mono=99 sec=1740755049 nsec=123 +EventBatch gen=1 m=1 time=15 size=4 +ProcStatus dt=1 p=0 pstatus=1 +EventBatch gen=1 m=18446744073709551615 time=11 size=1 +Stacks +EventBatch gen=1 m=18446744073709551615 time=12 size=1 +Strings +EventBatch gen=2 m=18446744073709551615 time=19 size=17 +Sync +Frequency freq=500000000 +ClockSnapshot dt=1 mono=199 sec=1740755050 nsec=123 +EventBatch gen=2 m=18446744073709551615 time=21 size=1 +Stacks +EventBatch gen=2 m=18446744073709551615 time=22 size=1 +Strings +EventBatch gen=3 m=18446744073709551615 time=29 size=17 +Sync +Frequency freq=500000000 +ClockSnapshot dt=1 mono=299 sec=1740755051 nsec=123 +EventBatch gen=3 m=1 time=40 size=4 +ProcStatus dt=1 p=0 pstatus=1 +EventBatch gen=3 m=18446744073709551615 time=31 size=1 +Stacks +EventBatch gen=3 m=18446744073709551615 time=32 size=1 +Strings From bfb8f1327466ac9075a5c2f4fba72ebeebe8023b Mon Sep 17 00:00:00 2001 From: Mark Freeman Date: Mon, 19 May 2025 18:00:31 -0400 Subject: [PATCH 06/99] internal/pkgbits: indent productions and hoist some types up The types being hoisted are those which cannot be referenced; that is, where Ref[T] is illegal. These are most clearly owned by pkgbits. The types which follow are those which can be referenced. Referenceable types are more hazy due to the reference mechanism of UIR - sections. These are a detail of the UIR file format and are surfaced directly to importers. I suspect that pkgbits would benefit from a reference mechanism not dependent on sections. This would permit us to push down many types from the noder into pkgbits, reducing the interface surface without giving up deduplication. Change-Id: Ifaf5cd9de20c767ad0941413385b308d628aac6c Reviewed-on: https://go-review.googlesource.com/c/go/+/674635 Auto-Submit: Mark Freeman TryBot-Bypass: Mark Freeman Reviewed-by: Robert Griesemer --- src/internal/pkgbits/doc.go | 132 ++++++++++++++++++------------------ 1 file changed, 66 insertions(+), 66 deletions(-) diff --git a/src/internal/pkgbits/doc.go b/src/internal/pkgbits/doc.go index bd05daa3a6..5c2a937afa 100644 --- a/src/internal/pkgbits/doc.go +++ b/src/internal/pkgbits/doc.go @@ -8,88 +8,88 @@ package pkgbits. The most basic primitives are laid out as below. -Bool = [ Sync ] byte . -Int64 = [ Sync ] zvarint . -Uint64 = [ Sync ] uvarint . + Bool = [ Sync ] byte . + Int64 = [ Sync ] zvarint . + Uint64 = [ Sync ] uvarint . -zvarint = (* a zig-zag encoded signed variable-width integer *) . -uvarint = (* an unsigned variable-width integer *) . - -# Strings -A string is a series of bytes. - -// TODO(markfreeman): Does this need a marker? -String = { byte } . - -Strings are typically not encoded directly. Rather, they are deduplicated -during encoding and referenced where needed; this process is called interning. - -StringRef = [ Sync ] Ref[String] . - -Note that StringRef is *not* equivalent to Ref[String] due to the extra marker. + zvarint = (* a zig-zag encoded signed variable-width integer *) . + uvarint = (* an unsigned variable-width integer *) . # References References specify the location of a value. While the representation here is fixed, the interpretation of a reference is left to other packages. -Ref[T] = [ Sync ] Uint64 . // points to a value of type T - -# Slices -Slices are a convenience for encoding a series of values of the same type. - -// TODO(markfreeman): Does this need a marker? -Slice[T] = Uint64 // the number of values in the slice - { T } // the values - . - -# Constants -Constants appear as defined via the package constant. - -Constant = [ Sync ] - Bool // whether the constant is a complex number - Scalar // the real part - [ Scalar ] // if complex, the imaginary part - . - -A scalar represents a value using one of several potential formats. The exact -format and interpretation is distinguished by a code preceding the value. - -Scalar = [ Sync ] - Uint64 // the code indicating the type of Val - Val - . - -Val = Bool - | Int64 - | StringRef - | Term // big integer - | Term Term // big ratio, numerator / denominator - | BigBytes // big float, precision 512 - . - -Term = BigBytes - Bool // whether the term is negative - . - -BigBytes = StringRef . // bytes of a big value + Ref[T] = [ Sync ] Uint64 . // points to a value of type T # Markers -Markers provide a mechanism for asserting that encoders and decoders are -synchronized. If an unexpected marker is found, decoding panics. +Markers provide a mechanism for asserting that encoders and decoders +are synchronized. If an unexpected marker is found, decoding panics. -Sync = uvarint // indicates what should follow if synchronized - WriterPCs - . + Sync = uvarint // indicates what should follow if synchronized + WriterPCs + . A marker also records a configurable number of program counters (PCs) during encoding to assist with debugging. -WriterPCs = uvarint // the number of PCs that follow - { uvarint } // the PCs - . + WriterPCs = uvarint // the number of PCs that follow + { uvarint } // the PCs + . Note that markers are always defined using terminals — they never contain a marker themselves. + +# Strings +A string is a series of bytes. + + // TODO(markfreeman): Does this need a marker? + String = { byte } . + +Strings are typically not encoded directly. Rather, they are deduplicated +during encoding and referenced where needed; this process is called interning. + + StringRef = [ Sync ] Ref[String] . + +Note that StringRef is *not* equivalent to Ref[String] due to the extra marker. + +# Slices +Slices are a convenience for encoding a series of values of the same type. + + // TODO(markfreeman): Does this need a marker? + Slice[T] = Uint64 // the number of values in the slice + { T } // the values + . + +# Constants +Constants appear as defined via the package constant. + + Constant = [ Sync ] + Bool // whether the constant is a complex number + Scalar // the real part + [ Scalar ] // if complex, the imaginary part + . + +A scalar represents a value using one of several potential formats. The exact +format and interpretation is distinguished by a code preceding the value. + + Scalar = [ Sync ] + Uint64 // the code indicating the type of Val + Val + . + + Val = Bool + | Int64 + | StringRef + | Term // big integer + | Term Term // big ratio, numerator / denominator + | BigBytes // big float, precision 512 + . + + Term = BigBytes + Bool // whether the term is negative + . + + BigBytes = StringRef . // bytes of a big value */ // Package pkgbits implements low-level coding abstractions for Unified IR's From 0810fd2d9282dda12532e249c931b36a2d2526ed Mon Sep 17 00:00:00 2001 From: Guoqi Chen Date: Thu, 16 Nov 2023 17:28:46 +0800 Subject: [PATCH 07/99] cmd/internal/obj/loong64: remove unused register alias definitions Change-Id: Ie788747372cd47cb3780e75b35750bb08bd166fc Reviewed-on: https://go-review.googlesource.com/c/go/+/542835 Reviewed-by: sophie zhao Reviewed-by: David Chase LUCI-TryBot-Result: Go LUCI Reviewed-by: Meidan Li Auto-Submit: abner chenc Reviewed-by: Michael Knyszek --- src/cmd/internal/obj/loong64/a.out.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/cmd/internal/obj/loong64/a.out.go b/src/cmd/internal/obj/loong64/a.out.go index d46d6ce962..193993ec4d 100644 --- a/src/cmd/internal/obj/loong64/a.out.go +++ b/src/cmd/internal/obj/loong64/a.out.go @@ -225,8 +225,6 @@ const ( REGZERO = REG_R0 // set to zero REGLINK = REG_R1 REGSP = REG_R3 - REGRET = REG_R20 // not use - REGARG = -1 // -1 disables passing the first argument in register REGRT1 = REG_R20 // reserved for runtime, duffzero and duffcopy REGRT2 = REG_R21 // reserved for runtime, duffcopy REGCTXT = REG_R29 // context for closures From 4ce1c8e9e1aab695bb0da506f2de336a5caa81f6 Mon Sep 17 00:00:00 2001 From: Xiaolin Zhao Date: Tue, 20 May 2025 10:28:17 +0800 Subject: [PATCH 08/99] cmd/compile: add rules about ORN and ANDN MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reduce the number of go toolchain instructions on loong64 as follows. file before after Δ % addr2line 279880 279776 -104 -0.0372% asm 556638 556410 -228 -0.0410% buildid 272272 272072 -200 -0.0735% cgo 481522 481318 -204 -0.0424% compile 2457788 2457580 -208 -0.0085% covdata 323384 323280 -104 -0.0322% cover 518450 518234 -216 -0.0417% dist 340790 340686 -104 -0.0305% distpack 282456 282252 -204 -0.0722% doc 789932 789688 -244 -0.0309% fix 324332 324228 -104 -0.0321% link 704622 704390 -232 -0.0329% nm 277132 277028 -104 -0.0375% objdump 507862 507758 -104 -0.0205% pack 221774 221674 -100 -0.0451% pprof 1469816 1469552 -264 -0.0180% test2json 254836 254732 -104 -0.0408% trace 1100002 1099738 -264 -0.0240% vet 781078 780874 -204 -0.0261% go 1529116 1528848 -268 -0.0175% gofmt 318556 318448 -108 -0.0339% total 13792238 13788566 -3672 -0.0266% Change-Id: I23fb3ebd41309252c7075e57ea7094e79f8c4fef Reviewed-on: https://go-review.googlesource.com/c/go/+/674335 Reviewed-by: abner chenc Reviewed-by: Michael Knyszek LUCI-TryBot-Result: Go LUCI Auto-Submit: abner chenc Reviewed-by: David Chase Reviewed-by: Meidan Li --- src/cmd/compile/internal/loong64/ssa.go | 2 + .../compile/internal/ssa/_gen/LOONG64.rules | 3 ++ .../compile/internal/ssa/_gen/LOONG64Ops.go | 2 + src/cmd/compile/internal/ssa/opGen.go | 30 ++++++++++++ .../compile/internal/ssa/rewriteLOONG64.go | 47 +++++++++++++++++++ test/codegen/bits.go | 6 +++ 6 files changed, 90 insertions(+) diff --git a/src/cmd/compile/internal/loong64/ssa.go b/src/cmd/compile/internal/loong64/ssa.go index 03d7a1082a..a71a5c3e43 100644 --- a/src/cmd/compile/internal/loong64/ssa.go +++ b/src/cmd/compile/internal/loong64/ssa.go @@ -165,6 +165,8 @@ func ssaGenValue(s *ssagen.State, v *ssa.Value) { ssa.OpLOONG64OR, ssa.OpLOONG64XOR, ssa.OpLOONG64NOR, + ssa.OpLOONG64ANDN, + ssa.OpLOONG64ORN, ssa.OpLOONG64SLL, ssa.OpLOONG64SLLV, ssa.OpLOONG64SRL, diff --git a/src/cmd/compile/internal/ssa/_gen/LOONG64.rules b/src/cmd/compile/internal/ssa/_gen/LOONG64.rules index bec8493b99..cab63a503f 100644 --- a/src/cmd/compile/internal/ssa/_gen/LOONG64.rules +++ b/src/cmd/compile/internal/ssa/_gen/LOONG64.rules @@ -782,6 +782,9 @@ (AND x x) => x (OR x x) => x (XOR x x) => (MOVVconst [0]) +(ORN x (MOVVconst [-1])) => x +(AND x (NORconst [0] y)) => (ANDN x y) +(OR x (NORconst [0] y)) => (ORN x y) // Fold negation into subtraction. (NEGV (SUBV x y)) => (SUBV y x) diff --git a/src/cmd/compile/internal/ssa/_gen/LOONG64Ops.go b/src/cmd/compile/internal/ssa/_gen/LOONG64Ops.go index dbfbcf1fd0..5ef304b4f9 100644 --- a/src/cmd/compile/internal/ssa/_gen/LOONG64Ops.go +++ b/src/cmd/compile/internal/ssa/_gen/LOONG64Ops.go @@ -221,6 +221,8 @@ func init() { {name: "XORconst", argLength: 1, reg: gp11, asm: "XOR", aux: "Int64", typ: "UInt64"}, // arg0 ^ auxInt {name: "NOR", argLength: 2, reg: gp21, asm: "NOR", commutative: true}, // ^(arg0 | arg1) {name: "NORconst", argLength: 1, reg: gp11, asm: "NOR", aux: "Int64"}, // ^(arg0 | auxInt) + {name: "ANDN", argLength: 2, reg: gp21, asm: "ANDN"}, // arg0 & ^arg1 + {name: "ORN", argLength: 2, reg: gp21, asm: "ORN"}, // arg0 | ^arg1 {name: "FMADDF", argLength: 3, reg: fp31, asm: "FMADDF", commutative: true, typ: "Float32"}, // (arg0 * arg1) + arg2 {name: "FMADDD", argLength: 3, reg: fp31, asm: "FMADDD", commutative: true, typ: "Float64"}, // (arg0 * arg1) + arg2 diff --git a/src/cmd/compile/internal/ssa/opGen.go b/src/cmd/compile/internal/ssa/opGen.go index 615aca3ba6..37af79f9a3 100644 --- a/src/cmd/compile/internal/ssa/opGen.go +++ b/src/cmd/compile/internal/ssa/opGen.go @@ -1810,6 +1810,8 @@ const ( OpLOONG64XORconst OpLOONG64NOR OpLOONG64NORconst + OpLOONG64ANDN + OpLOONG64ORN OpLOONG64FMADDF OpLOONG64FMADDD OpLOONG64FMSUBF @@ -24379,6 +24381,34 @@ var opcodeTable = [...]opInfo{ }, }, }, + { + name: "ANDN", + argLen: 2, + asm: loong64.AANDN, + reg: regInfo{ + inputs: []inputInfo{ + {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 + {1, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 + }, + outputs: []outputInfo{ + {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31 + }, + }, + }, + { + name: "ORN", + argLen: 2, + asm: loong64.AORN, + reg: regInfo{ + inputs: []inputInfo{ + {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 + {1, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 + }, + outputs: []outputInfo{ + {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31 + }, + }, + }, { name: "FMADDF", argLen: 3, diff --git a/src/cmd/compile/internal/ssa/rewriteLOONG64.go b/src/cmd/compile/internal/ssa/rewriteLOONG64.go index f6575a8181..7c46ed7727 100644 --- a/src/cmd/compile/internal/ssa/rewriteLOONG64.go +++ b/src/cmd/compile/internal/ssa/rewriteLOONG64.go @@ -436,6 +436,8 @@ func rewriteValueLOONG64(v *Value) bool { return rewriteValueLOONG64_OpLOONG64NORconst(v) case OpLOONG64OR: return rewriteValueLOONG64_OpLOONG64OR(v) + case OpLOONG64ORN: + return rewriteValueLOONG64_OpLOONG64ORN(v) case OpLOONG64ORconst: return rewriteValueLOONG64_OpLOONG64ORconst(v) case OpLOONG64REMV: @@ -1926,6 +1928,21 @@ func rewriteValueLOONG64_OpLOONG64AND(v *Value) bool { v.copyOf(x) return true } + // match: (AND x (NORconst [0] y)) + // result: (ANDN x y) + for { + for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { + x := v_0 + if v_1.Op != OpLOONG64NORconst || auxIntToInt64(v_1.AuxInt) != 0 { + continue + } + y := v_1.Args[0] + v.reset(OpLOONG64ANDN) + v.AddArg2(x, y) + return true + } + break + } return false } func rewriteValueLOONG64_OpLOONG64ANDconst(v *Value) bool { @@ -5583,6 +5600,36 @@ func rewriteValueLOONG64_OpLOONG64OR(v *Value) bool { v.copyOf(x) return true } + // match: (OR x (NORconst [0] y)) + // result: (ORN x y) + for { + for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { + x := v_0 + if v_1.Op != OpLOONG64NORconst || auxIntToInt64(v_1.AuxInt) != 0 { + continue + } + y := v_1.Args[0] + v.reset(OpLOONG64ORN) + v.AddArg2(x, y) + return true + } + break + } + return false +} +func rewriteValueLOONG64_OpLOONG64ORN(v *Value) bool { + v_1 := v.Args[1] + v_0 := v.Args[0] + // match: (ORN x (MOVVconst [-1])) + // result: x + for { + x := v_0 + if v_1.Op != OpLOONG64MOVVconst || auxIntToInt64(v_1.AuxInt) != -1 { + break + } + v.copyOf(x) + return true + } return false } func rewriteValueLOONG64_OpLOONG64ORconst(v *Value) bool { diff --git a/test/codegen/bits.go b/test/codegen/bits.go index 95e0ed85e4..7974f471fc 100644 --- a/test/codegen/bits.go +++ b/test/codegen/bits.go @@ -332,6 +332,7 @@ func op_eon(x, y, z uint32, a []uint32, n, m uint64) uint64 { func op_orn(x, y uint32) uint32 { // arm64:`ORN\t`,-`ORR` + // loong64:"ORN"\t,-"OR\t" return x | ^y } @@ -344,6 +345,11 @@ func op_nor(x int64, a []int64) { a[2] = ^(0x12 | 0x34) } +func op_andn(x, y uint32) uint32 { + // loong64:"ANDN\t",-"AND\t" + return x &^ y +} + // check bitsets func bitSetPowerOf2Test(x int) bool { // amd64:"BTL\t[$]3" From 26e05b95c2a3ae69e6dc0b6169a931e96253917a Mon Sep 17 00:00:00 2001 From: Mark Freeman Date: Tue, 20 May 2025 14:33:03 -0400 Subject: [PATCH 09/99] internal/pkgbits: specify that RelIdx is an element index Without this, it's not clear what this is relative to or the granularity of the index. Change-Id: Ibaabe47e089f0ba9b084523969c5347ed4c9dbee Reviewed-on: https://go-review.googlesource.com/c/go/+/674636 Auto-Submit: Mark Freeman Reviewed-by: Robert Griesemer LUCI-TryBot-Result: Go LUCI --- src/internal/pkgbits/decoder.go | 30 +++++++++++++++--------------- src/internal/pkgbits/encoder.go | 22 +++++++++++----------- src/internal/pkgbits/reloc.go | 18 ++++++++++++------ 3 files changed, 38 insertions(+), 32 deletions(-) diff --git a/src/internal/pkgbits/decoder.go b/src/internal/pkgbits/decoder.go index bbda6e9285..f9e37b9e1e 100644 --- a/src/internal/pkgbits/decoder.go +++ b/src/internal/pkgbits/decoder.go @@ -131,7 +131,7 @@ func (pr *PkgDecoder) Fingerprint() [8]byte { // AbsIdx returns the absolute index for the given (section, index) // pair. -func (pr *PkgDecoder) AbsIdx(k SectionKind, idx RelIndex) int { +func (pr *PkgDecoder) AbsIdx(k SectionKind, idx RelElemIdx) int { absIdx := int(idx) if k > 0 { absIdx += int(pr.elemEndsEnds[k-1]) @@ -144,7 +144,7 @@ func (pr *PkgDecoder) AbsIdx(k SectionKind, idx RelIndex) int { // DataIdx returns the raw element bitstream for the given (section, // index) pair. -func (pr *PkgDecoder) DataIdx(k SectionKind, idx RelIndex) string { +func (pr *PkgDecoder) DataIdx(k SectionKind, idx RelElemIdx) string { absIdx := pr.AbsIdx(k, idx) var start uint32 @@ -157,13 +157,13 @@ func (pr *PkgDecoder) DataIdx(k SectionKind, idx RelIndex) string { } // StringIdx returns the string value for the given string index. -func (pr *PkgDecoder) StringIdx(idx RelIndex) string { +func (pr *PkgDecoder) StringIdx(idx RelElemIdx) string { return pr.DataIdx(SectionString, idx) } // NewDecoder returns a Decoder for the given (section, index) pair, // and decodes the given SyncMarker from the element bitstream. -func (pr *PkgDecoder) NewDecoder(k SectionKind, idx RelIndex, marker SyncMarker) Decoder { +func (pr *PkgDecoder) NewDecoder(k SectionKind, idx RelElemIdx, marker SyncMarker) Decoder { r := pr.NewDecoderRaw(k, idx) r.Sync(marker) return r @@ -173,7 +173,7 @@ func (pr *PkgDecoder) NewDecoder(k SectionKind, idx RelIndex, marker SyncMarker) // and decodes the given SyncMarker from the element bitstream. // If possible the Decoder should be RetireDecoder'd when it is no longer // needed, this will avoid heap allocations. -func (pr *PkgDecoder) TempDecoder(k SectionKind, idx RelIndex, marker SyncMarker) Decoder { +func (pr *PkgDecoder) TempDecoder(k SectionKind, idx RelElemIdx, marker SyncMarker) Decoder { r := pr.TempDecoderRaw(k, idx) r.Sync(marker) return r @@ -187,7 +187,7 @@ func (pr *PkgDecoder) RetireDecoder(d *Decoder) { // NewDecoderRaw returns a Decoder for the given (section, index) pair. // // Most callers should use NewDecoder instead. -func (pr *PkgDecoder) NewDecoderRaw(k SectionKind, idx RelIndex) Decoder { +func (pr *PkgDecoder) NewDecoderRaw(k SectionKind, idx RelElemIdx) Decoder { r := Decoder{ common: pr, k: k, @@ -199,13 +199,13 @@ func (pr *PkgDecoder) NewDecoderRaw(k SectionKind, idx RelIndex) Decoder { r.Relocs = make([]RefTableEntry, r.Len()) for i := range r.Relocs { r.Sync(SyncReloc) - r.Relocs[i] = RefTableEntry{SectionKind(r.Len()), RelIndex(r.Len())} + r.Relocs[i] = RefTableEntry{SectionKind(r.Len()), RelElemIdx(r.Len())} } return r } -func (pr *PkgDecoder) TempDecoderRaw(k SectionKind, idx RelIndex) Decoder { +func (pr *PkgDecoder) TempDecoderRaw(k SectionKind, idx RelElemIdx) Decoder { r := Decoder{ common: pr, k: k, @@ -223,7 +223,7 @@ func (pr *PkgDecoder) TempDecoderRaw(k SectionKind, idx RelIndex) Decoder { } for i := range r.Relocs { r.Sync(SyncReloc) - r.Relocs[i] = RefTableEntry{SectionKind(r.Len()), RelIndex(r.Len())} + r.Relocs[i] = RefTableEntry{SectionKind(r.Len()), RelElemIdx(r.Len())} } return r @@ -238,7 +238,7 @@ type Decoder struct { Data strings.Reader k SectionKind - Idx RelIndex + Idx RelElemIdx } func (r *Decoder) checkErr(err error) { @@ -292,7 +292,7 @@ func (r *Decoder) rawVarint() int64 { return x } -func (r *Decoder) rawReloc(k SectionKind, idx int) RelIndex { +func (r *Decoder) rawReloc(k SectionKind, idx int) RelElemIdx { e := r.Relocs[idx] assert(e.Kind == k) return e.Idx @@ -401,7 +401,7 @@ func (r *Decoder) Code(mark SyncMarker) int { // Reloc decodes a relocation of expected section k from the element // bitstream and returns an index to the referenced element. -func (r *Decoder) Reloc(k SectionKind) RelIndex { +func (r *Decoder) Reloc(k SectionKind) RelElemIdx { r.Sync(SyncUseReloc) return r.rawReloc(k, r.Len()) } @@ -478,7 +478,7 @@ func (r *Decoder) bigFloat() *big.Float { // PeekPkgPath returns the package path for the specified package // index. -func (pr *PkgDecoder) PeekPkgPath(idx RelIndex) string { +func (pr *PkgDecoder) PeekPkgPath(idx RelElemIdx) string { var path string { r := pr.TempDecoder(SectionPkg, idx, SyncPkgDef) @@ -493,8 +493,8 @@ func (pr *PkgDecoder) PeekPkgPath(idx RelIndex) string { // PeekObj returns the package path, object name, and CodeObj for the // specified object index. -func (pr *PkgDecoder) PeekObj(idx RelIndex) (string, string, CodeObj) { - var ridx RelIndex +func (pr *PkgDecoder) PeekObj(idx RelElemIdx) (string, string, CodeObj) { + var ridx RelElemIdx var name string var rcode int { diff --git a/src/internal/pkgbits/encoder.go b/src/internal/pkgbits/encoder.go index 3d1223bb63..2ecac1c788 100644 --- a/src/internal/pkgbits/encoder.go +++ b/src/internal/pkgbits/encoder.go @@ -27,7 +27,7 @@ type PkgEncoder struct { // stringsIdx maps previously encoded strings to their index within // the RelocString section, to allow deduplication. That is, // elems[RelocString][stringsIdx[s]] == s (if present). - stringsIdx map[string]RelIndex + stringsIdx map[string]RelElemIdx // syncFrames is the number of frames to write at each sync // marker. A negative value means sync markers are omitted. @@ -47,7 +47,7 @@ func (pw *PkgEncoder) SyncMarkers() bool { return pw.syncFrames >= 0 } func NewPkgEncoder(version Version, syncFrames int) PkgEncoder { return PkgEncoder{ version: version, - stringsIdx: make(map[string]RelIndex), + stringsIdx: make(map[string]RelElemIdx), syncFrames: syncFrames, } } @@ -106,13 +106,13 @@ func (pw *PkgEncoder) DumpTo(out0 io.Writer) (fingerprint [8]byte) { // StringIdx adds a string value to the strings section, if not // already present, and returns its index. -func (pw *PkgEncoder) StringIdx(s string) RelIndex { +func (pw *PkgEncoder) StringIdx(s string) RelElemIdx { if idx, ok := pw.stringsIdx[s]; ok { assert(pw.elems[SectionString][idx] == s) return idx } - idx := RelIndex(len(pw.elems[SectionString])) + idx := RelElemIdx(len(pw.elems[SectionString])) pw.elems[SectionString] = append(pw.elems[SectionString], s) pw.stringsIdx[s] = idx return idx @@ -132,7 +132,7 @@ func (pw *PkgEncoder) NewEncoder(k SectionKind, marker SyncMarker) *Encoder { // // Most callers should use NewEncoder instead. func (pw *PkgEncoder) NewEncoderRaw(k SectionKind) *Encoder { - idx := RelIndex(len(pw.elems[k])) + idx := RelElemIdx(len(pw.elems[k])) pw.elems[k] = append(pw.elems[k], "") // placeholder return &Encoder{ @@ -154,11 +154,11 @@ type Encoder struct { encodingRelocHeader bool k SectionKind - Idx RelIndex // index within relocation section + Idx RelElemIdx // index within relocation section } -// Flush finalizes the element's bitstream and returns its [RelIndex]. -func (w *Encoder) Flush() RelIndex { +// Flush finalizes the element's bitstream and returns its [RelElemIdx]. +func (w *Encoder) Flush() RelElemIdx { var sb strings.Builder // Backup the data so we write the relocations at the front. @@ -210,7 +210,7 @@ func (w *Encoder) rawVarint(x int64) { w.rawUvarint(ux) } -func (w *Encoder) rawReloc(k SectionKind, idx RelIndex) int { +func (w *Encoder) rawReloc(k SectionKind, idx RelElemIdx) int { e := RefTableEntry{k, idx} if w.RelocMap != nil { if i, ok := w.RelocMap[e]; ok { @@ -302,7 +302,7 @@ func (w *Encoder) Uint(x uint) { w.Uint64(uint64(x)) } // Note: Only the index is formally written into the element // bitstream, so bitstream decoders must know from context which // section an encoded relocation refers to. -func (w *Encoder) Reloc(k SectionKind, idx RelIndex) { +func (w *Encoder) Reloc(k SectionKind, idx RelElemIdx) { w.Sync(SyncUseReloc) w.Len(w.rawReloc(k, idx)) } @@ -325,7 +325,7 @@ func (w *Encoder) String(s string) { // StringRef writes a reference to the given index, which must be a // previously encoded string value. -func (w *Encoder) StringRef(idx RelIndex) { +func (w *Encoder) StringRef(idx RelElemIdx) { w.Sync(SyncString) w.Reloc(SectionString, idx) } diff --git a/src/internal/pkgbits/reloc.go b/src/internal/pkgbits/reloc.go index d132f4e995..5f6ec2ab79 100644 --- a/src/internal/pkgbits/reloc.go +++ b/src/internal/pkgbits/reloc.go @@ -28,20 +28,26 @@ const ( // particular section. type Index int32 -// TODO(markfreeman): Make RelIndex its own named type once we point external -// references from Index to RelIndex. -type RelIndex = Index +// An AbsElemIdx, or absolute element index, is an index into the elements +// that is not relative to some other index. +type AbsElemIdx = uint32 +// TODO(markfreeman): Make this its own type. +// A RelElemIdx, or relative element index, is an index into the elements +// relative to some other index, such as the start of a section. +type RelElemIdx = Index + +// TODO(markfreeman): Isn't this strictly less efficient than an AbsElemIdx? // A RefTableEntry is an entry in an element's reference table. All // elements are preceded by a reference table which provides locations // for referenced elements. type RefTableEntry struct { Kind SectionKind - Idx RelIndex + Idx RelElemIdx } // Reserved indices within the [SectionMeta] section. const ( - PublicRootIdx RelIndex = 0 - PrivateRootIdx RelIndex = 1 + PublicRootIdx RelElemIdx = 0 + PrivateRootIdx RelElemIdx = 1 ) From 896097000912761dbd31cead2bec99f17534f521 Mon Sep 17 00:00:00 2001 From: Damien Neil Date: Fri, 28 Mar 2025 16:40:34 -0700 Subject: [PATCH 10/99] os: add Root.RemoveAll For #67002 Change-Id: If59dab4fd934a115d8ff383826525330de750b54 Reviewed-on: https://go-review.googlesource.com/c/go/+/661595 Reviewed-by: Alan Donovan LUCI-TryBot-Result: Go LUCI Auto-Submit: Damien Neil --- api/next/67002.txt | 1 + doc/next/6-stdlib/99-minor/os/67002.md | 1 + src/os/removeall_at.go | 8 +-- src/os/root.go | 6 ++ src/os/root_noopenat.go | 20 ++++++ src/os/root_openat.go | 22 ++++++ src/os/root_test.go | 92 ++++++++++++++++++++++++++ src/os/root_unix.go | 3 + src/os/root_windows.go | 3 + 9 files changed, 151 insertions(+), 5 deletions(-) diff --git a/api/next/67002.txt b/api/next/67002.txt index 112f477e8e..274f200538 100644 --- a/api/next/67002.txt +++ b/api/next/67002.txt @@ -4,5 +4,6 @@ pkg os, method (*Root) Chtimes(string, time.Time, time.Time) error #67002 pkg os, method (*Root) Lchown(string, int, int) error #67002 pkg os, method (*Root) Link(string, string) error #67002 pkg os, method (*Root) Readlink(string) (string, error) #67002 +pkg os, method (*Root) RemoveAll(string) error #67002 pkg os, method (*Root) Rename(string, string) error #67002 pkg os, method (*Root) Symlink(string, string) error #67002 diff --git a/doc/next/6-stdlib/99-minor/os/67002.md b/doc/next/6-stdlib/99-minor/os/67002.md index 84661c6c40..62f1b36054 100644 --- a/doc/next/6-stdlib/99-minor/os/67002.md +++ b/doc/next/6-stdlib/99-minor/os/67002.md @@ -6,5 +6,6 @@ The [os.Root] type supports the following additional methods: * [os.Root.Lchown] * [os.Root.Link] * [os.Root.Readlink] + * [os.Root.RemoveAll] * [os.Root.Rename] * [os.Root.Symlink] diff --git a/src/os/removeall_at.go b/src/os/removeall_at.go index 0d9ebd2e4f..a613aeeb91 100644 --- a/src/os/removeall_at.go +++ b/src/os/removeall_at.go @@ -44,7 +44,7 @@ func removeAll(path string) error { } defer parent.Close() - if err := removeAllFrom(parent, base); err != nil { + if err := removeAllFrom(sysfdType(parent.Fd()), base); err != nil { if pathErr, ok := err.(*PathError); ok { pathErr.Path = parentDir + string(PathSeparator) + pathErr.Path err = pathErr @@ -54,9 +54,7 @@ func removeAll(path string) error { return nil } -func removeAllFrom(parent *File, base string) error { - parentFd := sysfdType(parent.Fd()) - +func removeAllFrom(parentFd sysfdType, base string) error { // Simple case: if Unlink (aka remove) works, we're done. err := removefileat(parentFd, base) if err == nil || IsNotExist(err) { @@ -109,7 +107,7 @@ func removeAllFrom(parent *File, base string) error { respSize = len(names) for _, name := range names { - err := removeAllFrom(file, name) + err := removeAllFrom(sysfdType(file.Fd()), name) if err != nil { if pathErr, ok := err.(*PathError); ok { pathErr.Path = base + string(PathSeparator) + pathErr.Path diff --git a/src/os/root.go b/src/os/root.go index fb2bb8350a..9b9deaecc4 100644 --- a/src/os/root.go +++ b/src/os/root.go @@ -177,6 +177,12 @@ func (r *Root) Remove(name string) error { return rootRemove(r, name) } +// RemoveAll removes the named file or directory and any children that it contains. +// See [RemoveAll] for more details. +func (r *Root) RemoveAll(name string) error { + return rootRemoveAll(r, name) +} + // Stat returns a [FileInfo] describing the named file in the root. // See [Stat] for more details. func (r *Root) Stat(name string) (FileInfo, error) { diff --git a/src/os/root_noopenat.go b/src/os/root_noopenat.go index 47d6ebfa82..b34416284f 100644 --- a/src/os/root_noopenat.go +++ b/src/os/root_noopenat.go @@ -9,6 +9,7 @@ package os import ( "errors" "sync/atomic" + "syscall" "time" ) @@ -156,6 +157,25 @@ func rootRemove(r *Root, name string) error { return nil } +func rootRemoveAll(r *Root, name string) error { + if endsWithDot(name) { + // Consistency with os.RemoveAll: Return EINVAL when trying to remove . + return &PathError{Op: "RemoveAll", Path: name, Err: syscall.EINVAL} + } + if err := checkPathEscapesLstat(r, name); err != nil { + if err == syscall.ENOTDIR { + // Some intermediate path component is not a directory. + // RemoveAll treats this as success (since the target doesn't exist). + return nil + } + return &PathError{Op: "RemoveAll", Path: name, Err: err} + } + if err := RemoveAll(joinPath(r.root.name, name)); err != nil { + return &PathError{Op: "RemoveAll", Path: name, Err: underlyingError(err)} + } + return nil +} + func rootReadlink(r *Root, name string) (string, error) { if err := checkPathEscapesLstat(r, name); err != nil { return "", &PathError{Op: "readlinkat", Path: name, Err: err} diff --git a/src/os/root_openat.go b/src/os/root_openat.go index db2ae2295f..b57506a2eb 100644 --- a/src/os/root_openat.go +++ b/src/os/root_openat.go @@ -138,6 +138,28 @@ func rootRemove(r *Root, name string) error { return nil } +func rootRemoveAll(r *Root, name string) error { + // Consistency with os.RemoveAll: Strip trailing /s from the name, + // so RemoveAll("not_a_directory/") succeeds. + for len(name) > 0 && IsPathSeparator(name[len(name)-1]) { + name = name[:len(name)-1] + } + if endsWithDot(name) { + // Consistency with os.RemoveAll: Return EINVAL when trying to remove . + return &PathError{Op: "RemoveAll", Path: name, Err: syscall.EINVAL} + } + _, err := doInRoot(r, name, func(parent sysfdType, name string) (struct{}, error) { + return struct{}{}, removeAllFrom(parent, name) + }) + if IsNotExist(err) { + return nil + } + if err != nil { + return &PathError{Op: "RemoveAll", Path: name, Err: underlyingError(err)} + } + return err +} + func rootRename(r *Root, oldname, newname string) error { _, err := doInRoot(r, oldname, func(oldparent sysfdType, oldname string) (struct{}, error) { _, err := doInRoot(r, newname, func(newparent sysfdType, newname string) (struct{}, error) { diff --git a/src/os/root_test.go b/src/os/root_test.go index 530d5abda6..c75a094730 100644 --- a/src/os/root_test.go +++ b/src/os/root_test.go @@ -630,6 +630,46 @@ func TestRootRemoveDirectory(t *testing.T) { } } +func TestRootRemoveAll(t *testing.T) { + for _, test := range rootTestCases { + test.run(t, func(t *testing.T, target string, root *os.Root) { + wantError := test.wantError + if test.ltarget != "" { + // Remove doesn't follow symlinks in the final path component, + // so it will successfully remove ltarget. + wantError = false + target = filepath.Join(root.Name(), test.ltarget) + } else if target != "" { + if err := os.Mkdir(target, 0o777); err != nil { + t.Fatal(err) + } + if err := os.WriteFile(filepath.Join(target, "file"), nil, 0o666); err != nil { + t.Fatal(err) + } + } + targetExists := true + if _, err := root.Lstat(test.open); errors.Is(err, os.ErrNotExist) { + // If the target doesn't exist, RemoveAll succeeds rather + // than returning ErrNotExist. + targetExists = false + wantError = false + } + + err := root.RemoveAll(test.open) + if errEndsTest(t, err, wantError, "root.RemoveAll(%q)", test.open) { + return + } + if !targetExists { + return + } + _, err = os.Lstat(target) + if !errors.Is(err, os.ErrNotExist) { + t.Fatalf(`stat file removed with Root.Remove(%q): %v, want ErrNotExist`, test.open, err) + } + }) + } +} + func TestRootOpenFileAsRoot(t *testing.T) { dir := t.TempDir() target := filepath.Join(dir, "target") @@ -958,6 +998,9 @@ type rootConsistencyTest struct { // detailedErrorMismatch indicates that os.Root and the corresponding non-Root // function return different errors for this test. detailedErrorMismatch func(t *testing.T) bool + + // check is called before the test starts, and may t.Skip if necessary. + check func(t *testing.T) } var rootConsistencyTestCases = []rootConsistencyTest{{ @@ -1115,6 +1158,16 @@ var rootConsistencyTestCases = []rootConsistencyTest{{ // and os.Open returns "The file cannot be accessed by the system.". return runtime.GOOS == "windows" }, + check: func(t *testing.T) { + if runtime.GOOS == "windows" && strings.HasPrefix(t.Name(), "TestRootConsistencyRemoveAll/") { + // Root.RemoveAll notices that a/ is not a directory, + // and returns success. + // os.RemoveAll tries to open a/ and fails because + // it is not a regular file. + // The inconsistency here isn't worth fixing, so just skip this test. + t.Skip("known inconsistency on windows") + } + }, }, { name: "question mark", open: "?", @@ -1156,6 +1209,10 @@ func (test rootConsistencyTest) run(t *testing.T, f func(t *testing.T, path stri } t.Run(test.name, func(t *testing.T) { + if test.check != nil { + test.check(t) + } + dir1 := makefs(t, test.fs) dir2 := makefs(t, test.fs) if test.fsFunc != nil { @@ -1321,6 +1378,23 @@ func TestRootConsistencyRemove(t *testing.T) { } } +func TestRootConsistencyRemoveAll(t *testing.T) { + for _, test := range rootConsistencyTestCases { + if test.open == "." || test.open == "./" { + continue // can't remove the root itself + } + test.run(t, func(t *testing.T, path string, r *os.Root) (string, error) { + var err error + if r == nil { + err = os.RemoveAll(path) + } else { + err = r.RemoveAll(path) + } + return "", err + }) + } +} + func TestRootConsistencyStat(t *testing.T) { for _, test := range rootConsistencyTestCases { test.run(t, func(t *testing.T, path string, r *os.Root) (string, error) { @@ -1759,3 +1833,21 @@ func TestOpenInRoot(t *testing.T) { } } } + +func TestRootRemoveDot(t *testing.T) { + dir := t.TempDir() + root, err := os.OpenRoot(dir) + if err != nil { + t.Fatal(err) + } + defer root.Close() + if err := root.Remove("."); err == nil { + t.Errorf(`root.Remove(".") = %v, want error`, err) + } + if err := root.RemoveAll("."); err == nil { + t.Errorf(`root.RemoveAll(".") = %v, want error`, err) + } + if _, err := os.Stat(dir); err != nil { + t.Error(`root.Remove(All)?(".") removed the root`) + } +} diff --git a/src/os/root_unix.go b/src/os/root_unix.go index 74320451d5..45462c9e10 100644 --- a/src/os/root_unix.go +++ b/src/os/root_unix.go @@ -14,6 +14,9 @@ import ( "time" ) +// sysfdType is the native type of a file handle +// (int on Unix, syscall.Handle on Windows), +// permitting helper functions to be written portably. type sysfdType = int // openRootNolog is OpenRoot. diff --git a/src/os/root_windows.go b/src/os/root_windows.go index b096d78b68..3d3db1916e 100644 --- a/src/os/root_windows.go +++ b/src/os/root_windows.go @@ -77,6 +77,9 @@ func rootCleanPath(s string, prefix, suffix []string) (string, error) { return s, nil } +// sysfdType is the native type of a file handle +// (int on Unix, syscall.Handle on Windows), +// permitting helper functions to be written portably. type sysfdType = syscall.Handle // openRootNolog is OpenRoot. From 8b45a3f78b178ce66f419038a664cbd6a82ada54 Mon Sep 17 00:00:00 2001 From: Michael Anthony Knyszek Date: Tue, 20 May 2025 20:26:56 +0000 Subject: [PATCH 11/99] runtime: guarantee checkfinalizers test allocates in a shared tiny block Currently the checkfinalizers test (TestDetectCleanupOrFinalizerLeak) only *tries* to ensure the tiny alloc with a cleanup attached shares a block with other objects. However, what it does is insufficient, because it could get unlucky and have the last object allocated be the first object of a new block. This change changes the test to guarantee that a tiny object is not at the start of a fresh block by looking at the alignment of the object's pointer. If the object's pointer is odd, then that's good enough to know that it shares a block with something else, since the blocks themselves are aligned to a much higher power of two. This fixes a failure I've seen on the builders. Fixes #73810. Change-Id: Ieafdbb9cccb0d2dc3659a9a5d9d9233718461635 Reviewed-on: https://go-review.googlesource.com/c/go/+/674655 LUCI-TryBot-Result: Go LUCI Reviewed-by: Michael Pratt --- src/runtime/malloc.go | 5 ++++- src/runtime/testdata/testprog/checkfinalizers.go | 11 +++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/runtime/malloc.go b/src/runtime/malloc.go index 25caf0625b..abd94fda08 100644 --- a/src/runtime/malloc.go +++ b/src/runtime/malloc.go @@ -1672,7 +1672,10 @@ func postMallocgcDebug(x unsafe.Pointer, elemsize uintptr, typ *_type) { } // N.B. elemsize == 0 indicates a tiny allocation, since no new slot was - // allocated to fulfill this call to mallocgc. + // allocated to fulfill this call to mallocgc. This means checkfinalizer + // will only flag an error if there is actually any risk. If an allocation + // has the tiny block to itself, it will not get flagged, because we won't + // mark the block as a tiny block. if debug.checkfinalizers != 0 && elemsize == 0 { setTinyBlockContext(unsafe.Pointer(alignDown(uintptr(x), maxTinySize))) } diff --git a/src/runtime/testdata/testprog/checkfinalizers.go b/src/runtime/testdata/testprog/checkfinalizers.go index b542f575fe..a2fe104462 100644 --- a/src/runtime/testdata/testprog/checkfinalizers.go +++ b/src/runtime/testdata/testprog/checkfinalizers.go @@ -7,6 +7,7 @@ package main import ( "runtime" "runtime/debug" + "unsafe" ) func init() { @@ -40,10 +41,16 @@ func DetectFinalizerAndCleanupLeaks() { // Ensure we create an allocation into a tiny block that shares space among several values. var ctLeak *tiny - for i := 0; i < 18; i++ { + for { tinySink = ctLeak ctLeak = new(tiny) - *ctLeak = tiny(i) + *ctLeak = tiny(55) + // Make sure the address is an odd value. This is sufficient to + // be certain that we're sharing a block with another value and + // trip the detector. + if uintptr(unsafe.Pointer(ctLeak))%2 != 0 { + break + } } runtime.AddCleanup(ctLeak, func(_ struct{}) {}, struct{}{}) From 2a5ac1a993efc463efdce7996efd356dabf03a25 Mon Sep 17 00:00:00 2001 From: Michael Matloob Date: Wed, 21 May 2025 12:18:03 -0400 Subject: [PATCH 12/99] cmd/doc: allow go doc -http without package in current directory go doc tries to find a package to display documentation for. In the case that no package is provided, it uses "." just like go list does. So if go doc -http is run without any arguments, it tries to show the documentation for the package in the current directory. As a special case, if no arguments are provided, allow no package to match the current directory and just open the root pkgsite page. For #68106 Change-Id: I6d65b160a838591db953fac630eced6b09106877 Reviewed-on: https://go-review.googlesource.com/c/go/+/675075 Reviewed-by: Alan Donovan Reviewed-by: Michael Matloob LUCI-TryBot-Result: Go LUCI --- src/cmd/doc/main.go | 60 ++++++++++++++++++++++++++++++--------------- 1 file changed, 40 insertions(+), 20 deletions(-) diff --git a/src/cmd/doc/main.go b/src/cmd/doc/main.go index 4c47b4bcfc..03654e5824 100644 --- a/src/cmd/doc/main.go +++ b/src/cmd/doc/main.go @@ -122,8 +122,21 @@ func do(writer io.Writer, flagSet *flag.FlagSet, args []string) (err error) { } } if serveHTTP { - // We want to run the logic below to determine a match for a symbol, method, - // or field, but not actually print the documentation to the output. + // Special case: if there are no arguments to go doc -http, allow + // there to be no package in the current directory. We'll still try + // to open the page for the documentation of the package in the current + // directory, but if one doesn't exist, fall back to opening the home page. + if len(flagSet.Args()) == 0 { + var path string + if importPath, err := runCmd("go", "list"); err == nil { + path = importPath + } + return doPkgsite(path) + } + + // If args are provided, we need to figure out which page to open on the pkgsite + // instance. Run the logic below to determine a match for a symbol, method, + // or field, but don't actually print the documentation to the output. writer = io.Discard } var paths []string @@ -179,44 +192,41 @@ func do(writer io.Writer, flagSet *flag.FlagSet, args []string) (err error) { } if found { if serveHTTP { - return doPkgsite(userPath, pkg, symbol, method) + path, err := objectPath(userPath, pkg, symbol, method) + if err != nil { + return err + } + return doPkgsite(path) } return nil } } } -func listUserPath(userPath string) (string, error) { +func runCmd(cmdline ...string) (string, error) { var stdout, stderr strings.Builder - cmd := exec.Command("go", "list", userPath) + cmd := exec.Command(cmdline[0], cmdline[1:]...) cmd.Stdout = &stdout cmd.Stderr = &stderr if err := cmd.Run(); err != nil { - return "", fmt.Errorf("go doc: go list %s: %v\n%s\n", userPath, err, stderr.String()) + return "", fmt.Errorf("go doc: %s: %v\n%s\n", strings.Join(cmdline, " "), err, stderr.String()) } return strings.TrimSpace(stdout.String()), nil } -func doPkgsite(userPath string, pkg *Package, symbol, method string) error { - port, err := pickUnusedPort() - if err != nil { - return fmt.Errorf("failed to find port for documentation server: %v", err) - } - addr := fmt.Sprintf("localhost:%d", port) - - // Assemble url to open on the browser, to point to documentation of - // the requested object. - importPath := pkg.build.ImportPath - if importPath == "." { +func objectPath(userPath string, pkg *Package, symbol, method string) (string, error) { + var err error + path := pkg.build.ImportPath + if path == "." { // go/build couldn't determine the import path, probably // because this was a relative path into a module. Use // go list to get the import path. - importPath, err = listUserPath(userPath) + path, err = runCmd("go", "list", userPath) if err != nil { - return err + return "", err } } - path := path.Join("http://"+addr, importPath) + object := symbol if symbol != "" && method != "" { object = symbol + "." + method @@ -224,6 +234,16 @@ func doPkgsite(userPath string, pkg *Package, symbol, method string) error { if object != "" { path = path + "#" + object } + return path, nil +} + +func doPkgsite(urlPath string) error { + port, err := pickUnusedPort() + if err != nil { + return fmt.Errorf("failed to find port for documentation server: %v", err) + } + addr := fmt.Sprintf("localhost:%d", port) + path := path.Join("http://"+addr, urlPath) // Turn off the default signal handler for SIGINT (and SIGQUIT on Unix) // and instead wait for the child process to handle the signal and From 40b19b56a94c4d53a3c1d98275df44049b2f5917 Mon Sep 17 00:00:00 2001 From: Roland Shoemaker Date: Sat, 22 Mar 2025 00:58:55 +0000 Subject: [PATCH 13/99] runtime: add valgrind instrumentation Add build tag gated Valgrind annotations to the runtime which let it understand how the runtime manages memory. This allows for Go binaries to be run under Valgrind without emitting spurious errors. Instead of adding the Valgrind headers to the tree, and using cgo to call the various Valgrind client request macros, we just add an assembly function which emits the necessary instructions to trigger client requests. In particular we add instrumentation of the memory allocator, using a two-level mempool structure (as described in the Valgrind manual [0]). We also add annotations which allow Valgrind to track which memory we use for stacks, which seems necessary to let it properly function. We describe the memory model to Valgrind as follows: we treat heap arenas as a "pool" created with VALGRIND_CREATE_MEMPOOL_EXT (so that we can use VALGRIND_MEMPOOL_METAPOOL and VALGRIND_MEMPOOL_AUTO_FREE). Within the pool we treat spans as "superblocks", annotated with VALGRIND_MEMPOOL_ALLOC. We then allocate individual objects within spans with VALGRIND_MALLOCLIKE_BLOCK. It should be noted that running binaries under Valgrind can be _quite slow_, and certain operations, such as running the GC, can be _very slow_. It is recommended to run programs with GOGC=off. Additionally, async preemption should be turned off, since it'll cause strange behavior (GODEBUG=asyncpreemptoff=1). Running Valgrind with --leak-check=yes will result in some errors resulting from some things not being marked fully free'd. These likely need more annotations to rectify, but for now it is recommended to run with --leak-check=off. Updates #73602 [0] https://valgrind.org/docs/manual/mc-manual.html#mc-manual.mempools Change-Id: I71b26c47d7084de71ef1e03947ef6b1cc6d38301 Reviewed-on: https://go-review.googlesource.com/c/go/+/674077 LUCI-TryBot-Result: Go LUCI Reviewed-by: Michael Knyszek --- src/os/pidfd_linux.go | 5 +- src/runtime/arena.go | 3 + src/runtime/malloc.go | 8 ++ src/runtime/mgcmark.go | 4 + src/runtime/mgcsweep.go | 3 + src/runtime/mheap.go | 12 +++ src/runtime/proc.go | 22 ++++++ src/runtime/runtime2.go | 4 + src/runtime/sizeof_test.go | 2 +- src/runtime/stack.go | 48 ++++++++++++ src/runtime/valgrind.go | 138 +++++++++++++++++++++++++++++++++++ src/runtime/valgrind0.go | 25 +++++++ src/runtime/valgrind_amd64.s | 37 ++++++++++ src/runtime/valgrind_arm64.s | 29 ++++++++ src/syscall/exec_linux.go | 27 ++++++- 15 files changed, 364 insertions(+), 3 deletions(-) create mode 100644 src/runtime/valgrind.go create mode 100644 src/runtime/valgrind0.go create mode 100644 src/runtime/valgrind_amd64.s create mode 100644 src/runtime/valgrind_arm64.s diff --git a/src/os/pidfd_linux.go b/src/os/pidfd_linux.go index 5d89c9d39d..59911e8824 100644 --- a/src/os/pidfd_linux.go +++ b/src/os/pidfd_linux.go @@ -170,7 +170,10 @@ func checkPidfd() error { // Check waitid(P_PIDFD) works. err = ignoringEINTR(func() error { - return unix.Waitid(unix.P_PIDFD, int(fd), nil, syscall.WEXITED, nil) + var info unix.SiginfoChild + // We don't actually care about the info, but passing a nil pointer + // makes valgrind complain because 0x0 is unaddressable. + return unix.Waitid(unix.P_PIDFD, int(fd), &info, syscall.WEXITED, nil) }) // Expect ECHILD from waitid since we're not our own parent. if err != syscall.ECHILD { diff --git a/src/runtime/arena.go b/src/runtime/arena.go index 59b1bb3ba1..627c7cfdce 100644 --- a/src/runtime/arena.go +++ b/src/runtime/arena.go @@ -950,6 +950,9 @@ func freeUserArenaChunk(s *mspan, x unsafe.Pointer) { if asanenabled { asanpoison(unsafe.Pointer(s.base()), s.elemsize) } + if valgrindenabled { + valgrindFree(unsafe.Pointer(s.base())) + } // Make ourselves non-preemptible as we manipulate state and statistics. // diff --git a/src/runtime/malloc.go b/src/runtime/malloc.go index abd94fda08..bc7dab9d20 100644 --- a/src/runtime/malloc.go +++ b/src/runtime/malloc.go @@ -754,6 +754,11 @@ func (h *mheap) sysAlloc(n uintptr, hintList **arenaHint, arenaList *[]arenaIdx) } mapped: + if valgrindenabled { + valgrindCreateMempool(v) + valgrindMakeMemNoAccess(v, size) + } + // Create arena metadata. for ri := arenaIndex(uintptr(v)); ri <= arenaIndex(uintptr(v)+size-1); ri++ { l2 := h.arenas[ri.l1()] @@ -1084,6 +1089,9 @@ func mallocgc(size uintptr, typ *_type, needzero bool) unsafe.Pointer { asanpoison(unsafe.Add(x, size-asanRZ), asanRZ) asanunpoison(x, size-asanRZ) } + if valgrindenabled { + valgrindMalloc(x, size-asanRZ) + } // Adjust our GC assist debt to account for internal fragmentation. if gcBlackenEnabled != 0 && elemsize != 0 { diff --git a/src/runtime/mgcmark.go b/src/runtime/mgcmark.go index b5318e56f8..507aac7482 100644 --- a/src/runtime/mgcmark.go +++ b/src/runtime/mgcmark.go @@ -315,6 +315,10 @@ func markrootFreeGStacks() { stackfree(gp.stack) gp.stack.lo = 0 gp.stack.hi = 0 + if valgrindenabled { + valgrindDeregisterStack(gp.valgrindStackID) + gp.valgrindStackID = 0 + } } q := gQueue{list.head, tail.guintptr(), list.size} diff --git a/src/runtime/mgcsweep.go b/src/runtime/mgcsweep.go index f4d43e73f2..a3bf2989df 100644 --- a/src/runtime/mgcsweep.go +++ b/src/runtime/mgcsweep.go @@ -641,6 +641,9 @@ func (sl *sweepLocked) sweep(preserve bool) bool { if asanenabled && !s.isUserArenaChunk { asanpoison(unsafe.Pointer(x), size) } + if valgrindenabled && !s.isUserArenaChunk { + valgrindFree(unsafe.Pointer(x)) + } } mbits.advance() abits.advance() diff --git a/src/runtime/mheap.go b/src/runtime/mheap.go index b5cfd113d0..0729184e22 100644 --- a/src/runtime/mheap.go +++ b/src/runtime/mheap.go @@ -1388,6 +1388,10 @@ HaveSpan: // Initialize the span. h.initSpan(s, typ, spanclass, base, npages) + if valgrindenabled { + valgrindMempoolMalloc(unsafe.Pointer(arenaBase(arenaIndex(base))), unsafe.Pointer(base), npages*pageSize) + } + // Commit and account for any scavenged memory that the span now owns. nbytes := npages * pageSize if scav != 0 { @@ -1643,6 +1647,10 @@ func (h *mheap) freeSpan(s *mspan) { bytes := s.npages << gc.PageShift asanpoison(base, bytes) } + if valgrindenabled { + base := s.base() + valgrindMempoolFree(unsafe.Pointer(arenaBase(arenaIndex(base))), unsafe.Pointer(base)) + } h.freeSpanLocked(s, spanAllocHeap) unlock(&h.lock) }) @@ -1671,6 +1679,10 @@ func (h *mheap) freeManual(s *mspan, typ spanAllocType) { s.needzero = 1 lock(&h.lock) + if valgrindenabled { + base := s.base() + valgrindMempoolFree(unsafe.Pointer(arenaBase(arenaIndex(base))), unsafe.Pointer(base)) + } h.freeSpanLocked(s, typ) unlock(&h.lock) } diff --git a/src/runtime/proc.go b/src/runtime/proc.go index 89cd70ee88..55cb630b5d 100644 --- a/src/runtime/proc.go +++ b/src/runtime/proc.go @@ -1955,6 +1955,10 @@ func mexit(osStack bool) { // Free the gsignal stack. if mp.gsignal != nil { stackfree(mp.gsignal.stack) + if valgrindenabled { + valgrindDeregisterStack(mp.gsignal.valgrindStackID) + mp.gsignal.valgrindStackID = 0 + } // On some platforms, when calling into VDSO (e.g. nanotime) // we store our g on the gsignal stack, if there is one. // Now the stack is freed, unlink it from the m, so we @@ -2252,6 +2256,10 @@ func allocm(pp *p, fn func(), id int64) *m { // startm. systemstack(func() { stackfree(freem.g0.stack) + if valgrindenabled { + valgrindDeregisterStack(freem.g0.valgrindStackID) + freem.g0.valgrindStackID = 0 + } }) } freem = freem.freelink @@ -5046,6 +5054,9 @@ func malg(stacksize int32) *g { stacksize = round2(stackSystem + stacksize) systemstack(func() { newg.stack = stackalloc(uint32(stacksize)) + if valgrindenabled { + newg.valgrindStackID = valgrindRegisterStack(unsafe.Pointer(newg.stack.lo), unsafe.Pointer(newg.stack.hi)) + } }) newg.stackguard0 = newg.stack.lo + stackGuard newg.stackguard1 = ^uintptr(0) @@ -5234,6 +5245,10 @@ func gfput(pp *p, gp *g) { gp.stack.lo = 0 gp.stack.hi = 0 gp.stackguard0 = 0 + if valgrindenabled { + valgrindDeregisterStack(gp.valgrindStackID) + gp.valgrindStackID = 0 + } } pp.gFree.push(gp) @@ -5291,12 +5306,19 @@ retry: gp.stack.lo = 0 gp.stack.hi = 0 gp.stackguard0 = 0 + if valgrindenabled { + valgrindDeregisterStack(gp.valgrindStackID) + gp.valgrindStackID = 0 + } }) } if gp.stack.lo == 0 { // Stack was deallocated in gfput or just above. Allocate a new one. systemstack(func() { gp.stack = stackalloc(startingStackSize) + if valgrindenabled { + gp.valgrindStackID = valgrindRegisterStack(unsafe.Pointer(gp.stack.lo), unsafe.Pointer(gp.stack.hi)) + } }) gp.stackguard0 = gp.stack.lo + stackGuard } else { diff --git a/src/runtime/runtime2.go b/src/runtime/runtime2.go index c8c7c233a6..65b31f737b 100644 --- a/src/runtime/runtime2.go +++ b/src/runtime/runtime2.go @@ -504,6 +504,10 @@ type g struct { // and check for debt in the malloc hot path. The assist ratio // determines how this corresponds to scan work debt. gcAssistBytes int64 + + // valgrindStackID is used to track what memory is used for stacks when a program is + // built with the "valgrind" build tag, otherwise it is unused. + valgrindStackID uintptr } // gTrackingPeriod is the number of transitions out of _Grunning between diff --git a/src/runtime/sizeof_test.go b/src/runtime/sizeof_test.go index c1b201caf1..a5dc8aed34 100644 --- a/src/runtime/sizeof_test.go +++ b/src/runtime/sizeof_test.go @@ -20,7 +20,7 @@ func TestSizeof(t *testing.T) { _32bit uintptr // size on 32bit platforms _64bit uintptr // size on 64bit platforms }{ - {runtime.G{}, 276, 432}, // g, but exported for testing + {runtime.G{}, 280, 440}, // g, but exported for testing {runtime.Sudog{}, 56, 88}, // sudog, but exported for testing } diff --git a/src/runtime/stack.go b/src/runtime/stack.go index 2fedaa9421..7e69d65fbb 100644 --- a/src/runtime/stack.go +++ b/src/runtime/stack.go @@ -211,6 +211,13 @@ func stackpoolalloc(order uint8) gclinkptr { s.elemsize = fixedStack << order for i := uintptr(0); i < _StackCacheSize; i += s.elemsize { x := gclinkptr(s.base() + i) + if valgrindenabled { + // The address of x.ptr() becomes the base of stacks. We need to + // mark it allocated here and in stackfree and stackpoolfree, and free'd in + // stackalloc in order to avoid overlapping allocations and + // uninitialized memory errors in valgrind. + valgrindMalloc(unsafe.Pointer(x.ptr()), unsafe.Sizeof(x.ptr())) + } x.ptr().next = s.manualFreeList s.manualFreeList = x } @@ -388,6 +395,12 @@ func stackalloc(n uint32) stack { c.stackcache[order].list = x.ptr().next c.stackcache[order].size -= uintptr(n) } + if valgrindenabled { + // We're about to allocate the stack region starting at x.ptr(). + // To prevent valgrind from complaining about overlapping allocations, + // we need to mark the (previously allocated) memory as free'd. + valgrindFree(unsafe.Pointer(x.ptr())) + } v = unsafe.Pointer(x) } else { var s *mspan @@ -432,6 +445,9 @@ func stackalloc(n uint32) stack { if asanenabled { asanunpoison(v, uintptr(n)) } + if valgrindenabled { + valgrindMalloc(v, uintptr(n)) + } if stackDebug >= 1 { print(" allocated ", v, "\n") } @@ -479,6 +495,9 @@ func stackfree(stk stack) { if asanenabled { asanpoison(v, n) } + if valgrindenabled { + valgrindFree(v) + } if n < fixedStack<<_NumStackOrders && n < _StackCacheSize { order := uint8(0) n2 := n @@ -489,6 +508,11 @@ func stackfree(stk stack) { x := gclinkptr(v) if stackNoCache != 0 || gp.m.p == 0 || gp.m.preemptoff != "" { lock(&stackpool[order].item.mu) + if valgrindenabled { + // x.ptr() is the head of the list of free stacks, and will be used + // when allocating a new stack, so it has to be marked allocated. + valgrindMalloc(unsafe.Pointer(x.ptr()), unsafe.Sizeof(x.ptr())) + } stackpoolfree(x, order) unlock(&stackpool[order].item.mu) } else { @@ -496,6 +520,12 @@ func stackfree(stk stack) { if c.stackcache[order].size >= _StackCacheSize { stackcacherelease(c, order) } + if valgrindenabled { + // x.ptr() is the head of the list of free stacks, and will + // be used when allocating a new stack, so it has to be + // marked allocated. + valgrindMalloc(unsafe.Pointer(x.ptr()), unsafe.Sizeof(x.ptr())) + } x.ptr().next = c.stackcache[order].list c.stackcache[order].list = x c.stackcache[order].size += n @@ -583,6 +613,16 @@ func adjustpointer(adjinfo *adjustinfo, vpp unsafe.Pointer) { if stackDebug >= 4 { print(" ", pp, ":", hex(p), "\n") } + if valgrindenabled { + // p is a pointer on a stack, it is inherently initialized, as + // everything on the stack is, but valgrind for _some unknown reason_ + // sometimes thinks it's uninitialized, and flags operations on p below + // as uninitialized. We just initialize it if valgrind thinks its + // uninitialized. + // + // See go.dev/issues/73801. + valgrindMakeMemDefined(unsafe.Pointer(&p), unsafe.Sizeof(&p)) + } if adjinfo.old.lo <= p && p < adjinfo.old.hi { *pp = p + adjinfo.delta if stackDebug >= 3 { @@ -936,6 +976,14 @@ func copystack(gp *g, newsize uintptr) { adjustframe(&u.frame, &adjinfo) } + if valgrindenabled { + if gp.valgrindStackID == 0 { + gp.valgrindStackID = valgrindRegisterStack(unsafe.Pointer(new.lo), unsafe.Pointer(new.hi)) + } else { + valgrindChangeStack(gp.valgrindStackID, unsafe.Pointer(new.lo), unsafe.Pointer(new.hi)) + } + } + // free old stack if stackPoisonCopy != 0 { fillstack(old, 0xfc) diff --git a/src/runtime/valgrind.go b/src/runtime/valgrind.go new file mode 100644 index 0000000000..3933d63e6b --- /dev/null +++ b/src/runtime/valgrind.go @@ -0,0 +1,138 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build valgrind && linux && (arm64 || amd64) + +package runtime + +import "unsafe" + +const valgrindenabled = true + +// Valgrind provides a mechanism to allow programs under test to modify +// Valgrinds behavior in certain ways, referred to as client requests [0]. These +// requests are triggered putting the address of a series of uints in a specific +// register and emitting a very specific sequence of assembly instructions. The +// result of the request (if there is one) is then put in another register for +// the program to retrieve. Each request is identified by a unique uint, which +// is passed as the first "argument". +// +// Valgrind provides headers (valgrind/valgrind.h, valgrind/memcheck.h) with +// macros that emit the correct assembly for these requests. Instead of copying +// these headers into the tree and using cgo to call the macros, we implement +// the client request assembly ourselves. Since both the magic instruction +// sequences, and the request uint's are stable, it is safe for us to implement. +// +// The client requests we add are used to describe our memory allocator to +// Valgrind, per [1]. We describe the allocator using the two-level mempool +// structure a We also add annotations which allow Valgrind to track which +// memory we use for stacks, which seems necessary to let it properly function. +// +// We describe the memory model to Valgrind as follows: we treat heap arenas as +// "pools" created with VALGRIND_CREATE_MEMPOOL_EXT (so that we can use +// VALGRIND_MEMPOOL_METAPOOL and VALGRIND_MEMPOOL_AUTO_FREE). Within the pool we +// treat spans as "superblocks", annotated with VALGRIND_MEMPOOL_ALLOC. We then +// allocate individual objects within spans with VALGRIND_MALLOCLIKE_BLOCK. +// +// [0] https://valgrind.org/docs/manual/manual-core-adv.html#manual-core-adv.clientreq +// [1] https://valgrind.org/docs/manual/mc-manual.html#mc-manual.mempools + +const ( + // Valgrind request IDs, copied from valgrind/valgrind.h. + vg_userreq__malloclike_block = 0x1301 + vg_userreq__freelike_block = 0x1302 + vg_userreq__create_mempool = 0x1303 + vg_userreq__mempool_alloc = 0x1305 + vg_userreq__mempool_free = 0x1306 + vg_userreq__stack_register = 0x1501 + vg_userreq__stack_deregister = 0x1502 + vg_userreq__stack_change = 0x1503 +) + +const ( + // Memcheck request IDs are offset from ('M'&0xff) << 24 | ('C'&0xff) << 16, or 0x4d430000, + // copied from valgrind/memcheck.h. + vg_userreq__make_mem_noaccess = iota + ('M'&0xff)<<24 | ('C'&0xff)<<16 + vg_userreq__make_mem_undefined + vg_userreq__make_mem_defined +) + +const ( + // VALGRIND_CREATE_MEMPOOL_EXT flags, copied from valgrind/valgrind.h. + valgrind_mempool_auto_free = 1 + valgrind_mempool_metapool = 2 +) + +// + +//go:noescape +func valgrindClientRequest(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) uintptr + +//go:nosplit +func valgrindRegisterStack(start, end unsafe.Pointer) uintptr { + // VALGRIND_STACK_REGISTER + return valgrindClientRequest(vg_userreq__stack_register, uintptr(start), uintptr(end), 0, 0, 0) +} + +//go:nosplit +func valgrindDeregisterStack(id uintptr) { + // VALGRIND_STACK_DEREGISTER + valgrindClientRequest(vg_userreq__stack_deregister, id, 0, 0, 0, 0) +} + +//go:nosplit +func valgrindChangeStack(id uintptr, start, end unsafe.Pointer) { + // VALGRIND_STACK_CHANGE + valgrindClientRequest(vg_userreq__stack_change, id, uintptr(start), uintptr(end), 0, 0) +} + +//go:nosplit +func valgrindMalloc(addr unsafe.Pointer, size uintptr) { + // VALGRIND_MALLOCLIKE_BLOCK + valgrindClientRequest(vg_userreq__malloclike_block, uintptr(addr), size, 0, 1, 0) +} + +//go:nosplit +func valgrindFree(addr unsafe.Pointer) { + // VALGRIND_FREELIKE_BLOCK + valgrindClientRequest(vg_userreq__freelike_block, uintptr(addr), 0, 0, 0, 0) +} + +//go:nosplit +func valgrindCreateMempool(addr unsafe.Pointer) { + // VALGRIND_CREATE_MEMPOOL_EXT + valgrindClientRequest(vg_userreq__create_mempool, uintptr(addr), 0, 1, valgrind_mempool_auto_free|valgrind_mempool_metapool, 0) +} + +//go:nosplit +func valgrindMempoolMalloc(pool, addr unsafe.Pointer, size uintptr) { + // VALGRIND_MEMPOOL_ALLOC + valgrindClientRequest(vg_userreq__mempool_alloc, uintptr(pool), uintptr(addr), size, 0, 0) +} + +//go:nosplit +func valgrindMempoolFree(pool, addr unsafe.Pointer) { + // VALGRIND_MEMPOOL_FREE + valgrindClientRequest(vg_userreq__mempool_free, uintptr(pool), uintptr(addr), 0, 0, 0) +} + +// Memcheck client requests, copied from valgrind/memcheck.h + +//go:nosplit +func valgrindMakeMemUndefined(addr unsafe.Pointer, size uintptr) { + // VALGRIND_MAKE_MEM_UNDEFINED + valgrindClientRequest(vg_userreq__make_mem_undefined, uintptr(addr), size, 0, 0, 0) +} + +//go:nosplit +func valgrindMakeMemDefined(addr unsafe.Pointer, size uintptr) { + // VALGRIND_MAKE_MEM_DEFINED + valgrindClientRequest(vg_userreq__make_mem_defined, uintptr(addr), size, 0, 0, 0) +} + +//go:nosplit +func valgrindMakeMemNoAccess(addr unsafe.Pointer, size uintptr) { + // VALGRIND_MAKE_MEM_NOACCESS + valgrindClientRequest(vg_userreq__make_mem_noaccess, uintptr(addr), size, 0, 0, 0) +} diff --git a/src/runtime/valgrind0.go b/src/runtime/valgrind0.go new file mode 100644 index 0000000000..adafa3001a --- /dev/null +++ b/src/runtime/valgrind0.go @@ -0,0 +1,25 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Valgrind instrumentation is only available on linux amd64 and arm64. + +//go:build !valgrind || !linux || (!amd64 && !arm64) + +package runtime + +import "unsafe" + +const valgrindenabled = false + +func valgrindRegisterStack(start, end unsafe.Pointer) uintptr { return 0 } +func valgrindDeregisterStack(id uintptr) {} +func valgrindChangeStack(id uintptr, start, end unsafe.Pointer) {} +func valgrindMalloc(addr unsafe.Pointer, size uintptr) {} +func valgrindFree(addr unsafe.Pointer) {} +func valgrindCreateMempool(addr unsafe.Pointer) {} +func valgrindMempoolMalloc(pool, addr unsafe.Pointer, size uintptr) {} +func valgrindMempoolFree(pool, addr unsafe.Pointer) {} +func valgrindMakeMemUndefined(addr unsafe.Pointer, size uintptr) {} +func valgrindMakeMemDefined(addr unsafe.Pointer, size uintptr) {} +func valgrindMakeMemNoAccess(addr unsafe.Pointer, size uintptr) {} diff --git a/src/runtime/valgrind_amd64.s b/src/runtime/valgrind_amd64.s new file mode 100644 index 0000000000..1c53d4f4e5 --- /dev/null +++ b/src/runtime/valgrind_amd64.s @@ -0,0 +1,37 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build valgrind && linux + +#include "textflag.h" + +// Instead of using cgo and using the Valgrind macros, we just emit the special client request +// assembly ourselves. The client request mechanism is basically the same across all architectures, +// with the notable difference being the special preamble that lets Valgrind know we want to do +// a client request. +// +// The form of the VALGRIND_DO_CLIENT_REQUEST macro assembly can be found in the valgrind/valgrind.h +// header file [0]. +// +// [0] https://sourceware.org/git/?p=valgrind.git;a=blob;f=include/valgrind.h.in;h=f1710924aa7372e7b7e2abfbf7366a2286e33d2d;hb=HEAD + +// func valgrindClientRequest(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (ret uintptr) +TEXT runtime·valgrindClientRequest(SB), NOSPLIT, $0-56 + // Load the address of the first of the (contiguous) arguments into AX. + LEAQ args+0(FP), AX + + // Zero DX, since some requests may not populate it. + XORL DX, DX + + // Emit the special preabmle. + ROLQ $3, DI; ROLQ $13, DI + ROLQ $61, DI; ROLQ $51, DI + + // "Execute" the client request. + XCHGQ BX, BX + + // Copy the result out of DX. + MOVQ DX, ret+48(FP) + + RET diff --git a/src/runtime/valgrind_arm64.s b/src/runtime/valgrind_arm64.s new file mode 100644 index 0000000000..a46c3d4b9b --- /dev/null +++ b/src/runtime/valgrind_arm64.s @@ -0,0 +1,29 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build valgrind && linux + +#include "textflag.h" + +// See valgrind_amd64.s for notes about this assembly. + +// func valgrindClientRequest(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (ret uintptr) +TEXT runtime·valgrindClientRequest(SB), NOSPLIT, $0-56 + // Load the address of the first of the (contiguous) arguments into x4. + MOVD $args+0(FP), R4 + + // Zero x3, since some requests may not populate it. + MOVD ZR, R3 + + // Emit the special preamble. + ROR $3, R12; ROR $13, R12 + ROR $51, R12; ROR $61, R12 + + // "Execute" the client request. + ORR R10, R10 + + // Copy the result out of x3. + MOVD R3, ret+48(FP) + + RET diff --git a/src/syscall/exec_linux.go b/src/syscall/exec_linux.go index 678bc84796..abae9d14eb 100644 --- a/src/syscall/exec_linux.go +++ b/src/syscall/exec_linux.go @@ -800,9 +800,34 @@ func os_checkClonePidfd() error { // pidfd. defer Close(int(pidfd)) + // TODO(roland): this is necessary to prevent valgrind from complaining + // about passing 0x0 to waitid, which is doesn't like. This is clearly not + // ideal. The structures are copied (mostly) verbatim from syscall/unix, + // which we obviously cannot import because of an import loop. + + const is64bit = ^uint(0) >> 63 // 0 for 32-bit hosts, 1 for 64-bit ones. + type sigInfo struct { + Signo int32 + _ struct { + Errno int32 + Code int32 + } // Two int32 fields, swapped on MIPS. + _ [is64bit]int32 // Extra padding for 64-bit hosts only. + + // End of common part. Beginning of signal-specific part. + + Pid int32 + Uid uint32 + Status int32 + + // Pad to 128 bytes. + _ [128 - (6+is64bit)*4]byte + } + for { const _P_PIDFD = 3 - _, _, errno = Syscall6(SYS_WAITID, _P_PIDFD, uintptr(pidfd), 0, WEXITED|WCLONE, 0, 0) + var info sigInfo + _, _, errno = Syscall6(SYS_WAITID, _P_PIDFD, uintptr(pidfd), uintptr(unsafe.Pointer(&info)), WEXITED|WCLONE, 0, 0) if errno != EINTR { break } From 63dcc7b9067722a9ded7a67501a898764778108a Mon Sep 17 00:00:00 2001 From: Roland Shoemaker Date: Sun, 19 Jan 2025 09:24:50 -0800 Subject: [PATCH 14/99] crypto/sha1: add sha-ni AMD64 implementation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Based on the Intel docs. Provides a ~44% speed-up compared to the AVX implementation and a ~57% speed-up compared to the generic AMD64 assembly implementation. │ /usr/local/google/home/bracewell/sha1-avx.bench │ /usr/local/google/home/bracewell/sha1-ni-stack.bench │ │ sec/op │ sec/op vs base │ Hash8Bytes/New-24 157.60n ± 0% 92.51n ± 0% -41.30% (p=0.000 n=20) Hash8Bytes/Sum-24 147.00n ± 0% 85.06n ± 0% -42.14% (p=0.000 n=20) Hash320Bytes/New-24 625.3n ± 0% 276.7n ± 0% -55.75% (p=0.000 n=20) Hash320Bytes/Sum-24 626.2n ± 0% 272.4n ± 0% -56.51% (p=0.000 n=20) Hash1K/New-24 1206.5n ± 0% 692.2n ± 0% -42.63% (p=0.000 n=20) Hash1K/Sum-24 1210.0n ± 0% 688.2n ± 0% -43.13% (p=0.000 n=20) Hash8K/New-24 7.744µ ± 0% 4.920µ ± 0% -36.46% (p=0.000 n=20) Hash8K/Sum-24 7.737µ ± 0% 4.913µ ± 0% -36.50% (p=0.000 n=20) geomean 971.5n 536.1n -44.81% │ /usr/local/google/home/bracewell/sha1-avx.bench │ /usr/local/google/home/bracewell/sha1-ni-stack.bench │ │ B/s │ B/s vs base │ Hash8Bytes/New-24 48.41Mi ± 0% 82.47Mi ± 0% +70.37% (p=0.000 n=20) Hash8Bytes/Sum-24 51.90Mi ± 0% 89.70Mi ± 0% +72.82% (p=0.000 n=20) Hash320Bytes/New-24 488.0Mi ± 0% 1103.0Mi ± 0% +126.01% (p=0.000 n=20) Hash320Bytes/Sum-24 487.4Mi ± 0% 1120.5Mi ± 0% +129.91% (p=0.000 n=20) Hash1K/New-24 809.6Mi ± 0% 1410.8Mi ± 0% +74.26% (p=0.000 n=20) Hash1K/Sum-24 806.9Mi ± 0% 1419.1Mi ± 0% +75.86% (p=0.000 n=20) Hash8K/New-24 1008.9Mi ± 0% 1588.0Mi ± 0% +57.40% (p=0.000 n=20) Hash8K/Sum-24 1009.8Mi ± 0% 1590.1Mi ± 0% +57.47% (p=0.000 n=20) geomean 375.8Mi 680.9Mi +81.20% │ /usr/local/google/home/bracewell/sha1-amd64.bench │ /usr/local/google/home/bracewell/sha1-ni-stack.bench │ │ sec/op │ sec/op vs base │ Hash8Bytes/New-24 153.90n ± 0% 92.51n ± 0% -39.89% (p=0.000 n=20) Hash8Bytes/Sum-24 145.90n ± 0% 85.06n ± 0% -41.70% (p=0.000 n=20) Hash320Bytes/New-24 666.8n ± 0% 276.7n ± 0% -58.50% (p=0.000 n=20) Hash320Bytes/Sum-24 660.3n ± 0% 272.4n ± 0% -58.75% (p=0.000 n=20) Hash1K/New-24 1810.5n ± 0% 692.2n ± 0% -61.77% (p=0.000 n=20) Hash1K/Sum-24 1806.0n ± 0% 688.2n ± 0% -61.90% (p=0.000 n=20) Hash8K/New-24 13.509µ ± 0% 4.920µ ± 0% -63.58% (p=0.000 n=20) Hash8K/Sum-24 13.515µ ± 0% 4.913µ ± 0% -63.65% (p=0.000 n=20) geomean 1.248µ 536.1n -57.05% │ /usr/local/google/home/bracewell/sha1-amd64.bench │ /usr/local/google/home/bracewell/sha1-ni-stack.bench │ │ B/s │ B/s vs base │ Hash8Bytes/New-24 49.57Mi ± 0% 82.47Mi ± 0% +66.37% (p=0.000 n=20) Hash8Bytes/Sum-24 52.29Mi ± 0% 89.70Mi ± 0% +71.52% (p=0.000 n=20) Hash320Bytes/New-24 457.7Mi ± 0% 1103.0Mi ± 0% +140.97% (p=0.000 n=20) Hash320Bytes/Sum-24 462.2Mi ± 0% 1120.5Mi ± 0% +142.45% (p=0.000 n=20) Hash1K/New-24 539.4Mi ± 0% 1410.8Mi ± 0% +161.57% (p=0.000 n=20) Hash1K/Sum-24 540.7Mi ± 0% 1419.1Mi ± 0% +162.44% (p=0.000 n=20) Hash8K/New-24 578.4Mi ± 0% 1588.0Mi ± 0% +174.57% (p=0.000 n=20) Hash8K/Sum-24 578.1Mi ± 0% 1590.1Mi ± 0% +175.07% (p=0.000 n=20) geomean 292.4Mi 680.9Mi +132.86% Change-Id: Ife90386ba410a80c2e6222c1fe4df2368c4e12b2 Reviewed-on: https://go-review.googlesource.com/c/go/+/642157 Reviewed-by: Filippo Valsorda Auto-Submit: Roland Shoemaker Reviewed-by: Neal Patel LUCI-TryBot-Result: Go LUCI --- src/crypto/sha1/_asm/sha1block_amd64_asm.go | 1 + src/crypto/sha1/_asm/sha1block_amd64_shani.go | 164 ++++++++++++++ src/crypto/sha1/sha1block_amd64.go | 8 +- src/crypto/sha1/sha1block_amd64.s | 209 ++++++++++++++++++ 4 files changed, 381 insertions(+), 1 deletion(-) create mode 100644 src/crypto/sha1/_asm/sha1block_amd64_shani.go diff --git a/src/crypto/sha1/_asm/sha1block_amd64_asm.go b/src/crypto/sha1/_asm/sha1block_amd64_asm.go index 750f5ce31c..575c5de747 100644 --- a/src/crypto/sha1/_asm/sha1block_amd64_asm.go +++ b/src/crypto/sha1/_asm/sha1block_amd64_asm.go @@ -25,6 +25,7 @@ func main() { ConstraintExpr("!purego") blockAMD64() blockAVX2() + blockSHANI() Generate() } diff --git a/src/crypto/sha1/_asm/sha1block_amd64_shani.go b/src/crypto/sha1/_asm/sha1block_amd64_shani.go new file mode 100644 index 0000000000..0a0160a823 --- /dev/null +++ b/src/crypto/sha1/_asm/sha1block_amd64_shani.go @@ -0,0 +1,164 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package main + +import ( + "fmt" + + . "github.com/mmcloughlin/avo/build" + . "github.com/mmcloughlin/avo/operand" + . "github.com/mmcloughlin/avo/reg" +) + +// Implement the SHA-1 block function using the Intel(R) SHA extensions +// (SHA1RNDS4, SHA1NEXTE, SHA1MSG1, and SHA1MSG2). This implementation requires +// the AVX, SHA, SSE2, SSE4.1, and SSSE3 extensions. +// +// Reference: +// S. Gulley, et al, "New Instructions Supporting the Secure Hash +// Algorithm on Intel® Architecture Processors", July 2013 +// https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sha-extensions.html + +func blockSHANI() { + Implement("blockSHANI") + + digest := Load(Param("dig"), RDI) + data := Load(Param("p").Base(), RSI) + len := Load(Param("p").Len(), RDX) + + abcd := XMM() + msg0, msg1, msg2, msg3 := XMM(), XMM(), XMM(), XMM() + e0, e1 := XMM(), XMM() + shufMask := XMM() + + CMPQ(len, Imm(0)) + JEQ(LabelRef("done")) + ADDQ(data, len) + + stackPtr := GP64() + { + Comment("Allocate space on the stack for saving ABCD and E0, and align it to 16 bytes") + local := AllocLocal(32 + 16) + LEAQ(local.Offset(15), stackPtr) + tmp := GP64() + MOVQ(U64(15), tmp) + NOTQ(tmp) + ANDQ(tmp, stackPtr) + } + e0_save := Mem{Base: stackPtr} + abcd_save := Mem{Base: stackPtr}.Offset(16) + + Comment("Load initial hash state") + PINSRD(Imm(3), Mem{Base: digest}.Offset(16), e0) + VMOVDQU(Mem{Base: digest}, abcd) + PAND(upperMask(), e0) + PSHUFD(Imm(0x1b), abcd, abcd) + + VMOVDQA(flipMask(), shufMask) + + Label("loop") + + Comment("Save ABCD and E working values") + VMOVDQA(e0, e0_save) + VMOVDQA(abcd, abcd_save) + + Comment("Rounds 0-3") + VMOVDQU(Mem{Base: data}, msg0) + PSHUFB(shufMask, msg0) + PADDD(msg0, e0) + VMOVDQA(abcd, e1) + SHA1RNDS4(Imm(0), e0, abcd) + + Comment("Rounds 4-7") + VMOVDQU(Mem{Base: data}.Offset(16), msg1) + PSHUFB(shufMask, msg1) + SHA1NEXTE(msg1, e1) + VMOVDQA(abcd, e0) + SHA1RNDS4(Imm(0), e1, abcd) + SHA1MSG1(msg1, msg0) + + Comment("Rounds 8-11") + VMOVDQU(Mem{Base: data}.Offset(16*2), msg2) + PSHUFB(shufMask, msg2) + SHA1NEXTE(msg2, e0) + VMOVDQA(abcd, e1) + SHA1RNDS4(Imm(0), e0, abcd) + SHA1MSG1(msg2, msg1) + PXOR(msg2, msg0) + + // Rounds 12 through 67 use the same repeated pattern, with e0 and e1 ping-ponging + // back and forth, and each of the msg temporaries moving up one every four rounds. + msgs := []VecVirtual{msg3, msg0, msg1, msg2} + for i := range 14 { + Comment(fmt.Sprintf("Rounds %d-%d", 12+(i*4), 12+(i*4)+3)) + a, b := e1, e0 + if i == 0 { + VMOVDQU(Mem{Base: data}.Offset(16*3), msg3) + PSHUFB(shufMask, msg3) + } + if i%2 == 1 { + a, b = e0, e1 + } + imm := uint64((12 + i*4) / 20) + + SHA1NEXTE(msgs[i%4], a) + VMOVDQA(abcd, b) + SHA1MSG2(msgs[i%4], msgs[(1+i)%4]) + SHA1RNDS4(Imm(imm), a, abcd) + SHA1MSG1(msgs[i%4], msgs[(3+i)%4]) + PXOR(msgs[i%4], msgs[(2+i)%4]) + } + + Comment("Rounds 68-71") + SHA1NEXTE(msg1, e1) + VMOVDQA(abcd, e0) + SHA1MSG2(msg1, msg2) + SHA1RNDS4(Imm(3), e1, abcd) + PXOR(msg1, msg3) + + Comment("Rounds 72-75") + SHA1NEXTE(msg2, e0) + VMOVDQA(abcd, e1) + SHA1MSG2(msg2, msg3) + SHA1RNDS4(Imm(3), e0, abcd) + + Comment("Rounds 76-79") + SHA1NEXTE(msg3, e1) + VMOVDQA(abcd, e0) + SHA1RNDS4(Imm(3), e1, abcd) + + Comment("Add saved E and ABCD") + SHA1NEXTE(e0_save, e0) + PADDD(abcd_save, abcd) + + Comment("Check if we are done, if not return to the loop") + ADDQ(Imm(64), data) + CMPQ(data, len) + JNE(LabelRef("loop")) + + Comment("Write the hash state back to digest") + PSHUFD(Imm(0x1b), abcd, abcd) + VMOVDQU(abcd, Mem{Base: digest}) + PEXTRD(Imm(3), e0, Mem{Base: digest}.Offset(16)) + + Label("done") + RET() +} + +func flipMask() Mem { + mask := GLOBL("shuffle_mask", RODATA) + // 0x000102030405060708090a0b0c0d0e0f + DATA(0x00, U64(0x08090a0b0c0d0e0f)) + DATA(0x08, U64(0x0001020304050607)) + return mask +} + +func upperMask() Mem { + mask := GLOBL("upper_mask", RODATA) + // 0xFFFFFFFF000000000000000000000000 + DATA(0x00, U64(0x0000000000000000)) + DATA(0x08, U64(0xFFFFFFFF00000000)) + return mask +} diff --git a/src/crypto/sha1/sha1block_amd64.go b/src/crypto/sha1/sha1block_amd64.go index 10376d1dcc..a497d41144 100644 --- a/src/crypto/sha1/sha1block_amd64.go +++ b/src/crypto/sha1/sha1block_amd64.go @@ -14,10 +14,16 @@ func blockAVX2(dig *digest, p []byte) //go:noescape func blockAMD64(dig *digest, p []byte) +//go:noescape +func blockSHANI(dig *digest, p []byte) + var useAVX2 = cpu.X86.HasAVX && cpu.X86.HasAVX2 && cpu.X86.HasBMI1 && cpu.X86.HasBMI2 +var useSHANI = cpu.X86.HasAVX && cpu.X86.HasSHA && cpu.X86.HasSSE41 && cpu.X86.HasSSSE3 func block(dig *digest, p []byte) { - if useAVX2 && len(p) >= 256 { + if useSHANI { + blockSHANI(dig, p) + } else if useAVX2 && len(p) >= 256 { // blockAVX2 calculates sha1 for 2 block per iteration // it also interleaves precalculation for next block. // So it may read up-to 192 bytes past end of p diff --git a/src/crypto/sha1/sha1block_amd64.s b/src/crypto/sha1/sha1block_amd64.s index 9c7aa14677..2a5fd2e8e5 100644 --- a/src/crypto/sha1/sha1block_amd64.s +++ b/src/crypto/sha1/sha1block_amd64.s @@ -3049,3 +3049,212 @@ DATA BSWAP_SHUFB_CTL<>+20(SB)/4, $0x04050607 DATA BSWAP_SHUFB_CTL<>+24(SB)/4, $0x08090a0b DATA BSWAP_SHUFB_CTL<>+28(SB)/4, $0x0c0d0e0f GLOBL BSWAP_SHUFB_CTL<>(SB), RODATA, $32 + +// func blockSHANI(dig *digest, p []byte) +// Requires: AVX, SHA, SSE2, SSE4.1, SSSE3 +TEXT ·blockSHANI(SB), $48-32 + MOVQ dig+0(FP), DI + MOVQ p_base+8(FP), SI + MOVQ p_len+16(FP), DX + CMPQ DX, $0x00 + JEQ done + ADDQ SI, DX + + // Allocate space on the stack for saving ABCD and E0, and align it to 16 bytes + LEAQ 15(SP), AX + MOVQ $0x000000000000000f, CX + NOTQ CX + ANDQ CX, AX + + // Load initial hash state + PINSRD $0x03, 16(DI), X5 + VMOVDQU (DI), X0 + PAND upper_mask<>+0(SB), X5 + PSHUFD $0x1b, X0, X0 + VMOVDQA shuffle_mask<>+0(SB), X7 + +loop: + // Save ABCD and E working values + VMOVDQA X5, (AX) + VMOVDQA X0, 16(AX) + + // Rounds 0-3 + VMOVDQU (SI), X1 + PSHUFB X7, X1 + PADDD X1, X5 + VMOVDQA X0, X6 + SHA1RNDS4 $0x00, X5, X0 + + // Rounds 4-7 + VMOVDQU 16(SI), X2 + PSHUFB X7, X2 + SHA1NEXTE X2, X6 + VMOVDQA X0, X5 + SHA1RNDS4 $0x00, X6, X0 + SHA1MSG1 X2, X1 + + // Rounds 8-11 + VMOVDQU 32(SI), X3 + PSHUFB X7, X3 + SHA1NEXTE X3, X5 + VMOVDQA X0, X6 + SHA1RNDS4 $0x00, X5, X0 + SHA1MSG1 X3, X2 + PXOR X3, X1 + + // Rounds 12-15 + VMOVDQU 48(SI), X4 + PSHUFB X7, X4 + SHA1NEXTE X4, X6 + VMOVDQA X0, X5 + SHA1MSG2 X4, X1 + SHA1RNDS4 $0x00, X6, X0 + SHA1MSG1 X4, X3 + PXOR X4, X2 + + // Rounds 16-19 + SHA1NEXTE X1, X5 + VMOVDQA X0, X6 + SHA1MSG2 X1, X2 + SHA1RNDS4 $0x00, X5, X0 + SHA1MSG1 X1, X4 + PXOR X1, X3 + + // Rounds 20-23 + SHA1NEXTE X2, X6 + VMOVDQA X0, X5 + SHA1MSG2 X2, X3 + SHA1RNDS4 $0x01, X6, X0 + SHA1MSG1 X2, X1 + PXOR X2, X4 + + // Rounds 24-27 + SHA1NEXTE X3, X5 + VMOVDQA X0, X6 + SHA1MSG2 X3, X4 + SHA1RNDS4 $0x01, X5, X0 + SHA1MSG1 X3, X2 + PXOR X3, X1 + + // Rounds 28-31 + SHA1NEXTE X4, X6 + VMOVDQA X0, X5 + SHA1MSG2 X4, X1 + SHA1RNDS4 $0x01, X6, X0 + SHA1MSG1 X4, X3 + PXOR X4, X2 + + // Rounds 32-35 + SHA1NEXTE X1, X5 + VMOVDQA X0, X6 + SHA1MSG2 X1, X2 + SHA1RNDS4 $0x01, X5, X0 + SHA1MSG1 X1, X4 + PXOR X1, X3 + + // Rounds 36-39 + SHA1NEXTE X2, X6 + VMOVDQA X0, X5 + SHA1MSG2 X2, X3 + SHA1RNDS4 $0x01, X6, X0 + SHA1MSG1 X2, X1 + PXOR X2, X4 + + // Rounds 40-43 + SHA1NEXTE X3, X5 + VMOVDQA X0, X6 + SHA1MSG2 X3, X4 + SHA1RNDS4 $0x02, X5, X0 + SHA1MSG1 X3, X2 + PXOR X3, X1 + + // Rounds 44-47 + SHA1NEXTE X4, X6 + VMOVDQA X0, X5 + SHA1MSG2 X4, X1 + SHA1RNDS4 $0x02, X6, X0 + SHA1MSG1 X4, X3 + PXOR X4, X2 + + // Rounds 48-51 + SHA1NEXTE X1, X5 + VMOVDQA X0, X6 + SHA1MSG2 X1, X2 + SHA1RNDS4 $0x02, X5, X0 + SHA1MSG1 X1, X4 + PXOR X1, X3 + + // Rounds 52-55 + SHA1NEXTE X2, X6 + VMOVDQA X0, X5 + SHA1MSG2 X2, X3 + SHA1RNDS4 $0x02, X6, X0 + SHA1MSG1 X2, X1 + PXOR X2, X4 + + // Rounds 56-59 + SHA1NEXTE X3, X5 + VMOVDQA X0, X6 + SHA1MSG2 X3, X4 + SHA1RNDS4 $0x02, X5, X0 + SHA1MSG1 X3, X2 + PXOR X3, X1 + + // Rounds 60-63 + SHA1NEXTE X4, X6 + VMOVDQA X0, X5 + SHA1MSG2 X4, X1 + SHA1RNDS4 $0x03, X6, X0 + SHA1MSG1 X4, X3 + PXOR X4, X2 + + // Rounds 64-67 + SHA1NEXTE X1, X5 + VMOVDQA X0, X6 + SHA1MSG2 X1, X2 + SHA1RNDS4 $0x03, X5, X0 + SHA1MSG1 X1, X4 + PXOR X1, X3 + + // Rounds 68-71 + SHA1NEXTE X2, X6 + VMOVDQA X0, X5 + SHA1MSG2 X2, X3 + SHA1RNDS4 $0x03, X6, X0 + PXOR X2, X4 + + // Rounds 72-75 + SHA1NEXTE X3, X5 + VMOVDQA X0, X6 + SHA1MSG2 X3, X4 + SHA1RNDS4 $0x03, X5, X0 + + // Rounds 76-79 + SHA1NEXTE X4, X6 + VMOVDQA X0, X5 + SHA1RNDS4 $0x03, X6, X0 + + // Add saved E and ABCD + SHA1NEXTE (AX), X5 + PADDD 16(AX), X0 + + // Check if we are done, if not return to the loop + ADDQ $0x40, SI + CMPQ SI, DX + JNE loop + + // Write the hash state back to digest + PSHUFD $0x1b, X0, X0 + VMOVDQU X0, (DI) + PEXTRD $0x03, X5, 16(DI) + +done: + RET + +DATA upper_mask<>+0(SB)/8, $0x0000000000000000 +DATA upper_mask<>+8(SB)/8, $0xffffffff00000000 +GLOBL upper_mask<>(SB), RODATA, $16 + +DATA shuffle_mask<>+0(SB)/8, $0x08090a0b0c0d0e0f +DATA shuffle_mask<>+8(SB)/8, $0x0001020304050607 +GLOBL shuffle_mask<>(SB), RODATA, $16 From e59e128f90aa2453d8881a622524df90feb9d22f Mon Sep 17 00:00:00 2001 From: Damien Neil Date: Mon, 19 May 2025 13:09:06 -0700 Subject: [PATCH 15/99] os: add Root.MkdirAll For #67002 Change-Id: Idd74b5b59e787e89bdfad82171b6a7719465f501 Reviewed-on: https://go-review.googlesource.com/c/go/+/674116 Reviewed-by: Alan Donovan Auto-Submit: Damien Neil LUCI-TryBot-Result: Go LUCI --- api/next/67002.txt | 1 + doc/next/6-stdlib/99-minor/os/67002.md | 1 + src/internal/syscall/windows/at_windows.go | 2 + .../syscall/windows/syscall_windows.go | 1 + src/os/path_test.go | 127 ++++++++++------- src/os/root.go | 14 +- src/os/root_noopenat.go | 22 +++ src/os/root_openat.go | 132 ++++++++++++++---- src/os/root_test.go | 50 ++++++- src/os/root_unix.go | 17 ++- src/os/root_windows.go | 21 ++- 11 files changed, 300 insertions(+), 88 deletions(-) diff --git a/api/next/67002.txt b/api/next/67002.txt index 274f200538..2a442fd6a4 100644 --- a/api/next/67002.txt +++ b/api/next/67002.txt @@ -3,6 +3,7 @@ pkg os, method (*Root) Chown(string, int, int) error #67002 pkg os, method (*Root) Chtimes(string, time.Time, time.Time) error #67002 pkg os, method (*Root) Lchown(string, int, int) error #67002 pkg os, method (*Root) Link(string, string) error #67002 +pkg os, method (*Root) MkdirAll(string, fs.FileMode) error #67002 pkg os, method (*Root) Readlink(string) (string, error) #67002 pkg os, method (*Root) RemoveAll(string) error #67002 pkg os, method (*Root) Rename(string, string) error #67002 diff --git a/doc/next/6-stdlib/99-minor/os/67002.md b/doc/next/6-stdlib/99-minor/os/67002.md index 62f1b36054..a8e79437b6 100644 --- a/doc/next/6-stdlib/99-minor/os/67002.md +++ b/doc/next/6-stdlib/99-minor/os/67002.md @@ -5,6 +5,7 @@ The [os.Root] type supports the following additional methods: * [os.Root.Chtimes] * [os.Root.Lchown] * [os.Root.Link] + * [os.Root.MkdirAll] * [os.Root.Readlink] * [os.Root.RemoveAll] * [os.Root.Rename] diff --git a/src/internal/syscall/windows/at_windows.go b/src/internal/syscall/windows/at_windows.go index 87a84c3da5..87e0195d30 100644 --- a/src/internal/syscall/windows/at_windows.go +++ b/src/internal/syscall/windows/at_windows.go @@ -159,6 +159,8 @@ func ntCreateFileError(err error, flag uint64) error { } case STATUS_FILE_IS_A_DIRECTORY: return syscall.EISDIR + case STATUS_OBJECT_NAME_COLLISION: + return syscall.EEXIST } return s.Errno() } diff --git a/src/internal/syscall/windows/syscall_windows.go b/src/internal/syscall/windows/syscall_windows.go index 20e6ae57a8..905cabc81e 100644 --- a/src/internal/syscall/windows/syscall_windows.go +++ b/src/internal/syscall/windows/syscall_windows.go @@ -548,6 +548,7 @@ func (s NTStatus) Error() string { // At the moment, we only need a couple, so just put them here manually. // If this list starts getting long, we should consider generating the full set. const ( + STATUS_OBJECT_NAME_COLLISION NTStatus = 0xC0000035 STATUS_FILE_IS_A_DIRECTORY NTStatus = 0xC00000BA STATUS_DIRECTORY_NOT_EMPTY NTStatus = 0xC0000101 STATUS_NOT_A_DIRECTORY NTStatus = 0xC0000103 diff --git a/src/os/path_test.go b/src/os/path_test.go index 2a4e9565dc..563f7753bd 100644 --- a/src/os/path_test.go +++ b/src/os/path_test.go @@ -16,63 +16,84 @@ import ( var isReadonlyError = func(error) bool { return false } func TestMkdirAll(t *testing.T) { - t.Parallel() + testMaybeRooted(t, func(t *testing.T, r *Root) { + mkdirAll := MkdirAll + create := Create + if r != nil { + mkdirAll = r.MkdirAll + create = r.Create + } - tmpDir := TempDir() - path := tmpDir + "/_TestMkdirAll_/dir/./dir2" - err := MkdirAll(path, 0777) - if err != nil { - t.Fatalf("MkdirAll %q: %s", path, err) - } - defer RemoveAll(tmpDir + "/_TestMkdirAll_") - - // Already exists, should succeed. - err = MkdirAll(path, 0777) - if err != nil { - t.Fatalf("MkdirAll %q (second time): %s", path, err) - } - - // Make file. - fpath := path + "/file" - f, err := Create(fpath) - if err != nil { - t.Fatalf("create %q: %s", fpath, err) - } - defer f.Close() - - // Can't make directory named after file. - err = MkdirAll(fpath, 0777) - if err == nil { - t.Fatalf("MkdirAll %q: no error", fpath) - } - perr, ok := err.(*PathError) - if !ok { - t.Fatalf("MkdirAll %q returned %T, not *PathError", fpath, err) - } - if filepath.Clean(perr.Path) != filepath.Clean(fpath) { - t.Fatalf("MkdirAll %q returned wrong error path: %q not %q", fpath, filepath.Clean(perr.Path), filepath.Clean(fpath)) - } - - // Can't make subdirectory of file. - ffpath := fpath + "/subdir" - err = MkdirAll(ffpath, 0777) - if err == nil { - t.Fatalf("MkdirAll %q: no error", ffpath) - } - perr, ok = err.(*PathError) - if !ok { - t.Fatalf("MkdirAll %q returned %T, not *PathError", ffpath, err) - } - if filepath.Clean(perr.Path) != filepath.Clean(fpath) { - t.Fatalf("MkdirAll %q returned wrong error path: %q not %q", ffpath, filepath.Clean(perr.Path), filepath.Clean(fpath)) - } - - if runtime.GOOS == "windows" { - path := tmpDir + `\_TestMkdirAll_\dir\.\dir2\` - err := MkdirAll(path, 0777) + path := "_TestMkdirAll_/dir/./dir2" + err := mkdirAll(path, 0777) if err != nil { t.Fatalf("MkdirAll %q: %s", path, err) } + + // Already exists, should succeed. + err = mkdirAll(path, 0777) + if err != nil { + t.Fatalf("MkdirAll %q (second time): %s", path, err) + } + + // Make file. + fpath := path + "/file" + f, err := create(fpath) + if err != nil { + t.Fatalf("create %q: %s", fpath, err) + } + defer f.Close() + + // Can't make directory named after file. + err = mkdirAll(fpath, 0777) + if err == nil { + t.Fatalf("MkdirAll %q: no error", fpath) + } + perr, ok := err.(*PathError) + if !ok { + t.Fatalf("MkdirAll %q returned %T, not *PathError", fpath, err) + } + if filepath.Clean(perr.Path) != filepath.Clean(fpath) { + t.Fatalf("MkdirAll %q returned wrong error path: %q not %q", fpath, filepath.Clean(perr.Path), filepath.Clean(fpath)) + } + + // Can't make subdirectory of file. + ffpath := fpath + "/subdir" + err = mkdirAll(ffpath, 0777) + if err == nil { + t.Fatalf("MkdirAll %q: no error", ffpath) + } + perr, ok = err.(*PathError) + if !ok { + t.Fatalf("MkdirAll %q returned %T, not *PathError", ffpath, err) + } + if filepath.Clean(perr.Path) != filepath.Clean(fpath) { + t.Fatalf("MkdirAll %q returned wrong error path: %q not %q", ffpath, filepath.Clean(perr.Path), filepath.Clean(fpath)) + } + + if runtime.GOOS == "windows" { + path := `_TestMkdirAll_\dir\.\dir2\` + err := mkdirAll(path, 0777) + if err != nil { + t.Fatalf("MkdirAll %q: %s", path, err) + } + } + }) +} + +func TestMkdirAllAbsPath(t *testing.T) { + t.Parallel() + tmpDir := t.TempDir() + path := filepath.Join(tmpDir, "/a/b/c") + if err := MkdirAll(path, 0o777); err != nil { + t.Fatal(err) + } + st, err := Stat(path) + if err != nil { + t.Fatal(err) + } + if !st.IsDir() { + t.Fatalf("after MkdirAll(%q, 0o777), %q is not a directory", path, path) } } diff --git a/src/os/root.go b/src/os/root.go index 9b9deaecc4..02bf0b5a3a 100644 --- a/src/os/root.go +++ b/src/os/root.go @@ -145,7 +145,7 @@ func (r *Root) Chmod(name string, mode FileMode) error { // See [Mkdir] for more details. // // If perm contains bits other than the nine least-significant bits (0o777), -// OpenFile returns an error. +// Mkdir returns an error. func (r *Root) Mkdir(name string, perm FileMode) error { if perm&0o777 != perm { return &PathError{Op: "mkdirat", Path: name, Err: errors.New("unsupported file mode")} @@ -153,6 +153,18 @@ func (r *Root) Mkdir(name string, perm FileMode) error { return rootMkdir(r, name, perm) } +// MkdirAll creates a new directory in the root, along with any necessary parents. +// See [MkdirAll] for more details. +// +// If perm contains bits other than the nine least-significant bits (0o777), +// MkdirAll returns an error. +func (r *Root) MkdirAll(name string, perm FileMode) error { + if perm&0o777 != perm { + return &PathError{Op: "mkdirat", Path: name, Err: errors.New("unsupported file mode")} + } + return rootMkdirAll(r, name, perm) +} + // Chown changes the numeric uid and gid of the named file in the root. // See [Chown] for more details. func (r *Root) Chown(name string, uid, gid int) error { diff --git a/src/os/root_noopenat.go b/src/os/root_noopenat.go index b34416284f..c4929623c4 100644 --- a/src/os/root_noopenat.go +++ b/src/os/root_noopenat.go @@ -8,6 +8,7 @@ package os import ( "errors" + "internal/stringslite" "sync/atomic" "syscall" "time" @@ -147,6 +148,27 @@ func rootMkdir(r *Root, name string, perm FileMode) error { return nil } +func rootMkdirAll(r *Root, name string, perm FileMode) error { + // We only check for errPathEscapes here. + // For errors such as ENOTDIR (a non-directory file appeared somewhere along the path), + // we let MkdirAll generate the error. + // MkdirAll will return a PathError referencing the exact location of the error, + // and we want to preserve that property. + if err := checkPathEscapes(r, name); err == errPathEscapes { + return &PathError{Op: "mkdirat", Path: name, Err: err} + } + prefix := r.root.name + string(PathSeparator) + if err := MkdirAll(prefix+name, perm); err != nil { + if pe, ok := err.(*PathError); ok { + pe.Op = "mkdirat" + pe.Path = stringslite.TrimPrefix(pe.Path, prefix) + return pe + } + return &PathError{Op: "mkdirat", Path: name, Err: underlyingError(err)} + } + return nil +} + func rootRemove(r *Root, name string) error { if err := checkPathEscapesLstat(r, name); err != nil { return &PathError{Op: "removeat", Path: name, Err: err} diff --git a/src/os/root_openat.go b/src/os/root_openat.go index b57506a2eb..192c29e319 100644 --- a/src/os/root_openat.go +++ b/src/os/root_openat.go @@ -69,7 +69,7 @@ func (r *root) Name() string { } func rootChmod(r *Root, name string, mode FileMode) error { - _, err := doInRoot(r, name, func(parent sysfdType, name string) (struct{}, error) { + _, err := doInRoot(r, name, nil, func(parent sysfdType, name string) (struct{}, error) { return struct{}{}, chmodat(parent, name, mode) }) if err != nil { @@ -79,7 +79,7 @@ func rootChmod(r *Root, name string, mode FileMode) error { } func rootChown(r *Root, name string, uid, gid int) error { - _, err := doInRoot(r, name, func(parent sysfdType, name string) (struct{}, error) { + _, err := doInRoot(r, name, nil, func(parent sysfdType, name string) (struct{}, error) { return struct{}{}, chownat(parent, name, uid, gid) }) if err != nil { @@ -89,7 +89,7 @@ func rootChown(r *Root, name string, uid, gid int) error { } func rootLchown(r *Root, name string, uid, gid int) error { - _, err := doInRoot(r, name, func(parent sysfdType, name string) (struct{}, error) { + _, err := doInRoot(r, name, nil, func(parent sysfdType, name string) (struct{}, error) { return struct{}{}, lchownat(parent, name, uid, gid) }) if err != nil { @@ -99,7 +99,7 @@ func rootLchown(r *Root, name string, uid, gid int) error { } func rootChtimes(r *Root, name string, atime time.Time, mtime time.Time) error { - _, err := doInRoot(r, name, func(parent sysfdType, name string) (struct{}, error) { + _, err := doInRoot(r, name, nil, func(parent sysfdType, name string) (struct{}, error) { return struct{}{}, chtimesat(parent, name, atime, mtime) }) if err != nil { @@ -109,7 +109,7 @@ func rootChtimes(r *Root, name string, atime time.Time, mtime time.Time) error { } func rootMkdir(r *Root, name string, perm FileMode) error { - _, err := doInRoot(r, name, func(parent sysfdType, name string) (struct{}, error) { + _, err := doInRoot(r, name, nil, func(parent sysfdType, name string) (struct{}, error) { return struct{}{}, mkdirat(parent, name, perm) }) if err != nil { @@ -118,8 +118,67 @@ func rootMkdir(r *Root, name string, perm FileMode) error { return nil } +func rootMkdirAll(r *Root, fullname string, perm FileMode) error { + // doInRoot opens each path element in turn. + // + // openDirFunc opens all but the last path component. + // The usual default openDirFunc just opens directories with O_DIRECTORY. + // We replace it here with one that creates missing directories along the way. + openDirFunc := func(parent sysfdType, name string) (sysfdType, error) { + for try := range 2 { + fd, err := rootOpenDir(parent, name) + switch err.(type) { + case nil, errSymlink: + return fd, err + } + if try > 0 || !IsNotExist(err) { + return 0, &PathError{Op: "openat", Err: err} + } + if err := mkdirat(parent, name, perm); err != nil { + return 0, &PathError{Op: "mkdirat", Err: err} + } + } + panic("unreachable") + } + // openLastComponentFunc opens the last path component. + openLastComponentFunc := func(parent sysfdType, name string) (struct{}, error) { + err := mkdirat(parent, name, perm) + if err == syscall.EEXIST { + mode, e := modeAt(parent, name) + if e == nil { + if mode.IsDir() { + // The target of MkdirAll is an existing directory. + err = nil + } else if mode&ModeSymlink != 0 { + // The target of MkdirAll is a symlink. + // For consistency with os.MkdirAll, + // succeed if the link resolves to a directory. + // We don't return errSymlink here, because we don't + // want to create the link target if it doesn't exist. + fi, e := r.Stat(fullname) + if e == nil && fi.Mode().IsDir() { + err = nil + } + } + } + } + switch err.(type) { + case nil, errSymlink: + return struct{}{}, err + } + return struct{}{}, &PathError{Op: "mkdirat", Err: err} + } + _, err := doInRoot(r, fullname, openDirFunc, openLastComponentFunc) + if err != nil { + if _, ok := err.(*PathError); !ok { + err = &PathError{Op: "mkdirat", Path: fullname, Err: err} + } + } + return err +} + func rootReadlink(r *Root, name string) (string, error) { - target, err := doInRoot(r, name, func(parent sysfdType, name string) (string, error) { + target, err := doInRoot(r, name, nil, func(parent sysfdType, name string) (string, error) { return readlinkat(parent, name) }) if err != nil { @@ -129,7 +188,7 @@ func rootReadlink(r *Root, name string) (string, error) { } func rootRemove(r *Root, name string) error { - _, err := doInRoot(r, name, func(parent sysfdType, name string) (struct{}, error) { + _, err := doInRoot(r, name, nil, func(parent sysfdType, name string) (struct{}, error) { return struct{}{}, removeat(parent, name) }) if err != nil { @@ -148,7 +207,7 @@ func rootRemoveAll(r *Root, name string) error { // Consistency with os.RemoveAll: Return EINVAL when trying to remove . return &PathError{Op: "RemoveAll", Path: name, Err: syscall.EINVAL} } - _, err := doInRoot(r, name, func(parent sysfdType, name string) (struct{}, error) { + _, err := doInRoot(r, name, nil, func(parent sysfdType, name string) (struct{}, error) { return struct{}{}, removeAllFrom(parent, name) }) if IsNotExist(err) { @@ -161,8 +220,8 @@ func rootRemoveAll(r *Root, name string) error { } func rootRename(r *Root, oldname, newname string) error { - _, err := doInRoot(r, oldname, func(oldparent sysfdType, oldname string) (struct{}, error) { - _, err := doInRoot(r, newname, func(newparent sysfdType, newname string) (struct{}, error) { + _, err := doInRoot(r, oldname, nil, func(oldparent sysfdType, oldname string) (struct{}, error) { + _, err := doInRoot(r, newname, nil, func(newparent sysfdType, newname string) (struct{}, error) { return struct{}{}, renameat(oldparent, oldname, newparent, newname) }) return struct{}{}, err @@ -174,8 +233,8 @@ func rootRename(r *Root, oldname, newname string) error { } func rootLink(r *Root, oldname, newname string) error { - _, err := doInRoot(r, oldname, func(oldparent sysfdType, oldname string) (struct{}, error) { - _, err := doInRoot(r, newname, func(newparent sysfdType, newname string) (struct{}, error) { + _, err := doInRoot(r, oldname, nil, func(oldparent sysfdType, oldname string) (struct{}, error) { + _, err := doInRoot(r, newname, nil, func(newparent sysfdType, newname string) (struct{}, error) { return struct{}{}, linkat(oldparent, oldname, newparent, newname) }) return struct{}{}, err @@ -188,13 +247,23 @@ func rootLink(r *Root, oldname, newname string) error { // doInRoot performs an operation on a path in a Root. // -// It opens the directory containing the final element of the path, -// and calls f with the directory FD and name of the final element. +// It calls f with the FD or handle for the directory containing the last +// path element, and the name of the last path element. // -// If the path refers to a symlink which should be followed, -// then f must return errSymlink. -// doInRoot will follow the symlink and call f again. -func doInRoot[T any](r *Root, name string, f func(parent sysfdType, name string) (T, error)) (ret T, err error) { +// For example, given the path a/b/c it calls f with the FD for a/b and the name "c". +// +// If openDirFunc is non-nil, it is called to open intermediate path elements. +// For example, given the path a/b/c openDirFunc will be called to open a and a/b in turn. +// +// f or openDirFunc may return errSymlink to indicate that the path element is a symlink +// which should be followed. Note that this can result in f being called multiple times +// with different names. For example, give the path "link" which is a symlink to "target", +// f is called with the path "link", returns errSymlink("target"), and is called again with +// the path "target". +// +// If f or openDirFunc return a *PathError, doInRoot will set PathError.Path to the +// full path which caused the error. +func doInRoot[T any](r *Root, name string, openDirFunc func(parent sysfdType, name string) (sysfdType, error), f func(parent sysfdType, name string) (T, error)) (ret T, err error) { if err := r.root.incref(); err != nil { return ret, err } @@ -204,6 +273,9 @@ func doInRoot[T any](r *Root, name string, f func(parent sysfdType, name string) if err != nil { return ret, err } + if openDirFunc == nil { + openDirFunc = rootOpenDir + } rootfd := r.root.fd dirfd := rootfd @@ -226,6 +298,7 @@ func doInRoot[T any](r *Root, name string, f func(parent sysfdType, name string) steps := 0 restarts := 0 symlinks := 0 +Loop: for { steps++ if steps > maxSteps && restarts > maxRestarts { @@ -267,23 +340,23 @@ func doInRoot[T any](r *Root, name string, f func(parent sysfdType, name string) // suffixSep contains any trailing separator characters // which we rejoin to the final part at this time. ret, err = f(dirfd, parts[i]+suffixSep) - if _, ok := err.(errSymlink); !ok { - return ret, err + if err == nil { + return } } else { var fd sysfdType - fd, err = rootOpenDir(dirfd, parts[i]) + fd, err = openDirFunc(dirfd, parts[i]) if err == nil { if dirfd != rootfd { syscall.Close(dirfd) } dirfd = fd - } else if _, ok := err.(errSymlink); !ok { - return ret, err } } - if e, ok := err.(errSymlink); ok { + switch e := err.(type) { + case nil: + case errSymlink: symlinks++ if symlinks > rootMaxSymlinks { return ret, syscall.ELOOP @@ -311,7 +384,16 @@ func doInRoot[T any](r *Root, name string, f func(parent sysfdType, name string) dirfd = rootfd } parts = newparts - continue + continue Loop + case *PathError: + // This is strings.Join(parts[:i+1], PathSeparator). + e.Path = parts[0] + for _, part := range parts[1 : i+1] { + e.Path += string(PathSeparator) + part + } + return ret, e + default: + return ret, err } i++ diff --git a/src/os/root_test.go b/src/os/root_test.go index c75a094730..4e09cb9621 100644 --- a/src/os/root_test.go +++ b/src/os/root_test.go @@ -551,6 +551,40 @@ func TestRootMkdir(t *testing.T) { } } +func TestRootMkdirAll(t *testing.T) { + for _, test := range rootTestCases { + test.run(t, func(t *testing.T, target string, root *os.Root) { + wantError := test.wantError + if !wantError { + fi, err := os.Lstat(filepath.Join(root.Name(), test.open)) + if err == nil && fi.Mode().Type() == fs.ModeSymlink { + // This case is trying to mkdir("some symlink"), + // which is an error. + wantError = true + } + } + + err := root.Mkdir(test.open, 0o777) + if errEndsTest(t, err, wantError, "root.MkdirAll(%q)", test.open) { + return + } + fi, err := os.Lstat(target) + if err != nil { + t.Fatalf(`stat file created with Root.MkdirAll(%q): %v`, test.open, err) + } + if !fi.IsDir() { + t.Fatalf(`stat file created with Root.MkdirAll(%q): not a directory`, test.open) + } + if mode := fi.Mode(); mode&0o777 == 0 { + // Issue #73559: We're not going to worry about the exact + // mode bits (which will have been modified by umask), + // but there should be mode bits. + t.Fatalf(`stat file created with Root.MkdirAll(%q): mode=%v, want non-zero`, test.open, mode) + } + }) + } +} + func TestRootOpenRoot(t *testing.T) { for _, test := range rootTestCases { test.run(t, func(t *testing.T, target string, root *os.Root) { @@ -1115,7 +1149,7 @@ var rootConsistencyTestCases = []rootConsistencyTest{{ name: "symlink to dir ends in slash", fs: []string{ "dir/", - "link => dir", + "link => dir/", }, open: "link", }, { @@ -1361,6 +1395,20 @@ func TestRootConsistencyMkdir(t *testing.T) { } } +func TestRootConsistencyMkdirAll(t *testing.T) { + for _, test := range rootConsistencyTestCases { + test.run(t, func(t *testing.T, path string, r *os.Root) (string, error) { + var err error + if r == nil { + err = os.MkdirAll(path, 0o777) + } else { + err = r.MkdirAll(path, 0o777) + } + return "", err + }) + } +} + func TestRootConsistencyRemove(t *testing.T) { for _, test := range rootConsistencyTestCases { if test.open == "." || test.open == "./" { diff --git a/src/os/root_unix.go b/src/os/root_unix.go index 45462c9e10..af963f472d 100644 --- a/src/os/root_unix.go +++ b/src/os/root_unix.go @@ -62,7 +62,7 @@ func newRoot(fd int, name string) (*Root, error) { // openRootInRoot is Root.OpenRoot. func openRootInRoot(r *Root, name string) (*Root, error) { - fd, err := doInRoot(r, name, func(parent int, name string) (fd int, err error) { + fd, err := doInRoot(r, name, nil, func(parent int, name string) (fd int, err error) { ignoringEINTR(func() error { fd, err = unix.Openat(parent, name, syscall.O_NOFOLLOW|syscall.O_CLOEXEC, 0) if isNoFollowErr(err) { @@ -80,7 +80,7 @@ func openRootInRoot(r *Root, name string) (*Root, error) { // rootOpenFileNolog is Root.OpenFile. func rootOpenFileNolog(root *Root, name string, flag int, perm FileMode) (*File, error) { - fd, err := doInRoot(root, name, func(parent int, name string) (fd int, err error) { + fd, err := doInRoot(root, name, nil, func(parent int, name string) (fd int, err error) { ignoringEINTR(func() error { fd, err = unix.Openat(parent, name, syscall.O_NOFOLLOW|syscall.O_CLOEXEC|flag, uint32(perm)) if isNoFollowErr(err) || err == syscall.ENOTDIR { @@ -118,7 +118,7 @@ func rootOpenDir(parent int, name string) (int, error) { } func rootStat(r *Root, name string, lstat bool) (FileInfo, error) { - fi, err := doInRoot(r, name, func(parent sysfdType, n string) (FileInfo, error) { + fi, err := doInRoot(r, name, nil, func(parent sysfdType, n string) (FileInfo, error) { var fs fileStat if err := unix.Fstatat(parent, n, &fs.sys, unix.AT_SYMLINK_NOFOLLOW); err != nil { return nil, err @@ -136,7 +136,7 @@ func rootStat(r *Root, name string, lstat bool) (FileInfo, error) { } func rootSymlink(r *Root, oldname, newname string) error { - _, err := doInRoot(r, newname, func(parent sysfdType, name string) (struct{}, error) { + _, err := doInRoot(r, newname, nil, func(parent sysfdType, name string) (struct{}, error) { return struct{}{}, symlinkat(oldname, parent, name) }) if err != nil { @@ -246,6 +246,15 @@ func symlinkat(oldname string, newfd int, newname string) error { return unix.Symlinkat(oldname, newfd, newname) } +func modeAt(parent int, name string) (FileMode, error) { + var fs fileStat + if err := unix.Fstatat(parent, name, &fs.sys, unix.AT_SYMLINK_NOFOLLOW); err != nil { + return 0, err + } + fillFileStatFromSys(&fs, name) + return fs.mode, nil +} + // checkSymlink resolves the symlink name in parent, // and returns errSymlink with the link contents. // diff --git a/src/os/root_windows.go b/src/os/root_windows.go index 3d3db1916e..a918606806 100644 --- a/src/os/root_windows.go +++ b/src/os/root_windows.go @@ -119,7 +119,7 @@ func newRoot(fd syscall.Handle, name string) (*Root, error) { // openRootInRoot is Root.OpenRoot. func openRootInRoot(r *Root, name string) (*Root, error) { - fd, err := doInRoot(r, name, rootOpenDir) + fd, err := doInRoot(r, name, nil, rootOpenDir) if err != nil { return nil, &PathError{Op: "openat", Path: name, Err: err} } @@ -128,7 +128,7 @@ func openRootInRoot(r *Root, name string) (*Root, error) { // rootOpenFileNolog is Root.OpenFile. func rootOpenFileNolog(root *Root, name string, flag int, perm FileMode) (*File, error) { - fd, err := doInRoot(root, name, func(parent syscall.Handle, name string) (syscall.Handle, error) { + fd, err := doInRoot(root, name, nil, func(parent syscall.Handle, name string) (syscall.Handle, error) { return openat(parent, name, flag, perm) }) if err != nil { @@ -212,7 +212,7 @@ func rootStat(r *Root, name string, lstat bool) (FileInfo, error) { // merely the empirical evidence that Lstat behaves this way. lstat = false } - fi, err := doInRoot(r, name, func(parent syscall.Handle, n string) (FileInfo, error) { + fi, err := doInRoot(r, name, nil, func(parent syscall.Handle, n string) (FileInfo, error) { fd, err := openat(parent, n, windows.O_OPEN_REPARSE, 0) if err != nil { return nil, err @@ -274,7 +274,7 @@ func rootSymlink(r *Root, oldname, newname string) error { flags |= windows.SYMLINKAT_RELATIVE } - _, err := doInRoot(r, newname, func(parent sysfdType, name string) (struct{}, error) { + _, err := doInRoot(r, newname, nil, func(parent sysfdType, name string) (struct{}, error) { return struct{}{}, windows.Symlinkat(oldname, parent, name, flags) }) if err != nil { @@ -389,3 +389,16 @@ func readlinkat(dirfd syscall.Handle, name string) (string, error) { defer syscall.CloseHandle(fd) return readReparseLinkHandle(fd) } + +func modeAt(parent syscall.Handle, name string) (FileMode, error) { + fd, err := openat(parent, name, windows.O_OPEN_REPARSE|windows.O_DIRECTORY, 0) + if err != nil { + return 0, err + } + defer syscall.CloseHandle(fd) + fi, err := statHandle(name, fd) + if err != nil { + return 0, err + } + return fi.Mode(), nil +} From 06450a82b04dc4b3599ae4864827e6f8a5b7d628 Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Thu, 24 Apr 2025 09:20:30 +0000 Subject: [PATCH 16/99] internal/runtime/cgroup: add line-by-line reader using a single scratch buffer Change-Id: I6a6a636ca21edcc6f16705fbb72a5241d4f7f22d Reviewed-on: https://go-review.googlesource.com/c/go/+/668637 Reviewed-by: Michael Knyszek LUCI-TryBot-Result: Go LUCI --- src/cmd/internal/objabi/pkgspecial.go | 1 + src/go/build/deps_test.go | 1 + src/internal/runtime/cgroup/export_test.go | 24 +++ src/internal/runtime/cgroup/line_reader.go | 179 ++++++++++++++++++ .../runtime/cgroup/line_reader_test.go | 170 +++++++++++++++++ 5 files changed, 375 insertions(+) create mode 100644 src/internal/runtime/cgroup/export_test.go create mode 100644 src/internal/runtime/cgroup/line_reader.go create mode 100644 src/internal/runtime/cgroup/line_reader_test.go diff --git a/src/cmd/internal/objabi/pkgspecial.go b/src/cmd/internal/objabi/pkgspecial.go index d4773b1ecf..e09aeadbc2 100644 --- a/src/cmd/internal/objabi/pkgspecial.go +++ b/src/cmd/internal/objabi/pkgspecial.go @@ -49,6 +49,7 @@ var runtimePkgs = []string{ "runtime", "internal/runtime/atomic", + "internal/runtime/cgroup", "internal/runtime/exithook", "internal/runtime/gc", "internal/runtime/maps", diff --git a/src/go/build/deps_test.go b/src/go/build/deps_test.go index 3a81f5a8ca..6fee3b6679 100644 --- a/src/go/build/deps_test.go +++ b/src/go/build/deps_test.go @@ -98,6 +98,7 @@ var depsRules = ` < internal/runtime/math < internal/runtime/maps < internal/runtime/strconv + < internal/runtime/cgroup < runtime < sync/atomic < internal/sync diff --git a/src/internal/runtime/cgroup/export_test.go b/src/internal/runtime/cgroup/export_test.go new file mode 100644 index 0000000000..200e5aee12 --- /dev/null +++ b/src/internal/runtime/cgroup/export_test.go @@ -0,0 +1,24 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cgroup + +type LineReader = lineReader + +func (l *LineReader) Next() error { + return l.next() +} + +func (l *LineReader) Line() []byte { + return l.line() +} + +func NewLineReader(fd int, scratch []byte, read func(fd int, b []byte) (int, uintptr)) *LineReader { + return newLineReader(fd, scratch, read) +} + +var ( + ErrEOF = errEOF + ErrIncompleteLine = errIncompleteLine +) diff --git a/src/internal/runtime/cgroup/line_reader.go b/src/internal/runtime/cgroup/line_reader.go new file mode 100644 index 0000000000..382cfd70d1 --- /dev/null +++ b/src/internal/runtime/cgroup/line_reader.go @@ -0,0 +1,179 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cgroup + +import ( + "internal/bytealg" +) + +// stringError is a trival implementation of error, equivalent to errors.New, +// which cannot be imported from a runtime package. +type stringError string + +func (e stringError) Error() string { + return string(e) +} + +// All errors are explicit converted to type error in global initialization to +// ensure that the linker allocates a static interface value. This is necessary +// because these errors may be used before the allocator is available. + +var ( + // The entire line did not fit into the scratch buffer. + errIncompleteLine error = stringError("incomplete line") + + // A system call failed. + errSyscallFailed error = stringError("syscall failed") + + // Reached EOF. + errEOF error = stringError("end of file") +) + +// lineReader reads line-by-line using only a single fixed scratch buffer. +// +// When a single line is too long for the scratch buffer, the remainder of the +// line will be skipped. +type lineReader struct { + read func(fd int, b []byte) (int, uintptr) + fd int + scratch []byte + + n int // bytes of scratch in use. + newline int // index of the first newline in scratch. + + eof bool // read reached EOF. +} + +// newLineReader returns a lineReader which reads lines from fd. +// +// fd is the file descriptor to read from. +// +// scratch is the scratch buffer to read into. Note that len(scratch) is the +// longest line that can be read. Lines longer than len(scratch) will have the +// remainder of the line skipped. See next for more details. +// +// read is the function used to read more bytes from fd. This is usually +// internal/runtime/syscall.Read. Note that this follows syscall semantics (not +// io.Reader), so EOF is indicated with n=0, errno=0. +func newLineReader(fd int, scratch []byte, read func(fd int, b []byte) (n int, errno uintptr)) *lineReader { + return &lineReader{ + read: read, + fd: fd, + scratch: scratch, + n: 0, + newline: -1, + } +} + +// next advances to the next line. +// +// May return errIncompleteLine if the scratch buffer is too small to hold the +// entire line, in which case [r.line] will return the beginning of the line. A +// subsequent call to next will skip the remainder of the incomplete line. +// +// N.B. this behavior is important for /proc/self/mountinfo. Some lines +// (mounts), such as overlayfs, may be extremely long due to long super-block +// options, but we don't care about those. The mount type will appear early in +// the line. +// +// Returns errEOF when there are no more lines. +func (r *lineReader) next() error { + // Three cases: + // + // 1. First call, no data read. + // 2. Previous call had a complete line. Drop it and look for the end + // of the next line. + // 3. Previous call had an incomplete line. Find the end of that line + // (start of the next line), and the end of the next line. + + prevComplete := r.newline >= 0 + firstCall := r.n == 0 + + for { + if prevComplete { + // Drop the previous line. + copy(r.scratch, r.scratch[r.newline+1:r.n]) + r.n -= r.newline + 1 + + r.newline = bytealg.IndexByte(r.scratch[:r.n], '\n') + if r.newline >= 0 { + // We have another line already in scratch. Done. + return nil + } + } + + // No newline available. + + if !prevComplete { + // If the previous line was incomplete, we are + // searching for the end of that line and have no need + // for any buffered data. + r.n = 0 + } + + n, errno := r.read(r.fd, r.scratch[r.n:len(r.scratch)]) + if errno != 0 { + return errSyscallFailed + } + r.n += n + + if r.n == 0 { + // Nothing left. + // + // N.B. we can't immediately return EOF when read + // returns 0 as we may still need to return an + // incomplete line. + return errEOF + } + + r.newline = bytealg.IndexByte(r.scratch[:r.n], '\n') + if prevComplete || firstCall { + // Already have the start of the line, just need to find the end. + + if r.newline < 0 { + // We filled the entire buffer or hit EOF, but + // still no newline. + return errIncompleteLine + } + + // Found the end of the line. Done. + return nil + } else { + // Don't have the start of the line. We are currently + // looking for the end of the previous line. + + if r.newline < 0 { + // Not there yet. + if n == 0 { + // No more to read. + return errEOF + } + continue + } + + // Found the end of the previous line. The next + // iteration will drop the remainder of the previous + // line and look for the next line. + prevComplete = true + } + } +} + +// line returns a view of the current line, excluding the trailing newline. +// +// If [r.next] returned errIncompleteLine, then this returns only the beginning +// of the line. +// +// Preconditions: [r.next] is called prior to the first call to line. +// +// Postconditions: The caller must not keep a reference to the returned slice. +func (r *lineReader) line() []byte { + if r.newline < 0 { + // Incomplete line + return r.scratch[:r.n] + } + // Complete line. + return r.scratch[:r.newline] +} diff --git a/src/internal/runtime/cgroup/line_reader_test.go b/src/internal/runtime/cgroup/line_reader_test.go new file mode 100644 index 0000000000..ceef1b5b4c --- /dev/null +++ b/src/internal/runtime/cgroup/line_reader_test.go @@ -0,0 +1,170 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cgroup_test + +import ( + "internal/runtime/cgroup" + "io" + "strings" + "testing" +) + +func TestLineReader(t *testing.T) { + type nextLine struct { + line string + incomplete bool // next call before this line should return incomplete + } + complete := func(s string) nextLine { + return nextLine{line: s} + } + incomplete := func(s string) nextLine { + return nextLine{line: s, incomplete: true} + } + + const scratchSize = 8 + + tests := []struct { + name string + contents string + want []nextLine + }{ + { + name: "empty", + contents: "", + }, + { + name: "single", + contents: "1234\n", + want: []nextLine{ + complete("1234"), + }, + }, + { + name: "single-incomplete", + contents: "1234", + want: []nextLine{ + incomplete("1234"), + }, + }, + { + name: "single-exact", + contents: "1234567\n", + want: []nextLine{ + complete("1234567"), + }, + }, + { + name: "single-exact-incomplete", + contents: "12345678", + want: []nextLine{ + incomplete("12345678"), + }, + }, + { + name: "multi", + contents: `1234 +5678 +`, + want: []nextLine{ + complete("1234"), + complete("5678"), + }, + }, + { + name: "multi-short", + contents: `12 +34 +56 +78 +`, + want: []nextLine{ + complete("12"), + complete("34"), + complete("56"), + complete("78"), + }, + }, + { + name: "multi-notrailingnewline", + contents: `1234 +5678`, + want: []nextLine{ + complete("1234"), + incomplete("5678"), + }, + }, + { + name: "middle-too-long", + contents: `1234 +1234567890 +5678 +`, + want: []nextLine{ + complete("1234"), + incomplete("12345678"), + complete("5678"), + }, + }, + { + // Multiple reads required to find newline. + name: "middle-way-too-long", + contents: `1234 +12345678900000000000000000000000000000000000000000000000000 +5678 +`, + want: []nextLine{ + complete("1234"), + incomplete("12345678"), + complete("5678"), + }, + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + r := strings.NewReader(tc.contents) + read := func(fd int, b []byte) (int, uintptr) { + n, err := r.Read(b) + if err != nil && err != io.EOF { + const dummyErrno = 42 + return n, dummyErrno + } + return n, 0 + } + + var scratch [scratchSize]byte + l := cgroup.NewLineReader(0, scratch[:], read) + + var got []nextLine + for { + err := l.Next() + if err == cgroup.ErrEOF { + break + } else if err == cgroup.ErrIncompleteLine { + got = append(got, incomplete(string(l.Line()))) + } else if err != nil { + t.Fatalf("next got err %v", err) + } else { + got = append(got, complete(string(l.Line()))) + } + } + + if len(got) != len(tc.want) { + t.Logf("got lines %+v", got) + t.Logf("want lines %+v", tc.want) + t.Fatalf("lineReader got %d lines, want %d", len(got), len(tc.want)) + } + + for i := range got { + if got[i].line != tc.want[i].line { + t.Errorf("line %d got %q want %q", i, got[i].line, tc.want[i].line) + } + if got[i].incomplete != tc.want[i].incomplete { + t.Errorf("line %d got incomplete %v want %v", i, got[i].incomplete, tc.want[i].incomplete) + } + } + }) + } +} From f12c66fbed546645389cf184b0e2ffd6ad9f78ec Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Tue, 22 Apr 2025 10:24:37 +0000 Subject: [PATCH 17/99] internal/runtime/cgroup: CPU cgroup limit discovery For #73193. Change-Id: I6a6a636ca9fa9cba429cf053468c56c2939cb1ac Reviewed-on: https://go-review.googlesource.com/c/go/+/668638 LUCI-TryBot-Result: Go LUCI Reviewed-by: Michael Knyszek --- src/internal/runtime/cgroup/cgroup_linux.go | 710 ++++++++++++++++++ .../runtime/cgroup/cgroup_linux_test.go | 476 ++++++++++++ .../runtime/cgroup/export_linux_test.go | 15 + src/internal/runtime/cgroup/runtime.go | 14 + src/runtime/panic.go | 5 + 5 files changed, 1220 insertions(+) create mode 100644 src/internal/runtime/cgroup/cgroup_linux.go create mode 100644 src/internal/runtime/cgroup/cgroup_linux_test.go create mode 100644 src/internal/runtime/cgroup/export_linux_test.go create mode 100644 src/internal/runtime/cgroup/runtime.go diff --git a/src/internal/runtime/cgroup/cgroup_linux.go b/src/internal/runtime/cgroup/cgroup_linux.go new file mode 100644 index 0000000000..2fc3b225c5 --- /dev/null +++ b/src/internal/runtime/cgroup/cgroup_linux.go @@ -0,0 +1,710 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cgroup + +import ( + "internal/bytealg" + "internal/runtime/strconv" + "internal/runtime/syscall" +) + +var ( + ErrNoCgroup error = stringError("not in a cgroup") + + errMalformedFile error = stringError("malformed file") +) + +const _PATH_MAX = 4096 + +const ( + // Required amount of scratch space for CPULimit. + // + // TODO(prattmic): This is shockingly large (~70KiB) due to the (very + // unlikely) combination of extremely long paths consisting mostly + // escaped characters. The scratch buffer ends up in .bss in package + // runtime, so it doesn't contribute to binary size and generally won't + // be faulted in, but it would still be nice to shrink this. A more + // complex parser that did not need to keep entire lines in memory + // could get away with much less. Alternatively, we could do a one-off + // mmap allocation for this buffer, which is only mapped larger if we + // actually need the extra space. + ScratchSize = PathSize + ParseSize + + // Required space to store a path of the cgroup in the filesystem. + PathSize = _PATH_MAX + + // /proc/self/mountinfo path escape sequences are 4 characters long, so + // a path consisting entirely of escaped characters could be 4 times + // larger. + escapedPathMax = 4 * _PATH_MAX + + // Required space to parse /proc/self/mountinfo and /proc/self/cgroup. + // See findCPUMount and findCPURelativePath. + ParseSize = 4 * escapedPathMax +) + +// Include explicit NUL to be sure we include it in the slice. +const ( + v2MaxFile = "/cpu.max\x00" + v1QuotaFile = "/cpu.cfs_quota_us\x00" + v1PeriodFile = "/cpu.cfs_period_us\x00" +) + +// Version indicates the cgroup version. +type Version int + +const ( + VersionUnknown Version = iota + V1 + V2 +) + +// CPU owns the FDs required to read the CPU limit from a cgroup. +type CPU struct { + version Version + + // For cgroup v1, this is cpu.cfs_quota_us. + // For cgroup v2, this is cpu.max. + quotaFD int + + // For cgroup v1, this is cpu.cfs_period_us. + // For cgroup v2, this is unused. + periodFD int +} + +func (c CPU) Close() { + switch c.version { + case V1: + syscall.Close(c.quotaFD) + syscall.Close(c.periodFD) + case V2: + syscall.Close(c.quotaFD) + default: + throw("impossible cgroup version") + } +} + +func checkBufferSize(s []byte, size int) { + if len(s) != size { + println("runtime: cgroup buffer length", len(s), "want", size) + throw("runtime: cgroup invalid buffer length") + } +} + +// OpenCPU returns a CPU for the CPU cgroup containing the current process, or +// ErrNoCgroup if the process is not in a CPU cgroup. +// +// scratch must have length ScratchSize. +func OpenCPU(scratch []byte) (CPU, error) { + checkBufferSize(scratch, ScratchSize) + + base := scratch[:PathSize] + scratch2 := scratch[PathSize:] + + n, version, err := FindCPU(base, scratch2) + if err != nil { + return CPU{}, err + } + + switch version { + case 1: + n2 := copy(base[n:], v1QuotaFile) + path := base[:n+n2] + quotaFD, errno := syscall.Open(&path[0], syscall.O_RDONLY|syscall.O_CLOEXEC, 0) + if errno != 0 { + // This may fail if this process was migrated out of + // the cgroup found by FindCPU and that cgroup has been + // deleted. + return CPU{}, errSyscallFailed + } + + n2 = copy(base[n:], v1PeriodFile) + path = base[:n+n2] + periodFD, errno := syscall.Open(&path[0], syscall.O_RDONLY|syscall.O_CLOEXEC, 0) + if errno != 0 { + // This may fail if this process was migrated out of + // the cgroup found by FindCPU and that cgroup has been + // deleted. + return CPU{}, errSyscallFailed + } + + c := CPU{ + version: 1, + quotaFD: quotaFD, + periodFD: periodFD, + } + return c, nil + case 2: + n2 := copy(base[n:], v2MaxFile) + path := base[:n+n2] + maxFD, errno := syscall.Open(&path[0], syscall.O_RDONLY|syscall.O_CLOEXEC, 0) + if errno != 0 { + // This may fail if this process was migrated out of + // the cgroup found by FindCPU and that cgroup has been + // deleted. + return CPU{}, errSyscallFailed + } + + c := CPU{ + version: 2, + quotaFD: maxFD, + periodFD: -1, + } + return c, nil + default: + throw("impossible cgroup version") + panic("unreachable") + } +} + +// Returns average CPU throughput limit from the cgroup, or ok false if there +// is no limit. +func ReadCPULimit(c CPU) (float64, bool, error) { + switch c.version { + case 1: + quota, err := readV1Number(c.quotaFD) + if err != nil { + return 0, false, errMalformedFile + } + + if quota < 0 { + // No limit. + return 0, false, nil + } + + period, err := readV1Number(c.periodFD) + if err != nil { + return 0, false, errMalformedFile + } + + return float64(quota) / float64(period), true, nil + case 2: + // quotaFD is the cpu.max FD. + return readV2Limit(c.quotaFD) + default: + throw("impossible cgroup version") + panic("unreachable") + } +} + +// Returns the value from the quota/period file. +func readV1Number(fd int) (int64, error) { + // The format of the file is "\n" where the value is in + // int64 microseconds and, if quota, may be -1 to indicate no limit. + // + // MaxInt64 requires 19 bytes to display in base 10, thus the + // conservative max size of this file is 19 + 1 (newline) = 20 bytes. + // We'll provide a bit more for good measure. + // + // Always read from the beginning of the file to get a fresh value. + var b [64]byte + n, errno := syscall.Pread(fd, b[:], 0) + if errno != 0 { + return 0, errSyscallFailed + } + if n == len(b) { + return 0, errMalformedFile + } + + buf := b[:n] + return parseV1Number(buf) +} + +func parseV1Number(buf []byte) (int64, error) { + // Ignore trailing newline. + i := bytealg.IndexByte(buf, '\n') + if i < 0 { + return 0, errMalformedFile + } + buf = buf[:i] + + val, ok := strconv.Atoi64(string(buf)) + if !ok { + return 0, errMalformedFile + } + + return val, nil +} + +// Returns CPU throughput limit, or ok false if there is no limit. +func readV2Limit(fd int) (float64, bool, error) { + // The format of the file is " \n" where quota and + // period are microseconds and quota may be "max" to indicate no limit. + // + // Note that the kernel is inconsistent about whether the values are + // uint64 or int64: values are parsed as uint64 but printed as int64. + // See kernel/sched/core.c:cpu_max_{show,write}. + // + // In practice, the kernel limits the period to 1s (1000000us) (see + // max_cfs_quota_period), and the quota to (1<<44)us (see + // max_cfs_runtime), so these values can't get large enough for the + // distinction to matter. + // + // MaxInt64 requires 19 bytes to display in base 10, thus the + // conservative max size of this file is 19 + 19 + 1 (space) + 1 + // (newline) = 40 bytes. We'll provide a bit more for good measure. + // + // Always read from the beginning of the file to get a fresh value. + var b [64]byte + n, errno := syscall.Pread(fd, b[:], 0) + if errno != 0 { + return 0, false, errSyscallFailed + } + if n == len(b) { + return 0, false, errMalformedFile + } + + buf := b[:n] + return parseV2Limit(buf) +} + +func parseV2Limit(buf []byte) (float64, bool, error) { + i := bytealg.IndexByte(buf, ' ') + if i < 0 { + return 0, false, errMalformedFile + } + + quotaStr := buf[:i] + if bytealg.Compare(quotaStr, []byte("max")) == 0 { + // No limit. + return 0, false, nil + } + + periodStr := buf[i+1:] + // Ignore trailing newline, if any. + i = bytealg.IndexByte(periodStr, '\n') + if i < 0 { + return 0, false, errMalformedFile + } + periodStr = periodStr[:i] + + quota, ok := strconv.Atoi64(string(quotaStr)) + if !ok { + return 0, false, errMalformedFile + } + + period, ok := strconv.Atoi64(string(periodStr)) + if !ok { + return 0, false, errMalformedFile + } + + return float64(quota) / float64(period), true, nil +} + +// FindCPU finds the path to the CPU cgroup that this process is a member of +// and places it in out. scratch is a scratch buffer for internal use. +// +// out must have length PathSize. scratch must have length ParseSize. +// +// Returns the number of bytes written to out and the cgroup version (1 or 2). +// +// Returns ErrNoCgroup if the process is not in a CPU cgroup. +func FindCPU(out []byte, scratch []byte) (int, Version, error) { + checkBufferSize(out, PathSize) + checkBufferSize(scratch, ParseSize) + + // The cgroup path is + . + // + // This is racy if our cgroup is changed while this runs. For example, + // initially there is only a cgroup v2 mount and we are not in a + // cgroup. After, there a cgroup v1 mount with a CPU controller and we + // are placed in a cgroup in this hierarchy. In that case, findCPUMount + // could pick the v2 mount, and findCPURelativePath could find the v2 + // relative path. + // + // In this case we'll later fail to read the cgroup files and fall back + // to assuming no cgroup. + + n, err := FindCPUMountPoint(out, scratch) + if err != nil { + return 0, 0, err + } + + // The relative path always starts with /, so we can directly append it + // to the mount point. + n2, version, err := FindCPURelativePath(out[n:], scratch) + if err != nil { + return 0, 0, err + } + n += n2 + + return n, version, nil +} + +// FindCPURelativePath finds the path to the CPU cgroup that this process is a member of +// relative to the root of the cgroup mount and places it in out. scratch is a +// scratch buffer for internal use. +// +// out must have length PathSize minus the size of the cgroup mount root (if +// known). scratch must have length ParseSize. +// +// Returns the number of bytes written to out and the cgroup version (1 or 2). +// +// Returns ErrNoCgroup if the process is not in a CPU cgroup. +func FindCPURelativePath(out []byte, scratch []byte) (int, Version, error) { + path := []byte("/proc/self/cgroup\x00") + fd, errno := syscall.Open(&path[0], syscall.O_RDONLY|syscall.O_CLOEXEC, 0) + if errno == syscall.ENOENT { + return 0, 0, ErrNoCgroup + } else if errno != 0 { + return 0, 0, errSyscallFailed + } + + // The relative path always starts with /, so we can directly append it + // to the mount point. + n, version, err := parseCPURelativePath(fd, syscall.Read, out[:], scratch) + if err != nil { + syscall.Close(fd) + return 0, 0, err + } + + syscall.Close(fd) + return n, version, nil +} + +// Finds the path of the current process's CPU cgroup relative to the cgroup +// mount and writes it to out. +// +// Returns the number of bytes written and the cgroup version (1 or 2). +func parseCPURelativePath(fd int, read func(fd int, b []byte) (int, uintptr), out []byte, scratch []byte) (int, Version, error) { + // The format of each line is + // + // hierarchy-ID:controller-list:cgroup-path + // + // controller-list is comma-separated. + // See man 5 cgroup for more details. + // + // cgroup v2 has hierarchy-ID 0. If a v1 hierarchy contains "cpu", that + // is the CPU controller. Otherwise the v2 hierarchy (if any) is the + // CPU controller. + // + // hierarchy-ID and controller-list have relatively small maximum + // sizes, and the path can be up to _PATH_MAX, so we need a bit more + // than 1 _PATH_MAX of scratch space. + + l := newLineReader(fd, scratch, read) + + // Bytes written to out. + n := 0 + + for { + err := l.next() + if err == errIncompleteLine { + // Don't allow incomplete lines. While in theory the + // incomplete line may be for a controller we don't + // care about, in practice all lines should be of + // similar length, so we should just have a buffer big + // enough for any. + return 0, 0, err + } else if err == errEOF { + break + } else if err != nil { + return 0, 0, err + } + + line := l.line() + + // The format of each line is + // + // hierarchy-ID:controller-list:cgroup-path + // + // controller-list is comma-separated. + // See man 5 cgroup for more details. + i := bytealg.IndexByte(line, ':') + if i < 0 { + return 0, 0, errMalformedFile + } + + hierarchy := line[:i] + line = line[i+1:] + + i = bytealg.IndexByte(line, ':') + if i < 0 { + return 0, 0, errMalformedFile + } + + controllers := line[:i] + line = line[i+1:] + + path := line + + if string(hierarchy) == "0" { + // v2 hierarchy. + n = copy(out, path) + // Keep searching, we might find a v1 hierarchy with a + // CPU controller, which takes precedence. + } else { + // v1 hierarchy + if containsCPU(controllers) { + // Found a v1 CPU controller. This must be the + // only one, so we're done. + return copy(out, path), V1, nil + } + } + } + + if n == 0 { + // Found nothing. + return 0, 0, ErrNoCgroup + } + + // Must be v2, v1 returns above. + return n, V2, nil +} + +// Returns true if comma-separated list b contains "cpu". +func containsCPU(b []byte) bool { + for len(b) > 0 { + i := bytealg.IndexByte(b, ',') + if i < 0 { + // Neither cmd/compile nor gccgo allocates for these string conversions. + return string(b) == "cpu" + } + + curr := b[:i] + rest := b[i+1:] + + if string(curr) == "cpu" { + return true + } + + b = rest + } + + return false +} + +// FindCPUMountPoint finds the root of the CPU cgroup mount places it in out. +// scratch is a scratch buffer for internal use. +// +// out must have length PathSize. scratch must have length ParseSize. +// +// Returns the number of bytes written to out. +// +// Returns ErrNoCgroup if the process is not in a CPU cgroup. +func FindCPUMountPoint(out []byte, scratch []byte) (int, error) { + checkBufferSize(out, PathSize) + checkBufferSize(scratch, ParseSize) + + path := []byte("/proc/self/mountinfo\x00") + fd, errno := syscall.Open(&path[0], syscall.O_RDONLY|syscall.O_CLOEXEC, 0) + if errno == syscall.ENOENT { + return 0, ErrNoCgroup + } else if errno != 0 { + return 0, errSyscallFailed + } + + n, err := parseCPUMount(fd, syscall.Read, out, scratch) + if err != nil { + syscall.Close(fd) + return 0, err + } + syscall.Close(fd) + + return n, nil +} + +// Returns the mount point for the cpu cgroup controller (v1 or v2) from +// /proc/self/mountinfo. +func parseCPUMount(fd int, read func(fd int, b []byte) (int, uintptr), out []byte, scratch []byte) (int, error) { + // The format of each line is: + // + // 36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue + // (1)(2)(3) (4) (5) (6) (7) (8) (9) (10) (11) + // + // (1) mount ID: unique identifier of the mount (may be reused after umount) + // (2) parent ID: ID of parent (or of self for the top of the mount tree) + // (3) major:minor: value of st_dev for files on filesystem + // (4) root: root of the mount within the filesystem + // (5) mount point: mount point relative to the process's root + // (6) mount options: per mount options + // (7) optional fields: zero or more fields of the form "tag[:value]" + // (8) separator: marks the end of the optional fields + // (9) filesystem type: name of filesystem of the form "type[.subtype]" + // (10) mount source: filesystem specific information or "none" + // (11) super options: per super block options + // + // See man 5 proc_pid_mountinfo for more details. + // + // Note that emitted paths will not contain space, tab, newline, or + // carriage return. Those are escaped. See Linux show_mountinfo -> + // show_path. We must unescape before returning. + // + // We return the mount point (5) if the filesystem type (9) is cgroup2, + // or cgroup with "cpu" in the super options (11). + // + // (4), (5), and (10) are up to _PATH_MAX. The remaining fields have a + // small fixed maximum size, so 4*_PATH_MAX is plenty of scratch space. + // Note that non-cgroup mounts may have arbitrarily long (11), but we + // can skip those when parsing. + + l := newLineReader(fd, scratch, read) + + // Bytes written to out. + n := 0 + + for { + //incomplete := false + err := l.next() + if err == errIncompleteLine { + // An incomplete line is fine as long as it doesn't + // impede parsing the fields we need. It shouldn't be + // possible for any mount to use more than 3*PATH_MAX + // before (9) because there are two paths and all other + // earlier fields have bounded options. Only (11) has + // unbounded options. + } else if err == errEOF { + break + } else if err != nil { + return 0, err + } + + line := l.line() + + // Skip first four fields. + for range 4 { + i := bytealg.IndexByte(line, ' ') + if i < 0 { + return 0, errMalformedFile + } + line = line[i+1:] + } + + // (5) mount point: mount point relative to the process's root + i := bytealg.IndexByte(line, ' ') + if i < 0 { + return 0, errMalformedFile + } + mnt := line[:i] + line = line[i+1:] + + // Skip ahead past optional fields, delimited by " - ". + for { + i = bytealg.IndexByte(line, ' ') + if i < 0 { + return 0, errMalformedFile + } + if i+3 >= len(line) { + return 0, errMalformedFile + } + delim := line[i : i+3] + if string(delim) == " - " { + line = line[i+3:] + break + } + line = line[i+1:] + } + + // (9) filesystem type: name of filesystem of the form "type[.subtype]" + i = bytealg.IndexByte(line, ' ') + if i < 0 { + return 0, errMalformedFile + } + ftype := line[:i] + line = line[i+1:] + + if string(ftype) != "cgroup" && string(ftype) != "cgroup2" { + continue + } + + // As in findCPUPath, cgroup v1 with a CPU controller takes + // precendence over cgroup v2. + if string(ftype) == "cgroup2" { + // v2 hierarchy. + n, err = unescapePath(out, mnt) + if err != nil { + // Don't keep searching on error. The kernel + // should never produce broken escaping. + return n, err + } + // Keep searching, we might find a v1 hierarchy with a + // CPU controller, which takes precedence. + continue + } + + // (10) mount source: filesystem specific information or "none" + i = bytealg.IndexByte(line, ' ') + if i < 0 { + return 0, errMalformedFile + } + // Don't care about mount source. + line = line[i+1:] + + // (11) super options: per super block options + superOpt := line + + // v1 hierarchy + if containsCPU(superOpt) { + // Found a v1 CPU controller. This must be the + // only one, so we're done. + return unescapePath(out, mnt) + } + } + + if n == 0 { + // Found nothing. + return 0, ErrNoCgroup + } + + return n, nil +} + +var errInvalidEscape error = stringError("invalid path escape sequence") + +// unescapePath copies in to out, unescaping escape sequences generated by +// Linux's show_path. +// +// That is, '\', ' ', '\t', and '\n' are converted to octal escape sequences, +// like '\040' for space. +// +// out must be at least as large as in. +// +// Returns the number of bytes written to out. +// +// Also see escapePath in cgroup_linux_test.go. +func unescapePath(out []byte, in []byte) (int, error) { + // Not strictly necessary, but simplifies the implementation and will + // always hold in users. + if len(out) < len(in) { + throw("output too small") + } + + var outi, ini int + for ini < len(in) { + c := in[ini] + if c != '\\' { + out[outi] = c + outi++ + ini++ + continue + } + + // Start of escape sequence. + + // Escape sequence is always 4 characters: one slash and three + // digits. + if ini+3 >= len(in) { + return outi, errInvalidEscape + } + + var outc byte + for i := range 3 { + c := in[ini+1+i] + if c < '0' || c > '9' { + return outi, errInvalidEscape + } + + outc *= 8 + outc += c - '0' + } + + out[outi] = outc + outi++ + + ini += 4 + } + + return outi, nil +} diff --git a/src/internal/runtime/cgroup/cgroup_linux_test.go b/src/internal/runtime/cgroup/cgroup_linux_test.go new file mode 100644 index 0000000000..d47fe42067 --- /dev/null +++ b/src/internal/runtime/cgroup/cgroup_linux_test.go @@ -0,0 +1,476 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cgroup_test + +import ( + "fmt" + "internal/runtime/cgroup" + "io" + "strconv" + "strings" + "testing" +) + +const _PATH_MAX = 4096 + +func TestParseV1Number(t *testing.T) { + tests := []struct { + name string + contents string + want int64 + wantErr bool + }{ + { + name: "disabled", + contents: "-1\n", + want: -1, + }, + { + name: "500000", + contents: "500000\n", + want: 500000, + }, + { + name: "MaxInt64", + contents: "9223372036854775807\n", + want: 9223372036854775807, + }, + { + name: "missing-newline", + contents: "500000", + wantErr: true, + }, + { + name: "not-a-number", + contents: "123max\n", + wantErr: true, + }, + { + name: "v2", + contents: "1000 5000\n", + wantErr: true, + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + got, err := cgroup.ParseV1Number([]byte(tc.contents)) + if tc.wantErr { + if err == nil { + t.Fatalf("parseV1Number got err nil want non-nil") + } + return + } + if err != nil { + t.Fatalf("parseV1Number got err %v want nil", err) + } + + if got != tc.want { + t.Errorf("parseV1Number got %d want %d", got, tc.want) + } + }) + } +} + +func TestParseV2Limit(t *testing.T) { + tests := []struct { + name string + contents string + want float64 + wantOK bool + wantErr bool + }{ + { + name: "disabled", + contents: "max 100000\n", + wantOK: false, + }, + { + name: "5", + contents: "500000 100000\n", + want: 5, + wantOK: true, + }, + { + name: "0.5", + contents: "50000 100000\n", + want: 0.5, + wantOK: true, + }, + { + name: "2.5", + contents: "250000 100000\n", + want: 2.5, + wantOK: true, + }, + { + name: "MaxInt64", + contents: "9223372036854775807 9223372036854775807\n", + want: 1, + wantOK: true, + }, + { + name: "missing-newline", + contents: "500000 100000", + wantErr: true, + }, + { + name: "v1", + contents: "500000\n", + wantErr: true, + }, + { + name: "quota-not-a-number", + contents: "500000us 100000\n", + wantErr: true, + }, + { + name: "period-not-a-number", + contents: "500000 100000us\n", + wantErr: true, + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + got, gotOK, err := cgroup.ParseV2Limit([]byte(tc.contents)) + if tc.wantErr { + if err == nil { + t.Fatalf("parseV1Limit got err nil want non-nil") + } + return + } + if err != nil { + t.Fatalf("parseV2Limit got err %v want nil", err) + } + + if gotOK != tc.wantOK { + t.Errorf("parseV2Limit got ok %v want %v", gotOK, tc.wantOK) + } + + if tc.wantOK && got != tc.want { + t.Errorf("parseV2Limit got %f want %f", got, tc.want) + } + }) + } +} + +func TestParseCPURelativePath(t *testing.T) { + tests := []struct { + name string + contents string + want string + wantVer cgroup.Version + wantErr bool + }{ + { + name: "empty", + contents: "", + wantErr: true, + }, + { + name: "v1", + contents: `2:cpu,cpuacct:/a/b/cpu +1:blkio:/a/b/blkio +`, + want: "/a/b/cpu", + wantVer: cgroup.V1, + }, + { + name: "v2", + contents: "0::/a/b/c\n", + want: "/a/b/c", + wantVer: cgroup.V2, + }, + { + name: "mixed", + contents: `2:cpu,cpuacct:/a/b/cpu +1:blkio:/a/b/blkio +0::/a/b/v2 +`, + want: "/a/b/cpu", + wantVer: cgroup.V1, + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + r := strings.NewReader(tc.contents) + read := func(fd int, b []byte) (int, uintptr) { + n, err := r.Read(b) + if err != nil && err != io.EOF { + const dummyErrno = 42 + return n, dummyErrno + } + return n, 0 + } + + var got [cgroup.PathSize]byte + var scratch [cgroup.ParseSize]byte + n, gotVer, err := cgroup.ParseCPURelativePath(0, read, got[:], scratch[:]) + if (err != nil) != tc.wantErr { + t.Fatalf("parseCPURelativePath got err %v want %v", err, tc.wantErr) + } + + if gotVer != tc.wantVer { + t.Errorf("parseCPURelativePath got cgroup version %d want %d", gotVer, tc.wantVer) + } + + if string(got[:n]) != tc.want { + t.Errorf("parseCPURelativePath got %q want %q", string(got[:n]), tc.want) + } + }) + } +} + +func TestContainsCPU(t *testing.T) { + tests := []struct { + in string + want bool + }{ + { + in: "", + want: false, + }, + { + in: ",", + want: false, + }, + { + in: "cpu", + want: true, + }, + { + in: "memory,cpu", + want: true, + }, + { + in: "cpu,memory", + want: true, + }, + { + in: "memory,cpu,block", + want: true, + }, + { + in: "memory,cpuacct,block", + want: false, + }, + } + + for _, tc := range tests { + t.Run(tc.in, func(t *testing.T) { + got := cgroup.ContainsCPU([]byte(tc.in)) + if got != tc.want { + t.Errorf("containsCPU(%q) got %v want %v", tc.in, got, tc.want) + } + }) + } +} + +func TestParseCPUMount(t *testing.T) { + // Used for v2-longline. We want an overlayfs mount to have an option + // so long that the entire line can't possibly fit in the scratch + // buffer. + const lowerPath = "/so/many/overlay/layers" + overlayLongLowerDir := lowerPath + for i := 0; len(overlayLongLowerDir) < cgroup.ScratchSize; i++ { + overlayLongLowerDir += fmt.Sprintf(":%s%d", lowerPath, i) + } + + tests := []struct { + name string + contents string + want string + wantErr bool + }{ + { + name: "empty", + contents: "", + wantErr: true, + }, + { + name: "v1", + contents: `22 1 8:1 / / rw,relatime - ext4 /dev/root rw +20 22 0:19 / /proc rw,nosuid,nodev,noexec - proc proc rw +21 22 0:20 / /sys rw,nosuid,nodev,noexec - sysfs sysfs rw +49 22 0:37 / /sys/fs/cgroup/memory rw - cgroup cgroup rw,memory +54 22 0:38 / /sys/fs/cgroup/io rw - cgroup cgroup rw,io +56 22 0:40 / /sys/fs/cgroup/cpu rw - cgroup cgroup rw,cpu,cpuacct +58 22 0:42 / /sys/fs/cgroup/net rw - cgroup cgroup rw,net +59 22 0:43 / /sys/fs/cgroup/cpuset rw - cgroup cgroup rw,cpuset +`, + want: "/sys/fs/cgroup/cpu", + }, + { + name: "v2", + contents: `22 1 8:1 / / rw,relatime - ext4 /dev/root rw +20 22 0:19 / /proc rw,nosuid,nodev,noexec - proc proc rw +21 22 0:20 / /sys rw,nosuid,nodev,noexec - sysfs sysfs rw +25 21 0:22 / /sys/fs/cgroup rw,nosuid,nodev,noexec - cgroup2 cgroup2 rw +`, + want: "/sys/fs/cgroup", + }, + { + name: "mixed", + contents: `22 1 8:1 / / rw,relatime - ext4 /dev/root rw +20 22 0:19 / /proc rw,nosuid,nodev,noexec - proc proc rw +21 22 0:20 / /sys rw,nosuid,nodev,noexec - sysfs sysfs rw +25 21 0:22 / /sys/fs/cgroup rw,nosuid,nodev,noexec - cgroup2 cgroup2 rw +49 22 0:37 / /sys/fs/cgroup/memory rw - cgroup cgroup rw,memory +54 22 0:38 / /sys/fs/cgroup/io rw - cgroup cgroup rw,io +56 22 0:40 / /sys/fs/cgroup/cpu rw - cgroup cgroup rw,cpu,cpuacct +58 22 0:42 / /sys/fs/cgroup/net rw - cgroup cgroup rw,net +59 22 0:43 / /sys/fs/cgroup/cpuset rw - cgroup cgroup rw,cpuset +`, + want: "/sys/fs/cgroup/cpu", + }, + { + name: "v2-escaped", + contents: `22 1 8:1 / / rw,relatime - ext4 /dev/root rw +20 22 0:19 / /proc rw,nosuid,nodev,noexec - proc proc rw +21 22 0:20 / /sys rw,nosuid,nodev,noexec - sysfs sysfs rw +25 21 0:22 / /sys/fs/cgroup/tab\011tab rw,nosuid,nodev,noexec - cgroup2 cgroup2 rw +`, + want: `/sys/fs/cgroup/tab tab`, + }, + { + // Overly long line on a different mount doesn't matter. + name: "v2-longline", + contents: `22 1 8:1 / / rw,relatime - ext4 /dev/root rw +20 22 0:19 / /proc rw,nosuid,nodev,noexec - proc proc rw +21 22 0:20 / /sys rw,nosuid,nodev,noexec - sysfs sysfs rw +262 31 0:72 / /tmp/overlay2/0143e063b02f4801de9c847ad1c5ddc21fd2ead00653064d0c72ea967b248870/merged rw,relatime shared:729 - overlay overlay rw,lowerdir=` + overlayLongLowerDir + `,upperdir=/tmp/diff,workdir=/tmp/work +25 21 0:22 / /sys/fs/cgroup rw,nosuid,nodev,noexec - cgroup2 cgroup2 rw +`, + want: "/sys/fs/cgroup", + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + r := strings.NewReader(tc.contents) + read := func(fd int, b []byte) (int, uintptr) { + n, err := r.Read(b) + if err != nil && err != io.EOF { + const dummyErrno = 42 + return n, dummyErrno + } + return n, 0 + } + + var got [cgroup.PathSize]byte + var scratch [cgroup.ParseSize]byte + n, err := cgroup.ParseCPUMount(0, read, got[:], scratch[:]) + if (err != nil) != tc.wantErr { + t.Fatalf("parseCPUMount got err %v want %v", err, tc.wantErr) + } + + if string(got[:n]) != tc.want { + t.Errorf("parseCPUMount got %q want %q", string(got[:n]), tc.want) + } + }) + } +} + +// escapePath performs escaping equivalent to Linux's show_path. +// +// That is, '\', ' ', '\t', and '\n' are converted to octal escape sequences, +// like '\040' for space. +func escapePath(s string) string { + out := make([]rune, 0, len(s)) + for _, c := range s { + switch c { + case '\\', ' ', '\t', '\n': + out = append(out, '\\') + cs := strconv.FormatInt(int64(c), 8) + if len(cs) <= 2 { + out = append(out, '0') + } + if len(cs) <= 1 { + out = append(out, '0') + } + for _, csc := range cs { + out = append(out, csc) + } + default: + out = append(out, c) + } + } + return string(out) +} + +func TestEscapePath(t *testing.T) { + tests := []struct { + name string + unescaped string + escaped string + }{ + { + name: "boring", + unescaped: `/a/b/c`, + escaped: `/a/b/c`, + }, + { + name: "space", + unescaped: `/a/b b/c`, + escaped: `/a/b\040b/c`, + }, + { + name: "tab", + unescaped: `/a/b b/c`, + escaped: `/a/b\011b/c`, + }, + { + name: "newline", + unescaped: `/a/b +b/c`, + escaped: `/a/b\012b/c`, + }, + { + name: "slash", + unescaped: `/a/b\b/c`, + escaped: `/a/b\134b/c`, + }, + { + name: "beginning", + unescaped: `\b/c`, + escaped: `\134b/c`, + }, + { + name: "ending", + unescaped: `/a/\`, + escaped: `/a/\134`, + }, + } + + t.Run("escapePath", func(t *testing.T) { + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + got := escapePath(tc.unescaped) + if got != tc.escaped { + t.Errorf("escapePath got %q want %q", got, tc.escaped) + } + }) + } + }) + + t.Run("unescapePath", func(t *testing.T) { + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + in := []byte(tc.escaped) + out := make([]byte, len(in)) + n, err := cgroup.UnescapePath(out, in) + if err != nil { + t.Errorf("unescapePath got err %v want nil", err) + } + got := string(out[:n]) + if got != tc.unescaped { + t.Errorf("unescapePath got %q want %q", got, tc.escaped) + } + }) + } + }) +} diff --git a/src/internal/runtime/cgroup/export_linux_test.go b/src/internal/runtime/cgroup/export_linux_test.go new file mode 100644 index 0000000000..653fcd1b2f --- /dev/null +++ b/src/internal/runtime/cgroup/export_linux_test.go @@ -0,0 +1,15 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cgroup + +var ContainsCPU = containsCPU + +var ParseV1Number = parseV1Number +var ParseV2Limit = parseV2Limit + +var ParseCPURelativePath = parseCPURelativePath +var ParseCPUMount = parseCPUMount + +var UnescapePath = unescapePath diff --git a/src/internal/runtime/cgroup/runtime.go b/src/internal/runtime/cgroup/runtime.go new file mode 100644 index 0000000000..39c9295b07 --- /dev/null +++ b/src/internal/runtime/cgroup/runtime.go @@ -0,0 +1,14 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cgroup + +import ( + _ "unsafe" // for linkname +) + +// Functions below pushed from runtime. + +//go:linkname throw +func throw(s string) diff --git a/src/runtime/panic.go b/src/runtime/panic.go index b8f23cc3c2..95305b84bc 100644 --- a/src/runtime/panic.go +++ b/src/runtime/panic.go @@ -1056,6 +1056,11 @@ func internal_sync_fatal(s string) { fatal(s) } +//go:linkname cgroup_throw internal/runtime/cgroup.throw +func cgroup_throw(s string) { + throw(s) +} + // throw triggers a fatal error that dumps a stack trace and exits. // // throw should be used for runtime-internal fatal errors where Go itself, From e6dacf91ffb0a356aa692ab5c46411e2eef913f3 Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Mon, 5 May 2025 13:44:26 -0400 Subject: [PATCH 18/99] runtime: use cgroup CPU limit to set GOMAXPROCS This CL adds two related features enabled by default via compatibility GODEBUGs containermaxprocs and updatemaxprocs. On Linux, containermaxprocs makes the Go runtime consider cgroup CPU bandwidth limits (quota/period) when setting GOMAXPROCS. If the cgroup limit is lower than the number of logical CPUs available, then the cgroup limit takes precedence. On all OSes, updatemaxprocs makes the Go runtime periodically recalculate the default GOMAXPROCS value and update GOMAXPROCS if it has changed. If GOMAXPROCS is set manually, this update does not occur. This is intended primarily to detect changes to cgroup limits, but it applies on all OSes because the CPU affinity mask can change as well. The runtime only considers the limit in the leaf cgroup (the one that actually contains the process), caching the CPU limit file descriptor(s), which are periodically reread for updates. This is a small departure from the original proposed design. It will not consider limits of parent cgroups (which may be lower than the leaf), and it will not detection cgroup migration after process start. We can consider changing this in the future, but the simpler approach is less invasive; less risk to packages that have some awareness of runtime internals. e.g., if the runtime periodically opens new files during execution, file descriptor leak detection is difficult to implement in a stable way. For #73193. Cq-Include-Trybots: luci.golang.try:gotip-linux-amd64-longtest Change-Id: I6a6a636c631c1ae577fb8254960377ba91c5dc98 Reviewed-on: https://go-review.googlesource.com/c/go/+/670497 LUCI-TryBot-Result: Go LUCI Reviewed-by: Michael Knyszek --- api/next/73193.txt | 1 + doc/godebug.md | 11 + doc/next/4-runtime.md | 25 ++ doc/next/6-stdlib/99-minor/runtime/73193.md | 5 + src/go/build/deps_test.go | 2 + src/internal/cgrouptest/cgrouptest_linux.go | 206 +++++++++++ .../cgrouptest/cgrouptest_linux_test.go | 19 + src/internal/coverage/pkid.go | 27 +- src/internal/godebugs/table.go | 2 + src/runtime/cgroup_linux.go | 119 +++++++ src/runtime/cgroup_linux_test.go | 325 ++++++++++++++++++ src/runtime/cgroup_stubs.go | 24 ++ src/runtime/debug.go | 68 +++- src/runtime/float.go | 79 +++++ src/runtime/gomaxprocs_windows_test.go | 44 +++ src/runtime/lockrank.go | 55 +-- src/runtime/metrics/doc.go | 9 + src/runtime/mklockrank.go | 3 +- src/runtime/proc.go | 113 +++++- src/runtime/runtime.go | 1 + src/runtime/runtime1.go | 4 + src/runtime/runtime2.go | 17 +- src/runtime/testdata/testprog/gomaxprocs.go | 152 ++++++++ .../testdata/testprog/gomaxprocs_windows.go | 63 ++++ 24 files changed, 1329 insertions(+), 45 deletions(-) create mode 100644 api/next/73193.txt create mode 100644 doc/next/6-stdlib/99-minor/runtime/73193.md create mode 100644 src/internal/cgrouptest/cgrouptest_linux.go create mode 100644 src/internal/cgrouptest/cgrouptest_linux_test.go create mode 100644 src/runtime/cgroup_linux.go create mode 100644 src/runtime/cgroup_linux_test.go create mode 100644 src/runtime/cgroup_stubs.go create mode 100644 src/runtime/gomaxprocs_windows_test.go create mode 100644 src/runtime/testdata/testprog/gomaxprocs.go create mode 100644 src/runtime/testdata/testprog/gomaxprocs_windows.go diff --git a/api/next/73193.txt b/api/next/73193.txt new file mode 100644 index 0000000000..f2b6ea748c --- /dev/null +++ b/api/next/73193.txt @@ -0,0 +1 @@ +pkg runtime, func SetDefaultGOMAXPROCS() #73193 diff --git a/doc/godebug.md b/doc/godebug.md index 1d6e6d78d0..b0c820da46 100644 --- a/doc/godebug.md +++ b/doc/godebug.md @@ -169,6 +169,17 @@ Go command will follow symlinks to regular files embedding files. The default value `embedfollowsymlinks=0` does not allow following symlinks. `embedfollowsymlinks=1` will allow following symlinks. +Go 1.25 added a new `containermaxprocs` setting that controls whether the Go +runtime will consider cgroup CPU limits when setting the default GOMAXPROCS. +The default value `containermaxprocs=1` will use cgroup limits in addition to +the total logical CPU count and CPU affinity. `containermaxprocs=0` will +disable consideration of cgroup limits. This setting only affects Linux. + +Go 1.25 added a new `updatemaxprocs` setting that controls whether the Go +runtime will periodically update GOMAXPROCS for new CPU affinity or cgroup +limits. The default value `updatemaxprocs=1` will enable periodic updates. +`updatemaxprocs=0` will disable periodic updates. + Go 1.25 corrected the semantics of contention reports for runtime-internal locks, and so removed the [`runtimecontentionstacks` setting](/pkg/runtime#hdr-Environment_Variable). diff --git a/doc/next/4-runtime.md b/doc/next/4-runtime.md index 4e8182c8cf..67c1cee401 100644 --- a/doc/next/4-runtime.md +++ b/doc/next/4-runtime.md @@ -17,6 +17,31 @@ This program will now print: panic: PANIC [recovered, repanicked] + + +The default behavior of the `GOMAXPROCS` has changed. In prior versions of Go, +`GOMAXPROCS` defaults to the number of logical CPUs available at startup +([runtime.NumCPU]). Go 1.25 introduces two changes: + +1. On Linux, the runtime considers the CPU bandwidth limit of the cgroup + containing the process, if any. If the CPU bandwidth limit is lower than the + number of logical CPUs available, `GOMAXPROCS` will default to the lower + limit. In container runtime systems like Kubernetes, cgroup CPU bandwidth + limits generally correspond to the "CPU limit" option. The Go runtime does + not consider the "CPU requests" option. + +2. On all OSes, the runtime periodically updates `GOMAXPROCS` if the number + of logical CPUs available or the cgroup CPU bandwidth limit change. + +Both of these behaviors are automatically disabled if `GOMAXPROCS` is set +manually via the `GOMAXPROCS` environment variable or a call to +[runtime.GOMAXPROCS]. They can also be disabled explicitly with the [GODEBUG +settings](/doc/godebug) `containermaxprocs=0` and `updatemaxprocs=0`, +respectively. + +In order to support reading updated cgroup limits, the runtime will keep cached +file descriptors for the cgroup files for the duration of the process lifetime. + On Linux systems with kernel support for anonymous VMA names diff --git a/doc/next/6-stdlib/99-minor/runtime/73193.md b/doc/next/6-stdlib/99-minor/runtime/73193.md new file mode 100644 index 0000000000..a729f6a3c4 --- /dev/null +++ b/doc/next/6-stdlib/99-minor/runtime/73193.md @@ -0,0 +1,5 @@ +The new [SetDefaultGOMAXPROCS] function sets `GOMAXPROCS` to the runtime +default value, as if the `GOMAXPROCS` environment variable is not set. This is +useful for enabling the [new `GOMAXPROCS` default](#runtime) if it has been +disabled by the `GOMAXPROCS` environment variable or a prior call to +[GOMAXPROCS]. diff --git a/src/go/build/deps_test.go b/src/go/build/deps_test.go index 6fee3b6679..e4fcc766b7 100644 --- a/src/go/build/deps_test.go +++ b/src/go/build/deps_test.go @@ -795,6 +795,8 @@ var depsRules = ` FMT, compress/gzip, embed, encoding/binary < encoding/json/internal/jsontest; CGO, internal/syscall/unix < net/internal/cgotest; FMT < math/big/internal/asmgen; + + FMT, testing < internal/cgrouptest; ` // listStdPkgs returns the same list of packages as "go list std". diff --git a/src/internal/cgrouptest/cgrouptest_linux.go b/src/internal/cgrouptest/cgrouptest_linux.go new file mode 100644 index 0000000000..f23c37a705 --- /dev/null +++ b/src/internal/cgrouptest/cgrouptest_linux.go @@ -0,0 +1,206 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package cgrouptest provides best-effort helpers for running tests inside a +// cgroup. +package cgrouptest + +import ( + "fmt" + "internal/runtime/cgroup" + "os" + "path/filepath" + "slices" + "strconv" + "strings" + "syscall" + "testing" +) + +type CgroupV2 struct { + orig string + path string +} + +func (c *CgroupV2) Path() string { + return c.path +} + +// Path to cpu.max. +func (c *CgroupV2) CPUMaxPath() string { + return filepath.Join(c.path, "cpu.max") +} + +// Set cpu.max. Pass -1 for quota to disable the limit. +func (c *CgroupV2) SetCPUMax(quota, period int64) error { + q := "max" + if quota >= 0 { + q = strconv.FormatInt(quota, 10) + } + buf := fmt.Sprintf("%s %d", q, period) + return os.WriteFile(c.CPUMaxPath(), []byte(buf), 0) +} + +// InCgroupV2 creates a new v2 cgroup, migrates the current process into it, +// and then calls fn. When fn returns, the current process is migrated back to +// the original cgroup and the new cgroup is destroyed. +// +// If a new cgroup cannot be created, the test is skipped. +// +// This must not be used in parallel tests, as it affects the entire process. +func InCgroupV2(t *testing.T, fn func(*CgroupV2)) { + mount, rel := findCurrent(t) + parent := findOwnedParent(t, mount, rel) + orig := filepath.Join(mount, rel) + + // Make sure the parent allows children to control cpu. + b, err := os.ReadFile(filepath.Join(parent, "cgroup.subtree_control")) + if err != nil { + t.Skipf("unable to read cgroup.subtree_control: %v", err) + } + if !slices.Contains(strings.Fields(string(b)), "cpu") { + // N.B. We should have permission to add cpu to + // subtree_control, but it seems like a bad idea to change this + // on a high-level cgroup that probably has lots of existing + // children. + t.Skipf("Parent cgroup %s does not allow children to control cpu, only %q", parent, string(b)) + } + + path, err := os.MkdirTemp(parent, "go-cgrouptest") + if err != nil { + t.Skipf("unable to create cgroup directory: %v", err) + } + // Important: defer cleanups so they run even in the event of panic. + // + // TODO(prattmic): Consider running everything in a subprocess just so + // we can clean up if it throws or otherwise doesn't run the defers. + defer func() { + if err := os.Remove(path); err != nil { + // Not much we can do, but at least inform of the + // problem. + t.Errorf("Error removing cgroup directory: %v", err) + } + }() + + migrateTo(t, path) + defer migrateTo(t, orig) + + c := &CgroupV2{ + orig: orig, + path: path, + } + fn(c) +} + +// Returns the mount and relative directory of the current cgroup the process +// is in. +func findCurrent(t *testing.T) (string, string) { + // Find the path to our current CPU cgroup. Currently this package is + // only used for CPU cgroup testing, so the distinction of different + // controllers doesn't matter. + var scratch [cgroup.ParseSize]byte + buf := make([]byte, cgroup.PathSize) + n, err := cgroup.FindCPUMountPoint(buf, scratch[:]) + if err != nil { + t.Skipf("cgroup: unable to find current cgroup mount: %v", err) + } + mount := string(buf[:n]) + + n, ver, err := cgroup.FindCPURelativePath(buf, scratch[:]) + if err != nil { + t.Skipf("cgroup: unable to find current cgroup path: %v", err) + } + if ver != cgroup.V2 { + t.Skipf("cgroup: running on cgroup v%d want v2", ver) + } + rel := string(buf[1:n]) // The returned path always starts with /, skip it. + rel = filepath.Join(".", rel) // Make sure this isn't empty string at root. + return mount, rel +} + +// Returns a parent directory in which we can create our own cgroup subdirectory. +func findOwnedParent(t *testing.T, mount, rel string) string { + // There are many ways cgroups may be set up on a system. We don't try + // to cover all of them, just common ones. + // + // To start with, systemd: + // + // Our test process is likely running inside a user session, in which + // case we are likely inside a cgroup that looks something like: + // + // /sys/fs/cgroup/user.slice/user-1234.slice/user@1234.service/vte-spawn-1.scope/ + // + // Possibly with additional slice layers between user@1234.service and + // the leaf scope. + // + // On new enough kernel and systemd versions (exact versions unknown), + // full unprivileged control of the user's cgroups is permitted + // directly via the cgroup filesystem. Specifically, the + // user@1234.service directory is owned by the user, as are all + // subdirectories. + + // We want to create our own subdirectory that we can migrate into and + // then manipulate at will. It is tempting to create a new subdirectory + // inside the current cgroup we are already in, however that will likey + // not work. cgroup v2 only allows processes to be in leaf cgroups. Our + // current cgroup likely contains multiple processes (at least this one + // and the cmd/go test runner). If we make a subdirectory and try to + // move our process into that cgroup, then the subdirectory and parent + // would both contain processes. Linux won't allow us to do that [1]. + // + // Instead, we will simply walk up to the highest directory that our + // user owns and create our new subdirectory. Since that directory + // already has a bunch of subdirectories, it must not directly contain + // and processes. + // + // (This would fall apart if we already in the highest directory we + // own, such as if there was simply a single cgroup for the entire + // user. Luckily systemd at least does not do this.) + // + // [1] Minor technicality: By default a new subdirectory has no cgroup + // controller (they must be explicitly enabled in the parent's + // cgroup.subtree_control). Linux will allow moving processes into a + // subdirectory that has no controllers while there are still processes + // in the parent, but it won't allow adding controller until the parent + // is empty. As far as I tell, the only purpose of this is to allow + // reorganizing processes into a new set of subdirectories and then + // adding controllers once done. + root, err := os.OpenRoot(mount) + if err != nil { + t.Fatalf("error opening cgroup mount root: %v", err) + } + + uid := os.Getuid() + var prev string + for rel != "." { + fi, err := root.Stat(rel) + if err != nil { + t.Fatalf("error stating cgroup path: %v", err) + } + + st := fi.Sys().(*syscall.Stat_t) + if int(st.Uid) != uid { + // Stop at first directory we don't own. + break + } + + prev = rel + rel = filepath.Join(rel, "..") + } + + if prev == "" { + t.Skipf("No parent cgroup owned by UID %d", uid) + } + + // We actually want the last directory where we were the owner. + return filepath.Join(mount, prev) +} + +// Migrate the current process to the cgroup directory dst. +func migrateTo(t *testing.T, dst string) { + pid := []byte(strconv.FormatInt(int64(os.Getpid()), 10)) + if err := os.WriteFile(filepath.Join(dst, "cgroup.procs"), pid, 0); err != nil { + t.Skipf("Unable to migrate into %s: %v", dst, err) + } +} diff --git a/src/internal/cgrouptest/cgrouptest_linux_test.go b/src/internal/cgrouptest/cgrouptest_linux_test.go new file mode 100644 index 0000000000..f3a4a133e8 --- /dev/null +++ b/src/internal/cgrouptest/cgrouptest_linux_test.go @@ -0,0 +1,19 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cgrouptest + +import ( + "fmt" + "testing" +) + +func TestInCgroupV2(t *testing.T) { + InCgroupV2(t, func(c *CgroupV2) { + fmt.Println("Created", c.Path()) + if err := c.SetCPUMax(500000, 100000); err != nil { + t.Errorf("Erroring setting cpu.max: %v", err) + } + }) +} diff --git a/src/internal/coverage/pkid.go b/src/internal/coverage/pkid.go index f68523a348..30b5ad49ac 100644 --- a/src/internal/coverage/pkid.go +++ b/src/internal/coverage/pkid.go @@ -45,18 +45,29 @@ package coverage // as opposed to a fixed list. var rtPkgs = [...]string{ + "internal/asan", + "internal/byteorder", + "internal/coverage/rtcov", "internal/cpu", - "internal/goarch", - "internal/runtime/atomic", - "internal/goos", - "internal/chacha8rand", - "internal/runtime/sys", - "internal/abi", - "internal/runtime/maps", - "internal/runtime/math", "internal/bytealg", + "internal/goarch", + "internal/abi", + "internal/chacha8rand", + "internal/godebugs", "internal/goexperiment", + "internal/goos", + "internal/msan", + "internal/profilerecord", + "internal/race", + "internal/runtime/atomic", + "internal/runtime/exithook", + "internal/runtime/gc", + "internal/runtime/math", + "internal/runtime/strconv", + "internal/runtime/sys", + "internal/runtime/maps", "internal/runtime/syscall", + "internal/runtime/cgroup", "internal/stringslite", "runtime", } diff --git a/src/internal/godebugs/table.go b/src/internal/godebugs/table.go index 8ebe221fd3..9262ce23ba 100644 --- a/src/internal/godebugs/table.go +++ b/src/internal/godebugs/table.go @@ -26,6 +26,7 @@ type Info struct { // (Otherwise the test in this package will fail.) var All = []Info{ {Name: "asynctimerchan", Package: "time", Changed: 23, Old: "1"}, + {Name: "containermaxprocs", Package: "runtime", Changed: 25, Old: "0"}, {Name: "dataindependenttiming", Package: "crypto/subtle", Opaque: true}, {Name: "decoratemappings", Package: "runtime", Opaque: true, Changed: 25, Old: "0"}, {Name: "embedfollowsymlinks", Package: "cmd/go"}, @@ -61,6 +62,7 @@ var All = []Info{ {Name: "tlsmlkem", Package: "crypto/tls", Changed: 24, Old: "0", Opaque: true}, {Name: "tlsrsakex", Package: "crypto/tls", Changed: 22, Old: "1"}, {Name: "tlsunsafeekm", Package: "crypto/tls", Changed: 22, Old: "1"}, + {Name: "updatemaxprocs", Package: "runtime", Changed: 25, Old: "0"}, {Name: "winreadlinkvolume", Package: "os", Changed: 23, Old: "0"}, {Name: "winsymlink", Package: "os", Changed: 23, Old: "0"}, {Name: "x509keypairleaf", Package: "crypto/tls", Changed: 23, Old: "0"}, diff --git a/src/runtime/cgroup_linux.go b/src/runtime/cgroup_linux.go new file mode 100644 index 0000000000..73e7363eb4 --- /dev/null +++ b/src/runtime/cgroup_linux.go @@ -0,0 +1,119 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package runtime + +import ( + "internal/runtime/cgroup" +) + +// cgroup-aware GOMAXPROCS default +// +// At startup (defaultGOMAXPROCSInit), we read /proc/self/cgroup and /proc/self/mountinfo +// to find our current CPU cgroup and open its limit file(s), which remain open +// for the entire process lifetime. We periodically read the current limit by +// rereading the limit file(s) from the beginning. +// +// This makes reading updated limits simple, but has a few downsides: +// +// 1. We only read the limit from the leaf cgroup that actually contains this +// process. But a parent cgroup may have a tighter limit. That tighter limit +// would be our effective limit. That said, container runtimes tend to hide +// parent cgroups from the container anyway. +// +// 2. If the process is migrated to another cgroup while it is running it will +// not notice, as we only check which cgroup we are in once at startup. +var ( + // We can't allocate during early initialization when we need to find + // the cgroup. Simply use a fixed global as a scratch parsing buffer. + cgroupScratch [cgroup.ScratchSize]byte + + cgroupOK bool + cgroupCPU cgroup.CPU + + // defaultGOMAXPROCSInit runs before internal/godebug init, so we can't + // directly update the GODEBUG counter. Store the result until after + // init runs. + containermaxprocsNonDefault bool + containermaxprocs = &godebugInc{name: "containermaxprocs"} +) + +// Prepare for defaultGOMAXPROCS. +// +// Must run after parsedebugvars. +func defaultGOMAXPROCSInit() { + c, err := cgroup.OpenCPU(cgroupScratch[:]) + if err != nil { + // Likely cgroup.ErrNoCgroup. + return + } + + if debug.containermaxprocs > 0 { + // Normal operation. + cgroupCPU = c + cgroupOK = true + return + } + + // cgroup-aware GOMAXPROCS is disabled. We still check the cgroup once + // at startup to see if enabling the GODEBUG would result in a + // different default GOMAXPROCS. If so, we increment runtime/metrics + // /godebug/non-default-behavior/cgroupgomaxprocs:events. + procs := getCPUCount() + cgroupProcs := adjustCgroupGOMAXPROCS(procs, c) + if procs != cgroupProcs { + containermaxprocsNonDefault = true + } + + // Don't need the cgroup for remaining execution. + c.Close() +} + +// defaultGOMAXPROCSUpdateGODEBUG updates the internal/godebug counter for +// container GOMAXPROCS, once internal/godebug is initialized. +func defaultGOMAXPROCSUpdateGODEBUG() { + if containermaxprocsNonDefault { + containermaxprocs.IncNonDefault() + } +} + +// Return the default value for GOMAXPROCS when it has not been set explicitly. +// +// ncpu is the optional precomputed value of getCPUCount. If passed as 0, +// defaultGOMAXPROCS will call getCPUCount. +func defaultGOMAXPROCS(ncpu int32) int32 { + // GOMAXPROCS is the minimum of: + // + // 1. Total number of logical CPUs available from sched_getaffinity. + // + // 2. The average CPU cgroup throughput limit (average throughput = + // quota/period). A limit less than 2 is rounded up to 2, and any + // fractional component is rounded up. + // + // TODO: add rationale. + + procs := ncpu + if procs <= 0 { + procs = getCPUCount() + } + if !cgroupOK { + // No cgroup, or disabled by debug.containermaxprocs. + return procs + } + + return adjustCgroupGOMAXPROCS(procs, cgroupCPU) +} + +// Lower procs as necessary for the current cgroup CPU limit. +func adjustCgroupGOMAXPROCS(procs int32, cpu cgroup.CPU) int32 { + limit, ok, err := cgroup.ReadCPULimit(cpu) + if err == nil && ok { + limit = ceil(limit) + limit = max(limit, 2) + if int32(limit) < procs { + procs = int32(limit) + } + } + return procs +} diff --git a/src/runtime/cgroup_linux_test.go b/src/runtime/cgroup_linux_test.go new file mode 100644 index 0000000000..0b060572b6 --- /dev/null +++ b/src/runtime/cgroup_linux_test.go @@ -0,0 +1,325 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package runtime_test + +import ( + "fmt" + "internal/cgrouptest" + "runtime" + "strings" + "syscall" + "testing" + "unsafe" +) + +func mustHaveFourCPUs(t *testing.T) { + // If NumCPU is lower than the cgroup limit, GOMAXPROCS will use + // NumCPU. + // + // cgroup GOMAXPROCS also have a minimum of 2. We need some room above + // that to test interesting properies. + if runtime.NumCPU() < 4 { + t.Helper() + t.Skip("skipping test: fewer than 4 CPUs") + } +} + +func TestCgroupGOMAXPROCS(t *testing.T) { + mustHaveFourCPUs(t) + + exe, err := buildTestProg(t, "testprog") + if err != nil { + t.Fatal(err) + } + + tests := []struct { + godebug int + want int + }{ + // With containermaxprocs=1, GOMAXPROCS should use the cgroup + // limit. + { + godebug: 1, + want: 3, + }, + // With containermaxprocs=0, it should be ignored. + { + godebug: 0, + want: runtime.NumCPU(), + }, + } + for _, tc := range tests { + t.Run(fmt.Sprintf("containermaxprocs=%d", tc.godebug), func(t *testing.T) { + cgrouptest.InCgroupV2(t, func(c *cgrouptest.CgroupV2) { + if err := c.SetCPUMax(300000, 100000); err != nil { + t.Fatalf("unable to set CPU limit: %v", err) + } + + got := runBuiltTestProg(t, exe, "PrintGOMAXPROCS", fmt.Sprintf("GODEBUG=containermaxprocs=%d", tc.godebug)) + want := fmt.Sprintf("%d\n", tc.want) + if got != want { + t.Fatalf("output got %q want %q", got, want) + } + }) + }) + } +} + +// Without a cgroup limit, GOMAXPROCS uses NumCPU. +func TestCgroupGOMAXPROCSNoLimit(t *testing.T) { + exe, err := buildTestProg(t, "testprog") + if err != nil { + t.Fatal(err) + } + + cgrouptest.InCgroupV2(t, func(c *cgrouptest.CgroupV2) { + if err := c.SetCPUMax(-1, 100000); err != nil { + t.Fatalf("unable to set CPU limit: %v", err) + } + + got := runBuiltTestProg(t, exe, "PrintGOMAXPROCS") + want := fmt.Sprintf("%d\n", runtime.NumCPU()) + if got != want { + t.Fatalf("output got %q want %q", got, want) + } + }) +} + +// If the cgroup limit is higher than NumCPU, GOMAXPROCS uses NumCPU. +func TestCgroupGOMAXPROCSHigherThanNumCPU(t *testing.T) { + exe, err := buildTestProg(t, "testprog") + if err != nil { + t.Fatal(err) + } + + cgrouptest.InCgroupV2(t, func(c *cgrouptest.CgroupV2) { + if err := c.SetCPUMax(2*int64(runtime.NumCPU())*100000, 100000); err != nil { + t.Fatalf("unable to set CPU limit: %v", err) + } + + got := runBuiltTestProg(t, exe, "PrintGOMAXPROCS") + want := fmt.Sprintf("%d\n", runtime.NumCPU()) + if got != want { + t.Fatalf("output got %q want %q", got, want) + } + }) +} + +func TestCgroupGOMAXPROCSRound(t *testing.T) { + mustHaveFourCPUs(t) + + exe, err := buildTestProg(t, "testprog") + if err != nil { + t.Fatal(err) + } + + tests := []struct { + quota int64 + want int + }{ + // We always round the fractional component up. + { + quota: 200001, + want: 3, + }, + { + quota: 250000, + want: 3, + }, + { + quota: 299999, + want: 3, + }, + // Anything less than two rounds up to a minimum of 2. + { + quota: 50000, // 0.5 + want: 2, + }, + { + quota: 100000, + want: 2, + }, + { + quota: 150000, + want: 2, + }, + } + for _, tc := range tests { + t.Run(fmt.Sprintf("%d", tc.quota), func(t *testing.T) { + cgrouptest.InCgroupV2(t, func(c *cgrouptest.CgroupV2) { + if err := c.SetCPUMax(tc.quota, 100000); err != nil { + t.Fatalf("unable to set CPU limit: %v", err) + } + + got := runBuiltTestProg(t, exe, "PrintGOMAXPROCS") + want := fmt.Sprintf("%d\n", tc.want) + if got != want { + t.Fatalf("output got %q want %q", got, want) + } + }) + }) + } +} + +// Environment variable takes precedence over defaults. +func TestCgroupGOMAXPROCSEnvironment(t *testing.T) { + mustHaveFourCPUs(t) + + exe, err := buildTestProg(t, "testprog") + if err != nil { + t.Fatal(err) + } + + cgrouptest.InCgroupV2(t, func(c *cgrouptest.CgroupV2) { + if err := c.SetCPUMax(200000, 100000); err != nil { + t.Fatalf("unable to set CPU limit: %v", err) + } + + got := runBuiltTestProg(t, exe, "PrintGOMAXPROCS", "GOMAXPROCS=3") + want := "3\n" + if got != want { + t.Fatalf("output got %q want %q", got, want) + } + }) +} + +// CPU affinity takes priority if lower than cgroup limit. +func TestCgroupGOMAXPROCSSchedAffinity(t *testing.T) { + exe, err := buildTestProg(t, "testprog") + if err != nil { + t.Fatal(err) + } + + cgrouptest.InCgroupV2(t, func(c *cgrouptest.CgroupV2) { + if err := c.SetCPUMax(300000, 100000); err != nil { + t.Fatalf("unable to set CPU limit: %v", err) + } + + // CPU affinity is actually a per-thread attribute. + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + const maxCPUs = 64 * 1024 + var orig [maxCPUs / 8]byte + _, _, errno := syscall.Syscall6(syscall.SYS_SCHED_GETAFFINITY, 0, unsafe.Sizeof(orig), uintptr(unsafe.Pointer(&orig[0])), 0, 0, 0) + if errno != 0 { + t.Fatalf("unable to get CPU affinity: %v", errno) + } + + // We're going to restrict to CPUs 0 and 1. Make sure those are already available. + if orig[0]&0b11 != 0b11 { + t.Skipf("skipping test: CPUs 0 and 1 not available") + } + + var mask [maxCPUs / 8]byte + mask[0] = 0b11 + _, _, errno = syscall.Syscall6(syscall.SYS_SCHED_SETAFFINITY, 0, unsafe.Sizeof(mask), uintptr(unsafe.Pointer(&mask[0])), 0, 0, 0) + if errno != 0 { + t.Fatalf("unable to set CPU affinity: %v", errno) + } + defer func() { + _, _, errno = syscall.Syscall6(syscall.SYS_SCHED_SETAFFINITY, 0, unsafe.Sizeof(orig), uintptr(unsafe.Pointer(&orig[0])), 0, 0, 0) + if errno != 0 { + t.Fatalf("unable to restore CPU affinity: %v", errno) + } + }() + + got := runBuiltTestProg(t, exe, "PrintGOMAXPROCS") + want := "2\n" + if got != want { + t.Fatalf("output got %q want %q", got, want) + } + }) +} + +func TestCgroupGOMAXPROCSSetDefault(t *testing.T) { + mustHaveFourCPUs(t) + + exe, err := buildTestProg(t, "testprog") + if err != nil { + t.Fatal(err) + } + + tests := []struct { + godebug int + want int + }{ + // With containermaxprocs=1, SetDefaultGOMAXPROCS should observe + // the cgroup limit. + { + godebug: 1, + want: 3, + }, + // With containermaxprocs=0, it should be ignored. + { + godebug: 0, + want: runtime.NumCPU(), + }, + } + for _, tc := range tests { + t.Run(fmt.Sprintf("containermaxprocs=%d", tc.godebug), func(t *testing.T) { + cgrouptest.InCgroupV2(t, func(c *cgrouptest.CgroupV2) { + env := []string{ + fmt.Sprintf("GO_TEST_CPU_MAX_PATH=%s", c.CPUMaxPath()), + "GO_TEST_CPU_MAX_QUOTA=300000", + fmt.Sprintf("GODEBUG=containermaxprocs=%d", tc.godebug), + } + got := runBuiltTestProg(t, exe, "SetLimitThenDefaultGOMAXPROCS", env...) + want := fmt.Sprintf("%d\n", tc.want) + if got != want { + t.Fatalf("output got %q want %q", got, want) + } + }) + }) + } +} + +func TestCgroupGOMAXPROCSUpdate(t *testing.T) { + mustHaveFourCPUs(t) + + if testing.Short() { + t.Skip("skipping test: long sleeps") + } + + exe, err := buildTestProg(t, "testprog") + if err != nil { + t.Fatal(err) + } + + cgrouptest.InCgroupV2(t, func(c *cgrouptest.CgroupV2) { + got := runBuiltTestProg(t, exe, "UpdateGOMAXPROCS", fmt.Sprintf("GO_TEST_CPU_MAX_PATH=%s", c.CPUMaxPath())) + if !strings.Contains(got, "OK") { + t.Fatalf("output got %q want OK", got) + } + }) +} + +func TestCgroupGOMAXPROCSDontUpdate(t *testing.T) { + mustHaveFourCPUs(t) + + if testing.Short() { + t.Skip("skipping test: long sleeps") + } + + exe, err := buildTestProg(t, "testprog") + if err != nil { + t.Fatal(err) + } + + // Two ways to disable updates: explicit GOMAXPROCS or GODEBUG for + // update feature. + for _, v := range []string{"GOMAXPROCS=4", "GODEBUG=updatemaxprocs=0"} { + t.Run(v, func(t *testing.T) { + cgrouptest.InCgroupV2(t, func(c *cgrouptest.CgroupV2) { + got := runBuiltTestProg(t, exe, "DontUpdateGOMAXPROCS", + fmt.Sprintf("GO_TEST_CPU_MAX_PATH=%s", c.CPUMaxPath()), + v) + if !strings.Contains(got, "OK") { + t.Fatalf("output got %q want OK", got) + } + }) + }) + } +} diff --git a/src/runtime/cgroup_stubs.go b/src/runtime/cgroup_stubs.go new file mode 100644 index 0000000000..1f37b1783b --- /dev/null +++ b/src/runtime/cgroup_stubs.go @@ -0,0 +1,24 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !linux + +package runtime + +func defaultGOMAXPROCSInit() {} +func defaultGOMAXPROCSUpdateGODEBUG() {} + +func defaultGOMAXPROCS(ncpu int32) int32 { + // Use the total number of logical CPUs available now, as CPU affinity + // may change after start. + // + // TODO(prattmic): On some GOOS getCPUCount can never change. Don't + // bother calling over and over. + + procs := ncpu + if procs <= 0 { + procs = getCPUCount() + } + return procs +} diff --git a/src/runtime/debug.go b/src/runtime/debug.go index 57e9ba8d7d..94d1dab34d 100644 --- a/src/runtime/debug.go +++ b/src/runtime/debug.go @@ -10,9 +10,28 @@ import ( ) // GOMAXPROCS sets the maximum number of CPUs that can be executing -// simultaneously and returns the previous setting. It defaults to -// the value of [runtime.NumCPU]. If n < 1, it does not change the current setting. -// This call will go away when the scheduler improves. +// simultaneously and returns the previous setting. If n < 1, it does not change +// the current setting. +// +// If the GOMAXPROCS environment variable is set to a positive whole number, +// GOMAXPROCS defaults to that value. +// +// Otherwise, the Go runtime selects an appropriate default value based on the +// number of logical CPUs on the machine, the process’s CPU affinity mask, and, +// on Linux, the process’s average CPU throughput limit based on cgroup CPU +// quota, if any. +// +// The Go runtime periodically updates the default value based on changes to +// the total logical CPU count, the CPU affinity mask, or cgroup quota. Setting +// a custom value with the GOMAXPROCS environment variable or by calling +// GOMAXPROCS disables automatic updates. The default value and automatic +// updates can be restored by calling [SetDefaultGOMAXPROCS]. +// +// If GODEBUG=containermaxprocs=0 is set, GOMAXPROCS defaults to the value of +// [runtime.NumCPU]. If GODEBUG=updatemaxprocs=0 is set, the Go runtime does +// not perform automatic GOMAXPROCS updating. +// +// The default GOMAXPROCS behavior may change as the scheduler improves. func GOMAXPROCS(n int) int { if GOARCH == "wasm" && n > 1 { n = 1 // WebAssembly has no threads yet, so only one CPU is possible. @@ -28,12 +47,55 @@ func GOMAXPROCS(n int) int { stw := stopTheWorldGC(stwGOMAXPROCS) // newprocs will be processed by startTheWorld + // + // TODO(prattmic): this could use a nicer API. Perhaps add it to the + // stw parameter? newprocs = int32(n) + newprocsCustom = true startTheWorldGC(stw) return ret } +// SetDefaultGOMAXPROCS updates the GOMAXPROCS setting to the runtime +// default, as described by [GOMAXPROCS], ignoring the GOMAXPROCS +// environment variable. +// +// SetDefaultGOMAXPROCS can be used to enable the default automatic updating +// GOMAXPROCS behavior if it has been disabled by the GOMAXPROCS +// environment variable or a prior call to [GOMAXPROCS], or to force an immediate +// update if the caller is aware of a change to the total logical CPU count, CPU +// affinity mask or cgroup quota. +func SetDefaultGOMAXPROCS() { + // SetDefaultGOMAXPROCS conceptually means "[re]do what the runtime + // would do at startup if the GOMAXPROCS environment variable were + // unset." It still respects GODEBUG. + + procs := defaultGOMAXPROCS(0) + + lock(&sched.lock) + curr := gomaxprocs + custom := sched.customGOMAXPROCS + unlock(&sched.lock) + + if !custom && procs == curr { + // Nothing to do if we're already using automatic GOMAXPROCS + // and the limit is unchanged. + return + } + + stw := stopTheWorldGC(stwGOMAXPROCS) + + // newprocs will be processed by startTheWorld + // + // TODO(prattmic): this could use a nicer API. Perhaps add it to the + // stw parameter? + newprocs = procs + newprocsCustom = false + + startTheWorldGC(stw) +} + // NumCPU returns the number of logical CPUs usable by the current process. // // The set of available CPUs is checked by querying the operating system diff --git a/src/runtime/float.go b/src/runtime/float.go index 9f281c4045..d8573c103b 100644 --- a/src/runtime/float.go +++ b/src/runtime/float.go @@ -6,6 +6,12 @@ package runtime import "unsafe" +const ( + float64Mask = 0x7FF + float64Shift = 64 - 11 - 1 + float64Bias = 1023 +) + var inf = float64frombits(0x7FF0000000000000) // isNaN reports whether f is an IEEE 754 “not-a-number” value. @@ -52,3 +58,76 @@ func float64bits(f float64) uint64 { func float64frombits(b uint64) float64 { return *(*float64)(unsafe.Pointer(&b)) } + +// floor returns the greatest integer value less than or equal to x. +// +// Special cases are: +// +// floor(±0) = ±0 +// floor(±Inf) = ±Inf +// floor(NaN) = NaN +// +// N.B. Portable floor copied from math. math also has optimized arch-specific +// implementations. +func floor(x float64) float64 { + if x == 0 || isNaN(x) || isInf(x) { + return x + } + if x < 0 { + d, fract := modf(-x) + if fract != 0.0 { + d = d + 1 + } + return -d + } + d, _ := modf(x) + return d +} + +// ceil returns the least integer value greater than or equal to x. +// +// Special cases are: +// +// Ceil(±0) = ±0 +// Ceil(±Inf) = ±Inf +// Ceil(NaN) = NaN +// +// N.B. Portable ceil copied from math. math also has optimized arch-specific +// implementations. +func ceil(x float64) float64 { + return -floor(-x) +} + +// modf returns integer and fractional floating-point numbers +// that sum to f. Both values have the same sign as f. +// +// Special cases are: +// +// Modf(±Inf) = ±Inf, NaN +// Modf(NaN) = NaN, NaN +// +// N.B. Portable modf copied from math. math also has optimized arch-specific +// implementations. +func modf(f float64) (int float64, frac float64) { + if f < 1 { + switch { + case f < 0: + int, frac = modf(-f) + return -int, -frac + case f == 0: + return f, f // Return -0, -0 when f == -0 + } + return 0, f + } + + x := float64bits(f) + e := uint(x>>float64Shift)&float64Mask - float64Bias + + // Keep the top 12+e bits, the integer part; clear the rest. + if e < 64-12 { + x &^= 1<<(64-12-e) - 1 + } + int = float64frombits(x) + frac = f - int + return +} diff --git a/src/runtime/gomaxprocs_windows_test.go b/src/runtime/gomaxprocs_windows_test.go new file mode 100644 index 0000000000..caa3e0cf8a --- /dev/null +++ b/src/runtime/gomaxprocs_windows_test.go @@ -0,0 +1,44 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package runtime_test + +import ( + "strings" + "testing" +) + +func TestGOMAXPROCSUpdate(t *testing.T) { + if testing.Short() { + t.Skip("skipping test: long sleeps") + } + + got := runTestProg(t, "testprog", "WindowsUpdateGOMAXPROCS") + if strings.Contains(got, "SKIP") { + t.Skip(got) + } + if !strings.Contains(got, "OK") { + t.Fatalf("output got %q want OK", got) + } +} + +func TestCgroupGOMAXPROCSDontUpdate(t *testing.T) { + if testing.Short() { + t.Skip("skipping test: long sleeps") + } + + // Two ways to disable updates: explicit GOMAXPROCS or GODEBUG for + // update feature. + for _, v := range []string{"GOMAXPROCS=4", "GODEBUG=updatemaxprocs=0"} { + t.Run(v, func(t *testing.T) { + got := runTestProg(t, "testprog", "WindowsUpdateGOMAXPROCS", v) + if strings.Contains(got, "SKIP") { + t.Skip(got) + } + if !strings.Contains(got, "OK") { + t.Fatalf("output got %q want OK", got) + } + }) + } +} diff --git a/src/runtime/lockrank.go b/src/runtime/lockrank.go index 024fc1ebf4..456f2b75e6 100644 --- a/src/runtime/lockrank.go +++ b/src/runtime/lockrank.go @@ -14,6 +14,7 @@ const ( lockRankSysmon lockRankScavenge lockRankForcegc + lockRankUpdateGOMAXPROCS lockRankDefer lockRankSweepWaiters lockRankAssistQueue @@ -90,6 +91,7 @@ var lockNames = []string{ lockRankSysmon: "sysmon", lockRankScavenge: "scavenge", lockRankForcegc: "forcegc", + lockRankUpdateGOMAXPROCS: "updateGOMAXPROCS", lockRankDefer: "defer", lockRankSweepWaiters: "sweepWaiters", lockRankAssistQueue: "assistQueue", @@ -172,6 +174,7 @@ var lockPartialOrder [][]lockRank = [][]lockRank{ lockRankSysmon: {}, lockRankScavenge: {lockRankSysmon}, lockRankForcegc: {lockRankSysmon}, + lockRankUpdateGOMAXPROCS: {lockRankSysmon}, lockRankDefer: {}, lockRankSweepWaiters: {}, lockRankAssistQueue: {}, @@ -188,11 +191,11 @@ var lockPartialOrder [][]lockRank = [][]lockRank{ lockRankPollDesc: {}, lockRankWakeableSleep: {}, lockRankHchan: {lockRankSysmon, lockRankScavenge, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankWakeableSleep, lockRankHchan}, - lockRankAllocmR: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan}, - lockRankExecR: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan}, - lockRankSched: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR}, - lockRankAllg: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched}, - lockRankAllp: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched}, + lockRankAllocmR: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankUpdateGOMAXPROCS, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan}, + lockRankExecR: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankUpdateGOMAXPROCS, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan}, + lockRankSched: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankUpdateGOMAXPROCS, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR}, + lockRankAllg: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankUpdateGOMAXPROCS, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched}, + lockRankAllp: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankUpdateGOMAXPROCS, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched}, lockRankNotifyList: {}, lockRankSudog: {lockRankSysmon, lockRankScavenge, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankWakeableSleep, lockRankHchan, lockRankNotifyList}, lockRankTimers: {lockRankSysmon, lockRankScavenge, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankTimers}, @@ -205,29 +208,29 @@ var lockPartialOrder [][]lockRank = [][]lockRank{ lockRankUserArenaState: {}, lockRankTraceBuf: {lockRankSysmon, lockRankScavenge}, lockRankTraceStrings: {lockRankSysmon, lockRankScavenge, lockRankTraceBuf}, - lockRankFin: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankTimers, lockRankTimer, lockRankItab, lockRankReflectOffs, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings}, - lockRankSpanSetSpine: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankTimers, lockRankTimer, lockRankItab, lockRankReflectOffs, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings}, - lockRankMspanSpecial: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankTimers, lockRankTimer, lockRankItab, lockRankReflectOffs, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings}, - lockRankTraceTypeTab: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankTimers, lockRankTimer, lockRankItab, lockRankReflectOffs, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings}, - lockRankGcBitsArenas: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankTimers, lockRankTimer, lockRankItab, lockRankReflectOffs, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings, lockRankMspanSpecial}, - lockRankProfInsert: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankTimers, lockRankTimer, lockRankItab, lockRankReflectOffs, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings}, - lockRankProfBlock: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankTimers, lockRankTimer, lockRankItab, lockRankReflectOffs, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings}, - lockRankProfMemActive: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankTimers, lockRankTimer, lockRankItab, lockRankReflectOffs, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings}, - lockRankProfMemFuture: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankTimers, lockRankTimer, lockRankItab, lockRankReflectOffs, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings, lockRankProfMemActive}, - lockRankGscan: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankTimers, lockRankTimer, lockRankNetpollInit, lockRankRoot, lockRankItab, lockRankReflectOffs, lockRankSynctest, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings, lockRankFin, lockRankSpanSetSpine, lockRankMspanSpecial, lockRankGcBitsArenas, lockRankProfInsert, lockRankProfBlock, lockRankProfMemActive, lockRankProfMemFuture}, - lockRankStackpool: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankTimers, lockRankTimer, lockRankNetpollInit, lockRankRoot, lockRankItab, lockRankReflectOffs, lockRankSynctest, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings, lockRankFin, lockRankSpanSetSpine, lockRankMspanSpecial, lockRankGcBitsArenas, lockRankProfInsert, lockRankProfBlock, lockRankProfMemActive, lockRankProfMemFuture, lockRankGscan}, - lockRankStackLarge: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankTimers, lockRankTimer, lockRankNetpollInit, lockRankRoot, lockRankItab, lockRankReflectOffs, lockRankSynctest, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings, lockRankFin, lockRankSpanSetSpine, lockRankMspanSpecial, lockRankGcBitsArenas, lockRankProfInsert, lockRankProfBlock, lockRankProfMemActive, lockRankProfMemFuture, lockRankGscan}, - lockRankHchanLeaf: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankTimers, lockRankTimer, lockRankNetpollInit, lockRankRoot, lockRankItab, lockRankReflectOffs, lockRankSynctest, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings, lockRankFin, lockRankSpanSetSpine, lockRankMspanSpecial, lockRankGcBitsArenas, lockRankProfInsert, lockRankProfBlock, lockRankProfMemActive, lockRankProfMemFuture, lockRankGscan, lockRankHchanLeaf}, - lockRankWbufSpans: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankDefer, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollCache, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankSudog, lockRankTimers, lockRankTimer, lockRankNetpollInit, lockRankRoot, lockRankItab, lockRankReflectOffs, lockRankSynctest, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings, lockRankFin, lockRankSpanSetSpine, lockRankMspanSpecial, lockRankGcBitsArenas, lockRankProfInsert, lockRankProfBlock, lockRankProfMemActive, lockRankProfMemFuture, lockRankGscan}, - lockRankMheap: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankDefer, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollCache, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankSudog, lockRankTimers, lockRankTimer, lockRankNetpollInit, lockRankRoot, lockRankItab, lockRankReflectOffs, lockRankSynctest, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings, lockRankFin, lockRankSpanSetSpine, lockRankMspanSpecial, lockRankGcBitsArenas, lockRankProfInsert, lockRankProfBlock, lockRankProfMemActive, lockRankProfMemFuture, lockRankGscan, lockRankStackpool, lockRankStackLarge, lockRankWbufSpans}, - lockRankMheapSpecial: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankDefer, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollCache, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankSudog, lockRankTimers, lockRankTimer, lockRankNetpollInit, lockRankRoot, lockRankItab, lockRankReflectOffs, lockRankSynctest, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings, lockRankFin, lockRankSpanSetSpine, lockRankMspanSpecial, lockRankGcBitsArenas, lockRankProfInsert, lockRankProfBlock, lockRankProfMemActive, lockRankProfMemFuture, lockRankGscan, lockRankStackpool, lockRankStackLarge, lockRankWbufSpans, lockRankMheap}, - lockRankGlobalAlloc: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankDefer, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollCache, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankSudog, lockRankTimers, lockRankTimer, lockRankNetpollInit, lockRankRoot, lockRankItab, lockRankReflectOffs, lockRankSynctest, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings, lockRankFin, lockRankSpanSetSpine, lockRankMspanSpecial, lockRankGcBitsArenas, lockRankProfInsert, lockRankProfBlock, lockRankProfMemActive, lockRankProfMemFuture, lockRankGscan, lockRankStackpool, lockRankStackLarge, lockRankWbufSpans, lockRankMheap, lockRankMheapSpecial}, - lockRankTrace: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankDefer, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollCache, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankSudog, lockRankTimers, lockRankTimer, lockRankNetpollInit, lockRankRoot, lockRankItab, lockRankReflectOffs, lockRankSynctest, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings, lockRankFin, lockRankSpanSetSpine, lockRankMspanSpecial, lockRankGcBitsArenas, lockRankProfInsert, lockRankProfBlock, lockRankProfMemActive, lockRankProfMemFuture, lockRankGscan, lockRankStackpool, lockRankStackLarge, lockRankWbufSpans, lockRankMheap}, - lockRankTraceStackTab: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankDefer, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollCache, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankSudog, lockRankTimers, lockRankTimer, lockRankNetpollInit, lockRankRoot, lockRankItab, lockRankReflectOffs, lockRankSynctest, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings, lockRankFin, lockRankSpanSetSpine, lockRankMspanSpecial, lockRankGcBitsArenas, lockRankProfInsert, lockRankProfBlock, lockRankProfMemActive, lockRankProfMemFuture, lockRankGscan, lockRankStackpool, lockRankStackLarge, lockRankWbufSpans, lockRankMheap, lockRankTrace}, + lockRankFin: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankUpdateGOMAXPROCS, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankTimers, lockRankTimer, lockRankItab, lockRankReflectOffs, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings}, + lockRankSpanSetSpine: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankUpdateGOMAXPROCS, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankTimers, lockRankTimer, lockRankItab, lockRankReflectOffs, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings}, + lockRankMspanSpecial: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankUpdateGOMAXPROCS, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankTimers, lockRankTimer, lockRankItab, lockRankReflectOffs, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings}, + lockRankTraceTypeTab: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankUpdateGOMAXPROCS, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankTimers, lockRankTimer, lockRankItab, lockRankReflectOffs, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings}, + lockRankGcBitsArenas: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankUpdateGOMAXPROCS, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankTimers, lockRankTimer, lockRankItab, lockRankReflectOffs, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings, lockRankMspanSpecial}, + lockRankProfInsert: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankUpdateGOMAXPROCS, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankTimers, lockRankTimer, lockRankItab, lockRankReflectOffs, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings}, + lockRankProfBlock: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankUpdateGOMAXPROCS, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankTimers, lockRankTimer, lockRankItab, lockRankReflectOffs, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings}, + lockRankProfMemActive: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankUpdateGOMAXPROCS, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankTimers, lockRankTimer, lockRankItab, lockRankReflectOffs, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings}, + lockRankProfMemFuture: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankUpdateGOMAXPROCS, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankTimers, lockRankTimer, lockRankItab, lockRankReflectOffs, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings, lockRankProfMemActive}, + lockRankGscan: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankUpdateGOMAXPROCS, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankTimers, lockRankTimer, lockRankNetpollInit, lockRankRoot, lockRankItab, lockRankReflectOffs, lockRankSynctest, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings, lockRankFin, lockRankSpanSetSpine, lockRankMspanSpecial, lockRankGcBitsArenas, lockRankProfInsert, lockRankProfBlock, lockRankProfMemActive, lockRankProfMemFuture}, + lockRankStackpool: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankUpdateGOMAXPROCS, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankTimers, lockRankTimer, lockRankNetpollInit, lockRankRoot, lockRankItab, lockRankReflectOffs, lockRankSynctest, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings, lockRankFin, lockRankSpanSetSpine, lockRankMspanSpecial, lockRankGcBitsArenas, lockRankProfInsert, lockRankProfBlock, lockRankProfMemActive, lockRankProfMemFuture, lockRankGscan}, + lockRankStackLarge: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankUpdateGOMAXPROCS, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankTimers, lockRankTimer, lockRankNetpollInit, lockRankRoot, lockRankItab, lockRankReflectOffs, lockRankSynctest, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings, lockRankFin, lockRankSpanSetSpine, lockRankMspanSpecial, lockRankGcBitsArenas, lockRankProfInsert, lockRankProfBlock, lockRankProfMemActive, lockRankProfMemFuture, lockRankGscan}, + lockRankHchanLeaf: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankUpdateGOMAXPROCS, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankTimers, lockRankTimer, lockRankNetpollInit, lockRankRoot, lockRankItab, lockRankReflectOffs, lockRankSynctest, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings, lockRankFin, lockRankSpanSetSpine, lockRankMspanSpecial, lockRankGcBitsArenas, lockRankProfInsert, lockRankProfBlock, lockRankProfMemActive, lockRankProfMemFuture, lockRankGscan, lockRankHchanLeaf}, + lockRankWbufSpans: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankUpdateGOMAXPROCS, lockRankDefer, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollCache, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankSudog, lockRankTimers, lockRankTimer, lockRankNetpollInit, lockRankRoot, lockRankItab, lockRankReflectOffs, lockRankSynctest, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings, lockRankFin, lockRankSpanSetSpine, lockRankMspanSpecial, lockRankGcBitsArenas, lockRankProfInsert, lockRankProfBlock, lockRankProfMemActive, lockRankProfMemFuture, lockRankGscan}, + lockRankMheap: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankUpdateGOMAXPROCS, lockRankDefer, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollCache, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankSudog, lockRankTimers, lockRankTimer, lockRankNetpollInit, lockRankRoot, lockRankItab, lockRankReflectOffs, lockRankSynctest, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings, lockRankFin, lockRankSpanSetSpine, lockRankMspanSpecial, lockRankGcBitsArenas, lockRankProfInsert, lockRankProfBlock, lockRankProfMemActive, lockRankProfMemFuture, lockRankGscan, lockRankStackpool, lockRankStackLarge, lockRankWbufSpans}, + lockRankMheapSpecial: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankUpdateGOMAXPROCS, lockRankDefer, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollCache, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankSudog, lockRankTimers, lockRankTimer, lockRankNetpollInit, lockRankRoot, lockRankItab, lockRankReflectOffs, lockRankSynctest, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings, lockRankFin, lockRankSpanSetSpine, lockRankMspanSpecial, lockRankGcBitsArenas, lockRankProfInsert, lockRankProfBlock, lockRankProfMemActive, lockRankProfMemFuture, lockRankGscan, lockRankStackpool, lockRankStackLarge, lockRankWbufSpans, lockRankMheap}, + lockRankGlobalAlloc: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankUpdateGOMAXPROCS, lockRankDefer, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollCache, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankSudog, lockRankTimers, lockRankTimer, lockRankNetpollInit, lockRankRoot, lockRankItab, lockRankReflectOffs, lockRankSynctest, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings, lockRankFin, lockRankSpanSetSpine, lockRankMspanSpecial, lockRankGcBitsArenas, lockRankProfInsert, lockRankProfBlock, lockRankProfMemActive, lockRankProfMemFuture, lockRankGscan, lockRankStackpool, lockRankStackLarge, lockRankWbufSpans, lockRankMheap, lockRankMheapSpecial}, + lockRankTrace: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankUpdateGOMAXPROCS, lockRankDefer, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollCache, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankSudog, lockRankTimers, lockRankTimer, lockRankNetpollInit, lockRankRoot, lockRankItab, lockRankReflectOffs, lockRankSynctest, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings, lockRankFin, lockRankSpanSetSpine, lockRankMspanSpecial, lockRankGcBitsArenas, lockRankProfInsert, lockRankProfBlock, lockRankProfMemActive, lockRankProfMemFuture, lockRankGscan, lockRankStackpool, lockRankStackLarge, lockRankWbufSpans, lockRankMheap}, + lockRankTraceStackTab: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankUpdateGOMAXPROCS, lockRankDefer, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollCache, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR, lockRankExecR, lockRankSched, lockRankAllg, lockRankAllp, lockRankNotifyList, lockRankSudog, lockRankTimers, lockRankTimer, lockRankNetpollInit, lockRankRoot, lockRankItab, lockRankReflectOffs, lockRankSynctest, lockRankUserArenaState, lockRankTraceBuf, lockRankTraceStrings, lockRankFin, lockRankSpanSetSpine, lockRankMspanSpecial, lockRankGcBitsArenas, lockRankProfInsert, lockRankProfBlock, lockRankProfMemActive, lockRankProfMemFuture, lockRankGscan, lockRankStackpool, lockRankStackLarge, lockRankWbufSpans, lockRankMheap, lockRankTrace}, lockRankPanic: {}, lockRankDeadlock: {lockRankPanic, lockRankDeadlock}, lockRankRaceFini: {lockRankPanic}, - lockRankAllocmRInternal: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankAllocmW, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR}, - lockRankExecRInternal: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankExecR}, + lockRankAllocmRInternal: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankUpdateGOMAXPROCS, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankAllocmW, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankAllocmR}, + lockRankExecRInternal: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankUpdateGOMAXPROCS, lockRankSweepWaiters, lockRankAssistQueue, lockRankStrongFromWeakQueue, lockRankCleanupQueue, lockRankSweep, lockRankTestR, lockRankTimerSend, lockRankExecW, lockRankCpuprof, lockRankPollDesc, lockRankWakeableSleep, lockRankHchan, lockRankExecR}, lockRankTestRInternal: {lockRankTestR, lockRankTestW}, } diff --git a/src/runtime/metrics/doc.go b/src/runtime/metrics/doc.go index 0d35314e06..8204e87fd1 100644 --- a/src/runtime/metrics/doc.go +++ b/src/runtime/metrics/doc.go @@ -234,6 +234,11 @@ Below is the full list of supported metrics, ordered lexicographically. The number of non-default behaviors executed by the time package due to a non-default GODEBUG=asynctimerchan=... setting. + /godebug/non-default-behavior/containermaxprocs:events + The number of non-default behaviors executed by the runtime + package due to a non-default GODEBUG=containermaxprocs=... + setting. + /godebug/non-default-behavior/embedfollowsymlinks:events The number of non-default behaviors executed by the cmd/go package due to a non-default GODEBUG=embedfollowsymlinks=... @@ -349,6 +354,10 @@ Below is the full list of supported metrics, ordered lexicographically. The number of non-default behaviors executed by the crypto/tls package due to a non-default GODEBUG=tlsunsafeekm=... setting. + /godebug/non-default-behavior/updatemaxprocs:events + The number of non-default behaviors executed by the runtime + package due to a non-default GODEBUG=updatemaxprocs=... setting. + /godebug/non-default-behavior/winreadlinkvolume:events The number of non-default behaviors executed by the os package due to a non-default GODEBUG=winreadlinkvolume=... setting. diff --git a/src/runtime/mklockrank.go b/src/runtime/mklockrank.go index dd30541211..6cccece9b5 100644 --- a/src/runtime/mklockrank.go +++ b/src/runtime/mklockrank.go @@ -41,7 +41,7 @@ const ranks = ` # Sysmon NONE < sysmon -< scavenge, forcegc; +< scavenge, forcegc, updateGOMAXPROCS; # Defer NONE < defer; @@ -66,6 +66,7 @@ assistQueue, cleanupQueue, cpuprof, forcegc, + updateGOMAXPROCS, hchan, pollDesc, # pollDesc can interact with timers, which can lock sched. scavenge, diff --git a/src/runtime/proc.go b/src/runtime/proc.go index 55cb630b5d..4925528783 100644 --- a/src/runtime/proc.go +++ b/src/runtime/proc.go @@ -210,6 +210,7 @@ func main() { }() gcenable() + defaultGOMAXPROCSUpdateEnable() // don't STW before runtime initialized. main_init_done = make(chan bool) if iscgo { @@ -897,12 +898,24 @@ func schedinit() { // mcommoninit runs before parsedebugvars, so init profstacks again. mProfStackInit(gp.m) + defaultGOMAXPROCSInit() lock(&sched.lock) sched.lastpoll.Store(nanotime()) - procs := numCPUStartup + var procs int32 if n, ok := strconv.Atoi32(gogetenv("GOMAXPROCS")); ok && n > 0 { procs = n + sched.customGOMAXPROCS = true + } else { + // Use numCPUStartup for initial GOMAXPROCS for two reasons: + // + // 1. We just computed it in osinit, recomputing is (minorly) wasteful. + // + // 2. More importantly, if debug.containermaxprocs == 0 && + // debug.updatemaxprocs == 0, we want to guarantee that + // runtime.GOMAXPROCS(0) always equals runtime.NumCPU (which is + // just numCPUStartup). + procs = defaultGOMAXPROCS(numCPUStartup) } if procresize(procs) != nil { throw("unknown runnable goroutine during bootstrap") @@ -1714,6 +1727,7 @@ func startTheWorldWithSema(now int64, w worldStop) int64 { procs := gomaxprocs if newprocs != 0 { procs = newprocs + sched.customGOMAXPROCS = newprocsCustom newprocs = 0 } p1 := procresize(procs) @@ -6146,6 +6160,7 @@ func sysmon() { checkdead() unlock(&sched.lock) + lastgomaxprocs := int64(0) lasttrace := int64(0) idle := 0 // how many cycles in succession we had not wokeup somebody delay := uint32(0) @@ -6259,6 +6274,11 @@ func sysmon() { startm(nil, false, false) } } + // Check if we need to update GOMAXPROCS at most once per second. + if debug.updatemaxprocs != 0 && lastgomaxprocs+1e9 <= now { + sysmonUpdateGOMAXPROCS() + lastgomaxprocs = now + } if scavenger.sysmonWake.Load() != 0 { // Kick the scavenger awake if someone requested it. scavenger.wake() @@ -6526,6 +6546,97 @@ func schedtrace(detailed bool) { unlock(&sched.lock) } +type updateGOMAXPROCSState struct { + lock mutex + g *g + idle atomic.Bool + + // Readable when idle == false, writable when idle == true. + procs int32 // new GOMAXPROCS value +} + +var ( + updateGOMAXPROCS updateGOMAXPROCSState + + updatemaxprocs = &godebugInc{name: "updatemaxprocs"} +) + +// Start GOMAXPROCS update helper goroutine. +// +// This is based on forcegchelper. +func defaultGOMAXPROCSUpdateEnable() { + go updateGOMAXPROCSHelper() +} + +func updateGOMAXPROCSHelper() { + updateGOMAXPROCS.g = getg() + lockInit(&updateGOMAXPROCS.lock, lockRankUpdateGOMAXPROCS) + for { + lock(&updateGOMAXPROCS.lock) + if updateGOMAXPROCS.idle.Load() { + throw("updateGOMAXPROCS: phase error") + } + updateGOMAXPROCS.idle.Store(true) + goparkunlock(&updateGOMAXPROCS.lock, waitReasonUpdateGOMAXPROCSIdle, traceBlockSystemGoroutine, 1) + // This goroutine is explicitly resumed by sysmon. + + stw := stopTheWorldGC(stwGOMAXPROCS) + + // Still OK to update? + lock(&sched.lock) + custom := sched.customGOMAXPROCS + unlock(&sched.lock) + if custom { + startTheWorldGC(stw) + return + } + + // newprocs will be processed by startTheWorld + // + // TODO(prattmic): this could use a nicer API. Perhaps add it to the + // stw parameter? + newprocs = updateGOMAXPROCS.procs + newprocsCustom = false + + startTheWorldGC(stw) + + // We actually changed something. + updatemaxprocs.IncNonDefault() + } +} + +func sysmonUpdateGOMAXPROCS() { + // No update if GOMAXPROCS was set manually. + lock(&sched.lock) + custom := sched.customGOMAXPROCS + curr := gomaxprocs + unlock(&sched.lock) + if custom { + return + } + + // Don't hold sched.lock while we read the filesystem. + procs := defaultGOMAXPROCS(0) + + if procs == curr { + // Nothing to do. + return + } + + // Sysmon can't directly stop the world. Run the helper to do so on our + // behalf. If updateGOMAXPROCS.idle is false, then a previous update is + // still pending. + if updateGOMAXPROCS.idle.Load() { + lock(&updateGOMAXPROCS.lock) + updateGOMAXPROCS.procs = procs + updateGOMAXPROCS.idle.Store(false) + var list gList + list.push(updateGOMAXPROCS.g) + injectglist(&list) + unlock(&updateGOMAXPROCS.lock) + } +} + // schedEnableUser enables or disables the scheduling of user // goroutines. // diff --git a/src/runtime/runtime.go b/src/runtime/runtime.go index 3afb6558b0..016cbdae58 100644 --- a/src/runtime/runtime.go +++ b/src/runtime/runtime.go @@ -151,6 +151,7 @@ func godebug_setNewIncNonDefault(newIncNonDefault func(string) func()) { p := new(func(string) func()) *p = newIncNonDefault godebugNewIncNonDefault.Store(p) + defaultGOMAXPROCSUpdateGODEBUG() } // A godebugInc provides access to internal/godebug's IncNonDefault function diff --git a/src/runtime/runtime1.go b/src/runtime/runtime1.go index 975d401694..424745d235 100644 --- a/src/runtime/runtime1.go +++ b/src/runtime/runtime1.go @@ -310,6 +310,7 @@ type dbgVar struct { var debug struct { cgocheck int32 clobberfree int32 + containermaxprocs int32 decoratemappings int32 disablethp int32 dontfreezetheworld int32 @@ -325,6 +326,7 @@ var debug struct { scheddetail int32 schedtrace int32 tracebackancestors int32 + updatemaxprocs int32 asyncpreemptoff int32 harddecommit int32 adaptivestackstart int32 @@ -370,6 +372,7 @@ var dbgvars = []*dbgVar{ {name: "asynctimerchan", atomic: &debug.asynctimerchan}, {name: "cgocheck", value: &debug.cgocheck}, {name: "clobberfree", value: &debug.clobberfree}, + {name: "containermaxprocs", value: &debug.containermaxprocs, def: 1}, {name: "dataindependenttiming", value: &debug.dataindependenttiming}, {name: "decoratemappings", value: &debug.decoratemappings, def: 1}, {name: "disablethp", value: &debug.disablethp}, @@ -396,6 +399,7 @@ var dbgvars = []*dbgVar{ {name: "tracecheckstackownership", value: &debug.traceCheckStackOwnership}, {name: "tracebackancestors", value: &debug.tracebackancestors}, {name: "tracefpunwindoff", value: &debug.tracefpunwindoff}, + {name: "updatemaxprocs", value: &debug.updatemaxprocs, def: 1}, } func parsedebugvars() { diff --git a/src/runtime/runtime2.go b/src/runtime/runtime2.go index 65b31f737b..94ab87f6db 100644 --- a/src/runtime/runtime2.go +++ b/src/runtime/runtime2.go @@ -840,6 +840,8 @@ type schedt struct { procresizetime int64 // nanotime() of last change to gomaxprocs totaltime int64 // ∫gomaxprocs dt up to procresizetime + customGOMAXPROCS bool // GOMAXPROCS was manually set from the environment or runtime.GOMAXPROCS + // sysmonlock protects sysmon's actions on the runtime. // // Acquire and hold this mutex to block sysmon from interacting @@ -1067,6 +1069,7 @@ const ( waitReasonChanSend // "chan send" waitReasonFinalizerWait // "finalizer wait" waitReasonForceGCIdle // "force gc (idle)" + waitReasonUpdateGOMAXPROCSIdle // "GOMAXPROCS updater (idle)" waitReasonSemacquire // "semacquire" waitReasonSleep // "sleep" waitReasonSyncCondWait // "sync.Cond.Wait" @@ -1115,6 +1118,7 @@ var waitReasonStrings = [...]string{ waitReasonChanSend: "chan send", waitReasonFinalizerWait: "finalizer wait", waitReasonForceGCIdle: "force gc (idle)", + waitReasonUpdateGOMAXPROCSIdle: "GOMAXPROCS updater (idle)", waitReasonSemacquire: "semacquire", waitReasonSleep: "sleep", waitReasonSyncCondWait: "sync.Cond.Wait", @@ -1201,12 +1205,13 @@ var isIdleInSynctest = [len(waitReasonStrings)]bool{ } var ( - allm *m - gomaxprocs int32 - numCPUStartup int32 - forcegc forcegcstate - sched schedt - newprocs int32 + allm *m + gomaxprocs int32 + numCPUStartup int32 + forcegc forcegcstate + sched schedt + newprocs int32 + newprocsCustom bool // newprocs value is manually set via runtime.GOMAXPROCS. ) var ( diff --git a/src/runtime/testdata/testprog/gomaxprocs.go b/src/runtime/testdata/testprog/gomaxprocs.go new file mode 100644 index 0000000000..915e3c4dad --- /dev/null +++ b/src/runtime/testdata/testprog/gomaxprocs.go @@ -0,0 +1,152 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package main + +import ( + "fmt" + "os" + "runtime" + "strconv" + "time" +) + +func init() { + register("PrintGOMAXPROCS", PrintGOMAXPROCS) + register("SetLimitThenDefaultGOMAXPROCS", SetLimitThenDefaultGOMAXPROCS) + register("UpdateGOMAXPROCS", UpdateGOMAXPROCS) + register("DontUpdateGOMAXPROCS", DontUpdateGOMAXPROCS) +} + +func PrintGOMAXPROCS() { + println(runtime.GOMAXPROCS(0)) +} + +func mustSetCPUMax(path string, quota int64) { + q := "max" + if quota >= 0 { + q = strconv.FormatInt(quota, 10) + } + buf := fmt.Sprintf("%s 100000", q) + if err := os.WriteFile(path, []byte(buf), 0); err != nil { + panic(fmt.Sprintf("error setting cpu.max: %v", err)) + } +} + +func mustParseInt64(s string) int64 { + v, err := strconv.ParseInt(s, 10, 64) + if err != nil { + panic(err) + } + return v +} + +// Inputs: +// GO_TEST_CPU_MAX_PATH: Path to cgroup v2 cpu.max file. +// GO_TEST_CPU_MAX_QUOTA: CPU quota to set. +func SetLimitThenDefaultGOMAXPROCS() { + path := os.Getenv("GO_TEST_CPU_MAX_PATH") + quota := mustParseInt64(os.Getenv("GO_TEST_CPU_MAX_QUOTA")) + + mustSetCPUMax(path, quota) + + runtime.SetDefaultGOMAXPROCS() + println(runtime.GOMAXPROCS(0)) +} + +// Wait for GOMAXPROCS to change from from to to. Times out after 10s. +func waitForMaxProcsChange(from, to int) { + start := time.Now() + for { + if time.Since(start) > 10*time.Second { + panic("no update for >10s") + } + + procs := runtime.GOMAXPROCS(0) + println("GOMAXPROCS:", procs) + if procs == to { + return + } + if procs != from { + panic(fmt.Sprintf("GOMAXPROCS change got %d want %d", procs, to)) + } + + time.Sleep(100*time.Millisecond) + } +} + +// Make sure that GOMAXPROCS does not change from curr. +// +// It is impossible to assert that it never changes, so this just makes sure it +// stays for 5s. +func mustNotChangeMaxProcs(curr int) { + start := time.Now() + for { + if time.Since(start) > 5*time.Second { + return + } + + procs := runtime.GOMAXPROCS(0) + println("GOMAXPROCS:", procs) + if procs != curr { + panic(fmt.Sprintf("GOMAXPROCS change got %d want %d", procs, curr)) + } + + time.Sleep(100*time.Millisecond) + } +} + +// Inputs: +// GO_TEST_CPU_MAX_PATH: Path to cgroup v2 cpu.max file. +func UpdateGOMAXPROCS() { + // We start with no limit. + + ncpu := runtime.NumCPU() + + procs := runtime.GOMAXPROCS(0) + println("GOMAXPROCS:", procs) + if procs != ncpu { + panic(fmt.Sprintf("GOMAXPROCS got %d want %d", procs, ncpu)) + } + + path := os.Getenv("GO_TEST_CPU_MAX_PATH") + + // Drop down to 3 CPU. + mustSetCPUMax(path, 300000) + waitForMaxProcsChange(ncpu, 3) + + // Drop even further. Now we hit the minimum GOMAXPROCS=2. + mustSetCPUMax(path, 100000) + waitForMaxProcsChange(3, 2) + + // Increase back up. + mustSetCPUMax(path, 300000) + waitForMaxProcsChange(2, 3) + + // Remove limit entirely. + mustSetCPUMax(path, -1) + waitForMaxProcsChange(3, ncpu) + + // Setting GOMAXPROCS explicitly disables updates. + runtime.GOMAXPROCS(3) + mustSetCPUMax(path, 200000) + mustNotChangeMaxProcs(3) + + println("OK") +} + +// Inputs: +// GO_TEST_CPU_MAX_PATH: Path to cgroup v2 cpu.max file. +func DontUpdateGOMAXPROCS() { + // The caller has disabled updates. Make sure they don't happen. + + curr := runtime.GOMAXPROCS(0) + println("GOMAXPROCS:", curr) + + path := os.Getenv("GO_TEST_CPU_MAX_PATH") + mustSetCPUMax(path, 300000) + mustNotChangeMaxProcs(curr) + + println("OK") +} diff --git a/src/runtime/testdata/testprog/gomaxprocs_windows.go b/src/runtime/testdata/testprog/gomaxprocs_windows.go new file mode 100644 index 0000000000..bc7a4b1063 --- /dev/null +++ b/src/runtime/testdata/testprog/gomaxprocs_windows.go @@ -0,0 +1,63 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package main + +import ( + "os" + "runtime" + "syscall" + "unsafe" +) + +func init() { + register("WindowsUpdateGOMAXPROCS", WindowsUpdateGOMAXPROCS) + register("WindowsDontUpdateGOMAXPROCS", WindowsDontUpdateGOMAXPROCS) +} + +// Set CPU affinity mask to only two CPUs. +// +// Skips the test if CPUs 0 and 1 are not available. +func setAffinity2() { + kernel32 := syscall.MustLoadDLL("kernel32.dll") + _GetProcessAffinityMask := kernel32.MustFindProc("GetProcessAffinityMask") + _SetProcessAffinityMask := kernel32.MustFindProc("SetProcessAffinityMask") + + h, err := syscall.GetCurrentProcess() + if err != nil { + panic(err) + } + + var mask, sysmask uintptr + ret, _, err := _GetProcessAffinityMask.Call(uintptr(h), uintptr(unsafe.Pointer(&mask)), uintptr(unsafe.Pointer(&sysmask))) + if ret == 0 { + panic(err) + } + + // We're going to restrict to CPUs 0 and 1. Make sure those are already available. + if mask & 0b11 != 0b11 { + println("SKIP: CPUs 0 and 1 not available") + os.Exit(0) + } + + mask = 0b11 + ret, _, err = _SetProcessAffinityMask.Call(uintptr(h), mask) + if ret == 0 { + panic(err) + } +} + +func WindowsUpdateGOMAXPROCS() { + ncpu := runtime.NumCPU() + setAffinity2() + waitForMaxProcsChange(ncpu, 2) + println("OK") +} + +func WindowsDontUpdateGOMAXPROCS() { + ncpu := runtime.NumCPU() + setAffinity2() + mustNotChangeMaxProcs(ncpu) + println("OK") +} From 360600b1d20bc4b421217435d921a2437be07893 Mon Sep 17 00:00:00 2001 From: Roland Shoemaker Date: Sat, 25 Jan 2025 10:28:02 -0800 Subject: [PATCH 19/99] crypto/tls: replace custom intern cache with weak cache Uses the new weak package to replace the existing custom intern cache with a map of weak.Pointers instead. This simplifies the cache, and means we don't need to store a slice of handles on the Conn anymore. Change-Id: I5c2bf6ef35fac4255e140e184f4e48574b34174c Reviewed-on: https://go-review.googlesource.com/c/go/+/644176 TryBot-Bypass: Roland Shoemaker Reviewed-by: Michael Knyszek Auto-Submit: Roland Shoemaker --- src/crypto/tls/cache.go | 93 +++++------------------ src/crypto/tls/cache_test.go | 72 +++--------------- src/crypto/tls/conn.go | 3 - src/crypto/tls/handshake_client.go | 10 +-- src/crypto/tls/handshake_client_tls13.go | 1 - src/crypto/tls/handshake_messages_test.go | 4 - src/crypto/tls/ticket.go | 46 +++++------ 7 files changed, 57 insertions(+), 172 deletions(-) diff --git a/src/crypto/tls/cache.go b/src/crypto/tls/cache.go index 807f522947..a2c255af88 100644 --- a/src/crypto/tls/cache.go +++ b/src/crypto/tls/cache.go @@ -8,78 +8,19 @@ import ( "crypto/x509" "runtime" "sync" - "sync/atomic" + "weak" ) -type cacheEntry struct { - refs atomic.Int64 - cert *x509.Certificate -} +// weakCertCache provides a cache of *x509.Certificates, allowing multiple +// connections to reuse parsed certificates, instead of re-parsing the +// certificate for every connection, which is an expensive operation. +type weakCertCache struct{ sync.Map } -// certCache implements an intern table for reference counted x509.Certificates, -// implemented in a similar fashion to BoringSSL's CRYPTO_BUFFER_POOL. This -// allows for a single x509.Certificate to be kept in memory and referenced from -// multiple Conns. Returned references should not be mutated by callers. Certificates -// are still safe to use after they are removed from the cache. -// -// Certificates are returned wrapped in an activeCert struct that should be held by -// the caller. When references to the activeCert are freed, the number of references -// to the certificate in the cache is decremented. Once the number of references -// reaches zero, the entry is evicted from the cache. -// -// The main difference between this implementation and CRYPTO_BUFFER_POOL is that -// CRYPTO_BUFFER_POOL is a more generic structure which supports blobs of data, -// rather than specific structures. Since we only care about x509.Certificates, -// certCache is implemented as a specific cache, rather than a generic one. -// -// See https://boringssl.googlesource.com/boringssl/+/master/include/openssl/pool.h -// and https://boringssl.googlesource.com/boringssl/+/master/crypto/pool/pool.c -// for the BoringSSL reference. -type certCache struct { - sync.Map -} - -var globalCertCache = new(certCache) - -// activeCert is a handle to a certificate held in the cache. Once there are -// no alive activeCerts for a given certificate, the certificate is removed -// from the cache by a cleanup. -type activeCert struct { - cert *x509.Certificate -} - -// active increments the number of references to the entry, wraps the -// certificate in the entry in an activeCert, and sets the cleanup. -// -// Note that there is a race between active and the cleanup set on the -// returned activeCert, triggered if active is called after the ref count is -// decremented such that refs may be > 0 when evict is called. We consider this -// safe, since the caller holding an activeCert for an entry that is no longer -// in the cache is fine, with the only side effect being the memory overhead of -// there being more than one distinct reference to a certificate alive at once. -func (cc *certCache) active(e *cacheEntry) *activeCert { - e.refs.Add(1) - a := &activeCert{e.cert} - runtime.AddCleanup(a, func(ce *cacheEntry) { - if ce.refs.Add(-1) == 0 { - cc.evict(ce) +func (wcc *weakCertCache) newCert(der []byte) (*x509.Certificate, error) { + if entry, ok := wcc.Load(string(der)); ok { + if v := entry.(weak.Pointer[x509.Certificate]).Value(); v != nil { + return v, nil } - }, e) - return a -} - -// evict removes a cacheEntry from the cache. -func (cc *certCache) evict(e *cacheEntry) { - cc.Delete(string(e.cert.Raw)) -} - -// newCert returns a x509.Certificate parsed from der. If there is already a copy -// of the certificate in the cache, a reference to the existing certificate will -// be returned. Otherwise, a fresh certificate will be added to the cache, and -// the reference returned. The returned reference should not be mutated. -func (cc *certCache) newCert(der []byte) (*activeCert, error) { - if entry, ok := cc.Load(string(der)); ok { - return cc.active(entry.(*cacheEntry)), nil } cert, err := x509.ParseCertificate(der) @@ -87,9 +28,17 @@ func (cc *certCache) newCert(der []byte) (*activeCert, error) { return nil, err } - entry := &cacheEntry{cert: cert} - if entry, loaded := cc.LoadOrStore(string(der), entry); loaded { - return cc.active(entry.(*cacheEntry)), nil + wp := weak.Make(cert) + if entry, loaded := wcc.LoadOrStore(string(der), wp); !loaded { + runtime.AddCleanup(cert, func(_ any) { wcc.CompareAndDelete(string(der), entry) }, any(string(der))) + } else if v := entry.(weak.Pointer[x509.Certificate]).Value(); v != nil { + return v, nil + } else { + if wcc.CompareAndSwap(string(der), entry, wp) { + runtime.AddCleanup(cert, func(_ any) { wcc.CompareAndDelete(string(der), wp) }, any(string(der))) + } } - return cc.active(entry), nil + return cert, nil } + +var globalCertCache = new(weakCertCache) diff --git a/src/crypto/tls/cache_test.go b/src/crypto/tls/cache_test.go index ea6b726d5e..75a0508ec0 100644 --- a/src/crypto/tls/cache_test.go +++ b/src/crypto/tls/cache_test.go @@ -1,45 +1,39 @@ -// Copyright 2022 The Go Authors. All rights reserved. +// Copyright 2025 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. - package tls import ( "encoding/pem" - "fmt" "runtime" "testing" "time" ) -func TestCertCache(t *testing.T) { - cc := certCache{} +func TestWeakCertCache(t *testing.T) { + wcc := weakCertCache{} p, _ := pem.Decode([]byte(rsaCertPEM)) if p == nil { t.Fatal("Failed to decode certificate") } - certA, err := cc.newCert(p.Bytes) + certA, err := wcc.newCert(p.Bytes) if err != nil { t.Fatalf("newCert failed: %s", err) } - certB, err := cc.newCert(p.Bytes) + certB, err := wcc.newCert(p.Bytes) if err != nil { t.Fatalf("newCert failed: %s", err) } - if certA.cert != certB.cert { + if certA != certB { t.Fatal("newCert returned a unique reference for a duplicate certificate") } - if entry, ok := cc.Load(string(p.Bytes)); !ok { + if _, ok := wcc.Load(string(p.Bytes)); !ok { t.Fatal("cache does not contain expected entry") - } else { - if refs := entry.(*cacheEntry).refs.Load(); refs != 2 { - t.Fatalf("unexpected number of references: got %d, want 2", refs) - } } - timeoutRefCheck := func(t *testing.T, key string, count int64) { + timeoutRefCheck := func(t *testing.T, key string, present bool) { t.Helper() timeout := time.After(4 * time.Second) for { @@ -47,14 +41,8 @@ func TestCertCache(t *testing.T) { case <-timeout: t.Fatal("timed out waiting for expected ref count") default: - e, ok := cc.Load(key) - if !ok && count != 0 { - t.Fatal("cache does not contain expected key") - } else if count == 0 && !ok { - return - } - - if e.(*cacheEntry).refs.Load() == count { + _, ok := wcc.Load(key) + if ok == present { return } } @@ -77,7 +65,7 @@ func TestCertCache(t *testing.T) { certA = nil runtime.GC() - timeoutRefCheck(t, string(p.Bytes), 1) + timeoutRefCheck(t, string(p.Bytes), true) // Keep certB alive until at least now, so that we can // purposefully nil it and force the finalizer to be @@ -86,41 +74,5 @@ func TestCertCache(t *testing.T) { certB = nil runtime.GC() - timeoutRefCheck(t, string(p.Bytes), 0) -} - -func BenchmarkCertCache(b *testing.B) { - p, _ := pem.Decode([]byte(rsaCertPEM)) - if p == nil { - b.Fatal("Failed to decode certificate") - } - - cc := certCache{} - b.ReportAllocs() - b.ResetTimer() - // We expect that calling newCert additional times after - // the initial call should not cause additional allocations. - for extra := 0; extra < 4; extra++ { - b.Run(fmt.Sprint(extra), func(b *testing.B) { - actives := make([]*activeCert, extra+1) - b.ResetTimer() - for i := 0; i < b.N; i++ { - var err error - actives[0], err = cc.newCert(p.Bytes) - if err != nil { - b.Fatal(err) - } - for j := 0; j < extra; j++ { - actives[j+1], err = cc.newCert(p.Bytes) - if err != nil { - b.Fatal(err) - } - } - for j := 0; j < extra+1; j++ { - actives[j] = nil - } - runtime.GC() - } - }) - } + timeoutRefCheck(t, string(p.Bytes), false) } diff --git a/src/crypto/tls/conn.go b/src/crypto/tls/conn.go index 1276665a2f..141175c801 100644 --- a/src/crypto/tls/conn.go +++ b/src/crypto/tls/conn.go @@ -54,9 +54,6 @@ type Conn struct { ocspResponse []byte // stapled OCSP response scts [][]byte // signed certificate timestamps from server peerCertificates []*x509.Certificate - // activeCertHandles contains the cache handles to certificates in - // peerCertificates that are used to track active references. - activeCertHandles []*activeCert // verifiedChains contains the certificate chains that we built, as // opposed to the ones presented by the server. verifiedChains [][]*x509.Certificate diff --git a/src/crypto/tls/handshake_client.go b/src/crypto/tls/handshake_client.go index bb5b7a042a..55790a11b6 100644 --- a/src/crypto/tls/handshake_client.go +++ b/src/crypto/tls/handshake_client.go @@ -956,7 +956,6 @@ func (hs *clientHandshakeState) processServerHello() (bool, error) { hs.masterSecret = hs.session.secret c.extMasterSecret = hs.session.extMasterSecret c.peerCertificates = hs.session.peerCertificates - c.activeCertHandles = hs.c.activeCertHandles c.verifiedChains = hs.session.verifiedChains c.ocspResponse = hs.session.ocspResponse // Let the ServerHello SCTs override the session SCTs from the original @@ -1107,7 +1106,6 @@ func checkKeySize(n int) (max int, ok bool) { // verifyServerCertificate parses and verifies the provided chain, setting // c.verifiedChains and c.peerCertificates or sending the appropriate alert. func (c *Conn) verifyServerCertificate(certificates [][]byte) error { - activeHandles := make([]*activeCert, len(certificates)) certs := make([]*x509.Certificate, len(certificates)) for i, asn1Data := range certificates { cert, err := globalCertCache.newCert(asn1Data) @@ -1115,15 +1113,14 @@ func (c *Conn) verifyServerCertificate(certificates [][]byte) error { c.sendAlert(alertDecodeError) return errors.New("tls: failed to parse certificate from server: " + err.Error()) } - if cert.cert.PublicKeyAlgorithm == x509.RSA { - n := cert.cert.PublicKey.(*rsa.PublicKey).N.BitLen() + if cert.PublicKeyAlgorithm == x509.RSA { + n := cert.PublicKey.(*rsa.PublicKey).N.BitLen() if max, ok := checkKeySize(n); !ok { c.sendAlert(alertBadCertificate) return fmt.Errorf("tls: server sent certificate containing RSA key larger than %d bits", max) } } - activeHandles[i] = cert - certs[i] = cert.cert + certs[i] = cert } echRejected := c.config.EncryptedClientHelloConfigList != nil && !c.echAccepted @@ -1188,7 +1185,6 @@ func (c *Conn) verifyServerCertificate(certificates [][]byte) error { return fmt.Errorf("tls: server's certificate contains an unsupported type of public key: %T", certs[0].PublicKey) } - c.activeCertHandles = activeHandles c.peerCertificates = certs if c.config.VerifyPeerCertificate != nil && !echRejected { diff --git a/src/crypto/tls/handshake_client_tls13.go b/src/crypto/tls/handshake_client_tls13.go index 444c6f311c..461a0e6962 100644 --- a/src/crypto/tls/handshake_client_tls13.go +++ b/src/crypto/tls/handshake_client_tls13.go @@ -466,7 +466,6 @@ func (hs *clientHandshakeStateTLS13) processServerHello() error { hs.usingPSK = true c.didResume = true c.peerCertificates = hs.session.peerCertificates - c.activeCertHandles = hs.session.activeCertHandles c.verifiedChains = hs.session.verifiedChains c.ocspResponse = hs.session.ocspResponse c.scts = hs.session.scts diff --git a/src/crypto/tls/handshake_messages_test.go b/src/crypto/tls/handshake_messages_test.go index aafb889b30..448bc31d3a 100644 --- a/src/crypto/tls/handshake_messages_test.go +++ b/src/crypto/tls/handshake_messages_test.go @@ -72,10 +72,6 @@ func TestMarshalUnmarshal(t *testing.T) { break } - if m, ok := m.(*SessionState); ok { - m.activeCertHandles = nil - } - if ch, ok := m.(*clientHelloMsg); ok { // extensions is special cased, as it is only populated by the // server-side of a handshake and is not expected to roundtrip diff --git a/src/crypto/tls/ticket.go b/src/crypto/tls/ticket.go index dbbcef7637..c56898c6f7 100644 --- a/src/crypto/tls/ticket.go +++ b/src/crypto/tls/ticket.go @@ -84,15 +84,14 @@ type SessionState struct { // createdAt is the generation time of the secret on the sever (which for // TLS 1.0–1.2 might be earlier than the current session) and the time at // which the ticket was received on the client. - createdAt uint64 // seconds since UNIX epoch - secret []byte // master secret for TLS 1.2, or the PSK for TLS 1.3 - extMasterSecret bool - peerCertificates []*x509.Certificate - activeCertHandles []*activeCert - ocspResponse []byte - scts [][]byte - verifiedChains [][]*x509.Certificate - alpnProtocol string // only set if EarlyData is true + createdAt uint64 // seconds since UNIX epoch + secret []byte // master secret for TLS 1.2, or the PSK for TLS 1.3 + extMasterSecret bool + peerCertificates []*x509.Certificate + ocspResponse []byte + scts [][]byte + verifiedChains [][]*x509.Certificate + alpnProtocol string // only set if EarlyData is true // Client-side TLS 1.3-only fields. useBy uint64 // seconds since UNIX epoch @@ -239,8 +238,7 @@ func ParseSessionState(data []byte) (*SessionState, error) { if err != nil { return nil, err } - ss.activeCertHandles = append(ss.activeCertHandles, c) - ss.peerCertificates = append(ss.peerCertificates, c.cert) + ss.peerCertificates = append(ss.peerCertificates, c) } if ss.isClient && len(ss.peerCertificates) == 0 { return nil, errors.New("tls: no server certificates in client session") @@ -270,8 +268,7 @@ func ParseSessionState(data []byte) (*SessionState, error) { if err != nil { return nil, err } - ss.activeCertHandles = append(ss.activeCertHandles, c) - chain = append(chain, c.cert) + chain = append(chain, c) } ss.verifiedChains = append(ss.verifiedChains, chain) } @@ -300,18 +297,17 @@ func ParseSessionState(data []byte) (*SessionState, error) { // from the current connection. func (c *Conn) sessionState() *SessionState { return &SessionState{ - version: c.vers, - cipherSuite: c.cipherSuite, - createdAt: uint64(c.config.time().Unix()), - alpnProtocol: c.clientProtocol, - peerCertificates: c.peerCertificates, - activeCertHandles: c.activeCertHandles, - ocspResponse: c.ocspResponse, - scts: c.scts, - isClient: c.isClient, - extMasterSecret: c.extMasterSecret, - verifiedChains: c.verifiedChains, - curveID: c.curveID, + version: c.vers, + cipherSuite: c.cipherSuite, + createdAt: uint64(c.config.time().Unix()), + alpnProtocol: c.clientProtocol, + peerCertificates: c.peerCertificates, + ocspResponse: c.ocspResponse, + scts: c.scts, + isClient: c.isClient, + extMasterSecret: c.extMasterSecret, + verifiedChains: c.verifiedChains, + curveID: c.curveID, } } From 419367969c88e6e97f8648669969a01b60bdd350 Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Wed, 21 May 2025 10:58:32 -0400 Subject: [PATCH 20/99] cmd/link: require cgo internal linking in TestIssue33979 This was a typo regression in CL 643897, which accidentally dropped the requirement for cgo internal linking. As a result, this test is continuously failing on windows-arm64. For #71395. Cq-Include-Trybots: luci.golang.try:gotip-windows-arm64 Change-Id: I6a6a636c25fd399cda6649ef94655aa112f10f63 Reviewed-on: https://go-review.googlesource.com/c/go/+/675015 Auto-Submit: Michael Pratt Reviewed-by: Michael Knyszek Reviewed-by: Quim Muntal LUCI-TryBot-Result: Go LUCI --- src/cmd/link/link_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cmd/link/link_test.go b/src/cmd/link/link_test.go index f26495a2b1..c3614c73f0 100644 --- a/src/cmd/link/link_test.go +++ b/src/cmd/link/link_test.go @@ -195,7 +195,7 @@ func TestIssue33979(t *testing.T) { testenv.MustHaveCGO(t) // N.B. go build below explictly doesn't pass through // -asan/-msan/-race, so we don't care about those. - testenv.MustInternalLink(t, testenv.NoSpecialBuildTypes) + testenv.MustInternalLink(t, testenv.SpecialBuildTypes{Cgo: true}) t.Parallel() From d3d22cc5e4be996345e47d6994c5f3d5f51811fa Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Wed, 21 May 2025 14:41:28 +0200 Subject: [PATCH 21/99] lib/fips140: set inprocess.txt to v1.0.0 Fixes #70200 Change-Id: I6a6a46567ce0834fb4b7f28bf06646326f8e5105 Reviewed-on: https://go-review.googlesource.com/c/go/+/674916 Reviewed-by: Daniel McCarney Auto-Submit: Filippo Valsorda Reviewed-by: Roland Shoemaker Reviewed-by: Dmitri Shuralyov LUCI-TryBot-Result: Go LUCI --- lib/fips140/inprocess.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 lib/fips140/inprocess.txt diff --git a/lib/fips140/inprocess.txt b/lib/fips140/inprocess.txt new file mode 100644 index 0000000000..0ec25f7505 --- /dev/null +++ b/lib/fips140/inprocess.txt @@ -0,0 +1 @@ +v1.0.0 From 304d9e2fd1b62d236eb48ec838be3680cb7845e6 Mon Sep 17 00:00:00 2001 From: Lokesh Kumar Date: Wed, 21 May 2025 14:48:21 +0000 Subject: [PATCH 22/99] bufio: update buffer documentation Fixes #73778 Change-Id: If6d87a92786c9b0ee2bd790b57937919afe0fc5c GitHub-Last-Rev: 4b4c7595d5779a127b01a5d71adca91cb5aa6c05 GitHub-Pull-Request: golang/go#73804 Reviewed-on: https://go-review.googlesource.com/c/go/+/674695 Auto-Submit: Alan Donovan LUCI-TryBot-Result: Go LUCI Reviewed-by: Dmitri Shuralyov Reviewed-by: Alan Donovan --- src/bufio/scan.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/bufio/scan.go b/src/bufio/scan.go index a26b2ff17d..1a0a3907c9 100644 --- a/src/bufio/scan.go +++ b/src/bufio/scan.go @@ -260,8 +260,11 @@ func (s *Scanner) setErr(err error) { } } -// Buffer sets the initial buffer to use when scanning +// Buffer controls memory allocation by the Scanner. +// It sets the initial buffer to use when scanning // and the maximum size of buffer that may be allocated during scanning. +// The contents of the buffer are ignored. +// // The maximum token size must be less than the larger of max and cap(buf). // If max <= cap(buf), [Scanner.Scan] will use this buffer only and do no allocation. // From d2f229db7a3da4157fd7602f77513ce85c01ff04 Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Wed, 21 May 2025 11:10:24 -0400 Subject: [PATCH 23/99] runtime: avoid register clobber in s390x racecall This is a regression in CL 643875. Loading gsignal clobbers R8, which contains the m pointer needed for loading g0. For #71395. Change-Id: I6a6a636ca95442767efe0eb1b358f2139d18c5b8 Reviewed-on: https://go-review.googlesource.com/c/go/+/675035 Auto-Submit: Michael Pratt LUCI-TryBot-Result: Go LUCI Reviewed-by: Michael Knyszek --- src/runtime/race_s390x.s | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/runtime/race_s390x.s b/src/runtime/race_s390x.s index a12bf8416b..3dfda9e733 100644 --- a/src/runtime/race_s390x.s +++ b/src/runtime/race_s390x.s @@ -412,13 +412,13 @@ TEXT racecall<>(SB), NOSPLIT, $0-0 MOVD g_m(g), R8 // R8 = thread. // Switch to g0 stack if we aren't already on g0 or gsignal. - MOVD m_gsignal(R8), R8 - CMPBEQ R8, g, call + MOVD m_gsignal(R8), R9 + CMPBEQ R9, g, call - MOVD m_g0(R8), R8 - CMPBEQ R8, g, call + MOVD m_g0(R8), R9 + CMPBEQ R9, g, call - MOVD (g_sched+gobuf_sp)(R8), R15 // Switch SP to g0. + MOVD (g_sched+gobuf_sp)(R9), R15 // Switch SP to g0. call: SUB $160, R15 // Allocate C frame. BL R1 // Call C code. From ce49eb488af1c5273b226b3b52a8cbd7eae63a51 Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Wed, 21 May 2025 13:36:42 -0400 Subject: [PATCH 24/99] runtime: skip windows stack tests in race mode These became race instrumented in CL 643897, but race mode uses more memory, so the test doesn't make much sense. For #71395. Change-Id: I6a6a636cf09ba29625aa9a22550314845fb2e611 Reviewed-on: https://go-review.googlesource.com/c/go/+/675077 Auto-Submit: Michael Pratt Reviewed-by: Michael Knyszek LUCI-TryBot-Result: Go LUCI --- src/runtime/crash_cgo_test.go | 3 +++ src/runtime/syscall_windows_test.go | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/src/runtime/crash_cgo_test.go b/src/runtime/crash_cgo_test.go index 34e33169d5..c5d7303261 100644 --- a/src/runtime/crash_cgo_test.go +++ b/src/runtime/crash_cgo_test.go @@ -597,6 +597,9 @@ func TestWindowsStackMemoryCgo(t *testing.T) { if runtime.GOOS != "windows" { t.Skip("skipping windows specific test") } + if race.Enabled { + t.Skip("skipping test: race mode uses more stack memory") + } testenv.SkipFlaky(t, 22575) o := runTestProg(t, "testprogcgo", "StackMemory") stackUsage, err := strconv.Atoi(o) diff --git a/src/runtime/syscall_windows_test.go b/src/runtime/syscall_windows_test.go index 6709267403..ad9bfb464b 100644 --- a/src/runtime/syscall_windows_test.go +++ b/src/runtime/syscall_windows_test.go @@ -7,6 +7,7 @@ package runtime_test import ( "fmt" "internal/abi" + "internal/race" "internal/syscall/windows/sysdll" "internal/testenv" "io" @@ -668,6 +669,9 @@ func TestWERDialogue(t *testing.T) { } func TestWindowsStackMemory(t *testing.T) { + if race.Enabled { + t.Skip("skipping test: race mode uses more stack memory") + } o := runTestProg(t, "testprog", "StackMemory") stackUsage, err := strconv.Atoi(o) if err != nil { From 3ae95aafb5d656596212c672c6e104e5c8802dbc Mon Sep 17 00:00:00 2001 From: Sean Liao Date: Wed, 14 May 2025 21:26:57 +0100 Subject: [PATCH 25/99] log/slog: add GroupAttrs GroupAttrs is a more efficient version of Group that takes a slice of Attr values. Fixes #66365 Change-Id: Ic3046704825e17098f2fea5751f2959dce1073e2 Reviewed-on: https://go-review.googlesource.com/c/go/+/672915 Reviewed-by: Jonathan Amsterdam LUCI-TryBot-Result: Go LUCI Reviewed-by: Michael Knyszek --- api/next/66365.txt | 1 + doc/next/6-stdlib/99-minor/log/slog/66365.md | 1 + src/log/slog/attr.go | 9 ++++ src/log/slog/example_test.go | 44 ++++++++++++++++++++ 4 files changed, 55 insertions(+) create mode 100644 api/next/66365.txt create mode 100644 doc/next/6-stdlib/99-minor/log/slog/66365.md diff --git a/api/next/66365.txt b/api/next/66365.txt new file mode 100644 index 0000000000..52f1c7ea8e --- /dev/null +++ b/api/next/66365.txt @@ -0,0 +1 @@ +pkg log/slog, func GroupAttrs(string, ...Attr) Attr #66365 diff --git a/doc/next/6-stdlib/99-minor/log/slog/66365.md b/doc/next/6-stdlib/99-minor/log/slog/66365.md new file mode 100644 index 0000000000..b6b0c81fe5 --- /dev/null +++ b/doc/next/6-stdlib/99-minor/log/slog/66365.md @@ -0,0 +1 @@ +[GroupAttrs] creates a group [Attr] from a slice of [Attr] values. diff --git a/src/log/slog/attr.go b/src/log/slog/attr.go index 067c537cc9..c592e54eaf 100644 --- a/src/log/slog/attr.go +++ b/src/log/slog/attr.go @@ -67,6 +67,15 @@ func Group(key string, args ...any) Attr { return Attr{key, GroupValue(argsToAttrSlice(args)...)} } +// GroupAttrs returns an Attr for a Group [Value] +// consisting of the given Attrs. +// +// GroupAttrs is a more efficient version of [Group] +// that accepts only [Attr] values. +func GroupAttrs(key string, attrs ...Attr) Attr { + return Attr{key, GroupValue(attrs...)} +} + func argsToAttrSlice(args []any) []Attr { var ( attr Attr diff --git a/src/log/slog/example_test.go b/src/log/slog/example_test.go index b03cc01066..c8a05a7bd5 100644 --- a/src/log/slog/example_test.go +++ b/src/log/slog/example_test.go @@ -5,6 +5,7 @@ package slog_test import ( + "context" "log/slog" "net/http" "os" @@ -35,3 +36,46 @@ func ExampleGroup() { // Output: // level=INFO msg=finished req.method=GET req.url=localhost status=200 duration=1s } + +func ExampleGroupAttrs() { + r, _ := http.NewRequest("POST", "localhost", http.NoBody) + // ... + + logger := slog.New( + slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{ + Level: slog.LevelDebug, + ReplaceAttr: func(groups []string, a slog.Attr) slog.Attr { + if a.Key == slog.TimeKey && len(groups) == 0 { + return slog.Attr{} + } + return a + }, + }), + ) + + // Use []slog.Attr to accumulate attributes. + attrs := []slog.Attr{slog.String("method", r.Method)} + attrs = append(attrs, slog.String("url", r.URL.String())) + + if r.Method == "POST" { + attrs = append(attrs, slog.Int("content-length", int(r.ContentLength))) + } + + // Group the attributes under a key. + logger.LogAttrs(context.Background(), slog.LevelInfo, + "finished", + slog.Int("status", http.StatusOK), + slog.GroupAttrs("req", attrs...), + ) + + // Groups with empty keys are inlined. + logger.LogAttrs(context.Background(), slog.LevelInfo, + "finished", + slog.Int("status", http.StatusOK), + slog.GroupAttrs("", attrs...), + ) + + // Output: + // level=INFO msg=finished status=200 req.method=POST req.url=localhost req.content-length=0 + // level=INFO msg=finished status=200 method=POST url=localhost content-length=0 +} From 4b7aa542ebc5144b2df7ee455ab137eb90de6f00 Mon Sep 17 00:00:00 2001 From: Damien Neil Date: Mon, 19 May 2025 15:51:14 -0700 Subject: [PATCH 26/99] os: add Root.ReadFile and Root.WriteFile For #73126 Change-Id: Ie69cc274e7b59f958c239520318b89ff0141e26b Reviewed-on: https://go-review.googlesource.com/c/go/+/674315 Reviewed-by: Alan Donovan LUCI-TryBot-Result: Go LUCI Auto-Submit: Damien Neil --- api/next/73126.txt | 2 ++ doc/next/6-stdlib/99-minor/os/67002.md | 2 ++ doc/next/6-stdlib/99-minor/os/73126.md | 1 + src/os/root.go | 25 +++++++++++++++++++++++++ src/os/root_test.go | 20 ++++++++++++++++++++ 5 files changed, 50 insertions(+) create mode 100644 api/next/73126.txt create mode 100644 doc/next/6-stdlib/99-minor/os/73126.md diff --git a/api/next/73126.txt b/api/next/73126.txt new file mode 100644 index 0000000000..9392448c02 --- /dev/null +++ b/api/next/73126.txt @@ -0,0 +1,2 @@ +pkg os, method (*Root) ReadFile(string) ([]uint8, error) #73126 +pkg os, method (*Root) WriteFile(string, []uint8, fs.FileMode) error #73126 diff --git a/doc/next/6-stdlib/99-minor/os/67002.md b/doc/next/6-stdlib/99-minor/os/67002.md index a8e79437b6..481a2c171c 100644 --- a/doc/next/6-stdlib/99-minor/os/67002.md +++ b/doc/next/6-stdlib/99-minor/os/67002.md @@ -6,7 +6,9 @@ The [os.Root] type supports the following additional methods: * [os.Root.Lchown] * [os.Root.Link] * [os.Root.MkdirAll] + * [os.Root.ReadFile] * [os.Root.Readlink] * [os.Root.RemoveAll] * [os.Root.Rename] * [os.Root.Symlink] + * [os.Root.WriteFile] diff --git a/doc/next/6-stdlib/99-minor/os/73126.md b/doc/next/6-stdlib/99-minor/os/73126.md new file mode 100644 index 0000000000..1cd40d79ee --- /dev/null +++ b/doc/next/6-stdlib/99-minor/os/73126.md @@ -0,0 +1 @@ + diff --git a/src/os/root.go b/src/os/root.go index 02bf0b5a3a..953cd6b9b9 100644 --- a/src/os/root.go +++ b/src/os/root.go @@ -248,6 +248,31 @@ func (r *Root) Symlink(oldname, newname string) error { return rootSymlink(r, oldname, newname) } +// ReadFile reads the named file in the root and returns its contents. +// See [ReadFile] for more details. +func (r *Root) ReadFile(name string) ([]byte, error) { + f, err := r.Open(name) + if err != nil { + return nil, err + } + defer f.Close() + return readFileContents(statOrZero(f), f.Read) +} + +// WriteFile writes data to the named file in the root, creating it if necessary. +// See [WriteFile] for more details. +func (r *Root) WriteFile(name string, data []byte, perm FileMode) error { + f, err := r.OpenFile(name, O_WRONLY|O_CREATE|O_TRUNC, perm) + if err != nil { + return err + } + _, err = f.Write(data) + if err1 := f.Close(); err == nil { + err = err1 + } + return err +} + func (r *Root) logOpen(name string) { if log := testlog.Logger(); log != nil { // This won't be right if r's name has changed since it was opened, diff --git a/src/os/root_test.go b/src/os/root_test.go index 4e09cb9621..effcdeab43 100644 --- a/src/os/root_test.go +++ b/src/os/root_test.go @@ -1899,3 +1899,23 @@ func TestRootRemoveDot(t *testing.T) { t.Error(`root.Remove(All)?(".") removed the root`) } } + +func TestRootWriteReadFile(t *testing.T) { + dir := t.TempDir() + root, err := os.OpenRoot(dir) + if err != nil { + t.Fatal(err) + } + defer root.Close() + + name := "filename" + want := []byte("file contents") + if err := root.WriteFile(name, want, 0o666); err != nil { + t.Fatalf("root.WriteFile(%q, %q, 0o666) = %v; want nil", name, want, err) + } + + got, err := root.ReadFile(name) + if err != nil { + t.Fatalf("root.ReadFile(%q) = %q, %v; want %q, nil", name, got, err, want) + } +} From e89791983a1330e467c8ba2cca9d7a581a5789cc Mon Sep 17 00:00:00 2001 From: thepudds Date: Fri, 4 Apr 2025 15:51:16 -0400 Subject: [PATCH 27/99] cmd/compile/internal/escape: use an ir.ReassignOracle Using the new-ish ir.ReassignOracle is more efficient than calling ir.StaticValue repeatedly. This CL now uses an ir.ReassignOracle for the recent make constant propagation introduced in CL 649035. We also pull the main change from CL 649035 into a new function, which we will update later in our stack. We will also use the ReassignOracles introduced here later in our stack. (We originally did most of this work in CL 649077, but we abandoned that in favor of CL 649035). We could also use an ir.ReassignOracle in the older processing of ir.OCALLFUNC in (*escape).call, but for now, we just leave that as a TODO. Updates #71359 Change-Id: I6e02eeac269bde3a302622b4dfe0c8dc63ec9ffc Reviewed-on: https://go-review.googlesource.com/c/go/+/673795 Reviewed-by: Keith Randall Auto-Submit: Keith Randall Reviewed-by: Keith Randall LUCI-TryBot-Result: Go LUCI Reviewed-by: David Chase --- src/cmd/compile/internal/escape/call.go | 1 + src/cmd/compile/internal/escape/escape.go | 93 ++++++++++++++++++++++- src/cmd/compile/internal/escape/utils.go | 23 +----- 3 files changed, 96 insertions(+), 21 deletions(-) diff --git a/src/cmd/compile/internal/escape/call.go b/src/cmd/compile/internal/escape/call.go index bd2e923da1..a80e2707e2 100644 --- a/src/cmd/compile/internal/escape/call.go +++ b/src/cmd/compile/internal/escape/call.go @@ -40,6 +40,7 @@ func (e *escape) call(ks []hole, call ir.Node) { var fn *ir.Name switch call.Op() { case ir.OCALLFUNC: + // TODO(thepudds): use an ir.ReassignOracle here. v := ir.StaticValue(call.Fun) fn = ir.StaticCalleeName(v) } diff --git a/src/cmd/compile/internal/escape/escape.go b/src/cmd/compile/internal/escape/escape.go index 5bd3038a9c..43fe0b8af5 100644 --- a/src/cmd/compile/internal/escape/escape.go +++ b/src/cmd/compile/internal/escape/escape.go @@ -6,6 +6,8 @@ package escape import ( "fmt" + "go/constant" + "go/token" "cmd/compile/internal/base" "cmd/compile/internal/ir" @@ -86,8 +88,9 @@ import ( // A batch holds escape analysis state that's shared across an entire // batch of functions being analyzed at once. type batch struct { - allLocs []*location - closures []closure + allLocs []*location + closures []closure + reassignOracles map[*ir.Func]*ir.ReassignOracle heapLoc location mutatorLoc location @@ -129,6 +132,7 @@ func Batch(fns []*ir.Func, recursive bool) { b.heapLoc.attrs = attrEscapes | attrPersists | attrMutates | attrCalls b.mutatorLoc.attrs = attrMutates b.calleeLoc.attrs = attrCalls + b.reassignOracles = make(map[*ir.Func]*ir.ReassignOracle) // Construct data-flow graph from syntax trees. for _, fn := range fns { @@ -154,6 +158,11 @@ func Batch(fns []*ir.Func, recursive bool) { b.closures = nil for _, loc := range b.allLocs { + // Try to replace some non-constant expressions with literals. + b.rewriteWithLiterals(loc.n, loc.curfn) + + // Check if the node must be heap allocated for certain reasons + // such as OMAKESLICE for a large slice. if why := HeapAllocReason(loc.n); why != "" { b.flow(b.heapHole().addr(loc.n, why), loc) } @@ -515,3 +524,83 @@ func (b *batch) reportLeaks(pos src.XPos, name string, esc leaks, sig *types.Typ base.WarnfAt(pos, "%v does not escape, mutate, or call", name) } } + +// rewriteWithLiterals attempts to replace certain non-constant expressions +// within n with a literal if possible. +func (b *batch) rewriteWithLiterals(n ir.Node, fn *ir.Func) { + if n == nil || fn == nil { + return + } + if n.Op() != ir.OMAKESLICE { + // TODO(thepudds): we handle more cases later in our CL stack. + return + } + + // Look up a cached ReassignOracle for the function, lazily computing one if needed. + ro := b.reassignOracle(fn) + if ro == nil { + base.Fatalf("no ReassignOracle for function %v with closure parent %v", fn, fn.ClosureParent) + } + + switch n.Op() { + case ir.OMAKESLICE: + // Check if we can replace a non-constant argument to make with + // a literal to allow for this slice to be stack allocated if otherwise allowed. + n := n.(*ir.MakeExpr) + + r := &n.Cap + if n.Cap == nil { + r = &n.Len + } + + if s := ro.StaticValue(*r); s.Op() == ir.OLITERAL { + lit, ok := s.(*ir.BasicLit) + if !ok || lit.Val().Kind() != constant.Int { + base.Fatalf("unexpected BasicLit Kind") + } + if constant.Compare(lit.Val(), token.GEQ, constant.MakeInt64(0)) { + *r = lit + } + } + } +} + +// reassignOracle returns an initialized *ir.ReassignOracle for fn. +// If fn is a closure, it returns the ReassignOracle for the ultimate parent. +// +// A new ReassignOracle is initialized lazily if needed, and the result +// is cached to reduce duplicative work of preparing a ReassignOracle. +func (b *batch) reassignOracle(fn *ir.Func) *ir.ReassignOracle { + if ro, ok := b.reassignOracles[fn]; ok { + return ro // Hit. + } + + // For closures, we want the ultimate parent's ReassignOracle, + // so walk up the parent chain, if any. + f := fn + for f.ClosureParent != nil && !f.ClosureParent.IsPackageInit() { + f = f.ClosureParent + } + + if f != fn { + // We found a parent. + ro := b.reassignOracles[f] + if ro != nil { + // Hit, via a parent. Before returning, store this ro for the original fn as well. + b.reassignOracles[fn] = ro + return ro + } + } + + // Miss. We did not find a ReassignOracle for fn or a parent, so lazily create one. + ro := &ir.ReassignOracle{} + ro.Init(f) + + // Cache the answer for the original fn. + b.reassignOracles[fn] = ro + if f != fn { + // Cache for the parent as well. + b.reassignOracles[f] = ro + } + return ro +} diff --git a/src/cmd/compile/internal/escape/utils.go b/src/cmd/compile/internal/escape/utils.go index b3ebe778f4..2718a7f841 100644 --- a/src/cmd/compile/internal/escape/utils.go +++ b/src/cmd/compile/internal/escape/utils.go @@ -5,12 +5,9 @@ package escape import ( - "cmd/compile/internal/base" "cmd/compile/internal/ir" "cmd/compile/internal/typecheck" "cmd/compile/internal/types" - "go/constant" - "go/token" ) func isSliceSelfAssign(dst, src ir.Node) bool { @@ -210,21 +207,9 @@ func HeapAllocReason(n ir.Node) string { if n.Op() == ir.OMAKESLICE { n := n.(*ir.MakeExpr) - r := &n.Cap + r := n.Cap if n.Cap == nil { - r = &n.Len - } - - // Try to determine static values of make() calls, to avoid allocating them on the heap. - // We are doing this in escape analysis, so that it happens after inlining and devirtualization. - if s := ir.StaticValue(*r); s.Op() == ir.OLITERAL { - lit, ok := s.(*ir.BasicLit) - if !ok || lit.Val().Kind() != constant.Int { - base.Fatalf("unexpected BasicLit Kind") - } - if constant.Compare(lit.Val(), token.GEQ, constant.MakeInt64(0)) { - *r = lit - } + r = n.Len } elem := n.Type().Elem() @@ -232,7 +217,7 @@ func HeapAllocReason(n ir.Node) string { // TODO: stack allocate these? See #65685. return "zero-sized element" } - if !ir.IsSmallIntConst(*r) { + if !ir.IsSmallIntConst(r) { // For non-constant sizes, we do a hybrid approach: // // if cap <= K { @@ -249,7 +234,7 @@ func HeapAllocReason(n ir.Node) string { // Implementation is in ../walk/builtin.go:walkMakeSlice. return "" } - if ir.Int64Val(*r) > ir.MaxImplicitStackVarSize/elem.Size() { + if ir.Int64Val(r) > ir.MaxImplicitStackVarSize/elem.Size() { return "too large for stack" } } From ed24bb4e6047890af272733c5a8bdcc43834e517 Mon Sep 17 00:00:00 2001 From: thepudds Date: Wed, 12 Feb 2025 18:55:04 -0500 Subject: [PATCH 28/99] cmd/compile/internal/escape: propagate constants to interface conversions to avoid allocs Currently, the integer value in the following interface conversion gets heap allocated: v := 1000 fmt.Println(v) In contrast, this conversion does not currently cause the integer value to be heap allocated: fmt.Println(1000) The second example is able to avoid heap allocation because of an optimization in walk (by Josh in #18704 and related issues) that recognizes a literal is being used. In the first example, that optimization is currently thwarted by the literal getting assigned to a local variable prior to use in the interface conversion. This CL propagates constants to interface conversions like in the first example to avoid heap allocations, instead using a read-only global. The net effect is roughly turning the first example into the second. One place this comes up in practice currently is with logging or debug prints. For example, if we have something like: func conditionalDebugf(format string, args ...interface{}) { if debugEnabled { fmt.Fprintf(io.Discard, format, args...) } } Prior to this CL, this integer is heap allocated, even when the debugEnabled flag is false, and even when the compiler inlines conditionalDebugf: v := 1000 conditionalDebugf("hello %d", v) With this CL, the integer here is no longer heap allocated, even when the debugEnabled flag is enabled, because the compiler can now see that it can use a read-only global. See the writeup in #71359 for more details. CL 649076 (earlier in our stack) added most of the tests along with debug diagnostics in convert.go to make it easier to test this change. Updates #71359 Updates #62653 Updates #53465 Updates #8618 Change-Id: I19a51e74b36576ebb0b9cf599267cbd2bd847ce4 Reviewed-on: https://go-review.googlesource.com/c/go/+/649079 Auto-Submit: Keith Randall Reviewed-by: Keith Randall LUCI-TryBot-Result: Go LUCI Reviewed-by: David Chase Reviewed-by: Keith Randall --- src/cmd/compile/internal/escape/escape.go | 22 +++++- src/fmt/fmt_test.go | 17 ++++- src/log/slog/logger_test.go | 6 +- test/escape5.go | 2 +- test/escape_iface.go | 8 +-- test/escape_iface_data.go | 88 ++++++++++++++++------- test/fixedbugs/issue12006.go | 10 +-- test/fixedbugs/issue30898.go | 2 +- 8 files changed, 112 insertions(+), 43 deletions(-) diff --git a/src/cmd/compile/internal/escape/escape.go b/src/cmd/compile/internal/escape/escape.go index 43fe0b8af5..06dee7ec41 100644 --- a/src/cmd/compile/internal/escape/escape.go +++ b/src/cmd/compile/internal/escape/escape.go @@ -531,8 +531,11 @@ func (b *batch) rewriteWithLiterals(n ir.Node, fn *ir.Func) { if n == nil || fn == nil { return } - if n.Op() != ir.OMAKESLICE { - // TODO(thepudds): we handle more cases later in our CL stack. + if n.Op() != ir.OMAKESLICE && n.Op() != ir.OCONVIFACE { + return + } + if base.Flag.Cfg.CoverageInfo != nil { + // Avoid altering coverage results. return } @@ -562,6 +565,21 @@ func (b *batch) rewriteWithLiterals(n ir.Node, fn *ir.Func) { *r = lit } } + case ir.OCONVIFACE: + // Check if we can replace a non-constant expression in an interface conversion with + // a literal to avoid heap allocating the underlying interface value. + conv := n.(*ir.ConvExpr) + if conv.X.Op() != ir.OLITERAL && !conv.X.Type().IsInterface() { + v := ro.StaticValue(conv.X) + if v != nil && v.Op() == ir.OLITERAL && ir.ValidTypeForConst(conv.X.Type(), v.Val()) { + if base.Debug.EscapeDebug >= 3 { + base.WarnfAt(n.Pos(), "rewriting OCONVIFACE value from %v (%v) to %v (%v)", conv.X, conv.X.Type(), v, v.Type()) + } + v := v.(*ir.BasicLit) + conv.X = ir.NewBasicLit(conv.X.Pos(), conv.X.Type(), v.Val()) + typecheck.Expr(conv) + } + } } } diff --git a/src/fmt/fmt_test.go b/src/fmt/fmt_test.go index 82daf62771..a896b8fe24 100644 --- a/src/fmt/fmt_test.go +++ b/src/fmt/fmt_test.go @@ -1495,11 +1495,15 @@ var mallocTest = []struct { {1, `Sprintf("%x %x")`, func() { _ = Sprintf("%x %x", 7, 112) }}, {1, `Sprintf("%g")`, func() { _ = Sprintf("%g", float32(3.14159)) }}, {0, `Fprintf(buf, "%s")`, func() { mallocBuf.Reset(); Fprintf(&mallocBuf, "%s", "hello") }}, + {0, `Fprintf(buf, "%s")`, func() { mallocBuf.Reset(); s := "hello"; Fprintf(&mallocBuf, "%s", s) }}, + {1, `Fprintf(buf, "%s")`, func() { mallocBuf.Reset(); s := "hello"; Fprintf(&mallocBuf, "%s", noliteral(s)) }}, {0, `Fprintf(buf, "%x")`, func() { mallocBuf.Reset(); Fprintf(&mallocBuf, "%x", 7) }}, {0, `Fprintf(buf, "%x")`, func() { mallocBuf.Reset(); Fprintf(&mallocBuf, "%x", 1<<16) }}, - {1, `Fprintf(buf, "%x")`, func() { mallocBuf.Reset(); i := 1 << 16; Fprintf(&mallocBuf, "%x", i) }}, // not constant + {0, `Fprintf(buf, "%x")`, func() { mallocBuf.Reset(); i := 1 << 16; Fprintf(&mallocBuf, "%x", i) }}, + {1, `Fprintf(buf, "%x")`, func() { mallocBuf.Reset(); i := 1 << 16; Fprintf(&mallocBuf, "%x", noliteral(i)) }}, {4, `Fprintf(buf, "%v")`, func() { mallocBuf.Reset(); s := []int{1, 2}; Fprintf(&mallocBuf, "%v", s) }}, {1, `Fprintf(buf, "%v")`, func() { mallocBuf.Reset(); type P struct{ x, y int }; Fprintf(&mallocBuf, "%v", P{1, 2}) }}, + {1, `Fprintf(buf, "%v")`, func() { mallocBuf.Reset(); type P struct{ x, y int }; Fprintf(&mallocBuf, "%v", noliteral(P{1, 2})) }}, {2, `Fprintf(buf, "%80000s")`, func() { mallocBuf.Reset(); Fprintf(&mallocBuf, "%80000s", "hello") }}, // large buffer (>64KB) // If the interface value doesn't need to allocate, amortized allocation overhead should be zero. {0, `Fprintf(buf, "%x %x %x")`, func() { @@ -1519,8 +1523,8 @@ func TestCountMallocs(t *testing.T) { } for _, mt := range mallocTest { mallocs := testing.AllocsPerRun(100, mt.fn) - if got, max := mallocs, float64(mt.count); got > max { - t.Errorf("%s: got %v allocs, want <=%v", mt.desc, got, max) + if got, max := mallocs, float64(mt.count); got != max { + t.Errorf("%s: got %v allocs, want %v", mt.desc, got, max) } } } @@ -2010,3 +2014,10 @@ func TestAppendln(t *testing.T) { t.Fatalf("Appendln allocated a new slice") } } + +// noliteral prevents escape analysis from recognizing a literal value. +// +//go:noinline +func noliteral[T any](t T) T { + return t +} diff --git a/src/log/slog/logger_test.go b/src/log/slog/logger_test.go index 558aecaf6e..63595504fe 100644 --- a/src/log/slog/logger_test.go +++ b/src/log/slog/logger_test.go @@ -349,7 +349,7 @@ func TestAlloc(t *testing.T) { t.Run("2 pairs", func(t *testing.T) { s := "abc" i := 2000 - wantAllocs(t, 2, func() { + wantAllocs(t, 0, func() { dl.Info("hello", "n", i, "s", s, @@ -360,7 +360,7 @@ func TestAlloc(t *testing.T) { l := New(DiscardHandler) s := "abc" i := 2000 - wantAllocs(t, 2, func() { + wantAllocs(t, 0, func() { l.Log(ctx, LevelInfo, "hello", "n", i, "s", s, @@ -384,7 +384,7 @@ func TestAlloc(t *testing.T) { s := "abc" i := 2000 d := time.Second - wantAllocs(t, 10, func() { + wantAllocs(t, 1, func() { dl.Info("hello", "n", i, "s", s, "d", d, "n", i, "s", s, "d", d, diff --git a/test/escape5.go b/test/escape5.go index 133d973ba5..2ed8b5789d 100644 --- a/test/escape5.go +++ b/test/escape5.go @@ -252,7 +252,7 @@ func f29000(_ int, x interface{}) { // ERROR "leaking param: x" func g29000() { x := 1 - f29000(2, x) // ERROR "x escapes to heap" + f29000(2, x) // ERROR "1 escapes to heap" } // Issue 28369: taking an address of a parameter and converting it into a uintptr causes an diff --git a/test/escape_iface.go b/test/escape_iface.go index d822cca2f8..78b5209a62 100644 --- a/test/escape_iface.go +++ b/test/escape_iface.go @@ -228,8 +228,8 @@ func dotTypeEscape2() { // #13805, #15796 j := 0 var v int var ok bool - var x interface{} = i // ERROR "i does not escape" - var y interface{} = j // ERROR "j does not escape" + var x interface{} = i // ERROR "0 does not escape" + var y interface{} = j // ERROR "0 does not escape" *(&v) = x.(int) *(&v), *(&ok) = y.(int) @@ -238,8 +238,8 @@ func dotTypeEscape2() { // #13805, #15796 i := 0 j := 0 var ok bool - var x interface{} = i // ERROR "i does not escape" - var y interface{} = j // ERROR "j does not escape" + var x interface{} = i // ERROR "0 does not escape" + var y interface{} = j // ERROR "0 does not escape" sink = x.(int) // ERROR "x.\(int\) escapes to heap" sink, *(&ok) = y.(int) // ERROR "autotmp_.* escapes to heap" diff --git a/test/escape_iface_data.go b/test/escape_iface_data.go index 556be2067c..46814f3a9f 100644 --- a/test/escape_iface_data.go +++ b/test/escape_iface_data.go @@ -17,7 +17,7 @@ func string1() { func string2() { v := "abc" - sink = v + sink = v // ERROR "using global for interface value" } func string3() { @@ -26,7 +26,7 @@ func string3() { func string4() { v := "" - sink = v + sink = v // ERROR "using global for interface value" } func string5() { @@ -36,8 +36,8 @@ func string5() { func string6() { var a any - v := "abc" // ERROR "using stack temporary for interface value" - a = v + v := "abc" + a = v // ERROR "using global for interface value" _ = a } @@ -49,7 +49,7 @@ func string7(v string) { func string8() { v0 := "abc" v := v0 - string7(v) + string7(v) // ERROR "using global for interface value" } func string9() { @@ -58,7 +58,7 @@ func string9() { f := func() { string7(v) } - f() + f() // ERROR "using global for interface value" } func string10() { @@ -70,14 +70,14 @@ func string10() { } f2() } - f() + f() // ERROR "using global for interface value" } func string11() { v0 := "abc" v := v0 defer func() { - string7(v) + string7(v) // ERROR "using global for interface value" }() } @@ -87,7 +87,7 @@ func integer1() { func integer2() { v := 42 - sink = v + sink = v // ERROR "using global for interface value" } func integer3() { @@ -96,7 +96,7 @@ func integer3() { func integer4a() { v := 0 - sink = v + sink = v // ERROR "using global for interface value" } func integer4b() { @@ -111,8 +111,8 @@ func integer5() { func integer6() { var a any - v := 42 // ERROR "using stack temporary for interface value" - a = v + v := 42 + a = v // ERROR "using global for interface value" _ = a } @@ -140,24 +140,22 @@ func named1b() { func named2a() { v := MyInt(0) - sink = v + sink = v // ERROR "using global for interface value" } func named2b() { v := MyInt(42) - escapes(v) + escapes(v) // ERROR "using global for interface value" } -// Unfortunate: we currently require matching types, which we could relax. func named2c() { v := 42 - sink = MyInt(v) + sink = MyInt(v) // ERROR "using global for interface value" } -// Unfortunate: we currently require matching types, which we could relax. func named2d() { v := 42 - escapes(MyInt(v)) + escapes(MyInt(v)) // ERROR "using global for interface value" } func named3a() { sink = MyInt(42) // ERROR "using global for interface value" @@ -169,22 +167,22 @@ func named3b() { func named4a() { v := MyInt(0) - sink = v + sink = v // ERROR "using global for interface value" } func named4b() { v := MyInt(0) - escapes(v) + escapes(v) // ERROR "using global for interface value" } func named4c() { v := 0 - sink = MyInt(v) + sink = MyInt(v) // ERROR "using global for interface value" } func named4d() { v := 0 - escapes(MyInt(v)) + escapes(MyInt(v)) // ERROR "using global for interface value" } func named5() { @@ -194,8 +192,8 @@ func named5() { func named6() { var a any - v := MyInt(42) // ERROR "using stack temporary for interface value" - a = v + v := MyInt(42) + a = v // ERROR "using global for interface value" _ = a } @@ -255,3 +253,45 @@ func emptyStruct2() { func emptyStruct3(v struct{}) { // ERROR "using global for zero-sized interface value" sink = v } + +// Some light emulation of conditional debug printing (such as in #53465). + +func Printf(format string, args ...any) { + for _, arg := range args { + sink = arg + } +} + +var enabled = true + +func debugf(format string, args ...interface{}) { + if enabled { + Printf(format, args...) + } +} + +//go:noinline +func debugf2(format string, args ...interface{}) { + if enabled { + Printf(format, args...) + } +} + +func f1() { + v := 1000 + debugf("hello %d", v) // ERROR "using global for interface value" +} + +func f2() { + v := 1000 + debugf2("hello %d", v) // ERROR "using global for interface value" +} + +//go:noinline +func f3(i int) { + debugf("hello %d", i) +} + +func f4() { + f3(1000) +} diff --git a/test/fixedbugs/issue12006.go b/test/fixedbugs/issue12006.go index 045ed043bb..94ff52442c 100644 --- a/test/fixedbugs/issue12006.go +++ b/test/fixedbugs/issue12006.go @@ -84,7 +84,7 @@ func TFooI() { a := int32(1) // ERROR "moved to heap: a" b := "cat" c := &a - FooI(a, b, c) // ERROR "a escapes to heap" "b escapes to heap" "... argument does not escape" + FooI(a, b, c) // ERROR "a escapes to heap" ".cat. escapes to heap" "... argument does not escape" } func FooJ(args ...interface{}) *int32 { // ERROR "leaking param: args to result ~r0 level=1" @@ -108,14 +108,14 @@ func TFooJ1() { a := int32(1) b := "cat" c := &a - FooJ(a, b, c) // ERROR "a does not escape" "b does not escape" "... argument does not escape" + FooJ(a, b, c) // ERROR "a does not escape" ".cat. does not escape" "... argument does not escape" } func TFooJ2() { a := int32(1) // ERROR "moved to heap: a" b := "cat" c := &a - isink = FooJ(a, b, c) // ERROR "a escapes to heap" "b escapes to heap" "... argument does not escape" + isink = FooJ(a, b, c) // ERROR "a escapes to heap" ".cat. escapes to heap" "... argument does not escape" } type fakeSlice struct { @@ -144,7 +144,7 @@ func TFooK2() { a := int32(1) // ERROR "moved to heap: a" b := "cat" c := &a - fs := fakeSlice{3, &[4]interface{}{a, b, c, nil}} // ERROR "a escapes to heap" "b escapes to heap" "&\[4\]interface {}{...} does not escape" + fs := fakeSlice{3, &[4]interface{}{a, b, c, nil}} // ERROR "a escapes to heap" ".cat. escapes to heap" "&\[4\]interface {}{...} does not escape" isink = FooK(fs) } @@ -169,6 +169,6 @@ func TFooL2() { a := int32(1) // ERROR "moved to heap: a" b := "cat" c := &a - s := []interface{}{a, b, c} // ERROR "a escapes to heap" "b escapes to heap" "\[\]interface {}{...} does not escape" + s := []interface{}{a, b, c} // ERROR "a escapes to heap" ".cat. escapes to heap" "\[\]interface {}{...} does not escape" isink = FooL(s) } diff --git a/test/fixedbugs/issue30898.go b/test/fixedbugs/issue30898.go index c7f6f2d371..38358949e2 100644 --- a/test/fixedbugs/issue30898.go +++ b/test/fixedbugs/issue30898.go @@ -15,5 +15,5 @@ func debugf(format string, args ...interface{}) { // ERROR "can inline debugf" " func bar() { // ERROR "can inline bar" value := 10 - debugf("value is %d", value) // ERROR "inlining call to debugf" "value does not escape" "\.\.\. argument does not escape" + debugf("value is %d", value) // ERROR "inlining call to debugf" "10 does not escape" "\.\.\. argument does not escape" } From 77345f41ee36c8db3ba7e0f687a8834fa7b83c48 Mon Sep 17 00:00:00 2001 From: Michael Anthony Knyszek Date: Wed, 21 May 2025 17:50:15 +0000 Subject: [PATCH 29/99] internal/trace: skip clock snapshot checks on Windows in stress mode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Windows' monotonic and wall clock granularity is just too coarse to get reasonable values out of stress mode, which is creating new trace generations constantly. Fixes #73813. Change-Id: Id9cb2fed9775ce8d78a736d0164daa7bf45075e0 Reviewed-on: https://go-review.googlesource.com/c/go/+/675096 Reviewed-by: Felix Geisendörfer Reviewed-by: Roland Shoemaker Auto-Submit: Michael Knyszek LUCI-TryBot-Result: Go LUCI --- src/internal/trace/reader_test.go | 8 +++--- src/internal/trace/testtrace/validation.go | 29 ++++++++++++++++------ src/internal/trace/trace_test.go | 11 +++++++- 3 files changed, 35 insertions(+), 13 deletions(-) diff --git a/src/internal/trace/reader_test.go b/src/internal/trace/reader_test.go index 222d2dfa82..691cda6688 100644 --- a/src/internal/trace/reader_test.go +++ b/src/internal/trace/reader_test.go @@ -42,7 +42,9 @@ func TestReaderGolden(t *testing.T) { if err != nil { t.Fatalf("failed to parse test file at %s: %v", testPath, err) } - testReader(t, tr, ver, exp) + v := testtrace.NewValidator() + v.GoVersion = ver + testReader(t, tr, v, exp) }) } } @@ -94,7 +96,7 @@ func FuzzReader(f *testing.F) { }) } -func testReader(t *testing.T, tr io.Reader, ver version.Version, exp *testtrace.Expectation) { +func testReader(t *testing.T, tr io.Reader, v *testtrace.Validator, exp *testtrace.Expectation) { r, err := trace.NewReader(tr) if err != nil { if err := exp.Check(err); err != nil { @@ -102,8 +104,6 @@ func testReader(t *testing.T, tr io.Reader, ver version.Version, exp *testtrace. } return } - v := testtrace.NewValidator() - v.GoVersion = ver for { ev, err := r.ReadEvent() if err == io.EOF { diff --git a/src/internal/trace/testtrace/validation.go b/src/internal/trace/testtrace/validation.go index da0e871287..2060d0d44c 100644 --- a/src/internal/trace/testtrace/validation.go +++ b/src/internal/trace/testtrace/validation.go @@ -23,6 +23,9 @@ type Validator struct { tasks map[trace.TaskID]string lastSync trace.Sync GoVersion version.Version + + // Flags to modify validation behavior. + skipClockSnapshotChecks bool // Some platforms can't guarantee a monotonically increasing clock reading. } type schedContext struct { @@ -53,6 +56,14 @@ func NewValidator() *Validator { } } +// SkipClockSnapshotChecks causes the validator to skip checks on the clock snapshots. +// +// Some platforms like Windows, with a small enough trace period, are unable to produce +// monotonically increasing timestamps due to very coarse clock granularity. +func (v *Validator) SkipClockSnapshotChecks() { + v.skipClockSnapshotChecks = true +} + // Event validates ev as the next event in a stream of trace.Events. // // Returns an error if validation fails. @@ -97,14 +108,16 @@ func (v *Validator) Event(ev trace.Event) error { if s.ClockSnapshot.Trace == 0 { e.Errorf("sync %d has zero trace time", s.N) } - if s.N >= 2 && !s.ClockSnapshot.Wall.After(v.lastSync.ClockSnapshot.Wall) { - e.Errorf("sync %d has non-increasing wall time: %v vs %v", s.N, s.ClockSnapshot.Wall, v.lastSync.ClockSnapshot.Wall) - } - if s.N >= 2 && !(s.ClockSnapshot.Mono > v.lastSync.ClockSnapshot.Mono) { - e.Errorf("sync %d has non-increasing mono time: %v vs %v", s.N, s.ClockSnapshot.Mono, v.lastSync.ClockSnapshot.Mono) - } - if s.N >= 2 && !(s.ClockSnapshot.Trace > v.lastSync.ClockSnapshot.Trace) { - e.Errorf("sync %d has non-increasing trace time: %v vs %v", s.N, s.ClockSnapshot.Trace, v.lastSync.ClockSnapshot.Trace) + if !v.skipClockSnapshotChecks { + if s.N >= 2 && !s.ClockSnapshot.Wall.After(v.lastSync.ClockSnapshot.Wall) { + e.Errorf("sync %d has non-increasing wall time: %v vs %v", s.N, s.ClockSnapshot.Wall, v.lastSync.ClockSnapshot.Wall) + } + if s.N >= 2 && !(s.ClockSnapshot.Mono > v.lastSync.ClockSnapshot.Mono) { + e.Errorf("sync %d has non-increasing mono time: %v vs %v", s.N, s.ClockSnapshot.Mono, v.lastSync.ClockSnapshot.Mono) + } + if s.N >= 2 && !(s.ClockSnapshot.Trace > v.lastSync.ClockSnapshot.Trace) { + e.Errorf("sync %d has non-increasing trace time: %v vs %v", s.N, s.ClockSnapshot.Trace, v.lastSync.ClockSnapshot.Trace) + } } } v.lastSync = s diff --git a/src/internal/trace/trace_test.go b/src/internal/trace/trace_test.go index 8c40e84a81..0aa297d762 100644 --- a/src/internal/trace/trace_test.go +++ b/src/internal/trace/trace_test.go @@ -618,7 +618,16 @@ func testTraceProg(t *testing.T, progName string, extra func(t *testing.T, trace tb := traceBuf.Bytes() // Test the trace and the parser. - testReader(t, bytes.NewReader(tb), version.Current, testtrace.ExpectSuccess()) + v := testtrace.NewValidator() + v.GoVersion = version.Current + if runtime.GOOS == "windows" && stress { + // Under stress mode we're constantly advancing trace generations. + // Windows' clock granularity is too coarse to guarantee monotonic + // timestamps for monotonic and wall clock time in this case, so + // skip the checks. + v.SkipClockSnapshotChecks() + } + testReader(t, bytes.NewReader(tb), v, testtrace.ExpectSuccess()) // Run some extra validation. if !t.Failed() && extra != nil { From 94e3caeec18dfb55c0a8ab6067904ae76248ec3f Mon Sep 17 00:00:00 2001 From: Julian Zhu Date: Tue, 20 May 2025 10:55:33 +0800 Subject: [PATCH 30/99] cmd/compile/internal: intrinsify publicationBarrier on mips64x This enables publicationBarrier to be used as an intrinsic on mips64x. Change-Id: I4030ea65086c37ee1dcc1675d0d5d40ef8683851 Reviewed-on: https://go-review.googlesource.com/c/go/+/674855 LUCI-TryBot-Result: Go LUCI Reviewed-by: David Chase Reviewed-by: Keith Randall Auto-Submit: Keith Randall Reviewed-by: Keith Randall --- src/cmd/compile/internal/mips64/ssa.go | 3 +++ src/cmd/compile/internal/ssa/_gen/MIPS64.rules | 3 +++ src/cmd/compile/internal/ssa/_gen/MIPS64Ops.go | 3 +++ src/cmd/compile/internal/ssa/opGen.go | 8 ++++++++ src/cmd/compile/internal/ssa/rewriteMIPS64.go | 3 +++ src/cmd/compile/internal/ssagen/intrinsics.go | 2 +- src/cmd/compile/internal/ssagen/intrinsics_test.go | 2 ++ 7 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/cmd/compile/internal/mips64/ssa.go b/src/cmd/compile/internal/mips64/ssa.go index 5b5edf622a..af94c16f6d 100644 --- a/src/cmd/compile/internal/mips64/ssa.go +++ b/src/cmd/compile/internal/mips64/ssa.go @@ -813,6 +813,9 @@ func ssaGenValue(s *ssagen.State, v *ssa.Value) { p := s.Prog(obj.AGETCALLERPC) p.To.Type = obj.TYPE_REG p.To.Reg = v.Reg() + case ssa.OpMIPS64LoweredPubBarrier: + // SYNC + s.Prog(v.Op.Asm()) case ssa.OpClobber, ssa.OpClobberReg: // TODO: implement for clobberdead experiment. Nop is ok for now. default: diff --git a/src/cmd/compile/internal/ssa/_gen/MIPS64.rules b/src/cmd/compile/internal/ssa/_gen/MIPS64.rules index cd82655ff3..8e484f4a3d 100644 --- a/src/cmd/compile/internal/ssa/_gen/MIPS64.rules +++ b/src/cmd/compile/internal/ssa/_gen/MIPS64.rules @@ -476,6 +476,9 @@ // Write barrier. (WB ...) => (LoweredWB ...) +// Publication barrier as intrinsic +(PubBarrier ...) => (LoweredPubBarrier ...) + (PanicBounds [kind] x y mem) && boundsABI(kind) == 0 => (LoweredPanicBoundsA [kind] x y mem) (PanicBounds [kind] x y mem) && boundsABI(kind) == 1 => (LoweredPanicBoundsB [kind] x y mem) (PanicBounds [kind] x y mem) && boundsABI(kind) == 2 => (LoweredPanicBoundsC [kind] x y mem) diff --git a/src/cmd/compile/internal/ssa/_gen/MIPS64Ops.go b/src/cmd/compile/internal/ssa/_gen/MIPS64Ops.go index 3d1abb16b6..6c04a1aea2 100644 --- a/src/cmd/compile/internal/ssa/_gen/MIPS64Ops.go +++ b/src/cmd/compile/internal/ssa/_gen/MIPS64Ops.go @@ -466,6 +466,9 @@ func init() { // Returns a pointer to a write barrier buffer in R25. {name: "LoweredWB", argLength: 1, reg: regInfo{clobbers: (callerSave &^ gpg) | buildReg("R31"), outputs: []regMask{buildReg("R25")}}, clobberFlags: true, aux: "Int64"}, + // Do data barrier. arg0=memorys + {name: "LoweredPubBarrier", argLength: 1, asm: "SYNC", hasSideEffects: true}, + // There are three of these functions so that they can have three different register inputs. // When we check 0 <= c <= cap (A), then 0 <= b <= c (B), then 0 <= a <= b (C), we want the // default registers to match so we don't need to copy registers around unnecessarily. diff --git a/src/cmd/compile/internal/ssa/opGen.go b/src/cmd/compile/internal/ssa/opGen.go index 37af79f9a3..b5eb747422 100644 --- a/src/cmd/compile/internal/ssa/opGen.go +++ b/src/cmd/compile/internal/ssa/opGen.go @@ -2207,6 +2207,7 @@ const ( OpMIPS64LoweredGetCallerSP OpMIPS64LoweredGetCallerPC OpMIPS64LoweredWB + OpMIPS64LoweredPubBarrier OpMIPS64LoweredPanicBoundsA OpMIPS64LoweredPanicBoundsB OpMIPS64LoweredPanicBoundsC @@ -29755,6 +29756,13 @@ var opcodeTable = [...]opInfo{ }, }, }, + { + name: "LoweredPubBarrier", + argLen: 1, + hasSideEffects: true, + asm: mips.ASYNC, + reg: regInfo{}, + }, { name: "LoweredPanicBoundsA", auxType: auxInt64, diff --git a/src/cmd/compile/internal/ssa/rewriteMIPS64.go b/src/cmd/compile/internal/ssa/rewriteMIPS64.go index 14b273f9aa..c30815cefb 100644 --- a/src/cmd/compile/internal/ssa/rewriteMIPS64.go +++ b/src/cmd/compile/internal/ssa/rewriteMIPS64.go @@ -502,6 +502,9 @@ func rewriteValueMIPS64(v *Value) bool { return true case OpPanicBounds: return rewriteValueMIPS64_OpPanicBounds(v) + case OpPubBarrier: + v.Op = OpMIPS64LoweredPubBarrier + return true case OpRotateLeft16: return rewriteValueMIPS64_OpRotateLeft16(v) case OpRotateLeft32: diff --git a/src/cmd/compile/internal/ssagen/intrinsics.go b/src/cmd/compile/internal/ssagen/intrinsics.go index 97798f5bcc..5ad528cc62 100644 --- a/src/cmd/compile/internal/ssagen/intrinsics.go +++ b/src/cmd/compile/internal/ssagen/intrinsics.go @@ -163,7 +163,7 @@ func initIntrinsics(cfg *intrinsicBuildConfig) { s.vars[memVar] = s.newValue1(ssa.OpPubBarrier, types.TypeMem, s.mem()) return nil }, - sys.ARM64, sys.Loong64, sys.PPC64, sys.RISCV64) + sys.ARM64, sys.Loong64, sys.MIPS64, sys.PPC64, sys.RISCV64) /******** internal/runtime/sys ********/ add("internal/runtime/sys", "GetCallerPC", diff --git a/src/cmd/compile/internal/ssagen/intrinsics_test.go b/src/cmd/compile/internal/ssagen/intrinsics_test.go index 6757e1e802..127f26acbf 100644 --- a/src/cmd/compile/internal/ssagen/intrinsics_test.go +++ b/src/cmd/compile/internal/ssagen/intrinsics_test.go @@ -631,6 +631,7 @@ var wantIntrinsics = map[testIntrinsicKey]struct{}{ {"mips64", "math/bits", "Sub"}: struct{}{}, {"mips64", "math/bits", "Sub64"}: struct{}{}, {"mips64", "runtime", "KeepAlive"}: struct{}{}, + {"mips64", "runtime", "publicationBarrier"}: struct{}{}, {"mips64", "runtime", "slicebytetostringtmp"}: struct{}{}, {"mips64", "sync", "runtime_LoadAcquintptr"}: struct{}{}, {"mips64", "sync", "runtime_StoreReluintptr"}: struct{}{}, @@ -718,6 +719,7 @@ var wantIntrinsics = map[testIntrinsicKey]struct{}{ {"mips64le", "math/bits", "Sub"}: struct{}{}, {"mips64le", "math/bits", "Sub64"}: struct{}{}, {"mips64le", "runtime", "KeepAlive"}: struct{}{}, + {"mips64le", "runtime", "publicationBarrier"}: struct{}{}, {"mips64le", "runtime", "slicebytetostringtmp"}: struct{}{}, {"mips64le", "sync", "runtime_LoadAcquintptr"}: struct{}{}, {"mips64le", "sync", "runtime_StoreReluintptr"}: struct{}{}, From 3a7a856951c69e6c279b4305030c5da6ca8af913 Mon Sep 17 00:00:00 2001 From: Mateusz Poliwczak Date: Tue, 20 May 2025 16:21:22 +0000 Subject: [PATCH 31/99] crypto/x509: disallow negative path length pathLenConstraint is restricted to unsigned integers. Also the -1 value of cert.MaxPathLength has a special meaning, so we shouldn't allow unmarshaling -1. BasicConstraints ::= SEQUENCE { cA BOOLEAN DEFAULT FALSE, pathLenConstraint INTEGER (0..MAX) OPTIONAL } Change-Id: I485a6aa7223127becc86c423e1ef9ed2fbd48209 GitHub-Last-Rev: 75a11b47b963ac383d1ad67dfc001648632a05f0 GitHub-Pull-Request: golang/go#60706 Reviewed-on: https://go-review.googlesource.com/c/go/+/502076 Reviewed-by: Roland Shoemaker LUCI-TryBot-Result: Go LUCI Auto-Submit: Roland Shoemaker Reviewed-by: David Chase --- src/crypto/x509/parser.go | 7 ++++-- src/crypto/x509/parser_test.go | 43 ++++++++++++++++++++++++++++++++++ src/crypto/x509/x509.go | 4 ++++ src/crypto/x509/x509_test.go | 25 ++++++++++++++++++++ 4 files changed, 77 insertions(+), 2 deletions(-) diff --git a/src/crypto/x509/parser.go b/src/crypto/x509/parser.go index b99c776f09..4abcc1b7b5 100644 --- a/src/crypto/x509/parser.go +++ b/src/crypto/x509/parser.go @@ -17,6 +17,7 @@ import ( "errors" "fmt" "internal/godebug" + "math" "math/big" "net" "net/url" @@ -373,14 +374,16 @@ func parseBasicConstraintsExtension(der cryptobyte.String) (bool, int, error) { return false, 0, errors.New("x509: invalid basic constraints") } } + maxPathLen := -1 if der.PeekASN1Tag(cryptobyte_asn1.INTEGER) { - if !der.ReadASN1Integer(&maxPathLen) { + var mpl uint + if !der.ReadASN1Integer(&mpl) || mpl > math.MaxInt { return false, 0, errors.New("x509: invalid basic constraints") } + maxPathLen = int(mpl) } - // TODO: map out.MaxPathLen to 0 if it has the -1 default value? (Issue 19285) return isCA, maxPathLen, nil } diff --git a/src/crypto/x509/parser_test.go b/src/crypto/x509/parser_test.go index e7c1d87bfa..3b9d9aed82 100644 --- a/src/crypto/x509/parser_test.go +++ b/src/crypto/x509/parser_test.go @@ -208,3 +208,46 @@ func TestParsePolicies(t *testing.T) { }) } } + +func TestParseCertificateNegativeMaxPathLength(t *testing.T) { + certs := []string{ + // Certificate with MaxPathLen set to -1. + ` +-----BEGIN CERTIFICATE----- +MIIByTCCATKgAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRURVNU +MB4XDTcwMDEwMTAwMTY0MFoXDTcwMDEwMjAzNDY0MFowDzENMAsGA1UEAxMEVEVT +VDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAsaHglFuSicTT8TKfipgsSi3N +Wb/TcvuAhanFF1VGB+vS95kO7yFqyfRgX3GgOwT0KlJVsVjPjghEGR9RGTSLqkTD +UFbiBgm8+VEPMOrUtIHIHXhl+ye44AkOEStxfz7gjN/EAS2h8ffPKhvDTHOlShKw +Y3LQlxR0LdeJXq3eSqUCAwEAAaM1MDMwEgYDVR0TAQH/BAgwBgEB/wIB/zAdBgNV +HQ4EFgQUrbrk0tqQAEsce8uYifP0BIVhuFAwDQYJKoZIhvcNAQELBQADgYEAIkhV +ZBj1ThT+eyh50XsoU570NUysTg3Nj/3lbkEolzdcE+wu0CPXvgxLRM6Y62u1ey82 +8d5VQHstzF4dXgc3W+O9UySa+CKdcHx/q7o7seOGXdysT0IJtAY3w66mFkuF7PIn +y9b7M5t6pmWjb7N0QqGuWeNqi4ZvS8gLKmVEgGY= +-----END CERTIFICATE----- +`, + // Certificate with MaxPathLen set to -2. + ` +-----BEGIN CERTIFICATE----- +MIIByTCCATKgAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRURVNU +MB4XDTcwMDEwMTAwMTY0MFoXDTcwMDEwMjAzNDY0MFowDzENMAsGA1UEAxMEVEVT +VDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAsaHglFuSicTT8TKfipgsSi3N +Wb/TcvuAhanFF1VGB+vS95kO7yFqyfRgX3GgOwT0KlJVsVjPjghEGR9RGTSLqkTD +UFbiBgm8+VEPMOrUtIHIHXhl+ye44AkOEStxfz7gjN/EAS2h8ffPKhvDTHOlShKw +Y3LQlxR0LdeJXq3eSqUCAwEAAaM1MDMwEgYDVR0TAQH/BAgwBgEB/wIB/jAdBgNV +HQ4EFgQUrbrk0tqQAEsce8uYifP0BIVhuFAwDQYJKoZIhvcNAQELBQADgYEAGjIr +YGQc7Ods+BuKck7p+vpAMONM8SLEuUtKorCP3ecsO51MoA4/niLbgMHaOGNHwzMp +ajg0zLbY0Dj6Ml0VZ+lS3rjgTEhYXc626eZkoQqgUzL1jhe3S0ZbSxxmHMBKjJFl +d5l1tRhScKu2NBgm74nYmJxJYgvuTA38wGhRrGU= +-----END CERTIFICATE----- +`, + } + + for _, cert := range certs { + b, _ := pem.Decode([]byte(cert)) + _, err := ParseCertificate(b.Bytes) + if err == nil || err.Error() != "x509: invalid basic constraints" { + t.Errorf(`ParseCertificate() = %v; want = "x509: invalid basic constraints"`, err) + } + } +} diff --git a/src/crypto/x509/x509.go b/src/crypto/x509/x509.go index 788b9aca9b..b2543d0727 100644 --- a/src/crypto/x509/x509.go +++ b/src/crypto/x509/x509.go @@ -1690,6 +1690,10 @@ func CreateCertificate(rand io.Reader, template, parent *Certificate, pub, priv return nil, errors.New("x509: serial number must be positive") } + if template.BasicConstraintsValid && template.MaxPathLen < -1 { + return nil, errors.New("x509: invalid MaxPathLen, must be greater or equal to -1") + } + if template.BasicConstraintsValid && !template.IsCA && template.MaxPathLen != -1 && (template.MaxPathLen != 0 || template.MaxPathLenZero) { return nil, errors.New("x509: only CAs are allowed to specify MaxPathLen") } diff --git a/src/crypto/x509/x509_test.go b/src/crypto/x509/x509_test.go index 7c8972eef4..98f3f7941c 100644 --- a/src/crypto/x509/x509_test.go +++ b/src/crypto/x509/x509_test.go @@ -4238,3 +4238,28 @@ func TestMessageSigner(t *testing.T) { t.Fatalf("CheckSignatureFrom failed: %s", err) } } + +func TestCreateCertificateNegativeMaxPathLength(t *testing.T) { + template := Certificate{ + SerialNumber: big.NewInt(1), + Subject: pkix.Name{CommonName: "TEST"}, + NotBefore: time.Unix(1000, 0), + NotAfter: time.Unix(100000, 0), + BasicConstraintsValid: true, + IsCA: true, + + // CreateCertificate treats -1 in the same way as: MaxPathLen == 0 && MaxPathLenZero == false. + MaxPathLen: -1, + } + + _, err := CreateCertificate(rand.Reader, &template, &template, rsaPrivateKey.Public(), rsaPrivateKey) + if err != nil { + t.Fatalf("CreateCertificate() unexpected error: %v", err) + } + + template.MaxPathLen = -2 + _, err = CreateCertificate(rand.Reader, &template, &template, rsaPrivateKey.Public(), rsaPrivateKey) + if err == nil || err.Error() != "x509: invalid MaxPathLen, must be greater or equal to -1" { + t.Fatalf(`CreateCertificate() = %v; want = "x509: invalid MaxPathLen, must be greater or equal to -1"`, err) + } +} From 3dbc775d605a9f364030e2815ee70bc3d70cd180 Mon Sep 17 00:00:00 2001 From: Julian Zhu Date: Wed, 21 May 2025 16:36:53 +0800 Subject: [PATCH 32/99] cmd/compile/internal: intrinsify publicationBarrier on mipsx This enables publicationBarrier to be used as an intrinsic on mipsx. Change-Id: Ic199f34b84b3058bcfab79aac8f2399ff21a97ce Reviewed-on: https://go-review.googlesource.com/c/go/+/674856 Reviewed-by: Keith Randall Auto-Submit: Keith Randall Reviewed-by: David Chase LUCI-TryBot-Result: Go LUCI Reviewed-by: Keith Randall --- src/cmd/compile/internal/mips/ssa.go | 3 +++ src/cmd/compile/internal/ssa/_gen/MIPS.rules | 3 +++ src/cmd/compile/internal/ssa/_gen/MIPSOps.go | 3 +++ src/cmd/compile/internal/ssa/opGen.go | 8 ++++++++ src/cmd/compile/internal/ssa/rewriteMIPS.go | 3 +++ src/cmd/compile/internal/ssagen/intrinsics.go | 2 +- src/cmd/compile/internal/ssagen/intrinsics_test.go | 2 ++ 7 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/cmd/compile/internal/mips/ssa.go b/src/cmd/compile/internal/mips/ssa.go index 4c7c8eafcd..9762554829 100644 --- a/src/cmd/compile/internal/mips/ssa.go +++ b/src/cmd/compile/internal/mips/ssa.go @@ -804,6 +804,9 @@ func ssaGenValue(s *ssagen.State, v *ssa.Value) { p := s.Prog(obj.AGETCALLERPC) p.To.Type = obj.TYPE_REG p.To.Reg = v.Reg() + case ssa.OpMIPSLoweredPubBarrier: + // SYNC + s.Prog(v.Op.Asm()) case ssa.OpClobber, ssa.OpClobberReg: // TODO: implement for clobberdead experiment. Nop is ok for now. default: diff --git a/src/cmd/compile/internal/ssa/_gen/MIPS.rules b/src/cmd/compile/internal/ssa/_gen/MIPS.rules index a4899ac24d..a9bac5fabe 100644 --- a/src/cmd/compile/internal/ssa/_gen/MIPS.rules +++ b/src/cmd/compile/internal/ssa/_gen/MIPS.rules @@ -420,6 +420,9 @@ // Write barrier. (WB ...) => (LoweredWB ...) +// Publication barrier as intrinsic +(PubBarrier ...) => (LoweredPubBarrier ...) + (PanicBounds [kind] x y mem) && boundsABI(kind) == 0 => (LoweredPanicBoundsA [kind] x y mem) (PanicBounds [kind] x y mem) && boundsABI(kind) == 1 => (LoweredPanicBoundsB [kind] x y mem) (PanicBounds [kind] x y mem) && boundsABI(kind) == 2 => (LoweredPanicBoundsC [kind] x y mem) diff --git a/src/cmd/compile/internal/ssa/_gen/MIPSOps.go b/src/cmd/compile/internal/ssa/_gen/MIPSOps.go index 48e06a4189..62c35ed49f 100644 --- a/src/cmd/compile/internal/ssa/_gen/MIPSOps.go +++ b/src/cmd/compile/internal/ssa/_gen/MIPSOps.go @@ -408,6 +408,9 @@ func init() { // Returns a pointer to a write barrier buffer in R25. {name: "LoweredWB", argLength: 1, reg: regInfo{clobbers: (callerSave &^ gpg) | buildReg("R31"), outputs: []regMask{buildReg("R25")}}, clobberFlags: true, aux: "Int64"}, + // Do data barrier. arg0=memorys + {name: "LoweredPubBarrier", argLength: 1, asm: "SYNC", hasSideEffects: true}, + // There are three of these functions so that they can have three different register inputs. // When we check 0 <= c <= cap (A), then 0 <= b <= c (B), then 0 <= a <= b (C), we want the // default registers to match so we don't need to copy registers around unnecessarily. diff --git a/src/cmd/compile/internal/ssa/opGen.go b/src/cmd/compile/internal/ssa/opGen.go index b5eb747422..90a38c783a 100644 --- a/src/cmd/compile/internal/ssa/opGen.go +++ b/src/cmd/compile/internal/ssa/opGen.go @@ -2076,6 +2076,7 @@ const ( OpMIPSLoweredGetCallerSP OpMIPSLoweredGetCallerPC OpMIPSLoweredWB + OpMIPSLoweredPubBarrier OpMIPSLoweredPanicBoundsA OpMIPSLoweredPanicBoundsB OpMIPSLoweredPanicBoundsC @@ -27990,6 +27991,13 @@ var opcodeTable = [...]opInfo{ }, }, }, + { + name: "LoweredPubBarrier", + argLen: 1, + hasSideEffects: true, + asm: mips.ASYNC, + reg: regInfo{}, + }, { name: "LoweredPanicBoundsA", auxType: auxInt64, diff --git a/src/cmd/compile/internal/ssa/rewriteMIPS.go b/src/cmd/compile/internal/ssa/rewriteMIPS.go index fe24f0fd0f..4c5edb8694 100644 --- a/src/cmd/compile/internal/ssa/rewriteMIPS.go +++ b/src/cmd/compile/internal/ssa/rewriteMIPS.go @@ -450,6 +450,9 @@ func rewriteValueMIPS(v *Value) bool { return rewriteValueMIPS_OpPanicBounds(v) case OpPanicExtend: return rewriteValueMIPS_OpPanicExtend(v) + case OpPubBarrier: + v.Op = OpMIPSLoweredPubBarrier + return true case OpRotateLeft16: return rewriteValueMIPS_OpRotateLeft16(v) case OpRotateLeft32: diff --git a/src/cmd/compile/internal/ssagen/intrinsics.go b/src/cmd/compile/internal/ssagen/intrinsics.go index 5ad528cc62..6b58e7e591 100644 --- a/src/cmd/compile/internal/ssagen/intrinsics.go +++ b/src/cmd/compile/internal/ssagen/intrinsics.go @@ -163,7 +163,7 @@ func initIntrinsics(cfg *intrinsicBuildConfig) { s.vars[memVar] = s.newValue1(ssa.OpPubBarrier, types.TypeMem, s.mem()) return nil }, - sys.ARM64, sys.Loong64, sys.MIPS64, sys.PPC64, sys.RISCV64) + sys.ARM64, sys.Loong64, sys.MIPS, sys.MIPS64, sys.PPC64, sys.RISCV64) /******** internal/runtime/sys ********/ add("internal/runtime/sys", "GetCallerPC", diff --git a/src/cmd/compile/internal/ssagen/intrinsics_test.go b/src/cmd/compile/internal/ssagen/intrinsics_test.go index 127f26acbf..0623c5f209 100644 --- a/src/cmd/compile/internal/ssagen/intrinsics_test.go +++ b/src/cmd/compile/internal/ssagen/intrinsics_test.go @@ -554,6 +554,7 @@ var wantIntrinsics = map[testIntrinsicKey]struct{}{ {"mips", "math/bits", "TrailingZeros64"}: struct{}{}, {"mips", "math/bits", "TrailingZeros8"}: struct{}{}, {"mips", "runtime", "KeepAlive"}: struct{}{}, + {"mips", "runtime", "publicationBarrier"}: struct{}{}, {"mips", "runtime", "slicebytetostringtmp"}: struct{}{}, {"mips", "sync", "runtime_LoadAcquintptr"}: struct{}{}, {"mips", "sync", "runtime_StoreReluintptr"}: struct{}{}, @@ -799,6 +800,7 @@ var wantIntrinsics = map[testIntrinsicKey]struct{}{ {"mipsle", "math/bits", "TrailingZeros64"}: struct{}{}, {"mipsle", "math/bits", "TrailingZeros8"}: struct{}{}, {"mipsle", "runtime", "KeepAlive"}: struct{}{}, + {"mipsle", "runtime", "publicationBarrier"}: struct{}{}, {"mipsle", "runtime", "slicebytetostringtmp"}: struct{}{}, {"mipsle", "sync", "runtime_LoadAcquintptr"}: struct{}{}, {"mipsle", "sync", "runtime_StoreReluintptr"}: struct{}{}, From 919d9858bc77592e161eea9180e0d4a95759124e Mon Sep 17 00:00:00 2001 From: Roland Shoemaker Date: Thu, 8 May 2025 10:27:34 -0700 Subject: [PATCH 33/99] crypto/internal/fips140/sha3: remove usages of WORD for s390x We support KIMD and KLMD now, paves the way for banning usage of BYTE and WORD instructions in crypto assembly. Change-Id: I0f93744663f23866b2269591db70389e0c77fa4a Reviewed-on: https://go-review.googlesource.com/c/go/+/671095 Reviewed-by: Daniel McCarney Reviewed-by: Filippo Valsorda LUCI-TryBot-Result: Go LUCI Reviewed-by: Dmitri Shuralyov --- src/crypto/internal/fips140/sha3/sha3_s390x.s | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/crypto/internal/fips140/sha3/sha3_s390x.s b/src/crypto/internal/fips140/sha3/sha3_s390x.s index c3944da628..0ce277160e 100644 --- a/src/crypto/internal/fips140/sha3/sha3_s390x.s +++ b/src/crypto/internal/fips140/sha3/sha3_s390x.s @@ -13,7 +13,7 @@ TEXT ·kimd(SB), NOFRAME|NOSPLIT, $0-40 LMG src+16(FP), R2, R3 // R2=base, R3=len continue: - WORD $0xB93E0002 // KIMD --, R2 + KIMD R0, R2 BVS continue // continue if interrupted MOVD $0, R0 // reset R0 for pre-go1.8 compilers RET @@ -26,7 +26,7 @@ TEXT ·klmd(SB), NOFRAME|NOSPLIT, $0-64 LMG src+40(FP), R4, R5 // R4=base, R5=len continue: - WORD $0xB93F0024 // KLMD R2, R4 + KLMD R2, R4 BVS continue // continue if interrupted MOVD $0, R0 // reset R0 for pre-go1.8 compilers RET From 272262750fe70b4c0694fbc0459caf4810b0336b Mon Sep 17 00:00:00 2001 From: Roland Shoemaker Date: Thu, 13 Mar 2025 17:04:30 -0700 Subject: [PATCH 34/99] crypto: drop pre-AVX2 SHA assembly implementations Drop the entire pre-AVX2 assembly implementation of SHA-1, SHA-256, and SHA-512. This also technically impacts the SHA-1 AVX2 implementation, since it previously called the pre-AVX2 implementation for the last block if the number of blocks wasn't a multiple of 2. Instead of keeping the entire implementation just for that case, we just call the generic implementation for the last block. This will be a little slower, but still seems like a win. Updates #69587 Change-Id: Id5234c42910d8c6ec6b8df700a721c0953dff02b Reviewed-on: https://go-review.googlesource.com/c/go/+/657716 Reviewed-by: Daniel McCarney Reviewed-by: David Chase Auto-Submit: Roland Shoemaker LUCI-TryBot-Result: Go LUCI Reviewed-by: Filippo Valsorda --- .../sha256/_asm/sha256block_amd64_asm.go | 194 - .../fips140/sha256/sha256block_amd64.go | 5 +- .../fips140/sha256/sha256block_amd64.s | 3486 ------------- .../sha512/_asm/sha512block_amd64_asm.go | 207 - .../fips140/sha512/sha512block_amd64.go | 5 +- .../fips140/sha512/sha512block_amd64.s | 4506 +---------------- src/crypto/sha1/_asm/sha1block_amd64_asm.go | 221 - src/crypto/sha1/sha1block_amd64.go | 18 +- src/crypto/sha1/sha1block_amd64.s | 1272 ----- 9 files changed, 15 insertions(+), 9899 deletions(-) diff --git a/src/crypto/internal/fips140/sha256/_asm/sha256block_amd64_asm.go b/src/crypto/internal/fips140/sha256/_asm/sha256block_amd64_asm.go index b26c2418e5..a3324673fd 100644 --- a/src/crypto/internal/fips140/sha256/_asm/sha256block_amd64_asm.go +++ b/src/crypto/internal/fips140/sha256/_asm/sha256block_amd64_asm.go @@ -8,8 +8,6 @@ import ( "os" . "github.com/mmcloughlin/avo/build" - . "github.com/mmcloughlin/avo/operand" - . "github.com/mmcloughlin/avo/reg" ) //go:generate go run . -out ../sha256block_amd64.s @@ -61,203 +59,11 @@ func main() { Package("crypto/internal/fips140/sha256") ConstraintExpr("!purego") - blockAMD64() blockAVX2() blockSHANI() Generate() } -// Wt = Mt; for 0 <= t <= 15 -func msgSchedule0(index int) { - MOVL(Mem{Base: SI}.Offset(index*4), EAX) - BSWAPL(EAX) - MOVL(EAX, Mem{Base: BP}.Offset(index*4)) -} - -// Wt = SIGMA1(Wt-2) + Wt-7 + SIGMA0(Wt-15) + Wt-16; for 16 <= t <= 63 -// -// SIGMA0(x) = ROTR(7,x) XOR ROTR(18,x) XOR SHR(3,x) -// SIGMA1(x) = ROTR(17,x) XOR ROTR(19,x) XOR SHR(10,x) -func msgSchedule1(index int) { - MOVL(Mem{Base: BP}.Offset((index-2)*4), EAX) - MOVL(EAX, ECX) - RORL(Imm(17), EAX) - MOVL(ECX, EDX) - RORL(Imm(19), ECX) - SHRL(Imm(10), EDX) - MOVL(Mem{Base: BP}.Offset((index-15)*4), EBX) - XORL(ECX, EAX) - MOVL(EBX, ECX) - XORL(EDX, EAX) - RORL(Imm(7), EBX) - MOVL(ECX, EDX) - SHRL(Imm(3), EDX) - RORL(Imm(18), ECX) - ADDL(Mem{Base: BP}.Offset((index-7)*4), EAX) - XORL(ECX, EBX) - XORL(EDX, EBX) - ADDL(Mem{Base: BP}.Offset((index-16)*4), EBX) - ADDL(EBX, EAX) - MOVL(EAX, Mem{Base: BP}.Offset((index)*4)) -} - -// Calculate T1 in AX - uses AX, CX and DX registers. -// h is also used as an accumulator. Wt is passed in AX. -// -// T1 = h + BIGSIGMA1(e) + Ch(e, f, g) + Kt + Wt -// BIGSIGMA1(x) = ROTR(6,x) XOR ROTR(11,x) XOR ROTR(25,x) -// Ch(x, y, z) = (x AND y) XOR (NOT x AND z) -func sha256T1(konst uint32, e, f, g, h GPPhysical) { - ADDL(EAX, h) - MOVL(e, EAX) - ADDL(U32(konst), h) - MOVL(e, ECX) - RORL(U8(6), EAX) - MOVL(e, EDX) - RORL(U8(11), ECX) - XORL(ECX, EAX) - MOVL(e, ECX) - RORL(U8(25), EDX) - ANDL(f, ECX) - XORL(EAX, EDX) - MOVL(e, EAX) - NOTL(EAX) - ADDL(EDX, h) - ANDL(g, EAX) - XORL(ECX, EAX) - ADDL(h, EAX) -} - -// Calculate T2 in BX - uses BX, CX, DX and DI registers. -// -// T2 = BIGSIGMA0(a) + Maj(a, b, c) -// BIGSIGMA0(x) = ROTR(2,x) XOR ROTR(13,x) XOR ROTR(22,x) -// Maj(x, y, z) = (x AND y) XOR (x AND z) XOR (y AND z) -func sha256T2(a, b, c GPPhysical) { - MOVL(a, EDI) - MOVL(c, EBX) - RORL(U8(2), EDI) - MOVL(a, EDX) - ANDL(b, EBX) - RORL(U8(13), EDX) - MOVL(a, ECX) - ANDL(c, ECX) - XORL(EDX, EDI) - XORL(ECX, EBX) - MOVL(a, EDX) - MOVL(b, ECX) - RORL(U8(22), EDX) - ANDL(a, ECX) - XORL(ECX, EBX) - XORL(EDX, EDI) - ADDL(EDI, EBX) -} - -// Calculate T1 and T2, then e = d + T1 and a = T1 + T2. -// The values for e and a are stored in d and h, ready for rotation. -func sha256Round(index int, konst uint32, a, b, c, d, e, f, g, h GPPhysical) { - sha256T1(konst, e, f, g, h) - sha256T2(a, b, c) - MOVL(EBX, h) - ADDL(EAX, d) - ADDL(EAX, h) -} - -func sha256Round0(index int, konst uint32, a, b, c, d, e, f, g, h GPPhysical) { - msgSchedule0(index) - sha256Round(index, konst, a, b, c, d, e, f, g, h) -} - -func sha256Round1(index int, konst uint32, a, b, c, d, e, f, g, h GPPhysical) { - msgSchedule1(index) - sha256Round(index, konst, a, b, c, d, e, f, g, h) -} - -func blockAMD64() { - Implement("blockAMD64") - AllocLocal(256 + 8) - - Load(Param("p").Base(), RSI) - Load(Param("p").Len(), RDX) - SHRQ(Imm(6), RDX) - SHLQ(Imm(6), RDX) - - // Return if p is empty - LEAQ(Mem{Base: RSI, Index: RDX, Scale: 1}, RDI) - MOVQ(RDI, Mem{Base: SP}.Offset(256)) - CMPQ(RSI, RDI) - JEQ(LabelRef("end")) - - BP := Mem{Base: BP} - Load(Param("dig"), RBP) - MOVL(BP.Offset(0*4), R8L) // a = H0 - MOVL(BP.Offset(1*4), R9L) // b = H1 - MOVL(BP.Offset(2*4), R10L) // c = H2 - MOVL(BP.Offset(3*4), R11L) // d = H3 - MOVL(BP.Offset(4*4), R12L) // e = H4 - MOVL(BP.Offset(5*4), R13L) // f = H5 - MOVL(BP.Offset(6*4), R14L) // g = H6 - MOVL(BP.Offset(7*4), R15L) // h = H7 - - loop() - end() -} - -func rotateRight(slice *[]GPPhysical) []GPPhysical { - n := len(*slice) - new := make([]GPPhysical, n) - for i, reg := range *slice { - new[(i+1)%n] = reg - } - return new -} - -func loop() { - Label("loop") - MOVQ(RSP, RBP) - - regs := []GPPhysical{R8L, R9L, R10L, R11L, R12L, R13L, R14L, R15L} - n := len(_K) - - for i := 0; i < 16; i++ { - sha256Round0(i, _K[i], regs[0], regs[1], regs[2], regs[3], regs[4], regs[5], regs[6], regs[7]) - regs = rotateRight(®s) - } - - for i := 16; i < n; i++ { - sha256Round1(i, _K[i], regs[0], regs[1], regs[2], regs[3], regs[4], regs[5], regs[6], regs[7]) - regs = rotateRight(®s) - } - - Load(Param("dig"), RBP) - BP := Mem{Base: BP} - ADDL(BP.Offset(0*4), R8L) // H0 = a + H0 - MOVL(R8L, BP.Offset(0*4)) - ADDL(BP.Offset(1*4), R9L) // H1 = b + H1 - MOVL(R9L, BP.Offset(1*4)) - ADDL(BP.Offset(2*4), R10L) // H2 = c + H2 - MOVL(R10L, BP.Offset(2*4)) - ADDL(BP.Offset(3*4), R11L) // H3 = d + H3 - MOVL(R11L, BP.Offset(3*4)) - ADDL(BP.Offset(4*4), R12L) // H4 = e + H4 - MOVL(R12L, BP.Offset(4*4)) - ADDL(BP.Offset(5*4), R13L) // H5 = f + H5 - MOVL(R13L, BP.Offset(5*4)) - ADDL(BP.Offset(6*4), R14L) // H6 = g + H6 - MOVL(R14L, BP.Offset(6*4)) - ADDL(BP.Offset(7*4), R15L) // H7 = h + H7 - MOVL(R15L, BP.Offset(7*4)) - - ADDQ(Imm(64), RSI) - CMPQ(RSI, Mem{Base: SP}.Offset(256)) - JB(LabelRef("loop")) -} - -func end() { - Label("end") - RET() -} - var _K = []uint32{ 0x428a2f98, 0x71374491, diff --git a/src/crypto/internal/fips140/sha256/sha256block_amd64.go b/src/crypto/internal/fips140/sha256/sha256block_amd64.go index 291a565b1c..0aabcd0792 100644 --- a/src/crypto/internal/fips140/sha256/sha256block_amd64.go +++ b/src/crypto/internal/fips140/sha256/sha256block_amd64.go @@ -19,9 +19,6 @@ func init() { impl.Register("sha256", "SHA-NI", &useSHANI) } -//go:noescape -func blockAMD64(dig *Digest, p []byte) - //go:noescape func blockAVX2(dig *Digest, p []byte) @@ -34,6 +31,6 @@ func block(dig *Digest, p []byte) { } else if useAVX2 { blockAVX2(dig, p) } else { - blockAMD64(dig, p) + blockGeneric(dig, p) } } diff --git a/src/crypto/internal/fips140/sha256/sha256block_amd64.s b/src/crypto/internal/fips140/sha256/sha256block_amd64.s index ce0ad4f887..d5ab42c819 100644 --- a/src/crypto/internal/fips140/sha256/sha256block_amd64.s +++ b/src/crypto/internal/fips140/sha256/sha256block_amd64.s @@ -4,3492 +4,6 @@ #include "textflag.h" -// func blockAMD64(dig *Digest, p []byte) -TEXT ·blockAMD64(SB), $264-32 - MOVQ p_base+8(FP), SI - MOVQ p_len+16(FP), DX - SHRQ $0x06, DX - SHLQ $0x06, DX - LEAQ (SI)(DX*1), DI - MOVQ DI, 256(SP) - CMPQ SI, DI - JEQ end - MOVQ dig+0(FP), BP - MOVL (BP), R8 - MOVL 4(BP), R9 - MOVL 8(BP), R10 - MOVL 12(BP), R11 - MOVL 16(BP), R12 - MOVL 20(BP), R13 - MOVL 24(BP), R14 - MOVL 28(BP), R15 - -loop: - MOVQ SP, BP - MOVL (SI), AX - BSWAPL AX - MOVL AX, (BP) - ADDL AX, R15 - MOVL R12, AX - ADDL $0x428a2f98, R15 - MOVL R12, CX - RORL $0x06, AX - MOVL R12, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R12, CX - RORL $0x19, DX - ANDL R13, CX - XORL AX, DX - MOVL R12, AX - NOTL AX - ADDL DX, R15 - ANDL R14, AX - XORL CX, AX - ADDL R15, AX - MOVL R8, DI - MOVL R10, BX - RORL $0x02, DI - MOVL R8, DX - ANDL R9, BX - RORL $0x0d, DX - MOVL R8, CX - ANDL R10, CX - XORL DX, DI - XORL CX, BX - MOVL R8, DX - MOVL R9, CX - RORL $0x16, DX - ANDL R8, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R15 - ADDL AX, R11 - ADDL AX, R15 - MOVL 4(SI), AX - BSWAPL AX - MOVL AX, 4(BP) - ADDL AX, R14 - MOVL R11, AX - ADDL $0x71374491, R14 - MOVL R11, CX - RORL $0x06, AX - MOVL R11, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R11, CX - RORL $0x19, DX - ANDL R12, CX - XORL AX, DX - MOVL R11, AX - NOTL AX - ADDL DX, R14 - ANDL R13, AX - XORL CX, AX - ADDL R14, AX - MOVL R15, DI - MOVL R9, BX - RORL $0x02, DI - MOVL R15, DX - ANDL R8, BX - RORL $0x0d, DX - MOVL R15, CX - ANDL R9, CX - XORL DX, DI - XORL CX, BX - MOVL R15, DX - MOVL R8, CX - RORL $0x16, DX - ANDL R15, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R14 - ADDL AX, R10 - ADDL AX, R14 - MOVL 8(SI), AX - BSWAPL AX - MOVL AX, 8(BP) - ADDL AX, R13 - MOVL R10, AX - ADDL $0xb5c0fbcf, R13 - MOVL R10, CX - RORL $0x06, AX - MOVL R10, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R10, CX - RORL $0x19, DX - ANDL R11, CX - XORL AX, DX - MOVL R10, AX - NOTL AX - ADDL DX, R13 - ANDL R12, AX - XORL CX, AX - ADDL R13, AX - MOVL R14, DI - MOVL R8, BX - RORL $0x02, DI - MOVL R14, DX - ANDL R15, BX - RORL $0x0d, DX - MOVL R14, CX - ANDL R8, CX - XORL DX, DI - XORL CX, BX - MOVL R14, DX - MOVL R15, CX - RORL $0x16, DX - ANDL R14, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R13 - ADDL AX, R9 - ADDL AX, R13 - MOVL 12(SI), AX - BSWAPL AX - MOVL AX, 12(BP) - ADDL AX, R12 - MOVL R9, AX - ADDL $0xe9b5dba5, R12 - MOVL R9, CX - RORL $0x06, AX - MOVL R9, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R9, CX - RORL $0x19, DX - ANDL R10, CX - XORL AX, DX - MOVL R9, AX - NOTL AX - ADDL DX, R12 - ANDL R11, AX - XORL CX, AX - ADDL R12, AX - MOVL R13, DI - MOVL R15, BX - RORL $0x02, DI - MOVL R13, DX - ANDL R14, BX - RORL $0x0d, DX - MOVL R13, CX - ANDL R15, CX - XORL DX, DI - XORL CX, BX - MOVL R13, DX - MOVL R14, CX - RORL $0x16, DX - ANDL R13, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R12 - ADDL AX, R8 - ADDL AX, R12 - MOVL 16(SI), AX - BSWAPL AX - MOVL AX, 16(BP) - ADDL AX, R11 - MOVL R8, AX - ADDL $0x3956c25b, R11 - MOVL R8, CX - RORL $0x06, AX - MOVL R8, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R8, CX - RORL $0x19, DX - ANDL R9, CX - XORL AX, DX - MOVL R8, AX - NOTL AX - ADDL DX, R11 - ANDL R10, AX - XORL CX, AX - ADDL R11, AX - MOVL R12, DI - MOVL R14, BX - RORL $0x02, DI - MOVL R12, DX - ANDL R13, BX - RORL $0x0d, DX - MOVL R12, CX - ANDL R14, CX - XORL DX, DI - XORL CX, BX - MOVL R12, DX - MOVL R13, CX - RORL $0x16, DX - ANDL R12, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R11 - ADDL AX, R15 - ADDL AX, R11 - MOVL 20(SI), AX - BSWAPL AX - MOVL AX, 20(BP) - ADDL AX, R10 - MOVL R15, AX - ADDL $0x59f111f1, R10 - MOVL R15, CX - RORL $0x06, AX - MOVL R15, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R15, CX - RORL $0x19, DX - ANDL R8, CX - XORL AX, DX - MOVL R15, AX - NOTL AX - ADDL DX, R10 - ANDL R9, AX - XORL CX, AX - ADDL R10, AX - MOVL R11, DI - MOVL R13, BX - RORL $0x02, DI - MOVL R11, DX - ANDL R12, BX - RORL $0x0d, DX - MOVL R11, CX - ANDL R13, CX - XORL DX, DI - XORL CX, BX - MOVL R11, DX - MOVL R12, CX - RORL $0x16, DX - ANDL R11, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R10 - ADDL AX, R14 - ADDL AX, R10 - MOVL 24(SI), AX - BSWAPL AX - MOVL AX, 24(BP) - ADDL AX, R9 - MOVL R14, AX - ADDL $0x923f82a4, R9 - MOVL R14, CX - RORL $0x06, AX - MOVL R14, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R14, CX - RORL $0x19, DX - ANDL R15, CX - XORL AX, DX - MOVL R14, AX - NOTL AX - ADDL DX, R9 - ANDL R8, AX - XORL CX, AX - ADDL R9, AX - MOVL R10, DI - MOVL R12, BX - RORL $0x02, DI - MOVL R10, DX - ANDL R11, BX - RORL $0x0d, DX - MOVL R10, CX - ANDL R12, CX - XORL DX, DI - XORL CX, BX - MOVL R10, DX - MOVL R11, CX - RORL $0x16, DX - ANDL R10, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R9 - ADDL AX, R13 - ADDL AX, R9 - MOVL 28(SI), AX - BSWAPL AX - MOVL AX, 28(BP) - ADDL AX, R8 - MOVL R13, AX - ADDL $0xab1c5ed5, R8 - MOVL R13, CX - RORL $0x06, AX - MOVL R13, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R13, CX - RORL $0x19, DX - ANDL R14, CX - XORL AX, DX - MOVL R13, AX - NOTL AX - ADDL DX, R8 - ANDL R15, AX - XORL CX, AX - ADDL R8, AX - MOVL R9, DI - MOVL R11, BX - RORL $0x02, DI - MOVL R9, DX - ANDL R10, BX - RORL $0x0d, DX - MOVL R9, CX - ANDL R11, CX - XORL DX, DI - XORL CX, BX - MOVL R9, DX - MOVL R10, CX - RORL $0x16, DX - ANDL R9, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R8 - ADDL AX, R12 - ADDL AX, R8 - MOVL 32(SI), AX - BSWAPL AX - MOVL AX, 32(BP) - ADDL AX, R15 - MOVL R12, AX - ADDL $0xd807aa98, R15 - MOVL R12, CX - RORL $0x06, AX - MOVL R12, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R12, CX - RORL $0x19, DX - ANDL R13, CX - XORL AX, DX - MOVL R12, AX - NOTL AX - ADDL DX, R15 - ANDL R14, AX - XORL CX, AX - ADDL R15, AX - MOVL R8, DI - MOVL R10, BX - RORL $0x02, DI - MOVL R8, DX - ANDL R9, BX - RORL $0x0d, DX - MOVL R8, CX - ANDL R10, CX - XORL DX, DI - XORL CX, BX - MOVL R8, DX - MOVL R9, CX - RORL $0x16, DX - ANDL R8, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R15 - ADDL AX, R11 - ADDL AX, R15 - MOVL 36(SI), AX - BSWAPL AX - MOVL AX, 36(BP) - ADDL AX, R14 - MOVL R11, AX - ADDL $0x12835b01, R14 - MOVL R11, CX - RORL $0x06, AX - MOVL R11, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R11, CX - RORL $0x19, DX - ANDL R12, CX - XORL AX, DX - MOVL R11, AX - NOTL AX - ADDL DX, R14 - ANDL R13, AX - XORL CX, AX - ADDL R14, AX - MOVL R15, DI - MOVL R9, BX - RORL $0x02, DI - MOVL R15, DX - ANDL R8, BX - RORL $0x0d, DX - MOVL R15, CX - ANDL R9, CX - XORL DX, DI - XORL CX, BX - MOVL R15, DX - MOVL R8, CX - RORL $0x16, DX - ANDL R15, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R14 - ADDL AX, R10 - ADDL AX, R14 - MOVL 40(SI), AX - BSWAPL AX - MOVL AX, 40(BP) - ADDL AX, R13 - MOVL R10, AX - ADDL $0x243185be, R13 - MOVL R10, CX - RORL $0x06, AX - MOVL R10, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R10, CX - RORL $0x19, DX - ANDL R11, CX - XORL AX, DX - MOVL R10, AX - NOTL AX - ADDL DX, R13 - ANDL R12, AX - XORL CX, AX - ADDL R13, AX - MOVL R14, DI - MOVL R8, BX - RORL $0x02, DI - MOVL R14, DX - ANDL R15, BX - RORL $0x0d, DX - MOVL R14, CX - ANDL R8, CX - XORL DX, DI - XORL CX, BX - MOVL R14, DX - MOVL R15, CX - RORL $0x16, DX - ANDL R14, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R13 - ADDL AX, R9 - ADDL AX, R13 - MOVL 44(SI), AX - BSWAPL AX - MOVL AX, 44(BP) - ADDL AX, R12 - MOVL R9, AX - ADDL $0x550c7dc3, R12 - MOVL R9, CX - RORL $0x06, AX - MOVL R9, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R9, CX - RORL $0x19, DX - ANDL R10, CX - XORL AX, DX - MOVL R9, AX - NOTL AX - ADDL DX, R12 - ANDL R11, AX - XORL CX, AX - ADDL R12, AX - MOVL R13, DI - MOVL R15, BX - RORL $0x02, DI - MOVL R13, DX - ANDL R14, BX - RORL $0x0d, DX - MOVL R13, CX - ANDL R15, CX - XORL DX, DI - XORL CX, BX - MOVL R13, DX - MOVL R14, CX - RORL $0x16, DX - ANDL R13, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R12 - ADDL AX, R8 - ADDL AX, R12 - MOVL 48(SI), AX - BSWAPL AX - MOVL AX, 48(BP) - ADDL AX, R11 - MOVL R8, AX - ADDL $0x72be5d74, R11 - MOVL R8, CX - RORL $0x06, AX - MOVL R8, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R8, CX - RORL $0x19, DX - ANDL R9, CX - XORL AX, DX - MOVL R8, AX - NOTL AX - ADDL DX, R11 - ANDL R10, AX - XORL CX, AX - ADDL R11, AX - MOVL R12, DI - MOVL R14, BX - RORL $0x02, DI - MOVL R12, DX - ANDL R13, BX - RORL $0x0d, DX - MOVL R12, CX - ANDL R14, CX - XORL DX, DI - XORL CX, BX - MOVL R12, DX - MOVL R13, CX - RORL $0x16, DX - ANDL R12, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R11 - ADDL AX, R15 - ADDL AX, R11 - MOVL 52(SI), AX - BSWAPL AX - MOVL AX, 52(BP) - ADDL AX, R10 - MOVL R15, AX - ADDL $0x80deb1fe, R10 - MOVL R15, CX - RORL $0x06, AX - MOVL R15, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R15, CX - RORL $0x19, DX - ANDL R8, CX - XORL AX, DX - MOVL R15, AX - NOTL AX - ADDL DX, R10 - ANDL R9, AX - XORL CX, AX - ADDL R10, AX - MOVL R11, DI - MOVL R13, BX - RORL $0x02, DI - MOVL R11, DX - ANDL R12, BX - RORL $0x0d, DX - MOVL R11, CX - ANDL R13, CX - XORL DX, DI - XORL CX, BX - MOVL R11, DX - MOVL R12, CX - RORL $0x16, DX - ANDL R11, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R10 - ADDL AX, R14 - ADDL AX, R10 - MOVL 56(SI), AX - BSWAPL AX - MOVL AX, 56(BP) - ADDL AX, R9 - MOVL R14, AX - ADDL $0x9bdc06a7, R9 - MOVL R14, CX - RORL $0x06, AX - MOVL R14, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R14, CX - RORL $0x19, DX - ANDL R15, CX - XORL AX, DX - MOVL R14, AX - NOTL AX - ADDL DX, R9 - ANDL R8, AX - XORL CX, AX - ADDL R9, AX - MOVL R10, DI - MOVL R12, BX - RORL $0x02, DI - MOVL R10, DX - ANDL R11, BX - RORL $0x0d, DX - MOVL R10, CX - ANDL R12, CX - XORL DX, DI - XORL CX, BX - MOVL R10, DX - MOVL R11, CX - RORL $0x16, DX - ANDL R10, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R9 - ADDL AX, R13 - ADDL AX, R9 - MOVL 60(SI), AX - BSWAPL AX - MOVL AX, 60(BP) - ADDL AX, R8 - MOVL R13, AX - ADDL $0xc19bf174, R8 - MOVL R13, CX - RORL $0x06, AX - MOVL R13, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R13, CX - RORL $0x19, DX - ANDL R14, CX - XORL AX, DX - MOVL R13, AX - NOTL AX - ADDL DX, R8 - ANDL R15, AX - XORL CX, AX - ADDL R8, AX - MOVL R9, DI - MOVL R11, BX - RORL $0x02, DI - MOVL R9, DX - ANDL R10, BX - RORL $0x0d, DX - MOVL R9, CX - ANDL R11, CX - XORL DX, DI - XORL CX, BX - MOVL R9, DX - MOVL R10, CX - RORL $0x16, DX - ANDL R9, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R8 - ADDL AX, R12 - ADDL AX, R8 - MOVL 56(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 4(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 36(BP), AX - XORL CX, BX - XORL DX, BX - ADDL (BP), BX - ADDL BX, AX - MOVL AX, 64(BP) - ADDL AX, R15 - MOVL R12, AX - ADDL $0xe49b69c1, R15 - MOVL R12, CX - RORL $0x06, AX - MOVL R12, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R12, CX - RORL $0x19, DX - ANDL R13, CX - XORL AX, DX - MOVL R12, AX - NOTL AX - ADDL DX, R15 - ANDL R14, AX - XORL CX, AX - ADDL R15, AX - MOVL R8, DI - MOVL R10, BX - RORL $0x02, DI - MOVL R8, DX - ANDL R9, BX - RORL $0x0d, DX - MOVL R8, CX - ANDL R10, CX - XORL DX, DI - XORL CX, BX - MOVL R8, DX - MOVL R9, CX - RORL $0x16, DX - ANDL R8, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R15 - ADDL AX, R11 - ADDL AX, R15 - MOVL 60(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 8(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 40(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 4(BP), BX - ADDL BX, AX - MOVL AX, 68(BP) - ADDL AX, R14 - MOVL R11, AX - ADDL $0xefbe4786, R14 - MOVL R11, CX - RORL $0x06, AX - MOVL R11, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R11, CX - RORL $0x19, DX - ANDL R12, CX - XORL AX, DX - MOVL R11, AX - NOTL AX - ADDL DX, R14 - ANDL R13, AX - XORL CX, AX - ADDL R14, AX - MOVL R15, DI - MOVL R9, BX - RORL $0x02, DI - MOVL R15, DX - ANDL R8, BX - RORL $0x0d, DX - MOVL R15, CX - ANDL R9, CX - XORL DX, DI - XORL CX, BX - MOVL R15, DX - MOVL R8, CX - RORL $0x16, DX - ANDL R15, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R14 - ADDL AX, R10 - ADDL AX, R14 - MOVL 64(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 12(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 44(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 8(BP), BX - ADDL BX, AX - MOVL AX, 72(BP) - ADDL AX, R13 - MOVL R10, AX - ADDL $0x0fc19dc6, R13 - MOVL R10, CX - RORL $0x06, AX - MOVL R10, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R10, CX - RORL $0x19, DX - ANDL R11, CX - XORL AX, DX - MOVL R10, AX - NOTL AX - ADDL DX, R13 - ANDL R12, AX - XORL CX, AX - ADDL R13, AX - MOVL R14, DI - MOVL R8, BX - RORL $0x02, DI - MOVL R14, DX - ANDL R15, BX - RORL $0x0d, DX - MOVL R14, CX - ANDL R8, CX - XORL DX, DI - XORL CX, BX - MOVL R14, DX - MOVL R15, CX - RORL $0x16, DX - ANDL R14, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R13 - ADDL AX, R9 - ADDL AX, R13 - MOVL 68(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 16(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 48(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 12(BP), BX - ADDL BX, AX - MOVL AX, 76(BP) - ADDL AX, R12 - MOVL R9, AX - ADDL $0x240ca1cc, R12 - MOVL R9, CX - RORL $0x06, AX - MOVL R9, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R9, CX - RORL $0x19, DX - ANDL R10, CX - XORL AX, DX - MOVL R9, AX - NOTL AX - ADDL DX, R12 - ANDL R11, AX - XORL CX, AX - ADDL R12, AX - MOVL R13, DI - MOVL R15, BX - RORL $0x02, DI - MOVL R13, DX - ANDL R14, BX - RORL $0x0d, DX - MOVL R13, CX - ANDL R15, CX - XORL DX, DI - XORL CX, BX - MOVL R13, DX - MOVL R14, CX - RORL $0x16, DX - ANDL R13, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R12 - ADDL AX, R8 - ADDL AX, R12 - MOVL 72(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 20(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 52(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 16(BP), BX - ADDL BX, AX - MOVL AX, 80(BP) - ADDL AX, R11 - MOVL R8, AX - ADDL $0x2de92c6f, R11 - MOVL R8, CX - RORL $0x06, AX - MOVL R8, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R8, CX - RORL $0x19, DX - ANDL R9, CX - XORL AX, DX - MOVL R8, AX - NOTL AX - ADDL DX, R11 - ANDL R10, AX - XORL CX, AX - ADDL R11, AX - MOVL R12, DI - MOVL R14, BX - RORL $0x02, DI - MOVL R12, DX - ANDL R13, BX - RORL $0x0d, DX - MOVL R12, CX - ANDL R14, CX - XORL DX, DI - XORL CX, BX - MOVL R12, DX - MOVL R13, CX - RORL $0x16, DX - ANDL R12, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R11 - ADDL AX, R15 - ADDL AX, R11 - MOVL 76(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 24(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 56(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 20(BP), BX - ADDL BX, AX - MOVL AX, 84(BP) - ADDL AX, R10 - MOVL R15, AX - ADDL $0x4a7484aa, R10 - MOVL R15, CX - RORL $0x06, AX - MOVL R15, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R15, CX - RORL $0x19, DX - ANDL R8, CX - XORL AX, DX - MOVL R15, AX - NOTL AX - ADDL DX, R10 - ANDL R9, AX - XORL CX, AX - ADDL R10, AX - MOVL R11, DI - MOVL R13, BX - RORL $0x02, DI - MOVL R11, DX - ANDL R12, BX - RORL $0x0d, DX - MOVL R11, CX - ANDL R13, CX - XORL DX, DI - XORL CX, BX - MOVL R11, DX - MOVL R12, CX - RORL $0x16, DX - ANDL R11, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R10 - ADDL AX, R14 - ADDL AX, R10 - MOVL 80(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 28(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 60(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 24(BP), BX - ADDL BX, AX - MOVL AX, 88(BP) - ADDL AX, R9 - MOVL R14, AX - ADDL $0x5cb0a9dc, R9 - MOVL R14, CX - RORL $0x06, AX - MOVL R14, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R14, CX - RORL $0x19, DX - ANDL R15, CX - XORL AX, DX - MOVL R14, AX - NOTL AX - ADDL DX, R9 - ANDL R8, AX - XORL CX, AX - ADDL R9, AX - MOVL R10, DI - MOVL R12, BX - RORL $0x02, DI - MOVL R10, DX - ANDL R11, BX - RORL $0x0d, DX - MOVL R10, CX - ANDL R12, CX - XORL DX, DI - XORL CX, BX - MOVL R10, DX - MOVL R11, CX - RORL $0x16, DX - ANDL R10, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R9 - ADDL AX, R13 - ADDL AX, R9 - MOVL 84(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 32(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 64(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 28(BP), BX - ADDL BX, AX - MOVL AX, 92(BP) - ADDL AX, R8 - MOVL R13, AX - ADDL $0x76f988da, R8 - MOVL R13, CX - RORL $0x06, AX - MOVL R13, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R13, CX - RORL $0x19, DX - ANDL R14, CX - XORL AX, DX - MOVL R13, AX - NOTL AX - ADDL DX, R8 - ANDL R15, AX - XORL CX, AX - ADDL R8, AX - MOVL R9, DI - MOVL R11, BX - RORL $0x02, DI - MOVL R9, DX - ANDL R10, BX - RORL $0x0d, DX - MOVL R9, CX - ANDL R11, CX - XORL DX, DI - XORL CX, BX - MOVL R9, DX - MOVL R10, CX - RORL $0x16, DX - ANDL R9, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R8 - ADDL AX, R12 - ADDL AX, R8 - MOVL 88(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 36(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 68(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 32(BP), BX - ADDL BX, AX - MOVL AX, 96(BP) - ADDL AX, R15 - MOVL R12, AX - ADDL $0x983e5152, R15 - MOVL R12, CX - RORL $0x06, AX - MOVL R12, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R12, CX - RORL $0x19, DX - ANDL R13, CX - XORL AX, DX - MOVL R12, AX - NOTL AX - ADDL DX, R15 - ANDL R14, AX - XORL CX, AX - ADDL R15, AX - MOVL R8, DI - MOVL R10, BX - RORL $0x02, DI - MOVL R8, DX - ANDL R9, BX - RORL $0x0d, DX - MOVL R8, CX - ANDL R10, CX - XORL DX, DI - XORL CX, BX - MOVL R8, DX - MOVL R9, CX - RORL $0x16, DX - ANDL R8, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R15 - ADDL AX, R11 - ADDL AX, R15 - MOVL 92(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 40(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 72(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 36(BP), BX - ADDL BX, AX - MOVL AX, 100(BP) - ADDL AX, R14 - MOVL R11, AX - ADDL $0xa831c66d, R14 - MOVL R11, CX - RORL $0x06, AX - MOVL R11, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R11, CX - RORL $0x19, DX - ANDL R12, CX - XORL AX, DX - MOVL R11, AX - NOTL AX - ADDL DX, R14 - ANDL R13, AX - XORL CX, AX - ADDL R14, AX - MOVL R15, DI - MOVL R9, BX - RORL $0x02, DI - MOVL R15, DX - ANDL R8, BX - RORL $0x0d, DX - MOVL R15, CX - ANDL R9, CX - XORL DX, DI - XORL CX, BX - MOVL R15, DX - MOVL R8, CX - RORL $0x16, DX - ANDL R15, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R14 - ADDL AX, R10 - ADDL AX, R14 - MOVL 96(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 44(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 76(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 40(BP), BX - ADDL BX, AX - MOVL AX, 104(BP) - ADDL AX, R13 - MOVL R10, AX - ADDL $0xb00327c8, R13 - MOVL R10, CX - RORL $0x06, AX - MOVL R10, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R10, CX - RORL $0x19, DX - ANDL R11, CX - XORL AX, DX - MOVL R10, AX - NOTL AX - ADDL DX, R13 - ANDL R12, AX - XORL CX, AX - ADDL R13, AX - MOVL R14, DI - MOVL R8, BX - RORL $0x02, DI - MOVL R14, DX - ANDL R15, BX - RORL $0x0d, DX - MOVL R14, CX - ANDL R8, CX - XORL DX, DI - XORL CX, BX - MOVL R14, DX - MOVL R15, CX - RORL $0x16, DX - ANDL R14, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R13 - ADDL AX, R9 - ADDL AX, R13 - MOVL 100(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 48(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 80(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 44(BP), BX - ADDL BX, AX - MOVL AX, 108(BP) - ADDL AX, R12 - MOVL R9, AX - ADDL $0xbf597fc7, R12 - MOVL R9, CX - RORL $0x06, AX - MOVL R9, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R9, CX - RORL $0x19, DX - ANDL R10, CX - XORL AX, DX - MOVL R9, AX - NOTL AX - ADDL DX, R12 - ANDL R11, AX - XORL CX, AX - ADDL R12, AX - MOVL R13, DI - MOVL R15, BX - RORL $0x02, DI - MOVL R13, DX - ANDL R14, BX - RORL $0x0d, DX - MOVL R13, CX - ANDL R15, CX - XORL DX, DI - XORL CX, BX - MOVL R13, DX - MOVL R14, CX - RORL $0x16, DX - ANDL R13, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R12 - ADDL AX, R8 - ADDL AX, R12 - MOVL 104(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 52(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 84(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 48(BP), BX - ADDL BX, AX - MOVL AX, 112(BP) - ADDL AX, R11 - MOVL R8, AX - ADDL $0xc6e00bf3, R11 - MOVL R8, CX - RORL $0x06, AX - MOVL R8, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R8, CX - RORL $0x19, DX - ANDL R9, CX - XORL AX, DX - MOVL R8, AX - NOTL AX - ADDL DX, R11 - ANDL R10, AX - XORL CX, AX - ADDL R11, AX - MOVL R12, DI - MOVL R14, BX - RORL $0x02, DI - MOVL R12, DX - ANDL R13, BX - RORL $0x0d, DX - MOVL R12, CX - ANDL R14, CX - XORL DX, DI - XORL CX, BX - MOVL R12, DX - MOVL R13, CX - RORL $0x16, DX - ANDL R12, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R11 - ADDL AX, R15 - ADDL AX, R11 - MOVL 108(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 56(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 88(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 52(BP), BX - ADDL BX, AX - MOVL AX, 116(BP) - ADDL AX, R10 - MOVL R15, AX - ADDL $0xd5a79147, R10 - MOVL R15, CX - RORL $0x06, AX - MOVL R15, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R15, CX - RORL $0x19, DX - ANDL R8, CX - XORL AX, DX - MOVL R15, AX - NOTL AX - ADDL DX, R10 - ANDL R9, AX - XORL CX, AX - ADDL R10, AX - MOVL R11, DI - MOVL R13, BX - RORL $0x02, DI - MOVL R11, DX - ANDL R12, BX - RORL $0x0d, DX - MOVL R11, CX - ANDL R13, CX - XORL DX, DI - XORL CX, BX - MOVL R11, DX - MOVL R12, CX - RORL $0x16, DX - ANDL R11, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R10 - ADDL AX, R14 - ADDL AX, R10 - MOVL 112(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 60(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 92(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 56(BP), BX - ADDL BX, AX - MOVL AX, 120(BP) - ADDL AX, R9 - MOVL R14, AX - ADDL $0x06ca6351, R9 - MOVL R14, CX - RORL $0x06, AX - MOVL R14, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R14, CX - RORL $0x19, DX - ANDL R15, CX - XORL AX, DX - MOVL R14, AX - NOTL AX - ADDL DX, R9 - ANDL R8, AX - XORL CX, AX - ADDL R9, AX - MOVL R10, DI - MOVL R12, BX - RORL $0x02, DI - MOVL R10, DX - ANDL R11, BX - RORL $0x0d, DX - MOVL R10, CX - ANDL R12, CX - XORL DX, DI - XORL CX, BX - MOVL R10, DX - MOVL R11, CX - RORL $0x16, DX - ANDL R10, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R9 - ADDL AX, R13 - ADDL AX, R9 - MOVL 116(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 64(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 96(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 60(BP), BX - ADDL BX, AX - MOVL AX, 124(BP) - ADDL AX, R8 - MOVL R13, AX - ADDL $0x14292967, R8 - MOVL R13, CX - RORL $0x06, AX - MOVL R13, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R13, CX - RORL $0x19, DX - ANDL R14, CX - XORL AX, DX - MOVL R13, AX - NOTL AX - ADDL DX, R8 - ANDL R15, AX - XORL CX, AX - ADDL R8, AX - MOVL R9, DI - MOVL R11, BX - RORL $0x02, DI - MOVL R9, DX - ANDL R10, BX - RORL $0x0d, DX - MOVL R9, CX - ANDL R11, CX - XORL DX, DI - XORL CX, BX - MOVL R9, DX - MOVL R10, CX - RORL $0x16, DX - ANDL R9, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R8 - ADDL AX, R12 - ADDL AX, R8 - MOVL 120(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 68(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 100(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 64(BP), BX - ADDL BX, AX - MOVL AX, 128(BP) - ADDL AX, R15 - MOVL R12, AX - ADDL $0x27b70a85, R15 - MOVL R12, CX - RORL $0x06, AX - MOVL R12, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R12, CX - RORL $0x19, DX - ANDL R13, CX - XORL AX, DX - MOVL R12, AX - NOTL AX - ADDL DX, R15 - ANDL R14, AX - XORL CX, AX - ADDL R15, AX - MOVL R8, DI - MOVL R10, BX - RORL $0x02, DI - MOVL R8, DX - ANDL R9, BX - RORL $0x0d, DX - MOVL R8, CX - ANDL R10, CX - XORL DX, DI - XORL CX, BX - MOVL R8, DX - MOVL R9, CX - RORL $0x16, DX - ANDL R8, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R15 - ADDL AX, R11 - ADDL AX, R15 - MOVL 124(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 72(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 104(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 68(BP), BX - ADDL BX, AX - MOVL AX, 132(BP) - ADDL AX, R14 - MOVL R11, AX - ADDL $0x2e1b2138, R14 - MOVL R11, CX - RORL $0x06, AX - MOVL R11, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R11, CX - RORL $0x19, DX - ANDL R12, CX - XORL AX, DX - MOVL R11, AX - NOTL AX - ADDL DX, R14 - ANDL R13, AX - XORL CX, AX - ADDL R14, AX - MOVL R15, DI - MOVL R9, BX - RORL $0x02, DI - MOVL R15, DX - ANDL R8, BX - RORL $0x0d, DX - MOVL R15, CX - ANDL R9, CX - XORL DX, DI - XORL CX, BX - MOVL R15, DX - MOVL R8, CX - RORL $0x16, DX - ANDL R15, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R14 - ADDL AX, R10 - ADDL AX, R14 - MOVL 128(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 76(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 108(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 72(BP), BX - ADDL BX, AX - MOVL AX, 136(BP) - ADDL AX, R13 - MOVL R10, AX - ADDL $0x4d2c6dfc, R13 - MOVL R10, CX - RORL $0x06, AX - MOVL R10, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R10, CX - RORL $0x19, DX - ANDL R11, CX - XORL AX, DX - MOVL R10, AX - NOTL AX - ADDL DX, R13 - ANDL R12, AX - XORL CX, AX - ADDL R13, AX - MOVL R14, DI - MOVL R8, BX - RORL $0x02, DI - MOVL R14, DX - ANDL R15, BX - RORL $0x0d, DX - MOVL R14, CX - ANDL R8, CX - XORL DX, DI - XORL CX, BX - MOVL R14, DX - MOVL R15, CX - RORL $0x16, DX - ANDL R14, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R13 - ADDL AX, R9 - ADDL AX, R13 - MOVL 132(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 80(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 112(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 76(BP), BX - ADDL BX, AX - MOVL AX, 140(BP) - ADDL AX, R12 - MOVL R9, AX - ADDL $0x53380d13, R12 - MOVL R9, CX - RORL $0x06, AX - MOVL R9, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R9, CX - RORL $0x19, DX - ANDL R10, CX - XORL AX, DX - MOVL R9, AX - NOTL AX - ADDL DX, R12 - ANDL R11, AX - XORL CX, AX - ADDL R12, AX - MOVL R13, DI - MOVL R15, BX - RORL $0x02, DI - MOVL R13, DX - ANDL R14, BX - RORL $0x0d, DX - MOVL R13, CX - ANDL R15, CX - XORL DX, DI - XORL CX, BX - MOVL R13, DX - MOVL R14, CX - RORL $0x16, DX - ANDL R13, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R12 - ADDL AX, R8 - ADDL AX, R12 - MOVL 136(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 84(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 116(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 80(BP), BX - ADDL BX, AX - MOVL AX, 144(BP) - ADDL AX, R11 - MOVL R8, AX - ADDL $0x650a7354, R11 - MOVL R8, CX - RORL $0x06, AX - MOVL R8, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R8, CX - RORL $0x19, DX - ANDL R9, CX - XORL AX, DX - MOVL R8, AX - NOTL AX - ADDL DX, R11 - ANDL R10, AX - XORL CX, AX - ADDL R11, AX - MOVL R12, DI - MOVL R14, BX - RORL $0x02, DI - MOVL R12, DX - ANDL R13, BX - RORL $0x0d, DX - MOVL R12, CX - ANDL R14, CX - XORL DX, DI - XORL CX, BX - MOVL R12, DX - MOVL R13, CX - RORL $0x16, DX - ANDL R12, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R11 - ADDL AX, R15 - ADDL AX, R11 - MOVL 140(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 88(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 120(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 84(BP), BX - ADDL BX, AX - MOVL AX, 148(BP) - ADDL AX, R10 - MOVL R15, AX - ADDL $0x766a0abb, R10 - MOVL R15, CX - RORL $0x06, AX - MOVL R15, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R15, CX - RORL $0x19, DX - ANDL R8, CX - XORL AX, DX - MOVL R15, AX - NOTL AX - ADDL DX, R10 - ANDL R9, AX - XORL CX, AX - ADDL R10, AX - MOVL R11, DI - MOVL R13, BX - RORL $0x02, DI - MOVL R11, DX - ANDL R12, BX - RORL $0x0d, DX - MOVL R11, CX - ANDL R13, CX - XORL DX, DI - XORL CX, BX - MOVL R11, DX - MOVL R12, CX - RORL $0x16, DX - ANDL R11, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R10 - ADDL AX, R14 - ADDL AX, R10 - MOVL 144(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 92(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 124(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 88(BP), BX - ADDL BX, AX - MOVL AX, 152(BP) - ADDL AX, R9 - MOVL R14, AX - ADDL $0x81c2c92e, R9 - MOVL R14, CX - RORL $0x06, AX - MOVL R14, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R14, CX - RORL $0x19, DX - ANDL R15, CX - XORL AX, DX - MOVL R14, AX - NOTL AX - ADDL DX, R9 - ANDL R8, AX - XORL CX, AX - ADDL R9, AX - MOVL R10, DI - MOVL R12, BX - RORL $0x02, DI - MOVL R10, DX - ANDL R11, BX - RORL $0x0d, DX - MOVL R10, CX - ANDL R12, CX - XORL DX, DI - XORL CX, BX - MOVL R10, DX - MOVL R11, CX - RORL $0x16, DX - ANDL R10, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R9 - ADDL AX, R13 - ADDL AX, R9 - MOVL 148(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 96(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 128(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 92(BP), BX - ADDL BX, AX - MOVL AX, 156(BP) - ADDL AX, R8 - MOVL R13, AX - ADDL $0x92722c85, R8 - MOVL R13, CX - RORL $0x06, AX - MOVL R13, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R13, CX - RORL $0x19, DX - ANDL R14, CX - XORL AX, DX - MOVL R13, AX - NOTL AX - ADDL DX, R8 - ANDL R15, AX - XORL CX, AX - ADDL R8, AX - MOVL R9, DI - MOVL R11, BX - RORL $0x02, DI - MOVL R9, DX - ANDL R10, BX - RORL $0x0d, DX - MOVL R9, CX - ANDL R11, CX - XORL DX, DI - XORL CX, BX - MOVL R9, DX - MOVL R10, CX - RORL $0x16, DX - ANDL R9, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R8 - ADDL AX, R12 - ADDL AX, R8 - MOVL 152(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 100(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 132(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 96(BP), BX - ADDL BX, AX - MOVL AX, 160(BP) - ADDL AX, R15 - MOVL R12, AX - ADDL $0xa2bfe8a1, R15 - MOVL R12, CX - RORL $0x06, AX - MOVL R12, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R12, CX - RORL $0x19, DX - ANDL R13, CX - XORL AX, DX - MOVL R12, AX - NOTL AX - ADDL DX, R15 - ANDL R14, AX - XORL CX, AX - ADDL R15, AX - MOVL R8, DI - MOVL R10, BX - RORL $0x02, DI - MOVL R8, DX - ANDL R9, BX - RORL $0x0d, DX - MOVL R8, CX - ANDL R10, CX - XORL DX, DI - XORL CX, BX - MOVL R8, DX - MOVL R9, CX - RORL $0x16, DX - ANDL R8, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R15 - ADDL AX, R11 - ADDL AX, R15 - MOVL 156(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 104(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 136(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 100(BP), BX - ADDL BX, AX - MOVL AX, 164(BP) - ADDL AX, R14 - MOVL R11, AX - ADDL $0xa81a664b, R14 - MOVL R11, CX - RORL $0x06, AX - MOVL R11, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R11, CX - RORL $0x19, DX - ANDL R12, CX - XORL AX, DX - MOVL R11, AX - NOTL AX - ADDL DX, R14 - ANDL R13, AX - XORL CX, AX - ADDL R14, AX - MOVL R15, DI - MOVL R9, BX - RORL $0x02, DI - MOVL R15, DX - ANDL R8, BX - RORL $0x0d, DX - MOVL R15, CX - ANDL R9, CX - XORL DX, DI - XORL CX, BX - MOVL R15, DX - MOVL R8, CX - RORL $0x16, DX - ANDL R15, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R14 - ADDL AX, R10 - ADDL AX, R14 - MOVL 160(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 108(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 140(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 104(BP), BX - ADDL BX, AX - MOVL AX, 168(BP) - ADDL AX, R13 - MOVL R10, AX - ADDL $0xc24b8b70, R13 - MOVL R10, CX - RORL $0x06, AX - MOVL R10, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R10, CX - RORL $0x19, DX - ANDL R11, CX - XORL AX, DX - MOVL R10, AX - NOTL AX - ADDL DX, R13 - ANDL R12, AX - XORL CX, AX - ADDL R13, AX - MOVL R14, DI - MOVL R8, BX - RORL $0x02, DI - MOVL R14, DX - ANDL R15, BX - RORL $0x0d, DX - MOVL R14, CX - ANDL R8, CX - XORL DX, DI - XORL CX, BX - MOVL R14, DX - MOVL R15, CX - RORL $0x16, DX - ANDL R14, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R13 - ADDL AX, R9 - ADDL AX, R13 - MOVL 164(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 112(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 144(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 108(BP), BX - ADDL BX, AX - MOVL AX, 172(BP) - ADDL AX, R12 - MOVL R9, AX - ADDL $0xc76c51a3, R12 - MOVL R9, CX - RORL $0x06, AX - MOVL R9, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R9, CX - RORL $0x19, DX - ANDL R10, CX - XORL AX, DX - MOVL R9, AX - NOTL AX - ADDL DX, R12 - ANDL R11, AX - XORL CX, AX - ADDL R12, AX - MOVL R13, DI - MOVL R15, BX - RORL $0x02, DI - MOVL R13, DX - ANDL R14, BX - RORL $0x0d, DX - MOVL R13, CX - ANDL R15, CX - XORL DX, DI - XORL CX, BX - MOVL R13, DX - MOVL R14, CX - RORL $0x16, DX - ANDL R13, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R12 - ADDL AX, R8 - ADDL AX, R12 - MOVL 168(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 116(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 148(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 112(BP), BX - ADDL BX, AX - MOVL AX, 176(BP) - ADDL AX, R11 - MOVL R8, AX - ADDL $0xd192e819, R11 - MOVL R8, CX - RORL $0x06, AX - MOVL R8, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R8, CX - RORL $0x19, DX - ANDL R9, CX - XORL AX, DX - MOVL R8, AX - NOTL AX - ADDL DX, R11 - ANDL R10, AX - XORL CX, AX - ADDL R11, AX - MOVL R12, DI - MOVL R14, BX - RORL $0x02, DI - MOVL R12, DX - ANDL R13, BX - RORL $0x0d, DX - MOVL R12, CX - ANDL R14, CX - XORL DX, DI - XORL CX, BX - MOVL R12, DX - MOVL R13, CX - RORL $0x16, DX - ANDL R12, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R11 - ADDL AX, R15 - ADDL AX, R11 - MOVL 172(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 120(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 152(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 116(BP), BX - ADDL BX, AX - MOVL AX, 180(BP) - ADDL AX, R10 - MOVL R15, AX - ADDL $0xd6990624, R10 - MOVL R15, CX - RORL $0x06, AX - MOVL R15, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R15, CX - RORL $0x19, DX - ANDL R8, CX - XORL AX, DX - MOVL R15, AX - NOTL AX - ADDL DX, R10 - ANDL R9, AX - XORL CX, AX - ADDL R10, AX - MOVL R11, DI - MOVL R13, BX - RORL $0x02, DI - MOVL R11, DX - ANDL R12, BX - RORL $0x0d, DX - MOVL R11, CX - ANDL R13, CX - XORL DX, DI - XORL CX, BX - MOVL R11, DX - MOVL R12, CX - RORL $0x16, DX - ANDL R11, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R10 - ADDL AX, R14 - ADDL AX, R10 - MOVL 176(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 124(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 156(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 120(BP), BX - ADDL BX, AX - MOVL AX, 184(BP) - ADDL AX, R9 - MOVL R14, AX - ADDL $0xf40e3585, R9 - MOVL R14, CX - RORL $0x06, AX - MOVL R14, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R14, CX - RORL $0x19, DX - ANDL R15, CX - XORL AX, DX - MOVL R14, AX - NOTL AX - ADDL DX, R9 - ANDL R8, AX - XORL CX, AX - ADDL R9, AX - MOVL R10, DI - MOVL R12, BX - RORL $0x02, DI - MOVL R10, DX - ANDL R11, BX - RORL $0x0d, DX - MOVL R10, CX - ANDL R12, CX - XORL DX, DI - XORL CX, BX - MOVL R10, DX - MOVL R11, CX - RORL $0x16, DX - ANDL R10, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R9 - ADDL AX, R13 - ADDL AX, R9 - MOVL 180(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 128(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 160(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 124(BP), BX - ADDL BX, AX - MOVL AX, 188(BP) - ADDL AX, R8 - MOVL R13, AX - ADDL $0x106aa070, R8 - MOVL R13, CX - RORL $0x06, AX - MOVL R13, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R13, CX - RORL $0x19, DX - ANDL R14, CX - XORL AX, DX - MOVL R13, AX - NOTL AX - ADDL DX, R8 - ANDL R15, AX - XORL CX, AX - ADDL R8, AX - MOVL R9, DI - MOVL R11, BX - RORL $0x02, DI - MOVL R9, DX - ANDL R10, BX - RORL $0x0d, DX - MOVL R9, CX - ANDL R11, CX - XORL DX, DI - XORL CX, BX - MOVL R9, DX - MOVL R10, CX - RORL $0x16, DX - ANDL R9, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R8 - ADDL AX, R12 - ADDL AX, R8 - MOVL 184(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 132(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 164(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 128(BP), BX - ADDL BX, AX - MOVL AX, 192(BP) - ADDL AX, R15 - MOVL R12, AX - ADDL $0x19a4c116, R15 - MOVL R12, CX - RORL $0x06, AX - MOVL R12, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R12, CX - RORL $0x19, DX - ANDL R13, CX - XORL AX, DX - MOVL R12, AX - NOTL AX - ADDL DX, R15 - ANDL R14, AX - XORL CX, AX - ADDL R15, AX - MOVL R8, DI - MOVL R10, BX - RORL $0x02, DI - MOVL R8, DX - ANDL R9, BX - RORL $0x0d, DX - MOVL R8, CX - ANDL R10, CX - XORL DX, DI - XORL CX, BX - MOVL R8, DX - MOVL R9, CX - RORL $0x16, DX - ANDL R8, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R15 - ADDL AX, R11 - ADDL AX, R15 - MOVL 188(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 136(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 168(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 132(BP), BX - ADDL BX, AX - MOVL AX, 196(BP) - ADDL AX, R14 - MOVL R11, AX - ADDL $0x1e376c08, R14 - MOVL R11, CX - RORL $0x06, AX - MOVL R11, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R11, CX - RORL $0x19, DX - ANDL R12, CX - XORL AX, DX - MOVL R11, AX - NOTL AX - ADDL DX, R14 - ANDL R13, AX - XORL CX, AX - ADDL R14, AX - MOVL R15, DI - MOVL R9, BX - RORL $0x02, DI - MOVL R15, DX - ANDL R8, BX - RORL $0x0d, DX - MOVL R15, CX - ANDL R9, CX - XORL DX, DI - XORL CX, BX - MOVL R15, DX - MOVL R8, CX - RORL $0x16, DX - ANDL R15, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R14 - ADDL AX, R10 - ADDL AX, R14 - MOVL 192(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 140(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 172(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 136(BP), BX - ADDL BX, AX - MOVL AX, 200(BP) - ADDL AX, R13 - MOVL R10, AX - ADDL $0x2748774c, R13 - MOVL R10, CX - RORL $0x06, AX - MOVL R10, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R10, CX - RORL $0x19, DX - ANDL R11, CX - XORL AX, DX - MOVL R10, AX - NOTL AX - ADDL DX, R13 - ANDL R12, AX - XORL CX, AX - ADDL R13, AX - MOVL R14, DI - MOVL R8, BX - RORL $0x02, DI - MOVL R14, DX - ANDL R15, BX - RORL $0x0d, DX - MOVL R14, CX - ANDL R8, CX - XORL DX, DI - XORL CX, BX - MOVL R14, DX - MOVL R15, CX - RORL $0x16, DX - ANDL R14, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R13 - ADDL AX, R9 - ADDL AX, R13 - MOVL 196(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 144(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 176(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 140(BP), BX - ADDL BX, AX - MOVL AX, 204(BP) - ADDL AX, R12 - MOVL R9, AX - ADDL $0x34b0bcb5, R12 - MOVL R9, CX - RORL $0x06, AX - MOVL R9, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R9, CX - RORL $0x19, DX - ANDL R10, CX - XORL AX, DX - MOVL R9, AX - NOTL AX - ADDL DX, R12 - ANDL R11, AX - XORL CX, AX - ADDL R12, AX - MOVL R13, DI - MOVL R15, BX - RORL $0x02, DI - MOVL R13, DX - ANDL R14, BX - RORL $0x0d, DX - MOVL R13, CX - ANDL R15, CX - XORL DX, DI - XORL CX, BX - MOVL R13, DX - MOVL R14, CX - RORL $0x16, DX - ANDL R13, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R12 - ADDL AX, R8 - ADDL AX, R12 - MOVL 200(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 148(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 180(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 144(BP), BX - ADDL BX, AX - MOVL AX, 208(BP) - ADDL AX, R11 - MOVL R8, AX - ADDL $0x391c0cb3, R11 - MOVL R8, CX - RORL $0x06, AX - MOVL R8, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R8, CX - RORL $0x19, DX - ANDL R9, CX - XORL AX, DX - MOVL R8, AX - NOTL AX - ADDL DX, R11 - ANDL R10, AX - XORL CX, AX - ADDL R11, AX - MOVL R12, DI - MOVL R14, BX - RORL $0x02, DI - MOVL R12, DX - ANDL R13, BX - RORL $0x0d, DX - MOVL R12, CX - ANDL R14, CX - XORL DX, DI - XORL CX, BX - MOVL R12, DX - MOVL R13, CX - RORL $0x16, DX - ANDL R12, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R11 - ADDL AX, R15 - ADDL AX, R11 - MOVL 204(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 152(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 184(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 148(BP), BX - ADDL BX, AX - MOVL AX, 212(BP) - ADDL AX, R10 - MOVL R15, AX - ADDL $0x4ed8aa4a, R10 - MOVL R15, CX - RORL $0x06, AX - MOVL R15, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R15, CX - RORL $0x19, DX - ANDL R8, CX - XORL AX, DX - MOVL R15, AX - NOTL AX - ADDL DX, R10 - ANDL R9, AX - XORL CX, AX - ADDL R10, AX - MOVL R11, DI - MOVL R13, BX - RORL $0x02, DI - MOVL R11, DX - ANDL R12, BX - RORL $0x0d, DX - MOVL R11, CX - ANDL R13, CX - XORL DX, DI - XORL CX, BX - MOVL R11, DX - MOVL R12, CX - RORL $0x16, DX - ANDL R11, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R10 - ADDL AX, R14 - ADDL AX, R10 - MOVL 208(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 156(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 188(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 152(BP), BX - ADDL BX, AX - MOVL AX, 216(BP) - ADDL AX, R9 - MOVL R14, AX - ADDL $0x5b9cca4f, R9 - MOVL R14, CX - RORL $0x06, AX - MOVL R14, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R14, CX - RORL $0x19, DX - ANDL R15, CX - XORL AX, DX - MOVL R14, AX - NOTL AX - ADDL DX, R9 - ANDL R8, AX - XORL CX, AX - ADDL R9, AX - MOVL R10, DI - MOVL R12, BX - RORL $0x02, DI - MOVL R10, DX - ANDL R11, BX - RORL $0x0d, DX - MOVL R10, CX - ANDL R12, CX - XORL DX, DI - XORL CX, BX - MOVL R10, DX - MOVL R11, CX - RORL $0x16, DX - ANDL R10, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R9 - ADDL AX, R13 - ADDL AX, R9 - MOVL 212(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 160(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 192(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 156(BP), BX - ADDL BX, AX - MOVL AX, 220(BP) - ADDL AX, R8 - MOVL R13, AX - ADDL $0x682e6ff3, R8 - MOVL R13, CX - RORL $0x06, AX - MOVL R13, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R13, CX - RORL $0x19, DX - ANDL R14, CX - XORL AX, DX - MOVL R13, AX - NOTL AX - ADDL DX, R8 - ANDL R15, AX - XORL CX, AX - ADDL R8, AX - MOVL R9, DI - MOVL R11, BX - RORL $0x02, DI - MOVL R9, DX - ANDL R10, BX - RORL $0x0d, DX - MOVL R9, CX - ANDL R11, CX - XORL DX, DI - XORL CX, BX - MOVL R9, DX - MOVL R10, CX - RORL $0x16, DX - ANDL R9, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R8 - ADDL AX, R12 - ADDL AX, R8 - MOVL 216(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 164(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 196(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 160(BP), BX - ADDL BX, AX - MOVL AX, 224(BP) - ADDL AX, R15 - MOVL R12, AX - ADDL $0x748f82ee, R15 - MOVL R12, CX - RORL $0x06, AX - MOVL R12, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R12, CX - RORL $0x19, DX - ANDL R13, CX - XORL AX, DX - MOVL R12, AX - NOTL AX - ADDL DX, R15 - ANDL R14, AX - XORL CX, AX - ADDL R15, AX - MOVL R8, DI - MOVL R10, BX - RORL $0x02, DI - MOVL R8, DX - ANDL R9, BX - RORL $0x0d, DX - MOVL R8, CX - ANDL R10, CX - XORL DX, DI - XORL CX, BX - MOVL R8, DX - MOVL R9, CX - RORL $0x16, DX - ANDL R8, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R15 - ADDL AX, R11 - ADDL AX, R15 - MOVL 220(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 168(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 200(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 164(BP), BX - ADDL BX, AX - MOVL AX, 228(BP) - ADDL AX, R14 - MOVL R11, AX - ADDL $0x78a5636f, R14 - MOVL R11, CX - RORL $0x06, AX - MOVL R11, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R11, CX - RORL $0x19, DX - ANDL R12, CX - XORL AX, DX - MOVL R11, AX - NOTL AX - ADDL DX, R14 - ANDL R13, AX - XORL CX, AX - ADDL R14, AX - MOVL R15, DI - MOVL R9, BX - RORL $0x02, DI - MOVL R15, DX - ANDL R8, BX - RORL $0x0d, DX - MOVL R15, CX - ANDL R9, CX - XORL DX, DI - XORL CX, BX - MOVL R15, DX - MOVL R8, CX - RORL $0x16, DX - ANDL R15, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R14 - ADDL AX, R10 - ADDL AX, R14 - MOVL 224(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 172(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 204(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 168(BP), BX - ADDL BX, AX - MOVL AX, 232(BP) - ADDL AX, R13 - MOVL R10, AX - ADDL $0x84c87814, R13 - MOVL R10, CX - RORL $0x06, AX - MOVL R10, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R10, CX - RORL $0x19, DX - ANDL R11, CX - XORL AX, DX - MOVL R10, AX - NOTL AX - ADDL DX, R13 - ANDL R12, AX - XORL CX, AX - ADDL R13, AX - MOVL R14, DI - MOVL R8, BX - RORL $0x02, DI - MOVL R14, DX - ANDL R15, BX - RORL $0x0d, DX - MOVL R14, CX - ANDL R8, CX - XORL DX, DI - XORL CX, BX - MOVL R14, DX - MOVL R15, CX - RORL $0x16, DX - ANDL R14, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R13 - ADDL AX, R9 - ADDL AX, R13 - MOVL 228(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 176(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 208(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 172(BP), BX - ADDL BX, AX - MOVL AX, 236(BP) - ADDL AX, R12 - MOVL R9, AX - ADDL $0x8cc70208, R12 - MOVL R9, CX - RORL $0x06, AX - MOVL R9, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R9, CX - RORL $0x19, DX - ANDL R10, CX - XORL AX, DX - MOVL R9, AX - NOTL AX - ADDL DX, R12 - ANDL R11, AX - XORL CX, AX - ADDL R12, AX - MOVL R13, DI - MOVL R15, BX - RORL $0x02, DI - MOVL R13, DX - ANDL R14, BX - RORL $0x0d, DX - MOVL R13, CX - ANDL R15, CX - XORL DX, DI - XORL CX, BX - MOVL R13, DX - MOVL R14, CX - RORL $0x16, DX - ANDL R13, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R12 - ADDL AX, R8 - ADDL AX, R12 - MOVL 232(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 180(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 212(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 176(BP), BX - ADDL BX, AX - MOVL AX, 240(BP) - ADDL AX, R11 - MOVL R8, AX - ADDL $0x90befffa, R11 - MOVL R8, CX - RORL $0x06, AX - MOVL R8, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R8, CX - RORL $0x19, DX - ANDL R9, CX - XORL AX, DX - MOVL R8, AX - NOTL AX - ADDL DX, R11 - ANDL R10, AX - XORL CX, AX - ADDL R11, AX - MOVL R12, DI - MOVL R14, BX - RORL $0x02, DI - MOVL R12, DX - ANDL R13, BX - RORL $0x0d, DX - MOVL R12, CX - ANDL R14, CX - XORL DX, DI - XORL CX, BX - MOVL R12, DX - MOVL R13, CX - RORL $0x16, DX - ANDL R12, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R11 - ADDL AX, R15 - ADDL AX, R11 - MOVL 236(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 184(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 216(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 180(BP), BX - ADDL BX, AX - MOVL AX, 244(BP) - ADDL AX, R10 - MOVL R15, AX - ADDL $0xa4506ceb, R10 - MOVL R15, CX - RORL $0x06, AX - MOVL R15, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R15, CX - RORL $0x19, DX - ANDL R8, CX - XORL AX, DX - MOVL R15, AX - NOTL AX - ADDL DX, R10 - ANDL R9, AX - XORL CX, AX - ADDL R10, AX - MOVL R11, DI - MOVL R13, BX - RORL $0x02, DI - MOVL R11, DX - ANDL R12, BX - RORL $0x0d, DX - MOVL R11, CX - ANDL R13, CX - XORL DX, DI - XORL CX, BX - MOVL R11, DX - MOVL R12, CX - RORL $0x16, DX - ANDL R11, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R10 - ADDL AX, R14 - ADDL AX, R10 - MOVL 240(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 188(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 220(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 184(BP), BX - ADDL BX, AX - MOVL AX, 248(BP) - ADDL AX, R9 - MOVL R14, AX - ADDL $0xbef9a3f7, R9 - MOVL R14, CX - RORL $0x06, AX - MOVL R14, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R14, CX - RORL $0x19, DX - ANDL R15, CX - XORL AX, DX - MOVL R14, AX - NOTL AX - ADDL DX, R9 - ANDL R8, AX - XORL CX, AX - ADDL R9, AX - MOVL R10, DI - MOVL R12, BX - RORL $0x02, DI - MOVL R10, DX - ANDL R11, BX - RORL $0x0d, DX - MOVL R10, CX - ANDL R12, CX - XORL DX, DI - XORL CX, BX - MOVL R10, DX - MOVL R11, CX - RORL $0x16, DX - ANDL R10, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R9 - ADDL AX, R13 - ADDL AX, R9 - MOVL 244(BP), AX - MOVL AX, CX - RORL $0x11, AX - MOVL CX, DX - RORL $0x13, CX - SHRL $0x0a, DX - MOVL 192(BP), BX - XORL CX, AX - MOVL BX, CX - XORL DX, AX - RORL $0x07, BX - MOVL CX, DX - SHRL $0x03, DX - RORL $0x12, CX - ADDL 224(BP), AX - XORL CX, BX - XORL DX, BX - ADDL 188(BP), BX - ADDL BX, AX - MOVL AX, 252(BP) - ADDL AX, R8 - MOVL R13, AX - ADDL $0xc67178f2, R8 - MOVL R13, CX - RORL $0x06, AX - MOVL R13, DX - RORL $0x0b, CX - XORL CX, AX - MOVL R13, CX - RORL $0x19, DX - ANDL R14, CX - XORL AX, DX - MOVL R13, AX - NOTL AX - ADDL DX, R8 - ANDL R15, AX - XORL CX, AX - ADDL R8, AX - MOVL R9, DI - MOVL R11, BX - RORL $0x02, DI - MOVL R9, DX - ANDL R10, BX - RORL $0x0d, DX - MOVL R9, CX - ANDL R11, CX - XORL DX, DI - XORL CX, BX - MOVL R9, DX - MOVL R10, CX - RORL $0x16, DX - ANDL R9, CX - XORL CX, BX - XORL DX, DI - ADDL DI, BX - MOVL BX, R8 - ADDL AX, R12 - ADDL AX, R8 - MOVQ dig+0(FP), BP - ADDL (BP), R8 - MOVL R8, (BP) - ADDL 4(BP), R9 - MOVL R9, 4(BP) - ADDL 8(BP), R10 - MOVL R10, 8(BP) - ADDL 12(BP), R11 - MOVL R11, 12(BP) - ADDL 16(BP), R12 - MOVL R12, 16(BP) - ADDL 20(BP), R13 - MOVL R13, 20(BP) - ADDL 24(BP), R14 - MOVL R14, 24(BP) - ADDL 28(BP), R15 - MOVL R15, 28(BP) - ADDQ $0x40, SI - CMPQ SI, 256(SP) - JB loop - -end: - RET - // func blockAVX2(dig *Digest, p []byte) // Requires: AVX, AVX2, BMI2 TEXT ·blockAVX2(SB), $536-32 diff --git a/src/crypto/internal/fips140/sha512/_asm/sha512block_amd64_asm.go b/src/crypto/internal/fips140/sha512/_asm/sha512block_amd64_asm.go index ed7b1766bf..7e7572cb1e 100644 --- a/src/crypto/internal/fips140/sha512/_asm/sha512block_amd64_asm.go +++ b/src/crypto/internal/fips140/sha512/_asm/sha512block_amd64_asm.go @@ -146,217 +146,10 @@ func main() { Package("crypto/internal/fips140/sha512") ConstraintExpr("!purego") - blockAMD64() blockAVX2() Generate() } -// Wt = Mt; for 0 <= t <= 15 -// -// Line 50 -func MSGSCHEDULE0(index int) { - MOVQ(Mem{Base: SI}.Offset(index*8), RAX) - BSWAPQ(RAX) - MOVQ(RAX, Mem{Base: BP}.Offset(index*8)) -} - -// Wt = SIGMA1(Wt-2) + Wt-7 + SIGMA0(Wt-15) + Wt-16; for 16 <= t <= 79 -// -// SIGMA0(x) = ROTR(1,x) XOR ROTR(8,x) XOR SHR(7,x) -// SIGMA1(x) = ROTR(19,x) XOR ROTR(61,x) XOR SHR(6,x) -// -// Line 58 -func MSGSCHEDULE1(index int) { - MOVQ(Mem{Base: BP}.Offset((index-2)*8), RAX) - MOVQ(RAX, RCX) - RORQ(Imm(19), RAX) - MOVQ(RCX, RDX) - RORQ(Imm(61), RCX) - SHRQ(Imm(6), RDX) - MOVQ(Mem{Base: BP}.Offset((index-15)*8), RBX) - XORQ(RCX, RAX) - MOVQ(RBX, RCX) - XORQ(RDX, RAX) - RORQ(Imm(1), RBX) - MOVQ(RCX, RDX) - SHRQ(Imm(7), RDX) - RORQ(Imm(8), RCX) - ADDQ(Mem{Base: BP}.Offset((index-7)*8), RAX) - XORQ(RCX, RBX) - XORQ(RDX, RBX) - ADDQ(Mem{Base: BP}.Offset((index-16)*8), RBX) - ADDQ(RBX, RAX) - MOVQ(RAX, Mem{Base: BP}.Offset((index)*8)) -} - -// Calculate T1 in AX - uses AX, CX and DX registers. -// h is also used as an accumulator. Wt is passed in AX. -// -// T1 = h + BIGSIGMA1(e) + Ch(e, f, g) + Kt + Wt -// BIGSIGMA1(x) = ROTR(14,x) XOR ROTR(18,x) XOR ROTR(41,x) -// Ch(x, y, z) = (x AND y) XOR (NOT x AND z) -// -// Line 85 -func SHA512T1(konst uint64, e, f, g, h GPPhysical) { - MOVQ(U64(konst), RDX) - ADDQ(RAX, h) - MOVQ(e, RAX) - ADDQ(RDX, h) - MOVQ(e, RCX) - RORQ(U8(14), RAX) - MOVQ(e, RDX) - RORQ(U8(18), RCX) - XORQ(RCX, RAX) - MOVQ(e, RCX) - RORQ(U8(41), RDX) - ANDQ(f, RCX) - XORQ(RAX, RDX) - MOVQ(e, RAX) - NOTQ(RAX) - ADDQ(RDX, h) - ANDQ(g, RAX) - XORQ(RCX, RAX) - ADDQ(h, RAX) -} - -// Calculate T2 in BX - uses BX, CX, DX and DI registers. -// -// T2 = BIGSIGMA0(a) + Maj(a, b, c) -// BIGSIGMA0(x) = ROTR(28,x) XOR ROTR(34,x) XOR ROTR(39,x) -// Maj(x, y, z) = (x AND y) XOR (x AND z) XOR (y AND z) -// -// Line 110 -func SHA512T2(a, b, c GPPhysical) { - MOVQ(a, RDI) - MOVQ(c, RBX) - RORQ(Imm(28), RDI) - MOVQ(a, RDX) - ANDQ(b, RBX) - RORQ(Imm(34), RDX) - MOVQ(a, RCX) - ANDQ(c, RCX) - XORQ(RDX, RDI) - XORQ(RCX, RBX) - MOVQ(a, RDX) - MOVQ(b, RCX) - RORQ(Imm(39), RDX) - ANDQ(a, RCX) - XORQ(RCX, RBX) - XORQ(RDX, RDI) - ADDQ(RDI, RBX) -} - -// Calculate T1 and T2, then e = d + T1 and a = T1 + T2. -// The values for e and a are stored in d and h, ready for rotation. -// -// Line 131 -func SHA512ROUND(index int, konst uint64, a, b, c, d, e, f, g, h GPPhysical) { - SHA512T1(konst, e, f, g, h) - SHA512T2(a, b, c) - MOVQ(RBX, h) - ADDQ(RAX, d) - ADDQ(RAX, h) -} - -// Line 169 -func SHA512ROUND0(index int, konst uint64, a, b, c, d, e, f, g, h GPPhysical) { - MSGSCHEDULE0(index) - SHA512ROUND(index, konst, a, b, c, d, e, f, g, h) -} - -// Line 142 -func SHA512ROUND1(index int, konst uint64, a, b, c, d, e, f, g, h GPPhysical) { - MSGSCHEDULE1(index) - SHA512ROUND(index, konst, a, b, c, d, e, f, g, h) -} - -// Line 146 -func blockAMD64() { - Implement("blockAMD64") - AllocLocal(648) - - Load(Param("p").Base(), RSI) - Load(Param("p").Len(), RDX) - SHRQ(Imm(7), RDX) - SHLQ(Imm(7), RDX) - - LEAQ(Mem{Base: SI, Index: DX, Scale: 1}, RDI) - MOVQ(RDI, Mem{Base: SP}.Offset(640)) - CMPQ(RSI, RDI) - JEQ(LabelRef("end")) - - Load(Param("dig"), RBP) - MOVQ(Mem{Base: BP}.Offset(0*8), R8) // a = H0 - MOVQ(Mem{Base: BP}.Offset(1*8), R9) // b = H1 - MOVQ(Mem{Base: BP}.Offset(2*8), R10) // c = H2 - MOVQ(Mem{Base: BP}.Offset(3*8), R11) // d = H3 - MOVQ(Mem{Base: BP}.Offset(4*8), R12) // e = H4 - MOVQ(Mem{Base: BP}.Offset(5*8), R13) // f = H5 - MOVQ(Mem{Base: BP}.Offset(6*8), R14) // g = H6 - MOVQ(Mem{Base: BP}.Offset(7*8), R15) // h = H7 - PSHUFFLE_BYTE_FLIP_MASK_DATA() - loop() - end() -} - -func rotateRight(slice *[]GPPhysical) []GPPhysical { - n := len(*slice) - new := make([]GPPhysical, n) - for i, reg := range *slice { - new[(i+1)%n] = reg - } - return new -} - -// Line 167 -func loop() { - Label("loop") - MOVQ(RSP, RBP) // message schedule - - n := len(_K) - regs := []GPPhysical{R8, R9, R10, R11, R12, R13, R14, R15} - - for i := 0; i < 16; i++ { - SHA512ROUND0(i, _K[i], regs[0], regs[1], regs[2], regs[3], regs[4], regs[5], regs[6], regs[7]) - regs = rotateRight(®s) - } - - for i := 16; i < n; i++ { - SHA512ROUND1(i, _K[i], regs[0], regs[1], regs[2], regs[3], regs[4], regs[5], regs[6], regs[7]) - regs = rotateRight(®s) - } - - Load(Param("dig"), RBP) - - BP_Mem := Mem{Base: BP} - ADDQ(BP_Mem.Offset(0*8), R8) // H0 = a + H0 - MOVQ(R8, BP_Mem.Offset(0*8)) - ADDQ(BP_Mem.Offset(1*8), R9) // H1 = b + H1 - MOVQ(R9, BP_Mem.Offset(1*8)) - ADDQ(BP_Mem.Offset(2*8), R10) // H2 = c + H2 - MOVQ(R10, BP_Mem.Offset(2*8)) - ADDQ(BP_Mem.Offset(3*8), R11) // H3 = d + H3 - MOVQ(R11, BP_Mem.Offset(3*8)) - ADDQ(BP_Mem.Offset(4*8), R12) // H4 = e + H4 - MOVQ(R12, BP_Mem.Offset(4*8)) - ADDQ(BP_Mem.Offset(5*8), R13) // H5 = f + H5 - MOVQ(R13, BP_Mem.Offset(5*8)) - ADDQ(BP_Mem.Offset(6*8), R14) // H6 = g + H6 - MOVQ(R14, BP_Mem.Offset(6*8)) - ADDQ(BP_Mem.Offset(7*8), R15) // H7 = h + H7 - MOVQ(R15, BP_Mem.Offset(7*8)) - - ADDQ(Imm(128), RSI) - CMPQ(RSI, Mem{Base: SP}.Offset(640)) - JB(LabelRef("loop")) -} - -// Line 274 -func end() { - Label("end") - RET() -} - // Version below is based on "Fast SHA512 Implementations on Intel // Architecture Processors" White-paper // https://www.intel.com/content/dam/www/public/us/en/documents/white-papers/fast-sha512-implementations-ia-processors-paper.pdf diff --git a/src/crypto/internal/fips140/sha512/sha512block_amd64.go b/src/crypto/internal/fips140/sha512/sha512block_amd64.go index 185909ec5d..7059b88716 100644 --- a/src/crypto/internal/fips140/sha512/sha512block_amd64.go +++ b/src/crypto/internal/fips140/sha512/sha512block_amd64.go @@ -20,13 +20,10 @@ func init() { //go:noescape func blockAVX2(dig *Digest, p []byte) -//go:noescape -func blockAMD64(dig *Digest, p []byte) - func block(dig *Digest, p []byte) { if useAVX2 { blockAVX2(dig, p) } else { - blockAMD64(dig, p) + blockGeneric(dig, p) } } diff --git a/src/crypto/internal/fips140/sha512/sha512block_amd64.s b/src/crypto/internal/fips140/sha512/sha512block_amd64.s index ce77d20c04..e11d509ab4 100644 --- a/src/crypto/internal/fips140/sha512/sha512block_amd64.s +++ b/src/crypto/internal/fips140/sha512/sha512block_amd64.s @@ -4,4506 +4,6 @@ #include "textflag.h" -// func blockAMD64(dig *Digest, p []byte) -TEXT ·blockAMD64(SB), $648-32 - MOVQ p_base+8(FP), SI - MOVQ p_len+16(FP), DX - SHRQ $0x07, DX - SHLQ $0x07, DX - LEAQ (SI)(DX*1), DI - MOVQ DI, 640(SP) - CMPQ SI, DI - JEQ end - MOVQ dig+0(FP), BP - MOVQ (BP), R8 - MOVQ 8(BP), R9 - MOVQ 16(BP), R10 - MOVQ 24(BP), R11 - MOVQ 32(BP), R12 - MOVQ 40(BP), R13 - MOVQ 48(BP), R14 - MOVQ 56(BP), R15 - -loop: - MOVQ SP, BP - MOVQ (SI), AX - BSWAPQ AX - MOVQ AX, (BP) - MOVQ $0x428a2f98d728ae22, DX - ADDQ AX, R15 - MOVQ R12, AX - ADDQ DX, R15 - MOVQ R12, CX - RORQ $0x0e, AX - MOVQ R12, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R12, CX - RORQ $0x29, DX - ANDQ R13, CX - XORQ AX, DX - MOVQ R12, AX - NOTQ AX - ADDQ DX, R15 - ANDQ R14, AX - XORQ CX, AX - ADDQ R15, AX - MOVQ R8, DI - MOVQ R10, BX - RORQ $0x1c, DI - MOVQ R8, DX - ANDQ R9, BX - RORQ $0x22, DX - MOVQ R8, CX - ANDQ R10, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R8, DX - MOVQ R9, CX - RORQ $0x27, DX - ANDQ R8, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R15 - ADDQ AX, R11 - ADDQ AX, R15 - MOVQ 8(SI), AX - BSWAPQ AX - MOVQ AX, 8(BP) - MOVQ $0x7137449123ef65cd, DX - ADDQ AX, R14 - MOVQ R11, AX - ADDQ DX, R14 - MOVQ R11, CX - RORQ $0x0e, AX - MOVQ R11, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R11, CX - RORQ $0x29, DX - ANDQ R12, CX - XORQ AX, DX - MOVQ R11, AX - NOTQ AX - ADDQ DX, R14 - ANDQ R13, AX - XORQ CX, AX - ADDQ R14, AX - MOVQ R15, DI - MOVQ R9, BX - RORQ $0x1c, DI - MOVQ R15, DX - ANDQ R8, BX - RORQ $0x22, DX - MOVQ R15, CX - ANDQ R9, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R15, DX - MOVQ R8, CX - RORQ $0x27, DX - ANDQ R15, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R14 - ADDQ AX, R10 - ADDQ AX, R14 - MOVQ 16(SI), AX - BSWAPQ AX - MOVQ AX, 16(BP) - MOVQ $0xb5c0fbcfec4d3b2f, DX - ADDQ AX, R13 - MOVQ R10, AX - ADDQ DX, R13 - MOVQ R10, CX - RORQ $0x0e, AX - MOVQ R10, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R10, CX - RORQ $0x29, DX - ANDQ R11, CX - XORQ AX, DX - MOVQ R10, AX - NOTQ AX - ADDQ DX, R13 - ANDQ R12, AX - XORQ CX, AX - ADDQ R13, AX - MOVQ R14, DI - MOVQ R8, BX - RORQ $0x1c, DI - MOVQ R14, DX - ANDQ R15, BX - RORQ $0x22, DX - MOVQ R14, CX - ANDQ R8, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R14, DX - MOVQ R15, CX - RORQ $0x27, DX - ANDQ R14, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R13 - ADDQ AX, R9 - ADDQ AX, R13 - MOVQ 24(SI), AX - BSWAPQ AX - MOVQ AX, 24(BP) - MOVQ $0xe9b5dba58189dbbc, DX - ADDQ AX, R12 - MOVQ R9, AX - ADDQ DX, R12 - MOVQ R9, CX - RORQ $0x0e, AX - MOVQ R9, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R9, CX - RORQ $0x29, DX - ANDQ R10, CX - XORQ AX, DX - MOVQ R9, AX - NOTQ AX - ADDQ DX, R12 - ANDQ R11, AX - XORQ CX, AX - ADDQ R12, AX - MOVQ R13, DI - MOVQ R15, BX - RORQ $0x1c, DI - MOVQ R13, DX - ANDQ R14, BX - RORQ $0x22, DX - MOVQ R13, CX - ANDQ R15, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R13, DX - MOVQ R14, CX - RORQ $0x27, DX - ANDQ R13, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R12 - ADDQ AX, R8 - ADDQ AX, R12 - MOVQ 32(SI), AX - BSWAPQ AX - MOVQ AX, 32(BP) - MOVQ $0x3956c25bf348b538, DX - ADDQ AX, R11 - MOVQ R8, AX - ADDQ DX, R11 - MOVQ R8, CX - RORQ $0x0e, AX - MOVQ R8, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R8, CX - RORQ $0x29, DX - ANDQ R9, CX - XORQ AX, DX - MOVQ R8, AX - NOTQ AX - ADDQ DX, R11 - ANDQ R10, AX - XORQ CX, AX - ADDQ R11, AX - MOVQ R12, DI - MOVQ R14, BX - RORQ $0x1c, DI - MOVQ R12, DX - ANDQ R13, BX - RORQ $0x22, DX - MOVQ R12, CX - ANDQ R14, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R12, DX - MOVQ R13, CX - RORQ $0x27, DX - ANDQ R12, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R11 - ADDQ AX, R15 - ADDQ AX, R11 - MOVQ 40(SI), AX - BSWAPQ AX - MOVQ AX, 40(BP) - MOVQ $0x59f111f1b605d019, DX - ADDQ AX, R10 - MOVQ R15, AX - ADDQ DX, R10 - MOVQ R15, CX - RORQ $0x0e, AX - MOVQ R15, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R15, CX - RORQ $0x29, DX - ANDQ R8, CX - XORQ AX, DX - MOVQ R15, AX - NOTQ AX - ADDQ DX, R10 - ANDQ R9, AX - XORQ CX, AX - ADDQ R10, AX - MOVQ R11, DI - MOVQ R13, BX - RORQ $0x1c, DI - MOVQ R11, DX - ANDQ R12, BX - RORQ $0x22, DX - MOVQ R11, CX - ANDQ R13, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R11, DX - MOVQ R12, CX - RORQ $0x27, DX - ANDQ R11, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R10 - ADDQ AX, R14 - ADDQ AX, R10 - MOVQ 48(SI), AX - BSWAPQ AX - MOVQ AX, 48(BP) - MOVQ $0x923f82a4af194f9b, DX - ADDQ AX, R9 - MOVQ R14, AX - ADDQ DX, R9 - MOVQ R14, CX - RORQ $0x0e, AX - MOVQ R14, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R14, CX - RORQ $0x29, DX - ANDQ R15, CX - XORQ AX, DX - MOVQ R14, AX - NOTQ AX - ADDQ DX, R9 - ANDQ R8, AX - XORQ CX, AX - ADDQ R9, AX - MOVQ R10, DI - MOVQ R12, BX - RORQ $0x1c, DI - MOVQ R10, DX - ANDQ R11, BX - RORQ $0x22, DX - MOVQ R10, CX - ANDQ R12, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R10, DX - MOVQ R11, CX - RORQ $0x27, DX - ANDQ R10, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R9 - ADDQ AX, R13 - ADDQ AX, R9 - MOVQ 56(SI), AX - BSWAPQ AX - MOVQ AX, 56(BP) - MOVQ $0xab1c5ed5da6d8118, DX - ADDQ AX, R8 - MOVQ R13, AX - ADDQ DX, R8 - MOVQ R13, CX - RORQ $0x0e, AX - MOVQ R13, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R13, CX - RORQ $0x29, DX - ANDQ R14, CX - XORQ AX, DX - MOVQ R13, AX - NOTQ AX - ADDQ DX, R8 - ANDQ R15, AX - XORQ CX, AX - ADDQ R8, AX - MOVQ R9, DI - MOVQ R11, BX - RORQ $0x1c, DI - MOVQ R9, DX - ANDQ R10, BX - RORQ $0x22, DX - MOVQ R9, CX - ANDQ R11, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R9, DX - MOVQ R10, CX - RORQ $0x27, DX - ANDQ R9, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R8 - ADDQ AX, R12 - ADDQ AX, R8 - MOVQ 64(SI), AX - BSWAPQ AX - MOVQ AX, 64(BP) - MOVQ $0xd807aa98a3030242, DX - ADDQ AX, R15 - MOVQ R12, AX - ADDQ DX, R15 - MOVQ R12, CX - RORQ $0x0e, AX - MOVQ R12, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R12, CX - RORQ $0x29, DX - ANDQ R13, CX - XORQ AX, DX - MOVQ R12, AX - NOTQ AX - ADDQ DX, R15 - ANDQ R14, AX - XORQ CX, AX - ADDQ R15, AX - MOVQ R8, DI - MOVQ R10, BX - RORQ $0x1c, DI - MOVQ R8, DX - ANDQ R9, BX - RORQ $0x22, DX - MOVQ R8, CX - ANDQ R10, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R8, DX - MOVQ R9, CX - RORQ $0x27, DX - ANDQ R8, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R15 - ADDQ AX, R11 - ADDQ AX, R15 - MOVQ 72(SI), AX - BSWAPQ AX - MOVQ AX, 72(BP) - MOVQ $0x12835b0145706fbe, DX - ADDQ AX, R14 - MOVQ R11, AX - ADDQ DX, R14 - MOVQ R11, CX - RORQ $0x0e, AX - MOVQ R11, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R11, CX - RORQ $0x29, DX - ANDQ R12, CX - XORQ AX, DX - MOVQ R11, AX - NOTQ AX - ADDQ DX, R14 - ANDQ R13, AX - XORQ CX, AX - ADDQ R14, AX - MOVQ R15, DI - MOVQ R9, BX - RORQ $0x1c, DI - MOVQ R15, DX - ANDQ R8, BX - RORQ $0x22, DX - MOVQ R15, CX - ANDQ R9, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R15, DX - MOVQ R8, CX - RORQ $0x27, DX - ANDQ R15, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R14 - ADDQ AX, R10 - ADDQ AX, R14 - MOVQ 80(SI), AX - BSWAPQ AX - MOVQ AX, 80(BP) - MOVQ $0x243185be4ee4b28c, DX - ADDQ AX, R13 - MOVQ R10, AX - ADDQ DX, R13 - MOVQ R10, CX - RORQ $0x0e, AX - MOVQ R10, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R10, CX - RORQ $0x29, DX - ANDQ R11, CX - XORQ AX, DX - MOVQ R10, AX - NOTQ AX - ADDQ DX, R13 - ANDQ R12, AX - XORQ CX, AX - ADDQ R13, AX - MOVQ R14, DI - MOVQ R8, BX - RORQ $0x1c, DI - MOVQ R14, DX - ANDQ R15, BX - RORQ $0x22, DX - MOVQ R14, CX - ANDQ R8, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R14, DX - MOVQ R15, CX - RORQ $0x27, DX - ANDQ R14, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R13 - ADDQ AX, R9 - ADDQ AX, R13 - MOVQ 88(SI), AX - BSWAPQ AX - MOVQ AX, 88(BP) - MOVQ $0x550c7dc3d5ffb4e2, DX - ADDQ AX, R12 - MOVQ R9, AX - ADDQ DX, R12 - MOVQ R9, CX - RORQ $0x0e, AX - MOVQ R9, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R9, CX - RORQ $0x29, DX - ANDQ R10, CX - XORQ AX, DX - MOVQ R9, AX - NOTQ AX - ADDQ DX, R12 - ANDQ R11, AX - XORQ CX, AX - ADDQ R12, AX - MOVQ R13, DI - MOVQ R15, BX - RORQ $0x1c, DI - MOVQ R13, DX - ANDQ R14, BX - RORQ $0x22, DX - MOVQ R13, CX - ANDQ R15, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R13, DX - MOVQ R14, CX - RORQ $0x27, DX - ANDQ R13, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R12 - ADDQ AX, R8 - ADDQ AX, R12 - MOVQ 96(SI), AX - BSWAPQ AX - MOVQ AX, 96(BP) - MOVQ $0x72be5d74f27b896f, DX - ADDQ AX, R11 - MOVQ R8, AX - ADDQ DX, R11 - MOVQ R8, CX - RORQ $0x0e, AX - MOVQ R8, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R8, CX - RORQ $0x29, DX - ANDQ R9, CX - XORQ AX, DX - MOVQ R8, AX - NOTQ AX - ADDQ DX, R11 - ANDQ R10, AX - XORQ CX, AX - ADDQ R11, AX - MOVQ R12, DI - MOVQ R14, BX - RORQ $0x1c, DI - MOVQ R12, DX - ANDQ R13, BX - RORQ $0x22, DX - MOVQ R12, CX - ANDQ R14, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R12, DX - MOVQ R13, CX - RORQ $0x27, DX - ANDQ R12, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R11 - ADDQ AX, R15 - ADDQ AX, R11 - MOVQ 104(SI), AX - BSWAPQ AX - MOVQ AX, 104(BP) - MOVQ $0x80deb1fe3b1696b1, DX - ADDQ AX, R10 - MOVQ R15, AX - ADDQ DX, R10 - MOVQ R15, CX - RORQ $0x0e, AX - MOVQ R15, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R15, CX - RORQ $0x29, DX - ANDQ R8, CX - XORQ AX, DX - MOVQ R15, AX - NOTQ AX - ADDQ DX, R10 - ANDQ R9, AX - XORQ CX, AX - ADDQ R10, AX - MOVQ R11, DI - MOVQ R13, BX - RORQ $0x1c, DI - MOVQ R11, DX - ANDQ R12, BX - RORQ $0x22, DX - MOVQ R11, CX - ANDQ R13, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R11, DX - MOVQ R12, CX - RORQ $0x27, DX - ANDQ R11, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R10 - ADDQ AX, R14 - ADDQ AX, R10 - MOVQ 112(SI), AX - BSWAPQ AX - MOVQ AX, 112(BP) - MOVQ $0x9bdc06a725c71235, DX - ADDQ AX, R9 - MOVQ R14, AX - ADDQ DX, R9 - MOVQ R14, CX - RORQ $0x0e, AX - MOVQ R14, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R14, CX - RORQ $0x29, DX - ANDQ R15, CX - XORQ AX, DX - MOVQ R14, AX - NOTQ AX - ADDQ DX, R9 - ANDQ R8, AX - XORQ CX, AX - ADDQ R9, AX - MOVQ R10, DI - MOVQ R12, BX - RORQ $0x1c, DI - MOVQ R10, DX - ANDQ R11, BX - RORQ $0x22, DX - MOVQ R10, CX - ANDQ R12, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R10, DX - MOVQ R11, CX - RORQ $0x27, DX - ANDQ R10, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R9 - ADDQ AX, R13 - ADDQ AX, R9 - MOVQ 120(SI), AX - BSWAPQ AX - MOVQ AX, 120(BP) - MOVQ $0xc19bf174cf692694, DX - ADDQ AX, R8 - MOVQ R13, AX - ADDQ DX, R8 - MOVQ R13, CX - RORQ $0x0e, AX - MOVQ R13, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R13, CX - RORQ $0x29, DX - ANDQ R14, CX - XORQ AX, DX - MOVQ R13, AX - NOTQ AX - ADDQ DX, R8 - ANDQ R15, AX - XORQ CX, AX - ADDQ R8, AX - MOVQ R9, DI - MOVQ R11, BX - RORQ $0x1c, DI - MOVQ R9, DX - ANDQ R10, BX - RORQ $0x22, DX - MOVQ R9, CX - ANDQ R11, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R9, DX - MOVQ R10, CX - RORQ $0x27, DX - ANDQ R9, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R8 - ADDQ AX, R12 - ADDQ AX, R8 - MOVQ 112(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 8(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 72(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ (BP), BX - ADDQ BX, AX - MOVQ AX, 128(BP) - MOVQ $0xe49b69c19ef14ad2, DX - ADDQ AX, R15 - MOVQ R12, AX - ADDQ DX, R15 - MOVQ R12, CX - RORQ $0x0e, AX - MOVQ R12, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R12, CX - RORQ $0x29, DX - ANDQ R13, CX - XORQ AX, DX - MOVQ R12, AX - NOTQ AX - ADDQ DX, R15 - ANDQ R14, AX - XORQ CX, AX - ADDQ R15, AX - MOVQ R8, DI - MOVQ R10, BX - RORQ $0x1c, DI - MOVQ R8, DX - ANDQ R9, BX - RORQ $0x22, DX - MOVQ R8, CX - ANDQ R10, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R8, DX - MOVQ R9, CX - RORQ $0x27, DX - ANDQ R8, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R15 - ADDQ AX, R11 - ADDQ AX, R15 - MOVQ 120(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 16(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 80(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 8(BP), BX - ADDQ BX, AX - MOVQ AX, 136(BP) - MOVQ $0xefbe4786384f25e3, DX - ADDQ AX, R14 - MOVQ R11, AX - ADDQ DX, R14 - MOVQ R11, CX - RORQ $0x0e, AX - MOVQ R11, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R11, CX - RORQ $0x29, DX - ANDQ R12, CX - XORQ AX, DX - MOVQ R11, AX - NOTQ AX - ADDQ DX, R14 - ANDQ R13, AX - XORQ CX, AX - ADDQ R14, AX - MOVQ R15, DI - MOVQ R9, BX - RORQ $0x1c, DI - MOVQ R15, DX - ANDQ R8, BX - RORQ $0x22, DX - MOVQ R15, CX - ANDQ R9, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R15, DX - MOVQ R8, CX - RORQ $0x27, DX - ANDQ R15, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R14 - ADDQ AX, R10 - ADDQ AX, R14 - MOVQ 128(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 24(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 88(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 16(BP), BX - ADDQ BX, AX - MOVQ AX, 144(BP) - MOVQ $0x0fc19dc68b8cd5b5, DX - ADDQ AX, R13 - MOVQ R10, AX - ADDQ DX, R13 - MOVQ R10, CX - RORQ $0x0e, AX - MOVQ R10, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R10, CX - RORQ $0x29, DX - ANDQ R11, CX - XORQ AX, DX - MOVQ R10, AX - NOTQ AX - ADDQ DX, R13 - ANDQ R12, AX - XORQ CX, AX - ADDQ R13, AX - MOVQ R14, DI - MOVQ R8, BX - RORQ $0x1c, DI - MOVQ R14, DX - ANDQ R15, BX - RORQ $0x22, DX - MOVQ R14, CX - ANDQ R8, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R14, DX - MOVQ R15, CX - RORQ $0x27, DX - ANDQ R14, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R13 - ADDQ AX, R9 - ADDQ AX, R13 - MOVQ 136(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 32(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 96(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 24(BP), BX - ADDQ BX, AX - MOVQ AX, 152(BP) - MOVQ $0x240ca1cc77ac9c65, DX - ADDQ AX, R12 - MOVQ R9, AX - ADDQ DX, R12 - MOVQ R9, CX - RORQ $0x0e, AX - MOVQ R9, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R9, CX - RORQ $0x29, DX - ANDQ R10, CX - XORQ AX, DX - MOVQ R9, AX - NOTQ AX - ADDQ DX, R12 - ANDQ R11, AX - XORQ CX, AX - ADDQ R12, AX - MOVQ R13, DI - MOVQ R15, BX - RORQ $0x1c, DI - MOVQ R13, DX - ANDQ R14, BX - RORQ $0x22, DX - MOVQ R13, CX - ANDQ R15, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R13, DX - MOVQ R14, CX - RORQ $0x27, DX - ANDQ R13, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R12 - ADDQ AX, R8 - ADDQ AX, R12 - MOVQ 144(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 40(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 104(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 32(BP), BX - ADDQ BX, AX - MOVQ AX, 160(BP) - MOVQ $0x2de92c6f592b0275, DX - ADDQ AX, R11 - MOVQ R8, AX - ADDQ DX, R11 - MOVQ R8, CX - RORQ $0x0e, AX - MOVQ R8, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R8, CX - RORQ $0x29, DX - ANDQ R9, CX - XORQ AX, DX - MOVQ R8, AX - NOTQ AX - ADDQ DX, R11 - ANDQ R10, AX - XORQ CX, AX - ADDQ R11, AX - MOVQ R12, DI - MOVQ R14, BX - RORQ $0x1c, DI - MOVQ R12, DX - ANDQ R13, BX - RORQ $0x22, DX - MOVQ R12, CX - ANDQ R14, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R12, DX - MOVQ R13, CX - RORQ $0x27, DX - ANDQ R12, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R11 - ADDQ AX, R15 - ADDQ AX, R11 - MOVQ 152(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 48(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 112(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 40(BP), BX - ADDQ BX, AX - MOVQ AX, 168(BP) - MOVQ $0x4a7484aa6ea6e483, DX - ADDQ AX, R10 - MOVQ R15, AX - ADDQ DX, R10 - MOVQ R15, CX - RORQ $0x0e, AX - MOVQ R15, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R15, CX - RORQ $0x29, DX - ANDQ R8, CX - XORQ AX, DX - MOVQ R15, AX - NOTQ AX - ADDQ DX, R10 - ANDQ R9, AX - XORQ CX, AX - ADDQ R10, AX - MOVQ R11, DI - MOVQ R13, BX - RORQ $0x1c, DI - MOVQ R11, DX - ANDQ R12, BX - RORQ $0x22, DX - MOVQ R11, CX - ANDQ R13, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R11, DX - MOVQ R12, CX - RORQ $0x27, DX - ANDQ R11, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R10 - ADDQ AX, R14 - ADDQ AX, R10 - MOVQ 160(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 56(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 120(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 48(BP), BX - ADDQ BX, AX - MOVQ AX, 176(BP) - MOVQ $0x5cb0a9dcbd41fbd4, DX - ADDQ AX, R9 - MOVQ R14, AX - ADDQ DX, R9 - MOVQ R14, CX - RORQ $0x0e, AX - MOVQ R14, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R14, CX - RORQ $0x29, DX - ANDQ R15, CX - XORQ AX, DX - MOVQ R14, AX - NOTQ AX - ADDQ DX, R9 - ANDQ R8, AX - XORQ CX, AX - ADDQ R9, AX - MOVQ R10, DI - MOVQ R12, BX - RORQ $0x1c, DI - MOVQ R10, DX - ANDQ R11, BX - RORQ $0x22, DX - MOVQ R10, CX - ANDQ R12, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R10, DX - MOVQ R11, CX - RORQ $0x27, DX - ANDQ R10, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R9 - ADDQ AX, R13 - ADDQ AX, R9 - MOVQ 168(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 64(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 128(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 56(BP), BX - ADDQ BX, AX - MOVQ AX, 184(BP) - MOVQ $0x76f988da831153b5, DX - ADDQ AX, R8 - MOVQ R13, AX - ADDQ DX, R8 - MOVQ R13, CX - RORQ $0x0e, AX - MOVQ R13, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R13, CX - RORQ $0x29, DX - ANDQ R14, CX - XORQ AX, DX - MOVQ R13, AX - NOTQ AX - ADDQ DX, R8 - ANDQ R15, AX - XORQ CX, AX - ADDQ R8, AX - MOVQ R9, DI - MOVQ R11, BX - RORQ $0x1c, DI - MOVQ R9, DX - ANDQ R10, BX - RORQ $0x22, DX - MOVQ R9, CX - ANDQ R11, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R9, DX - MOVQ R10, CX - RORQ $0x27, DX - ANDQ R9, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R8 - ADDQ AX, R12 - ADDQ AX, R8 - MOVQ 176(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 72(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 136(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 64(BP), BX - ADDQ BX, AX - MOVQ AX, 192(BP) - MOVQ $0x983e5152ee66dfab, DX - ADDQ AX, R15 - MOVQ R12, AX - ADDQ DX, R15 - MOVQ R12, CX - RORQ $0x0e, AX - MOVQ R12, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R12, CX - RORQ $0x29, DX - ANDQ R13, CX - XORQ AX, DX - MOVQ R12, AX - NOTQ AX - ADDQ DX, R15 - ANDQ R14, AX - XORQ CX, AX - ADDQ R15, AX - MOVQ R8, DI - MOVQ R10, BX - RORQ $0x1c, DI - MOVQ R8, DX - ANDQ R9, BX - RORQ $0x22, DX - MOVQ R8, CX - ANDQ R10, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R8, DX - MOVQ R9, CX - RORQ $0x27, DX - ANDQ R8, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R15 - ADDQ AX, R11 - ADDQ AX, R15 - MOVQ 184(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 80(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 144(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 72(BP), BX - ADDQ BX, AX - MOVQ AX, 200(BP) - MOVQ $0xa831c66d2db43210, DX - ADDQ AX, R14 - MOVQ R11, AX - ADDQ DX, R14 - MOVQ R11, CX - RORQ $0x0e, AX - MOVQ R11, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R11, CX - RORQ $0x29, DX - ANDQ R12, CX - XORQ AX, DX - MOVQ R11, AX - NOTQ AX - ADDQ DX, R14 - ANDQ R13, AX - XORQ CX, AX - ADDQ R14, AX - MOVQ R15, DI - MOVQ R9, BX - RORQ $0x1c, DI - MOVQ R15, DX - ANDQ R8, BX - RORQ $0x22, DX - MOVQ R15, CX - ANDQ R9, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R15, DX - MOVQ R8, CX - RORQ $0x27, DX - ANDQ R15, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R14 - ADDQ AX, R10 - ADDQ AX, R14 - MOVQ 192(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 88(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 152(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 80(BP), BX - ADDQ BX, AX - MOVQ AX, 208(BP) - MOVQ $0xb00327c898fb213f, DX - ADDQ AX, R13 - MOVQ R10, AX - ADDQ DX, R13 - MOVQ R10, CX - RORQ $0x0e, AX - MOVQ R10, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R10, CX - RORQ $0x29, DX - ANDQ R11, CX - XORQ AX, DX - MOVQ R10, AX - NOTQ AX - ADDQ DX, R13 - ANDQ R12, AX - XORQ CX, AX - ADDQ R13, AX - MOVQ R14, DI - MOVQ R8, BX - RORQ $0x1c, DI - MOVQ R14, DX - ANDQ R15, BX - RORQ $0x22, DX - MOVQ R14, CX - ANDQ R8, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R14, DX - MOVQ R15, CX - RORQ $0x27, DX - ANDQ R14, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R13 - ADDQ AX, R9 - ADDQ AX, R13 - MOVQ 200(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 96(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 160(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 88(BP), BX - ADDQ BX, AX - MOVQ AX, 216(BP) - MOVQ $0xbf597fc7beef0ee4, DX - ADDQ AX, R12 - MOVQ R9, AX - ADDQ DX, R12 - MOVQ R9, CX - RORQ $0x0e, AX - MOVQ R9, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R9, CX - RORQ $0x29, DX - ANDQ R10, CX - XORQ AX, DX - MOVQ R9, AX - NOTQ AX - ADDQ DX, R12 - ANDQ R11, AX - XORQ CX, AX - ADDQ R12, AX - MOVQ R13, DI - MOVQ R15, BX - RORQ $0x1c, DI - MOVQ R13, DX - ANDQ R14, BX - RORQ $0x22, DX - MOVQ R13, CX - ANDQ R15, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R13, DX - MOVQ R14, CX - RORQ $0x27, DX - ANDQ R13, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R12 - ADDQ AX, R8 - ADDQ AX, R12 - MOVQ 208(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 104(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 168(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 96(BP), BX - ADDQ BX, AX - MOVQ AX, 224(BP) - MOVQ $0xc6e00bf33da88fc2, DX - ADDQ AX, R11 - MOVQ R8, AX - ADDQ DX, R11 - MOVQ R8, CX - RORQ $0x0e, AX - MOVQ R8, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R8, CX - RORQ $0x29, DX - ANDQ R9, CX - XORQ AX, DX - MOVQ R8, AX - NOTQ AX - ADDQ DX, R11 - ANDQ R10, AX - XORQ CX, AX - ADDQ R11, AX - MOVQ R12, DI - MOVQ R14, BX - RORQ $0x1c, DI - MOVQ R12, DX - ANDQ R13, BX - RORQ $0x22, DX - MOVQ R12, CX - ANDQ R14, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R12, DX - MOVQ R13, CX - RORQ $0x27, DX - ANDQ R12, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R11 - ADDQ AX, R15 - ADDQ AX, R11 - MOVQ 216(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 112(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 176(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 104(BP), BX - ADDQ BX, AX - MOVQ AX, 232(BP) - MOVQ $0xd5a79147930aa725, DX - ADDQ AX, R10 - MOVQ R15, AX - ADDQ DX, R10 - MOVQ R15, CX - RORQ $0x0e, AX - MOVQ R15, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R15, CX - RORQ $0x29, DX - ANDQ R8, CX - XORQ AX, DX - MOVQ R15, AX - NOTQ AX - ADDQ DX, R10 - ANDQ R9, AX - XORQ CX, AX - ADDQ R10, AX - MOVQ R11, DI - MOVQ R13, BX - RORQ $0x1c, DI - MOVQ R11, DX - ANDQ R12, BX - RORQ $0x22, DX - MOVQ R11, CX - ANDQ R13, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R11, DX - MOVQ R12, CX - RORQ $0x27, DX - ANDQ R11, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R10 - ADDQ AX, R14 - ADDQ AX, R10 - MOVQ 224(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 120(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 184(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 112(BP), BX - ADDQ BX, AX - MOVQ AX, 240(BP) - MOVQ $0x06ca6351e003826f, DX - ADDQ AX, R9 - MOVQ R14, AX - ADDQ DX, R9 - MOVQ R14, CX - RORQ $0x0e, AX - MOVQ R14, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R14, CX - RORQ $0x29, DX - ANDQ R15, CX - XORQ AX, DX - MOVQ R14, AX - NOTQ AX - ADDQ DX, R9 - ANDQ R8, AX - XORQ CX, AX - ADDQ R9, AX - MOVQ R10, DI - MOVQ R12, BX - RORQ $0x1c, DI - MOVQ R10, DX - ANDQ R11, BX - RORQ $0x22, DX - MOVQ R10, CX - ANDQ R12, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R10, DX - MOVQ R11, CX - RORQ $0x27, DX - ANDQ R10, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R9 - ADDQ AX, R13 - ADDQ AX, R9 - MOVQ 232(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 128(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 192(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 120(BP), BX - ADDQ BX, AX - MOVQ AX, 248(BP) - MOVQ $0x142929670a0e6e70, DX - ADDQ AX, R8 - MOVQ R13, AX - ADDQ DX, R8 - MOVQ R13, CX - RORQ $0x0e, AX - MOVQ R13, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R13, CX - RORQ $0x29, DX - ANDQ R14, CX - XORQ AX, DX - MOVQ R13, AX - NOTQ AX - ADDQ DX, R8 - ANDQ R15, AX - XORQ CX, AX - ADDQ R8, AX - MOVQ R9, DI - MOVQ R11, BX - RORQ $0x1c, DI - MOVQ R9, DX - ANDQ R10, BX - RORQ $0x22, DX - MOVQ R9, CX - ANDQ R11, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R9, DX - MOVQ R10, CX - RORQ $0x27, DX - ANDQ R9, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R8 - ADDQ AX, R12 - ADDQ AX, R8 - MOVQ 240(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 136(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 200(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 128(BP), BX - ADDQ BX, AX - MOVQ AX, 256(BP) - MOVQ $0x27b70a8546d22ffc, DX - ADDQ AX, R15 - MOVQ R12, AX - ADDQ DX, R15 - MOVQ R12, CX - RORQ $0x0e, AX - MOVQ R12, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R12, CX - RORQ $0x29, DX - ANDQ R13, CX - XORQ AX, DX - MOVQ R12, AX - NOTQ AX - ADDQ DX, R15 - ANDQ R14, AX - XORQ CX, AX - ADDQ R15, AX - MOVQ R8, DI - MOVQ R10, BX - RORQ $0x1c, DI - MOVQ R8, DX - ANDQ R9, BX - RORQ $0x22, DX - MOVQ R8, CX - ANDQ R10, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R8, DX - MOVQ R9, CX - RORQ $0x27, DX - ANDQ R8, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R15 - ADDQ AX, R11 - ADDQ AX, R15 - MOVQ 248(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 144(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 208(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 136(BP), BX - ADDQ BX, AX - MOVQ AX, 264(BP) - MOVQ $0x2e1b21385c26c926, DX - ADDQ AX, R14 - MOVQ R11, AX - ADDQ DX, R14 - MOVQ R11, CX - RORQ $0x0e, AX - MOVQ R11, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R11, CX - RORQ $0x29, DX - ANDQ R12, CX - XORQ AX, DX - MOVQ R11, AX - NOTQ AX - ADDQ DX, R14 - ANDQ R13, AX - XORQ CX, AX - ADDQ R14, AX - MOVQ R15, DI - MOVQ R9, BX - RORQ $0x1c, DI - MOVQ R15, DX - ANDQ R8, BX - RORQ $0x22, DX - MOVQ R15, CX - ANDQ R9, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R15, DX - MOVQ R8, CX - RORQ $0x27, DX - ANDQ R15, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R14 - ADDQ AX, R10 - ADDQ AX, R14 - MOVQ 256(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 152(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 216(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 144(BP), BX - ADDQ BX, AX - MOVQ AX, 272(BP) - MOVQ $0x4d2c6dfc5ac42aed, DX - ADDQ AX, R13 - MOVQ R10, AX - ADDQ DX, R13 - MOVQ R10, CX - RORQ $0x0e, AX - MOVQ R10, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R10, CX - RORQ $0x29, DX - ANDQ R11, CX - XORQ AX, DX - MOVQ R10, AX - NOTQ AX - ADDQ DX, R13 - ANDQ R12, AX - XORQ CX, AX - ADDQ R13, AX - MOVQ R14, DI - MOVQ R8, BX - RORQ $0x1c, DI - MOVQ R14, DX - ANDQ R15, BX - RORQ $0x22, DX - MOVQ R14, CX - ANDQ R8, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R14, DX - MOVQ R15, CX - RORQ $0x27, DX - ANDQ R14, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R13 - ADDQ AX, R9 - ADDQ AX, R13 - MOVQ 264(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 160(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 224(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 152(BP), BX - ADDQ BX, AX - MOVQ AX, 280(BP) - MOVQ $0x53380d139d95b3df, DX - ADDQ AX, R12 - MOVQ R9, AX - ADDQ DX, R12 - MOVQ R9, CX - RORQ $0x0e, AX - MOVQ R9, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R9, CX - RORQ $0x29, DX - ANDQ R10, CX - XORQ AX, DX - MOVQ R9, AX - NOTQ AX - ADDQ DX, R12 - ANDQ R11, AX - XORQ CX, AX - ADDQ R12, AX - MOVQ R13, DI - MOVQ R15, BX - RORQ $0x1c, DI - MOVQ R13, DX - ANDQ R14, BX - RORQ $0x22, DX - MOVQ R13, CX - ANDQ R15, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R13, DX - MOVQ R14, CX - RORQ $0x27, DX - ANDQ R13, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R12 - ADDQ AX, R8 - ADDQ AX, R12 - MOVQ 272(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 168(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 232(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 160(BP), BX - ADDQ BX, AX - MOVQ AX, 288(BP) - MOVQ $0x650a73548baf63de, DX - ADDQ AX, R11 - MOVQ R8, AX - ADDQ DX, R11 - MOVQ R8, CX - RORQ $0x0e, AX - MOVQ R8, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R8, CX - RORQ $0x29, DX - ANDQ R9, CX - XORQ AX, DX - MOVQ R8, AX - NOTQ AX - ADDQ DX, R11 - ANDQ R10, AX - XORQ CX, AX - ADDQ R11, AX - MOVQ R12, DI - MOVQ R14, BX - RORQ $0x1c, DI - MOVQ R12, DX - ANDQ R13, BX - RORQ $0x22, DX - MOVQ R12, CX - ANDQ R14, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R12, DX - MOVQ R13, CX - RORQ $0x27, DX - ANDQ R12, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R11 - ADDQ AX, R15 - ADDQ AX, R11 - MOVQ 280(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 176(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 240(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 168(BP), BX - ADDQ BX, AX - MOVQ AX, 296(BP) - MOVQ $0x766a0abb3c77b2a8, DX - ADDQ AX, R10 - MOVQ R15, AX - ADDQ DX, R10 - MOVQ R15, CX - RORQ $0x0e, AX - MOVQ R15, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R15, CX - RORQ $0x29, DX - ANDQ R8, CX - XORQ AX, DX - MOVQ R15, AX - NOTQ AX - ADDQ DX, R10 - ANDQ R9, AX - XORQ CX, AX - ADDQ R10, AX - MOVQ R11, DI - MOVQ R13, BX - RORQ $0x1c, DI - MOVQ R11, DX - ANDQ R12, BX - RORQ $0x22, DX - MOVQ R11, CX - ANDQ R13, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R11, DX - MOVQ R12, CX - RORQ $0x27, DX - ANDQ R11, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R10 - ADDQ AX, R14 - ADDQ AX, R10 - MOVQ 288(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 184(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 248(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 176(BP), BX - ADDQ BX, AX - MOVQ AX, 304(BP) - MOVQ $0x81c2c92e47edaee6, DX - ADDQ AX, R9 - MOVQ R14, AX - ADDQ DX, R9 - MOVQ R14, CX - RORQ $0x0e, AX - MOVQ R14, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R14, CX - RORQ $0x29, DX - ANDQ R15, CX - XORQ AX, DX - MOVQ R14, AX - NOTQ AX - ADDQ DX, R9 - ANDQ R8, AX - XORQ CX, AX - ADDQ R9, AX - MOVQ R10, DI - MOVQ R12, BX - RORQ $0x1c, DI - MOVQ R10, DX - ANDQ R11, BX - RORQ $0x22, DX - MOVQ R10, CX - ANDQ R12, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R10, DX - MOVQ R11, CX - RORQ $0x27, DX - ANDQ R10, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R9 - ADDQ AX, R13 - ADDQ AX, R9 - MOVQ 296(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 192(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 256(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 184(BP), BX - ADDQ BX, AX - MOVQ AX, 312(BP) - MOVQ $0x92722c851482353b, DX - ADDQ AX, R8 - MOVQ R13, AX - ADDQ DX, R8 - MOVQ R13, CX - RORQ $0x0e, AX - MOVQ R13, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R13, CX - RORQ $0x29, DX - ANDQ R14, CX - XORQ AX, DX - MOVQ R13, AX - NOTQ AX - ADDQ DX, R8 - ANDQ R15, AX - XORQ CX, AX - ADDQ R8, AX - MOVQ R9, DI - MOVQ R11, BX - RORQ $0x1c, DI - MOVQ R9, DX - ANDQ R10, BX - RORQ $0x22, DX - MOVQ R9, CX - ANDQ R11, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R9, DX - MOVQ R10, CX - RORQ $0x27, DX - ANDQ R9, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R8 - ADDQ AX, R12 - ADDQ AX, R8 - MOVQ 304(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 200(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 264(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 192(BP), BX - ADDQ BX, AX - MOVQ AX, 320(BP) - MOVQ $0xa2bfe8a14cf10364, DX - ADDQ AX, R15 - MOVQ R12, AX - ADDQ DX, R15 - MOVQ R12, CX - RORQ $0x0e, AX - MOVQ R12, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R12, CX - RORQ $0x29, DX - ANDQ R13, CX - XORQ AX, DX - MOVQ R12, AX - NOTQ AX - ADDQ DX, R15 - ANDQ R14, AX - XORQ CX, AX - ADDQ R15, AX - MOVQ R8, DI - MOVQ R10, BX - RORQ $0x1c, DI - MOVQ R8, DX - ANDQ R9, BX - RORQ $0x22, DX - MOVQ R8, CX - ANDQ R10, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R8, DX - MOVQ R9, CX - RORQ $0x27, DX - ANDQ R8, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R15 - ADDQ AX, R11 - ADDQ AX, R15 - MOVQ 312(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 208(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 272(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 200(BP), BX - ADDQ BX, AX - MOVQ AX, 328(BP) - MOVQ $0xa81a664bbc423001, DX - ADDQ AX, R14 - MOVQ R11, AX - ADDQ DX, R14 - MOVQ R11, CX - RORQ $0x0e, AX - MOVQ R11, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R11, CX - RORQ $0x29, DX - ANDQ R12, CX - XORQ AX, DX - MOVQ R11, AX - NOTQ AX - ADDQ DX, R14 - ANDQ R13, AX - XORQ CX, AX - ADDQ R14, AX - MOVQ R15, DI - MOVQ R9, BX - RORQ $0x1c, DI - MOVQ R15, DX - ANDQ R8, BX - RORQ $0x22, DX - MOVQ R15, CX - ANDQ R9, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R15, DX - MOVQ R8, CX - RORQ $0x27, DX - ANDQ R15, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R14 - ADDQ AX, R10 - ADDQ AX, R14 - MOVQ 320(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 216(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 280(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 208(BP), BX - ADDQ BX, AX - MOVQ AX, 336(BP) - MOVQ $0xc24b8b70d0f89791, DX - ADDQ AX, R13 - MOVQ R10, AX - ADDQ DX, R13 - MOVQ R10, CX - RORQ $0x0e, AX - MOVQ R10, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R10, CX - RORQ $0x29, DX - ANDQ R11, CX - XORQ AX, DX - MOVQ R10, AX - NOTQ AX - ADDQ DX, R13 - ANDQ R12, AX - XORQ CX, AX - ADDQ R13, AX - MOVQ R14, DI - MOVQ R8, BX - RORQ $0x1c, DI - MOVQ R14, DX - ANDQ R15, BX - RORQ $0x22, DX - MOVQ R14, CX - ANDQ R8, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R14, DX - MOVQ R15, CX - RORQ $0x27, DX - ANDQ R14, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R13 - ADDQ AX, R9 - ADDQ AX, R13 - MOVQ 328(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 224(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 288(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 216(BP), BX - ADDQ BX, AX - MOVQ AX, 344(BP) - MOVQ $0xc76c51a30654be30, DX - ADDQ AX, R12 - MOVQ R9, AX - ADDQ DX, R12 - MOVQ R9, CX - RORQ $0x0e, AX - MOVQ R9, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R9, CX - RORQ $0x29, DX - ANDQ R10, CX - XORQ AX, DX - MOVQ R9, AX - NOTQ AX - ADDQ DX, R12 - ANDQ R11, AX - XORQ CX, AX - ADDQ R12, AX - MOVQ R13, DI - MOVQ R15, BX - RORQ $0x1c, DI - MOVQ R13, DX - ANDQ R14, BX - RORQ $0x22, DX - MOVQ R13, CX - ANDQ R15, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R13, DX - MOVQ R14, CX - RORQ $0x27, DX - ANDQ R13, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R12 - ADDQ AX, R8 - ADDQ AX, R12 - MOVQ 336(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 232(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 296(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 224(BP), BX - ADDQ BX, AX - MOVQ AX, 352(BP) - MOVQ $0xd192e819d6ef5218, DX - ADDQ AX, R11 - MOVQ R8, AX - ADDQ DX, R11 - MOVQ R8, CX - RORQ $0x0e, AX - MOVQ R8, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R8, CX - RORQ $0x29, DX - ANDQ R9, CX - XORQ AX, DX - MOVQ R8, AX - NOTQ AX - ADDQ DX, R11 - ANDQ R10, AX - XORQ CX, AX - ADDQ R11, AX - MOVQ R12, DI - MOVQ R14, BX - RORQ $0x1c, DI - MOVQ R12, DX - ANDQ R13, BX - RORQ $0x22, DX - MOVQ R12, CX - ANDQ R14, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R12, DX - MOVQ R13, CX - RORQ $0x27, DX - ANDQ R12, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R11 - ADDQ AX, R15 - ADDQ AX, R11 - MOVQ 344(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 240(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 304(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 232(BP), BX - ADDQ BX, AX - MOVQ AX, 360(BP) - MOVQ $0xd69906245565a910, DX - ADDQ AX, R10 - MOVQ R15, AX - ADDQ DX, R10 - MOVQ R15, CX - RORQ $0x0e, AX - MOVQ R15, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R15, CX - RORQ $0x29, DX - ANDQ R8, CX - XORQ AX, DX - MOVQ R15, AX - NOTQ AX - ADDQ DX, R10 - ANDQ R9, AX - XORQ CX, AX - ADDQ R10, AX - MOVQ R11, DI - MOVQ R13, BX - RORQ $0x1c, DI - MOVQ R11, DX - ANDQ R12, BX - RORQ $0x22, DX - MOVQ R11, CX - ANDQ R13, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R11, DX - MOVQ R12, CX - RORQ $0x27, DX - ANDQ R11, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R10 - ADDQ AX, R14 - ADDQ AX, R10 - MOVQ 352(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 248(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 312(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 240(BP), BX - ADDQ BX, AX - MOVQ AX, 368(BP) - MOVQ $0xf40e35855771202a, DX - ADDQ AX, R9 - MOVQ R14, AX - ADDQ DX, R9 - MOVQ R14, CX - RORQ $0x0e, AX - MOVQ R14, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R14, CX - RORQ $0x29, DX - ANDQ R15, CX - XORQ AX, DX - MOVQ R14, AX - NOTQ AX - ADDQ DX, R9 - ANDQ R8, AX - XORQ CX, AX - ADDQ R9, AX - MOVQ R10, DI - MOVQ R12, BX - RORQ $0x1c, DI - MOVQ R10, DX - ANDQ R11, BX - RORQ $0x22, DX - MOVQ R10, CX - ANDQ R12, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R10, DX - MOVQ R11, CX - RORQ $0x27, DX - ANDQ R10, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R9 - ADDQ AX, R13 - ADDQ AX, R9 - MOVQ 360(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 256(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 320(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 248(BP), BX - ADDQ BX, AX - MOVQ AX, 376(BP) - MOVQ $0x106aa07032bbd1b8, DX - ADDQ AX, R8 - MOVQ R13, AX - ADDQ DX, R8 - MOVQ R13, CX - RORQ $0x0e, AX - MOVQ R13, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R13, CX - RORQ $0x29, DX - ANDQ R14, CX - XORQ AX, DX - MOVQ R13, AX - NOTQ AX - ADDQ DX, R8 - ANDQ R15, AX - XORQ CX, AX - ADDQ R8, AX - MOVQ R9, DI - MOVQ R11, BX - RORQ $0x1c, DI - MOVQ R9, DX - ANDQ R10, BX - RORQ $0x22, DX - MOVQ R9, CX - ANDQ R11, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R9, DX - MOVQ R10, CX - RORQ $0x27, DX - ANDQ R9, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R8 - ADDQ AX, R12 - ADDQ AX, R8 - MOVQ 368(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 264(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 328(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 256(BP), BX - ADDQ BX, AX - MOVQ AX, 384(BP) - MOVQ $0x19a4c116b8d2d0c8, DX - ADDQ AX, R15 - MOVQ R12, AX - ADDQ DX, R15 - MOVQ R12, CX - RORQ $0x0e, AX - MOVQ R12, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R12, CX - RORQ $0x29, DX - ANDQ R13, CX - XORQ AX, DX - MOVQ R12, AX - NOTQ AX - ADDQ DX, R15 - ANDQ R14, AX - XORQ CX, AX - ADDQ R15, AX - MOVQ R8, DI - MOVQ R10, BX - RORQ $0x1c, DI - MOVQ R8, DX - ANDQ R9, BX - RORQ $0x22, DX - MOVQ R8, CX - ANDQ R10, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R8, DX - MOVQ R9, CX - RORQ $0x27, DX - ANDQ R8, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R15 - ADDQ AX, R11 - ADDQ AX, R15 - MOVQ 376(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 272(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 336(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 264(BP), BX - ADDQ BX, AX - MOVQ AX, 392(BP) - MOVQ $0x1e376c085141ab53, DX - ADDQ AX, R14 - MOVQ R11, AX - ADDQ DX, R14 - MOVQ R11, CX - RORQ $0x0e, AX - MOVQ R11, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R11, CX - RORQ $0x29, DX - ANDQ R12, CX - XORQ AX, DX - MOVQ R11, AX - NOTQ AX - ADDQ DX, R14 - ANDQ R13, AX - XORQ CX, AX - ADDQ R14, AX - MOVQ R15, DI - MOVQ R9, BX - RORQ $0x1c, DI - MOVQ R15, DX - ANDQ R8, BX - RORQ $0x22, DX - MOVQ R15, CX - ANDQ R9, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R15, DX - MOVQ R8, CX - RORQ $0x27, DX - ANDQ R15, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R14 - ADDQ AX, R10 - ADDQ AX, R14 - MOVQ 384(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 280(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 344(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 272(BP), BX - ADDQ BX, AX - MOVQ AX, 400(BP) - MOVQ $0x2748774cdf8eeb99, DX - ADDQ AX, R13 - MOVQ R10, AX - ADDQ DX, R13 - MOVQ R10, CX - RORQ $0x0e, AX - MOVQ R10, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R10, CX - RORQ $0x29, DX - ANDQ R11, CX - XORQ AX, DX - MOVQ R10, AX - NOTQ AX - ADDQ DX, R13 - ANDQ R12, AX - XORQ CX, AX - ADDQ R13, AX - MOVQ R14, DI - MOVQ R8, BX - RORQ $0x1c, DI - MOVQ R14, DX - ANDQ R15, BX - RORQ $0x22, DX - MOVQ R14, CX - ANDQ R8, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R14, DX - MOVQ R15, CX - RORQ $0x27, DX - ANDQ R14, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R13 - ADDQ AX, R9 - ADDQ AX, R13 - MOVQ 392(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 288(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 352(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 280(BP), BX - ADDQ BX, AX - MOVQ AX, 408(BP) - MOVQ $0x34b0bcb5e19b48a8, DX - ADDQ AX, R12 - MOVQ R9, AX - ADDQ DX, R12 - MOVQ R9, CX - RORQ $0x0e, AX - MOVQ R9, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R9, CX - RORQ $0x29, DX - ANDQ R10, CX - XORQ AX, DX - MOVQ R9, AX - NOTQ AX - ADDQ DX, R12 - ANDQ R11, AX - XORQ CX, AX - ADDQ R12, AX - MOVQ R13, DI - MOVQ R15, BX - RORQ $0x1c, DI - MOVQ R13, DX - ANDQ R14, BX - RORQ $0x22, DX - MOVQ R13, CX - ANDQ R15, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R13, DX - MOVQ R14, CX - RORQ $0x27, DX - ANDQ R13, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R12 - ADDQ AX, R8 - ADDQ AX, R12 - MOVQ 400(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 296(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 360(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 288(BP), BX - ADDQ BX, AX - MOVQ AX, 416(BP) - MOVQ $0x391c0cb3c5c95a63, DX - ADDQ AX, R11 - MOVQ R8, AX - ADDQ DX, R11 - MOVQ R8, CX - RORQ $0x0e, AX - MOVQ R8, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R8, CX - RORQ $0x29, DX - ANDQ R9, CX - XORQ AX, DX - MOVQ R8, AX - NOTQ AX - ADDQ DX, R11 - ANDQ R10, AX - XORQ CX, AX - ADDQ R11, AX - MOVQ R12, DI - MOVQ R14, BX - RORQ $0x1c, DI - MOVQ R12, DX - ANDQ R13, BX - RORQ $0x22, DX - MOVQ R12, CX - ANDQ R14, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R12, DX - MOVQ R13, CX - RORQ $0x27, DX - ANDQ R12, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R11 - ADDQ AX, R15 - ADDQ AX, R11 - MOVQ 408(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 304(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 368(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 296(BP), BX - ADDQ BX, AX - MOVQ AX, 424(BP) - MOVQ $0x4ed8aa4ae3418acb, DX - ADDQ AX, R10 - MOVQ R15, AX - ADDQ DX, R10 - MOVQ R15, CX - RORQ $0x0e, AX - MOVQ R15, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R15, CX - RORQ $0x29, DX - ANDQ R8, CX - XORQ AX, DX - MOVQ R15, AX - NOTQ AX - ADDQ DX, R10 - ANDQ R9, AX - XORQ CX, AX - ADDQ R10, AX - MOVQ R11, DI - MOVQ R13, BX - RORQ $0x1c, DI - MOVQ R11, DX - ANDQ R12, BX - RORQ $0x22, DX - MOVQ R11, CX - ANDQ R13, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R11, DX - MOVQ R12, CX - RORQ $0x27, DX - ANDQ R11, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R10 - ADDQ AX, R14 - ADDQ AX, R10 - MOVQ 416(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 312(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 376(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 304(BP), BX - ADDQ BX, AX - MOVQ AX, 432(BP) - MOVQ $0x5b9cca4f7763e373, DX - ADDQ AX, R9 - MOVQ R14, AX - ADDQ DX, R9 - MOVQ R14, CX - RORQ $0x0e, AX - MOVQ R14, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R14, CX - RORQ $0x29, DX - ANDQ R15, CX - XORQ AX, DX - MOVQ R14, AX - NOTQ AX - ADDQ DX, R9 - ANDQ R8, AX - XORQ CX, AX - ADDQ R9, AX - MOVQ R10, DI - MOVQ R12, BX - RORQ $0x1c, DI - MOVQ R10, DX - ANDQ R11, BX - RORQ $0x22, DX - MOVQ R10, CX - ANDQ R12, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R10, DX - MOVQ R11, CX - RORQ $0x27, DX - ANDQ R10, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R9 - ADDQ AX, R13 - ADDQ AX, R9 - MOVQ 424(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 320(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 384(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 312(BP), BX - ADDQ BX, AX - MOVQ AX, 440(BP) - MOVQ $0x682e6ff3d6b2b8a3, DX - ADDQ AX, R8 - MOVQ R13, AX - ADDQ DX, R8 - MOVQ R13, CX - RORQ $0x0e, AX - MOVQ R13, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R13, CX - RORQ $0x29, DX - ANDQ R14, CX - XORQ AX, DX - MOVQ R13, AX - NOTQ AX - ADDQ DX, R8 - ANDQ R15, AX - XORQ CX, AX - ADDQ R8, AX - MOVQ R9, DI - MOVQ R11, BX - RORQ $0x1c, DI - MOVQ R9, DX - ANDQ R10, BX - RORQ $0x22, DX - MOVQ R9, CX - ANDQ R11, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R9, DX - MOVQ R10, CX - RORQ $0x27, DX - ANDQ R9, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R8 - ADDQ AX, R12 - ADDQ AX, R8 - MOVQ 432(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 328(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 392(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 320(BP), BX - ADDQ BX, AX - MOVQ AX, 448(BP) - MOVQ $0x748f82ee5defb2fc, DX - ADDQ AX, R15 - MOVQ R12, AX - ADDQ DX, R15 - MOVQ R12, CX - RORQ $0x0e, AX - MOVQ R12, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R12, CX - RORQ $0x29, DX - ANDQ R13, CX - XORQ AX, DX - MOVQ R12, AX - NOTQ AX - ADDQ DX, R15 - ANDQ R14, AX - XORQ CX, AX - ADDQ R15, AX - MOVQ R8, DI - MOVQ R10, BX - RORQ $0x1c, DI - MOVQ R8, DX - ANDQ R9, BX - RORQ $0x22, DX - MOVQ R8, CX - ANDQ R10, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R8, DX - MOVQ R9, CX - RORQ $0x27, DX - ANDQ R8, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R15 - ADDQ AX, R11 - ADDQ AX, R15 - MOVQ 440(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 336(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 400(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 328(BP), BX - ADDQ BX, AX - MOVQ AX, 456(BP) - MOVQ $0x78a5636f43172f60, DX - ADDQ AX, R14 - MOVQ R11, AX - ADDQ DX, R14 - MOVQ R11, CX - RORQ $0x0e, AX - MOVQ R11, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R11, CX - RORQ $0x29, DX - ANDQ R12, CX - XORQ AX, DX - MOVQ R11, AX - NOTQ AX - ADDQ DX, R14 - ANDQ R13, AX - XORQ CX, AX - ADDQ R14, AX - MOVQ R15, DI - MOVQ R9, BX - RORQ $0x1c, DI - MOVQ R15, DX - ANDQ R8, BX - RORQ $0x22, DX - MOVQ R15, CX - ANDQ R9, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R15, DX - MOVQ R8, CX - RORQ $0x27, DX - ANDQ R15, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R14 - ADDQ AX, R10 - ADDQ AX, R14 - MOVQ 448(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 344(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 408(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 336(BP), BX - ADDQ BX, AX - MOVQ AX, 464(BP) - MOVQ $0x84c87814a1f0ab72, DX - ADDQ AX, R13 - MOVQ R10, AX - ADDQ DX, R13 - MOVQ R10, CX - RORQ $0x0e, AX - MOVQ R10, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R10, CX - RORQ $0x29, DX - ANDQ R11, CX - XORQ AX, DX - MOVQ R10, AX - NOTQ AX - ADDQ DX, R13 - ANDQ R12, AX - XORQ CX, AX - ADDQ R13, AX - MOVQ R14, DI - MOVQ R8, BX - RORQ $0x1c, DI - MOVQ R14, DX - ANDQ R15, BX - RORQ $0x22, DX - MOVQ R14, CX - ANDQ R8, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R14, DX - MOVQ R15, CX - RORQ $0x27, DX - ANDQ R14, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R13 - ADDQ AX, R9 - ADDQ AX, R13 - MOVQ 456(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 352(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 416(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 344(BP), BX - ADDQ BX, AX - MOVQ AX, 472(BP) - MOVQ $0x8cc702081a6439ec, DX - ADDQ AX, R12 - MOVQ R9, AX - ADDQ DX, R12 - MOVQ R9, CX - RORQ $0x0e, AX - MOVQ R9, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R9, CX - RORQ $0x29, DX - ANDQ R10, CX - XORQ AX, DX - MOVQ R9, AX - NOTQ AX - ADDQ DX, R12 - ANDQ R11, AX - XORQ CX, AX - ADDQ R12, AX - MOVQ R13, DI - MOVQ R15, BX - RORQ $0x1c, DI - MOVQ R13, DX - ANDQ R14, BX - RORQ $0x22, DX - MOVQ R13, CX - ANDQ R15, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R13, DX - MOVQ R14, CX - RORQ $0x27, DX - ANDQ R13, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R12 - ADDQ AX, R8 - ADDQ AX, R12 - MOVQ 464(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 360(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 424(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 352(BP), BX - ADDQ BX, AX - MOVQ AX, 480(BP) - MOVQ $0x90befffa23631e28, DX - ADDQ AX, R11 - MOVQ R8, AX - ADDQ DX, R11 - MOVQ R8, CX - RORQ $0x0e, AX - MOVQ R8, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R8, CX - RORQ $0x29, DX - ANDQ R9, CX - XORQ AX, DX - MOVQ R8, AX - NOTQ AX - ADDQ DX, R11 - ANDQ R10, AX - XORQ CX, AX - ADDQ R11, AX - MOVQ R12, DI - MOVQ R14, BX - RORQ $0x1c, DI - MOVQ R12, DX - ANDQ R13, BX - RORQ $0x22, DX - MOVQ R12, CX - ANDQ R14, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R12, DX - MOVQ R13, CX - RORQ $0x27, DX - ANDQ R12, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R11 - ADDQ AX, R15 - ADDQ AX, R11 - MOVQ 472(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 368(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 432(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 360(BP), BX - ADDQ BX, AX - MOVQ AX, 488(BP) - MOVQ $0xa4506cebde82bde9, DX - ADDQ AX, R10 - MOVQ R15, AX - ADDQ DX, R10 - MOVQ R15, CX - RORQ $0x0e, AX - MOVQ R15, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R15, CX - RORQ $0x29, DX - ANDQ R8, CX - XORQ AX, DX - MOVQ R15, AX - NOTQ AX - ADDQ DX, R10 - ANDQ R9, AX - XORQ CX, AX - ADDQ R10, AX - MOVQ R11, DI - MOVQ R13, BX - RORQ $0x1c, DI - MOVQ R11, DX - ANDQ R12, BX - RORQ $0x22, DX - MOVQ R11, CX - ANDQ R13, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R11, DX - MOVQ R12, CX - RORQ $0x27, DX - ANDQ R11, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R10 - ADDQ AX, R14 - ADDQ AX, R10 - MOVQ 480(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 376(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 440(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 368(BP), BX - ADDQ BX, AX - MOVQ AX, 496(BP) - MOVQ $0xbef9a3f7b2c67915, DX - ADDQ AX, R9 - MOVQ R14, AX - ADDQ DX, R9 - MOVQ R14, CX - RORQ $0x0e, AX - MOVQ R14, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R14, CX - RORQ $0x29, DX - ANDQ R15, CX - XORQ AX, DX - MOVQ R14, AX - NOTQ AX - ADDQ DX, R9 - ANDQ R8, AX - XORQ CX, AX - ADDQ R9, AX - MOVQ R10, DI - MOVQ R12, BX - RORQ $0x1c, DI - MOVQ R10, DX - ANDQ R11, BX - RORQ $0x22, DX - MOVQ R10, CX - ANDQ R12, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R10, DX - MOVQ R11, CX - RORQ $0x27, DX - ANDQ R10, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R9 - ADDQ AX, R13 - ADDQ AX, R9 - MOVQ 488(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 384(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 448(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 376(BP), BX - ADDQ BX, AX - MOVQ AX, 504(BP) - MOVQ $0xc67178f2e372532b, DX - ADDQ AX, R8 - MOVQ R13, AX - ADDQ DX, R8 - MOVQ R13, CX - RORQ $0x0e, AX - MOVQ R13, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R13, CX - RORQ $0x29, DX - ANDQ R14, CX - XORQ AX, DX - MOVQ R13, AX - NOTQ AX - ADDQ DX, R8 - ANDQ R15, AX - XORQ CX, AX - ADDQ R8, AX - MOVQ R9, DI - MOVQ R11, BX - RORQ $0x1c, DI - MOVQ R9, DX - ANDQ R10, BX - RORQ $0x22, DX - MOVQ R9, CX - ANDQ R11, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R9, DX - MOVQ R10, CX - RORQ $0x27, DX - ANDQ R9, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R8 - ADDQ AX, R12 - ADDQ AX, R8 - MOVQ 496(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 392(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 456(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 384(BP), BX - ADDQ BX, AX - MOVQ AX, 512(BP) - MOVQ $0xca273eceea26619c, DX - ADDQ AX, R15 - MOVQ R12, AX - ADDQ DX, R15 - MOVQ R12, CX - RORQ $0x0e, AX - MOVQ R12, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R12, CX - RORQ $0x29, DX - ANDQ R13, CX - XORQ AX, DX - MOVQ R12, AX - NOTQ AX - ADDQ DX, R15 - ANDQ R14, AX - XORQ CX, AX - ADDQ R15, AX - MOVQ R8, DI - MOVQ R10, BX - RORQ $0x1c, DI - MOVQ R8, DX - ANDQ R9, BX - RORQ $0x22, DX - MOVQ R8, CX - ANDQ R10, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R8, DX - MOVQ R9, CX - RORQ $0x27, DX - ANDQ R8, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R15 - ADDQ AX, R11 - ADDQ AX, R15 - MOVQ 504(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 400(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 464(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 392(BP), BX - ADDQ BX, AX - MOVQ AX, 520(BP) - MOVQ $0xd186b8c721c0c207, DX - ADDQ AX, R14 - MOVQ R11, AX - ADDQ DX, R14 - MOVQ R11, CX - RORQ $0x0e, AX - MOVQ R11, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R11, CX - RORQ $0x29, DX - ANDQ R12, CX - XORQ AX, DX - MOVQ R11, AX - NOTQ AX - ADDQ DX, R14 - ANDQ R13, AX - XORQ CX, AX - ADDQ R14, AX - MOVQ R15, DI - MOVQ R9, BX - RORQ $0x1c, DI - MOVQ R15, DX - ANDQ R8, BX - RORQ $0x22, DX - MOVQ R15, CX - ANDQ R9, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R15, DX - MOVQ R8, CX - RORQ $0x27, DX - ANDQ R15, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R14 - ADDQ AX, R10 - ADDQ AX, R14 - MOVQ 512(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 408(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 472(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 400(BP), BX - ADDQ BX, AX - MOVQ AX, 528(BP) - MOVQ $0xeada7dd6cde0eb1e, DX - ADDQ AX, R13 - MOVQ R10, AX - ADDQ DX, R13 - MOVQ R10, CX - RORQ $0x0e, AX - MOVQ R10, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R10, CX - RORQ $0x29, DX - ANDQ R11, CX - XORQ AX, DX - MOVQ R10, AX - NOTQ AX - ADDQ DX, R13 - ANDQ R12, AX - XORQ CX, AX - ADDQ R13, AX - MOVQ R14, DI - MOVQ R8, BX - RORQ $0x1c, DI - MOVQ R14, DX - ANDQ R15, BX - RORQ $0x22, DX - MOVQ R14, CX - ANDQ R8, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R14, DX - MOVQ R15, CX - RORQ $0x27, DX - ANDQ R14, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R13 - ADDQ AX, R9 - ADDQ AX, R13 - MOVQ 520(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 416(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 480(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 408(BP), BX - ADDQ BX, AX - MOVQ AX, 536(BP) - MOVQ $0xf57d4f7fee6ed178, DX - ADDQ AX, R12 - MOVQ R9, AX - ADDQ DX, R12 - MOVQ R9, CX - RORQ $0x0e, AX - MOVQ R9, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R9, CX - RORQ $0x29, DX - ANDQ R10, CX - XORQ AX, DX - MOVQ R9, AX - NOTQ AX - ADDQ DX, R12 - ANDQ R11, AX - XORQ CX, AX - ADDQ R12, AX - MOVQ R13, DI - MOVQ R15, BX - RORQ $0x1c, DI - MOVQ R13, DX - ANDQ R14, BX - RORQ $0x22, DX - MOVQ R13, CX - ANDQ R15, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R13, DX - MOVQ R14, CX - RORQ $0x27, DX - ANDQ R13, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R12 - ADDQ AX, R8 - ADDQ AX, R12 - MOVQ 528(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 424(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 488(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 416(BP), BX - ADDQ BX, AX - MOVQ AX, 544(BP) - MOVQ $0x06f067aa72176fba, DX - ADDQ AX, R11 - MOVQ R8, AX - ADDQ DX, R11 - MOVQ R8, CX - RORQ $0x0e, AX - MOVQ R8, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R8, CX - RORQ $0x29, DX - ANDQ R9, CX - XORQ AX, DX - MOVQ R8, AX - NOTQ AX - ADDQ DX, R11 - ANDQ R10, AX - XORQ CX, AX - ADDQ R11, AX - MOVQ R12, DI - MOVQ R14, BX - RORQ $0x1c, DI - MOVQ R12, DX - ANDQ R13, BX - RORQ $0x22, DX - MOVQ R12, CX - ANDQ R14, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R12, DX - MOVQ R13, CX - RORQ $0x27, DX - ANDQ R12, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R11 - ADDQ AX, R15 - ADDQ AX, R11 - MOVQ 536(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 432(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 496(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 424(BP), BX - ADDQ BX, AX - MOVQ AX, 552(BP) - MOVQ $0x0a637dc5a2c898a6, DX - ADDQ AX, R10 - MOVQ R15, AX - ADDQ DX, R10 - MOVQ R15, CX - RORQ $0x0e, AX - MOVQ R15, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R15, CX - RORQ $0x29, DX - ANDQ R8, CX - XORQ AX, DX - MOVQ R15, AX - NOTQ AX - ADDQ DX, R10 - ANDQ R9, AX - XORQ CX, AX - ADDQ R10, AX - MOVQ R11, DI - MOVQ R13, BX - RORQ $0x1c, DI - MOVQ R11, DX - ANDQ R12, BX - RORQ $0x22, DX - MOVQ R11, CX - ANDQ R13, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R11, DX - MOVQ R12, CX - RORQ $0x27, DX - ANDQ R11, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R10 - ADDQ AX, R14 - ADDQ AX, R10 - MOVQ 544(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 440(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 504(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 432(BP), BX - ADDQ BX, AX - MOVQ AX, 560(BP) - MOVQ $0x113f9804bef90dae, DX - ADDQ AX, R9 - MOVQ R14, AX - ADDQ DX, R9 - MOVQ R14, CX - RORQ $0x0e, AX - MOVQ R14, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R14, CX - RORQ $0x29, DX - ANDQ R15, CX - XORQ AX, DX - MOVQ R14, AX - NOTQ AX - ADDQ DX, R9 - ANDQ R8, AX - XORQ CX, AX - ADDQ R9, AX - MOVQ R10, DI - MOVQ R12, BX - RORQ $0x1c, DI - MOVQ R10, DX - ANDQ R11, BX - RORQ $0x22, DX - MOVQ R10, CX - ANDQ R12, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R10, DX - MOVQ R11, CX - RORQ $0x27, DX - ANDQ R10, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R9 - ADDQ AX, R13 - ADDQ AX, R9 - MOVQ 552(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 448(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 512(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 440(BP), BX - ADDQ BX, AX - MOVQ AX, 568(BP) - MOVQ $0x1b710b35131c471b, DX - ADDQ AX, R8 - MOVQ R13, AX - ADDQ DX, R8 - MOVQ R13, CX - RORQ $0x0e, AX - MOVQ R13, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R13, CX - RORQ $0x29, DX - ANDQ R14, CX - XORQ AX, DX - MOVQ R13, AX - NOTQ AX - ADDQ DX, R8 - ANDQ R15, AX - XORQ CX, AX - ADDQ R8, AX - MOVQ R9, DI - MOVQ R11, BX - RORQ $0x1c, DI - MOVQ R9, DX - ANDQ R10, BX - RORQ $0x22, DX - MOVQ R9, CX - ANDQ R11, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R9, DX - MOVQ R10, CX - RORQ $0x27, DX - ANDQ R9, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R8 - ADDQ AX, R12 - ADDQ AX, R8 - MOVQ 560(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 456(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 520(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 448(BP), BX - ADDQ BX, AX - MOVQ AX, 576(BP) - MOVQ $0x28db77f523047d84, DX - ADDQ AX, R15 - MOVQ R12, AX - ADDQ DX, R15 - MOVQ R12, CX - RORQ $0x0e, AX - MOVQ R12, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R12, CX - RORQ $0x29, DX - ANDQ R13, CX - XORQ AX, DX - MOVQ R12, AX - NOTQ AX - ADDQ DX, R15 - ANDQ R14, AX - XORQ CX, AX - ADDQ R15, AX - MOVQ R8, DI - MOVQ R10, BX - RORQ $0x1c, DI - MOVQ R8, DX - ANDQ R9, BX - RORQ $0x22, DX - MOVQ R8, CX - ANDQ R10, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R8, DX - MOVQ R9, CX - RORQ $0x27, DX - ANDQ R8, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R15 - ADDQ AX, R11 - ADDQ AX, R15 - MOVQ 568(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 464(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 528(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 456(BP), BX - ADDQ BX, AX - MOVQ AX, 584(BP) - MOVQ $0x32caab7b40c72493, DX - ADDQ AX, R14 - MOVQ R11, AX - ADDQ DX, R14 - MOVQ R11, CX - RORQ $0x0e, AX - MOVQ R11, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R11, CX - RORQ $0x29, DX - ANDQ R12, CX - XORQ AX, DX - MOVQ R11, AX - NOTQ AX - ADDQ DX, R14 - ANDQ R13, AX - XORQ CX, AX - ADDQ R14, AX - MOVQ R15, DI - MOVQ R9, BX - RORQ $0x1c, DI - MOVQ R15, DX - ANDQ R8, BX - RORQ $0x22, DX - MOVQ R15, CX - ANDQ R9, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R15, DX - MOVQ R8, CX - RORQ $0x27, DX - ANDQ R15, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R14 - ADDQ AX, R10 - ADDQ AX, R14 - MOVQ 576(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 472(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 536(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 464(BP), BX - ADDQ BX, AX - MOVQ AX, 592(BP) - MOVQ $0x3c9ebe0a15c9bebc, DX - ADDQ AX, R13 - MOVQ R10, AX - ADDQ DX, R13 - MOVQ R10, CX - RORQ $0x0e, AX - MOVQ R10, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R10, CX - RORQ $0x29, DX - ANDQ R11, CX - XORQ AX, DX - MOVQ R10, AX - NOTQ AX - ADDQ DX, R13 - ANDQ R12, AX - XORQ CX, AX - ADDQ R13, AX - MOVQ R14, DI - MOVQ R8, BX - RORQ $0x1c, DI - MOVQ R14, DX - ANDQ R15, BX - RORQ $0x22, DX - MOVQ R14, CX - ANDQ R8, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R14, DX - MOVQ R15, CX - RORQ $0x27, DX - ANDQ R14, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R13 - ADDQ AX, R9 - ADDQ AX, R13 - MOVQ 584(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 480(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 544(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 472(BP), BX - ADDQ BX, AX - MOVQ AX, 600(BP) - MOVQ $0x431d67c49c100d4c, DX - ADDQ AX, R12 - MOVQ R9, AX - ADDQ DX, R12 - MOVQ R9, CX - RORQ $0x0e, AX - MOVQ R9, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R9, CX - RORQ $0x29, DX - ANDQ R10, CX - XORQ AX, DX - MOVQ R9, AX - NOTQ AX - ADDQ DX, R12 - ANDQ R11, AX - XORQ CX, AX - ADDQ R12, AX - MOVQ R13, DI - MOVQ R15, BX - RORQ $0x1c, DI - MOVQ R13, DX - ANDQ R14, BX - RORQ $0x22, DX - MOVQ R13, CX - ANDQ R15, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R13, DX - MOVQ R14, CX - RORQ $0x27, DX - ANDQ R13, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R12 - ADDQ AX, R8 - ADDQ AX, R12 - MOVQ 592(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 488(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 552(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 480(BP), BX - ADDQ BX, AX - MOVQ AX, 608(BP) - MOVQ $0x4cc5d4becb3e42b6, DX - ADDQ AX, R11 - MOVQ R8, AX - ADDQ DX, R11 - MOVQ R8, CX - RORQ $0x0e, AX - MOVQ R8, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R8, CX - RORQ $0x29, DX - ANDQ R9, CX - XORQ AX, DX - MOVQ R8, AX - NOTQ AX - ADDQ DX, R11 - ANDQ R10, AX - XORQ CX, AX - ADDQ R11, AX - MOVQ R12, DI - MOVQ R14, BX - RORQ $0x1c, DI - MOVQ R12, DX - ANDQ R13, BX - RORQ $0x22, DX - MOVQ R12, CX - ANDQ R14, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R12, DX - MOVQ R13, CX - RORQ $0x27, DX - ANDQ R12, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R11 - ADDQ AX, R15 - ADDQ AX, R11 - MOVQ 600(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 496(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 560(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 488(BP), BX - ADDQ BX, AX - MOVQ AX, 616(BP) - MOVQ $0x597f299cfc657e2a, DX - ADDQ AX, R10 - MOVQ R15, AX - ADDQ DX, R10 - MOVQ R15, CX - RORQ $0x0e, AX - MOVQ R15, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R15, CX - RORQ $0x29, DX - ANDQ R8, CX - XORQ AX, DX - MOVQ R15, AX - NOTQ AX - ADDQ DX, R10 - ANDQ R9, AX - XORQ CX, AX - ADDQ R10, AX - MOVQ R11, DI - MOVQ R13, BX - RORQ $0x1c, DI - MOVQ R11, DX - ANDQ R12, BX - RORQ $0x22, DX - MOVQ R11, CX - ANDQ R13, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R11, DX - MOVQ R12, CX - RORQ $0x27, DX - ANDQ R11, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R10 - ADDQ AX, R14 - ADDQ AX, R10 - MOVQ 608(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 504(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 568(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 496(BP), BX - ADDQ BX, AX - MOVQ AX, 624(BP) - MOVQ $0x5fcb6fab3ad6faec, DX - ADDQ AX, R9 - MOVQ R14, AX - ADDQ DX, R9 - MOVQ R14, CX - RORQ $0x0e, AX - MOVQ R14, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R14, CX - RORQ $0x29, DX - ANDQ R15, CX - XORQ AX, DX - MOVQ R14, AX - NOTQ AX - ADDQ DX, R9 - ANDQ R8, AX - XORQ CX, AX - ADDQ R9, AX - MOVQ R10, DI - MOVQ R12, BX - RORQ $0x1c, DI - MOVQ R10, DX - ANDQ R11, BX - RORQ $0x22, DX - MOVQ R10, CX - ANDQ R12, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R10, DX - MOVQ R11, CX - RORQ $0x27, DX - ANDQ R10, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R9 - ADDQ AX, R13 - ADDQ AX, R9 - MOVQ 616(BP), AX - MOVQ AX, CX - RORQ $0x13, AX - MOVQ CX, DX - RORQ $0x3d, CX - SHRQ $0x06, DX - MOVQ 512(BP), BX - XORQ CX, AX - MOVQ BX, CX - XORQ DX, AX - RORQ $0x01, BX - MOVQ CX, DX - SHRQ $0x07, DX - RORQ $0x08, CX - ADDQ 576(BP), AX - XORQ CX, BX - XORQ DX, BX - ADDQ 504(BP), BX - ADDQ BX, AX - MOVQ AX, 632(BP) - MOVQ $0x6c44198c4a475817, DX - ADDQ AX, R8 - MOVQ R13, AX - ADDQ DX, R8 - MOVQ R13, CX - RORQ $0x0e, AX - MOVQ R13, DX - RORQ $0x12, CX - XORQ CX, AX - MOVQ R13, CX - RORQ $0x29, DX - ANDQ R14, CX - XORQ AX, DX - MOVQ R13, AX - NOTQ AX - ADDQ DX, R8 - ANDQ R15, AX - XORQ CX, AX - ADDQ R8, AX - MOVQ R9, DI - MOVQ R11, BX - RORQ $0x1c, DI - MOVQ R9, DX - ANDQ R10, BX - RORQ $0x22, DX - MOVQ R9, CX - ANDQ R11, CX - XORQ DX, DI - XORQ CX, BX - MOVQ R9, DX - MOVQ R10, CX - RORQ $0x27, DX - ANDQ R9, CX - XORQ CX, BX - XORQ DX, DI - ADDQ DI, BX - MOVQ BX, R8 - ADDQ AX, R12 - ADDQ AX, R8 - MOVQ dig+0(FP), BP - ADDQ (BP), R8 - MOVQ R8, (BP) - ADDQ 8(BP), R9 - MOVQ R9, 8(BP) - ADDQ 16(BP), R10 - MOVQ R10, 16(BP) - ADDQ 24(BP), R11 - MOVQ R11, 24(BP) - ADDQ 32(BP), R12 - MOVQ R12, 32(BP) - ADDQ 40(BP), R13 - MOVQ R13, 40(BP) - ADDQ 48(BP), R14 - MOVQ R14, 48(BP) - ADDQ 56(BP), R15 - MOVQ R15, 56(BP) - ADDQ $0x80, SI - CMPQ SI, 640(SP) - JB loop - -end: - RET - -DATA PSHUFFLE_BYTE_FLIP_MASK<>+0(SB)/8, $0x0001020304050607 -DATA PSHUFFLE_BYTE_FLIP_MASK<>+8(SB)/8, $0x08090a0b0c0d0e0f -DATA PSHUFFLE_BYTE_FLIP_MASK<>+16(SB)/8, $0x1011121314151617 -DATA PSHUFFLE_BYTE_FLIP_MASK<>+24(SB)/8, $0x18191a1b1c1d1e1f -GLOBL PSHUFFLE_BYTE_FLIP_MASK<>(SB), RODATA|NOPTR, $32 - // func blockAVX2(dig *Digest, p []byte) // Requires: AVX, AVX2, BMI2 TEXT ·blockAVX2(SB), NOSPLIT, $56-32 @@ -5391,6 +891,12 @@ done_hash: VZEROUPPER RET +DATA PSHUFFLE_BYTE_FLIP_MASK<>+0(SB)/8, $0x0001020304050607 +DATA PSHUFFLE_BYTE_FLIP_MASK<>+8(SB)/8, $0x08090a0b0c0d0e0f +DATA PSHUFFLE_BYTE_FLIP_MASK<>+16(SB)/8, $0x1011121314151617 +DATA PSHUFFLE_BYTE_FLIP_MASK<>+24(SB)/8, $0x18191a1b1c1d1e1f +GLOBL PSHUFFLE_BYTE_FLIP_MASK<>(SB), RODATA|NOPTR, $32 + DATA MASK_YMM_LO<>+0(SB)/8, $0x0000000000000000 DATA MASK_YMM_LO<>+8(SB)/8, $0x0000000000000000 DATA MASK_YMM_LO<>+16(SB)/8, $0xffffffffffffffff diff --git a/src/crypto/sha1/_asm/sha1block_amd64_asm.go b/src/crypto/sha1/_asm/sha1block_amd64_asm.go index 575c5de747..dbd171c08b 100644 --- a/src/crypto/sha1/_asm/sha1block_amd64_asm.go +++ b/src/crypto/sha1/_asm/sha1block_amd64_asm.go @@ -23,232 +23,11 @@ import ( func main() { Package("crypto/sha1") ConstraintExpr("!purego") - blockAMD64() blockAVX2() blockSHANI() Generate() } -func LOAD(index int) { - MOVL(Mem{Base: SI}.Offset(index*4), R10L) - BSWAPL(R10L) - MOVL(R10L, Mem{Base: SP}.Offset(index*4)) -} - -func SHUFFLE(index int) { - MOVL(Mem{Base: SP}.Offset(((index)&0xf)*4), R10L) - XORL(Mem{Base: SP}.Offset(((index-3)&0xf)*4), R10L) - XORL(Mem{Base: SP}.Offset(((index-8)&0xf)*4), R10L) - XORL(Mem{Base: SP}.Offset(((index-14)&0xf)*4), R10L) - ROLL(Imm(1), R10L) - MOVL(R10L, Mem{Base: SP}.Offset(((index)&0xf)*4)) -} - -func FUNC1(a, b, c, d, e GPPhysical) { - MOVL(d, R9L) - XORL(c, R9L) - ANDL(b, R9L) - XORL(d, R9L) -} - -func FUNC2(a, b, c, d, e GPPhysical) { - MOVL(b, R9L) - XORL(c, R9L) - XORL(d, R9L) -} - -func FUNC3(a, b, c, d, e GPPhysical) { - MOVL(b, R8L) - ORL(c, R8L) - ANDL(d, R8L) - MOVL(b, R9L) - ANDL(c, R9L) - ORL(R8L, R9L) -} - -func FUNC4(a, b, c, d, e GPPhysical) { - FUNC2(a, b, c, d, e) -} - -func MIX(a, b, c, d, e GPPhysical, konst int) { - ROLL(Imm(30), b) - ADDL(R9L, e) - MOVL(a, R8L) - ROLL(Imm(5), R8L) - LEAL(Mem{Base: e, Index: R10L, Scale: 1}.Offset(konst), e) - ADDL(R8L, e) -} - -func ROUND1(a, b, c, d, e GPPhysical, index int) { - LOAD(index) - FUNC1(a, b, c, d, e) - MIX(a, b, c, d, e, 0x5A827999) -} - -func ROUND1x(a, b, c, d, e GPPhysical, index int) { - SHUFFLE(index) - FUNC1(a, b, c, d, e) - MIX(a, b, c, d, e, 0x5A827999) -} - -func ROUND2(a, b, c, d, e GPPhysical, index int) { - SHUFFLE(index) - FUNC2(a, b, c, d, e) - MIX(a, b, c, d, e, 0x6ED9EBA1) -} - -func ROUND3(a, b, c, d, e GPPhysical, index int) { - SHUFFLE(index) - FUNC3(a, b, c, d, e) - MIX(a, b, c, d, e, 0x8F1BBCDC) -} - -func ROUND4(a, b, c, d, e GPPhysical, index int) { - SHUFFLE(index) - FUNC4(a, b, c, d, e) - MIX(a, b, c, d, e, 0xCA62C1D6) -} - -func blockAMD64() { - Implement("blockAMD64") - Attributes(NOSPLIT) - AllocLocal(64) - - Load(Param("dig"), RBP) - Load(Param("p").Base(), RSI) - Load(Param("p").Len(), RDX) - SHRQ(Imm(6), RDX) - SHLQ(Imm(6), RDX) - - LEAQ(Mem{Base: SI, Index: DX, Scale: 1}, RDI) - MOVL(Mem{Base: BP}.Offset(0*4), EAX) - MOVL(Mem{Base: BP}.Offset(1*4), EBX) - MOVL(Mem{Base: BP}.Offset(2*4), ECX) - MOVL(Mem{Base: BP}.Offset(3*4), EDX) - MOVL(Mem{Base: BP}.Offset(4*4), EBP) - - CMPQ(RSI, RDI) - JEQ(LabelRef("end")) - - loop_amd64() - end() -} - -func loop_amd64() { - Label("loop") - MOVL(EAX, R11L) - MOVL(EBX, R12L) - MOVL(ECX, R13L) - MOVL(EDX, R14L) - MOVL(EBP, R15L) - - ROUND1(EAX, EBX, ECX, EDX, EBP, 0) - ROUND1(EBP, EAX, EBX, ECX, EDX, 1) - ROUND1(EDX, EBP, EAX, EBX, ECX, 2) - ROUND1(ECX, EDX, EBP, EAX, EBX, 3) - ROUND1(EBX, ECX, EDX, EBP, EAX, 4) - ROUND1(EAX, EBX, ECX, EDX, EBP, 5) - ROUND1(EBP, EAX, EBX, ECX, EDX, 6) - ROUND1(EDX, EBP, EAX, EBX, ECX, 7) - ROUND1(ECX, EDX, EBP, EAX, EBX, 8) - ROUND1(EBX, ECX, EDX, EBP, EAX, 9) - ROUND1(EAX, EBX, ECX, EDX, EBP, 10) - ROUND1(EBP, EAX, EBX, ECX, EDX, 11) - ROUND1(EDX, EBP, EAX, EBX, ECX, 12) - ROUND1(ECX, EDX, EBP, EAX, EBX, 13) - ROUND1(EBX, ECX, EDX, EBP, EAX, 14) - ROUND1(EAX, EBX, ECX, EDX, EBP, 15) - - ROUND1x(EBP, EAX, EBX, ECX, EDX, 16) - ROUND1x(EDX, EBP, EAX, EBX, ECX, 17) - ROUND1x(ECX, EDX, EBP, EAX, EBX, 18) - ROUND1x(EBX, ECX, EDX, EBP, EAX, 19) - - ROUND2(EAX, EBX, ECX, EDX, EBP, 20) - ROUND2(EBP, EAX, EBX, ECX, EDX, 21) - ROUND2(EDX, EBP, EAX, EBX, ECX, 22) - ROUND2(ECX, EDX, EBP, EAX, EBX, 23) - ROUND2(EBX, ECX, EDX, EBP, EAX, 24) - ROUND2(EAX, EBX, ECX, EDX, EBP, 25) - ROUND2(EBP, EAX, EBX, ECX, EDX, 26) - ROUND2(EDX, EBP, EAX, EBX, ECX, 27) - ROUND2(ECX, EDX, EBP, EAX, EBX, 28) - ROUND2(EBX, ECX, EDX, EBP, EAX, 29) - ROUND2(EAX, EBX, ECX, EDX, EBP, 30) - ROUND2(EBP, EAX, EBX, ECX, EDX, 31) - ROUND2(EDX, EBP, EAX, EBX, ECX, 32) - ROUND2(ECX, EDX, EBP, EAX, EBX, 33) - ROUND2(EBX, ECX, EDX, EBP, EAX, 34) - ROUND2(EAX, EBX, ECX, EDX, EBP, 35) - ROUND2(EBP, EAX, EBX, ECX, EDX, 36) - ROUND2(EDX, EBP, EAX, EBX, ECX, 37) - ROUND2(ECX, EDX, EBP, EAX, EBX, 38) - ROUND2(EBX, ECX, EDX, EBP, EAX, 39) - - ROUND3(EAX, EBX, ECX, EDX, EBP, 40) - ROUND3(EBP, EAX, EBX, ECX, EDX, 41) - ROUND3(EDX, EBP, EAX, EBX, ECX, 42) - ROUND3(ECX, EDX, EBP, EAX, EBX, 43) - ROUND3(EBX, ECX, EDX, EBP, EAX, 44) - ROUND3(EAX, EBX, ECX, EDX, EBP, 45) - ROUND3(EBP, EAX, EBX, ECX, EDX, 46) - ROUND3(EDX, EBP, EAX, EBX, ECX, 47) - ROUND3(ECX, EDX, EBP, EAX, EBX, 48) - ROUND3(EBX, ECX, EDX, EBP, EAX, 49) - ROUND3(EAX, EBX, ECX, EDX, EBP, 50) - ROUND3(EBP, EAX, EBX, ECX, EDX, 51) - ROUND3(EDX, EBP, EAX, EBX, ECX, 52) - ROUND3(ECX, EDX, EBP, EAX, EBX, 53) - ROUND3(EBX, ECX, EDX, EBP, EAX, 54) - ROUND3(EAX, EBX, ECX, EDX, EBP, 55) - ROUND3(EBP, EAX, EBX, ECX, EDX, 56) - ROUND3(EDX, EBP, EAX, EBX, ECX, 57) - ROUND3(ECX, EDX, EBP, EAX, EBX, 58) - ROUND3(EBX, ECX, EDX, EBP, EAX, 59) - - ROUND4(EAX, EBX, ECX, EDX, EBP, 60) - ROUND4(EBP, EAX, EBX, ECX, EDX, 61) - ROUND4(EDX, EBP, EAX, EBX, ECX, 62) - ROUND4(ECX, EDX, EBP, EAX, EBX, 63) - ROUND4(EBX, ECX, EDX, EBP, EAX, 64) - ROUND4(EAX, EBX, ECX, EDX, EBP, 65) - ROUND4(EBP, EAX, EBX, ECX, EDX, 66) - ROUND4(EDX, EBP, EAX, EBX, ECX, 67) - ROUND4(ECX, EDX, EBP, EAX, EBX, 68) - ROUND4(EBX, ECX, EDX, EBP, EAX, 69) - ROUND4(EAX, EBX, ECX, EDX, EBP, 70) - ROUND4(EBP, EAX, EBX, ECX, EDX, 71) - ROUND4(EDX, EBP, EAX, EBX, ECX, 72) - ROUND4(ECX, EDX, EBP, EAX, EBX, 73) - ROUND4(EBX, ECX, EDX, EBP, EAX, 74) - ROUND4(EAX, EBX, ECX, EDX, EBP, 75) - ROUND4(EBP, EAX, EBX, ECX, EDX, 76) - ROUND4(EDX, EBP, EAX, EBX, ECX, 77) - ROUND4(ECX, EDX, EBP, EAX, EBX, 78) - ROUND4(EBX, ECX, EDX, EBP, EAX, 79) - - ADDL(R11L, EAX) - ADDL(R12L, EBX) - ADDL(R13L, ECX) - ADDL(R14L, EDX) - ADDL(R15L, EBP) - - ADDQ(Imm(64), RSI) - CMPQ(RSI, RDI) - JB(LabelRef("loop")) -} - -func end() { - Label("end") - Load(Param("dig"), RDI) - MOVL(EAX, Mem{Base: DI}.Offset(0*4)) - MOVL(EBX, Mem{Base: DI}.Offset(1*4)) - MOVL(ECX, Mem{Base: DI}.Offset(2*4)) - MOVL(EDX, Mem{Base: DI}.Offset(3*4)) - MOVL(EBP, Mem{Base: DI}.Offset(4*4)) - RET() -} - // This is the implementation using AVX2, BMI1 and BMI2. It is based on: // "SHA-1 implementation with Intel(R) AVX2 instruction set extensions" // From http://software.intel.com/en-us/articles diff --git a/src/crypto/sha1/sha1block_amd64.go b/src/crypto/sha1/sha1block_amd64.go index a497d41144..0f92f4b5f5 100644 --- a/src/crypto/sha1/sha1block_amd64.go +++ b/src/crypto/sha1/sha1block_amd64.go @@ -11,9 +11,6 @@ import "internal/cpu" //go:noescape func blockAVX2(dig *digest, p []byte) -//go:noescape -func blockAMD64(dig *digest, p []byte) - //go:noescape func blockSHANI(dig *digest, p []byte) @@ -24,19 +21,18 @@ func block(dig *digest, p []byte) { if useSHANI { blockSHANI(dig, p) } else if useAVX2 && len(p) >= 256 { - // blockAVX2 calculates sha1 for 2 block per iteration - // it also interleaves precalculation for next block. - // So it may read up-to 192 bytes past end of p - // We may add checks inside blockAVX2, but this will - // just turn it into a copy of blockAMD64, - // so call it directly, instead. + // blockAVX2 calculates sha1 for 2 block per iteration and also + // interleaves precalculation for next block. So it may read up-to 192 + // bytes past end of p. We could add checks inside blockAVX2, but this + // would just turn it into a copy of the old pre-AVX2 amd64 SHA1 + // assembly implementation, so just call blockGeneric instead. safeLen := len(p) - 128 if safeLen%128 != 0 { safeLen -= 64 } blockAVX2(dig, p[:safeLen]) - blockAMD64(dig, p[safeLen:]) + blockGeneric(dig, p[safeLen:]) } else { - blockAMD64(dig, p) + blockGeneric(dig, p) } } diff --git a/src/crypto/sha1/sha1block_amd64.s b/src/crypto/sha1/sha1block_amd64.s index 2a5fd2e8e5..4e0c43ee4e 100644 --- a/src/crypto/sha1/sha1block_amd64.s +++ b/src/crypto/sha1/sha1block_amd64.s @@ -4,1278 +4,6 @@ #include "textflag.h" -// func blockAMD64(dig *digest, p []byte) -TEXT ·blockAMD64(SB), NOSPLIT, $64-32 - MOVQ dig+0(FP), BP - MOVQ p_base+8(FP), SI - MOVQ p_len+16(FP), DX - SHRQ $0x06, DX - SHLQ $0x06, DX - LEAQ (SI)(DX*1), DI - MOVL (BP), AX - MOVL 4(BP), BX - MOVL 8(BP), CX - MOVL 12(BP), DX - MOVL 16(BP), BP - CMPQ SI, DI - JEQ end - -loop: - MOVL AX, R11 - MOVL BX, R12 - MOVL CX, R13 - MOVL DX, R14 - MOVL BP, R15 - MOVL (SI), R10 - BSWAPL R10 - MOVL R10, (SP) - MOVL DX, R9 - XORL CX, R9 - ANDL BX, R9 - XORL DX, R9 - ROLL $0x1e, BX - ADDL R9, BP - MOVL AX, R8 - ROLL $0x05, R8 - LEAL 1518500249(BP)(R10*1), BP - ADDL R8, BP - MOVL 4(SI), R10 - BSWAPL R10 - MOVL R10, 4(SP) - MOVL CX, R9 - XORL BX, R9 - ANDL AX, R9 - XORL CX, R9 - ROLL $0x1e, AX - ADDL R9, DX - MOVL BP, R8 - ROLL $0x05, R8 - LEAL 1518500249(DX)(R10*1), DX - ADDL R8, DX - MOVL 8(SI), R10 - BSWAPL R10 - MOVL R10, 8(SP) - MOVL BX, R9 - XORL AX, R9 - ANDL BP, R9 - XORL BX, R9 - ROLL $0x1e, BP - ADDL R9, CX - MOVL DX, R8 - ROLL $0x05, R8 - LEAL 1518500249(CX)(R10*1), CX - ADDL R8, CX - MOVL 12(SI), R10 - BSWAPL R10 - MOVL R10, 12(SP) - MOVL AX, R9 - XORL BP, R9 - ANDL DX, R9 - XORL AX, R9 - ROLL $0x1e, DX - ADDL R9, BX - MOVL CX, R8 - ROLL $0x05, R8 - LEAL 1518500249(BX)(R10*1), BX - ADDL R8, BX - MOVL 16(SI), R10 - BSWAPL R10 - MOVL R10, 16(SP) - MOVL BP, R9 - XORL DX, R9 - ANDL CX, R9 - XORL BP, R9 - ROLL $0x1e, CX - ADDL R9, AX - MOVL BX, R8 - ROLL $0x05, R8 - LEAL 1518500249(AX)(R10*1), AX - ADDL R8, AX - MOVL 20(SI), R10 - BSWAPL R10 - MOVL R10, 20(SP) - MOVL DX, R9 - XORL CX, R9 - ANDL BX, R9 - XORL DX, R9 - ROLL $0x1e, BX - ADDL R9, BP - MOVL AX, R8 - ROLL $0x05, R8 - LEAL 1518500249(BP)(R10*1), BP - ADDL R8, BP - MOVL 24(SI), R10 - BSWAPL R10 - MOVL R10, 24(SP) - MOVL CX, R9 - XORL BX, R9 - ANDL AX, R9 - XORL CX, R9 - ROLL $0x1e, AX - ADDL R9, DX - MOVL BP, R8 - ROLL $0x05, R8 - LEAL 1518500249(DX)(R10*1), DX - ADDL R8, DX - MOVL 28(SI), R10 - BSWAPL R10 - MOVL R10, 28(SP) - MOVL BX, R9 - XORL AX, R9 - ANDL BP, R9 - XORL BX, R9 - ROLL $0x1e, BP - ADDL R9, CX - MOVL DX, R8 - ROLL $0x05, R8 - LEAL 1518500249(CX)(R10*1), CX - ADDL R8, CX - MOVL 32(SI), R10 - BSWAPL R10 - MOVL R10, 32(SP) - MOVL AX, R9 - XORL BP, R9 - ANDL DX, R9 - XORL AX, R9 - ROLL $0x1e, DX - ADDL R9, BX - MOVL CX, R8 - ROLL $0x05, R8 - LEAL 1518500249(BX)(R10*1), BX - ADDL R8, BX - MOVL 36(SI), R10 - BSWAPL R10 - MOVL R10, 36(SP) - MOVL BP, R9 - XORL DX, R9 - ANDL CX, R9 - XORL BP, R9 - ROLL $0x1e, CX - ADDL R9, AX - MOVL BX, R8 - ROLL $0x05, R8 - LEAL 1518500249(AX)(R10*1), AX - ADDL R8, AX - MOVL 40(SI), R10 - BSWAPL R10 - MOVL R10, 40(SP) - MOVL DX, R9 - XORL CX, R9 - ANDL BX, R9 - XORL DX, R9 - ROLL $0x1e, BX - ADDL R9, BP - MOVL AX, R8 - ROLL $0x05, R8 - LEAL 1518500249(BP)(R10*1), BP - ADDL R8, BP - MOVL 44(SI), R10 - BSWAPL R10 - MOVL R10, 44(SP) - MOVL CX, R9 - XORL BX, R9 - ANDL AX, R9 - XORL CX, R9 - ROLL $0x1e, AX - ADDL R9, DX - MOVL BP, R8 - ROLL $0x05, R8 - LEAL 1518500249(DX)(R10*1), DX - ADDL R8, DX - MOVL 48(SI), R10 - BSWAPL R10 - MOVL R10, 48(SP) - MOVL BX, R9 - XORL AX, R9 - ANDL BP, R9 - XORL BX, R9 - ROLL $0x1e, BP - ADDL R9, CX - MOVL DX, R8 - ROLL $0x05, R8 - LEAL 1518500249(CX)(R10*1), CX - ADDL R8, CX - MOVL 52(SI), R10 - BSWAPL R10 - MOVL R10, 52(SP) - MOVL AX, R9 - XORL BP, R9 - ANDL DX, R9 - XORL AX, R9 - ROLL $0x1e, DX - ADDL R9, BX - MOVL CX, R8 - ROLL $0x05, R8 - LEAL 1518500249(BX)(R10*1), BX - ADDL R8, BX - MOVL 56(SI), R10 - BSWAPL R10 - MOVL R10, 56(SP) - MOVL BP, R9 - XORL DX, R9 - ANDL CX, R9 - XORL BP, R9 - ROLL $0x1e, CX - ADDL R9, AX - MOVL BX, R8 - ROLL $0x05, R8 - LEAL 1518500249(AX)(R10*1), AX - ADDL R8, AX - MOVL 60(SI), R10 - BSWAPL R10 - MOVL R10, 60(SP) - MOVL DX, R9 - XORL CX, R9 - ANDL BX, R9 - XORL DX, R9 - ROLL $0x1e, BX - ADDL R9, BP - MOVL AX, R8 - ROLL $0x05, R8 - LEAL 1518500249(BP)(R10*1), BP - ADDL R8, BP - MOVL (SP), R10 - XORL 52(SP), R10 - XORL 32(SP), R10 - XORL 8(SP), R10 - ROLL $0x01, R10 - MOVL R10, (SP) - MOVL CX, R9 - XORL BX, R9 - ANDL AX, R9 - XORL CX, R9 - ROLL $0x1e, AX - ADDL R9, DX - MOVL BP, R8 - ROLL $0x05, R8 - LEAL 1518500249(DX)(R10*1), DX - ADDL R8, DX - MOVL 4(SP), R10 - XORL 56(SP), R10 - XORL 36(SP), R10 - XORL 12(SP), R10 - ROLL $0x01, R10 - MOVL R10, 4(SP) - MOVL BX, R9 - XORL AX, R9 - ANDL BP, R9 - XORL BX, R9 - ROLL $0x1e, BP - ADDL R9, CX - MOVL DX, R8 - ROLL $0x05, R8 - LEAL 1518500249(CX)(R10*1), CX - ADDL R8, CX - MOVL 8(SP), R10 - XORL 60(SP), R10 - XORL 40(SP), R10 - XORL 16(SP), R10 - ROLL $0x01, R10 - MOVL R10, 8(SP) - MOVL AX, R9 - XORL BP, R9 - ANDL DX, R9 - XORL AX, R9 - ROLL $0x1e, DX - ADDL R9, BX - MOVL CX, R8 - ROLL $0x05, R8 - LEAL 1518500249(BX)(R10*1), BX - ADDL R8, BX - MOVL 12(SP), R10 - XORL (SP), R10 - XORL 44(SP), R10 - XORL 20(SP), R10 - ROLL $0x01, R10 - MOVL R10, 12(SP) - MOVL BP, R9 - XORL DX, R9 - ANDL CX, R9 - XORL BP, R9 - ROLL $0x1e, CX - ADDL R9, AX - MOVL BX, R8 - ROLL $0x05, R8 - LEAL 1518500249(AX)(R10*1), AX - ADDL R8, AX - MOVL 16(SP), R10 - XORL 4(SP), R10 - XORL 48(SP), R10 - XORL 24(SP), R10 - ROLL $0x01, R10 - MOVL R10, 16(SP) - MOVL BX, R9 - XORL CX, R9 - XORL DX, R9 - ROLL $0x1e, BX - ADDL R9, BP - MOVL AX, R8 - ROLL $0x05, R8 - LEAL 1859775393(BP)(R10*1), BP - ADDL R8, BP - MOVL 20(SP), R10 - XORL 8(SP), R10 - XORL 52(SP), R10 - XORL 28(SP), R10 - ROLL $0x01, R10 - MOVL R10, 20(SP) - MOVL AX, R9 - XORL BX, R9 - XORL CX, R9 - ROLL $0x1e, AX - ADDL R9, DX - MOVL BP, R8 - ROLL $0x05, R8 - LEAL 1859775393(DX)(R10*1), DX - ADDL R8, DX - MOVL 24(SP), R10 - XORL 12(SP), R10 - XORL 56(SP), R10 - XORL 32(SP), R10 - ROLL $0x01, R10 - MOVL R10, 24(SP) - MOVL BP, R9 - XORL AX, R9 - XORL BX, R9 - ROLL $0x1e, BP - ADDL R9, CX - MOVL DX, R8 - ROLL $0x05, R8 - LEAL 1859775393(CX)(R10*1), CX - ADDL R8, CX - MOVL 28(SP), R10 - XORL 16(SP), R10 - XORL 60(SP), R10 - XORL 36(SP), R10 - ROLL $0x01, R10 - MOVL R10, 28(SP) - MOVL DX, R9 - XORL BP, R9 - XORL AX, R9 - ROLL $0x1e, DX - ADDL R9, BX - MOVL CX, R8 - ROLL $0x05, R8 - LEAL 1859775393(BX)(R10*1), BX - ADDL R8, BX - MOVL 32(SP), R10 - XORL 20(SP), R10 - XORL (SP), R10 - XORL 40(SP), R10 - ROLL $0x01, R10 - MOVL R10, 32(SP) - MOVL CX, R9 - XORL DX, R9 - XORL BP, R9 - ROLL $0x1e, CX - ADDL R9, AX - MOVL BX, R8 - ROLL $0x05, R8 - LEAL 1859775393(AX)(R10*1), AX - ADDL R8, AX - MOVL 36(SP), R10 - XORL 24(SP), R10 - XORL 4(SP), R10 - XORL 44(SP), R10 - ROLL $0x01, R10 - MOVL R10, 36(SP) - MOVL BX, R9 - XORL CX, R9 - XORL DX, R9 - ROLL $0x1e, BX - ADDL R9, BP - MOVL AX, R8 - ROLL $0x05, R8 - LEAL 1859775393(BP)(R10*1), BP - ADDL R8, BP - MOVL 40(SP), R10 - XORL 28(SP), R10 - XORL 8(SP), R10 - XORL 48(SP), R10 - ROLL $0x01, R10 - MOVL R10, 40(SP) - MOVL AX, R9 - XORL BX, R9 - XORL CX, R9 - ROLL $0x1e, AX - ADDL R9, DX - MOVL BP, R8 - ROLL $0x05, R8 - LEAL 1859775393(DX)(R10*1), DX - ADDL R8, DX - MOVL 44(SP), R10 - XORL 32(SP), R10 - XORL 12(SP), R10 - XORL 52(SP), R10 - ROLL $0x01, R10 - MOVL R10, 44(SP) - MOVL BP, R9 - XORL AX, R9 - XORL BX, R9 - ROLL $0x1e, BP - ADDL R9, CX - MOVL DX, R8 - ROLL $0x05, R8 - LEAL 1859775393(CX)(R10*1), CX - ADDL R8, CX - MOVL 48(SP), R10 - XORL 36(SP), R10 - XORL 16(SP), R10 - XORL 56(SP), R10 - ROLL $0x01, R10 - MOVL R10, 48(SP) - MOVL DX, R9 - XORL BP, R9 - XORL AX, R9 - ROLL $0x1e, DX - ADDL R9, BX - MOVL CX, R8 - ROLL $0x05, R8 - LEAL 1859775393(BX)(R10*1), BX - ADDL R8, BX - MOVL 52(SP), R10 - XORL 40(SP), R10 - XORL 20(SP), R10 - XORL 60(SP), R10 - ROLL $0x01, R10 - MOVL R10, 52(SP) - MOVL CX, R9 - XORL DX, R9 - XORL BP, R9 - ROLL $0x1e, CX - ADDL R9, AX - MOVL BX, R8 - ROLL $0x05, R8 - LEAL 1859775393(AX)(R10*1), AX - ADDL R8, AX - MOVL 56(SP), R10 - XORL 44(SP), R10 - XORL 24(SP), R10 - XORL (SP), R10 - ROLL $0x01, R10 - MOVL R10, 56(SP) - MOVL BX, R9 - XORL CX, R9 - XORL DX, R9 - ROLL $0x1e, BX - ADDL R9, BP - MOVL AX, R8 - ROLL $0x05, R8 - LEAL 1859775393(BP)(R10*1), BP - ADDL R8, BP - MOVL 60(SP), R10 - XORL 48(SP), R10 - XORL 28(SP), R10 - XORL 4(SP), R10 - ROLL $0x01, R10 - MOVL R10, 60(SP) - MOVL AX, R9 - XORL BX, R9 - XORL CX, R9 - ROLL $0x1e, AX - ADDL R9, DX - MOVL BP, R8 - ROLL $0x05, R8 - LEAL 1859775393(DX)(R10*1), DX - ADDL R8, DX - MOVL (SP), R10 - XORL 52(SP), R10 - XORL 32(SP), R10 - XORL 8(SP), R10 - ROLL $0x01, R10 - MOVL R10, (SP) - MOVL BP, R9 - XORL AX, R9 - XORL BX, R9 - ROLL $0x1e, BP - ADDL R9, CX - MOVL DX, R8 - ROLL $0x05, R8 - LEAL 1859775393(CX)(R10*1), CX - ADDL R8, CX - MOVL 4(SP), R10 - XORL 56(SP), R10 - XORL 36(SP), R10 - XORL 12(SP), R10 - ROLL $0x01, R10 - MOVL R10, 4(SP) - MOVL DX, R9 - XORL BP, R9 - XORL AX, R9 - ROLL $0x1e, DX - ADDL R9, BX - MOVL CX, R8 - ROLL $0x05, R8 - LEAL 1859775393(BX)(R10*1), BX - ADDL R8, BX - MOVL 8(SP), R10 - XORL 60(SP), R10 - XORL 40(SP), R10 - XORL 16(SP), R10 - ROLL $0x01, R10 - MOVL R10, 8(SP) - MOVL CX, R9 - XORL DX, R9 - XORL BP, R9 - ROLL $0x1e, CX - ADDL R9, AX - MOVL BX, R8 - ROLL $0x05, R8 - LEAL 1859775393(AX)(R10*1), AX - ADDL R8, AX - MOVL 12(SP), R10 - XORL (SP), R10 - XORL 44(SP), R10 - XORL 20(SP), R10 - ROLL $0x01, R10 - MOVL R10, 12(SP) - MOVL BX, R9 - XORL CX, R9 - XORL DX, R9 - ROLL $0x1e, BX - ADDL R9, BP - MOVL AX, R8 - ROLL $0x05, R8 - LEAL 1859775393(BP)(R10*1), BP - ADDL R8, BP - MOVL 16(SP), R10 - XORL 4(SP), R10 - XORL 48(SP), R10 - XORL 24(SP), R10 - ROLL $0x01, R10 - MOVL R10, 16(SP) - MOVL AX, R9 - XORL BX, R9 - XORL CX, R9 - ROLL $0x1e, AX - ADDL R9, DX - MOVL BP, R8 - ROLL $0x05, R8 - LEAL 1859775393(DX)(R10*1), DX - ADDL R8, DX - MOVL 20(SP), R10 - XORL 8(SP), R10 - XORL 52(SP), R10 - XORL 28(SP), R10 - ROLL $0x01, R10 - MOVL R10, 20(SP) - MOVL BP, R9 - XORL AX, R9 - XORL BX, R9 - ROLL $0x1e, BP - ADDL R9, CX - MOVL DX, R8 - ROLL $0x05, R8 - LEAL 1859775393(CX)(R10*1), CX - ADDL R8, CX - MOVL 24(SP), R10 - XORL 12(SP), R10 - XORL 56(SP), R10 - XORL 32(SP), R10 - ROLL $0x01, R10 - MOVL R10, 24(SP) - MOVL DX, R9 - XORL BP, R9 - XORL AX, R9 - ROLL $0x1e, DX - ADDL R9, BX - MOVL CX, R8 - ROLL $0x05, R8 - LEAL 1859775393(BX)(R10*1), BX - ADDL R8, BX - MOVL 28(SP), R10 - XORL 16(SP), R10 - XORL 60(SP), R10 - XORL 36(SP), R10 - ROLL $0x01, R10 - MOVL R10, 28(SP) - MOVL CX, R9 - XORL DX, R9 - XORL BP, R9 - ROLL $0x1e, CX - ADDL R9, AX - MOVL BX, R8 - ROLL $0x05, R8 - LEAL 1859775393(AX)(R10*1), AX - ADDL R8, AX - MOVL 32(SP), R10 - XORL 20(SP), R10 - XORL (SP), R10 - XORL 40(SP), R10 - ROLL $0x01, R10 - MOVL R10, 32(SP) - MOVL BX, R8 - ORL CX, R8 - ANDL DX, R8 - MOVL BX, R9 - ANDL CX, R9 - ORL R8, R9 - ROLL $0x1e, BX - ADDL R9, BP - MOVL AX, R8 - ROLL $0x05, R8 - LEAL 2400959708(BP)(R10*1), BP - ADDL R8, BP - MOVL 36(SP), R10 - XORL 24(SP), R10 - XORL 4(SP), R10 - XORL 44(SP), R10 - ROLL $0x01, R10 - MOVL R10, 36(SP) - MOVL AX, R8 - ORL BX, R8 - ANDL CX, R8 - MOVL AX, R9 - ANDL BX, R9 - ORL R8, R9 - ROLL $0x1e, AX - ADDL R9, DX - MOVL BP, R8 - ROLL $0x05, R8 - LEAL 2400959708(DX)(R10*1), DX - ADDL R8, DX - MOVL 40(SP), R10 - XORL 28(SP), R10 - XORL 8(SP), R10 - XORL 48(SP), R10 - ROLL $0x01, R10 - MOVL R10, 40(SP) - MOVL BP, R8 - ORL AX, R8 - ANDL BX, R8 - MOVL BP, R9 - ANDL AX, R9 - ORL R8, R9 - ROLL $0x1e, BP - ADDL R9, CX - MOVL DX, R8 - ROLL $0x05, R8 - LEAL 2400959708(CX)(R10*1), CX - ADDL R8, CX - MOVL 44(SP), R10 - XORL 32(SP), R10 - XORL 12(SP), R10 - XORL 52(SP), R10 - ROLL $0x01, R10 - MOVL R10, 44(SP) - MOVL DX, R8 - ORL BP, R8 - ANDL AX, R8 - MOVL DX, R9 - ANDL BP, R9 - ORL R8, R9 - ROLL $0x1e, DX - ADDL R9, BX - MOVL CX, R8 - ROLL $0x05, R8 - LEAL 2400959708(BX)(R10*1), BX - ADDL R8, BX - MOVL 48(SP), R10 - XORL 36(SP), R10 - XORL 16(SP), R10 - XORL 56(SP), R10 - ROLL $0x01, R10 - MOVL R10, 48(SP) - MOVL CX, R8 - ORL DX, R8 - ANDL BP, R8 - MOVL CX, R9 - ANDL DX, R9 - ORL R8, R9 - ROLL $0x1e, CX - ADDL R9, AX - MOVL BX, R8 - ROLL $0x05, R8 - LEAL 2400959708(AX)(R10*1), AX - ADDL R8, AX - MOVL 52(SP), R10 - XORL 40(SP), R10 - XORL 20(SP), R10 - XORL 60(SP), R10 - ROLL $0x01, R10 - MOVL R10, 52(SP) - MOVL BX, R8 - ORL CX, R8 - ANDL DX, R8 - MOVL BX, R9 - ANDL CX, R9 - ORL R8, R9 - ROLL $0x1e, BX - ADDL R9, BP - MOVL AX, R8 - ROLL $0x05, R8 - LEAL 2400959708(BP)(R10*1), BP - ADDL R8, BP - MOVL 56(SP), R10 - XORL 44(SP), R10 - XORL 24(SP), R10 - XORL (SP), R10 - ROLL $0x01, R10 - MOVL R10, 56(SP) - MOVL AX, R8 - ORL BX, R8 - ANDL CX, R8 - MOVL AX, R9 - ANDL BX, R9 - ORL R8, R9 - ROLL $0x1e, AX - ADDL R9, DX - MOVL BP, R8 - ROLL $0x05, R8 - LEAL 2400959708(DX)(R10*1), DX - ADDL R8, DX - MOVL 60(SP), R10 - XORL 48(SP), R10 - XORL 28(SP), R10 - XORL 4(SP), R10 - ROLL $0x01, R10 - MOVL R10, 60(SP) - MOVL BP, R8 - ORL AX, R8 - ANDL BX, R8 - MOVL BP, R9 - ANDL AX, R9 - ORL R8, R9 - ROLL $0x1e, BP - ADDL R9, CX - MOVL DX, R8 - ROLL $0x05, R8 - LEAL 2400959708(CX)(R10*1), CX - ADDL R8, CX - MOVL (SP), R10 - XORL 52(SP), R10 - XORL 32(SP), R10 - XORL 8(SP), R10 - ROLL $0x01, R10 - MOVL R10, (SP) - MOVL DX, R8 - ORL BP, R8 - ANDL AX, R8 - MOVL DX, R9 - ANDL BP, R9 - ORL R8, R9 - ROLL $0x1e, DX - ADDL R9, BX - MOVL CX, R8 - ROLL $0x05, R8 - LEAL 2400959708(BX)(R10*1), BX - ADDL R8, BX - MOVL 4(SP), R10 - XORL 56(SP), R10 - XORL 36(SP), R10 - XORL 12(SP), R10 - ROLL $0x01, R10 - MOVL R10, 4(SP) - MOVL CX, R8 - ORL DX, R8 - ANDL BP, R8 - MOVL CX, R9 - ANDL DX, R9 - ORL R8, R9 - ROLL $0x1e, CX - ADDL R9, AX - MOVL BX, R8 - ROLL $0x05, R8 - LEAL 2400959708(AX)(R10*1), AX - ADDL R8, AX - MOVL 8(SP), R10 - XORL 60(SP), R10 - XORL 40(SP), R10 - XORL 16(SP), R10 - ROLL $0x01, R10 - MOVL R10, 8(SP) - MOVL BX, R8 - ORL CX, R8 - ANDL DX, R8 - MOVL BX, R9 - ANDL CX, R9 - ORL R8, R9 - ROLL $0x1e, BX - ADDL R9, BP - MOVL AX, R8 - ROLL $0x05, R8 - LEAL 2400959708(BP)(R10*1), BP - ADDL R8, BP - MOVL 12(SP), R10 - XORL (SP), R10 - XORL 44(SP), R10 - XORL 20(SP), R10 - ROLL $0x01, R10 - MOVL R10, 12(SP) - MOVL AX, R8 - ORL BX, R8 - ANDL CX, R8 - MOVL AX, R9 - ANDL BX, R9 - ORL R8, R9 - ROLL $0x1e, AX - ADDL R9, DX - MOVL BP, R8 - ROLL $0x05, R8 - LEAL 2400959708(DX)(R10*1), DX - ADDL R8, DX - MOVL 16(SP), R10 - XORL 4(SP), R10 - XORL 48(SP), R10 - XORL 24(SP), R10 - ROLL $0x01, R10 - MOVL R10, 16(SP) - MOVL BP, R8 - ORL AX, R8 - ANDL BX, R8 - MOVL BP, R9 - ANDL AX, R9 - ORL R8, R9 - ROLL $0x1e, BP - ADDL R9, CX - MOVL DX, R8 - ROLL $0x05, R8 - LEAL 2400959708(CX)(R10*1), CX - ADDL R8, CX - MOVL 20(SP), R10 - XORL 8(SP), R10 - XORL 52(SP), R10 - XORL 28(SP), R10 - ROLL $0x01, R10 - MOVL R10, 20(SP) - MOVL DX, R8 - ORL BP, R8 - ANDL AX, R8 - MOVL DX, R9 - ANDL BP, R9 - ORL R8, R9 - ROLL $0x1e, DX - ADDL R9, BX - MOVL CX, R8 - ROLL $0x05, R8 - LEAL 2400959708(BX)(R10*1), BX - ADDL R8, BX - MOVL 24(SP), R10 - XORL 12(SP), R10 - XORL 56(SP), R10 - XORL 32(SP), R10 - ROLL $0x01, R10 - MOVL R10, 24(SP) - MOVL CX, R8 - ORL DX, R8 - ANDL BP, R8 - MOVL CX, R9 - ANDL DX, R9 - ORL R8, R9 - ROLL $0x1e, CX - ADDL R9, AX - MOVL BX, R8 - ROLL $0x05, R8 - LEAL 2400959708(AX)(R10*1), AX - ADDL R8, AX - MOVL 28(SP), R10 - XORL 16(SP), R10 - XORL 60(SP), R10 - XORL 36(SP), R10 - ROLL $0x01, R10 - MOVL R10, 28(SP) - MOVL BX, R8 - ORL CX, R8 - ANDL DX, R8 - MOVL BX, R9 - ANDL CX, R9 - ORL R8, R9 - ROLL $0x1e, BX - ADDL R9, BP - MOVL AX, R8 - ROLL $0x05, R8 - LEAL 2400959708(BP)(R10*1), BP - ADDL R8, BP - MOVL 32(SP), R10 - XORL 20(SP), R10 - XORL (SP), R10 - XORL 40(SP), R10 - ROLL $0x01, R10 - MOVL R10, 32(SP) - MOVL AX, R8 - ORL BX, R8 - ANDL CX, R8 - MOVL AX, R9 - ANDL BX, R9 - ORL R8, R9 - ROLL $0x1e, AX - ADDL R9, DX - MOVL BP, R8 - ROLL $0x05, R8 - LEAL 2400959708(DX)(R10*1), DX - ADDL R8, DX - MOVL 36(SP), R10 - XORL 24(SP), R10 - XORL 4(SP), R10 - XORL 44(SP), R10 - ROLL $0x01, R10 - MOVL R10, 36(SP) - MOVL BP, R8 - ORL AX, R8 - ANDL BX, R8 - MOVL BP, R9 - ANDL AX, R9 - ORL R8, R9 - ROLL $0x1e, BP - ADDL R9, CX - MOVL DX, R8 - ROLL $0x05, R8 - LEAL 2400959708(CX)(R10*1), CX - ADDL R8, CX - MOVL 40(SP), R10 - XORL 28(SP), R10 - XORL 8(SP), R10 - XORL 48(SP), R10 - ROLL $0x01, R10 - MOVL R10, 40(SP) - MOVL DX, R8 - ORL BP, R8 - ANDL AX, R8 - MOVL DX, R9 - ANDL BP, R9 - ORL R8, R9 - ROLL $0x1e, DX - ADDL R9, BX - MOVL CX, R8 - ROLL $0x05, R8 - LEAL 2400959708(BX)(R10*1), BX - ADDL R8, BX - MOVL 44(SP), R10 - XORL 32(SP), R10 - XORL 12(SP), R10 - XORL 52(SP), R10 - ROLL $0x01, R10 - MOVL R10, 44(SP) - MOVL CX, R8 - ORL DX, R8 - ANDL BP, R8 - MOVL CX, R9 - ANDL DX, R9 - ORL R8, R9 - ROLL $0x1e, CX - ADDL R9, AX - MOVL BX, R8 - ROLL $0x05, R8 - LEAL 2400959708(AX)(R10*1), AX - ADDL R8, AX - MOVL 48(SP), R10 - XORL 36(SP), R10 - XORL 16(SP), R10 - XORL 56(SP), R10 - ROLL $0x01, R10 - MOVL R10, 48(SP) - MOVL BX, R9 - XORL CX, R9 - XORL DX, R9 - ROLL $0x1e, BX - ADDL R9, BP - MOVL AX, R8 - ROLL $0x05, R8 - LEAL 3395469782(BP)(R10*1), BP - ADDL R8, BP - MOVL 52(SP), R10 - XORL 40(SP), R10 - XORL 20(SP), R10 - XORL 60(SP), R10 - ROLL $0x01, R10 - MOVL R10, 52(SP) - MOVL AX, R9 - XORL BX, R9 - XORL CX, R9 - ROLL $0x1e, AX - ADDL R9, DX - MOVL BP, R8 - ROLL $0x05, R8 - LEAL 3395469782(DX)(R10*1), DX - ADDL R8, DX - MOVL 56(SP), R10 - XORL 44(SP), R10 - XORL 24(SP), R10 - XORL (SP), R10 - ROLL $0x01, R10 - MOVL R10, 56(SP) - MOVL BP, R9 - XORL AX, R9 - XORL BX, R9 - ROLL $0x1e, BP - ADDL R9, CX - MOVL DX, R8 - ROLL $0x05, R8 - LEAL 3395469782(CX)(R10*1), CX - ADDL R8, CX - MOVL 60(SP), R10 - XORL 48(SP), R10 - XORL 28(SP), R10 - XORL 4(SP), R10 - ROLL $0x01, R10 - MOVL R10, 60(SP) - MOVL DX, R9 - XORL BP, R9 - XORL AX, R9 - ROLL $0x1e, DX - ADDL R9, BX - MOVL CX, R8 - ROLL $0x05, R8 - LEAL 3395469782(BX)(R10*1), BX - ADDL R8, BX - MOVL (SP), R10 - XORL 52(SP), R10 - XORL 32(SP), R10 - XORL 8(SP), R10 - ROLL $0x01, R10 - MOVL R10, (SP) - MOVL CX, R9 - XORL DX, R9 - XORL BP, R9 - ROLL $0x1e, CX - ADDL R9, AX - MOVL BX, R8 - ROLL $0x05, R8 - LEAL 3395469782(AX)(R10*1), AX - ADDL R8, AX - MOVL 4(SP), R10 - XORL 56(SP), R10 - XORL 36(SP), R10 - XORL 12(SP), R10 - ROLL $0x01, R10 - MOVL R10, 4(SP) - MOVL BX, R9 - XORL CX, R9 - XORL DX, R9 - ROLL $0x1e, BX - ADDL R9, BP - MOVL AX, R8 - ROLL $0x05, R8 - LEAL 3395469782(BP)(R10*1), BP - ADDL R8, BP - MOVL 8(SP), R10 - XORL 60(SP), R10 - XORL 40(SP), R10 - XORL 16(SP), R10 - ROLL $0x01, R10 - MOVL R10, 8(SP) - MOVL AX, R9 - XORL BX, R9 - XORL CX, R9 - ROLL $0x1e, AX - ADDL R9, DX - MOVL BP, R8 - ROLL $0x05, R8 - LEAL 3395469782(DX)(R10*1), DX - ADDL R8, DX - MOVL 12(SP), R10 - XORL (SP), R10 - XORL 44(SP), R10 - XORL 20(SP), R10 - ROLL $0x01, R10 - MOVL R10, 12(SP) - MOVL BP, R9 - XORL AX, R9 - XORL BX, R9 - ROLL $0x1e, BP - ADDL R9, CX - MOVL DX, R8 - ROLL $0x05, R8 - LEAL 3395469782(CX)(R10*1), CX - ADDL R8, CX - MOVL 16(SP), R10 - XORL 4(SP), R10 - XORL 48(SP), R10 - XORL 24(SP), R10 - ROLL $0x01, R10 - MOVL R10, 16(SP) - MOVL DX, R9 - XORL BP, R9 - XORL AX, R9 - ROLL $0x1e, DX - ADDL R9, BX - MOVL CX, R8 - ROLL $0x05, R8 - LEAL 3395469782(BX)(R10*1), BX - ADDL R8, BX - MOVL 20(SP), R10 - XORL 8(SP), R10 - XORL 52(SP), R10 - XORL 28(SP), R10 - ROLL $0x01, R10 - MOVL R10, 20(SP) - MOVL CX, R9 - XORL DX, R9 - XORL BP, R9 - ROLL $0x1e, CX - ADDL R9, AX - MOVL BX, R8 - ROLL $0x05, R8 - LEAL 3395469782(AX)(R10*1), AX - ADDL R8, AX - MOVL 24(SP), R10 - XORL 12(SP), R10 - XORL 56(SP), R10 - XORL 32(SP), R10 - ROLL $0x01, R10 - MOVL R10, 24(SP) - MOVL BX, R9 - XORL CX, R9 - XORL DX, R9 - ROLL $0x1e, BX - ADDL R9, BP - MOVL AX, R8 - ROLL $0x05, R8 - LEAL 3395469782(BP)(R10*1), BP - ADDL R8, BP - MOVL 28(SP), R10 - XORL 16(SP), R10 - XORL 60(SP), R10 - XORL 36(SP), R10 - ROLL $0x01, R10 - MOVL R10, 28(SP) - MOVL AX, R9 - XORL BX, R9 - XORL CX, R9 - ROLL $0x1e, AX - ADDL R9, DX - MOVL BP, R8 - ROLL $0x05, R8 - LEAL 3395469782(DX)(R10*1), DX - ADDL R8, DX - MOVL 32(SP), R10 - XORL 20(SP), R10 - XORL (SP), R10 - XORL 40(SP), R10 - ROLL $0x01, R10 - MOVL R10, 32(SP) - MOVL BP, R9 - XORL AX, R9 - XORL BX, R9 - ROLL $0x1e, BP - ADDL R9, CX - MOVL DX, R8 - ROLL $0x05, R8 - LEAL 3395469782(CX)(R10*1), CX - ADDL R8, CX - MOVL 36(SP), R10 - XORL 24(SP), R10 - XORL 4(SP), R10 - XORL 44(SP), R10 - ROLL $0x01, R10 - MOVL R10, 36(SP) - MOVL DX, R9 - XORL BP, R9 - XORL AX, R9 - ROLL $0x1e, DX - ADDL R9, BX - MOVL CX, R8 - ROLL $0x05, R8 - LEAL 3395469782(BX)(R10*1), BX - ADDL R8, BX - MOVL 40(SP), R10 - XORL 28(SP), R10 - XORL 8(SP), R10 - XORL 48(SP), R10 - ROLL $0x01, R10 - MOVL R10, 40(SP) - MOVL CX, R9 - XORL DX, R9 - XORL BP, R9 - ROLL $0x1e, CX - ADDL R9, AX - MOVL BX, R8 - ROLL $0x05, R8 - LEAL 3395469782(AX)(R10*1), AX - ADDL R8, AX - MOVL 44(SP), R10 - XORL 32(SP), R10 - XORL 12(SP), R10 - XORL 52(SP), R10 - ROLL $0x01, R10 - MOVL R10, 44(SP) - MOVL BX, R9 - XORL CX, R9 - XORL DX, R9 - ROLL $0x1e, BX - ADDL R9, BP - MOVL AX, R8 - ROLL $0x05, R8 - LEAL 3395469782(BP)(R10*1), BP - ADDL R8, BP - MOVL 48(SP), R10 - XORL 36(SP), R10 - XORL 16(SP), R10 - XORL 56(SP), R10 - ROLL $0x01, R10 - MOVL R10, 48(SP) - MOVL AX, R9 - XORL BX, R9 - XORL CX, R9 - ROLL $0x1e, AX - ADDL R9, DX - MOVL BP, R8 - ROLL $0x05, R8 - LEAL 3395469782(DX)(R10*1), DX - ADDL R8, DX - MOVL 52(SP), R10 - XORL 40(SP), R10 - XORL 20(SP), R10 - XORL 60(SP), R10 - ROLL $0x01, R10 - MOVL R10, 52(SP) - MOVL BP, R9 - XORL AX, R9 - XORL BX, R9 - ROLL $0x1e, BP - ADDL R9, CX - MOVL DX, R8 - ROLL $0x05, R8 - LEAL 3395469782(CX)(R10*1), CX - ADDL R8, CX - MOVL 56(SP), R10 - XORL 44(SP), R10 - XORL 24(SP), R10 - XORL (SP), R10 - ROLL $0x01, R10 - MOVL R10, 56(SP) - MOVL DX, R9 - XORL BP, R9 - XORL AX, R9 - ROLL $0x1e, DX - ADDL R9, BX - MOVL CX, R8 - ROLL $0x05, R8 - LEAL 3395469782(BX)(R10*1), BX - ADDL R8, BX - MOVL 60(SP), R10 - XORL 48(SP), R10 - XORL 28(SP), R10 - XORL 4(SP), R10 - ROLL $0x01, R10 - MOVL R10, 60(SP) - MOVL CX, R9 - XORL DX, R9 - XORL BP, R9 - ROLL $0x1e, CX - ADDL R9, AX - MOVL BX, R8 - ROLL $0x05, R8 - LEAL 3395469782(AX)(R10*1), AX - ADDL R8, AX - ADDL R11, AX - ADDL R12, BX - ADDL R13, CX - ADDL R14, DX - ADDL R15, BP - ADDQ $0x40, SI - CMPQ SI, DI - JB loop - -end: - MOVQ dig+0(FP), DI - MOVL AX, (DI) - MOVL BX, 4(DI) - MOVL CX, 8(DI) - MOVL DX, 12(DI) - MOVL BP, 16(DI) - RET - // func blockAVX2(dig *digest, p []byte) // Requires: AVX, AVX2, BMI, BMI2, CMOV TEXT ·blockAVX2(SB), $1408-32 From a731955f0f48b9d1e74ea3aa65f8485388a2849e Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Wed, 21 May 2025 14:29:26 +0200 Subject: [PATCH 35/99] crypto/sha1: use cryptotest.TestAllImplementations and impl.Register Not running TryBots on s390x because the new LUCI builder is broken. Change-Id: I6a6a4656a8d52fa5ace9effa67a88fbfd7d19b04 Reviewed-on: https://go-review.googlesource.com/c/go/+/674915 Reviewed-by: David Chase LUCI-TryBot-Result: Go LUCI Reviewed-by: Roland Shoemaker Reviewed-by: Daniel McCarney Auto-Submit: Filippo Valsorda --- src/crypto/sha1/fallback_test.go | 34 ------------------------------ src/crypto/sha1/issue15617_test.go | 25 ++++++++++++---------- src/crypto/sha1/sha1_test.go | 32 +++++++++++----------------- src/crypto/sha1/sha1block_amd64.go | 10 ++++++++- src/crypto/sha1/sha1block_arm64.go | 17 +++++++++++---- src/crypto/sha1/sha1block_decl.go | 2 +- src/crypto/sha1/sha1block_s390x.go | 24 +++++++++++++++++++-- src/crypto/sha1/sha1block_s390x.s | 9 ++------ 8 files changed, 73 insertions(+), 80 deletions(-) delete mode 100644 src/crypto/sha1/fallback_test.go diff --git a/src/crypto/sha1/fallback_test.go b/src/crypto/sha1/fallback_test.go deleted file mode 100644 index b869a939f6..0000000000 --- a/src/crypto/sha1/fallback_test.go +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build s390x && !purego - -package sha1 - -import ( - "fmt" - "io" - "testing" -) - -// Tests the fallback code path in case the optimized asm -// implementation cannot be used. -// See also TestBlockGeneric. -func TestGenericPath(t *testing.T) { - if !useAsm { - t.Skipf("assembly implementation unavailable") - } - useAsm = false - defer func() { useAsm = true }() - c := New() - in := "ΑΒΓΔΕϜΖΗΘΙΚΛΜΝΞΟΠϺϘΡΣΤΥΦΧΨΩ" - gold := "0f58c2bb130f8182375f325c18342215255387e5" - if _, err := io.WriteString(c, in); err != nil { - t.Fatalf("could not write to c: %v", err) - } - out := fmt.Sprintf("%x", c.Sum(nil)) - if out != gold { - t.Fatalf("mismatch: got %s, wanted %s", out, gold) - } -} diff --git a/src/crypto/sha1/issue15617_test.go b/src/crypto/sha1/issue15617_test.go index 116c78ff74..402c57482c 100644 --- a/src/crypto/sha1/issue15617_test.go +++ b/src/crypto/sha1/issue15617_test.go @@ -7,21 +7,24 @@ package sha1_test import ( + "crypto/internal/cryptotest" "crypto/sha1" "syscall" "testing" ) func TestOutOfBoundsRead(t *testing.T) { - const pageSize = 4 << 10 - data, err := syscall.Mmap(0, 0, 2*pageSize, syscall.PROT_READ|syscall.PROT_WRITE, syscall.MAP_ANON|syscall.MAP_PRIVATE) - if err != nil { - panic(err) - } - if err := syscall.Mprotect(data[pageSize:], syscall.PROT_NONE); err != nil { - panic(err) - } - for i := 0; i < pageSize; i++ { - sha1.Sum(data[pageSize-i : pageSize]) - } + cryptotest.TestAllImplementations(t, "sha1", func(t *testing.T) { + const pageSize = 4 << 10 + data, err := syscall.Mmap(0, 0, 2*pageSize, syscall.PROT_READ|syscall.PROT_WRITE, syscall.MAP_ANON|syscall.MAP_PRIVATE) + if err != nil { + panic(err) + } + if err := syscall.Mprotect(data[pageSize:], syscall.PROT_NONE); err != nil { + panic(err) + } + for i := 0; i < pageSize; i++ { + sha1.Sum(data[pageSize-i : pageSize]) + } + }) } diff --git a/src/crypto/sha1/sha1_test.go b/src/crypto/sha1/sha1_test.go index f9243dbf50..0a0596e56c 100644 --- a/src/crypto/sha1/sha1_test.go +++ b/src/crypto/sha1/sha1_test.go @@ -10,7 +10,6 @@ import ( "bytes" "crypto/internal/boring" "crypto/internal/cryptotest" - "crypto/rand" "encoding" "fmt" "hash" @@ -60,6 +59,9 @@ var golden = []sha1Test{ } func TestGolden(t *testing.T) { + cryptotest.TestAllImplementations(t, "sha1", testGolden) +} +func testGolden(t *testing.T) { for i := 0; i < len(golden); i++ { g := golden[i] s := fmt.Sprintf("%x", Sum([]byte(g.in))) @@ -97,6 +99,9 @@ func TestGolden(t *testing.T) { } func TestGoldenMarshal(t *testing.T) { + cryptotest.TestAllImplementations(t, "sha1", testGoldenMarshal) +} +func testGoldenMarshal(t *testing.T) { h := New() h2 := New() for _, g := range golden { @@ -156,23 +161,6 @@ func TestBlockSize(t *testing.T) { } } -// Tests that blockGeneric (pure Go) and block (in assembly for some architectures) match. -func TestBlockGeneric(t *testing.T) { - if boring.Enabled { - t.Skip("BoringCrypto doesn't expose digest") - } - for i := 1; i < 30; i++ { // arbitrary factor - gen, asm := New().(*digest), New().(*digest) - buf := make([]byte, BlockSize*i) - rand.Read(buf) - blockGeneric(gen, buf) - block(asm, buf) - if *gen != *asm { - t.Errorf("For %#v block and blockGeneric resulted in different states", buf) - } - } -} - // Tests for unmarshaling hashes that have hashed a large amount of data // The initial hash generation is omitted from the test, because it takes a long time. // The test contains some already-generated states, and their expected sums @@ -210,8 +198,10 @@ func safeSum(h hash.Hash) (sum []byte, err error) { } func TestLargeHashes(t *testing.T) { + cryptotest.TestAllImplementations(t, "sha1", testLargeHashes) +} +func testLargeHashes(t *testing.T) { for i, test := range largeUnmarshalTests { - h := New() if err := h.(encoding.BinaryUnmarshaler).UnmarshalBinary([]byte(test.state)); err != nil { t.Errorf("test %d could not unmarshal: %v", i, err) @@ -246,7 +236,9 @@ func TestAllocations(t *testing.T) { } func TestSHA1Hash(t *testing.T) { - cryptotest.TestHash(t, New) + cryptotest.TestAllImplementations(t, "sha1", func(t *testing.T) { + cryptotest.TestHash(t, New) + }) } func TestExtraMethods(t *testing.T) { diff --git a/src/crypto/sha1/sha1block_amd64.go b/src/crypto/sha1/sha1block_amd64.go index 0f92f4b5f5..1f78e2d78b 100644 --- a/src/crypto/sha1/sha1block_amd64.go +++ b/src/crypto/sha1/sha1block_amd64.go @@ -6,7 +6,10 @@ package sha1 -import "internal/cpu" +import ( + "crypto/internal/impl" + "internal/cpu" +) //go:noescape func blockAVX2(dig *digest, p []byte) @@ -17,6 +20,11 @@ func blockSHANI(dig *digest, p []byte) var useAVX2 = cpu.X86.HasAVX && cpu.X86.HasAVX2 && cpu.X86.HasBMI1 && cpu.X86.HasBMI2 var useSHANI = cpu.X86.HasAVX && cpu.X86.HasSHA && cpu.X86.HasSSE41 && cpu.X86.HasSSSE3 +func init() { + impl.Register("sha1", "AVX2", &useAVX2) + impl.Register("sha1", "SHA-NI", &useSHANI) +} + func block(dig *digest, p []byte) { if useSHANI { blockSHANI(dig, p) diff --git a/src/crypto/sha1/sha1block_arm64.go b/src/crypto/sha1/sha1block_arm64.go index e6d96a9080..b972a1e62e 100644 --- a/src/crypto/sha1/sha1block_arm64.go +++ b/src/crypto/sha1/sha1block_arm64.go @@ -6,7 +6,16 @@ package sha1 -import "internal/cpu" +import ( + "crypto/internal/impl" + "internal/cpu" +) + +var useSHA1 = cpu.ARM64.HasSHA1 + +func init() { + impl.Register("sha1", "Armv8.0", &useSHA1) +} var k = []uint32{ 0x5A827999, @@ -19,10 +28,10 @@ var k = []uint32{ func sha1block(h []uint32, p []byte, k []uint32) func block(dig *digest, p []byte) { - if !cpu.ARM64.HasSHA1 { - blockGeneric(dig, p) - } else { + if useSHA1 { h := dig.h[:] sha1block(h, p, k) + } else { + blockGeneric(dig, p) } } diff --git a/src/crypto/sha1/sha1block_decl.go b/src/crypto/sha1/sha1block_decl.go index 46f41a1cc2..887d8cad01 100644 --- a/src/crypto/sha1/sha1block_decl.go +++ b/src/crypto/sha1/sha1block_decl.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build (386 || arm || loong64 || s390x) && !purego +//go:build (386 || arm || loong64) && !purego package sha1 diff --git a/src/crypto/sha1/sha1block_s390x.go b/src/crypto/sha1/sha1block_s390x.go index f8b0d8ba31..104220c8bd 100644 --- a/src/crypto/sha1/sha1block_s390x.go +++ b/src/crypto/sha1/sha1block_s390x.go @@ -6,6 +6,26 @@ package sha1 -import "internal/cpu" +import ( + "crypto/internal/impl" + "internal/cpu" +) -var useAsm = cpu.S390X.HasSHA1 +var useSHA1 = cpu.S390X.HasSHA1 + +func init() { + // CP Assist for Cryptographic Functions (CPACF) + // https://www.ibm.com/docs/en/zos/3.1.0?topic=icsf-cp-assist-cryptographic-functions-cpacf + impl.Register("sha1", "CPACF", &useSHA1) +} + +//go:noescape +func blockS390X(dig *digest, p []byte) + +func block(dig *digest, p []byte) { + if useSHA1 { + blockS390X(dig, p) + } else { + blockGeneric(dig, p) + } +} diff --git a/src/crypto/sha1/sha1block_s390x.s b/src/crypto/sha1/sha1block_s390x.s index 7a2f4e39c4..3ddc9b586a 100644 --- a/src/crypto/sha1/sha1block_s390x.s +++ b/src/crypto/sha1/sha1block_s390x.s @@ -6,17 +6,12 @@ #include "textflag.h" -// func block(dig *digest, p []byte) -TEXT ·block(SB), NOSPLIT|NOFRAME, $0-32 - MOVBZ ·useAsm(SB), R4 +// func blockS390X(dig *digest, p []byte) +TEXT ·blockS390X(SB), NOSPLIT|NOFRAME, $0-32 LMG dig+0(FP), R1, R3 // R2 = &p[0], R3 = len(p) MOVBZ $1, R0 // SHA-1 function code - CMPBEQ R4, $0, generic loop: KIMD R0, R2 // compute intermediate message digest (KIMD) BVS loop // continue if interrupted RET - -generic: - BR ·blockGeneric(SB) From c5a1fc1f97b4b6b384a9852d96a77868e0f5e6a9 Mon Sep 17 00:00:00 2001 From: Roland Shoemaker Date: Wed, 7 May 2025 11:37:52 -0700 Subject: [PATCH 36/99] crypto/tls: add GetEncryptedClientHelloKeys This allows servers to rotate their ECH keys without needing to restart the server. Fixes #71920 Change-Id: I55591ab3303d5fde639038541c50edcf1fafc9aa Reviewed-on: https://go-review.googlesource.com/c/go/+/670655 TryBot-Bypass: Roland Shoemaker Reviewed-by: David Chase Auto-Submit: Roland Shoemaker Reviewed-by: Daniel McCarney --- api/next/71920.txt | 1 + .../6-stdlib/99-minor/crypto/tls/71920.md | 3 + src/crypto/tls/common.go | 18 +++++ src/crypto/tls/ech.go | 6 +- src/crypto/tls/handshake_server.go | 10 ++- src/crypto/tls/handshake_server_tls13.go | 12 +++- src/crypto/tls/tls_test.go | 65 +++++++++++++------ 7 files changed, 88 insertions(+), 27 deletions(-) create mode 100644 api/next/71920.txt create mode 100644 doc/next/6-stdlib/99-minor/crypto/tls/71920.md diff --git a/api/next/71920.txt b/api/next/71920.txt new file mode 100644 index 0000000000..c15759f45f --- /dev/null +++ b/api/next/71920.txt @@ -0,0 +1 @@ +pkg crypto/tls, type Config struct, GetEncryptedClientHelloKeys func(*ClientHelloInfo) ([]EncryptedClientHelloKey, error) #71920 diff --git a/doc/next/6-stdlib/99-minor/crypto/tls/71920.md b/doc/next/6-stdlib/99-minor/crypto/tls/71920.md new file mode 100644 index 0000000000..848211751a --- /dev/null +++ b/doc/next/6-stdlib/99-minor/crypto/tls/71920.md @@ -0,0 +1,3 @@ +The new [Config.GetEncryptedClientHelloKeys] callback can be used to set the +[EncryptedClientHelloKey]s for a server to use when a client sends an Encrypted +Client Hello extension. \ No newline at end of file diff --git a/src/crypto/tls/common.go b/src/crypto/tls/common.go index cc00efdc54..71b9ddb02c 100644 --- a/src/crypto/tls/common.go +++ b/src/crypto/tls/common.go @@ -837,6 +837,20 @@ type Config struct { // when ECH is rejected, even if set, and InsecureSkipVerify is ignored. EncryptedClientHelloRejectionVerify func(ConnectionState) error + // GetEncryptedClientHelloKeys, if not nil, is called when by a server when + // a client attempts ECH. + // + // If GetEncryptedClientHelloKeys is not nil, [EncryptedClientHelloKeys] is + // ignored. + // + // If GetEncryptedClientHelloKeys returns an error, the handshake will be + // aborted and the error will be returned. Otherwise, + // GetEncryptedClientHelloKeys must return a non-nil slice of + // [EncryptedClientHelloKey] that represents the acceptable ECH keys. + // + // For further details, see [EncryptedClientHelloKeys]. + GetEncryptedClientHelloKeys func(*ClientHelloInfo) ([]EncryptedClientHelloKey, error) + // EncryptedClientHelloKeys are the ECH keys to use when a client // attempts ECH. // @@ -847,6 +861,9 @@ type Config struct { // will send a list of configs to retry based on the set of // EncryptedClientHelloKeys which have the SendAsRetry field set. // + // If GetEncryptedClientHelloKeys is non-nil, EncryptedClientHelloKeys is + // ignored. + // // On the client side, this field is ignored. In order to configure ECH for // clients, see the EncryptedClientHelloConfigList field. EncryptedClientHelloKeys []EncryptedClientHelloKey @@ -935,6 +952,7 @@ func (c *Config) Clone() *Config { GetCertificate: c.GetCertificate, GetClientCertificate: c.GetClientCertificate, GetConfigForClient: c.GetConfigForClient, + GetEncryptedClientHelloKeys: c.GetEncryptedClientHelloKeys, VerifyPeerCertificate: c.VerifyPeerCertificate, VerifyConnection: c.VerifyConnection, RootCAs: c.RootCAs, diff --git a/src/crypto/tls/ech.go b/src/crypto/tls/ech.go index 6d64191b8b..76727a8908 100644 --- a/src/crypto/tls/ech.go +++ b/src/crypto/tls/ech.go @@ -578,7 +578,7 @@ func marshalEncryptedClientHelloConfigList(configs []EncryptedClientHelloKey) ([ return builder.Bytes() } -func (c *Conn) processECHClientHello(outer *clientHelloMsg) (*clientHelloMsg, *echServerContext, error) { +func (c *Conn) processECHClientHello(outer *clientHelloMsg, echKeys []EncryptedClientHelloKey) (*clientHelloMsg, *echServerContext, error) { echType, echCiphersuite, configID, encap, payload, err := parseECHExt(outer.encryptedClientHello) if err != nil { if errors.Is(err, errInvalidECHExt) { @@ -594,11 +594,11 @@ func (c *Conn) processECHClientHello(outer *clientHelloMsg) (*clientHelloMsg, *e return outer, &echServerContext{inner: true}, nil } - if len(c.config.EncryptedClientHelloKeys) == 0 { + if len(echKeys) == 0 { return outer, nil, nil } - for _, echKey := range c.config.EncryptedClientHelloKeys { + for _, echKey := range echKeys { skip, config, err := parseECHConfig(echKey.Config) if err != nil || skip { c.sendAlert(alertInternalError) diff --git a/src/crypto/tls/handshake_server.go b/src/crypto/tls/handshake_server.go index 5be74e2967..c2c924c07b 100644 --- a/src/crypto/tls/handshake_server.go +++ b/src/crypto/tls/handshake_server.go @@ -149,7 +149,15 @@ func (c *Conn) readClientHello(ctx context.Context) (*clientHelloMsg, *echServer // the contents of the client hello, since we may swap it out completely. var ech *echServerContext if len(clientHello.encryptedClientHello) != 0 { - clientHello, ech, err = c.processECHClientHello(clientHello) + echKeys := c.config.EncryptedClientHelloKeys + if c.config.GetEncryptedClientHelloKeys != nil { + echKeys, err = c.config.GetEncryptedClientHelloKeys(clientHelloInfo(ctx, c, clientHello)) + if err != nil { + c.sendAlert(alertInternalError) + return nil, nil, err + } + } + clientHello, ech, err = c.processECHClientHello(clientHello, echKeys) if err != nil { return nil, nil, err } diff --git a/src/crypto/tls/handshake_server_tls13.go b/src/crypto/tls/handshake_server_tls13.go index fbdf55d461..54b3cac810 100644 --- a/src/crypto/tls/handshake_server_tls13.go +++ b/src/crypto/tls/handshake_server_tls13.go @@ -804,8 +804,16 @@ func (hs *serverHandshakeStateTLS13) sendServerParameters() error { // If client sent ECH extension, but we didn't accept it, // send retry configs, if available. - if len(hs.c.config.EncryptedClientHelloKeys) > 0 && len(hs.clientHello.encryptedClientHello) > 0 && hs.echContext == nil { - encryptedExtensions.echRetryConfigs, err = buildRetryConfigList(hs.c.config.EncryptedClientHelloKeys) + echKeys := hs.c.config.EncryptedClientHelloKeys + if hs.c.config.GetEncryptedClientHelloKeys != nil { + echKeys, err = hs.c.config.GetEncryptedClientHelloKeys(clientHelloInfo(hs.ctx, c, hs.clientHello)) + if err != nil { + c.sendAlert(alertInternalError) + return err + } + } + if len(echKeys) > 0 && len(hs.clientHello.encryptedClientHello) > 0 && hs.echContext == nil { + encryptedExtensions.echRetryConfigs, err = buildRetryConfigList(echKeys) if err != nil { c.sendAlert(alertInternalError) return err diff --git a/src/crypto/tls/tls_test.go b/src/crypto/tls/tls_test.go index 4913a3ae5c..bfcc62ccfb 100644 --- a/src/crypto/tls/tls_test.go +++ b/src/crypto/tls/tls_test.go @@ -811,7 +811,7 @@ func TestWarningAlertFlood(t *testing.T) { } func TestCloneFuncFields(t *testing.T) { - const expectedCount = 9 + const expectedCount = 10 called := 0 c1 := Config{ @@ -851,6 +851,10 @@ func TestCloneFuncFields(t *testing.T) { called |= 1 << 8 return nil }, + GetEncryptedClientHelloKeys: func(*ClientHelloInfo) ([]EncryptedClientHelloKey, error) { + called |= 1 << 9 + return nil, nil + }, } c2 := c1.Clone() @@ -864,6 +868,7 @@ func TestCloneFuncFields(t *testing.T) { c2.UnwrapSession(nil, ConnectionState{}) c2.WrapSession(ConnectionState{}, nil) c2.EncryptedClientHelloRejectionVerify(ConnectionState{}) + c2.GetEncryptedClientHelloKeys(nil) if called != (1< Date: Thu, 15 May 2025 13:41:14 -0400 Subject: [PATCH 37/99] crypto/tls: have servers prefer TLS 1.3 when supported Previously the common Config.mutualVersion() code prioritized the selected version based on the provided peerVersions being sent in peer preference order. Instead we would prefer to see TLS 1.3 used whenever it is supported, even if the peer would prefer an older protocol version. This commit updates mutualVersions() to implement this policy change. Our new behaviour matches the behaviour of other TLS stacks, notably BoringSSL, and so also allows enabling the IgnoreClientVersionOrder BoGo test that we otherwise must skip. Updates #72006 Change-Id: I27a2cd231e4b8762b0d9e2dbd3d8ddd5b87fd5cb Reviewed-on: https://go-review.googlesource.com/c/go/+/673236 Auto-Submit: Daniel McCarney TryBot-Bypass: Daniel McCarney Reviewed-by: David Chase Reviewed-by: Roland Shoemaker --- doc/next/6-stdlib/99-minor/crypto/tls/version_pref.md | 1 + src/crypto/tls/bogo_config.json | 1 - src/crypto/tls/common.go | 6 +++--- 3 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 doc/next/6-stdlib/99-minor/crypto/tls/version_pref.md diff --git a/doc/next/6-stdlib/99-minor/crypto/tls/version_pref.md b/doc/next/6-stdlib/99-minor/crypto/tls/version_pref.md new file mode 100644 index 0000000000..5686f3ca0a --- /dev/null +++ b/doc/next/6-stdlib/99-minor/crypto/tls/version_pref.md @@ -0,0 +1 @@ +TLS servers now prefer the highest supported protocol version, even if it isn't the client's most preferred protocol version. diff --git a/src/crypto/tls/bogo_config.json b/src/crypto/tls/bogo_config.json index 61585938d7..191f48fc02 100644 --- a/src/crypto/tls/bogo_config.json +++ b/src/crypto/tls/bogo_config.json @@ -66,7 +66,6 @@ "SupportTicketsWithSessionID": "TODO: first pass, this should be fixed", "NoNullCompression-TLS12": "TODO: first pass, this should be fixed", "KeyUpdate-RequestACK": "TODO: first pass, this should be fixed", - "IgnoreClientVersionOrder": "RFC 8446 4.2.1 says supported_versions is in client pref order", "SupportedVersionSelection-TLS12": "TODO: first pass, this should be fixed", "DuplicateExtensionServer-TLS-TLS1": "TODO: first pass, this should be fixed", "DuplicateExtensionClient-TLS-TLS1": "TODO: first pass, this should be fixed", diff --git a/src/crypto/tls/common.go b/src/crypto/tls/common.go index 71b9ddb02c..1aaad7aba1 100644 --- a/src/crypto/tls/common.go +++ b/src/crypto/tls/common.go @@ -1233,11 +1233,11 @@ func (c *Config) supportsCurve(version uint16, curve CurveID) bool { } // mutualVersion returns the protocol version to use given the advertised -// versions of the peer. Priority is given to the peer preference order. +// versions of the peer. The highest supported version is preferred. func (c *Config) mutualVersion(isClient bool, peerVersions []uint16) (uint16, bool) { supportedVersions := c.supportedVersions(isClient) - for _, v := range peerVersions { - if slices.Contains(supportedVersions, v) { + for _, v := range supportedVersions { + if slices.Contains(peerVersions, v) { return v, true } } From d6c29c71562df407cc18846efd2e9d8fe0b28960 Mon Sep 17 00:00:00 2001 From: Junyang Shao Date: Wed, 21 May 2025 18:50:39 +0000 Subject: [PATCH 38/99] cmd/compile: fix offset calculation error in memcombine Fixes #73812 Change-Id: If7a6e103ae9e1442a2cf4a3c6b1270b6a1887196 Reviewed-on: https://go-review.googlesource.com/c/go/+/675175 Reviewed-by: Keith Randall Auto-Submit: Junyang Shao Reviewed-by: Keith Randall LUCI-TryBot-Result: Go LUCI --- src/cmd/compile/internal/ssa/memcombine.go | 2 +- test/codegen/issue72832.go | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/cmd/compile/internal/ssa/memcombine.go b/src/cmd/compile/internal/ssa/memcombine.go index 416f5540a7..b8fcd39495 100644 --- a/src/cmd/compile/internal/ssa/memcombine.go +++ b/src/cmd/compile/internal/ssa/memcombine.go @@ -581,7 +581,7 @@ func combineStores(root *Value) { mask := int64(1)<<(8*a[i].size) - 1 s := 8 * (a[i].offset - a[0].offset) if root.Block.Func.Config.BigEndian { - s = aTotalSize*8 - a[i].size - s + s = (aTotalSize-a[i].size)*8 - s } c |= (a[i].store.Args[1].AuxInt & mask) << s } diff --git a/test/codegen/issue72832.go b/test/codegen/issue72832.go index a7f6ca8c5c..392b41b173 100644 --- a/test/codegen/issue72832.go +++ b/test/codegen/issue72832.go @@ -35,7 +35,16 @@ type tile3 struct { func store_shifted(t *tile3, x uint32) { // amd64:`MOVL` + // ppc64:`MOVHBR` t.a = uint8(x) t.b = uint8(x >> 8) t.c = uint16(x >> 16) } + +func store_const(t *tile3) { + // 0x00030201 + // amd64:`MOVL\s\$197121` + // 0x01020003 + // ppc64:`MOVD\s\$16908291` + t.a, t.b, t.c = 1, 2, 3 +} From d327e52d438854acae275cdf9d2c1fe42f037eb8 Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Wed, 21 May 2025 19:41:06 +0200 Subject: [PATCH 39/99] crypto/internal/fips140: use hash.Hash Since package hash is just the interface definition, not an implementation, we can make a good argument that it doesn't impact the security of the module and can be imported from outside. For #69521 Change-Id: I6a6a4656b9c3cac8bb9ab8e8df11fa3238dc5d1d Reviewed-on: https://go-review.googlesource.com/c/go/+/674917 Reviewed-by: Roland Shoemaker LUCI-TryBot-Result: Go LUCI Reviewed-by: Daniel McCarney Reviewed-by: David Chase Auto-Submit: Filippo Valsorda --- src/crypto/internal/fips140/ecdsa/ecdsa.go | 5 +- src/crypto/internal/fips140/ecdsa/hmacdrbg.go | 5 +- src/crypto/internal/fips140/fips140.go | 7 + src/crypto/internal/fips140/hash.go | 32 --- src/crypto/internal/fips140/hkdf/hkdf.go | 7 +- src/crypto/internal/fips140/hmac/hmac.go | 7 +- src/crypto/internal/fips140/pbkdf2/pbkdf2.go | 3 +- src/crypto/internal/fips140/rsa/pkcs1v22.go | 23 +- src/crypto/internal/fips140/ssh/kdf.go | 4 +- src/crypto/internal/fips140/tls12/tls12.go | 7 +- src/crypto/internal/fips140/tls13/tls13.go | 38 +-- src/crypto/internal/fips140test/acvp_test.go | 241 +++++++++--------- src/crypto/sha3/sha3_test.go | 4 +- src/go/build/deps_test.go | 8 +- 14 files changed, 188 insertions(+), 203 deletions(-) delete mode 100644 src/crypto/internal/fips140/hash.go diff --git a/src/crypto/internal/fips140/ecdsa/ecdsa.go b/src/crypto/internal/fips140/ecdsa/ecdsa.go index 11389e8210..47c1b24421 100644 --- a/src/crypto/internal/fips140/ecdsa/ecdsa.go +++ b/src/crypto/internal/fips140/ecdsa/ecdsa.go @@ -11,6 +11,7 @@ import ( "crypto/internal/fips140/drbg" "crypto/internal/fips140/nistec" "errors" + "hash" "io" "sync" ) @@ -271,7 +272,7 @@ type Signature struct { // the hash function H) using the private key, priv. If the hash is longer than // the bit-length of the private key's curve order, the hash will be truncated // to that length. -func Sign[P Point[P], H fips140.Hash](c *Curve[P], h func() H, priv *PrivateKey, rand io.Reader, hash []byte) (*Signature, error) { +func Sign[P Point[P], H hash.Hash](c *Curve[P], h func() H, priv *PrivateKey, rand io.Reader, hash []byte) (*Signature, error) { if priv.pub.curve != c.curve { return nil, errors.New("ecdsa: private key does not match curve") } @@ -304,7 +305,7 @@ func Sign[P Point[P], H fips140.Hash](c *Curve[P], h func() H, priv *PrivateKey, // hash is longer than the bit-length of the private key's curve order, the hash // will be truncated to that length. This applies Deterministic ECDSA as // specified in FIPS 186-5 and RFC 6979. -func SignDeterministic[P Point[P], H fips140.Hash](c *Curve[P], h func() H, priv *PrivateKey, hash []byte) (*Signature, error) { +func SignDeterministic[P Point[P], H hash.Hash](c *Curve[P], h func() H, priv *PrivateKey, hash []byte) (*Signature, error) { if priv.pub.curve != c.curve { return nil, errors.New("ecdsa: private key does not match curve") } diff --git a/src/crypto/internal/fips140/ecdsa/hmacdrbg.go b/src/crypto/internal/fips140/ecdsa/hmacdrbg.go index 8f52091170..fa82ce39f9 100644 --- a/src/crypto/internal/fips140/ecdsa/hmacdrbg.go +++ b/src/crypto/internal/fips140/ecdsa/hmacdrbg.go @@ -8,6 +8,7 @@ import ( "bytes" "crypto/internal/fips140" "crypto/internal/fips140/hmac" + "hash" ) // hmacDRBG is an SP 800-90A Rev. 1 HMAC_DRBG. @@ -48,7 +49,7 @@ type personalizationString interface { isPersonalizationString() } -func newDRBG[H fips140.Hash](hash func() H, entropy, nonce []byte, s personalizationString) *hmacDRBG { +func newDRBG[H hash.Hash](hash func() H, entropy, nonce []byte, s personalizationString) *hmacDRBG { // HMAC_DRBG_Instantiate_algorithm, per Section 10.1.2.3. fips140.RecordApproved() @@ -121,7 +122,7 @@ func newDRBG[H fips140.Hash](hash func() H, entropy, nonce []byte, s personaliza // // This should only be used for ACVP testing. hmacDRBG is not intended to be // used directly. -func TestingOnlyNewDRBG(hash func() fips140.Hash, entropy, nonce []byte, s []byte) *hmacDRBG { +func TestingOnlyNewDRBG(hash func() hash.Hash, entropy, nonce []byte, s []byte) *hmacDRBG { return newDRBG(hash, entropy, nonce, plainPersonalizationString(s)) } diff --git a/src/crypto/internal/fips140/fips140.go b/src/crypto/internal/fips140/fips140.go index e05ad66374..050967f480 100644 --- a/src/crypto/internal/fips140/fips140.go +++ b/src/crypto/internal/fips140/fips140.go @@ -7,6 +7,7 @@ package fips140 import ( "crypto/internal/fips140deps/godebug" "errors" + "hash" "runtime" ) @@ -69,3 +70,9 @@ func Version() string { // moved to a different file. return "latest" //mkzip:version } + +// Hash is a legacy compatibility alias for hash.Hash. +// +// It's only here because [crypto/internal/fips140/ecdsa.TestingOnlyNewDRBG] +// takes a "func() fips140.Hash" in v1.0.0, instead of being generic. +type Hash = hash.Hash diff --git a/src/crypto/internal/fips140/hash.go b/src/crypto/internal/fips140/hash.go deleted file mode 100644 index bc6c7ca2f5..0000000000 --- a/src/crypto/internal/fips140/hash.go +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2024 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package fips140 - -import "io" - -// Hash is the common interface implemented by all hash functions. It is a copy -// of [hash.Hash] from the standard library, to avoid depending on security -// definitions from outside of the module. -type Hash interface { - // Write (via the embedded io.Writer interface) adds more data to the - // running hash. It never returns an error. - io.Writer - - // Sum appends the current hash to b and returns the resulting slice. - // It does not change the underlying hash state. - Sum(b []byte) []byte - - // Reset resets the Hash to its initial state. - Reset() - - // Size returns the number of bytes Sum will return. - Size() int - - // BlockSize returns the hash's underlying block size. - // The Write method must be able to accept any amount - // of data, but it may operate more efficiently if all writes - // are a multiple of the block size. - BlockSize() int -} diff --git a/src/crypto/internal/fips140/hkdf/hkdf.go b/src/crypto/internal/fips140/hkdf/hkdf.go index e612fbbc21..2e8b83d41d 100644 --- a/src/crypto/internal/fips140/hkdf/hkdf.go +++ b/src/crypto/internal/fips140/hkdf/hkdf.go @@ -7,9 +7,10 @@ package hkdf import ( "crypto/internal/fips140" "crypto/internal/fips140/hmac" + "hash" ) -func Extract[H fips140.Hash](h func() H, secret, salt []byte) []byte { +func Extract[H hash.Hash](h func() H, secret, salt []byte) []byte { if len(secret) < 112/8 { fips140.RecordNonApproved() } @@ -23,7 +24,7 @@ func Extract[H fips140.Hash](h func() H, secret, salt []byte) []byte { return extractor.Sum(nil) } -func Expand[H fips140.Hash](h func() H, pseudorandomKey []byte, info string, keyLen int) []byte { +func Expand[H hash.Hash](h func() H, pseudorandomKey []byte, info string, keyLen int) []byte { out := make([]byte, 0, keyLen) expander := hmac.New(h, pseudorandomKey) hmac.MarkAsUsedInKDF(expander) @@ -50,7 +51,7 @@ func Expand[H fips140.Hash](h func() H, pseudorandomKey []byte, info string, key return out } -func Key[H fips140.Hash](h func() H, secret, salt []byte, info string, keyLen int) []byte { +func Key[H hash.Hash](h func() H, secret, salt []byte, info string, keyLen int) []byte { prk := Extract(h, secret, salt) return Expand(h, prk, info, keyLen) } diff --git a/src/crypto/internal/fips140/hmac/hmac.go b/src/crypto/internal/fips140/hmac/hmac.go index 5a588d7c26..3d193d5592 100644 --- a/src/crypto/internal/fips140/hmac/hmac.go +++ b/src/crypto/internal/fips140/hmac/hmac.go @@ -12,6 +12,7 @@ import ( "crypto/internal/fips140/sha256" "crypto/internal/fips140/sha3" "crypto/internal/fips140/sha512" + "hash" ) // key is zero padded to the block size of the hash function @@ -29,7 +30,7 @@ type marshalable interface { type HMAC struct { opad, ipad []byte - outer, inner fips140.Hash + outer, inner hash.Hash // If marshaled is true, then opad and ipad do not contain a padded // copy of the key, but rather the marshaled state of outer/inner after @@ -127,8 +128,8 @@ func (h *HMAC) Reset() { h.marshaled = true } -// New returns a new HMAC hash using the given [fips140.Hash] type and key. -func New[H fips140.Hash](h func() H, key []byte) *HMAC { +// New returns a new HMAC hash using the given [hash.Hash] type and key. +func New[H hash.Hash](h func() H, key []byte) *HMAC { hm := &HMAC{keyLen: len(key)} hm.outer = h() hm.inner = h() diff --git a/src/crypto/internal/fips140/pbkdf2/pbkdf2.go b/src/crypto/internal/fips140/pbkdf2/pbkdf2.go index 05923f6826..2cd9b00241 100644 --- a/src/crypto/internal/fips140/pbkdf2/pbkdf2.go +++ b/src/crypto/internal/fips140/pbkdf2/pbkdf2.go @@ -8,6 +8,7 @@ import ( "crypto/internal/fips140" "crypto/internal/fips140/hmac" "errors" + "hash" ) // divRoundUp divides x+y-1 by y, rounding up if the result is not whole. @@ -19,7 +20,7 @@ func divRoundUp(x, y int) int { return int((int64(x) + int64(y) - 1) / int64(y)) } -func Key[Hash fips140.Hash](h func() Hash, password string, salt []byte, iter, keyLength int) ([]byte, error) { +func Key[Hash hash.Hash](h func() Hash, password string, salt []byte, iter, keyLength int) ([]byte, error) { setServiceIndicator(salt, keyLength) if keyLength <= 0 { diff --git a/src/crypto/internal/fips140/rsa/pkcs1v22.go b/src/crypto/internal/fips140/rsa/pkcs1v22.go index a5bc56dafc..9ec28da794 100644 --- a/src/crypto/internal/fips140/rsa/pkcs1v22.go +++ b/src/crypto/internal/fips140/rsa/pkcs1v22.go @@ -16,6 +16,7 @@ import ( "crypto/internal/fips140/sha512" "crypto/internal/fips140/subtle" "errors" + "hash" "io" ) @@ -48,7 +49,7 @@ func incCounter(c *[4]byte) { // mgf1XOR XORs the bytes in out with a mask generated using the MGF1 function // specified in PKCS #1 v2.1. -func mgf1XOR(out []byte, hash fips140.Hash, seed []byte) { +func mgf1XOR(out []byte, hash hash.Hash, seed []byte) { var counter [4]byte var digest []byte @@ -67,7 +68,7 @@ func mgf1XOR(out []byte, hash fips140.Hash, seed []byte) { } } -func emsaPSSEncode(mHash []byte, emBits int, salt []byte, hash fips140.Hash) ([]byte, error) { +func emsaPSSEncode(mHash []byte, emBits int, salt []byte, hash hash.Hash) ([]byte, error) { // See RFC 8017, Section 9.1.1. hLen := hash.Size() @@ -144,7 +145,7 @@ func emsaPSSEncode(mHash []byte, emBits int, salt []byte, hash fips140.Hash) ([] const pssSaltLengthAutodetect = -1 -func emsaPSSVerify(mHash, em []byte, emBits, sLen int, hash fips140.Hash) error { +func emsaPSSVerify(mHash, em []byte, emBits, sLen int, hash hash.Hash) error { // See RFC 8017, Section 9.1.2. hLen := hash.Size() @@ -250,7 +251,7 @@ func emsaPSSVerify(mHash, em []byte, emBits, sLen int, hash fips140.Hash) error // PSSMaxSaltLength returns the maximum salt length for a given public key and // hash function. -func PSSMaxSaltLength(pub *PublicKey, hash fips140.Hash) (int, error) { +func PSSMaxSaltLength(pub *PublicKey, hash hash.Hash) (int, error) { saltLength := (pub.N.BitLen()-1+7)/8 - 2 - hash.Size() if saltLength < 0 { return 0, ErrMessageTooLong @@ -264,7 +265,7 @@ func PSSMaxSaltLength(pub *PublicKey, hash fips140.Hash) (int, error) { } // SignPSS calculates the signature of hashed using RSASSA-PSS. -func SignPSS(rand io.Reader, priv *PrivateKey, hash fips140.Hash, hashed []byte, saltLength int) ([]byte, error) { +func SignPSS(rand io.Reader, priv *PrivateKey, hash hash.Hash, hashed []byte, saltLength int) ([]byte, error) { fipsSelfTest() fips140.RecordApproved() checkApprovedHash(hash) @@ -311,19 +312,19 @@ func SignPSS(rand io.Reader, priv *PrivateKey, hash fips140.Hash, hashed []byte, } // VerifyPSS verifies sig with RSASSA-PSS automatically detecting the salt length. -func VerifyPSS(pub *PublicKey, hash fips140.Hash, digest []byte, sig []byte) error { +func VerifyPSS(pub *PublicKey, hash hash.Hash, digest []byte, sig []byte) error { return verifyPSS(pub, hash, digest, sig, pssSaltLengthAutodetect) } // VerifyPSS verifies sig with RSASSA-PSS and an expected salt length. -func VerifyPSSWithSaltLength(pub *PublicKey, hash fips140.Hash, digest []byte, sig []byte, saltLength int) error { +func VerifyPSSWithSaltLength(pub *PublicKey, hash hash.Hash, digest []byte, sig []byte, saltLength int) error { if saltLength < 0 { return errors.New("crypto/rsa: salt length cannot be negative") } return verifyPSS(pub, hash, digest, sig, saltLength) } -func verifyPSS(pub *PublicKey, hash fips140.Hash, digest []byte, sig []byte, saltLength int) error { +func verifyPSS(pub *PublicKey, hash hash.Hash, digest []byte, sig []byte, saltLength int) error { fipsSelfTest() fips140.RecordApproved() checkApprovedHash(hash) @@ -359,7 +360,7 @@ func verifyPSS(pub *PublicKey, hash fips140.Hash, digest []byte, sig []byte, sal return emsaPSSVerify(digest, em, emBits, saltLength, hash) } -func checkApprovedHash(hash fips140.Hash) { +func checkApprovedHash(hash hash.Hash) { switch hash.(type) { case *sha256.Digest, *sha512.Digest, *sha3.Digest: default: @@ -368,7 +369,7 @@ func checkApprovedHash(hash fips140.Hash) { } // EncryptOAEP encrypts the given message with RSAES-OAEP. -func EncryptOAEP(hash, mgfHash fips140.Hash, random io.Reader, pub *PublicKey, msg []byte, label []byte) ([]byte, error) { +func EncryptOAEP(hash, mgfHash hash.Hash, random io.Reader, pub *PublicKey, msg []byte, label []byte) ([]byte, error) { // Note that while we don't commit to deterministic execution with respect // to the random stream, we also don't apply MaybeReadByte, so per Hyrum's // Law it's probably relied upon by some. It's a tolerable promise because a @@ -411,7 +412,7 @@ func EncryptOAEP(hash, mgfHash fips140.Hash, random io.Reader, pub *PublicKey, m } // DecryptOAEP decrypts ciphertext using RSAES-OAEP. -func DecryptOAEP(hash, mgfHash fips140.Hash, priv *PrivateKey, ciphertext []byte, label []byte) ([]byte, error) { +func DecryptOAEP(hash, mgfHash hash.Hash, priv *PrivateKey, ciphertext []byte, label []byte) ([]byte, error) { fipsSelfTest() fips140.RecordApproved() checkApprovedHash(hash) diff --git a/src/crypto/internal/fips140/ssh/kdf.go b/src/crypto/internal/fips140/ssh/kdf.go index 837af199c4..431deda8dd 100644 --- a/src/crypto/internal/fips140/ssh/kdf.go +++ b/src/crypto/internal/fips140/ssh/kdf.go @@ -7,8 +7,8 @@ package ssh import ( - "crypto/internal/fips140" _ "crypto/internal/fips140/check" + "hash" ) type Direction struct { @@ -24,7 +24,7 @@ func init() { ClientKeys = Direction{[]byte{'A'}, []byte{'C'}, []byte{'E'}} } -func Keys[Hash fips140.Hash](hash func() Hash, d Direction, +func Keys[Hash hash.Hash](hash func() Hash, d Direction, K, H, sessionID []byte, ivKeyLen, keyLen, macKeyLen int, ) (ivKey, key, macKey []byte) { diff --git a/src/crypto/internal/fips140/tls12/tls12.go b/src/crypto/internal/fips140/tls12/tls12.go index b07e02c85f..5b4dcae101 100644 --- a/src/crypto/internal/fips140/tls12/tls12.go +++ b/src/crypto/internal/fips140/tls12/tls12.go @@ -9,11 +9,12 @@ import ( "crypto/internal/fips140/hmac" "crypto/internal/fips140/sha256" "crypto/internal/fips140/sha512" + "hash" ) // PRF implements the TLS 1.2 pseudo-random function, as defined in RFC 5246, // Section 5 and allowed by SP 800-135, Revision 1, Section 4.2.2. -func PRF[H fips140.Hash](hash func() H, secret []byte, label string, seed []byte, keyLen int) []byte { +func PRF[H hash.Hash](hash func() H, secret []byte, label string, seed []byte, keyLen int) []byte { labelAndSeed := make([]byte, len(label)+len(seed)) copy(labelAndSeed, label) copy(labelAndSeed[len(label):], seed) @@ -24,7 +25,7 @@ func PRF[H fips140.Hash](hash func() H, secret []byte, label string, seed []byte } // pHash implements the P_hash function, as defined in RFC 5246, Section 5. -func pHash[H fips140.Hash](hash func() H, result, secret, seed []byte) { +func pHash[H hash.Hash](hash func() H, result, secret, seed []byte) { h := hmac.New(hash, secret) h.Write(seed) a := h.Sum(nil) @@ -48,7 +49,7 @@ const extendedMasterSecretLabel = "extended master secret" // MasterSecret implements the TLS 1.2 extended master secret derivation, as // defined in RFC 7627 and allowed by SP 800-135, Revision 1, Section 4.2.2. -func MasterSecret[H fips140.Hash](hash func() H, preMasterSecret, transcript []byte) []byte { +func MasterSecret[H hash.Hash](hash func() H, preMasterSecret, transcript []byte) []byte { // "The TLS 1.2 KDF is an approved KDF when the following conditions are // satisfied: [...] (3) P_HASH uses either SHA-256, SHA-384 or SHA-512." h := hash() diff --git a/src/crypto/internal/fips140/tls13/tls13.go b/src/crypto/internal/fips140/tls13/tls13.go index 009844a507..f2c2423a25 100644 --- a/src/crypto/internal/fips140/tls13/tls13.go +++ b/src/crypto/internal/fips140/tls13/tls13.go @@ -7,9 +7,9 @@ package tls13 import ( - "crypto/internal/fips140" "crypto/internal/fips140/hkdf" "crypto/internal/fips140deps/byteorder" + "hash" ) // We don't set the service indicator in this package but we delegate that to @@ -17,7 +17,7 @@ import ( // its own. // ExpandLabel implements HKDF-Expand-Label from RFC 8446, Section 7.1. -func ExpandLabel[H fips140.Hash](hash func() H, secret []byte, label string, context []byte, length int) []byte { +func ExpandLabel[H hash.Hash](hash func() H, secret []byte, label string, context []byte, length int) []byte { if len("tls13 ")+len(label) > 255 || len(context) > 255 { // It should be impossible for this to panic: labels are fixed strings, // and context is either a fixed-length computed hash, or parsed from a @@ -39,14 +39,14 @@ func ExpandLabel[H fips140.Hash](hash func() H, secret []byte, label string, con return hkdf.Expand(hash, secret, string(hkdfLabel), length) } -func extract[H fips140.Hash](hash func() H, newSecret, currentSecret []byte) []byte { +func extract[H hash.Hash](hash func() H, newSecret, currentSecret []byte) []byte { if newSecret == nil { newSecret = make([]byte, hash().Size()) } return hkdf.Extract(hash, newSecret, currentSecret) } -func deriveSecret[H fips140.Hash](hash func() H, secret []byte, label string, transcript fips140.Hash) []byte { +func deriveSecret[H hash.Hash](hash func() H, secret []byte, label string, transcript hash.Hash) []byte { if transcript == nil { transcript = hash() } @@ -67,13 +67,13 @@ const ( type EarlySecret struct { secret []byte - hash func() fips140.Hash + hash func() hash.Hash } -func NewEarlySecret[H fips140.Hash](hash func() H, psk []byte) *EarlySecret { +func NewEarlySecret[H hash.Hash](h func() H, psk []byte) *EarlySecret { return &EarlySecret{ - secret: extract(hash, psk, nil), - hash: func() fips140.Hash { return hash() }, + secret: extract(h, psk, nil), + hash: func() hash.Hash { return h() }, } } @@ -83,13 +83,13 @@ func (s *EarlySecret) ResumptionBinderKey() []byte { // ClientEarlyTrafficSecret derives the client_early_traffic_secret from the // early secret and the transcript up to the ClientHello. -func (s *EarlySecret) ClientEarlyTrafficSecret(transcript fips140.Hash) []byte { +func (s *EarlySecret) ClientEarlyTrafficSecret(transcript hash.Hash) []byte { return deriveSecret(s.hash, s.secret, clientEarlyTrafficLabel, transcript) } type HandshakeSecret struct { secret []byte - hash func() fips140.Hash + hash func() hash.Hash } func (s *EarlySecret) HandshakeSecret(sharedSecret []byte) *HandshakeSecret { @@ -102,19 +102,19 @@ func (s *EarlySecret) HandshakeSecret(sharedSecret []byte) *HandshakeSecret { // ClientHandshakeTrafficSecret derives the client_handshake_traffic_secret from // the handshake secret and the transcript up to the ServerHello. -func (s *HandshakeSecret) ClientHandshakeTrafficSecret(transcript fips140.Hash) []byte { +func (s *HandshakeSecret) ClientHandshakeTrafficSecret(transcript hash.Hash) []byte { return deriveSecret(s.hash, s.secret, clientHandshakeTrafficLabel, transcript) } // ServerHandshakeTrafficSecret derives the server_handshake_traffic_secret from // the handshake secret and the transcript up to the ServerHello. -func (s *HandshakeSecret) ServerHandshakeTrafficSecret(transcript fips140.Hash) []byte { +func (s *HandshakeSecret) ServerHandshakeTrafficSecret(transcript hash.Hash) []byte { return deriveSecret(s.hash, s.secret, serverHandshakeTrafficLabel, transcript) } type MasterSecret struct { secret []byte - hash func() fips140.Hash + hash func() hash.Hash } func (s *HandshakeSecret) MasterSecret() *MasterSecret { @@ -127,30 +127,30 @@ func (s *HandshakeSecret) MasterSecret() *MasterSecret { // ClientApplicationTrafficSecret derives the client_application_traffic_secret_0 // from the master secret and the transcript up to the server Finished. -func (s *MasterSecret) ClientApplicationTrafficSecret(transcript fips140.Hash) []byte { +func (s *MasterSecret) ClientApplicationTrafficSecret(transcript hash.Hash) []byte { return deriveSecret(s.hash, s.secret, clientApplicationTrafficLabel, transcript) } // ServerApplicationTrafficSecret derives the server_application_traffic_secret_0 // from the master secret and the transcript up to the server Finished. -func (s *MasterSecret) ServerApplicationTrafficSecret(transcript fips140.Hash) []byte { +func (s *MasterSecret) ServerApplicationTrafficSecret(transcript hash.Hash) []byte { return deriveSecret(s.hash, s.secret, serverApplicationTrafficLabel, transcript) } // ResumptionMasterSecret derives the resumption_master_secret from the master secret // and the transcript up to the client Finished. -func (s *MasterSecret) ResumptionMasterSecret(transcript fips140.Hash) []byte { +func (s *MasterSecret) ResumptionMasterSecret(transcript hash.Hash) []byte { return deriveSecret(s.hash, s.secret, resumptionLabel, transcript) } type ExporterMasterSecret struct { secret []byte - hash func() fips140.Hash + hash func() hash.Hash } // ExporterMasterSecret derives the exporter_master_secret from the master secret // and the transcript up to the server Finished. -func (s *MasterSecret) ExporterMasterSecret(transcript fips140.Hash) *ExporterMasterSecret { +func (s *MasterSecret) ExporterMasterSecret(transcript hash.Hash) *ExporterMasterSecret { return &ExporterMasterSecret{ secret: deriveSecret(s.hash, s.secret, exporterLabel, transcript), hash: s.hash, @@ -159,7 +159,7 @@ func (s *MasterSecret) ExporterMasterSecret(transcript fips140.Hash) *ExporterMa // EarlyExporterMasterSecret derives the exporter_master_secret from the early secret // and the transcript up to the ClientHello. -func (s *EarlySecret) EarlyExporterMasterSecret(transcript fips140.Hash) *ExporterMasterSecret { +func (s *EarlySecret) EarlyExporterMasterSecret(transcript hash.Hash) *ExporterMasterSecret { return &ExporterMasterSecret{ secret: deriveSecret(s.hash, s.secret, earlyExporterLabel, transcript), hash: s.hash, diff --git a/src/crypto/internal/fips140test/acvp_test.go b/src/crypto/internal/fips140test/acvp_test.go index ddb234bab6..5871bde8be 100644 --- a/src/crypto/internal/fips140test/acvp_test.go +++ b/src/crypto/internal/fips140test/acvp_test.go @@ -50,6 +50,7 @@ import ( "encoding/binary" "errors" "fmt" + "hash" "internal/testenv" "io" "math/big" @@ -198,32 +199,32 @@ var ( "cSHAKE-256": cmdCShakeAft(func(N, S []byte) *sha3.SHAKE { return sha3.NewCShake256(N, S) }), "cSHAKE-256/MCT": cmdCShakeMct(func(N, S []byte) *sha3.SHAKE { return sha3.NewCShake256(N, S) }), - "HMAC-SHA2-224": cmdHmacAft(func() fips140.Hash { return sha256.New224() }), - "HMAC-SHA2-256": cmdHmacAft(func() fips140.Hash { return sha256.New() }), - "HMAC-SHA2-384": cmdHmacAft(func() fips140.Hash { return sha512.New384() }), - "HMAC-SHA2-512": cmdHmacAft(func() fips140.Hash { return sha512.New() }), - "HMAC-SHA2-512/224": cmdHmacAft(func() fips140.Hash { return sha512.New512_224() }), - "HMAC-SHA2-512/256": cmdHmacAft(func() fips140.Hash { return sha512.New512_256() }), - "HMAC-SHA3-224": cmdHmacAft(func() fips140.Hash { return sha3.New224() }), - "HMAC-SHA3-256": cmdHmacAft(func() fips140.Hash { return sha3.New256() }), - "HMAC-SHA3-384": cmdHmacAft(func() fips140.Hash { return sha3.New384() }), - "HMAC-SHA3-512": cmdHmacAft(func() fips140.Hash { return sha3.New512() }), + "HMAC-SHA2-224": cmdHmacAft(func() hash.Hash { return sha256.New224() }), + "HMAC-SHA2-256": cmdHmacAft(func() hash.Hash { return sha256.New() }), + "HMAC-SHA2-384": cmdHmacAft(func() hash.Hash { return sha512.New384() }), + "HMAC-SHA2-512": cmdHmacAft(func() hash.Hash { return sha512.New() }), + "HMAC-SHA2-512/224": cmdHmacAft(func() hash.Hash { return sha512.New512_224() }), + "HMAC-SHA2-512/256": cmdHmacAft(func() hash.Hash { return sha512.New512_256() }), + "HMAC-SHA3-224": cmdHmacAft(func() hash.Hash { return sha3.New224() }), + "HMAC-SHA3-256": cmdHmacAft(func() hash.Hash { return sha3.New256() }), + "HMAC-SHA3-384": cmdHmacAft(func() hash.Hash { return sha3.New384() }), + "HMAC-SHA3-512": cmdHmacAft(func() hash.Hash { return sha3.New512() }), - "HKDF/SHA2-224": cmdHkdfAft(func() fips140.Hash { return sha256.New224() }), - "HKDF/SHA2-256": cmdHkdfAft(func() fips140.Hash { return sha256.New() }), - "HKDF/SHA2-384": cmdHkdfAft(func() fips140.Hash { return sha512.New384() }), - "HKDF/SHA2-512": cmdHkdfAft(func() fips140.Hash { return sha512.New() }), - "HKDF/SHA2-512/224": cmdHkdfAft(func() fips140.Hash { return sha512.New512_224() }), - "HKDF/SHA2-512/256": cmdHkdfAft(func() fips140.Hash { return sha512.New512_256() }), - "HKDF/SHA3-224": cmdHkdfAft(func() fips140.Hash { return sha3.New224() }), - "HKDF/SHA3-256": cmdHkdfAft(func() fips140.Hash { return sha3.New256() }), - "HKDF/SHA3-384": cmdHkdfAft(func() fips140.Hash { return sha3.New384() }), - "HKDF/SHA3-512": cmdHkdfAft(func() fips140.Hash { return sha3.New512() }), + "HKDF/SHA2-224": cmdHkdfAft(func() hash.Hash { return sha256.New224() }), + "HKDF/SHA2-256": cmdHkdfAft(func() hash.Hash { return sha256.New() }), + "HKDF/SHA2-384": cmdHkdfAft(func() hash.Hash { return sha512.New384() }), + "HKDF/SHA2-512": cmdHkdfAft(func() hash.Hash { return sha512.New() }), + "HKDF/SHA2-512/224": cmdHkdfAft(func() hash.Hash { return sha512.New512_224() }), + "HKDF/SHA2-512/256": cmdHkdfAft(func() hash.Hash { return sha512.New512_256() }), + "HKDF/SHA3-224": cmdHkdfAft(func() hash.Hash { return sha3.New224() }), + "HKDF/SHA3-256": cmdHkdfAft(func() hash.Hash { return sha3.New256() }), + "HKDF/SHA3-384": cmdHkdfAft(func() hash.Hash { return sha3.New384() }), + "HKDF/SHA3-512": cmdHkdfAft(func() hash.Hash { return sha3.New512() }), - "HKDFExtract/SHA2-256": cmdHkdfExtractAft(func() fips140.Hash { return sha256.New() }), - "HKDFExtract/SHA2-384": cmdHkdfExtractAft(func() fips140.Hash { return sha512.New384() }), - "HKDFExpandLabel/SHA2-256": cmdHkdfExpandLabelAft(func() fips140.Hash { return sha256.New() }), - "HKDFExpandLabel/SHA2-384": cmdHkdfExpandLabelAft(func() fips140.Hash { return sha512.New384() }), + "HKDFExtract/SHA2-256": cmdHkdfExtractAft(func() hash.Hash { return sha256.New() }), + "HKDFExtract/SHA2-384": cmdHkdfExtractAft(func() hash.Hash { return sha512.New384() }), + "HKDFExpandLabel/SHA2-256": cmdHkdfExpandLabelAft(func() hash.Hash { return sha256.New() }), + "HKDFExpandLabel/SHA2-384": cmdHkdfExpandLabelAft(func() hash.Hash { return sha512.New384() }), "PBKDF": cmdPbkdf(), @@ -234,16 +235,16 @@ var ( "ML-KEM-1024/encap": cmdMlKem1024EncapAft(), "ML-KEM-1024/decap": cmdMlKem1024DecapAft(), - "hmacDRBG/SHA2-224": cmdHmacDrbgAft(func() fips140.Hash { return sha256.New224() }), - "hmacDRBG/SHA2-256": cmdHmacDrbgAft(func() fips140.Hash { return sha256.New() }), - "hmacDRBG/SHA2-384": cmdHmacDrbgAft(func() fips140.Hash { return sha512.New384() }), - "hmacDRBG/SHA2-512": cmdHmacDrbgAft(func() fips140.Hash { return sha512.New() }), - "hmacDRBG/SHA2-512/224": cmdHmacDrbgAft(func() fips140.Hash { return sha512.New512_224() }), - "hmacDRBG/SHA2-512/256": cmdHmacDrbgAft(func() fips140.Hash { return sha512.New512_256() }), - "hmacDRBG/SHA3-224": cmdHmacDrbgAft(func() fips140.Hash { return sha3.New224() }), - "hmacDRBG/SHA3-256": cmdHmacDrbgAft(func() fips140.Hash { return sha3.New256() }), - "hmacDRBG/SHA3-384": cmdHmacDrbgAft(func() fips140.Hash { return sha3.New384() }), - "hmacDRBG/SHA3-512": cmdHmacDrbgAft(func() fips140.Hash { return sha3.New512() }), + "hmacDRBG/SHA2-224": cmdHmacDrbgAft(func() hash.Hash { return sha256.New224() }), + "hmacDRBG/SHA2-256": cmdHmacDrbgAft(func() hash.Hash { return sha256.New() }), + "hmacDRBG/SHA2-384": cmdHmacDrbgAft(func() hash.Hash { return sha512.New384() }), + "hmacDRBG/SHA2-512": cmdHmacDrbgAft(func() hash.Hash { return sha512.New() }), + "hmacDRBG/SHA2-512/224": cmdHmacDrbgAft(func() hash.Hash { return sha512.New512_224() }), + "hmacDRBG/SHA2-512/256": cmdHmacDrbgAft(func() hash.Hash { return sha512.New512_256() }), + "hmacDRBG/SHA3-224": cmdHmacDrbgAft(func() hash.Hash { return sha3.New224() }), + "hmacDRBG/SHA3-256": cmdHmacDrbgAft(func() hash.Hash { return sha3.New256() }), + "hmacDRBG/SHA3-384": cmdHmacDrbgAft(func() hash.Hash { return sha3.New384() }), + "hmacDRBG/SHA3-512": cmdHmacDrbgAft(func() hash.Hash { return sha3.New512() }), "EDDSA/keyGen": cmdEddsaKeyGenAft(), "EDDSA/keyVer": cmdEddsaKeyVerAft(), @@ -270,20 +271,20 @@ var ( // Note: Only SHA2-256, SHA2-384 and SHA2-512 are valid hash functions for TLSKDF. // See https://pages.nist.gov/ACVP/draft-celi-acvp-kdf-tls.html#section-7.2.1 - "TLSKDF/1.2/SHA2-256": cmdTlsKdf12Aft(func() fips140.Hash { return sha256.New() }), - "TLSKDF/1.2/SHA2-384": cmdTlsKdf12Aft(func() fips140.Hash { return sha512.New384() }), - "TLSKDF/1.2/SHA2-512": cmdTlsKdf12Aft(func() fips140.Hash { return sha512.New() }), + "TLSKDF/1.2/SHA2-256": cmdTlsKdf12Aft(func() hash.Hash { return sha256.New() }), + "TLSKDF/1.2/SHA2-384": cmdTlsKdf12Aft(func() hash.Hash { return sha512.New384() }), + "TLSKDF/1.2/SHA2-512": cmdTlsKdf12Aft(func() hash.Hash { return sha512.New() }), // Note: only SHA2-224, SHA2-256, SHA2-384 and SHA2-512 are valid hash functions for SSHKDF. // See https://pages.nist.gov/ACVP/draft-celi-acvp-kdf-ssh.html#section-7.2.1 - "SSHKDF/SHA2-224/client": cmdSshKdfAft(func() fips140.Hash { return sha256.New224() }, ssh.ClientKeys), - "SSHKDF/SHA2-224/server": cmdSshKdfAft(func() fips140.Hash { return sha256.New224() }, ssh.ServerKeys), - "SSHKDF/SHA2-256/client": cmdSshKdfAft(func() fips140.Hash { return sha256.New() }, ssh.ClientKeys), - "SSHKDF/SHA2-256/server": cmdSshKdfAft(func() fips140.Hash { return sha256.New() }, ssh.ServerKeys), - "SSHKDF/SHA2-384/client": cmdSshKdfAft(func() fips140.Hash { return sha512.New384() }, ssh.ClientKeys), - "SSHKDF/SHA2-384/server": cmdSshKdfAft(func() fips140.Hash { return sha512.New384() }, ssh.ServerKeys), - "SSHKDF/SHA2-512/client": cmdSshKdfAft(func() fips140.Hash { return sha512.New() }, ssh.ClientKeys), - "SSHKDF/SHA2-512/server": cmdSshKdfAft(func() fips140.Hash { return sha512.New() }, ssh.ServerKeys), + "SSHKDF/SHA2-224/client": cmdSshKdfAft(func() hash.Hash { return sha256.New224() }, ssh.ClientKeys), + "SSHKDF/SHA2-224/server": cmdSshKdfAft(func() hash.Hash { return sha256.New224() }, ssh.ServerKeys), + "SSHKDF/SHA2-256/client": cmdSshKdfAft(func() hash.Hash { return sha256.New() }, ssh.ClientKeys), + "SSHKDF/SHA2-256/server": cmdSshKdfAft(func() hash.Hash { return sha256.New() }, ssh.ServerKeys), + "SSHKDF/SHA2-384/client": cmdSshKdfAft(func() hash.Hash { return sha512.New384() }, ssh.ClientKeys), + "SSHKDF/SHA2-384/server": cmdSshKdfAft(func() hash.Hash { return sha512.New384() }, ssh.ServerKeys), + "SSHKDF/SHA2-512/client": cmdSshKdfAft(func() hash.Hash { return sha512.New() }, ssh.ClientKeys), + "SSHKDF/SHA2-512/server": cmdSshKdfAft(func() hash.Hash { return sha512.New() }, ssh.ServerKeys), "ECDH/P-224": cmdEcdhAftVal(ecdh.P224()), "ECDH/P-256": cmdEcdhAftVal(ecdh.P256()), @@ -295,58 +296,58 @@ var ( "RSA/keyGen": cmdRsaKeyGenAft(), - "RSA/sigGen/SHA2-224/pkcs1v1.5": cmdRsaSigGenAft(func() fips140.Hash { return sha256.New224() }, "SHA-224", false), - "RSA/sigGen/SHA2-256/pkcs1v1.5": cmdRsaSigGenAft(func() fips140.Hash { return sha256.New() }, "SHA-256", false), - "RSA/sigGen/SHA2-384/pkcs1v1.5": cmdRsaSigGenAft(func() fips140.Hash { return sha512.New384() }, "SHA-384", false), - "RSA/sigGen/SHA2-512/pkcs1v1.5": cmdRsaSigGenAft(func() fips140.Hash { return sha512.New() }, "SHA-512", false), - "RSA/sigGen/SHA2-224/pss": cmdRsaSigGenAft(func() fips140.Hash { return sha256.New224() }, "SHA-224", true), - "RSA/sigGen/SHA2-256/pss": cmdRsaSigGenAft(func() fips140.Hash { return sha256.New() }, "SHA-256", true), - "RSA/sigGen/SHA2-384/pss": cmdRsaSigGenAft(func() fips140.Hash { return sha512.New384() }, "SHA-384", true), - "RSA/sigGen/SHA2-512/pss": cmdRsaSigGenAft(func() fips140.Hash { return sha512.New() }, "SHA-512", true), + "RSA/sigGen/SHA2-224/pkcs1v1.5": cmdRsaSigGenAft(func() hash.Hash { return sha256.New224() }, "SHA-224", false), + "RSA/sigGen/SHA2-256/pkcs1v1.5": cmdRsaSigGenAft(func() hash.Hash { return sha256.New() }, "SHA-256", false), + "RSA/sigGen/SHA2-384/pkcs1v1.5": cmdRsaSigGenAft(func() hash.Hash { return sha512.New384() }, "SHA-384", false), + "RSA/sigGen/SHA2-512/pkcs1v1.5": cmdRsaSigGenAft(func() hash.Hash { return sha512.New() }, "SHA-512", false), + "RSA/sigGen/SHA2-224/pss": cmdRsaSigGenAft(func() hash.Hash { return sha256.New224() }, "SHA-224", true), + "RSA/sigGen/SHA2-256/pss": cmdRsaSigGenAft(func() hash.Hash { return sha256.New() }, "SHA-256", true), + "RSA/sigGen/SHA2-384/pss": cmdRsaSigGenAft(func() hash.Hash { return sha512.New384() }, "SHA-384", true), + "RSA/sigGen/SHA2-512/pss": cmdRsaSigGenAft(func() hash.Hash { return sha512.New() }, "SHA-512", true), - "RSA/sigVer/SHA2-224/pkcs1v1.5": cmdRsaSigVerAft(func() fips140.Hash { return sha256.New224() }, "SHA-224", false), - "RSA/sigVer/SHA2-256/pkcs1v1.5": cmdRsaSigVerAft(func() fips140.Hash { return sha256.New() }, "SHA-256", false), - "RSA/sigVer/SHA2-384/pkcs1v1.5": cmdRsaSigVerAft(func() fips140.Hash { return sha512.New384() }, "SHA-384", false), - "RSA/sigVer/SHA2-512/pkcs1v1.5": cmdRsaSigVerAft(func() fips140.Hash { return sha512.New() }, "SHA-512", false), - "RSA/sigVer/SHA2-224/pss": cmdRsaSigVerAft(func() fips140.Hash { return sha256.New224() }, "SHA-224", true), - "RSA/sigVer/SHA2-256/pss": cmdRsaSigVerAft(func() fips140.Hash { return sha256.New() }, "SHA-256", true), - "RSA/sigVer/SHA2-384/pss": cmdRsaSigVerAft(func() fips140.Hash { return sha512.New384() }, "SHA-384", true), - "RSA/sigVer/SHA2-512/pss": cmdRsaSigVerAft(func() fips140.Hash { return sha512.New() }, "SHA-512", true), + "RSA/sigVer/SHA2-224/pkcs1v1.5": cmdRsaSigVerAft(func() hash.Hash { return sha256.New224() }, "SHA-224", false), + "RSA/sigVer/SHA2-256/pkcs1v1.5": cmdRsaSigVerAft(func() hash.Hash { return sha256.New() }, "SHA-256", false), + "RSA/sigVer/SHA2-384/pkcs1v1.5": cmdRsaSigVerAft(func() hash.Hash { return sha512.New384() }, "SHA-384", false), + "RSA/sigVer/SHA2-512/pkcs1v1.5": cmdRsaSigVerAft(func() hash.Hash { return sha512.New() }, "SHA-512", false), + "RSA/sigVer/SHA2-224/pss": cmdRsaSigVerAft(func() hash.Hash { return sha256.New224() }, "SHA-224", true), + "RSA/sigVer/SHA2-256/pss": cmdRsaSigVerAft(func() hash.Hash { return sha256.New() }, "SHA-256", true), + "RSA/sigVer/SHA2-384/pss": cmdRsaSigVerAft(func() hash.Hash { return sha512.New384() }, "SHA-384", true), + "RSA/sigVer/SHA2-512/pss": cmdRsaSigVerAft(func() hash.Hash { return sha512.New() }, "SHA-512", true), "KDF-counter": cmdKdfCounterAft(), "KDF-feedback": cmdKdfFeedbackAft(), - "OneStepNoCounter/HMAC-SHA2-224": cmdOneStepNoCounterHmacAft(func() fips140.Hash { return sha256.New224() }), - "OneStepNoCounter/HMAC-SHA2-256": cmdOneStepNoCounterHmacAft(func() fips140.Hash { return sha256.New() }), - "OneStepNoCounter/HMAC-SHA2-384": cmdOneStepNoCounterHmacAft(func() fips140.Hash { return sha512.New384() }), - "OneStepNoCounter/HMAC-SHA2-512": cmdOneStepNoCounterHmacAft(func() fips140.Hash { return sha512.New() }), - "OneStepNoCounter/HMAC-SHA2-512/224": cmdOneStepNoCounterHmacAft(func() fips140.Hash { return sha512.New512_224() }), - "OneStepNoCounter/HMAC-SHA2-512/256": cmdOneStepNoCounterHmacAft(func() fips140.Hash { return sha512.New512_256() }), - "OneStepNoCounter/HMAC-SHA3-224": cmdOneStepNoCounterHmacAft(func() fips140.Hash { return sha3.New224() }), - "OneStepNoCounter/HMAC-SHA3-256": cmdOneStepNoCounterHmacAft(func() fips140.Hash { return sha3.New256() }), - "OneStepNoCounter/HMAC-SHA3-384": cmdOneStepNoCounterHmacAft(func() fips140.Hash { return sha3.New384() }), - "OneStepNoCounter/HMAC-SHA3-512": cmdOneStepNoCounterHmacAft(func() fips140.Hash { return sha3.New512() }), + "OneStepNoCounter/HMAC-SHA2-224": cmdOneStepNoCounterHmacAft(func() hash.Hash { return sha256.New224() }), + "OneStepNoCounter/HMAC-SHA2-256": cmdOneStepNoCounterHmacAft(func() hash.Hash { return sha256.New() }), + "OneStepNoCounter/HMAC-SHA2-384": cmdOneStepNoCounterHmacAft(func() hash.Hash { return sha512.New384() }), + "OneStepNoCounter/HMAC-SHA2-512": cmdOneStepNoCounterHmacAft(func() hash.Hash { return sha512.New() }), + "OneStepNoCounter/HMAC-SHA2-512/224": cmdOneStepNoCounterHmacAft(func() hash.Hash { return sha512.New512_224() }), + "OneStepNoCounter/HMAC-SHA2-512/256": cmdOneStepNoCounterHmacAft(func() hash.Hash { return sha512.New512_256() }), + "OneStepNoCounter/HMAC-SHA3-224": cmdOneStepNoCounterHmacAft(func() hash.Hash { return sha3.New224() }), + "OneStepNoCounter/HMAC-SHA3-256": cmdOneStepNoCounterHmacAft(func() hash.Hash { return sha3.New256() }), + "OneStepNoCounter/HMAC-SHA3-384": cmdOneStepNoCounterHmacAft(func() hash.Hash { return sha3.New384() }), + "OneStepNoCounter/HMAC-SHA3-512": cmdOneStepNoCounterHmacAft(func() hash.Hash { return sha3.New512() }), - "KTS-IFC/SHA2-224/initiator": cmdKtsIfcInitiatorAft(func() fips140.Hash { return sha256.New224() }), - "KTS-IFC/SHA2-224/responder": cmdKtsIfcResponderAft(func() fips140.Hash { return sha256.New224() }), - "KTS-IFC/SHA2-256/initiator": cmdKtsIfcInitiatorAft(func() fips140.Hash { return sha256.New() }), - "KTS-IFC/SHA2-256/responder": cmdKtsIfcResponderAft(func() fips140.Hash { return sha256.New() }), - "KTS-IFC/SHA2-384/initiator": cmdKtsIfcInitiatorAft(func() fips140.Hash { return sha512.New384() }), - "KTS-IFC/SHA2-384/responder": cmdKtsIfcResponderAft(func() fips140.Hash { return sha512.New384() }), - "KTS-IFC/SHA2-512/initiator": cmdKtsIfcInitiatorAft(func() fips140.Hash { return sha512.New() }), - "KTS-IFC/SHA2-512/responder": cmdKtsIfcResponderAft(func() fips140.Hash { return sha512.New() }), - "KTS-IFC/SHA2-512/224/initiator": cmdKtsIfcInitiatorAft(func() fips140.Hash { return sha512.New512_224() }), - "KTS-IFC/SHA2-512/224/responder": cmdKtsIfcResponderAft(func() fips140.Hash { return sha512.New512_224() }), - "KTS-IFC/SHA2-512/256/initiator": cmdKtsIfcInitiatorAft(func() fips140.Hash { return sha512.New512_256() }), - "KTS-IFC/SHA2-512/256/responder": cmdKtsIfcResponderAft(func() fips140.Hash { return sha512.New512_256() }), - "KTS-IFC/SHA3-224/initiator": cmdKtsIfcInitiatorAft(func() fips140.Hash { return sha3.New224() }), - "KTS-IFC/SHA3-224/responder": cmdKtsIfcResponderAft(func() fips140.Hash { return sha3.New224() }), - "KTS-IFC/SHA3-256/initiator": cmdKtsIfcInitiatorAft(func() fips140.Hash { return sha3.New256() }), - "KTS-IFC/SHA3-256/responder": cmdKtsIfcResponderAft(func() fips140.Hash { return sha3.New256() }), - "KTS-IFC/SHA3-384/initiator": cmdKtsIfcInitiatorAft(func() fips140.Hash { return sha3.New384() }), - "KTS-IFC/SHA3-384/responder": cmdKtsIfcResponderAft(func() fips140.Hash { return sha3.New384() }), - "KTS-IFC/SHA3-512/initiator": cmdKtsIfcInitiatorAft(func() fips140.Hash { return sha3.New512() }), - "KTS-IFC/SHA3-512/responder": cmdKtsIfcResponderAft(func() fips140.Hash { return sha3.New512() }), + "KTS-IFC/SHA2-224/initiator": cmdKtsIfcInitiatorAft(func() hash.Hash { return sha256.New224() }), + "KTS-IFC/SHA2-224/responder": cmdKtsIfcResponderAft(func() hash.Hash { return sha256.New224() }), + "KTS-IFC/SHA2-256/initiator": cmdKtsIfcInitiatorAft(func() hash.Hash { return sha256.New() }), + "KTS-IFC/SHA2-256/responder": cmdKtsIfcResponderAft(func() hash.Hash { return sha256.New() }), + "KTS-IFC/SHA2-384/initiator": cmdKtsIfcInitiatorAft(func() hash.Hash { return sha512.New384() }), + "KTS-IFC/SHA2-384/responder": cmdKtsIfcResponderAft(func() hash.Hash { return sha512.New384() }), + "KTS-IFC/SHA2-512/initiator": cmdKtsIfcInitiatorAft(func() hash.Hash { return sha512.New() }), + "KTS-IFC/SHA2-512/responder": cmdKtsIfcResponderAft(func() hash.Hash { return sha512.New() }), + "KTS-IFC/SHA2-512/224/initiator": cmdKtsIfcInitiatorAft(func() hash.Hash { return sha512.New512_224() }), + "KTS-IFC/SHA2-512/224/responder": cmdKtsIfcResponderAft(func() hash.Hash { return sha512.New512_224() }), + "KTS-IFC/SHA2-512/256/initiator": cmdKtsIfcInitiatorAft(func() hash.Hash { return sha512.New512_256() }), + "KTS-IFC/SHA2-512/256/responder": cmdKtsIfcResponderAft(func() hash.Hash { return sha512.New512_256() }), + "KTS-IFC/SHA3-224/initiator": cmdKtsIfcInitiatorAft(func() hash.Hash { return sha3.New224() }), + "KTS-IFC/SHA3-224/responder": cmdKtsIfcResponderAft(func() hash.Hash { return sha3.New224() }), + "KTS-IFC/SHA3-256/initiator": cmdKtsIfcInitiatorAft(func() hash.Hash { return sha3.New256() }), + "KTS-IFC/SHA3-256/responder": cmdKtsIfcResponderAft(func() hash.Hash { return sha3.New256() }), + "KTS-IFC/SHA3-384/initiator": cmdKtsIfcInitiatorAft(func() hash.Hash { return sha3.New384() }), + "KTS-IFC/SHA3-384/responder": cmdKtsIfcResponderAft(func() hash.Hash { return sha3.New384() }), + "KTS-IFC/SHA3-512/initiator": cmdKtsIfcInitiatorAft(func() hash.Hash { return sha3.New512() }), + "KTS-IFC/SHA3-512/responder": cmdKtsIfcResponderAft(func() hash.Hash { return sha3.New512() }), } ) @@ -473,7 +474,7 @@ func cmdGetConfig() command { // and writes the resulting digest as a response. // // See https://pages.nist.gov/ACVP/draft-celi-acvp-sha.html -func cmdHashAft(h fips140.Hash) command { +func cmdHashAft(h hash.Hash) command { return command{ requiredArgs: 1, // Message to hash. handler: func(args [][]byte) ([][]byte, error) { @@ -501,7 +502,7 @@ func cmdHashAft(h fips140.Hash) command { // // [0]: https://pages.nist.gov/ACVP/draft-celi-acvp-sha.html#section-6.2 // [1]: https://boringssl.googlesource.com/boringssl/+/refs/heads/master/util/fipstools/acvp/ACVP.md#testing-other-fips-modules -func cmdHashMct(h fips140.Hash) command { +func cmdHashMct(h hash.Hash) command { return command{ requiredArgs: 1, // Seed message. handler: func(args [][]byte) ([][]byte, error) { @@ -545,7 +546,7 @@ func cmdHashMct(h fips140.Hash) command { // like that handler it does not perform the outer 100 iterations. // // [0]: https://pages.nist.gov/ACVP/draft-celi-acvp-sha3.html#section-6.2.1 -func cmdSha3Mct(h fips140.Hash) command { +func cmdSha3Mct(h hash.Hash) command { return command{ requiredArgs: 1, // Seed message. handler: func(args [][]byte) ([][]byte, error) { @@ -712,7 +713,7 @@ func cmdCShakeMct(hFn func(N, S []byte) *sha3.SHAKE) command { } } -func cmdHmacAft(h func() fips140.Hash) command { +func cmdHmacAft(h func() hash.Hash) command { return command{ requiredArgs: 2, // Message and key handler: func(args [][]byte) ([][]byte, error) { @@ -725,7 +726,7 @@ func cmdHmacAft(h func() fips140.Hash) command { } } -func cmdHkdfAft(h func() fips140.Hash) command { +func cmdHkdfAft(h func() hash.Hash) command { return command{ requiredArgs: 4, // Key, salt, info, length bytes handler: func(args [][]byte) ([][]byte, error) { @@ -739,7 +740,7 @@ func cmdHkdfAft(h func() fips140.Hash) command { } } -func cmdHkdfExtractAft(h func() fips140.Hash) command { +func cmdHkdfExtractAft(h func() hash.Hash) command { return command{ requiredArgs: 2, // secret, salt handler: func(args [][]byte) ([][]byte, error) { @@ -751,7 +752,7 @@ func cmdHkdfExtractAft(h func() fips140.Hash) command { } } -func cmdHkdfExpandLabelAft(h func() fips140.Hash) command { +func cmdHkdfExpandLabelAft(h func() hash.Hash) command { return command{ requiredArgs: 4, // output length, secret, label, transcript hash handler: func(args [][]byte) ([][]byte, error) { @@ -990,7 +991,7 @@ func pointFromAffine(curve elliptic.Curve, x, y *big.Int) ([]byte, error) { return buf, nil } -func signEcdsa[P ecdsa.Point[P], H fips140.Hash](c *ecdsa.Curve[P], h func() H, sigType ecdsaSigType, q []byte, sk []byte, digest []byte) (*ecdsa.Signature, error) { +func signEcdsa[P ecdsa.Point[P], H hash.Hash](c *ecdsa.Curve[P], h func() H, sigType ecdsaSigType, q []byte, sk []byte, digest []byte) (*ecdsa.Signature, error) { priv, err := ecdsa.NewPrivateKey(c, sk, q) if err != nil { return nil, fmt.Errorf("invalid private key: %w", err) @@ -1120,30 +1121,30 @@ func verifyEcdsa[P ecdsa.Point[P]](c *ecdsa.Curve[P], q []byte, digest []byte, s return ecdsa.Verify(c, pub, digest, sig) } -func lookupHash(name string) (func() fips140.Hash, error) { - var h func() fips140.Hash +func lookupHash(name string) (func() hash.Hash, error) { + var h func() hash.Hash switch name { case "SHA2-224": - h = func() fips140.Hash { return sha256.New224() } + h = func() hash.Hash { return sha256.New224() } case "SHA2-256": - h = func() fips140.Hash { return sha256.New() } + h = func() hash.Hash { return sha256.New() } case "SHA2-384": - h = func() fips140.Hash { return sha512.New384() } + h = func() hash.Hash { return sha512.New384() } case "SHA2-512": - h = func() fips140.Hash { return sha512.New() } + h = func() hash.Hash { return sha512.New() } case "SHA2-512/224": - h = func() fips140.Hash { return sha512.New512_224() } + h = func() hash.Hash { return sha512.New512_224() } case "SHA2-512/256": - h = func() fips140.Hash { return sha512.New512_256() } + h = func() hash.Hash { return sha512.New512_256() } case "SHA3-224": - h = func() fips140.Hash { return sha3.New224() } + h = func() hash.Hash { return sha3.New224() } case "SHA3-256": - h = func() fips140.Hash { return sha3.New256() } + h = func() hash.Hash { return sha3.New256() } case "SHA3-384": - h = func() fips140.Hash { return sha3.New384() } + h = func() hash.Hash { return sha3.New384() } case "SHA3-512": - h = func() fips140.Hash { return sha3.New512() } + h = func() hash.Hash { return sha3.New512() } default: return nil, fmt.Errorf("unknown hash name: %q", name) } @@ -1518,7 +1519,7 @@ func cmdCmacAesVerifyAft() command { } } -func cmdTlsKdf12Aft(h func() fips140.Hash) command { +func cmdTlsKdf12Aft(h func() hash.Hash) command { return command{ requiredArgs: 5, // Number output bytes, secret, label, seed1, seed2 handler: func(args [][]byte) ([][]byte, error) { @@ -1533,7 +1534,7 @@ func cmdTlsKdf12Aft(h func() fips140.Hash) command { } } -func cmdSshKdfAft(hFunc func() fips140.Hash, direction ssh.Direction) command { +func cmdSshKdfAft(hFunc func() hash.Hash, direction ssh.Direction) command { return command{ requiredArgs: 4, // K, H, SessionID, cipher handler: func(args [][]byte) ([][]byte, error) { @@ -1599,7 +1600,7 @@ func cmdEcdhAftVal[P ecdh.Point[P]](curve *ecdh.Curve[P]) command { } } -func cmdHmacDrbgAft(h func() fips140.Hash) command { +func cmdHmacDrbgAft(h func() hash.Hash) command { return command{ requiredArgs: 6, // Output length, entropy, personalization, ad1, ad2, nonce handler: func(args [][]byte) ([][]byte, error) { @@ -1623,7 +1624,7 @@ func cmdHmacDrbgAft(h func() fips140.Hash) command { // * Uninstantiate // See Table 7 in draft-vassilev-acvp-drbg out := make([]byte, outLen) - drbg := ecdsa.TestingOnlyNewDRBG(h, entropy, nonce, personalization) + drbg := ecdsa.TestingOnlyNewDRBG(func() fips140.Hash { return h() }, entropy, nonce, personalization) drbg.Generate(out) drbg.Generate(out) @@ -1868,7 +1869,7 @@ func cmdRsaKeyGenAft() command { } } -func cmdRsaSigGenAft(hashFunc func() fips140.Hash, hashName string, pss bool) command { +func cmdRsaSigGenAft(hashFunc func() hash.Hash, hashName string, pss bool) command { return command{ requiredArgs: 2, // Modulus bit-size, message handler: func(args [][]byte) ([][]byte, error) { @@ -1906,7 +1907,7 @@ func cmdRsaSigGenAft(hashFunc func() fips140.Hash, hashName string, pss bool) co } } -func cmdRsaSigVerAft(hashFunc func() fips140.Hash, hashName string, pss bool) command { +func cmdRsaSigVerAft(hashFunc func() hash.Hash, hashName string, pss bool) command { return command{ requiredArgs: 4, // n, e, message, signature handler: func(args [][]byte) ([][]byte, error) { @@ -1966,7 +1967,7 @@ func getRSAKey(bits int) (*rsa.PrivateKey, error) { return key, nil } -func cmdOneStepNoCounterHmacAft(h func() fips140.Hash) command { +func cmdOneStepNoCounterHmacAft(h func() hash.Hash) command { return command{ requiredArgs: 4, // key, info, salt, outBytes handler: func(args [][]byte) ([][]byte, error) { @@ -1994,7 +1995,7 @@ func cmdOneStepNoCounterHmacAft(h func() fips140.Hash) command { } } -func cmdKtsIfcInitiatorAft(h func() fips140.Hash) command { +func cmdKtsIfcInitiatorAft(h func() hash.Hash) command { return command{ requiredArgs: 3, // output bytes, n bytes, e bytes handler: func(args [][]byte) ([][]byte, error) { @@ -2034,7 +2035,7 @@ func cmdKtsIfcInitiatorAft(h func() fips140.Hash) command { } } -func cmdKtsIfcResponderAft(h func() fips140.Hash) command { +func cmdKtsIfcResponderAft(h func() hash.Hash) command { return command{ requiredArgs: 6, // n bytes, e bytes, p bytes, q bytes, d bytes, c bytes handler: func(args [][]byte) ([][]byte, error) { diff --git a/src/crypto/sha3/sha3_test.go b/src/crypto/sha3/sha3_test.go index f88e51d3e7..6757d6efa1 100644 --- a/src/crypto/sha3/sha3_test.go +++ b/src/crypto/sha3/sha3_test.go @@ -7,9 +7,9 @@ package sha3_test import ( "bytes" "crypto/internal/cryptotest" - "crypto/internal/fips140" . "crypto/sha3" "encoding/hex" + "hash" "io" "math/rand" "strings" @@ -450,7 +450,7 @@ func testMarshalUnmarshalSHAKE(t *testing.T, h *SHAKE) { } // benchmarkHash tests the speed to hash num buffers of buflen each. -func benchmarkHash(b *testing.B, h fips140.Hash, size, num int) { +func benchmarkHash(b *testing.B, h hash.Hash, size, num int) { b.StopTimer() h.Reset() data := sequentialBytes(size) diff --git a/src/go/build/deps_test.go b/src/go/build/deps_test.go index e4fcc766b7..23b6fd6c81 100644 --- a/src/go/build/deps_test.go +++ b/src/go/build/deps_test.go @@ -472,6 +472,7 @@ var depsRules = ` # FIPS is the FIPS 140 module. # It must not depend on external crypto packages. + # Package hash is ok as it's only the interface. # See also fips140deps.AllowedInternalPackages. io, math/rand/v2 < crypto/internal/randutil; @@ -485,7 +486,8 @@ var depsRules = ` internal/cpu, internal/goarch < crypto/internal/fips140deps/cpu; internal/godebug < crypto/internal/fips140deps/godebug; - STR, crypto/internal/impl, + STR, hash, + crypto/internal/impl, crypto/internal/entropy, crypto/internal/randutil, crypto/internal/fips140deps/byteorder, @@ -521,7 +523,7 @@ var depsRules = ` FIPS, internal/godebug < crypto/fips140; - crypto, hash !< FIPS; + crypto !< FIPS; # CRYPTO is core crypto algorithms - no cgo, fmt, net. # Mostly wrappers around the FIPS module. @@ -529,7 +531,7 @@ var depsRules = ` NONE < crypto/internal/boring/sig, crypto/internal/boring/syso; sync/atomic < crypto/internal/boring/bcache; - FIPS, internal/godebug, hash, embed, + FIPS, internal/godebug, embed, crypto/internal/boring/sig, crypto/internal/boring/syso, crypto/internal/boring/bcache From ce46c9db867fb54a9c1f39b73ac8c2f339ca0587 Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Wed, 12 Mar 2025 18:02:39 +0100 Subject: [PATCH 40/99] internal/godebug,crypto/fips140: make fips140 setting immutable Updates #70123 Co-authored-by: qmuntal Change-Id: I6a6a4656fd23ecd82428cccbd7c48692287fc75a Reviewed-on: https://go-review.googlesource.com/c/go/+/657116 Reviewed-by: Daniel McCarney Reviewed-by: Roland Shoemaker Auto-Submit: Filippo Valsorda Reviewed-by: David Chase LUCI-TryBot-Result: Go LUCI Reviewed-by: Quim Muntal --- src/crypto/fips140/fips140.go | 8 ----- src/crypto/fips140/fips140_test.go | 51 ++++++++++++++++++++++++++++ src/go/build/deps_test.go | 4 +-- src/internal/godebug/godebug.go | 8 ++++- src/internal/godebug/godebug_test.go | 29 ++++++++++++++++ src/internal/godebugs/table.go | 13 +++---- 6 files changed, 95 insertions(+), 18 deletions(-) create mode 100644 src/crypto/fips140/fips140_test.go diff --git a/src/crypto/fips140/fips140.go b/src/crypto/fips140/fips140.go index 1c4036d5e7..830b6f80af 100644 --- a/src/crypto/fips140/fips140.go +++ b/src/crypto/fips140/fips140.go @@ -7,11 +7,8 @@ package fips140 import ( "crypto/internal/fips140" "crypto/internal/fips140/check" - "internal/godebug" ) -var fips140GODEBUG = godebug.New("fips140") - // Enabled reports whether the cryptography libraries are operating in FIPS // 140-3 mode. // @@ -21,11 +18,6 @@ var fips140GODEBUG = godebug.New("fips140") // // This can't be changed after the program has started. func Enabled() bool { - godebug := fips140GODEBUG.Value() - currentlyEnabled := godebug == "on" || godebug == "only" || godebug == "debug" - if currentlyEnabled != fips140.Enabled { - panic("crypto/fips140: GODEBUG setting changed after program start") - } if fips140.Enabled && !check.Verified { panic("crypto/fips140: FIPS 140-3 mode enabled, but integrity check didn't pass") } diff --git a/src/crypto/fips140/fips140_test.go b/src/crypto/fips140/fips140_test.go new file mode 100644 index 0000000000..c038add947 --- /dev/null +++ b/src/crypto/fips140/fips140_test.go @@ -0,0 +1,51 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package fips140 + +import ( + "internal/godebug" + "os" + "testing" +) + +func TestImmutableGODEBUG(t *testing.T) { + defer func(v string) { os.Setenv("GODEBUG", v) }(os.Getenv("GODEBUG")) + + fips140Enabled := Enabled() + fips140Setting := godebug.New("fips140") + fips140SettingValue := fips140Setting.Value() + + os.Setenv("GODEBUG", "fips140=off") + if Enabled() != fips140Enabled { + t.Errorf("Enabled() changed after setting GODEBUG=fips140=off") + } + if fips140Setting.Value() != fips140SettingValue { + t.Errorf("fips140Setting.Value() changed after setting GODEBUG=fips140=off") + } + + os.Setenv("GODEBUG", "fips140=on") + if Enabled() != fips140Enabled { + t.Errorf("Enabled() changed after setting GODEBUG=fips140=on") + } + if fips140Setting.Value() != fips140SettingValue { + t.Errorf("fips140Setting.Value() changed after setting GODEBUG=fips140=on") + } + + os.Setenv("GODEBUG", "fips140=") + if Enabled() != fips140Enabled { + t.Errorf("Enabled() changed after setting GODEBUG=fips140=") + } + if fips140Setting.Value() != fips140SettingValue { + t.Errorf("fips140Setting.Value() changed after setting GODEBUG=fips140=") + } + + os.Setenv("GODEBUG", "") + if Enabled() != fips140Enabled { + t.Errorf("Enabled() changed after setting GODEBUG=") + } + if fips140Setting.Value() != fips140SettingValue { + t.Errorf("fips140Setting.Value() changed after setting GODEBUG=") + } +} diff --git a/src/go/build/deps_test.go b/src/go/build/deps_test.go index 23b6fd6c81..b2668a3d7d 100644 --- a/src/go/build/deps_test.go +++ b/src/go/build/deps_test.go @@ -519,9 +519,7 @@ var depsRules = ` < crypto/internal/fips140/edwards25519 < crypto/internal/fips140/ed25519 < crypto/internal/fips140/rsa - < FIPS; - - FIPS, internal/godebug < crypto/fips140; + < FIPS < crypto/fips140; crypto !< FIPS; diff --git a/src/internal/godebug/godebug.go b/src/internal/godebug/godebug.go index 0756d313e6..8c66a8a19a 100644 --- a/src/internal/godebug/godebug.go +++ b/src/internal/godebug/godebug.go @@ -237,8 +237,14 @@ func update(def, env string) { // Update all the cached values, creating new ones as needed. // We parse the environment variable first, so that any settings it has // are already locked in place (did[name] = true) before we consider - // the defaults. + // the defaults. Existing immutable settings are always locked. did := make(map[string]bool) + cache.Range(func(name, s any) bool { + if info := s.(*setting).info; info != nil && info.Immutable { + did[name.(string)] = true + } + return true + }) parse(did, env) parse(did, def) diff --git a/src/internal/godebug/godebug_test.go b/src/internal/godebug/godebug_test.go index 60c35a9619..47f4cc2761 100644 --- a/src/internal/godebug/godebug_test.go +++ b/src/internal/godebug/godebug_test.go @@ -162,3 +162,32 @@ func TestBisectTestCase(t *testing.T) { } } } + +func TestImmutable(t *testing.T) { + defer func(godebug string) { + os.Setenv("GODEBUG", godebug) + }(os.Getenv("GODEBUG")) + + setting := New("fips140") + value := setting.Value() + + os.Setenv("GODEBUG", "fips140=off") + if setting.Value() != value { + t.Errorf("Value() changed after setting GODEBUG=fips140=off") + } + + os.Setenv("GODEBUG", "fips140=on") + if setting.Value() != value { + t.Errorf("Value() changed after setting GODEBUG=fips140=on") + } + + os.Setenv("GODEBUG", "fips140=") + if setting.Value() != value { + t.Errorf("Value() changed after setting GODEBUG=fips140=") + } + + os.Setenv("GODEBUG", "") + if setting.Value() != value { + t.Errorf("Value() changed after setting GODEBUG=") + } +} diff --git a/src/internal/godebugs/table.go b/src/internal/godebugs/table.go index 9262ce23ba..d7d3f430cd 100644 --- a/src/internal/godebugs/table.go +++ b/src/internal/godebugs/table.go @@ -9,11 +9,12 @@ package godebugs // An Info describes a single known GODEBUG setting. type Info struct { - Name string // name of the setting ("panicnil") - Package string // package that uses the setting ("runtime") - Changed int // minor version when default changed, if any; 21 means Go 1.21 - Old string // value that restores behavior prior to Changed - Opaque bool // setting does not export information to runtime/metrics using [internal/godebug.Setting.IncNonDefault] + Name string // name of the setting ("panicnil") + Package string // package that uses the setting ("runtime") + Changed int // minor version when default changed, if any; 21 means Go 1.21 + Old string // value that restores behavior prior to Changed + Opaque bool // setting does not export information to runtime/metrics using [internal/godebug.Setting.IncNonDefault] + Immutable bool // setting cannot be changed after program start } // All is the table of known settings, sorted by Name. @@ -31,7 +32,7 @@ var All = []Info{ {Name: "decoratemappings", Package: "runtime", Opaque: true, Changed: 25, Old: "0"}, {Name: "embedfollowsymlinks", Package: "cmd/go"}, {Name: "execerrdot", Package: "os/exec"}, - {Name: "fips140", Package: "crypto/fips140", Opaque: true}, + {Name: "fips140", Package: "crypto/fips140", Opaque: true, Immutable: true}, {Name: "gocachehash", Package: "cmd/go"}, {Name: "gocachetest", Package: "cmd/go"}, {Name: "gocacheverify", Package: "cmd/go"}, From f4de2ecffb9c107e6058c1ebb30c68de1157f5c6 Mon Sep 17 00:00:00 2001 From: thepudds Date: Thu, 13 Feb 2025 23:49:50 -0500 Subject: [PATCH 41/99] cmd/compile/internal/walk: convert composite literals to interfaces without allocating Today, this interface conversion causes the struct literal to be heap allocated: var sink any func example1() { sink = S{1, 1} } For basic literals like integers that are directly used in an interface conversion that would otherwise allocate, the compiler is able to use read-only global storage (see #18704). This CL extends that to struct and array literals as well by creating read-only global storage that is able to represent for example S{1, 1}, and then using a pointer to that storage in the interface when the interface conversion happens. A more challenging example is: func example2() { v := S{1, 1} sink = v } In this case, the struct literal is not directly part of the interface conversion, but is instead assigned to a local variable. To still avoid heap allocation in cases like this, in walk we construct a cache that maps from expressions used in interface conversions to earlier expressions that can be used to represent the same value (via ir.ReassignOracle.StaticValue). This is somewhat analogous to how we avoided heap allocation for basic literals in CL 649077 earlier in our stack, though here we also need to do a little more work to create the read-only global. CL 649076 (also earlier in our stack) added most of the tests along with debug diagnostics in convert.go to make it easier to test this change. See the writeup in #71359 for details. Fixes #71359 Fixes #71323 Updates #62653 Updates #53465 Updates #8618 Change-Id: I8924f0c69ff738ea33439bd6af7b4066af493b90 Reviewed-on: https://go-review.googlesource.com/c/go/+/649555 LUCI-TryBot-Result: Go LUCI Reviewed-by: Keith Randall Reviewed-by: David Chase Reviewed-by: Keith Randall --- src/cmd/compile/internal/walk/order.go | 22 ++++++++++-- src/cmd/compile/internal/walk/walk.go | 47 ++++++++++++++++++++++++++ src/fmt/fmt_test.go | 2 +- test/codegen/zerosize.go | 19 +++++++++++ test/escape_iface_data.go | 12 +++---- test/live.go | 46 +++++++++++++++++++++---- test/live_regabi.go | 46 +++++++++++++++++++++---- 7 files changed, 172 insertions(+), 22 deletions(-) diff --git a/src/cmd/compile/internal/walk/order.go b/src/cmd/compile/internal/walk/order.go index 8967b7dbba..af3bfcbac6 100644 --- a/src/cmd/compile/internal/walk/order.go +++ b/src/cmd/compile/internal/walk/order.go @@ -226,7 +226,8 @@ func (o *orderState) addrTemp(n ir.Node) ir.Node { // for the implicit conversion of "foo" to any, and we can't handle // the relocations in that temp. if n.Op() == ir.ONIL || (n.Op() == ir.OLITERAL && !base.Ctxt.IsFIPS()) { - // TODO: expand this to all static composite literal nodes? + // This is a basic literal or nil that we can store + // directly in the read-only data section. n = typecheck.DefaultLit(n, nil) types.CalcSize(n.Type()) vstat := readonlystaticname(n.Type()) @@ -239,6 +240,21 @@ func (o *orderState) addrTemp(n ir.Node) ir.Node { return vstat } + // Check now for a composite literal to possibly store + // in the read-only data section. + v := staticValue(n) + if v == nil { + v = n + } + if (v.Op() == ir.OSTRUCTLIT || v.Op() == ir.OARRAYLIT) && isStaticCompositeLiteral(v) && !base.Ctxt.IsFIPS() { + // v can be directly represented in the read-only data section. + lit := v.(*ir.CompLitExpr) + vstat := readonlystaticname(lit.Type()) + fixedlit(inInitFunction, initKindStatic, lit, vstat, nil) // nil init + vstat = typecheck.Expr(vstat).(*ir.Name) + return vstat + } + // Prevent taking the address of an SSA-able local variable (#63332). // // TODO(mdempsky): Note that OuterValue unwraps OCONVNOPs, but @@ -337,8 +353,8 @@ func (o *orderState) mapKeyTemp(outerPos src.XPos, t *types.Type, n ir.Node) ir. // // Note that this code does not handle the case: // -// s := string(k) -// x = m[s] +// s := string(k) +// x = m[s] // // Cases like this are handled during SSA, search for slicebytetostring // in ../ssa/_gen/generic.rules. diff --git a/src/cmd/compile/internal/walk/walk.go b/src/cmd/compile/internal/walk/walk.go index 25e03359fd..2fa51f1280 100644 --- a/src/cmd/compile/internal/walk/walk.go +++ b/src/cmd/compile/internal/walk/walk.go @@ -24,6 +24,13 @@ const tmpstringbufsize = 32 func Walk(fn *ir.Func) { ir.CurFunc = fn + + // Set and then clear a package-level cache of static values for this fn. + // (At some point, it might be worthwhile to have a walkState structure + // that gets passed everywhere where things like this can go.) + staticValues = findStaticValues(fn) + defer func() { staticValues = nil }() + errorsBefore := base.Errors() order(fn) if base.Errors() > errorsBefore { @@ -422,3 +429,43 @@ func ifaceData(pos src.XPos, n ir.Node, t *types.Type) ir.Node { ind.SetBounded(true) return ind } + +// staticValue returns the earliest expression it can find that always +// evaluates to n, with similar semantics to [ir.StaticValue]. +// +// It only returns results for the ir.CurFunc being processed in [Walk], +// including its closures, and uses a cache to reduce duplicative work. +// It can return n or nil if it does not find an earlier expression. +// +// The current use case is reducing OCONVIFACE allocations, and hence +// staticValue is currently only useful when given an *ir.ConvExpr.X as n. +func staticValue(n ir.Node) ir.Node { + if staticValues == nil { + base.Fatalf("staticValues is nil. staticValue called outside of walk.Walk?") + } + return staticValues[n] +} + +// staticValues is a cache of static values for use by staticValue. +var staticValues map[ir.Node]ir.Node + +// findStaticValues returns a map of static values for fn. +func findStaticValues(fn *ir.Func) map[ir.Node]ir.Node { + // We can't use an ir.ReassignOracle or ir.StaticValue in the + // middle of walk because they don't currently handle + // transformed assignments (e.g., will complain about 'RHS == nil'). + // So we instead build this map to use in walk. + ro := &ir.ReassignOracle{} + ro.Init(fn) + m := make(map[ir.Node]ir.Node) + ir.Visit(fn, func(n ir.Node) { + if n.Op() == ir.OCONVIFACE { + x := n.(*ir.ConvExpr).X + v := ro.StaticValue(x) + if v != nil && v != x { + m[x] = v + } + } + }) + return m +} diff --git a/src/fmt/fmt_test.go b/src/fmt/fmt_test.go index a896b8fe24..86e458ae64 100644 --- a/src/fmt/fmt_test.go +++ b/src/fmt/fmt_test.go @@ -1502,7 +1502,7 @@ var mallocTest = []struct { {0, `Fprintf(buf, "%x")`, func() { mallocBuf.Reset(); i := 1 << 16; Fprintf(&mallocBuf, "%x", i) }}, {1, `Fprintf(buf, "%x")`, func() { mallocBuf.Reset(); i := 1 << 16; Fprintf(&mallocBuf, "%x", noliteral(i)) }}, {4, `Fprintf(buf, "%v")`, func() { mallocBuf.Reset(); s := []int{1, 2}; Fprintf(&mallocBuf, "%v", s) }}, - {1, `Fprintf(buf, "%v")`, func() { mallocBuf.Reset(); type P struct{ x, y int }; Fprintf(&mallocBuf, "%v", P{1, 2}) }}, + {0, `Fprintf(buf, "%v")`, func() { mallocBuf.Reset(); type P struct{ x, y int }; Fprintf(&mallocBuf, "%v", P{1, 2}) }}, {1, `Fprintf(buf, "%v")`, func() { mallocBuf.Reset(); type P struct{ x, y int }; Fprintf(&mallocBuf, "%v", noliteral(P{1, 2})) }}, {2, `Fprintf(buf, "%80000s")`, func() { mallocBuf.Reset(); Fprintf(&mallocBuf, "%80000s", "hello") }}, // large buffer (>64KB) // If the interface value doesn't need to allocate, amortized allocation overhead should be zero. diff --git a/test/codegen/zerosize.go b/test/codegen/zerosize.go index ecf3305461..86c4819400 100644 --- a/test/codegen/zerosize.go +++ b/test/codegen/zerosize.go @@ -18,8 +18,27 @@ func zeroSize() { g(&s, 1, 2, 3, 4, 5) // amd64:`LEAQ\tcommand-line-arguments\..*\+55\(SP\)` + c <- noliteral(struct{}{}) +} + +// Like zeroSize, but without hiding the zero-sized struct. +func zeroSize2() { + c := make(chan struct{}) + // amd64:`MOVQ\t\$0, command-line-arguments\.s\+48\(SP\)` + var s *int + // force s to be a stack object, also use some (fixed) stack space + g(&s, 1, 2, 3, 4, 5) + + // amd64:`LEAQ\tcommand-line-arguments\..*stmp_\d+\(SB\)` c <- struct{}{} } //go:noinline func g(**int, int, int, int, int, int) {} + +// noliteral prevents the compiler from recognizing a literal value. +// +//go:noinline +func noliteral[T any](t T) T { + return t +} diff --git a/test/escape_iface_data.go b/test/escape_iface_data.go index 46814f3a9f..fd993fb892 100644 --- a/test/escape_iface_data.go +++ b/test/escape_iface_data.go @@ -208,32 +208,32 @@ func named7b(v MyInt) { type S struct{ a, b int64 } func struct1() { - sink = S{1, 1} + sink = S{1, 1} // ERROR "using global for interface value" } func struct2() { v := S{1, 1} - sink = v + sink = v // ERROR "using global for interface value" } func struct3() { - sink = S{} + sink = S{} // ERROR "using global for interface value" } func struct4() { v := S{} - sink = v + sink = v // ERROR "using global for interface value" } func struct5() { - var a any = S{1, 1} // ERROR "using stack temporary for interface value" + var a any = S{1, 1} // ERROR "using global for interface value" _ = a } func struct6() { var a any v := S{1, 1} - a = v // ERROR "using stack temporary for interface value" + a = v // ERROR "using global for interface value" _ = a } diff --git a/test/live.go b/test/live.go index c0b0fcd274..46e5e3e757 100644 --- a/test/live.go +++ b/test/live.go @@ -337,23 +337,34 @@ func f20() { ch <- byteptr() } -func f21() { +func f21(x, y string) { // ERROR "live at entry to f21: x y" // key temporary for mapaccess using array literal key. var z *byte if b { - z = m2[[2]string{"x", "y"}] // ERROR "stack object .autotmp_[0-9]+ \[2\]string$" + z = m2[[2]string{x, y}] // ERROR "stack object .autotmp_[0-9]+ \[2\]string$" } z = m2[[2]string{"x", "y"}] z = m2[[2]string{"x", "y"}] printbytepointer(z) } -func f23() { +func f21b() { + // key temporary for mapaccess using array literal key. + var z *byte + if b { + z = m2[[2]string{"x", "y"}] + } + z = m2[[2]string{"x", "y"}] + z = m2[[2]string{"x", "y"}] + printbytepointer(z) +} + +func f23(x, y string) { // ERROR "live at entry to f23: x y" // key temporary for two-result map access using array literal key. var z *byte var ok bool if b { - z, ok = m2[[2]string{"x", "y"}] // ERROR "stack object .autotmp_[0-9]+ \[2\]string$" + z, ok = m2[[2]string{x, y}] // ERROR "stack object .autotmp_[0-9]+ \[2\]string$" } z, ok = m2[[2]string{"x", "y"}] z, ok = m2[[2]string{"x", "y"}] @@ -361,11 +372,34 @@ func f23() { print(ok) } -func f24() { +func f23b() { + // key temporary for two-result map access using array literal key. + var z *byte + var ok bool + if b { + z, ok = m2[[2]string{"x", "y"}] + } + z, ok = m2[[2]string{"x", "y"}] + z, ok = m2[[2]string{"x", "y"}] + printbytepointer(z) + print(ok) +} + +func f24(x, y string) { // ERROR "live at entry to f24: x y" // key temporary for map access using array literal key. // value temporary too. if b { - m2[[2]string{"x", "y"}] = nil // ERROR "stack object .autotmp_[0-9]+ \[2\]string$" + m2[[2]string{x, y}] = nil // ERROR "stack object .autotmp_[0-9]+ \[2\]string$" + } + m2[[2]string{"x", "y"}] = nil + m2[[2]string{"x", "y"}] = nil +} + +func f24b() { + // key temporary for map access using array literal key. + // value temporary too. + if b { + m2[[2]string{"x", "y"}] = nil } m2[[2]string{"x", "y"}] = nil m2[[2]string{"x", "y"}] = nil diff --git a/test/live_regabi.go b/test/live_regabi.go index 35f874ecc3..ddb4caed1a 100644 --- a/test/live_regabi.go +++ b/test/live_regabi.go @@ -335,23 +335,34 @@ func f20() { ch <- byteptr() } -func f21() { +func f21(x, y string) { // ERROR "live at entry to f21: x y" // key temporary for mapaccess using array literal key. var z *byte if b { - z = m2[[2]string{"x", "y"}] // ERROR "stack object .autotmp_[0-9]+ \[2\]string$" + z = m2[[2]string{x, y}] // ERROR "stack object .autotmp_[0-9]+ \[2\]string$" } z = m2[[2]string{"x", "y"}] z = m2[[2]string{"x", "y"}] printbytepointer(z) } -func f23() { +func f21b() { + // key temporary for mapaccess using array literal key. + var z *byte + if b { + z = m2[[2]string{"x", "y"}] + } + z = m2[[2]string{"x", "y"}] + z = m2[[2]string{"x", "y"}] + printbytepointer(z) +} + +func f23(x, y string) { // ERROR "live at entry to f23: x y" // key temporary for two-result map access using array literal key. var z *byte var ok bool if b { - z, ok = m2[[2]string{"x", "y"}] // ERROR "stack object .autotmp_[0-9]+ \[2\]string$" + z, ok = m2[[2]string{x, y}] // ERROR "stack object .autotmp_[0-9]+ \[2\]string$" } z, ok = m2[[2]string{"x", "y"}] z, ok = m2[[2]string{"x", "y"}] @@ -359,11 +370,34 @@ func f23() { print(ok) } -func f24() { +func f23b() { + // key temporary for two-result map access using array literal key. + var z *byte + var ok bool + if b { + z, ok = m2[[2]string{"x", "y"}] + } + z, ok = m2[[2]string{"x", "y"}] + z, ok = m2[[2]string{"x", "y"}] + printbytepointer(z) + print(ok) +} + +func f24(x, y string) { // ERROR "live at entry to f24: x y" + // key temporary for map access using array lit3ral key. + // value temporary too. + if b { + m2[[2]string{x, y}] = nil // ERROR "stack object .autotmp_[0-9]+ \[2\]string$" + } + m2[[2]string{"x", "y"}] = nil + m2[[2]string{"x", "y"}] = nil +} + +func f24b() { // key temporary for map access using array literal key. // value temporary too. if b { - m2[[2]string{"x", "y"}] = nil // ERROR "stack object .autotmp_[0-9]+ \[2\]string$" + m2[[2]string{"x", "y"}] = nil } m2[[2]string{"x", "y"}] = nil m2[[2]string{"x", "y"}] = nil From c3bb27bbc77ac02ad709e77a7fcca0a5d3176304 Mon Sep 17 00:00:00 2001 From: thepudds Date: Wed, 12 Feb 2025 18:45:42 -0500 Subject: [PATCH 42/99] cmd/compile/internal/walk: use global zeroVal in interface conversions for zero values MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is a small-ish adjustment to the change earlier in our stack in CL 649555, which started creating read-only global storage for a composite literal used in an interface conversion and setting the interface data pointer to point to that global storage. In some cases, there are execution-time performance benefits to point to runtime.zeroVal in particular. In reflect, pointer checks against the runtime.zeroVal memory address are used to side-step some work, such as in reflect.Value.Set and reflect.Value.IsZero. In this CL, we therefore dig up the zeroVal symbol, and we use the machinery from earlier in our stack to use a pointer to zeroVal for the interface data pointer if we see examples like: sink = S{} or: s := S{} sink = s CL 649076 (also earlier in our stack) added most of the tests along with debug diagnostics in convert.go to make it easier to test this change. We add a benchmark in reflect to show examples of performance benefit. The left column is our immediately prior CL 649555, and the right is this CL. (The arrays of structs here do not seem to benefit, which we attempt to address in our next CL). goos: linux goarch: amd64 pkg: reflect cpu: Intel(R) Xeon(R) CPU @ 2.80GHz │ cl-649555 │ new │ │ sec/op │ sec/op vs base │ Zero/IsZero/ByteArray/size=16-4 4.176n ± 0% 4.171n ± 0% ~ (p=0.151 n=20) Zero/IsZero/ByteArray/size=64-4 6.921n ± 0% 3.864n ± 0% -44.16% (p=0.000 n=20) Zero/IsZero/ByteArray/size=1024-4 21.210n ± 0% 3.878n ± 0% -81.72% (p=0.000 n=20) Zero/IsZero/BigStruct/size=1024-4 25.505n ± 0% 5.061n ± 0% -80.15% (p=0.000 n=20) Zero/IsZero/SmallStruct/size=16-4 4.188n ± 0% 4.191n ± 0% ~ (p=0.106 n=20) Zero/IsZero/SmallStructArray/size=64-4 8.639n ± 0% 8.636n ± 0% ~ (p=0.973 n=20) Zero/IsZero/SmallStructArray/size=1024-4 79.99n ± 0% 80.06n ± 0% ~ (p=0.213 n=20) Zero/IsZero/Time/size=24-4 7.232n ± 0% 3.865n ± 0% -46.56% (p=0.000 n=20) Zero/SetZero/ByteArray/size=16-4 13.47n ± 0% 13.09n ± 0% -2.78% (p=0.000 n=20) Zero/SetZero/ByteArray/size=64-4 14.14n ± 0% 13.70n ± 0% -3.15% (p=0.000 n=20) Zero/SetZero/ByteArray/size=1024-4 24.22n ± 0% 20.18n ± 0% -16.68% (p=0.000 n=20) Zero/SetZero/BigStruct/size=1024-4 24.24n ± 0% 20.18n ± 0% -16.73% (p=0.000 n=20) Zero/SetZero/SmallStruct/size=16-4 13.45n ± 0% 13.10n ± 0% -2.60% (p=0.000 n=20) Zero/SetZero/SmallStructArray/size=64-4 14.12n ± 0% 13.69n ± 0% -3.05% (p=0.000 n=20) Zero/SetZero/SmallStructArray/size=1024-4 24.62n ± 0% 21.61n ± 0% -12.26% (p=0.000 n=20) Zero/SetZero/Time/size=24-4 13.59n ± 0% 13.40n ± 0% -1.40% (p=0.000 n=20) geomean 14.06n 10.19n -27.54% Finally, here are results from the benchmark example from #71323. Note however that almost all the benefit shown here is from our earlier CL 649555, which is a more general purpose change and eliminates the allocation using a different read-only global than this CL. │ go1.24 │ new │ │ sec/op │ sec/op vs base │ InterfaceAny 112.6000n ± 5% 0.8078n ± 3% -99.28% (p=0.000 n=20) ReflectValue 11.63n ± 2% 11.59n ± 0% ~ (p=0.330 n=20) │ go1.24.out │ new.out │ │ B/op │ B/op vs base │ InterfaceAny 224.0 ± 0% 0.0 ± 0% -100.00% (p=0.000 n=20) ReflectValue 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=20) ¹ │ go1.24.out │ new.out │ │ allocs/op │ allocs/op vs base │ InterfaceAny 1.000 ± 0% 0.000 ± 0% -100.00% (p=0.000 n=20) ReflectValue 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=20) ¹ Updates #71359 Updates #71323 Change-Id: I64d8cf1a7900f011d2ec59b948388aeda1150676 Reviewed-on: https://go-review.googlesource.com/c/go/+/649078 LUCI-TryBot-Result: Go LUCI Reviewed-by: Keith Randall Reviewed-by: Keith Randall Reviewed-by: David Chase --- src/cmd/compile/internal/ir/symtab.go | 1 + src/cmd/compile/internal/ssagen/ssa.go | 1 + src/cmd/compile/internal/walk/convert.go | 5 +++ src/cmd/compile/internal/walk/order.go | 26 ++++++++---- src/reflect/benchmark_test.go | 52 ++++++++++++++++++++++++ test/escape_iface_data.go | 4 +- 6 files changed, 78 insertions(+), 11 deletions(-) diff --git a/src/cmd/compile/internal/ir/symtab.go b/src/cmd/compile/internal/ir/symtab.go index 00b07cb45c..e2da710f02 100644 --- a/src/cmd/compile/internal/ir/symtab.go +++ b/src/cmd/compile/internal/ir/symtab.go @@ -59,6 +59,7 @@ type symsStruct struct { Udiv *obj.LSym WriteBarrier *obj.LSym Zerobase *obj.LSym + ZeroVal *obj.LSym ARM64HasATOMICS *obj.LSym ARMHasVFPv4 *obj.LSym Loong64HasLAMCAS *obj.LSym diff --git a/src/cmd/compile/internal/ssagen/ssa.go b/src/cmd/compile/internal/ssagen/ssa.go index 984dd138c3..542ad823ab 100644 --- a/src/cmd/compile/internal/ssagen/ssa.go +++ b/src/cmd/compile/internal/ssagen/ssa.go @@ -166,6 +166,7 @@ func InitConfig() { ir.Syms.Udiv = typecheck.LookupRuntimeVar("udiv") // asm func with special ABI ir.Syms.WriteBarrier = typecheck.LookupRuntimeVar("writeBarrier") // struct { bool; ... } ir.Syms.Zerobase = typecheck.LookupRuntimeVar("zerobase") + ir.Syms.ZeroVal = typecheck.LookupRuntimeVar("zeroVal") if Arch.LinkArch.Family == sys.Wasm { BoundsCheckFunc[ssa.BoundsIndex] = typecheck.LookupRuntimeFunc("goPanicIndex") diff --git a/src/cmd/compile/internal/walk/convert.go b/src/cmd/compile/internal/walk/convert.go index 4c443f71b9..beef6634a5 100644 --- a/src/cmd/compile/internal/walk/convert.go +++ b/src/cmd/compile/internal/walk/convert.go @@ -175,6 +175,11 @@ func dataWord(conv *ir.ConvExpr, init *ir.Nodes) ir.Node { xe := ir.NewIndexExpr(base.Pos, staticuint64s, index) xe.SetBounded(true) value = xe + case n.Op() == ir.OLINKSYMOFFSET && n.(*ir.LinksymOffsetExpr).Linksym == ir.Syms.ZeroVal && n.(*ir.LinksymOffsetExpr).Offset_ == 0: + // n is using zeroVal, so we can use n directly. + // (Note that n does not have a proper pos in this case, so using conv for the diagnostic instead.) + diagnose("using global for zero value interface value", conv) + value = n case n.Op() == ir.ONAME && n.(*ir.Name).Class == ir.PEXTERN && n.(*ir.Name).Readonly(): // n is a readonly global; use it directly. diagnose("using global for interface value", n) diff --git a/src/cmd/compile/internal/walk/order.go b/src/cmd/compile/internal/walk/order.go index af3bfcbac6..77322286c7 100644 --- a/src/cmd/compile/internal/walk/order.go +++ b/src/cmd/compile/internal/walk/order.go @@ -7,6 +7,7 @@ package walk import ( "fmt" "go/constant" + "internal/abi" "internal/buildcfg" "cmd/compile/internal/base" @@ -240,19 +241,26 @@ func (o *orderState) addrTemp(n ir.Node) ir.Node { return vstat } - // Check now for a composite literal to possibly store - // in the read-only data section. + // Check now for a composite literal to possibly store in the read-only data section. v := staticValue(n) if v == nil { v = n } - if (v.Op() == ir.OSTRUCTLIT || v.Op() == ir.OARRAYLIT) && isStaticCompositeLiteral(v) && !base.Ctxt.IsFIPS() { - // v can be directly represented in the read-only data section. - lit := v.(*ir.CompLitExpr) - vstat := readonlystaticname(lit.Type()) - fixedlit(inInitFunction, initKindStatic, lit, vstat, nil) // nil init - vstat = typecheck.Expr(vstat).(*ir.Name) - return vstat + if (v.Op() == ir.OSTRUCTLIT || v.Op() == ir.OARRAYLIT) && !base.Ctxt.IsFIPS() { + if ir.IsZero(v) && 0 < v.Type().Size() && v.Type().Size() <= abi.ZeroValSize { + // This zero value can be represented by the read-only zeroVal. + zeroVal := ir.NewLinksymExpr(v.Pos(), ir.Syms.ZeroVal, v.Type()) + vstat := typecheck.Expr(zeroVal).(*ir.LinksymOffsetExpr) + return vstat + } + if isStaticCompositeLiteral(v) { + // v can be directly represented in the read-only data section. + lit := v.(*ir.CompLitExpr) + vstat := readonlystaticname(lit.Type()) + fixedlit(inInitFunction, initKindStatic, lit, vstat, nil) // nil init + vstat = typecheck.Expr(vstat).(*ir.Name) + return vstat + } } // Prevent taking the address of an SSA-able local variable (#63332). diff --git a/src/reflect/benchmark_test.go b/src/reflect/benchmark_test.go index 2e701b062e..6b2f9ce7a0 100644 --- a/src/reflect/benchmark_test.go +++ b/src/reflect/benchmark_test.go @@ -9,6 +9,7 @@ import ( . "reflect" "strconv" "testing" + "time" ) var sourceAll = struct { @@ -196,6 +197,57 @@ func BenchmarkSetZero(b *testing.B) { } } +// BenchmarkZero overlaps some with BenchmarkSetZero, +// but the inputs are set up differently to exercise +// different optimizations. +func BenchmarkZero(b *testing.B) { + type bm struct { + name string + zero Value + nonZero Value + size int + } + type Small struct { + A int64 + B, C bool + } + type Big struct { + A int64 + B, C bool + D [1008]byte + } + entry := func(name string, zero any, nonZero any) bm { + return bm{name, ValueOf(zero), ValueOf(nonZero).Elem(), int(TypeOf(zero).Size())} + } + nonZeroTime := func() *time.Time { t := time.Now(); return &t } + + bms := []bm{ + entry("ByteArray", [16]byte{}, &[16]byte{1}), + entry("ByteArray", [64]byte{}, &[64]byte{1}), + entry("ByteArray", [1024]byte{}, &[1024]byte{1}), + entry("BigStruct", Big{}, &Big{A: 1}), + entry("SmallStruct", Small{}, &Small{A: 1}), + entry("SmallStructArray", [4]Small{}, &[4]Small{0: {A: 1}}), + entry("SmallStructArray", [64]Small{}, &[64]Small{0: {A: 1}}), + entry("Time", time.Time{}, nonZeroTime()), + } + + for _, bm := range bms { + b.Run(fmt.Sprintf("IsZero/%s/size=%d", bm.name, bm.size), func(b *testing.B) { + for i := 0; i < b.N; i++ { + bm.zero.IsZero() + } + }) + } + for _, bm := range bms { + b.Run(fmt.Sprintf("SetZero/%s/size=%d", bm.name, bm.size), func(b *testing.B) { + for i := 0; i < b.N; i++ { + bm.nonZero.Set(bm.zero) + } + }) + } +} + func BenchmarkSelect(b *testing.B) { channel := make(chan int) close(channel) diff --git a/test/escape_iface_data.go b/test/escape_iface_data.go index fd993fb892..b42974c486 100644 --- a/test/escape_iface_data.go +++ b/test/escape_iface_data.go @@ -217,12 +217,12 @@ func struct2() { } func struct3() { - sink = S{} // ERROR "using global for interface value" + sink = S{} // ERROR "using global for zero value interface value" } func struct4() { v := S{} - sink = v // ERROR "using global for interface value" + sink = v // ERROR "using global for zero value interface value" } func struct5() { From a8e0641d5b90da99d5dda96488e87dda761b365b Mon Sep 17 00:00:00 2001 From: thepudds Date: Sat, 1 Mar 2025 14:30:03 -0500 Subject: [PATCH 43/99] reflect: optimize IsZero with a pointer comparison to global zeroVal MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Our prior CL 649078 teaches the compiler to use a pointer to runtime.zeroVal as the data pointer for an interface in cases it where it can see that a zero value struct or array is being used in an interface conversion. This applies to some uses with reflect, such as: s := S{} v := reflect.ValueOf(s) This CL builds on that to do a cheap pointer check in reflect.IsZero to see if the Value points to runtime.zeroVal, which means it is a zero value. An alternative might be to do an initial pointer check in the typ.Equal function for types where it makes sense to do but doesn't already. This CL gives a performance boost of -51.71% geomean for BenchmarkZero/IsZero, with most of the impact there on arrays of structs. (The left column is CL 649078 and the right column is this CL). goos: linux goarch: amd64 pkg: reflect cpu: Intel(R) Xeon(R) CPU @ 2.80GHz │ find-zeroVal │ check-zeroVal │ │ sec/op │ sec/op vs base │ Zero/IsZero/ByteArray/size=16-4 4.171n ± 0% 3.123n ± 0% -25.13% (p=0.000 n=20) Zero/IsZero/ByteArray/size=64-4 3.864n ± 0% 3.129n ± 0% -19.02% (p=0.000 n=20) Zero/IsZero/ByteArray/size=1024-4 3.878n ± 0% 3.126n ± 0% -19.39% (p=0.000 n=20) Zero/IsZero/BigStruct/size=1024-4 5.061n ± 0% 3.273n ± 0% -35.34% (p=0.000 n=20) Zero/IsZero/SmallStruct/size=16-4 4.191n ± 0% 3.275n ± 0% -21.87% (p=0.000 n=20) Zero/IsZero/SmallStructArray/size=64-4 8.636n ± 0% 3.127n ± 0% -63.79% (p=0.000 n=20) Zero/IsZero/SmallStructArray/size=1024-4 80.055n ± 0% 3.126n ± 0% -96.10% (p=0.000 n=20) Zero/IsZero/Time/size=24-4 3.865n ± 0% 3.274n ± 0% -15.29% (p=0.000 n=20) geomean 6.587n 3.181n -51.71% Note these are of course micro benchmarks with easily predicted branches. The extra branch we introduce in the CL might hurt if there was for example a tight loop where 50% of the values used the global zeroVal and 50% didn't in a way that is not well predicted, although if the typ.Equal for many types already does an initial pointer check, it might not matter much. For the older BenchmarkIsZero in reflect, this change does not help. (The compiler does not use the global zeroVal as the data word for the interfaces in this benchmark because values are part of a larger value that is too big to be used in the global zeroVal, and also a piece of the larger value is mutated and is not zero). │ find-zeroVal │ check-zeroVal │ │ sec/op │ sec/op vs base │ IsZero/ArrayComparable-4 14.58n ± 0% 14.59n ± 0% ~ (p=0.177 n=20) IsZero/ArrayIncomparable-4 163.8n ± 0% 167.5n ± 0% +2.26% (p=0.000 n=20) IsZero/StructComparable-4 6.847n ± 0% 6.847n ± 0% ~ (p=0.703 n=20) IsZero/StructIncomparable-4 35.41n ± 0% 35.10n ± 0% -0.86% (p=0.000 n=20) IsZero/ArrayInt_4-4 8.631n ± 0% 8.363n ± 0% -3.10% (p=0.000 n=20) IsZero/ArrayInt_1024-4 265.5n ± 0% 265.4n ± 0% ~ (p=0.288 n=20) IsZero/ArrayInt_1024_NoZero-4 135.8n ± 0% 136.2n ± 0% +0.33% (p=0.000 n=20) IsZero/Struct4Int-4 8.451n ± 0% 8.386n ± 0% -0.77% (p=0.000 n=20) IsZero/ArrayStruct4Int_1024-4 265.2n ± 0% 266.0n ± 0% +0.30% (p=0.000 n=20) IsZero/ArrayChanInt_1024-4 265.5n ± 0% 265.4n ± 0% ~ (p=0.605 n=20) IsZero/StructInt_512-4 135.8n ± 0% 135.8n ± 0% ~ (p=0.396 n=20) geomean 55.22n 55.12n -0.18% Updates #71323 Change-Id: Ie083853a5bff03856277a293d94532a681f4a8d5 Reviewed-on: https://go-review.googlesource.com/c/go/+/654135 Reviewed-by: Keith Randall Reviewed-by: David Chase LUCI-TryBot-Result: Go LUCI Reviewed-by: Keith Randall --- src/reflect/value.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/reflect/value.go b/src/reflect/value.go index 05ecfa1a5b..1fadd01298 100644 --- a/src/reflect/value.go +++ b/src/reflect/value.go @@ -1652,6 +1652,9 @@ func (v Value) IsZero() bool { if v.flag&flagIndir == 0 { return v.ptr == nil } + if v.ptr == unsafe.Pointer(&zeroVal[0]) { + return true + } typ := (*abi.ArrayType)(unsafe.Pointer(v.typ())) // If the type is comparable, then compare directly with zero. if typ.Equal != nil && typ.Size() <= abi.ZeroValSize { @@ -1680,6 +1683,9 @@ func (v Value) IsZero() bool { if v.flag&flagIndir == 0 { return v.ptr == nil } + if v.ptr == unsafe.Pointer(&zeroVal[0]) { + return true + } typ := (*abi.StructType)(unsafe.Pointer(v.typ())) // If the type is comparable, then compare directly with zero. if typ.Equal != nil && typ.Size() <= abi.ZeroValSize { From 7ba996874b541aa13b6bf1d1174b97372e0de20d Mon Sep 17 00:00:00 2001 From: Daniel McCarney Date: Fri, 16 May 2025 13:08:16 -0400 Subject: [PATCH 44/99] crypto/tls: verify server chooses advertised curve When a crypto/tls client using TLS < 1.3 sends supported elliptic_curves in a client hello message the server must limit itself to choosing one of the supported options from our message. If we process a server key exchange message that chooses an unadvertised curve, abort the handshake w/ an error. Previously we would not note that the server chose a curve we didn't include in the client hello message, and would proceed with the handshake as long as the chosen curve was one that we've implemented. However, RFC 8422 5.1 makes it clear this is a server acting out-of-spec, as it says: If a server does not understand the Supported Elliptic Curves Extension, does not understand the Supported Point Formats Extension, or is unable to complete the ECC handshake while restricting itself to the enumerated curves and point formats, it MUST NOT negotiate the use of an ECC cipher suite. Changing our behaviour to enforce this also allows enabling the UnsupportedCurve BoGo test. Updates #72006 Change-Id: I27a2cd231e4b8762b0d9e2dbd3d8ddd5b87fd5cc Reviewed-on: https://go-review.googlesource.com/c/go/+/673735 TryBot-Bypass: Daniel McCarney Reviewed-by: David Chase Auto-Submit: Daniel McCarney Reviewed-by: Filippo Valsorda Reviewed-by: Roland Shoemaker --- src/crypto/tls/bogo_config.json | 1 - src/crypto/tls/key_agreement.go | 5 +++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/crypto/tls/bogo_config.json b/src/crypto/tls/bogo_config.json index 191f48fc02..ba1dce8761 100644 --- a/src/crypto/tls/bogo_config.json +++ b/src/crypto/tls/bogo_config.json @@ -62,7 +62,6 @@ "BadRSAClientKeyExchange-5": "crypto/tls doesn't check the version number in the premaster secret - see processClientKeyExchange comment", "CheckLeafCurve": "TODO: first pass, this should be fixed", "DisabledCurve-HelloRetryRequest-TLS13": "TODO: first pass, this should be fixed", - "UnsupportedCurve": "TODO: first pass, this should be fixed", "SupportTicketsWithSessionID": "TODO: first pass, this should be fixed", "NoNullCompression-TLS12": "TODO: first pass, this should be fixed", "KeyUpdate-RequestACK": "TODO: first pass, this should be fixed", diff --git a/src/crypto/tls/key_agreement.go b/src/crypto/tls/key_agreement.go index 3e96242b97..d41bf43591 100644 --- a/src/crypto/tls/key_agreement.go +++ b/src/crypto/tls/key_agreement.go @@ -14,6 +14,7 @@ import ( "errors" "fmt" "io" + "slices" ) // A keyAgreement implements the client and server side of a TLS 1.0–1.2 key @@ -293,6 +294,10 @@ func (ka *ecdheKeyAgreement) processServerKeyExchange(config *Config, clientHell return errServerKeyExchange } + if !slices.Contains(clientHello.supportedCurves, curveID) { + return errors.New("tls: server selected unoffered curve") + } + if _, ok := curveForCurveID(curveID); !ok { return errors.New("tls: server selected unsupported curve") } From cb7fe2a05c0a84e25c082b3741087cccb906b675 Mon Sep 17 00:00:00 2001 From: Daniel McCarney Date: Fri, 16 May 2025 13:34:14 -0400 Subject: [PATCH 45/99] crypto/tls: delete dead code curveIDForCurve This unexported function has no call-sites. Change-Id: I27a2cd231e4b8762b0d9e2dbd3d8ddd5b87fd5cd Reviewed-on: https://go-review.googlesource.com/c/go/+/673755 Reviewed-by: Roland Shoemaker Reviewed-by: David Chase Reviewed-by: Filippo Valsorda TryBot-Bypass: Daniel McCarney --- src/crypto/tls/key_schedule.go | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/src/crypto/tls/key_schedule.go b/src/crypto/tls/key_schedule.go index 38d6d3f7be..1426a276bf 100644 --- a/src/crypto/tls/key_schedule.go +++ b/src/crypto/tls/key_schedule.go @@ -82,18 +82,3 @@ func curveForCurveID(id CurveID) (ecdh.Curve, bool) { return nil, false } } - -func curveIDForCurve(curve ecdh.Curve) (CurveID, bool) { - switch curve { - case ecdh.X25519(): - return X25519, true - case ecdh.P256(): - return CurveP256, true - case ecdh.P384(): - return CurveP384, true - case ecdh.P521(): - return CurveP521, true - default: - return 0, false - } -} From deb9a7e4ad8552a5f366877e626c223dea0e9d9b Mon Sep 17 00:00:00 2001 From: Daniel McCarney Date: Fri, 16 May 2025 13:44:53 -0400 Subject: [PATCH 46/99] crypto/tls: match compression method alert across versions When a pre-TLS 1.3 server processes a client hello message that indicates compression methods that don't include the null compression method, send an illegal parameter alert. Previously we did this for TLS 1.3 server handshakes only, and the legacy TLS versions used alertHandshakeFailure for this circumstance. By switching this to alertIllegalParameter we use a consistent alert across all TLS versions, and can also enable the NoNullCompression-TLS12 BoGo test we were skipping. Updates #72006 Change-Id: I27a2cd231e4b8762b0d9e2dbd3d8ddd5b87fd5ce Reviewed-on: https://go-review.googlesource.com/c/go/+/673736 TryBot-Bypass: Daniel McCarney Reviewed-by: Roland Shoemaker Reviewed-by: Filippo Valsorda Reviewed-by: David Chase --- src/crypto/tls/bogo_config.json | 1 - src/crypto/tls/handshake_server.go | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/crypto/tls/bogo_config.json b/src/crypto/tls/bogo_config.json index ba1dce8761..64781b3fba 100644 --- a/src/crypto/tls/bogo_config.json +++ b/src/crypto/tls/bogo_config.json @@ -63,7 +63,6 @@ "CheckLeafCurve": "TODO: first pass, this should be fixed", "DisabledCurve-HelloRetryRequest-TLS13": "TODO: first pass, this should be fixed", "SupportTicketsWithSessionID": "TODO: first pass, this should be fixed", - "NoNullCompression-TLS12": "TODO: first pass, this should be fixed", "KeyUpdate-RequestACK": "TODO: first pass, this should be fixed", "SupportedVersionSelection-TLS12": "TODO: first pass, this should be fixed", "DuplicateExtensionServer-TLS-TLS1": "TODO: first pass, this should be fixed", diff --git a/src/crypto/tls/handshake_server.go b/src/crypto/tls/handshake_server.go index c2c924c07b..d7fadcbd59 100644 --- a/src/crypto/tls/handshake_server.go +++ b/src/crypto/tls/handshake_server.go @@ -233,7 +233,7 @@ func (hs *serverHandshakeState) processClientHello() error { } if !foundCompression { - c.sendAlert(alertHandshakeFailure) + c.sendAlert(alertIllegalParameter) return errors.New("tls: client does not support uncompressed connections") } From 3e468dfd5e6624465716fe5d34358ba58f1e9e7b Mon Sep 17 00:00:00 2001 From: Daniel McCarney Date: Fri, 16 May 2025 14:40:27 -0400 Subject: [PATCH 47/99] crypto/tls: enable BoGo DisabledCurve-HelloRetryRequest-TLS13 The crypto/tls package produces the expected error for this test case, and so it can be enabled. Looking at the history of the relevant code it appears the TLS 1.3 implementation has always had the correct behaviour for HRR changing to an unsupported group after the initial hello. I think this test was skipped initially because at the time of initial BoGo config commit we hadn't implemented the -curves argument for the test shim yet, and this test relies on it. We later added support for that flag alongside X25519Kyber768Draft00 KX and I think we missed the chance to enable the test then. Updates #72006 Change-Id: I27a2cd231e4b8762b0d9e2dbd3d8ddd5b87fd5cf Reviewed-on: https://go-review.googlesource.com/c/go/+/673756 Reviewed-by: Roland Shoemaker Reviewed-by: Filippo Valsorda Reviewed-by: David Chase TryBot-Bypass: Daniel McCarney --- src/crypto/tls/bogo_config.json | 1 - 1 file changed, 1 deletion(-) diff --git a/src/crypto/tls/bogo_config.json b/src/crypto/tls/bogo_config.json index 64781b3fba..d46b073029 100644 --- a/src/crypto/tls/bogo_config.json +++ b/src/crypto/tls/bogo_config.json @@ -61,7 +61,6 @@ "BadRSAClientKeyExchange-4": "crypto/tls doesn't check the version number in the premaster secret - see processClientKeyExchange comment", "BadRSAClientKeyExchange-5": "crypto/tls doesn't check the version number in the premaster secret - see processClientKeyExchange comment", "CheckLeafCurve": "TODO: first pass, this should be fixed", - "DisabledCurve-HelloRetryRequest-TLS13": "TODO: first pass, this should be fixed", "SupportTicketsWithSessionID": "TODO: first pass, this should be fixed", "KeyUpdate-RequestACK": "TODO: first pass, this should be fixed", "SupportedVersionSelection-TLS12": "TODO: first pass, this should be fixed", From d82cb03debff0180aa705129e8a00e89c3fe8251 Mon Sep 17 00:00:00 2001 From: Daniel McCarney Date: Fri, 16 May 2025 15:05:43 -0400 Subject: [PATCH 48/99] crypto/tls: update BoGo SessionID test skip reasons Updates the skip reason for the following BoGo tests: * TLS-ECH-Client-TLS12SessionID * SupportTicketsWithSessionID * ResumeTLS12SessionID-TLS13 The crypto/tls package does not support session ID based resumption at this time, and so any tests that rely on this support need to be skipped. Updates #72006 Updates #25228 Change-Id: I27a2cd231e4b8762b0d9e2dbd3d8ddd5b87fd5d0 Reviewed-on: https://go-review.googlesource.com/c/go/+/673737 TryBot-Bypass: Daniel McCarney Reviewed-by: David Chase Reviewed-by: Filippo Valsorda Reviewed-by: Roland Shoemaker --- src/crypto/tls/bogo_config.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/crypto/tls/bogo_config.json b/src/crypto/tls/bogo_config.json index d46b073029..6d764daa61 100644 --- a/src/crypto/tls/bogo_config.json +++ b/src/crypto/tls/bogo_config.json @@ -8,7 +8,7 @@ "TLS-ECH-Client-Rejected-OverrideName-TLS12": "We won't attempt to negotiate 1.2 if ECH is enabled", "TLS-ECH-Client-Reject-TLS12-NoFalseStart": "We won't attempt to negotiate 1.2 if ECH is enabled", "TLS-ECH-Client-TLS12SessionTicket": "We won't attempt to negotiate 1.2 if ECH is enabled", - "TLS-ECH-Client-TLS12SessionID": "We won't attempt to negotiate 1.2 if ECH is enabled", + "TLS-ECH-Client-TLS12SessionID": "We won't attempt to negotiate 1.2 if ECH is enabled, and we don't support session ID resumption", "TLS-ECH-Client-Reject-ResumeInnerSession-TLS12": "We won't attempt to negotiate 1.2 if ECH is enabled (we could possibly test this if we had the ability to indicate not to send ECH on resumption?)", @@ -61,7 +61,7 @@ "BadRSAClientKeyExchange-4": "crypto/tls doesn't check the version number in the premaster secret - see processClientKeyExchange comment", "BadRSAClientKeyExchange-5": "crypto/tls doesn't check the version number in the premaster secret - see processClientKeyExchange comment", "CheckLeafCurve": "TODO: first pass, this should be fixed", - "SupportTicketsWithSessionID": "TODO: first pass, this should be fixed", + "SupportTicketsWithSessionID": "We don't support session ID resumption", "KeyUpdate-RequestACK": "TODO: first pass, this should be fixed", "SupportedVersionSelection-TLS12": "TODO: first pass, this should be fixed", "DuplicateExtensionServer-TLS-TLS1": "TODO: first pass, this should be fixed", @@ -159,7 +159,7 @@ "TrailingMessageData-TLS13-ClientCertificate-TLS": "TODO: first pass, this should be fixed", "TrailingMessageData-TLS13-ClientCertificateVerify-TLS": "TODO: first pass, this should be fixed", "TrailingMessageData-TLS13-ServerCertificate-TLS": "TODO: first pass, this should be fixed", - "ResumeTLS12SessionID-TLS13": "TODO: first pass, this should be fixed", + "ResumeTLS12SessionID-TLS13": "We don't support session ID resumption", "SkipEarlyData-TLS13": "TODO: first pass, this should be fixed", "DuplicateKeyShares-TLS13": "TODO: first pass, this should be fixed", "Server-TooLongSessionID-TLS13": "TODO: first pass, this should be fixed", From d54703c94ae906a5e851ae95909b6eb2f0314e19 Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Wed, 21 May 2025 14:49:40 -0400 Subject: [PATCH 49/99] runtime: use DontUpdate testprog for DontUpdate test This is a typo in CL 670497. The test is using the wrong testprog function. The testprog also needs to assert that GOMAXPROCS doesn't change, not that it is equal to NumCPU, for the GOMAXPROCS=4 case. For #73193. Cq-Include-Trybots: luci.golang.try:gotip-windows-amd64-longtest Change-Id: I6a6a636cab6936aa8519e3553b70ab6641ca8010 Reviewed-on: https://go-review.googlesource.com/c/go/+/675097 Auto-Submit: Michael Pratt LUCI-TryBot-Result: Go LUCI Reviewed-by: Michael Knyszek --- src/runtime/gomaxprocs_windows_test.go | 2 +- src/runtime/testdata/testprog/gomaxprocs_windows.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/runtime/gomaxprocs_windows_test.go b/src/runtime/gomaxprocs_windows_test.go index caa3e0cf8a..34e6ba5840 100644 --- a/src/runtime/gomaxprocs_windows_test.go +++ b/src/runtime/gomaxprocs_windows_test.go @@ -32,7 +32,7 @@ func TestCgroupGOMAXPROCSDontUpdate(t *testing.T) { // update feature. for _, v := range []string{"GOMAXPROCS=4", "GODEBUG=updatemaxprocs=0"} { t.Run(v, func(t *testing.T) { - got := runTestProg(t, "testprog", "WindowsUpdateGOMAXPROCS", v) + got := runTestProg(t, "testprog", "WindowsDontUpdateGOMAXPROCS", v) if strings.Contains(got, "SKIP") { t.Skip(got) } diff --git a/src/runtime/testdata/testprog/gomaxprocs_windows.go b/src/runtime/testdata/testprog/gomaxprocs_windows.go index bc7a4b1063..cae9dba8b3 100644 --- a/src/runtime/testdata/testprog/gomaxprocs_windows.go +++ b/src/runtime/testdata/testprog/gomaxprocs_windows.go @@ -56,8 +56,8 @@ func WindowsUpdateGOMAXPROCS() { } func WindowsDontUpdateGOMAXPROCS() { - ncpu := runtime.NumCPU() + procs := runtime.GOMAXPROCS(0) setAffinity2() - mustNotChangeMaxProcs(ncpu) + mustNotChangeMaxProcs(procs) println("OK") } From 4d6f49f6035b1f62c960f4ef66f41ef554de9243 Mon Sep 17 00:00:00 2001 From: Michael Matloob Date: Wed, 21 May 2025 15:19:16 -0400 Subject: [PATCH 50/99] cmd/doc: add more convenient behavior for go doc -http with no args If we're in a module, go to the module's page. Outside of a module, but in a workspace go to the home page, and outside of a module or workspace, show the stdlib docs. For #68106 Change-Id: I911a90a0e2b0a2bbb622f56e32827d5bdfa7f2fd Reviewed-on: https://go-review.googlesource.com/c/go/+/675235 Reviewed-by: Michael Matloob LUCI-TryBot-Result: Go LUCI Reviewed-by: Alan Donovan --- src/cmd/doc/main.go | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/cmd/doc/main.go b/src/cmd/doc/main.go index 03654e5824..ccd8512006 100644 --- a/src/cmd/doc/main.go +++ b/src/cmd/doc/main.go @@ -122,16 +122,23 @@ func do(writer io.Writer, flagSet *flag.FlagSet, args []string) (err error) { } } if serveHTTP { - // Special case: if there are no arguments to go doc -http, allow - // there to be no package in the current directory. We'll still try - // to open the page for the documentation of the package in the current - // directory, but if one doesn't exist, fall back to opening the home page. + // Special case: if there are no arguments, try to go to an appropriate page + // depending on whether we're in a module or workspace. The pkgsite homepage + // is often not the most useful page. if len(flagSet.Args()) == 0 { - var path string - if importPath, err := runCmd("go", "list"); err == nil { - path = importPath + mod, err := runCmd(append(os.Environ(), "GOWORK=off"), "go", "list", "-m") + if err == nil && mod != "" && mod != "command-line-arguments" { + // If there's a module, go to the module's doc page. + return doPkgsite(mod) } - return doPkgsite(path) + gowork, err := runCmd(nil, "go", "env", "GOWORK") + if err == nil && gowork != "" { + // Outside a module, but in a workspace, go to the home page + // with links to each of the modules' pages. + return doPkgsite("") + } + // Outside a module or workspace, go to the documentation for the standard library. + return doPkgsite("std") } // If args are provided, we need to figure out which page to open on the pkgsite @@ -203,9 +210,10 @@ func do(writer io.Writer, flagSet *flag.FlagSet, args []string) (err error) { } } -func runCmd(cmdline ...string) (string, error) { +func runCmd(env []string, cmdline ...string) (string, error) { var stdout, stderr strings.Builder cmd := exec.Command(cmdline[0], cmdline[1:]...) + cmd.Env = env cmd.Stdout = &stdout cmd.Stderr = &stderr if err := cmd.Run(); err != nil { @@ -221,7 +229,7 @@ func objectPath(userPath string, pkg *Package, symbol, method string) (string, e // go/build couldn't determine the import path, probably // because this was a relative path into a module. Use // go list to get the import path. - path, err = runCmd("go", "list", userPath) + path, err = runCmd(nil, "go", "list", userPath) if err != nil { return "", err } From ef20ccc10bf6e4d3991c9e29c7fae1c9ab338629 Mon Sep 17 00:00:00 2001 From: thepudds Date: Thu, 7 Sep 2023 14:15:33 -0400 Subject: [PATCH 51/99] reflect: leak packEface input to result rather than heap MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is part of a series of CLs that aim to help allocations in reflect and reduce how often interface arguments escape for the print functions in fmt. Before this change, the reflect.Value parameter for packEface leaks immediately to the heap due to the various ODOTPTR operations on the *emptyInterface. The -m=2 logs report: parameter v leaks to for packEface with derefs=0: flow: ← v: from v.ptr (dot) at .\value.go:145:13 from e.word = v.ptr (assign) at .\value.go:145:10 After this change, the input leaks to the result, which is what we want: parameter v leaks to ~r0 with derefs=0: flow: e = v: from v.ptr (dot) at .\value.go:143:13 from e.Data = v.ptr (assign) at .\value.go:143:10 flow: ~r0 = e: from &e (address-of) at .\value.go:147:32 from *(*any)(unsafe.Pointer(&e)) (indirection) at .\value.go:147:9 from return *(*any)(unsafe.Pointer(&e)) (return) at .\value.go:147:2 This change here is needed, but reflect.Value.Interface still leaks its input to the heap for other reasons having to do with method values, which we attempt to address in CL 530097, CL 530095, and CL 530096. Updates #8618 Updates #71349 Change-Id: Ie77bc850ff261212eeafe190bd6f9a879676a51d Reviewed-on: https://go-review.googlesource.com/c/go/+/528535 LUCI-TryBot-Result: Go LUCI Reviewed-by: Dmitri Shuralyov Reviewed-by: qiu laidongfeng2 <2645477756@qq.com> Reviewed-by: Cherry Mui --- src/reflect/value.go | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/reflect/value.go b/src/reflect/value.go index 1fadd01298..68b97e9229 100644 --- a/src/reflect/value.go +++ b/src/reflect/value.go @@ -121,8 +121,8 @@ func (v Value) pointer() unsafe.Pointer { // packEface converts v to the empty interface. func packEface(v Value) any { t := v.typ() - var i any - e := (*abi.EmptyInterface)(unsafe.Pointer(&i)) + // Declare e as a struct (and not pointer to struct) to help escape analysis. + e := abi.EmptyInterface{} // First, fill in the data portion of the interface. switch { case t.IfaceIndir(): @@ -145,12 +145,9 @@ func packEface(v Value) any { // Value is direct, and so is the interface. e.Data = v.ptr } - // Now, fill in the type portion. We're very careful here not - // to have any operation between the e.word and e.typ assignments - // that would let the garbage collector observe the partially-built - // interface value. + // Now, fill in the type portion. e.Type = t - return i + return *(*any)(unsafe.Pointer(&e)) } // unpackEface converts the empty interface i to a Value. From 1881d680b0b573c32d3002c37902760668ffec0f Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Wed, 21 May 2025 15:35:51 +0200 Subject: [PATCH 52/99] net/http: add CrossOriginProtection Fixes #73626 Change-Id: I6a6a4656862e7a38acb65c4815fb7a1e04896172 Reviewed-on: https://go-review.googlesource.com/c/go/+/674936 Reviewed-by: Damien Neil Auto-Submit: Filippo Valsorda LUCI-TryBot-Result: Go LUCI Reviewed-by: David Chase --- api/next/73626.txt | 7 + doc/next/6-stdlib/99-minor/net/http/73626.md | 7 + src/net/http/csrf.go | 182 ++++++++++ src/net/http/csrf_test.go | 330 +++++++++++++++++++ 4 files changed, 526 insertions(+) create mode 100644 api/next/73626.txt create mode 100644 doc/next/6-stdlib/99-minor/net/http/73626.md create mode 100644 src/net/http/csrf.go create mode 100644 src/net/http/csrf_test.go diff --git a/api/next/73626.txt b/api/next/73626.txt new file mode 100644 index 0000000000..ef4d0683b2 --- /dev/null +++ b/api/next/73626.txt @@ -0,0 +1,7 @@ +pkg net/http, func NewCrossOriginProtection() *CrossOriginProtection #73626 +pkg net/http, method (*CrossOriginProtection) AddInsecureBypassPattern(string) #73626 +pkg net/http, method (*CrossOriginProtection) AddTrustedOrigin(string) error #73626 +pkg net/http, method (*CrossOriginProtection) Check(*Request) error #73626 +pkg net/http, method (*CrossOriginProtection) Handler(Handler) Handler #73626 +pkg net/http, method (*CrossOriginProtection) SetDenyHandler(Handler) #73626 +pkg net/http, type CrossOriginProtection struct #73626 diff --git a/doc/next/6-stdlib/99-minor/net/http/73626.md b/doc/next/6-stdlib/99-minor/net/http/73626.md new file mode 100644 index 0000000000..88a204b8a4 --- /dev/null +++ b/doc/next/6-stdlib/99-minor/net/http/73626.md @@ -0,0 +1,7 @@ +The new [CrossOriginProtection] implements protections against [Cross-Site +Request Forgery (CSRF)][] by rejecting non-safe cross-origin browser requests. +It uses [modern browser Fetch metadata][Sec-Fetch-Site], doesn't require tokens +or cookies, and supports origin-based and pattern-based bypasses. + +[Sec-Fetch-Site]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Sec-Fetch-Site +[Cross-Site Request Forgery (CSRF)]: https://developer.mozilla.org/en-US/docs/Web/Security/Attacks/CSRF diff --git a/src/net/http/csrf.go b/src/net/http/csrf.go new file mode 100644 index 0000000000..a46071f806 --- /dev/null +++ b/src/net/http/csrf.go @@ -0,0 +1,182 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package http + +import ( + "errors" + "fmt" + "net/url" + "sync" + "sync/atomic" +) + +// CrossOriginProtection implements protections against [Cross-Site Request +// Forgery (CSRF)] by rejecting non-safe cross-origin browser requests. +// +// Cross-origin requests are currently detected with the [Sec-Fetch-Site] +// header, available in all browsers since 2023, or by comparing the hostname of +// the [Origin] header with the Host header. +// +// The GET, HEAD, and OPTIONS methods are [safe methods] and are always allowed. +// It's important that applications do not perform any state changing actions +// due to requests with safe methods. +// +// Requests without Sec-Fetch-Site or Origin headers are currently assumed to be +// either same-origin or non-browser requests, and are allowed. +// +// [Sec-Fetch-Site]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Sec-Fetch-Site +// [Origin]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin +// [Cross-Site Request Forgery (CSRF)]: https://developer.mozilla.org/en-US/docs/Web/Security/Attacks/CSRF +// [safe methods]: https://developer.mozilla.org/en-US/docs/Glossary/Safe/HTTP +type CrossOriginProtection struct { + bypass *ServeMux + trustedMu sync.RWMutex + trusted map[string]bool + deny atomic.Pointer[Handler] +} + +// NewCrossOriginProtection returns a new [CrossOriginProtection] value. +func NewCrossOriginProtection() *CrossOriginProtection { + return &CrossOriginProtection{ + bypass: NewServeMux(), + trusted: make(map[string]bool), + } +} + +// AddTrustedOrigin allows all requests with an [Origin] header +// which exactly matches the given value. +// +// Origin header values are of the form "scheme://host[:port]". +// +// AddTrustedOrigin can be called concurrently with other methods +// or request handling, and applies to future requests. +// +// [Origin]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin +func (c *CrossOriginProtection) AddTrustedOrigin(origin string) error { + u, err := url.Parse(origin) + if err != nil { + return fmt.Errorf("invalid origin %q: %w", origin, err) + } + if u.Scheme == "" { + return fmt.Errorf("invalid origin %q: scheme is required", origin) + } + if u.Host == "" { + return fmt.Errorf("invalid origin %q: host is required", origin) + } + if u.Path != "" || u.RawQuery != "" || u.Fragment != "" { + return fmt.Errorf("invalid origin %q: path, query, and fragment are not allowed", origin) + } + c.trustedMu.Lock() + defer c.trustedMu.Unlock() + c.trusted[origin] = true + return nil +} + +var noopHandler = HandlerFunc(func(w ResponseWriter, r *Request) {}) + +// AddInsecureBypassPattern permits all requests that match the given pattern. +// The pattern syntax and precedence rules are the same as [ServeMux]. +// +// AddInsecureBypassPattern can be called concurrently with other methods +// or request handling, and applies to future requests. +func (c *CrossOriginProtection) AddInsecureBypassPattern(pattern string) { + c.bypass.Handle(pattern, noopHandler) +} + +// SetDenyHandler sets a handler to invoke when a request is rejected. +// The default error handler responds with a 403 Forbidden status. +// +// SetDenyHandler can be called concurrently with other methods +// or request handling, and applies to future requests. +// +// Check does not call the error handler. +func (c *CrossOriginProtection) SetDenyHandler(h Handler) { + if h == nil { + c.deny.Store(nil) + return + } + c.deny.Store(&h) +} + +// Check applies cross-origin checks to a request. +// It returns an error if the request should be rejected. +func (c *CrossOriginProtection) Check(req *Request) error { + switch req.Method { + case "GET", "HEAD", "OPTIONS": + // Safe methods are always allowed. + return nil + } + + switch req.Header.Get("Sec-Fetch-Site") { + case "": + // No Sec-Fetch-Site header is present. + // Fallthrough to check the Origin header. + case "same-origin", "none": + return nil + default: + if c.isRequestExempt(req) { + return nil + } + return errors.New("cross-origin request detected from Sec-Fetch-Site header") + } + + origin := req.Header.Get("Origin") + if origin == "" { + // Neither Sec-Fetch-Site nor Origin headers are present. + // Either the request is same-origin or not a browser request. + return nil + } + + if o, err := url.Parse(origin); err == nil && o.Host == req.Host { + // The Origin header matches the Host header. Note that the Host header + // doesn't include the scheme, so we don't know if this might be an + // HTTP→HTTPS cross-origin request. We fail open, since all modern + // browsers support Sec-Fetch-Site since 2023, and running an older + // browser makes a clear security trade-off already. Sites can mitigate + // this with HTTP Strict Transport Security (HSTS). + return nil + } + + if c.isRequestExempt(req) { + return nil + } + return errors.New("cross-origin request detected, and/or browser is out of date: " + + "Sec-Fetch-Site is missing, and Origin does not match Host") +} + +// isRequestExempt checks the bypasses which require taking a lock, and should +// be deferred until the last moment. +func (c *CrossOriginProtection) isRequestExempt(req *Request) bool { + if _, pattern := c.bypass.Handler(req); pattern != "" { + // The request matches a bypass pattern. + return true + } + + c.trustedMu.RLock() + defer c.trustedMu.RUnlock() + origin := req.Header.Get("Origin") + // The request matches a trusted origin. + return origin != "" && c.trusted[origin] +} + +// Handler returns a handler that applies cross-origin checks +// before invoking the handler h. +// +// If a request fails cross-origin checks, the request is rejected +// with a 403 Forbidden status or handled with the handler passed +// to [CrossOriginProtection.SetDenyHandler]. +func (c *CrossOriginProtection) Handler(h Handler) Handler { + return HandlerFunc(func(w ResponseWriter, r *Request) { + if err := c.Check(r); err != nil { + if deny := c.deny.Load(); deny != nil { + (*deny).ServeHTTP(w, r) + return + } + Error(w, err.Error(), StatusForbidden) + return + } + h.ServeHTTP(w, r) + }) +} diff --git a/src/net/http/csrf_test.go b/src/net/http/csrf_test.go new file mode 100644 index 0000000000..30986a43b9 --- /dev/null +++ b/src/net/http/csrf_test.go @@ -0,0 +1,330 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package http_test + +import ( + "io" + "net/http" + "net/http/httptest" + "strings" + "testing" +) + +// httptestNewRequest works around https://go.dev/issue/73151. +func httptestNewRequest(method, target string) *http.Request { + req := httptest.NewRequest(method, target, nil) + req.URL.Scheme = "" + req.URL.Host = "" + return req +} + +var okHandler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(http.StatusOK) +}) + +func TestCrossOriginProtectionSecFetchSite(t *testing.T) { + protection := http.NewCrossOriginProtection() + handler := protection.Handler(okHandler) + + tests := []struct { + name string + method string + secFetchSite string + origin string + expectedStatus int + }{ + {"same-origin allowed", "POST", "same-origin", "", http.StatusOK}, + {"none allowed", "POST", "none", "", http.StatusOK}, + {"cross-site blocked", "POST", "cross-site", "", http.StatusForbidden}, + {"same-site blocked", "POST", "same-site", "", http.StatusForbidden}, + + {"no header with no origin", "POST", "", "", http.StatusOK}, + {"no header with matching origin", "POST", "", "https://example.com", http.StatusOK}, + {"no header with mismatched origin", "POST", "", "https://attacker.example", http.StatusForbidden}, + {"no header with null origin", "POST", "", "null", http.StatusForbidden}, + + {"GET allowed", "GET", "cross-site", "", http.StatusOK}, + {"HEAD allowed", "HEAD", "cross-site", "", http.StatusOK}, + {"OPTIONS allowed", "OPTIONS", "cross-site", "", http.StatusOK}, + {"PUT blocked", "PUT", "cross-site", "", http.StatusForbidden}, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + req := httptestNewRequest(tc.method, "https://example.com/") + if tc.secFetchSite != "" { + req.Header.Set("Sec-Fetch-Site", tc.secFetchSite) + } + if tc.origin != "" { + req.Header.Set("Origin", tc.origin) + } + + w := httptest.NewRecorder() + handler.ServeHTTP(w, req) + + if w.Code != tc.expectedStatus { + t.Errorf("got status %d, want %d", w.Code, tc.expectedStatus) + } + }) + } +} + +func TestCrossOriginProtectionTrustedOriginBypass(t *testing.T) { + protection := http.NewCrossOriginProtection() + err := protection.AddTrustedOrigin("https://trusted.example") + if err != nil { + t.Fatalf("AddTrustedOrigin: %v", err) + } + handler := protection.Handler(okHandler) + + tests := []struct { + name string + origin string + secFetchSite string + expectedStatus int + }{ + {"trusted origin without sec-fetch-site", "https://trusted.example", "", http.StatusOK}, + {"trusted origin with cross-site", "https://trusted.example", "cross-site", http.StatusOK}, + {"untrusted origin without sec-fetch-site", "https://attacker.example", "", http.StatusForbidden}, + {"untrusted origin with cross-site", "https://attacker.example", "cross-site", http.StatusForbidden}, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + req := httptestNewRequest("POST", "https://example.com/") + req.Header.Set("Origin", tc.origin) + if tc.secFetchSite != "" { + req.Header.Set("Sec-Fetch-Site", tc.secFetchSite) + } + + w := httptest.NewRecorder() + handler.ServeHTTP(w, req) + + if w.Code != tc.expectedStatus { + t.Errorf("got status %d, want %d", w.Code, tc.expectedStatus) + } + }) + } +} + +func TestCrossOriginProtectionPatternBypass(t *testing.T) { + protection := http.NewCrossOriginProtection() + protection.AddInsecureBypassPattern("/bypass/") + protection.AddInsecureBypassPattern("/only/{foo}") + handler := protection.Handler(okHandler) + + tests := []struct { + name string + path string + secFetchSite string + expectedStatus int + }{ + {"bypass path without sec-fetch-site", "/bypass/", "", http.StatusOK}, + {"bypass path with cross-site", "/bypass/", "cross-site", http.StatusOK}, + {"non-bypass path without sec-fetch-site", "/api/", "", http.StatusForbidden}, + {"non-bypass path with cross-site", "/api/", "cross-site", http.StatusForbidden}, + + {"redirect to bypass path without ..", "/foo/../bypass/bar", "", http.StatusOK}, + {"redirect to bypass path with trailing slash", "/bypass", "", http.StatusOK}, + {"redirect to non-bypass path with ..", "/foo/../api/bar", "", http.StatusForbidden}, + {"redirect to non-bypass path with trailing slash", "/api", "", http.StatusForbidden}, + + {"wildcard bypass", "/only/123", "", http.StatusOK}, + {"non-wildcard", "/only/123/foo", "", http.StatusForbidden}, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + req := httptestNewRequest("POST", "https://example.com"+tc.path) + req.Header.Set("Origin", "https://attacker.example") + if tc.secFetchSite != "" { + req.Header.Set("Sec-Fetch-Site", tc.secFetchSite) + } + + w := httptest.NewRecorder() + handler.ServeHTTP(w, req) + + if w.Code != tc.expectedStatus { + t.Errorf("got status %d, want %d", w.Code, tc.expectedStatus) + } + }) + } +} + +func TestCrossOriginProtectionSetDenyHandler(t *testing.T) { + protection := http.NewCrossOriginProtection() + + handler := protection.Handler(okHandler) + + req := httptestNewRequest("POST", "https://example.com/") + req.Header.Set("Sec-Fetch-Site", "cross-site") + + w := httptest.NewRecorder() + handler.ServeHTTP(w, req) + + if w.Code != http.StatusForbidden { + t.Errorf("got status %d, want %d", w.Code, http.StatusForbidden) + } + + customErrHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(http.StatusTeapot) + io.WriteString(w, "custom error") + }) + protection.SetDenyHandler(customErrHandler) + + w = httptest.NewRecorder() + handler.ServeHTTP(w, req) + + if w.Code != http.StatusTeapot { + t.Errorf("got status %d, want %d", w.Code, http.StatusTeapot) + } + + if !strings.Contains(w.Body.String(), "custom error") { + t.Errorf("expected custom error message, got: %q", w.Body.String()) + } + + req = httptestNewRequest("GET", "https://example.com/") + + w = httptest.NewRecorder() + handler.ServeHTTP(w, req) + + if w.Code != http.StatusOK { + t.Errorf("got status %d, want %d", w.Code, http.StatusOK) + } + + protection.SetDenyHandler(nil) + + req = httptestNewRequest("POST", "https://example.com/") + req.Header.Set("Sec-Fetch-Site", "cross-site") + + w = httptest.NewRecorder() + handler.ServeHTTP(w, req) + + if w.Code != http.StatusForbidden { + t.Errorf("got status %d, want %d", w.Code, http.StatusForbidden) + } +} + +func TestCrossOriginProtectionAddTrustedOriginErrors(t *testing.T) { + protection := http.NewCrossOriginProtection() + + tests := []struct { + name string + origin string + wantErr bool + }{ + {"valid origin", "https://example.com", false}, + {"valid origin with port", "https://example.com:8080", false}, + {"http origin", "http://example.com", false}, + {"missing scheme", "example.com", true}, + {"missing host", "https://", true}, + {"trailing slash", "https://example.com/", true}, + {"with path", "https://example.com/path", true}, + {"with query", "https://example.com?query=value", true}, + {"with fragment", "https://example.com#fragment", true}, + {"invalid url", "https://ex ample.com", true}, + {"empty string", "", true}, + {"null", "null", true}, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + err := protection.AddTrustedOrigin(tc.origin) + if (err != nil) != tc.wantErr { + t.Errorf("AddTrustedOrigin(%q) error = %v, wantErr %v", tc.origin, err, tc.wantErr) + } + }) + } +} + +func TestCrossOriginProtectionAddingBypassesConcurrently(t *testing.T) { + protection := http.NewCrossOriginProtection() + handler := protection.Handler(okHandler) + + req := httptestNewRequest("POST", "https://example.com/") + req.Header.Set("Origin", "https://concurrent.example") + req.Header.Set("Sec-Fetch-Site", "cross-site") + + w := httptest.NewRecorder() + handler.ServeHTTP(w, req) + + if w.Code != http.StatusForbidden { + t.Errorf("got status %d, want %d", w.Code, http.StatusForbidden) + } + + start := make(chan struct{}) + done := make(chan struct{}) + go func() { + close(start) + defer close(done) + for range 10 { + w := httptest.NewRecorder() + handler.ServeHTTP(w, req) + } + }() + + // Add bypasses while the requests are in flight. + <-start + protection.AddTrustedOrigin("https://concurrent.example") + protection.AddInsecureBypassPattern("/foo/") + <-done + + w = httptest.NewRecorder() + handler.ServeHTTP(w, req) + + if w.Code != http.StatusOK { + t.Errorf("After concurrent bypass addition, got status %d, want %d", w.Code, http.StatusOK) + } +} + +func TestCrossOriginProtectionServer(t *testing.T) { + protection := http.NewCrossOriginProtection() + protection.AddTrustedOrigin("https://trusted.example") + protection.AddInsecureBypassPattern("/bypass/") + handler := protection.Handler(okHandler) + + ts := httptest.NewServer(handler) + defer ts.Close() + + tests := []struct { + name string + method string + url string + origin string + secFetchSite string + expectedStatus int + }{ + {"cross-site", "POST", ts.URL, "https://attacker.example", "cross-site", http.StatusForbidden}, + {"same-origin", "POST", ts.URL, "", "same-origin", http.StatusOK}, + {"origin matches host", "POST", ts.URL, ts.URL, "", http.StatusOK}, + {"trusted origin", "POST", ts.URL, "https://trusted.example", "", http.StatusOK}, + {"untrusted origin", "POST", ts.URL, "https://attacker.example", "", http.StatusForbidden}, + {"bypass path", "POST", ts.URL + "/bypass/", "https://attacker.example", "", http.StatusOK}, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + req, err := http.NewRequest(tc.method, tc.url, nil) + if err != nil { + t.Fatalf("NewRequest: %v", err) + } + if tc.origin != "" { + req.Header.Set("Origin", tc.origin) + } + if tc.secFetchSite != "" { + req.Header.Set("Sec-Fetch-Site", tc.secFetchSite) + } + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + t.Fatalf("Do: %v", err) + } + defer resp.Body.Close() + if resp.StatusCode != tc.expectedStatus { + t.Errorf("got status %d, want %d", resp.StatusCode, tc.expectedStatus) + } + }) + } +} From a1a151496503cafa5e4c672e0e9c1e1bb3516702 Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Wed, 21 May 2025 21:01:07 +0200 Subject: [PATCH 53/99] crypto/internal/fips140/nistec: remove dead s390x p256OrdMul The p256_ordinv.go file is build tagged to only amd64 and arm64, and there is no p256OrdSqr. Also, none of it will matter after CL 669895. Change-Id: I6a6a465653c18673e3a2c7f41d2e4ac54915b365 Reviewed-on: https://go-review.googlesource.com/c/go/+/675195 Reviewed-by: Roland Shoemaker Reviewed-by: Daniel McCarney LUCI-TryBot-Result: Go LUCI Reviewed-by: David Chase Auto-Submit: Filippo Valsorda --- .../internal/fips140/nistec/p256_asm_s390x.s | 393 ------------------ 1 file changed, 393 deletions(-) diff --git a/src/crypto/internal/fips140/nistec/p256_asm_s390x.s b/src/crypto/internal/fips140/nistec/p256_asm_s390x.s index 4ca25cfc41..190147ebb1 100644 --- a/src/crypto/internal/fips140/nistec/p256_asm_s390x.s +++ b/src/crypto/internal/fips140/nistec/p256_asm_s390x.s @@ -7,11 +7,6 @@ #include "textflag.h" #include "go_asm.h" -DATA p256ordK0<>+0x00(SB)/4, $0xee00bc4f -DATA p256ord<>+0x00(SB)/8, $0xffffffff00000000 -DATA p256ord<>+0x08(SB)/8, $0xffffffffffffffff -DATA p256ord<>+0x10(SB)/8, $0xbce6faada7179e84 -DATA p256ord<>+0x18(SB)/8, $0xf3b9cac2fc632551 DATA p256<>+0x00(SB)/8, $0xffffffff00000001 // P256 DATA p256<>+0x08(SB)/8, $0x0000000000000000 // P256 DATA p256<>+0x10(SB)/8, $0x00000000ffffffff // P256 @@ -44,8 +39,6 @@ DATA p256mul<>+0x80(SB)/8, $0x00000000fffffffe // (1*2^256)%P256 DATA p256mul<>+0x88(SB)/8, $0xffffffffffffffff // (1*2^256)%P256 DATA p256mul<>+0x90(SB)/8, $0xffffffff00000000 // (1*2^256)%P256 DATA p256mul<>+0x98(SB)/8, $0x0000000000000001 // (1*2^256)%P256 -GLOBL p256ordK0<>(SB), 8, $4 -GLOBL p256ord<>(SB), 8, $32 GLOBL p256<>(SB), 8, $96 GLOBL p256mul<>(SB), 8, $160 @@ -500,392 +493,6 @@ loop_select: #undef SEL2 #undef CPOOL -// --------------------------------------- - -// func p256OrdMul(res, in1, in2 *p256OrdElement) -#define res_ptr R1 -#define x_ptr R2 -#define y_ptr R3 -#define X0 V0 -#define X1 V1 -#define Y0 V2 -#define Y1 V3 -#define M0 V4 -#define M1 V5 -#define T0 V6 -#define T1 V7 -#define T2 V8 -#define YDIG V9 - -#define ADD1 V16 -#define ADD1H V17 -#define ADD2 V18 -#define ADD2H V19 -#define RED1 V20 -#define RED1H V21 -#define RED2 V22 -#define RED2H V23 -#define CAR1 V24 -#define CAR1M V25 - -#define MK0 V30 -#define K0 V31 -TEXT ·p256OrdMul<>(SB), NOSPLIT, $0 - MOVD res+0(FP), res_ptr - MOVD in1+8(FP), x_ptr - MOVD in2+16(FP), y_ptr - - VZERO T2 - MOVD $p256ordK0<>+0x00(SB), R4 - - // VLEF $3, 0(R4), K0 - WORD $0xE7F40000 - BYTE $0x38 - BYTE $0x03 - MOVD $p256ord<>+0x00(SB), R4 - VL 16(R4), M0 - VL 0(R4), M1 - - VL (0*16)(x_ptr), X0 - VPDI $0x4, X0, X0, X0 - VL (1*16)(x_ptr), X1 - VPDI $0x4, X1, X1, X1 - VL (0*16)(y_ptr), Y0 - VPDI $0x4, Y0, Y0, Y0 - VL (1*16)(y_ptr), Y1 - VPDI $0x4, Y1, Y1, Y1 - - // ---------------------------------------------------------------------------/ - VREPF $3, Y0, YDIG - VMLF X0, YDIG, ADD1 - VMLF ADD1, K0, MK0 - VREPF $3, MK0, MK0 - - VMLF X1, YDIG, ADD2 - VMLHF X0, YDIG, ADD1H - VMLHF X1, YDIG, ADD2H - - VMALF M0, MK0, ADD1, RED1 - VMALHF M0, MK0, ADD1, RED1H - VMALF M1, MK0, ADD2, RED2 - VMALHF M1, MK0, ADD2, RED2H - - VSLDB $12, RED2, RED1, RED1 - VSLDB $12, T2, RED2, RED2 - - VACCQ RED1, ADD1H, CAR1 - VAQ RED1, ADD1H, T0 - VACCQ RED1H, T0, CAR1M - VAQ RED1H, T0, T0 - - // << ready for next MK0 - - VACQ RED2, ADD2H, CAR1, T1 - VACCCQ RED2, ADD2H, CAR1, CAR1 - VACCCQ RED2H, T1, CAR1M, T2 - VACQ RED2H, T1, CAR1M, T1 - VAQ CAR1, T2, T2 - - // --------------------------------------------------- -/* * - * ---+--------+--------+ - * T2| T1 | T0 | - * ---+--------+--------+ - * *(add)* - * +--------+--------+ - * | X1 | X0 | - * +--------+--------+ - * *(mul)* - * +--------+--------+ - * | YDIG | YDIG | - * +--------+--------+ - * *(add)* - * +--------+--------+ - * | M1 | M0 | - * +--------+--------+ - * *(mul)* - * +--------+--------+ - * | MK0 | MK0 | - * +--------+--------+ - * - * --------------------- - * - * +--------+--------+ - * | ADD2 | ADD1 | - * +--------+--------+ - * +--------+--------+ - * | ADD2H | ADD1H | - * +--------+--------+ - * +--------+--------+ - * | RED2 | RED1 | - * +--------+--------+ - * +--------+--------+ - * | RED2H | RED1H | - * +--------+--------+ - */ - VREPF $2, Y0, YDIG - VMALF X0, YDIG, T0, ADD1 - VMLF ADD1, K0, MK0 - VREPF $3, MK0, MK0 - - VMALF X1, YDIG, T1, ADD2 - VMALHF X0, YDIG, T0, ADD1H - VMALHF X1, YDIG, T1, ADD2H - - VMALF M0, MK0, ADD1, RED1 - VMALHF M0, MK0, ADD1, RED1H - VMALF M1, MK0, ADD2, RED2 - VMALHF M1, MK0, ADD2, RED2H - - VSLDB $12, RED2, RED1, RED1 - VSLDB $12, T2, RED2, RED2 - - VACCQ RED1, ADD1H, CAR1 - VAQ RED1, ADD1H, T0 - VACCQ RED1H, T0, CAR1M - VAQ RED1H, T0, T0 - - // << ready for next MK0 - - VACQ RED2, ADD2H, CAR1, T1 - VACCCQ RED2, ADD2H, CAR1, CAR1 - VACCCQ RED2H, T1, CAR1M, T2 - VACQ RED2H, T1, CAR1M, T1 - VAQ CAR1, T2, T2 - - // --------------------------------------------------- - VREPF $1, Y0, YDIG - VMALF X0, YDIG, T0, ADD1 - VMLF ADD1, K0, MK0 - VREPF $3, MK0, MK0 - - VMALF X1, YDIG, T1, ADD2 - VMALHF X0, YDIG, T0, ADD1H - VMALHF X1, YDIG, T1, ADD2H - - VMALF M0, MK0, ADD1, RED1 - VMALHF M0, MK0, ADD1, RED1H - VMALF M1, MK0, ADD2, RED2 - VMALHF M1, MK0, ADD2, RED2H - - VSLDB $12, RED2, RED1, RED1 - VSLDB $12, T2, RED2, RED2 - - VACCQ RED1, ADD1H, CAR1 - VAQ RED1, ADD1H, T0 - VACCQ RED1H, T0, CAR1M - VAQ RED1H, T0, T0 - - // << ready for next MK0 - - VACQ RED2, ADD2H, CAR1, T1 - VACCCQ RED2, ADD2H, CAR1, CAR1 - VACCCQ RED2H, T1, CAR1M, T2 - VACQ RED2H, T1, CAR1M, T1 - VAQ CAR1, T2, T2 - - // --------------------------------------------------- - VREPF $0, Y0, YDIG - VMALF X0, YDIG, T0, ADD1 - VMLF ADD1, K0, MK0 - VREPF $3, MK0, MK0 - - VMALF X1, YDIG, T1, ADD2 - VMALHF X0, YDIG, T0, ADD1H - VMALHF X1, YDIG, T1, ADD2H - - VMALF M0, MK0, ADD1, RED1 - VMALHF M0, MK0, ADD1, RED1H - VMALF M1, MK0, ADD2, RED2 - VMALHF M1, MK0, ADD2, RED2H - - VSLDB $12, RED2, RED1, RED1 - VSLDB $12, T2, RED2, RED2 - - VACCQ RED1, ADD1H, CAR1 - VAQ RED1, ADD1H, T0 - VACCQ RED1H, T0, CAR1M - VAQ RED1H, T0, T0 - - // << ready for next MK0 - - VACQ RED2, ADD2H, CAR1, T1 - VACCCQ RED2, ADD2H, CAR1, CAR1 - VACCCQ RED2H, T1, CAR1M, T2 - VACQ RED2H, T1, CAR1M, T1 - VAQ CAR1, T2, T2 - - // --------------------------------------------------- - VREPF $3, Y1, YDIG - VMALF X0, YDIG, T0, ADD1 - VMLF ADD1, K0, MK0 - VREPF $3, MK0, MK0 - - VMALF X1, YDIG, T1, ADD2 - VMALHF X0, YDIG, T0, ADD1H - VMALHF X1, YDIG, T1, ADD2H - - VMALF M0, MK0, ADD1, RED1 - VMALHF M0, MK0, ADD1, RED1H - VMALF M1, MK0, ADD2, RED2 - VMALHF M1, MK0, ADD2, RED2H - - VSLDB $12, RED2, RED1, RED1 - VSLDB $12, T2, RED2, RED2 - - VACCQ RED1, ADD1H, CAR1 - VAQ RED1, ADD1H, T0 - VACCQ RED1H, T0, CAR1M - VAQ RED1H, T0, T0 - - // << ready for next MK0 - - VACQ RED2, ADD2H, CAR1, T1 - VACCCQ RED2, ADD2H, CAR1, CAR1 - VACCCQ RED2H, T1, CAR1M, T2 - VACQ RED2H, T1, CAR1M, T1 - VAQ CAR1, T2, T2 - - // --------------------------------------------------- - VREPF $2, Y1, YDIG - VMALF X0, YDIG, T0, ADD1 - VMLF ADD1, K0, MK0 - VREPF $3, MK0, MK0 - - VMALF X1, YDIG, T1, ADD2 - VMALHF X0, YDIG, T0, ADD1H - VMALHF X1, YDIG, T1, ADD2H - - VMALF M0, MK0, ADD1, RED1 - VMALHF M0, MK0, ADD1, RED1H - VMALF M1, MK0, ADD2, RED2 - VMALHF M1, MK0, ADD2, RED2H - - VSLDB $12, RED2, RED1, RED1 - VSLDB $12, T2, RED2, RED2 - - VACCQ RED1, ADD1H, CAR1 - VAQ RED1, ADD1H, T0 - VACCQ RED1H, T0, CAR1M - VAQ RED1H, T0, T0 - - // << ready for next MK0 - - VACQ RED2, ADD2H, CAR1, T1 - VACCCQ RED2, ADD2H, CAR1, CAR1 - VACCCQ RED2H, T1, CAR1M, T2 - VACQ RED2H, T1, CAR1M, T1 - VAQ CAR1, T2, T2 - - // --------------------------------------------------- - VREPF $1, Y1, YDIG - VMALF X0, YDIG, T0, ADD1 - VMLF ADD1, K0, MK0 - VREPF $3, MK0, MK0 - - VMALF X1, YDIG, T1, ADD2 - VMALHF X0, YDIG, T0, ADD1H - VMALHF X1, YDIG, T1, ADD2H - - VMALF M0, MK0, ADD1, RED1 - VMALHF M0, MK0, ADD1, RED1H - VMALF M1, MK0, ADD2, RED2 - VMALHF M1, MK0, ADD2, RED2H - - VSLDB $12, RED2, RED1, RED1 - VSLDB $12, T2, RED2, RED2 - - VACCQ RED1, ADD1H, CAR1 - VAQ RED1, ADD1H, T0 - VACCQ RED1H, T0, CAR1M - VAQ RED1H, T0, T0 - - // << ready for next MK0 - - VACQ RED2, ADD2H, CAR1, T1 - VACCCQ RED2, ADD2H, CAR1, CAR1 - VACCCQ RED2H, T1, CAR1M, T2 - VACQ RED2H, T1, CAR1M, T1 - VAQ CAR1, T2, T2 - - // --------------------------------------------------- - VREPF $0, Y1, YDIG - VMALF X0, YDIG, T0, ADD1 - VMLF ADD1, K0, MK0 - VREPF $3, MK0, MK0 - - VMALF X1, YDIG, T1, ADD2 - VMALHF X0, YDIG, T0, ADD1H - VMALHF X1, YDIG, T1, ADD2H - - VMALF M0, MK0, ADD1, RED1 - VMALHF M0, MK0, ADD1, RED1H - VMALF M1, MK0, ADD2, RED2 - VMALHF M1, MK0, ADD2, RED2H - - VSLDB $12, RED2, RED1, RED1 - VSLDB $12, T2, RED2, RED2 - - VACCQ RED1, ADD1H, CAR1 - VAQ RED1, ADD1H, T0 - VACCQ RED1H, T0, CAR1M - VAQ RED1H, T0, T0 - - // << ready for next MK0 - - VACQ RED2, ADD2H, CAR1, T1 - VACCCQ RED2, ADD2H, CAR1, CAR1 - VACCCQ RED2H, T1, CAR1M, T2 - VACQ RED2H, T1, CAR1M, T1 - VAQ CAR1, T2, T2 - - // --------------------------------------------------- - - VZERO RED1 - VSCBIQ M0, T0, CAR1 - VSQ M0, T0, ADD1 - VSBCBIQ T1, M1, CAR1, CAR1M - VSBIQ T1, M1, CAR1, ADD2 - VSBIQ T2, RED1, CAR1M, T2 - - // what output to use, ADD2||ADD1 or T1||T0? - VSEL T0, ADD1, T2, T0 - VSEL T1, ADD2, T2, T1 - - VPDI $0x4, T0, T0, T0 - VST T0, (0*16)(res_ptr) - VPDI $0x4, T1, T1, T1 - VST T1, (1*16)(res_ptr) - RET - -#undef res_ptr -#undef x_ptr -#undef y_ptr -#undef X0 -#undef X1 -#undef Y0 -#undef Y1 -#undef M0 -#undef M1 -#undef T0 -#undef T1 -#undef T2 -#undef YDIG - -#undef ADD1 -#undef ADD1H -#undef ADD2 -#undef ADD2H -#undef RED1 -#undef RED1H -#undef RED2 -#undef RED2H -#undef CAR1 -#undef CAR1M - -#undef MK0 -#undef K0 - // --------------------------------------- // p256MulInternal // V0-V3,V30,V31 - Not Modified From b6e251b264869fac4ddc158fb9a5c8d5b4ac086f Mon Sep 17 00:00:00 2001 From: Mark Freeman Date: Wed, 21 May 2025 15:13:45 -0400 Subject: [PATCH 54/99] internal/pkgbits: mark element / section ends as delta encoding candidates Change-Id: I165c98a0a5800515bfa33c60b95b534900d0ea59 Reviewed-on: https://go-review.googlesource.com/c/go/+/675215 LUCI-TryBot-Result: Go LUCI Auto-Submit: Mark Freeman Reviewed-by: Robert Griesemer --- src/internal/pkgbits/encoder.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/internal/pkgbits/encoder.go b/src/internal/pkgbits/encoder.go index 2ecac1c788..6e3716570f 100644 --- a/src/internal/pkgbits/encoder.go +++ b/src/internal/pkgbits/encoder.go @@ -72,14 +72,17 @@ func (pw *PkgEncoder) DumpTo(out0 io.Writer) (fingerprint [8]byte) { writeUint32(flags) } - // Write elemEndsEnds. + // TODO(markfreeman): Also can use delta encoding to write section ends, + // but not as impactful. var sum uint32 for _, elems := range &pw.elems { sum += uint32(len(elems)) writeUint32(sum) } - // Write elemEnds. + // TODO(markfreeman): Use delta encoding to store element ends and inflate + // back to this representation during decoding; the numbers will be much + // smaller. sum = 0 for _, elems := range &pw.elems { for _, elem := range elems { From 50484d3b4e691d361d009d5e4a07c182b35471a0 Mon Sep 17 00:00:00 2001 From: Michael Matloob Date: Wed, 21 May 2025 12:20:59 -0400 Subject: [PATCH 55/99] cmd/go/internal/doc: ignore SIGINT and SIGQUIT Just like we do in cmd/doc when we start pkgsite, ignore SIGINT (and SIGQUIT on unix) when we start cmd/doc so that it's handled by cmd/doc (if pkgsite is not started, and before it is started) or pkgsite, if it is started. Also exit with the exit status of the command, rather than using base.Errorf so that we don't print an extra error message to the terminal. For #68106 Change-Id: If968e88b95031761432d13dc47c5febe3391945d Reviewed-on: https://go-review.googlesource.com/c/go/+/675076 LUCI-TryBot-Result: Go LUCI Reviewed-by: Michael Matloob Reviewed-by: Jonathan Amsterdam Auto-Submit: Michael Matloob --- src/cmd/go/internal/base/base.go | 16 ++++++++++++---- src/cmd/go/internal/doc/doc.go | 13 ++++++++++++- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/cmd/go/internal/base/base.go b/src/cmd/go/internal/base/base.go index a2c95fb52f..83cbad401e 100644 --- a/src/cmd/go/internal/base/base.go +++ b/src/cmd/go/internal/base/base.go @@ -191,20 +191,28 @@ func GetExitStatus() int { // connected to the go command's own stdout and stderr. // If the command fails, Run reports the error using Errorf. func Run(cmdargs ...any) { + if err := RunErr(cmdargs...); err != nil { + Errorf("%v", err) + } +} + +// Run runs the command, with stdout and stderr +// connected to the go command's own stdout and stderr. +// If the command fails, RunErr returns the error, which +// may be an *exec.ExitError. +func RunErr(cmdargs ...any) error { cmdline := str.StringList(cmdargs...) if cfg.BuildN || cfg.BuildX { fmt.Printf("%s\n", strings.Join(cmdline, " ")) if cfg.BuildN { - return + return nil } } cmd := exec.Command(cmdline[0], cmdline[1:]...) cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr - if err := cmd.Run(); err != nil { - Errorf("%v", err) - } + return cmd.Run() } // RunStdin is like run but connects Stdin. It retries if it encounters an ETXTBSY. diff --git a/src/cmd/go/internal/doc/doc.go b/src/cmd/go/internal/doc/doc.go index 4156284d1d..7dfa652e15 100644 --- a/src/cmd/go/internal/doc/doc.go +++ b/src/cmd/go/internal/doc/doc.go @@ -9,6 +9,9 @@ import ( "cmd/go/internal/base" "cmd/go/internal/cfg" "context" + "errors" + "os" + "os/exec" "path/filepath" ) @@ -131,5 +134,13 @@ Flags: } func runDoc(ctx context.Context, cmd *base.Command, args []string) { - base.Run(cfg.BuildToolexec, filepath.Join(cfg.GOROOTbin, "go"), "tool", "doc", args) + base.StartSigHandlers() + err := base.RunErr(cfg.BuildToolexec, filepath.Join(cfg.GOROOTbin, "go"), "tool", "doc", args) + if err != nil { + var ee *exec.ExitError + if errors.As(err, &ee) { + os.Exit(ee.ExitCode()) + } + base.Error(err) + } } From 988eb0d11e8d96e8ca150f401ed82326b276f653 Mon Sep 17 00:00:00 2001 From: Michael Matloob Date: Wed, 21 May 2025 14:47:49 -0400 Subject: [PATCH 56/99] cmd/doc: better support for no network Allow skipping the deprecation check when GOPROXY=off. The deprecation check is an informational message so this doesn't affect the success of the command. We should probably skip the check in more cases when GOPROXY=off but that's a bigger change that should be made in a later release. There are still some deps.dev log messages that we should try to suppress. For #68106 Change-Id: Ifa0efd01ed623bb68c7ad7c5cfb6705547d157a0 Reviewed-on: https://go-review.googlesource.com/c/go/+/675155 LUCI-TryBot-Result: Go LUCI Auto-Submit: Michael Matloob Reviewed-by: Michael Matloob Reviewed-by: Sam Thanawalla --- src/cmd/doc/main.go | 10 +++++++++- src/cmd/go/internal/load/pkg.go | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/cmd/doc/main.go b/src/cmd/doc/main.go index ccd8512006..22db39ecc9 100644 --- a/src/cmd/doc/main.go +++ b/src/cmd/doc/main.go @@ -259,10 +259,18 @@ func doPkgsite(urlPath string) error { signal.Ignore(signalsToIgnore...) const version = "v0.0.0-20250520201116-40659211760d" - cmd := exec.Command("go", "run", "golang.org/x/pkgsite/cmd/internal/doc@"+version, + docatversion := "golang.org/x/pkgsite/cmd/internal/doc@" + version + // First download the module and then try to run with GOPROXY=off to circumvent + // the deprecation check. This will allow the pkgsite command to run if it's + // in the module cache but there's no network. + if _, err := runCmd(nil, "go", "mod", "download", docatversion); err != nil { + return err + } + cmd := exec.Command("go", "run", docatversion, "-gorepo", buildCtx.GOROOT, "-http", addr, "-open", path) + cmd.Env = append(os.Environ(), "GOPROXY=off") cmd.Stdout = os.Stderr cmd.Stderr = os.Stderr diff --git a/src/cmd/go/internal/load/pkg.go b/src/cmd/go/internal/load/pkg.go index e913f98852..34e8c90b2f 100644 --- a/src/cmd/go/internal/load/pkg.go +++ b/src/cmd/go/internal/load/pkg.go @@ -3410,7 +3410,7 @@ func PackagesAndErrorsOutsideModule(ctx context.Context, opts PackageOpts, args } rootMod := qrs[0].Mod deprecation, err := modload.CheckDeprecation(ctx, rootMod) - if err != nil { + if err != nil && !errors.Is(err, fs.ErrNotExist) { return nil, fmt.Errorf("%s: %w", args[0], err) } if deprecation != "" { From c06eef27d754b0c4e112dbff1233e393a8362844 Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Wed, 21 May 2025 16:14:19 -0400 Subject: [PATCH 57/99] runtime: skip TestTimePprof on sanitizers This test asserts there is no external code, but the sanitizer runtimes are external code. Fixes #73783. Cq-Include-Trybots: luci.golang.try:gotip-windows-amd64-race Change-Id: I6a6a636cf93b7950e3ea35e00ec2eaf89911d712 Reviewed-on: https://go-review.googlesource.com/c/go/+/675296 Reviewed-by: Michael Knyszek Auto-Submit: Michael Pratt LUCI-TryBot-Result: Go LUCI --- src/runtime/crash_test.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/runtime/crash_test.go b/src/runtime/crash_test.go index 63c4426806..221a9a95cc 100644 --- a/src/runtime/crash_test.go +++ b/src/runtime/crash_test.go @@ -854,6 +854,9 @@ func TestTimePprof(t *testing.T) { case "aix", "darwin", "illumos", "openbsd", "solaris": t.Skipf("skipping on %s because nanotime calls libc", runtime.GOOS) } + if race.Enabled || asan.Enabled || msan.Enabled { + t.Skip("skipping on sanitizers because the sanitizer runtime is external code") + } // Pass GOTRACEBACK for issue #41120 to try to get more // information on timeout. From e4216d54f58616b862013e2810436462db08b6ed Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Mon, 30 Sep 2024 16:52:50 +0200 Subject: [PATCH 58/99] internal/cpu: add ARM64.HasSHA3 For #69536 Change-Id: If237226ba03e282443b4fc90484968c903198cb1 Reviewed-on: https://go-review.googlesource.com/c/go/+/616715 Reviewed-by: Junyang Shao LUCI-TryBot-Result: Go LUCI Reviewed-by: Roland Shoemaker --- src/internal/cpu/cpu.go | 1 + src/internal/cpu/cpu_arm64.go | 7 +++++++ src/internal/cpu/cpu_arm64_darwin.go | 14 ++++++++++---- src/internal/cpu/cpu_arm64_hwcap.go | 4 ++++ 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/internal/cpu/cpu.go b/src/internal/cpu/cpu.go index e07463f870..760dc0b469 100644 --- a/src/internal/cpu/cpu.go +++ b/src/internal/cpu/cpu.go @@ -70,6 +70,7 @@ var ARM64 struct { HasSHA1 bool HasSHA2 bool HasSHA512 bool + HasSHA3 bool HasCRC32 bool HasATOMICS bool HasCPUID bool diff --git a/src/internal/cpu/cpu_arm64.go b/src/internal/cpu/cpu_arm64.go index 1365991e78..7709966d57 100644 --- a/src/internal/cpu/cpu_arm64.go +++ b/src/internal/cpu/cpu_arm64.go @@ -16,6 +16,7 @@ func doinit() { {Name: "sha1", Feature: &ARM64.HasSHA1}, {Name: "sha2", Feature: &ARM64.HasSHA2}, {Name: "sha512", Feature: &ARM64.HasSHA512}, + {Name: "sha3", Feature: &ARM64.HasSHA3}, {Name: "crc32", Feature: &ARM64.HasCRC32}, {Name: "atomics", Feature: &ARM64.HasATOMICS}, {Name: "cpuid", Feature: &ARM64.HasCPUID}, @@ -38,6 +39,7 @@ func extractBits(data uint64, start, end uint) uint { func parseARM64SystemRegisters(isar0, pfr0 uint64) { // ID_AA64ISAR0_EL1 + // https://developer.arm.com/documentation/ddi0601/2025-03/AArch64-Registers/ID-AA64ISAR0-EL1--AArch64-Instruction-Set-Attribute-Register-0 switch extractBits(isar0, 4, 7) { case 1: ARM64.HasAES = true @@ -69,6 +71,11 @@ func parseARM64SystemRegisters(isar0, pfr0 uint64) { ARM64.HasATOMICS = true } + switch extractBits(isar0, 32, 35) { + case 1: + ARM64.HasSHA3 = true + } + switch extractBits(pfr0, 48, 51) { case 1: ARM64.HasDIT = true diff --git a/src/internal/cpu/cpu_arm64_darwin.go b/src/internal/cpu/cpu_arm64_darwin.go index 57cf631e89..28b47d60e8 100644 --- a/src/internal/cpu/cpu_arm64_darwin.go +++ b/src/internal/cpu/cpu_arm64_darwin.go @@ -9,15 +9,21 @@ package cpu import _ "unsafe" // for linkname func osInit() { + // macOS 12 moved these to the hw.optional.arm tree, but as of Go 1.24 we + // still support macOS 11. See [Determine Encryption Capabilities]. + // + // [Determine Encryption Capabilities]: https://developer.apple.com/documentation/kernel/1387446-sysctlbyname/determining_instruction_set_characteristics#3918855 ARM64.HasATOMICS = sysctlEnabled([]byte("hw.optional.armv8_1_atomics\x00")) ARM64.HasCRC32 = sysctlEnabled([]byte("hw.optional.armv8_crc32\x00")) ARM64.HasSHA512 = sysctlEnabled([]byte("hw.optional.armv8_2_sha512\x00")) + ARM64.HasSHA3 = sysctlEnabled([]byte("hw.optional.armv8_2_sha3\x00")) + ARM64.HasDIT = sysctlEnabled([]byte("hw.optional.arm.FEAT_DIT\x00")) - // There are no hw.optional sysctl values for the below features on Mac OS 11.0 - // to detect their supported state dynamically. Assume the CPU features that - // Apple Silicon M1 supports to be available as a minimal set of features - // to all Go programs running on darwin/arm64. + // There are no hw.optional sysctl values for the below features on macOS 11 + // to detect their supported state dynamically (although they are available + // in the hw.optional.arm tree on macOS 12). Assume the CPU features that + // Apple Silicon M1 supports to be available on all future iterations. ARM64.HasAES = true ARM64.HasPMULL = true ARM64.HasSHA1 = true diff --git a/src/internal/cpu/cpu_arm64_hwcap.go b/src/internal/cpu/cpu_arm64_hwcap.go index e6711ae275..b6cc1f4d98 100644 --- a/src/internal/cpu/cpu_arm64_hwcap.go +++ b/src/internal/cpu/cpu_arm64_hwcap.go @@ -22,6 +22,7 @@ import _ "unsafe" // for linkname var HWCap uint // HWCAP bits. These are exposed by Linux. +// See arch/arm64/include/uapi/asm/hwcap.h. const ( hwcap_AES = 1 << 3 hwcap_PMULL = 1 << 4 @@ -30,18 +31,21 @@ const ( hwcap_CRC32 = 1 << 7 hwcap_ATOMICS = 1 << 8 hwcap_CPUID = 1 << 11 + hwcap_SHA3 = 1 << 17 hwcap_SHA512 = 1 << 21 hwcap_DIT = 1 << 24 ) func hwcapInit(os string) { // HWCap was populated by the runtime from the auxiliary vector. + // See https://docs.kernel.org/arch/arm64/elf_hwcaps.html. // Use HWCap information since reading aarch64 system registers // is not supported in user space on older linux kernels. ARM64.HasAES = isSet(HWCap, hwcap_AES) ARM64.HasPMULL = isSet(HWCap, hwcap_PMULL) ARM64.HasSHA1 = isSet(HWCap, hwcap_SHA1) ARM64.HasSHA2 = isSet(HWCap, hwcap_SHA2) + ARM64.HasSHA3 = isSet(HWCap, hwcap_SHA3) ARM64.HasCRC32 = isSet(HWCap, hwcap_CRC32) ARM64.HasCPUID = isSet(HWCap, hwcap_CPUID) ARM64.HasSHA512 = isSet(HWCap, hwcap_SHA512) From 430a3dc4587a9a3f8696d6eb34c8265877022e34 Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Wed, 23 Apr 2025 23:15:51 +0200 Subject: [PATCH 59/99] crypto/internal/cryptotest: test Armv8.2 on darwin/arm64 Fixes #69593 Cq-Include-Trybots: luci.golang.try:gotip-darwin-arm64_15 Change-Id: I6a6a4656302d65b582df582fa12bb72b88b0316d Reviewed-on: https://go-review.googlesource.com/c/go/+/667755 Reviewed-by: David Chase Reviewed-by: Roland Shoemaker LUCI-TryBot-Result: Go LUCI --- src/crypto/internal/cryptotest/implementations.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/crypto/internal/cryptotest/implementations.go b/src/crypto/internal/cryptotest/implementations.go index 3fa7304590..f0ba665403 100644 --- a/src/crypto/internal/cryptotest/implementations.go +++ b/src/crypto/internal/cryptotest/implementations.go @@ -7,6 +7,7 @@ package cryptotest import ( "crypto/internal/boring" "crypto/internal/impl" + "internal/goarch" "internal/goos" "internal/testenv" "testing" @@ -35,15 +36,14 @@ func TestAllImplementations(t *testing.T, pkg string, f func(t *testing.T)) { t.Run(name, f) } else { t.Run(name, func(t *testing.T) { - // Report an error if we're on Linux CI (assumed to be the most - // consistent) and the builder can't test this implementation. - if testenv.Builder() != "" && goos.GOOS == "linux" { + // Report an error if we're on the most capable builder for the + // architecture and the builder can't test this implementation. + flagship := goos.GOOS == "linux" && goarch.GOARCH != "arm64" || + goos.GOOS == "darwin" && goarch.GOARCH == "arm64" + if testenv.Builder() != "" && flagship { if name == "SHA-NI" { t.Skip("known issue, see golang.org/issue/69592") } - if name == "Armv8.2" { - t.Skip("known issue, see golang.org/issue/69593") - } t.Error("builder doesn't support CPU features needed to test this implementation") } else { t.Skip("implementation not supported") From 09f99c02ddd0c2687550b77cc885ed6b7b5476ed Mon Sep 17 00:00:00 2001 From: HowJmay Date: Wed, 23 Apr 2025 22:57:52 +0200 Subject: [PATCH 60/99] crypto/sha3: add SIMD implementation with ARMv8.2 features MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On ARMv8 four SIMD instructions, EOR3, RAX1, XAR, BCAX are added to accelerate sha3 operations. Here the SIMD version of sha3 on ARMv8 is added. fips140: off goos: darwin goarch: arm64 pkg: crypto/sha3 cpu: Apple M2 │ 9e72f5fe60 │ ab93158ba0-dirty │ │ sec/op │ sec/op vs base │ Sha3_512_MTU-8 6.497µ ± 1% 2.988µ ± 0% -54.01% (p=0.002 n=6) Sha3_384_MTU-8 4.639µ ± 5% 2.142µ ± 1% -53.83% (p=0.002 n=6) Sha3_256_MTU-8 3.631µ ± 1% 1.698µ ± 6% -53.24% (p=0.002 n=6) Sha3_224_MTU-8 3.443µ ± 1% 1.602µ ± 1% -53.47% (p=0.002 n=6) Shake128_MTU-8 2.974µ ± 2% 1.392µ ± 1% -53.19% (p=0.002 n=6) Shake256_MTU-8 3.320µ ± 0% 1.537µ ± 2% -53.70% (p=0.002 n=6) Shake256_16x-8 47.26µ ± 1% 27.39µ ± 6% -42.06% (p=0.002 n=6) Shake256_1MiB-8 2.567m ± 1% 1.306m ± 1% -49.12% (p=0.002 n=6) Sha3_512_1MiB-8 4.785m ± 1% 2.397m ± 8% -49.90% (p=0.002 n=6) geomean 23.47µ 11.38µ -51.52% │ 9e72f5fe60 │ ab93158ba0-dirty │ │ B/s │ B/s vs base │ Sha3_512_MTU-8 198.2Mi ± 1% 430.9Mi ± 0% +117.45% (p=0.002 n=6) Sha3_384_MTU-8 277.5Mi ± 5% 601.1Mi ± 1% +116.58% (p=0.002 n=6) Sha3_256_MTU-8 354.6Mi ± 1% 758.2Mi ± 6% +113.85% (p=0.002 n=6) Sha3_224_MTU-8 373.9Mi ± 1% 803.6Mi ± 1% +114.90% (p=0.002 n=6) Shake128_MTU-8 432.9Mi ± 2% 925.2Mi ± 1% +113.70% (p=0.002 n=6) Shake256_MTU-8 387.8Mi ± 0% 837.6Mi ± 2% +115.98% (p=0.002 n=6) Shake256_16x-8 330.6Mi ± 1% 570.7Mi ± 6% +72.61% (p=0.002 n=6) Shake256_1MiB-8 389.5Mi ± 1% 765.5Mi ± 1% +96.53% (p=0.002 n=6) Sha3_512_1MiB-8 209.0Mi ± 1% 417.2Mi ± 8% +99.61% (p=0.002 n=6) geomean 317.7Mi 655.3Mi +106.29% fips140: off goos: darwin goarch: arm64 pkg: crypto/mlkem cpu: Apple M2 │ 9e72f5fe60 │ 257696ed2d-dirty │ │ sec/op │ sec/op vs base │ KeyGen-8 36.97µ ± 1% 29.82µ ± 3% -19.34% (p=0.002 n=6) Encaps-8 51.54µ ± 5% 44.75µ ± 5% -13.17% (p=0.002 n=6) Decaps-8 47.72µ ± 10% 44.73µ ± 1% -6.27% (p=0.002 n=6) RoundTrip/Alice-8 90.47µ ± 2% 79.74µ ± 1% -11.86% (p=0.002 n=6) RoundTrip/Bob-8 52.15µ ± 1% 44.45µ ± 0% -14.76% (p=0.002 n=6) geomean 53.27µ 46.25µ -13.18% Cq-Include-Trybots: luci.golang.try:gotip-darwin-arm64_15 Co-authored-by: Filippo Valsorda Change-Id: I8c1f476a7d59498bb44d09d7a573beaa07b10f53 Reviewed-on: https://go-review.googlesource.com/c/go/+/667675 Reviewed-by: Roland Shoemaker LUCI-TryBot-Result: Go LUCI Reviewed-by: David Chase Reviewed-by: Daniel McCarney --- .../internal/fips140/sha3/sha3_arm64.go | 43 +++++ src/crypto/internal/fips140/sha3/sha3_arm64.s | 164 ++++++++++++++++++ .../internal/fips140/sha3/sha3_noasm.go | 2 +- src/crypto/internal/fips140deps/cpu/cpu.go | 1 + 4 files changed, 209 insertions(+), 1 deletion(-) create mode 100644 src/crypto/internal/fips140/sha3/sha3_arm64.go create mode 100644 src/crypto/internal/fips140/sha3/sha3_arm64.s diff --git a/src/crypto/internal/fips140/sha3/sha3_arm64.go b/src/crypto/internal/fips140/sha3/sha3_arm64.go new file mode 100644 index 0000000000..fab91c02bb --- /dev/null +++ b/src/crypto/internal/fips140/sha3/sha3_arm64.go @@ -0,0 +1,43 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !purego + +package sha3 + +import ( + "crypto/internal/fips140deps/cpu" + "crypto/internal/impl" + "runtime" +) + +// On non-Apple ARM64, the SHA-3 instructions are apparently slower than the +// pure Go implementation. Checking GOOS is a bit blunt, as it also excludes +// Asahi Linux; we might consider checking the MIDR model in the future. +var useSHA3 = cpu.ARM64HasSHA3 && runtime.GOOS == "darwin" + +func init() { + impl.Register("sha3", "Armv8.2", &useSHA3) +} + +//go:noescape +func keccakF1600NEON(a *[200]byte) + +func keccakF1600(a *[200]byte) { + if useSHA3 { + keccakF1600NEON(a) + } else { + keccakF1600Generic(a) + } +} + +func (d *Digest) write(p []byte) (n int, err error) { + return d.writeGeneric(p) +} +func (d *Digest) read(out []byte) (n int, err error) { + return d.readGeneric(out) +} +func (d *Digest) sum(b []byte) []byte { + return d.sumGeneric(b) +} diff --git a/src/crypto/internal/fips140/sha3/sha3_arm64.s b/src/crypto/internal/fips140/sha3/sha3_arm64.s new file mode 100644 index 0000000000..6a2c121e2c --- /dev/null +++ b/src/crypto/internal/fips140/sha3/sha3_arm64.s @@ -0,0 +1,164 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !purego + +#include "textflag.h" + +// func keccakF1600NEON(a *[200]byte) +TEXT ·keccakF1600NEON(SB), $200-8 + MOVD a+0(FP), R0 + MOVD $round_consts<>(SB), R1 + MOVD $24, R2 // counter for loop + + VLD1.P 16(R0), [V0.D1, V1.D1] + VLD1.P 16(R0), [V2.D1, V3.D1] + VLD1.P 16(R0), [V4.D1, V5.D1] + VLD1.P 16(R0), [V6.D1, V7.D1] + VLD1.P 16(R0), [V8.D1, V9.D1] + VLD1.P 16(R0), [V10.D1, V11.D1] + VLD1.P 16(R0), [V12.D1, V13.D1] + VLD1.P 16(R0), [V14.D1, V15.D1] + VLD1.P 16(R0), [V16.D1, V17.D1] + VLD1.P 16(R0), [V18.D1, V19.D1] + VLD1.P 16(R0), [V20.D1, V21.D1] + VLD1.P 16(R0), [V22.D1, V23.D1] + VLD1 (R0), [V24.D1] + + SUB $192, R0, R0 + +loop: + // theta + VEOR3 V20.B16, V15.B16, V10.B16, V25.B16 + VEOR3 V21.B16, V16.B16, V11.B16, V26.B16 + VEOR3 V22.B16, V17.B16, V12.B16, V27.B16 + VEOR3 V23.B16, V18.B16, V13.B16, V28.B16 + VEOR3 V24.B16, V19.B16, V14.B16, V29.B16 + VEOR3 V25.B16, V5.B16, V0.B16, V25.B16 + VEOR3 V26.B16, V6.B16, V1.B16, V26.B16 + VEOR3 V27.B16, V7.B16, V2.B16, V27.B16 + VEOR3 V28.B16, V8.B16, V3.B16, V28.B16 + VEOR3 V29.B16, V9.B16, V4.B16, V29.B16 + + VRAX1 V27.D2, V25.D2, V30.D2 + VRAX1 V28.D2, V26.D2, V31.D2 + VRAX1 V29.D2, V27.D2, V27.D2 + VRAX1 V25.D2, V28.D2, V28.D2 + VRAX1 V26.D2, V29.D2, V29.D2 + + // theta and rho and Pi + VXAR $63, V30.D2, V1.D2, V25.D2 + + VXAR $20, V30.D2, V6.D2, V1.D2 + VXAR $44, V28.D2, V9.D2, V6.D2 + VXAR $3, V31.D2, V22.D2, V9.D2 + VXAR $25, V28.D2, V14.D2, V22.D2 + VXAR $46, V29.D2, V20.D2, V14.D2 + + VXAR $2, V31.D2, V2.D2, V26.D2 + + VXAR $21, V31.D2, V12.D2, V2.D2 + VXAR $39, V27.D2, V13.D2, V12.D2 + VXAR $56, V28.D2, V19.D2, V13.D2 + VXAR $8, V27.D2, V23.D2, V19.D2 + VXAR $23, V29.D2, V15.D2, V23.D2 + + VXAR $37, V28.D2, V4.D2, V15.D2 + + VXAR $50, V28.D2, V24.D2, V28.D2 + VXAR $62, V30.D2, V21.D2, V24.D2 + VXAR $9, V27.D2, V8.D2, V8.D2 + VXAR $19, V30.D2, V16.D2, V4.D2 + VXAR $28, V29.D2, V5.D2, V16.D2 + + VXAR $36, V27.D2, V3.D2, V5.D2 + + VEOR V29.B16, V0.B16, V0.B16 + + VXAR $43, V27.D2, V18.D2, V27.D2 + VXAR $49, V31.D2, V17.D2, V3.D2 + VXAR $54, V30.D2, V11.D2, V30.D2 + VXAR $58, V31.D2, V7.D2, V31.D2 + VXAR $61, V29.D2, V10.D2, V29.D2 + + // chi and iota + VBCAX V8.B16, V22.B16, V26.B16, V20.B16 + VBCAX V22.B16, V23.B16, V8.B16, V21.B16 + VBCAX V23.B16, V24.B16, V22.B16, V22.B16 + VBCAX V24.B16, V26.B16, V23.B16, V23.B16 + VBCAX V26.B16, V8.B16, V24.B16, V24.B16 + + VLD1R.P 8(R1), [V26.D2] + + VBCAX V3.B16, V19.B16, V30.B16, V17.B16 + VBCAX V19.B16, V15.B16, V3.B16, V18.B16 + VBCAX V15.B16, V16.B16, V19.B16, V19.B16 + VBCAX V16.B16, V30.B16, V15.B16, V15.B16 + VBCAX V30.B16, V3.B16, V16.B16, V16.B16 + + VBCAX V31.B16, V12.B16, V25.B16, V10.B16 + VBCAX V12.B16, V13.B16, V31.B16, V11.B16 + VBCAX V13.B16, V14.B16, V12.B16, V12.B16 + VBCAX V14.B16, V25.B16, V13.B16, V13.B16 + VBCAX V25.B16, V31.B16, V14.B16, V14.B16 + + VBCAX V4.B16, V9.B16, V29.B16, V7.B16 + VBCAX V9.B16, V5.B16, V4.B16, V8.B16 + VBCAX V5.B16, V6.B16, V9.B16, V9.B16 + VBCAX V6.B16, V29.B16, V5.B16, V5.B16 + VBCAX V29.B16, V4.B16, V6.B16, V6.B16 + + VBCAX V28.B16, V0.B16, V27.B16, V3.B16 + VBCAX V0.B16, V1.B16, V28.B16, V4.B16 + + VBCAX V1.B16, V2.B16, V0.B16, V0.B16 // iota (chi part) + VEOR V26.B16, V0.B16, V0.B16 // iota + + VBCAX V2.B16, V27.B16, V1.B16, V1.B16 + VBCAX V27.B16, V28.B16, V2.B16, V2.B16 + + SUB $1, R2, R2 + CBNZ R2, loop + + VST1.P [V0.D1, V1.D1], 16(R0) + VST1.P [V2.D1, V3.D1], 16(R0) + VST1.P [V4.D1, V5.D1], 16(R0) + VST1.P [V6.D1, V7.D1], 16(R0) + VST1.P [V8.D1, V9.D1], 16(R0) + VST1.P [V10.D1, V11.D1], 16(R0) + VST1.P [V12.D1, V13.D1], 16(R0) + VST1.P [V14.D1, V15.D1], 16(R0) + VST1.P [V16.D1, V17.D1], 16(R0) + VST1.P [V18.D1, V19.D1], 16(R0) + VST1.P [V20.D1, V21.D1], 16(R0) + VST1.P [V22.D1, V23.D1], 16(R0) + VST1 [V24.D1], (R0) + + RET + +DATA round_consts<>+0x00(SB)/8, $0x0000000000000001 +DATA round_consts<>+0x08(SB)/8, $0x0000000000008082 +DATA round_consts<>+0x10(SB)/8, $0x800000000000808a +DATA round_consts<>+0x18(SB)/8, $0x8000000080008000 +DATA round_consts<>+0x20(SB)/8, $0x000000000000808b +DATA round_consts<>+0x28(SB)/8, $0x0000000080000001 +DATA round_consts<>+0x30(SB)/8, $0x8000000080008081 +DATA round_consts<>+0x38(SB)/8, $0x8000000000008009 +DATA round_consts<>+0x40(SB)/8, $0x000000000000008a +DATA round_consts<>+0x48(SB)/8, $0x0000000000000088 +DATA round_consts<>+0x50(SB)/8, $0x0000000080008009 +DATA round_consts<>+0x58(SB)/8, $0x000000008000000a +DATA round_consts<>+0x60(SB)/8, $0x000000008000808b +DATA round_consts<>+0x68(SB)/8, $0x800000000000008b +DATA round_consts<>+0x70(SB)/8, $0x8000000000008089 +DATA round_consts<>+0x78(SB)/8, $0x8000000000008003 +DATA round_consts<>+0x80(SB)/8, $0x8000000000008002 +DATA round_consts<>+0x88(SB)/8, $0x8000000000000080 +DATA round_consts<>+0x90(SB)/8, $0x000000000000800a +DATA round_consts<>+0x98(SB)/8, $0x800000008000000a +DATA round_consts<>+0xA0(SB)/8, $0x8000000080008081 +DATA round_consts<>+0xA8(SB)/8, $0x8000000000008080 +DATA round_consts<>+0xB0(SB)/8, $0x0000000080000001 +DATA round_consts<>+0xB8(SB)/8, $0x8000000080008008 +GLOBL round_consts<>(SB), NOPTR|RODATA, $192 diff --git a/src/crypto/internal/fips140/sha3/sha3_noasm.go b/src/crypto/internal/fips140/sha3/sha3_noasm.go index 0bcfc73d02..1ce3edfb6f 100644 --- a/src/crypto/internal/fips140/sha3/sha3_noasm.go +++ b/src/crypto/internal/fips140/sha3/sha3_noasm.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build (!amd64 && !s390x) || purego +//go:build (!amd64 && !arm64 && !s390x) || purego package sha3 diff --git a/src/crypto/internal/fips140deps/cpu/cpu.go b/src/crypto/internal/fips140deps/cpu/cpu.go index 311e4f541b..2dfcc1a4d4 100644 --- a/src/crypto/internal/fips140deps/cpu/cpu.go +++ b/src/crypto/internal/fips140deps/cpu/cpu.go @@ -22,6 +22,7 @@ var ( ARM64HasPMULL = cpu.ARM64.HasPMULL ARM64HasSHA2 = cpu.ARM64.HasSHA2 ARM64HasSHA512 = cpu.ARM64.HasSHA512 + ARM64HasSHA3 = cpu.ARM64.HasSHA3 LOONG64HasLSX = cpu.Loong64.HasLSX LOONG64HasLASX = cpu.Loong64.HasLASX From 33d3f603c19f46e6529483230465cd6f420ce23b Mon Sep 17 00:00:00 2001 From: Dmitri Shuralyov Date: Wed, 21 May 2025 13:13:48 -0400 Subject: [PATCH 61/99] cmd/link/internal/ld: use 12.0.0 OS/SDK versions for macOS linking Go 1.25 will require macOS 12 Monterey or later, so macOS 11 will be unsupported. The comment here suggests using a supported macOS version, and that it can be the most recent one. For now, make a minimal change of going from 11.0.0 to 12.0.0 so that the chosen version is a supported one (although not the most recent). However, it looks like even in CL 460476 (where the comment was added) we were staying with the macOS version that matched Go's oldest, so we might not have have recent experience with going beyond that. Update the comment accordingly. For #69839. Change-Id: I90908971b0d5a8235ce77dc6bc9649e86008270a Cq-Include-Trybots: luci.golang.try:gotip-darwin-amd64-longtest,gotip-darwin-arm64-longtest,gotip-darwin-amd64_12,gotip-darwin-amd64_14,gotip-darwin-arm64_12,gotip-darwin-arm64_15 Reviewed-on: https://go-review.googlesource.com/c/go/+/675095 LUCI-TryBot-Result: Go LUCI Reviewed-by: Cherry Mui Auto-Submit: Dmitri Shuralyov Reviewed-by: Dmitri Shuralyov --- src/cmd/link/internal/ld/macho.go | 6 ++++-- src/cmd/link/link_test.go | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/cmd/link/internal/ld/macho.go b/src/cmd/link/internal/ld/macho.go index f55f342d6e..431dad9d6b 100644 --- a/src/cmd/link/internal/ld/macho.go +++ b/src/cmd/link/internal/ld/macho.go @@ -430,8 +430,10 @@ func (ctxt *Link) domacho() { // This must be fairly recent for Apple signing (go.dev/issue/30488). // Having too old a version here was also implicated in some problems // calling into macOS libraries (go.dev/issue/56784). - // In general this can be the most recent supported macOS version. - version = 11<<16 | 0<<8 | 0<<0 // 11.0.0 + // CL 460476 noted that in general this can be the most recent supported + // macOS version, but we haven't tested if going higher than Go's oldest + // supported macOS version could cause new problems. + version = 12<<16 | 0<<8 | 0<<0 // 12.0.0 } ml := newMachoLoad(ctxt.Arch, imacho.LC_BUILD_VERSION, 4) ml.data[0] = uint32(machoPlatform) diff --git a/src/cmd/link/link_test.go b/src/cmd/link/link_test.go index c3614c73f0..7c3ca427ed 100644 --- a/src/cmd/link/link_test.go +++ b/src/cmd/link/link_test.go @@ -397,8 +397,8 @@ func TestMachOBuildVersion(t *testing.T) { found := false checkMin := func(ver uint32) { major, minor, patch := (ver>>16)&0xff, (ver>>8)&0xff, (ver>>0)&0xff - if major < 11 { - t.Errorf("LC_BUILD_VERSION version %d.%d.%d < 11.0.0", major, minor, patch) + if major < 12 { + t.Errorf("LC_BUILD_VERSION version %d.%d.%d < 12.0.0", major, minor, patch) } } for _, cmd := range exem.Loads { From e90acc814de247f58330be1d8ba3b11c78c96077 Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Sat, 15 Mar 2025 12:12:22 +0100 Subject: [PATCH 62/99] crypto/tls: don't advertise TLS 1.2-only sigAlgs in TLS 1.3 If a ClientHello only supports TLS 1.3, or if a CertificateRequest is sent after selecting TLS 1.3, we should not advertise TLS 1.2-only signature_algorithms like PKCS#1 v1.5 or SHA-1. However, since crypto/x509 still supports PKCS#1 v1.5, and a direct CertPool match might not care about the signature in the certificate at all, start sending a separate signature_algorithms_cert extension to indicate support for PKCS#1 v1.5 and SHA-1 in certificates. We were already correctly rejecting these algorithms if the peer selected them in a TLS 1.3 connection. Updates #72883 Change-Id: I6a6a4656ab60e1b7fb20fdedc32604dc156953ae Reviewed-on: https://go-review.googlesource.com/c/go/+/658215 Reviewed-by: Roland Shoemaker Reviewed-by: David Chase Auto-Submit: Filippo Valsorda LUCI-TryBot-Result: Go LUCI Reviewed-by: Daniel McCarney --- src/crypto/tls/auth.go | 2 +- src/crypto/tls/auth_test.go | 2 +- src/crypto/tls/common.go | 33 +- src/crypto/tls/defaults.go | 58 +- src/crypto/tls/defaults_boring.go | 2 +- src/crypto/tls/defaults_fips140.go | 2 +- src/crypto/tls/fips140_test.go | 4 +- src/crypto/tls/handshake_client.go | 13 +- src/crypto/tls/handshake_client_tls13.go | 7 +- src/crypto/tls/handshake_messages_test.go | 8 +- src/crypto/tls/handshake_server.go | 2 +- src/crypto/tls/handshake_server_tls13.go | 10 +- src/crypto/tls/quic_test.go | 2 +- .../Client-TLSv10-ClientCert-ECDSA-ECDSA | 104 ++-- .../Client-TLSv10-ClientCert-ECDSA-RSA | 96 +-- .../Client-TLSv10-ClientCert-RSA-ECDSA | 96 +-- .../testdata/Client-TLSv10-ClientCert-RSA-RSA | 96 +-- .../testdata/Client-TLSv10-ECDHE-ECDSA-AES | 82 +-- .../tls/testdata/Client-TLSv10-ECDHE-RSA-AES | 78 +-- .../Client-TLSv10-ExportKeyingMaterial | 78 +-- src/crypto/tls/testdata/Client-TLSv10-RSA-RC4 | 46 +- .../testdata/Client-TLSv11-ECDHE-ECDSA-AES | 82 +-- .../tls/testdata/Client-TLSv11-ECDHE-RSA-AES | 78 +-- src/crypto/tls/testdata/Client-TLSv11-RSA-RC4 | 46 +- .../testdata/Client-TLSv12-AES128-GCM-SHA256 | 50 +- .../tls/testdata/Client-TLSv12-AES128-SHA256 | 64 +- .../testdata/Client-TLSv12-AES256-GCM-SHA384 | 50 +- src/crypto/tls/testdata/Client-TLSv12-ALPN | 70 +-- .../Client-TLSv12-ClientCert-ECDSA-ECDSA | 96 +-- .../Client-TLSv12-ClientCert-ECDSA-RSA | 96 +-- .../testdata/Client-TLSv12-ClientCert-Ed25519 | 80 +-- ...nt-TLSv12-ClientCert-RSA-AES256-GCM-SHA384 | 92 +-- .../Client-TLSv12-ClientCert-RSA-ECDSA | 108 ++-- .../testdata/Client-TLSv12-ClientCert-RSA-RSA | 92 +-- .../Client-TLSv12-ClientCert-RSA-RSAPKCS1v15 | 92 +-- .../Client-TLSv12-ClientCert-RSA-RSAPSS | 90 +-- .../testdata/Client-TLSv12-ECDHE-ECDSA-AES | 78 +-- .../Client-TLSv12-ECDHE-ECDSA-AES-GCM | 72 +-- .../Client-TLSv12-ECDHE-ECDSA-AES128-SHA256 | 90 +-- ...lient-TLSv12-ECDHE-ECDSA-AES256-GCM-SHA384 | 76 +-- ...lient-TLSv12-ECDHE-ECDSA-CHACHA20-POLY1305 | 68 ++- .../tls/testdata/Client-TLSv12-ECDHE-RSA-AES | 80 +-- .../Client-TLSv12-ECDHE-RSA-AES128-SHA256 | 88 +-- .../Client-TLSv12-ECDHE-RSA-CHACHA20-POLY1305 | 68 ++- src/crypto/tls/testdata/Client-TLSv12-Ed25519 | 60 +- .../Client-TLSv12-ExportKeyingMaterial | 70 +-- .../tls/testdata/Client-TLSv12-P256-ECDHE | 80 +-- src/crypto/tls/testdata/Client-TLSv12-RSA-RC4 | 46 +- .../testdata/Client-TLSv12-RenegotiateOnce | 370 ++++++------ .../testdata/Client-TLSv12-RenegotiateTwice | 564 +++++++++--------- .../Client-TLSv12-RenegotiateTwiceRejected | 376 ++++++------ .../Client-TLSv12-RenegotiationRejected | 76 +-- src/crypto/tls/testdata/Client-TLSv12-SCT | 68 ++- .../tls/testdata/Client-TLSv12-X25519-ECDHE | 72 +-- .../tls/testdata/Client-TLSv13-AES128-SHA256 | 154 ++--- .../tls/testdata/Client-TLSv13-AES256-SHA384 | 158 ++--- src/crypto/tls/testdata/Client-TLSv13-ALPN | 158 ++--- .../testdata/Client-TLSv13-CHACHA20-SHA256 | 154 ++--- .../Client-TLSv13-ClientCert-ECDSA-RSA | 252 ++++---- .../testdata/Client-TLSv13-ClientCert-Ed25519 | 218 +++---- .../Client-TLSv13-ClientCert-RSA-ECDSA | 242 ++++---- .../Client-TLSv13-ClientCert-RSA-RSAPSS | 260 ++++---- src/crypto/tls/testdata/Client-TLSv13-ECDSA | 146 ++--- src/crypto/tls/testdata/Client-TLSv13-Ed25519 | 110 ++-- .../Client-TLSv13-ExportKeyingMaterial | 154 ++--- .../testdata/Client-TLSv13-HelloRetryRequest | 172 +++--- .../tls/testdata/Client-TLSv13-KeyUpdate | 170 +++--- .../tls/testdata/Client-TLSv13-P256-ECDHE | 158 ++--- .../tls/testdata/Client-TLSv13-X25519-ECDHE | 152 ++--- ...er-TLSv13-ClientAuthRequestedAndECDSAGiven | 334 +++++------ ...-TLSv13-ClientAuthRequestedAndEd25519Given | 272 ++++----- .../Server-TLSv13-ClientAuthRequestedAndGiven | 329 +++++----- .../Server-TLSv13-ClientAuthRequestedNotGiven | 180 +++--- 73 files changed, 4187 insertions(+), 3995 deletions(-) diff --git a/src/crypto/tls/auth.go b/src/crypto/tls/auth.go index 81a85851ee..7f072204a7 100644 --- a/src/crypto/tls/auth.go +++ b/src/crypto/tls/auth.go @@ -220,7 +220,7 @@ func signatureSchemesForCertificate(version uint16, cert *Certificate) []Signatu // Filter out any unsupported signature algorithms, for example due to // FIPS 140-3 policy, or any downstream changes to defaults.go. - supportedAlgs := supportedSignatureAlgorithms() + supportedAlgs := supportedSignatureAlgorithms(version) sigAlgs = slices.DeleteFunc(sigAlgs, func(sigAlg SignatureScheme) bool { return !isSupportedSignatureAlgorithm(sigAlg, supportedAlgs) }) diff --git a/src/crypto/tls/auth_test.go b/src/crypto/tls/auth_test.go index 9036f4c8d2..616d9bab78 100644 --- a/src/crypto/tls/auth_test.go +++ b/src/crypto/tls/auth_test.go @@ -159,7 +159,7 @@ func TestLegacyTypeAndHash(t *testing.T) { // TestSupportedSignatureAlgorithms checks that all supportedSignatureAlgorithms // have valid type and hash information. func TestSupportedSignatureAlgorithms(t *testing.T) { - for _, sigAlg := range supportedSignatureAlgorithms() { + for _, sigAlg := range supportedSignatureAlgorithms(VersionTLS12) { sigType, hash, err := typeAndHashFromSignatureScheme(sigAlg) if err != nil { t.Errorf("%v: unexpected error: %v", sigAlg, err) diff --git a/src/crypto/tls/common.go b/src/crypto/tls/common.go index 1aaad7aba1..6a1c53fe9c 100644 --- a/src/crypto/tls/common.go +++ b/src/crypto/tls/common.go @@ -1163,6 +1163,8 @@ const roleServer = false var tls10server = godebug.New("tls10server") +// supportedVersions returns the list of supported TLS versions, sorted from +// highest to lowest (and hence also in preference order). func (c *Config) supportedVersions(isClient bool) []uint16 { versions := make([]uint16, 0, len(supportedVersions)) for _, v := range supportedVersions { @@ -1682,12 +1684,35 @@ func unexpectedMessageError(wanted, got any) error { return fmt.Errorf("tls: received unexpected handshake message of type %T when waiting for %T", got, wanted) } -// supportedSignatureAlgorithms returns the supported signature algorithms. -func supportedSignatureAlgorithms() []SignatureScheme { +// supportedSignatureAlgorithms returns the supported signature algorithms for +// the given minimum TLS version, to advertise in ClientHello and +// CertificateRequest messages. +func supportedSignatureAlgorithms(minVers uint16) []SignatureScheme { + sigAlgs := defaultSupportedSignatureAlgorithms() if fips140tls.Required() { - return allowedSupportedSignatureAlgorithmsFIPS + sigAlgs = slices.DeleteFunc(sigAlgs, func(s SignatureScheme) bool { + return !slices.Contains(allowedSignatureAlgorithmsFIPS, s) + }) } - return defaultSupportedSignatureAlgorithms + if minVers > VersionTLS12 { + sigAlgs = slices.DeleteFunc(sigAlgs, func(s SignatureScheme) bool { + sigType, sigHash, _ := typeAndHashFromSignatureScheme(s) + return sigType == signaturePKCS1v15 || sigHash == crypto.SHA1 + }) + } + return sigAlgs +} + +// supportedSignatureAlgorithmsCert returns the supported algorithms for +// signatures in certificates. +func supportedSignatureAlgorithmsCert() []SignatureScheme { + sigAlgs := defaultSupportedSignatureAlgorithmsCert() + if fips140tls.Required() { + sigAlgs = slices.DeleteFunc(sigAlgs, func(s SignatureScheme) bool { + return !slices.Contains(allowedSignatureAlgorithmsFIPS, s) + }) + } + return sigAlgs } func isSupportedSignatureAlgorithm(sigAlg SignatureScheme, supportedSignatureAlgorithms []SignatureScheme) bool { diff --git a/src/crypto/tls/defaults.go b/src/crypto/tls/defaults.go index a3f43eb87e..07986294ec 100644 --- a/src/crypto/tls/defaults.go +++ b/src/crypto/tls/defaults.go @@ -24,23 +24,51 @@ func defaultCurvePreferences() []CurveID { return []CurveID{X25519MLKEM768, X25519, CurveP256, CurveP384, CurveP521} } -// defaultSupportedSignatureAlgorithms contains the signature and hash algorithms that -// the code advertises as supported in a TLS 1.2+ ClientHello and in a TLS 1.2+ +// defaultSupportedSignatureAlgorithms returns the signature and hash algorithms that +// the code advertises and supports in a TLS 1.2+ ClientHello and in a TLS 1.2+ // CertificateRequest. The two fields are merged to match with TLS 1.3. // Note that in TLS 1.2, the ECDSA algorithms are not constrained to P-256, etc. -var defaultSupportedSignatureAlgorithms = []SignatureScheme{ - PSSWithSHA256, - ECDSAWithP256AndSHA256, - Ed25519, - PSSWithSHA384, - PSSWithSHA512, - PKCS1WithSHA256, - PKCS1WithSHA384, - PKCS1WithSHA512, - ECDSAWithP384AndSHA384, - ECDSAWithP521AndSHA512, - PKCS1WithSHA1, - ECDSAWithSHA1, +func defaultSupportedSignatureAlgorithms() []SignatureScheme { + return []SignatureScheme{ + PSSWithSHA256, + ECDSAWithP256AndSHA256, + Ed25519, + PSSWithSHA384, + PSSWithSHA512, + PKCS1WithSHA256, + PKCS1WithSHA384, + PKCS1WithSHA512, + ECDSAWithP384AndSHA384, + ECDSAWithP521AndSHA512, + PKCS1WithSHA1, + ECDSAWithSHA1, + } +} + +// defaultSupportedSignatureAlgorithmsCert returns the signature algorithms that +// the code advertises as supported for signatures in certificates. +// +// We include all algorithms, including SHA-1 and PKCS#1 v1.5, because it's more +// likely that something on our side will be willing to accept a *-with-SHA1 +// certificate (e.g. with a custom VerifyConnection or by a direct match with +// the CertPool), than that the peer would have a better certificate but is just +// choosing not to send it. crypto/x509 will refuse to verify important SHA-1 +// signatures anyway. +func defaultSupportedSignatureAlgorithmsCert() []SignatureScheme { + return []SignatureScheme{ + PSSWithSHA256, + ECDSAWithP256AndSHA256, + Ed25519, + PSSWithSHA384, + PSSWithSHA512, + PKCS1WithSHA256, + PKCS1WithSHA384, + PKCS1WithSHA512, + ECDSAWithP384AndSHA384, + ECDSAWithP521AndSHA512, + PKCS1WithSHA1, + ECDSAWithSHA1, + } } var tlsrsakex = godebug.New("tlsrsakex") diff --git a/src/crypto/tls/defaults_boring.go b/src/crypto/tls/defaults_boring.go index 96406acfca..e88f05cc50 100644 --- a/src/crypto/tls/defaults_boring.go +++ b/src/crypto/tls/defaults_boring.go @@ -31,7 +31,7 @@ var ( CurveP384, CurveP521, } - allowedSupportedSignatureAlgorithmsFIPS = []SignatureScheme{ + allowedSignatureAlgorithmsFIPS = []SignatureScheme{ PSSWithSHA256, PSSWithSHA384, PSSWithSHA512, diff --git a/src/crypto/tls/defaults_fips140.go b/src/crypto/tls/defaults_fips140.go index 472bb807f0..00176795eb 100644 --- a/src/crypto/tls/defaults_fips140.go +++ b/src/crypto/tls/defaults_fips140.go @@ -36,7 +36,7 @@ var ( CurveP384, CurveP521, } - allowedSupportedSignatureAlgorithmsFIPS = []SignatureScheme{ + allowedSignatureAlgorithmsFIPS = []SignatureScheme{ PSSWithSHA256, ECDSAWithP256AndSHA256, Ed25519, diff --git a/src/crypto/tls/fips140_test.go b/src/crypto/tls/fips140_test.go index c22ad485cc..46d3076864 100644 --- a/src/crypto/tls/fips140_test.go +++ b/src/crypto/tls/fips140_test.go @@ -195,7 +195,7 @@ func TestFIPSServerCipherSuites(t *testing.T) { keyShares: []keyShare{generateKeyShare(CurveP256)}, supportedPoints: []uint8{pointFormatUncompressed}, supportedVersions: []uint16{VersionTLS12}, - supportedSignatureAlgorithms: allowedSupportedSignatureAlgorithmsFIPS, + supportedSignatureAlgorithms: allowedSignatureAlgorithmsFIPS, } if isTLS13CipherSuite(id) { clientHello.supportedVersions = []uint16{VersionTLS13} @@ -265,7 +265,7 @@ func TestFIPSServerSignatureAndHash(t *testing.T) { testingOnlyForceClientHelloSignatureAlgorithms = nil }() - for _, sigHash := range defaultSupportedSignatureAlgorithms { + for _, sigHash := range defaultSupportedSignatureAlgorithms() { t.Run(fmt.Sprintf("%v", sigHash), func(t *testing.T) { serverConfig := testConfig.Clone() serverConfig.Certificates = make([]Certificate, 1) diff --git a/src/crypto/tls/handshake_client.go b/src/crypto/tls/handshake_client.go index 55790a11b6..619b47afbf 100644 --- a/src/crypto/tls/handshake_client.go +++ b/src/crypto/tls/handshake_client.go @@ -66,7 +66,10 @@ func (c *Conn) makeClientHello() (*clientHelloMsg, *keySharePrivateKeys, *echCli if len(supportedVersions) == 0 { return nil, nil, nil, errors.New("tls: no supported versions satisfy MinVersion and MaxVersion") } - maxVersion := config.maxSupportedVersion(roleClient) + // Since supportedVersions is sorted in descending order, the first element + // is the maximum version and the last element is the minimum version. + maxVersion := supportedVersions[0] + minVersion := supportedVersions[len(supportedVersions)-1] hello := &clientHelloMsg{ vers: maxVersion, @@ -120,18 +123,20 @@ func (c *Conn) makeClientHello() (*clientHelloMsg, *keySharePrivateKeys, *echCli } if maxVersion >= VersionTLS12 { - hello.supportedSignatureAlgorithms = supportedSignatureAlgorithms() + hello.supportedSignatureAlgorithms = supportedSignatureAlgorithms(minVersion) + hello.supportedSignatureAlgorithmsCert = supportedSignatureAlgorithmsCert() } if testingOnlyForceClientHelloSignatureAlgorithms != nil { hello.supportedSignatureAlgorithms = testingOnlyForceClientHelloSignatureAlgorithms } var keyShareKeys *keySharePrivateKeys - if hello.supportedVersions[0] == VersionTLS13 { + if maxVersion >= VersionTLS13 { // Reset the list of ciphers when the client only supports TLS 1.3. - if len(hello.supportedVersions) == 1 { + if minVersion >= VersionTLS13 { hello.cipherSuites = nil } + if fips140tls.Required() { hello.cipherSuites = append(hello.cipherSuites, allowedCipherSuitesTLS13FIPS...) } else if hasAESGCMHardwareSupport { diff --git a/src/crypto/tls/handshake_client_tls13.go b/src/crypto/tls/handshake_client_tls13.go index 461a0e6962..bf3cab97b8 100644 --- a/src/crypto/tls/handshake_client_tls13.go +++ b/src/crypto/tls/handshake_client_tls13.go @@ -675,7 +675,9 @@ func (hs *clientHandshakeStateTLS13) readServerCertificate() error { } // See RFC 8446, Section 4.4.3. - if !isSupportedSignatureAlgorithm(certVerify.signatureAlgorithm, supportedSignatureAlgorithms()) { + // We don't use hs.hello.supportedSignatureAlgorithms because it might + // include PKCS#1 v1.5 and SHA-1 if the ClientHello also supported TLS 1.2. + if !isSupportedSignatureAlgorithm(certVerify.signatureAlgorithm, supportedSignatureAlgorithms(c.vers)) { c.sendAlert(alertIllegalParameter) return errors.New("tls: certificate used with invalid signature algorithm") } @@ -684,8 +686,7 @@ func (hs *clientHandshakeStateTLS13) readServerCertificate() error { return c.sendAlert(alertInternalError) } if sigType == signaturePKCS1v15 || sigHash == crypto.SHA1 { - c.sendAlert(alertIllegalParameter) - return errors.New("tls: certificate used with invalid signature algorithm") + return c.sendAlert(alertInternalError) } signed := signedMessage(sigHash, serverSignatureContext, hs.transcript) if err := verifyHandshakeSignature(sigType, c.peerCertificates[0].PublicKey, diff --git a/src/crypto/tls/handshake_messages_test.go b/src/crypto/tls/handshake_messages_test.go index 448bc31d3a..fa81a72b0d 100644 --- a/src/crypto/tls/handshake_messages_test.go +++ b/src/crypto/tls/handshake_messages_test.go @@ -179,10 +179,10 @@ func (*clientHelloMsg) Generate(rand *rand.Rand, size int) reflect.Value { } } if rand.Intn(10) > 5 { - m.supportedSignatureAlgorithms = supportedSignatureAlgorithms() + m.supportedSignatureAlgorithms = supportedSignatureAlgorithms(VersionTLS12) } if rand.Intn(10) > 5 { - m.supportedSignatureAlgorithmsCert = supportedSignatureAlgorithms() + m.supportedSignatureAlgorithmsCert = supportedSignatureAlgorithms(VersionTLS12) } for i := 0; i < rand.Intn(5); i++ { m.alpnProtocols = append(m.alpnProtocols, randomString(rand.Intn(20)+1, rand)) @@ -473,10 +473,10 @@ func (*certificateRequestMsgTLS13) Generate(rand *rand.Rand, size int) reflect.V m.scts = true } if rand.Intn(10) > 5 { - m.supportedSignatureAlgorithms = supportedSignatureAlgorithms() + m.supportedSignatureAlgorithms = supportedSignatureAlgorithms(VersionTLS12) } if rand.Intn(10) > 5 { - m.supportedSignatureAlgorithmsCert = supportedSignatureAlgorithms() + m.supportedSignatureAlgorithmsCert = supportedSignatureAlgorithms(VersionTLS12) } if rand.Intn(10) > 5 { m.certificateAuthorities = make([][]byte, 3) diff --git a/src/crypto/tls/handshake_server.go b/src/crypto/tls/handshake_server.go index d7fadcbd59..522d3b62c2 100644 --- a/src/crypto/tls/handshake_server.go +++ b/src/crypto/tls/handshake_server.go @@ -650,7 +650,7 @@ func (hs *serverHandshakeState) doFullHandshake() error { } if c.vers >= VersionTLS12 { certReq.hasSignatureAlgorithm = true - certReq.supportedSignatureAlgorithms = supportedSignatureAlgorithms() + certReq.supportedSignatureAlgorithms = supportedSignatureAlgorithms(c.vers) } // An empty list of certificateAuthorities signals to diff --git a/src/crypto/tls/handshake_server_tls13.go b/src/crypto/tls/handshake_server_tls13.go index 54b3cac810..090ff67fb7 100644 --- a/src/crypto/tls/handshake_server_tls13.go +++ b/src/crypto/tls/handshake_server_tls13.go @@ -844,7 +844,8 @@ func (hs *serverHandshakeStateTLS13) sendServerCertificate() error { certReq := new(certificateRequestMsgTLS13) certReq.ocspStapling = true certReq.scts = true - certReq.supportedSignatureAlgorithms = supportedSignatureAlgorithms() + certReq.supportedSignatureAlgorithms = supportedSignatureAlgorithms(c.vers) + certReq.supportedSignatureAlgorithmsCert = supportedSignatureAlgorithmsCert() if c.config.ClientCAs != nil { certReq.certificateAuthorities = c.config.ClientCAs.Subjects() } @@ -1095,7 +1096,9 @@ func (hs *serverHandshakeStateTLS13) readClientCertificate() error { } // See RFC 8446, Section 4.4.3. - if !isSupportedSignatureAlgorithm(certVerify.signatureAlgorithm, supportedSignatureAlgorithms()) { + // We don't use certReq.supportedSignatureAlgorithms because it would + // require keeping the certificateRequestMsgTLS13 around in the hs. + if !isSupportedSignatureAlgorithm(certVerify.signatureAlgorithm, supportedSignatureAlgorithms(c.vers)) { c.sendAlert(alertIllegalParameter) return errors.New("tls: client certificate used with invalid signature algorithm") } @@ -1104,8 +1107,7 @@ func (hs *serverHandshakeStateTLS13) readClientCertificate() error { return c.sendAlert(alertInternalError) } if sigType == signaturePKCS1v15 || sigHash == crypto.SHA1 { - c.sendAlert(alertIllegalParameter) - return errors.New("tls: client certificate used with invalid signature algorithm") + return c.sendAlert(alertInternalError) } signed := signedMessage(sigHash, clientSignatureContext, hs.transcript) if err := verifyHandshakeSignature(sigType, c.peerCertificates[0].PublicKey, diff --git a/src/crypto/tls/quic_test.go b/src/crypto/tls/quic_test.go index 1bb2e55bdd..ba75101dd5 100644 --- a/src/crypto/tls/quic_test.go +++ b/src/crypto/tls/quic_test.go @@ -278,7 +278,7 @@ func TestQUICPostHandshakeClientAuthentication(t *testing.T) { certReq := new(certificateRequestMsgTLS13) certReq.ocspStapling = true certReq.scts = true - certReq.supportedSignatureAlgorithms = supportedSignatureAlgorithms() + certReq.supportedSignatureAlgorithms = supportedSignatureAlgorithms(VersionTLS13) certReqBytes, err := certReq.marshal() if err != nil { t.Fatal(err) diff --git a/src/crypto/tls/testdata/Client-TLSv10-ClientCert-ECDSA-ECDSA b/src/crypto/tls/testdata/Client-TLSv10-ClientCert-ECDSA-ECDSA index b79aec6300..1a97323780 100644 --- a/src/crypto/tls/testdata/Client-TLSv10-ClientCert-ECDSA-ECDSA +++ b/src/crypto/tls/testdata/Client-TLSv10-ClientCert-ECDSA-ECDSA @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 01 00 5d 02 00 00 59 03 01 58 ee cb 2c 2e |....]...Y..X..,.| -00000010 24 e7 e4 50 2b 4b 9c 0f ab f5 79 c1 12 b6 89 e5 |$..P+K....y.....| -00000020 83 41 06 cb 45 f6 66 e9 e1 d2 fe 20 95 fd 7f 15 |.A..E.f.... ....| -00000030 44 4e 44 18 9b fc 16 a7 8a a4 d9 f7 ca 49 85 e8 |DND..........I..| -00000040 00 ce 02 26 38 38 1b 8d 6d 16 f2 b8 c0 09 00 00 |...&88..m.......| +00000000 16 03 01 00 5d 02 00 00 59 03 01 5f db 69 f3 84 |....]...Y.._.i..| +00000010 2a 34 27 ec 75 af b4 38 e7 d4 ec 19 70 1a 17 0e |*4'.u..8....p...| +00000020 4d 94 8f 93 b7 88 ba cf 60 be e3 20 10 53 38 8a |M.......`.. .S8.| +00000030 85 c2 1b 7d e3 21 e2 a8 6b 9f 34 dc c1 a0 38 3e |...}.!..k.4...8>| +00000040 66 81 bb c4 1c b8 c5 70 ce 28 81 bf c0 09 00 00 |f......p.(......| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 01 02 0e 0b 00 02 0a 00 02 07 00 02 |................| 00000070 04 30 82 02 00 30 82 01 62 02 09 00 b8 bf 2d 47 |.0...0..b.....-G| @@ -56,20 +58,20 @@ 00000240 8c 25 c1 33 13 83 0d 94 06 bb d4 37 7a f6 ec 7a |.%.3.......7z..z| 00000250 c9 86 2e dd d7 11 69 7f 85 7c 56 de fb 31 78 2b |......i..|V..1x+| 00000260 e4 c7 78 0d ae cb be 9e 4e 36 24 31 7b 6a 0f 39 |..x.....N6$1{j.9| -00000270 95 12 07 8f 2a 16 03 01 00 b5 0c 00 00 b1 03 00 |....*...........| -00000280 1d 20 b2 d4 b5 f1 3f 61 7d 07 30 8b fd 17 76 41 |. ....?a}.0...vA| -00000290 12 c5 e1 25 f1 e9 ad 68 26 55 4b f5 60 16 b0 44 |...%...h&UK.`..D| -000002a0 90 7a 00 8b 30 81 88 02 42 01 26 8b c1 0d 38 f2 |.z..0...B.&...8.| -000002b0 0f 22 de fd 81 53 5b 5a 87 b6 57 23 33 22 06 8f |."...S[Z..W#3"..| -000002c0 8b 59 f1 70 85 46 41 f2 b7 0c 80 77 df 40 08 77 |.Y.p.FA....w.@.w| -000002d0 e1 b8 21 7f 55 77 c7 b7 ef ef b5 31 ae a0 22 a8 |..!.Uw.....1..".| -000002e0 d3 e0 67 e8 67 bc a9 cb 03 47 76 02 42 00 f4 7a |..g.g....Gv.B..z| -000002f0 eb 2f d0 82 d7 06 75 35 e4 61 fb cf 27 93 95 29 |./....u5.a..'..)| -00000300 6e 2c b5 d4 01 45 5b b6 d9 72 e9 f9 13 a6 5f bd |n,...E[..r...._.| -00000310 24 76 3b 8e 48 7a ce 4f f5 c2 77 75 66 2d 18 6d |$v;.Hz.O..wuf-.m| -00000320 7d 9e c7 95 0c fe 0b 80 15 67 b2 f2 f6 5a dd 16 |}........g...Z..| -00000330 03 01 00 0a 0d 00 00 06 03 01 02 40 00 00 16 03 |...........@....| -00000340 01 00 04 0e 00 00 00 |.......| +00000270 95 12 07 8f 2a 16 03 01 00 b4 0c 00 00 b0 03 00 |....*...........| +00000280 1d 20 07 a5 80 41 74 22 47 af 5d 75 5e ae bd eb |. ...At"G.]u^...| +00000290 20 93 4c d3 d1 c6 d0 4b f8 68 f4 58 fc 88 ca 2a | .L....K.h.X...*| +000002a0 8b 08 00 8a 30 81 87 02 41 68 37 4f 22 15 13 23 |....0...Ah7O"..#| +000002b0 1b 03 6b f2 e1 8b bf 2a 88 4b 14 b3 85 58 ae 5a |..k....*.K...X.Z| +000002c0 11 14 9a a3 24 77 c6 a3 a2 8c 12 ae 5c 78 ec 26 |....$w......\x.&| +000002d0 24 49 b0 57 30 4e 46 71 5b a8 c4 3f 26 09 85 14 |$I.W0NFq[..?&...| +000002e0 48 3a 8c 4b bf c9 c0 24 1b c1 02 42 01 e1 92 35 |H:.K...$...B...5| +000002f0 a7 1f 8e ae 3d 3d 0d 89 cc 94 a9 e5 1a 27 6b c1 |....==.......'k.| +00000300 89 f8 8a 4c ad 8e 84 6f 65 e9 19 ce 99 73 10 4e |...L...oe....s.N| +00000310 61 2a 31 19 60 bd ac 37 20 9f 54 90 a5 e2 3a 79 |a*1.`..7 .T...:y| +00000320 98 a4 1a b4 30 2b 9f 08 86 41 ac f1 4e d7 16 03 |....0+...A..N...| +00000330 01 00 0a 0d 00 00 06 03 01 02 40 00 00 16 03 01 |..........@.....| +00000340 00 04 0e 00 00 00 |......| >>> Flow 3 (client to server) 00000000 16 03 01 02 0a 0b 00 02 06 00 02 03 00 02 00 30 |...............0| 00000010 82 01 fc 30 82 01 5e 02 09 00 9a 30 84 6c 26 35 |...0..^....0.l&5| @@ -106,30 +108,30 @@ 00000200 e4 fa cc b1 8a ce e2 23 a0 87 f0 e1 67 51 eb 16 |.......#....gQ..| 00000210 03 01 00 25 10 00 00 21 20 2f e5 7d a3 47 cd 62 |...%...! /.}.G.b| 00000220 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 cf |C.(.._.).0......| -00000230 c2 ed 90 99 5f 58 cb 3b 74 16 03 01 00 91 0f 00 |...._X.;t.......| -00000240 00 8d 00 8b 30 81 88 02 42 01 87 b2 c8 53 94 c3 |....0...B....S..| -00000250 9f ea 8a 04 35 1e 53 fb c0 db c5 43 e8 99 b7 81 |....5.S....C....| -00000260 43 fd 47 fd a6 cd 89 b5 0a b9 d0 5d 79 b0 c2 1a |C.G........]y...| -00000270 94 1f d8 2e 2b 8d 23 2a c8 08 63 98 f6 01 1f 8f |....+.#*..c.....| -00000280 67 60 3a 88 44 63 7e 8b 91 3e 48 02 42 00 e1 1f |g`:.Dc~..>H.B...| -00000290 69 9a 97 bb b6 e9 97 4d f5 f5 d7 23 56 be 1d ff |i......M...#V...| -000002a0 f0 22 67 8d a3 a1 13 33 5b f7 0b c2 a3 c8 5a 8c |."g....3[.....Z.| -000002b0 e8 65 b8 a8 7e 6c 99 11 db ab bd 80 0a ca dd 5a |.e..~l.........Z| -000002c0 d4 e0 28 12 38 7a b4 86 e7 3e 13 05 a1 3f 5f 14 |..(.8z...>...?_.| -000002d0 03 01 00 01 01 16 03 01 00 30 9a fa ce 11 0b 50 |.........0.....P| -000002e0 fa a1 59 9b 89 41 a9 0b 1b 74 dd 8f 7b a9 e0 39 |..Y..A...t..{..9| -000002f0 5d e3 cc ee 11 f4 27 15 bc 4c 8f e1 2c 51 ec 8e |].....'..L..,Q..| -00000300 ed 6c 97 75 4c e9 da fb 68 9d |.l.uL...h.| +00000230 c2 ed 90 99 5f 58 cb 3b 74 16 03 01 00 8f 0f 00 |...._X.;t.......| +00000240 00 8b 00 89 30 81 86 02 41 7c e1 65 0a 33 fc 66 |....0...A|.e.3.f| +00000250 85 e8 a7 9d a8 e0 12 1e 8c fa 53 00 2a 1b 70 dc |..........S.*.p.| +00000260 00 ba 15 e9 b2 fa 95 b1 c2 36 b6 a4 dd 4c 6c c2 |.........6...Ll.| +00000270 d9 11 cb 12 90 c2 1e ea 7f 4c e4 94 3a a4 c6 ba |.........L..:...| +00000280 66 3d b9 fa 3a af 0b 74 e5 1e 02 41 30 b2 11 4f |f=..:..t...A0..O| +00000290 f5 06 97 76 2d c9 7c 95 df 44 ba fe 81 2d f4 3f |...v-.|..D...-.?| +000002a0 e0 25 81 16 90 80 60 7b bd 88 14 b3 a4 ef 63 21 |.%....`{......c!| +000002b0 46 0c 15 a3 bd 1a 4d 3d fd a2 d7 3a ff bd 15 94 |F.....M=...:....| +000002c0 40 60 d8 42 14 41 18 7e 55 ab 71 a7 9c 14 03 01 |@`.B.A.~U.q.....| +000002d0 00 01 01 16 03 01 00 30 3d 4f 1e dd 66 64 5a c2 |.......0=O..fdZ.| +000002e0 bc 12 e9 63 d8 95 34 7c 6c 93 66 c6 12 54 5c d0 |...c..4|l.f..T\.| +000002f0 2b 2a 7e 20 4f fc 62 19 5d be 55 1f 82 8a 6c 9b |+*~ O.b.].U...l.| +00000300 85 7c b8 db 29 65 d7 7b |.|..)e.{| >>> Flow 4 (server to client) -00000000 14 03 01 00 01 01 16 03 01 00 30 12 06 0c 4d 1c |..........0...M.| -00000010 81 47 06 5f b9 85 68 60 9c 26 4a 14 f2 40 60 7f |.G._..h`.&J..@`.| -00000020 d1 1e 51 9e f2 70 2f be 54 cb 42 b3 b3 8d 90 9c |..Q..p/.T.B.....| -00000030 9d d2 0d e2 f7 b6 56 31 11 af 5f |......V1.._| +00000000 14 03 01 00 01 01 16 03 01 00 30 1c 42 dd c3 b4 |..........0.B...| +00000010 9e e8 53 fa 2f 12 1c 80 89 97 ec 99 aa 75 04 e4 |..S./........u..| +00000020 19 b9 7f 7f e5 61 53 8e 3f a5 1d 1a cb 02 8a 7a |.....aS.?......z| +00000030 f3 26 77 2d a0 23 c5 41 e1 fe 5c |.&w-.#.A..\| >>> Flow 5 (client to server) -00000000 17 03 01 00 20 0f d0 65 cd d4 59 d0 9e 07 06 6d |.... ..e..Y....m| -00000010 8a 11 34 d9 3a 31 59 70 02 39 08 ef 28 98 36 2f |..4.:1Yp.9..(.6/| -00000020 0d 5b d0 23 3f 17 03 01 00 20 5b 16 82 9c 29 c6 |.[.#?.... [...).| -00000030 78 34 76 09 5e bb 01 5e fc 01 b2 55 9b ef 67 a8 |x4v.^..^...U..g.| -00000040 ca 9f b9 6d b5 ea 87 48 8e 76 15 03 01 00 20 43 |...m...H.v.... C| -00000050 12 3b f6 99 31 67 d8 8a 94 d1 37 ef 01 ca a1 62 |.;..1g....7....b| -00000060 9f d7 2a eb 7e 37 79 d9 a4 07 15 5f fb 84 32 |..*.~7y...._..2| +00000000 17 03 01 00 20 6f 19 91 24 21 15 50 56 db 29 4f |.... o..$!.PV.)O| +00000010 0c e5 d7 85 02 7b dc 76 4f ac ac a1 7d d3 02 07 |.....{.vO...}...| +00000020 ca c2 1d e0 f5 17 03 01 00 20 f2 f4 da dc e9 c7 |......... ......| +00000030 c3 60 af d9 7e a4 5f be 80 1d fe a1 ef 98 22 dd |.`..~._.......".| +00000040 8f 93 06 22 c3 a2 b1 ed 48 5e 15 03 01 00 20 6b |..."....H^.... k| +00000050 2b 7e 37 08 37 21 4e 80 6f 10 e8 d9 30 56 22 aa |+~7.7!N.o...0V".| +00000060 f6 c7 fe 33 69 b6 12 f1 11 83 14 12 b5 73 35 |...3i........s5| diff --git a/src/crypto/tls/testdata/Client-TLSv10-ClientCert-ECDSA-RSA b/src/crypto/tls/testdata/Client-TLSv10-ClientCert-ECDSA-RSA index b02fe3d25b..a63734b648 100644 --- a/src/crypto/tls/testdata/Client-TLSv10-ClientCert-ECDSA-RSA +++ b/src/crypto/tls/testdata/Client-TLSv10-ClientCert-ECDSA-RSA @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 01 00 5d 02 00 00 59 03 01 0b 4b bc a9 e8 |....]...Y...K...| -00000010 4a 08 69 de 73 f8 fc 53 c6 e9 cd cf 25 7a 5f b6 |J.i.s..S....%z_.| -00000020 60 48 65 3e f5 5f 9f 14 e7 38 a0 20 ec fe 94 b2 |`He>._...8. ....| -00000030 6d a9 d7 91 c4 92 6b 3e a4 2e 88 72 07 c3 47 12 |m.....k>...r..G.| -00000040 78 cc 45 86 f9 56 16 f9 d7 d9 38 c2 c0 13 00 00 |x.E..V....8.....| +00000000 16 03 01 00 5d 02 00 00 59 03 01 f6 fc 17 31 02 |....]...Y.....1.| +00000010 7c 2a e4 6d 3a e7 ae a0 d9 a5 4e 59 88 a6 9c 09 ||*.m:.....NY....| +00000020 ed 6b a1 6d fb 80 03 72 14 63 93 20 47 4b 39 ed |.k.m...r.c. GK9.| +00000030 48 93 f6 9e 80 e0 2a d7 75 30 81 47 b6 94 7a 75 |H.....*.u0.G..zu| +00000040 1d 29 1f 4a fc 69 5f 92 7f d4 5f dc c0 13 00 00 |.).J.i_..._.....| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 01 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -61,17 +63,17 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 01 00 aa 0c 00 00 a6 03 00 1d 20 fc 77 2f |............ .w/| -000002d0 88 9a a9 71 3a 14 bf 27 27 40 e0 28 ce e8 e8 3b |...q:..''@.(...;| -000002e0 cd 0a 43 21 75 c9 93 70 9a 22 f1 ec 3a 00 80 d2 |..C!u..p."..:...| -000002f0 cd 71 ae f6 d8 54 5c f3 a4 da c7 64 51 b8 36 b8 |.q...T\....dQ.6.| -00000300 46 d5 8c b1 a0 43 9b f2 b5 2c 12 89 08 39 2b c3 |F....C...,...9+.| -00000310 79 4e 5d 3d 7e 7f d5 51 c3 c5 1e 9e 3b 7c 39 c4 |yN]=~..Q....;|9.| -00000320 c3 64 52 91 94 2f 2c ee aa 7c 0e ed fd 7a 65 bb |.dR../,..|...ze.| -00000330 5a 62 f4 45 24 3d e7 e3 f2 8a 72 74 a7 9d f2 d5 |Zb.E$=....rt....| -00000340 69 be dc 6e 23 fb 68 bb 6e 64 9e 43 a8 f4 08 2b |i..n#.h.nd.C...+| -00000350 86 be ea 88 40 13 5f 3f 0b 18 74 e3 43 76 be 98 |....@._?..t.Cv..| -00000360 b8 15 ea 4d cb 6e 23 3c 8b a9 ce d4 6a e3 13 16 |...M.n#<....j...| +000002c0 16 03 01 00 aa 0c 00 00 a6 03 00 1d 20 2b b0 b2 |............ +..| +000002d0 f5 17 4b 53 12 c2 b0 12 dc 16 c3 ff 62 b4 18 d9 |..KS........b...| +000002e0 7f 1a ef e5 a8 b2 98 ea aa a7 4f 61 01 00 80 2a |..........Oa...*| +000002f0 20 54 cc 3b a3 8e f5 db 04 fa 09 7b b1 bf 8a 79 | T.;.......{...y| +00000300 25 e9 7b 5f 13 0a 3a 23 32 c9 60 90 7c 02 0e 7d |%.{_..:#2.`.|..}| +00000310 7f 88 8f 79 73 f7 c8 7c fe c6 88 d1 d2 c8 88 53 |...ys..|.......S| +00000320 0f c4 f9 e3 61 28 9d 56 f3 84 eb 88 99 b6 8e a9 |....a(.V........| +00000330 e4 72 ec 01 a3 81 61 97 45 ab 90 cd 2a 50 a4 68 |.r....a.E...*P.h| +00000340 35 09 9f d8 99 54 bd 9f af 6e 63 77 2b 00 a1 e3 |5....T...ncw+...| +00000350 d6 f8 ab 08 39 3f df 42 55 4c f7 58 69 e8 db 76 |....9?.BUL.Xi..v| +00000360 43 24 37 5b 65 2c 17 80 c9 c1 50 ba 76 06 71 16 |C$7[e,....P.v.q.| 00000370 03 01 00 0a 0d 00 00 06 03 01 02 40 00 00 16 03 |...........@....| 00000380 01 00 04 0e 00 00 00 |.......| >>> Flow 3 (client to server) @@ -111,29 +113,29 @@ 00000210 03 01 00 25 10 00 00 21 20 2f e5 7d a3 47 cd 62 |...%...! /.}.G.b| 00000220 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 cf |C.(.._.).0......| 00000230 c2 ed 90 99 5f 58 cb 3b 74 16 03 01 00 90 0f 00 |...._X.;t.......| -00000240 00 8c 00 8a 30 81 87 02 41 2c f8 d2 c2 28 75 28 |....0...A,...(u(| -00000250 67 de 75 fb 7a 09 20 8a ec 06 a6 42 03 ad 3c 95 |g.u.z. ....B..<.| -00000260 bb 00 f6 10 71 c7 90 fe 08 16 fa ed 7d 71 24 a2 |....q.......}q$.| -00000270 b6 76 ce f9 1b ff a9 ff 05 b6 dd d8 63 2b 74 86 |.v..........c+t.| -00000280 65 f5 ef f7 36 41 47 77 b5 88 02 42 00 8a 80 f8 |e...6AGw...B....| -00000290 9b cf de a6 b7 c3 d8 48 a1 a0 47 7e cf 33 fc f7 |.......H..G~.3..| -000002a0 fc 87 40 cf 8d c3 81 85 c7 19 9e 37 9e 54 f7 3e |..@........7.T.>| -000002b0 d1 1c 42 83 21 d7 2e ae 02 7b 3c ce 97 f3 9b a0 |..B.!....{<.....| -000002c0 a3 4e b9 a0 9c 78 f0 7e 9c 96 fc 78 e6 08 14 03 |.N...x.~...x....| -000002d0 01 00 01 01 16 03 01 00 30 84 a0 4f 8d 01 40 ca |........0..O..@.| -000002e0 c0 fd ea 1a 9c df 27 cc 25 00 56 e2 30 05 c0 d9 |......'.%.V.0...| -000002f0 c7 21 48 37 6b 35 c3 a4 4e bf 67 98 87 78 0f 3c |.!H7k5..N.g..x.<| -00000300 74 72 4f 6a c5 0d fd 0c 84 |trOj.....| +00000240 00 8c 00 8a 30 81 87 02 41 0d b5 15 00 c4 b1 af |....0...A.......| +00000250 33 ea 88 c2 cc 9a 1c 16 3d a0 15 bf 20 ef b2 28 |3.......=... ..(| +00000260 de 8b 36 b4 3a 2f df 8b b4 7e 3b a4 ad c1 04 32 |..6.:/...~;....2| +00000270 56 6c 8f 07 ab 3c dc d7 6f 66 41 96 bc 74 e9 4a |Vl...<..ofA..t.J| +00000280 55 00 c4 32 df 22 26 6b 98 0d 02 42 01 67 6e 97 |U..2."&k...B.gn.| +00000290 8b 55 e8 57 74 d8 2e c5 a4 25 1a b6 08 a5 b1 f0 |.U.Wt....%......| +000002a0 99 26 9c 24 b3 02 82 55 0d d9 3a 13 55 f1 cb cc |.&.$...U..:.U...| +000002b0 84 fd b7 5d 82 dd 26 d4 c6 4c 4a 27 ae 08 e7 57 |...]..&..LJ'...W| +000002c0 74 a3 91 b9 6c f6 50 bb d9 34 e5 4b c2 66 14 03 |t...l.P..4.K.f..| +000002d0 01 00 01 01 16 03 01 00 30 be 86 48 b8 3d f0 1e |........0..H.=..| +000002e0 b7 58 d4 b6 54 88 b4 57 1d 7d 5c 3f 17 ff 41 6f |.X..T..W.}\?..Ao| +000002f0 a4 60 57 21 86 bb 77 d9 dd af 96 fb eb c8 b0 86 |.`W!..w.........| +00000300 18 e2 00 4a 1b 92 67 75 5a |...J..guZ| >>> Flow 4 (server to client) -00000000 14 03 01 00 01 01 16 03 01 00 30 01 da 6e 2a 83 |..........0..n*.| -00000010 20 ad 52 16 f2 c6 c1 55 b8 77 0d 5f c6 48 dc e7 | .R....U.w._.H..| -00000020 72 29 88 0a 2b 1a d1 1e fd fb c0 c3 18 c8 43 47 |r)..+.........CG| -00000030 a9 8f d3 fe f3 d8 d2 a8 ce 79 44 |.........yD| +00000000 14 03 01 00 01 01 16 03 01 00 30 81 55 c5 00 ab |..........0.U...| +00000010 7e 16 3e 35 25 2a 86 0d bf 69 17 1f e7 13 fd 6c |~.>5%*...i.....l| +00000020 a7 3e 63 e6 23 57 1e 63 ca 1f 1a ea 76 df c1 9e |.>c.#W.c....v...| +00000030 c9 ee fc 23 8a ec e0 e9 78 38 cb |...#....x8.| >>> Flow 5 (client to server) -00000000 17 03 01 00 20 e5 74 9a b9 0b 6c 43 0f 4e db e4 |.... .t...lC.N..| -00000010 ba 10 5d 9a f0 96 16 17 ad a5 42 d8 0d a3 39 86 |..].......B...9.| -00000020 6c f0 8a 64 70 17 03 01 00 20 d2 11 27 ea f2 80 |l..dp.... ..'...| -00000030 a5 5d ba 7b 99 4b 94 25 13 24 29 05 7b 64 00 51 |.].{.K.%.$).{d.Q| -00000040 14 8e d5 e9 e2 c0 5d 98 96 30 15 03 01 00 20 7e |......]..0.... ~| -00000050 87 d2 6c 5c b5 1c 11 72 e1 c4 e5 e0 f3 16 6b db |..l\...r......k.| -00000060 55 c3 c7 ae a9 38 d3 07 04 41 be c5 42 43 a4 |U....8...A..BC.| +00000000 17 03 01 00 20 6f 5c 74 f2 48 38 66 86 fe 54 d9 |.... o\t.H8f..T.| +00000010 69 ec a9 91 d4 4d 07 98 7d df 19 1f fd ec c2 d5 |i....M..}.......| +00000020 b5 49 a7 0a 05 17 03 01 00 20 62 0d 0e 63 82 cf |.I....... b..c..| +00000030 74 e1 eb dd 2f 4f 05 92 7a 08 34 ff 84 6e 13 7f |t.../O..z.4..n..| +00000040 21 cb f6 92 c4 d1 4d 49 31 9f 15 03 01 00 20 f1 |!.....MI1..... .| +00000050 53 aa 8e 29 2c 58 3a 9b c3 a1 dc 85 ce d1 70 c3 |S..),X:.......p.| +00000060 06 53 1d 66 4d 51 a5 33 4c 53 41 e8 ac 1b 10 |.S.fMQ.3LSA....| diff --git a/src/crypto/tls/testdata/Client-TLSv10-ClientCert-RSA-ECDSA b/src/crypto/tls/testdata/Client-TLSv10-ClientCert-RSA-ECDSA index ac8a0ebad3..8f1ff3f1d3 100644 --- a/src/crypto/tls/testdata/Client-TLSv10-ClientCert-RSA-ECDSA +++ b/src/crypto/tls/testdata/Client-TLSv10-ClientCert-RSA-ECDSA @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 01 00 5d 02 00 00 59 03 01 6f 48 26 41 da |....]...Y..oH&A.| -00000010 73 82 d1 cf 84 ad 06 e9 76 39 dc e4 c8 34 af 53 |s.......v9...4.S| -00000020 06 ed ed 68 56 5f 76 11 4e f6 ff 20 55 fd 29 c5 |...hV_v.N.. U.).| -00000030 aa 56 af bd 5d 67 74 4f 08 8a 52 a1 7e cd b9 ac |.V..]gtO..R.~...| -00000040 31 a0 2f 45 25 1f b2 24 71 26 80 17 c0 09 00 00 |1./E%..$q&......| +00000000 16 03 01 00 5d 02 00 00 59 03 01 79 7e 8c 72 46 |....]...Y..y~.rF| +00000010 e6 1a d5 db 83 07 37 34 cf f5 84 39 87 af 5f 23 |......74...9.._#| +00000020 47 f9 e2 9d c0 76 e8 6a 7e 88 9c 20 a3 c7 5b 94 |G....v.j~.. ..[.| +00000030 8f 63 f2 ac 89 b5 ed ee e0 8f 87 be 2a 3e f1 6c |.c..........*>.l| +00000040 2f ca cc d0 ee 22 4c a9 ed 03 5e 18 c0 09 00 00 |/...."L...^.....| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 01 02 0e 0b 00 02 0a 00 02 07 00 02 |................| 00000070 04 30 82 02 00 30 82 01 62 02 09 00 b8 bf 2d 47 |.0...0..b.....-G| @@ -57,17 +59,17 @@ 00000250 c9 86 2e dd d7 11 69 7f 85 7c 56 de fb 31 78 2b |......i..|V..1x+| 00000260 e4 c7 78 0d ae cb be 9e 4e 36 24 31 7b 6a 0f 39 |..x.....N6$1{j.9| 00000270 95 12 07 8f 2a 16 03 01 00 b3 0c 00 00 af 03 00 |....*...........| -00000280 1d 20 51 4c 6f eb 08 70 52 20 15 78 d3 f8 65 5e |. QLo..pR .x..e^| -00000290 0f 59 03 b7 d1 0e e9 7e be 42 d2 cd f3 57 c6 24 |.Y.....~.B...W.$| -000002a0 6b 2c 00 89 30 81 86 02 41 7b 1b ec 11 08 f4 8f |k,..0...A{......| -000002b0 db 2c c5 1b 33 b2 b0 b4 da 76 b9 a7 78 ed ee 0e |.,..3....v..x...| -000002c0 23 5c 4b b0 10 6e 41 12 b9 d4 68 c1 15 ea 70 0a |#\K..nA...h...p.| -000002d0 0c 91 c1 8d 4a 4d 41 c1 c3 25 f1 90 ef 95 f3 e1 |....JMA..%......| -000002e0 a8 30 4d ce 4d d1 eb 8c cf 9a 02 41 09 e0 8c 8e |.0M.M......A....| -000002f0 70 01 f1 5d b2 8a d1 61 bc 86 f4 85 2f 6c ac 2c |p..]...a..../l.,| -00000300 e8 bf 20 c7 81 46 21 6e 9b bd c1 83 71 34 8d 65 |.. ..F!n....q4.e| -00000310 fc 35 07 be c8 ad d4 3a c6 7b 40 1c f7 17 e3 d9 |.5.....:.{@.....| -00000320 96 19 d4 cd 0d d0 8c 4f b2 09 6a 4b 05 16 03 01 |.......O..jK....| +00000280 1d 20 37 50 ab 46 a8 24 be 20 fd 71 c2 8d 91 a0 |. 7P.F.$. .q....| +00000290 88 88 0b 18 f5 ec 43 99 cb 63 45 9c ad b4 27 20 |......C..cE...' | +000002a0 0d 11 00 89 30 81 86 02 41 35 1d fa 6c 1b a1 b4 |....0...A5..l...| +000002b0 bc 5f 4d a6 77 64 8d e1 92 94 97 53 c5 01 c2 bb |._M.wd.....S....| +000002c0 5c 83 f0 c2 6d 6d d1 1f ff 7a 00 06 4a a0 de c0 |\...mm...z..J...| +000002d0 aa a1 9f 6d f6 62 20 d0 08 1e 5b bc 1d af 03 45 |...m.b ...[....E| +000002e0 d5 70 8b ee d8 a8 ff 3e 2b 7d 02 41 28 ff 3e 45 |.p.....>+}.A(.>E| +000002f0 7f ec c1 87 df dd 14 8b 64 08 84 02 2b de ff 14 |........d...+...| +00000300 b9 6f 54 72 b1 a2 99 47 55 2d 76 91 77 ba 4f db |.oTr...GU-v.w.O.| +00000310 a3 4c ab 21 62 48 3a 8d f7 32 57 12 dc 6c a9 51 |.L.!bH:..2W..l.Q| +00000320 77 cc b3 30 1f e9 41 bf 0b b3 4b a5 e4 16 03 01 |w..0..A...K.....| 00000330 00 0a 0d 00 00 06 03 01 02 40 00 00 16 03 01 00 |.........@......| 00000340 04 0e 00 00 00 |.....| >>> Flow 3 (client to server) @@ -106,29 +108,29 @@ 00000200 e5 35 16 03 01 00 25 10 00 00 21 20 2f e5 7d a3 |.5....%...! /.}.| 00000210 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 |G.bC.(.._.).0...| 00000220 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 16 03 01 00 |......._X.;t....| -00000230 86 0f 00 00 82 00 80 59 18 58 aa 18 70 84 a3 26 |.......Y.X..p..&| -00000240 8c 1d 77 52 a7 2d 00 e5 00 dc 24 1c f6 9b 9f 63 |..wR.-....$....c| -00000250 c8 84 8b dc e7 61 78 9c 28 0d 4c 3a 1e 5f a7 ce |.....ax.(.L:._..| -00000260 35 17 1c b1 de e0 01 32 35 6f 85 59 22 73 50 2a |5......25o.Y"sP*| -00000270 36 df 39 0c c8 c1 45 70 a2 e4 53 bb de e6 0e 6a |6.9...Ep..S....j| -00000280 fd 45 8e 4d eb 1f de 86 d3 fb 94 e4 8d 22 cd 30 |.E.M.........".0| -00000290 e7 29 de 65 f0 2a cd b8 3d b5 be 91 a3 7d 3b 30 |.).e.*..=....};0| -000002a0 1a a5 63 bd 84 1f 95 19 d1 fe 25 40 b8 8f ab 96 |..c.......%@....| -000002b0 59 42 e6 31 93 c0 39 14 03 01 00 01 01 16 03 01 |YB.1..9.........| -000002c0 00 30 a9 f7 c0 97 f4 b8 06 65 a6 7c fb 80 a1 79 |.0.......e.|...y| -000002d0 5f 44 72 55 13 d1 ca e3 9a 91 5d 1e 08 93 6d b5 |_DrU......]...m.| -000002e0 1c 5e 52 24 b1 ec db aa 3b bc fe db 18 0b 18 fe |.^R$....;.......| -000002f0 51 6a |Qj| +00000230 86 0f 00 00 82 00 80 22 5d 5b 59 98 4a a8 53 6b |......."][Y.J.Sk| +00000240 78 1d 8f 51 a1 23 6a 87 fb 9d 79 5c 63 9d dc 61 |x..Q.#j...y\c..a| +00000250 13 9f a1 36 f9 fa ec a0 6f 47 11 d6 7c 8f a4 81 |...6....oG..|...| +00000260 fb f1 31 59 11 6c 8e 83 1c 56 3b 03 b4 a9 e0 09 |..1Y.l...V;.....| +00000270 aa 04 c4 d1 7a c5 28 03 ae ce fe a0 95 1b 8c 5c |....z.(........\| +00000280 65 32 ca f0 d5 43 fc 9b e0 8e ca 80 f3 e0 5f 8d |e2...C........_.| +00000290 6d 91 ff f2 4b 7b a7 38 64 dd e8 a8 d8 1f 95 31 |m...K{.8d......1| +000002a0 04 a9 6c 72 45 9c 0d a3 80 60 8e 20 8a af f7 ae |..lrE....`. ....| +000002b0 87 10 26 51 0e a5 e8 14 03 01 00 01 01 16 03 01 |..&Q............| +000002c0 00 30 46 9b a2 75 16 a9 c2 ac d7 47 ca 41 48 bd |.0F..u.....G.AH.| +000002d0 2c 3d 56 e3 a4 21 a6 c0 d8 71 6d fb 4a c6 9a a1 |,=V..!...qm.J...| +000002e0 88 db a5 70 58 e0 e3 5a c7 62 d1 d4 0f 4b c6 55 |...pX..Z.b...K.U| +000002f0 0c aa |..| >>> Flow 4 (server to client) -00000000 14 03 01 00 01 01 16 03 01 00 30 e6 36 50 e7 a3 |..........0.6P..| -00000010 72 0a 6a 9f 18 17 91 51 ad 48 19 54 c8 6b c0 45 |r.j....Q.H.T.k.E| -00000020 d5 9b cb 08 34 d3 3a 73 74 04 3a 3d 24 b0 95 48 |....4.:st.:=$..H| -00000030 97 9e c5 83 4f 20 29 c8 dd 93 6c |....O )...l| +00000000 14 03 01 00 01 01 16 03 01 00 30 6b ab 63 56 79 |..........0k.cVy| +00000010 32 ef f9 df c5 36 29 50 f5 1d 55 c2 4b 84 f5 68 |2....6)P..U.K..h| +00000020 b0 d8 7d 7d 80 24 e2 5d b9 0f 66 25 4e 50 21 08 |..}}.$.]..f%NP!.| +00000030 a3 15 de 0e 04 ef 86 d6 04 2e 9b |...........| >>> Flow 5 (client to server) -00000000 17 03 01 00 20 58 a1 0a 68 2c 04 68 7d e9 13 ce |.... X..h,.h}...| -00000010 69 4b 53 4a f6 fc e0 c8 0e 05 ad 19 d8 b3 37 67 |iKSJ..........7g| -00000020 f2 1f 3b 33 62 17 03 01 00 20 c2 e7 d3 d2 38 ba |..;3b.... ....8.| -00000030 27 13 ed d1 73 fc 9b f5 4f 61 f0 35 27 8e 54 52 |'...s...Oa.5'.TR| -00000040 b7 ce bd 6a 05 c6 61 95 1e 8a 15 03 01 00 20 6e |...j..a....... n| -00000050 07 21 86 31 f8 74 6b 45 4d 10 2f 5d e7 2b 64 77 |.!.1.tkEM./].+dw| -00000060 a9 7f 1e 49 ed d5 d4 1e 2e f2 b1 c5 4d 02 46 |...I........M.F| +00000000 17 03 01 00 20 86 3b 02 a4 5c 33 eb 57 cc 42 71 |.... .;..\3.W.Bq| +00000010 32 81 56 00 4a b0 3b 7e ed cd ab d9 76 2b 12 97 |2.V.J.;~....v+..| +00000020 d6 be 22 cc 02 17 03 01 00 20 e7 53 2a b7 18 a7 |.."...... .S*...| +00000030 6f 65 ef 20 9d 38 be 3c f0 6c 4e 5d e9 cc ac 8c |oe. .8.<.lN]....| +00000040 57 7d 61 c6 23 d8 bb d4 97 15 15 03 01 00 20 c9 |W}a.#......... .| +00000050 c1 b2 03 2b b0 a4 cb 4b 65 31 46 c4 6c e4 12 70 |...+...Ke1F.l..p| +00000060 0e eb e8 a0 d2 1c ca 2d 4f 87 f0 16 e9 23 b0 |.......-O....#.| diff --git a/src/crypto/tls/testdata/Client-TLSv10-ClientCert-RSA-RSA b/src/crypto/tls/testdata/Client-TLSv10-ClientCert-RSA-RSA index 48eb1ce641..2ad78c7043 100644 --- a/src/crypto/tls/testdata/Client-TLSv10-ClientCert-RSA-RSA +++ b/src/crypto/tls/testdata/Client-TLSv10-ClientCert-RSA-RSA @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 01 00 5d 02 00 00 59 03 01 24 71 03 c6 1d |....]...Y..$q...| -00000010 d4 f5 09 b2 3c d8 88 51 57 4c 90 07 4b 74 fe 1d |....<..QWL..Kt..| -00000020 c9 7f 00 78 9b a3 b2 1b ef 43 66 20 07 97 7c a6 |...x.....Cf ..|.| -00000030 9b c6 a9 47 42 ae 99 bf 59 fe 52 f6 da d9 1c 68 |...GB...Y.R....h| -00000040 c2 7a 53 3f 27 0d 11 87 9a 47 81 5c c0 13 00 00 |.zS?'....G.\....| +00000000 16 03 01 00 5d 02 00 00 59 03 01 26 fc 57 68 fc |....]...Y..&.Wh.| +00000010 0d a6 0d 31 5f 98 77 d2 5d 19 e1 35 55 0e 2b d1 |...1_.w.]..5U.+.| +00000020 08 a0 f2 23 b8 8a 4a 71 58 f5 26 20 23 a6 28 5f |...#..JqX.& #.(_| +00000030 5b 57 e9 7d c9 14 a1 ec 75 33 8d 42 ce 0e 3e fc |[W.}....u3.B..>.| +00000040 0a d6 12 ef 3e f7 7b 15 8e aa 04 4a c0 13 00 00 |....>.{....J....| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 01 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -61,17 +63,17 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 01 00 aa 0c 00 00 a6 03 00 1d 20 ad a7 d5 |............ ...| -000002d0 fc 63 e1 22 f8 1f 8d ad 50 09 1a 92 a4 57 ea 88 |.c."....P....W..| -000002e0 6d 9c 20 70 f1 8b 85 15 ec 8e b2 b3 07 00 80 b1 |m. p............| -000002f0 03 03 a7 cf 8f 73 e2 a3 29 0d 55 4a 06 72 db e5 |.....s..).UJ.r..| -00000300 65 41 44 49 05 1c 37 17 1c 02 6e b1 f4 e8 a9 bb |eADI..7...n.....| -00000310 00 24 3e 3a 3c d6 1c f6 dd 21 a4 e3 61 b0 1d 2e |.$>:<....!..a...| -00000320 77 11 53 51 4d 49 1e 07 bf 07 61 d1 54 f4 c7 24 |w.SQMI....a.T..$| -00000330 4f 7d 5c 5a fb 84 c0 9d 0e 52 12 b6 40 72 37 fd |O}\Z.....R..@r7.| -00000340 8c bd d0 8a b1 9e 2c 18 bc 04 a3 c2 90 a3 33 4c |......,.......3L| -00000350 06 7c 14 a8 73 7d d2 23 30 f9 31 12 56 31 60 19 |.|..s}.#0.1.V1`.| -00000360 d1 0d 31 c1 3c 25 66 62 5c 9b 13 5e 34 c6 69 16 |..1.<%fb\..^4.i.| +000002c0 16 03 01 00 aa 0c 00 00 a6 03 00 1d 20 eb d9 23 |............ ..#| +000002d0 5f 21 7f ab f2 ae b4 9a c8 06 2c 2a b4 01 50 5b |_!........,*..P[| +000002e0 7e 57 e6 7f 03 ac 36 9f b7 f7 2f fa 5a 00 80 7e |~W....6.../.Z..~| +000002f0 74 f4 01 6e cd eb f6 d9 13 72 57 57 f5 2f 8d a7 |t..n.....rWW./..| +00000300 5a 39 7b 93 ff b1 56 98 b9 72 02 44 e9 de 4f c1 |Z9{...V..r.D..O.| +00000310 6a 7d 6f 43 73 a8 53 91 0a 82 de 66 21 22 65 f0 |j}oCs.S....f!"e.| +00000320 31 ff e4 e8 bc 80 7a 79 23 d1 3d b8 a5 be ff 3b |1.....zy#.=....;| +00000330 fc 6c f1 45 4e 59 50 29 cd 35 d3 d4 93 eb 1f 65 |.l.ENYP).5.....e| +00000340 56 b1 e8 5f 35 a8 a6 8a 2b 02 4a 84 33 5b ff 01 |V.._5...+.J.3[..| +00000350 d0 d1 d5 17 6c 30 e9 ce 03 cc 7c 28 25 50 0c cd |....l0....|(%P..| +00000360 74 55 3e cf 3f dc 9c 80 19 35 f5 36 e5 ca 9a 16 |tU>.?....5.6....| 00000370 03 01 00 0a 0d 00 00 06 03 01 02 40 00 00 16 03 |...........@....| 00000380 01 00 04 0e 00 00 00 |.......| >>> Flow 3 (client to server) @@ -110,29 +112,29 @@ 00000200 e5 35 16 03 01 00 25 10 00 00 21 20 2f e5 7d a3 |.5....%...! /.}.| 00000210 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 |G.bC.(.._.).0...| 00000220 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 16 03 01 00 |......._X.;t....| -00000230 86 0f 00 00 82 00 80 59 e2 7d 00 66 f0 59 a0 19 |.......Y.}.f.Y..| -00000240 b6 4f 26 80 ad 31 b4 b3 c2 56 af 84 bf 88 15 7f |.O&..1...V......| -00000250 dc 29 fc 51 f2 cf 0d ec 52 46 c5 c5 cd 24 c1 93 |.).Q....RF...$..| -00000260 5b f6 06 09 ad bb 9a 4a ae 5d ec 57 f8 96 a8 b1 |[......J.].W....| -00000270 4b 81 45 7d 34 38 59 ea 76 47 76 1c 7f 7b 68 e9 |K.E}48Y.vGv..{h.| -00000280 89 7b 5d 4c b9 bc 5a 26 e1 f7 6c 42 f7 c6 6d bb |.{]L..Z&..lB..m.| -00000290 c0 c7 bd f6 5e 9e 51 d8 30 ec 9f da 56 0a b7 2a |....^.Q.0...V..*| -000002a0 6c 5e 50 d1 74 48 70 4a 88 62 16 a1 ba f2 01 e5 |l^P.tHpJ.b......| -000002b0 00 b6 eb cb e3 18 cf 14 03 01 00 01 01 16 03 01 |................| -000002c0 00 30 61 51 84 02 46 3c 10 62 b5 2a a2 8b 4e 2d |.0aQ..F<.b.*..N-| -000002d0 57 55 26 c5 46 f2 5d a1 f5 20 46 0d 63 fd 48 5a |WU&.F.].. F.c.HZ| -000002e0 f3 65 90 8c 1a bd 59 6e 5f d1 5c b6 ee 33 49 12 |.e....Yn_.\..3I.| -000002f0 46 ec |F.| +00000230 86 0f 00 00 82 00 80 8b 21 19 8e 69 f9 f2 da 9b |........!..i....| +00000240 58 ce 21 ce 77 f1 c4 50 be 04 63 bc 30 ac 9e 32 |X.!.w..P..c.0..2| +00000250 f0 43 31 36 8a 87 f9 8a 3a f8 00 48 04 07 ad e0 |.C16....:..H....| +00000260 0d 57 d6 74 86 70 6e 30 74 97 a0 26 e1 6f dd c1 |.W.t.pn0t..&.o..| +00000270 5b b6 c5 b0 05 35 43 aa b3 14 fb ca 59 80 fa 4a |[....5C.....Y..J| +00000280 d4 be 61 b2 a7 5d f0 b4 dc 9b ee 83 b6 93 09 ca |..a..]..........| +00000290 82 76 a8 99 1d 85 b6 77 f4 eb 7d 4b bb 7c 5b d5 |.v.....w..}K.|[.| +000002a0 7b 40 a9 b0 77 ad a0 8b 08 81 5c 8e 20 e2 2a 62 |{@..w.....\. .*b| +000002b0 9f 53 28 e4 e1 a3 1d 14 03 01 00 01 01 16 03 01 |.S(.............| +000002c0 00 30 84 88 01 5f 1e 79 9b f8 60 b3 7b 50 e0 97 |.0..._.y..`.{P..| +000002d0 e7 94 1c 75 58 89 1e ab 20 c9 2a 35 43 af 5b e1 |...uX... .*5C.[.| +000002e0 05 25 60 49 ec 7b fc 9f d2 ea 77 9a fe a7 86 b8 |.%`I.{....w.....| +000002f0 89 7d |.}| >>> Flow 4 (server to client) -00000000 14 03 01 00 01 01 16 03 01 00 30 b1 3c 7f c3 15 |..........0.<...| -00000010 e4 fe bc 1a ee 0d ec 28 ce b0 f7 fd a4 0a e4 79 |.......(.......y| -00000020 37 09 68 de 58 f8 e8 76 7d 9c 09 35 42 7e 00 8e |7.h.X..v}..5B~..| -00000030 4c 8d d1 60 26 d4 09 c5 8b d0 96 |L..`&......| +00000000 14 03 01 00 01 01 16 03 01 00 30 ae 8c 9b 1b 85 |..........0.....| +00000010 41 7b 53 64 51 07 12 6b 37 c0 75 81 b0 6d 4b bd |A{SdQ..k7.u..mK.| +00000020 30 a3 a1 5b a3 9e 3d c3 ed 4f ac e3 67 88 ec a8 |0..[..=..O..g...| +00000030 fb 6f 09 d5 11 8c 7b ae 39 60 0c |.o....{.9`.| >>> Flow 5 (client to server) -00000000 17 03 01 00 20 6c bb 09 ee 1d 96 6c 63 5b b6 69 |.... l.....lc[.i| -00000010 bf ea ad 7a 85 36 a2 4b d2 f0 73 18 91 b1 42 e5 |...z.6.K..s...B.| -00000020 77 d0 6c ff ab 17 03 01 00 20 ed 85 78 3b bd 49 |w.l...... ..x;.I| -00000030 2c f3 02 24 f2 18 72 96 a0 49 6b 06 bd bb 54 25 |,..$..r..Ik...T%| -00000040 0a 3e ff 07 45 6b 6c cc a6 d2 15 03 01 00 20 07 |.>..Ekl....... .| -00000050 9a fb b7 cc 01 cd f7 b6 90 d3 b6 a7 31 15 99 e2 |............1...| -00000060 e7 e8 2b a5 c0 e8 a9 9d fe 4e 11 0d 4a d4 b7 |..+......N..J..| +00000000 17 03 01 00 20 ca 25 b7 cb b1 74 e5 00 c2 65 b4 |.... .%...t...e.| +00000010 49 9d 2c c5 a4 0b be 1d 2b 49 30 96 19 f2 10 0c |I.,.....+I0.....| +00000020 7a c2 23 57 5b 17 03 01 00 20 39 20 09 37 f3 b0 |z.#W[.... 9 .7..| +00000030 8f 3a 93 2f 14 6d cd d6 ec 2c 1f 2b 3f ee 13 d3 |.:./.m...,.+?...| +00000040 72 f4 c4 36 49 a9 80 28 f1 08 15 03 01 00 20 82 |r..6I..(...... .| +00000050 c8 e7 e5 a1 c0 78 da 98 8a ad 93 da cb cc 9e a8 |.....x..........| +00000060 c6 60 ec 50 fa d2 25 38 6b e3 5d 0d 1c c7 15 |.`.P..%8k.]....| diff --git a/src/crypto/tls/testdata/Client-TLSv10-ECDHE-ECDSA-AES b/src/crypto/tls/testdata/Client-TLSv10-ECDHE-ECDSA-AES index ac354c50bc..b8f32392b5 100644 --- a/src/crypto/tls/testdata/Client-TLSv10-ECDHE-ECDSA-AES +++ b/src/crypto/tls/testdata/Client-TLSv10-ECDHE-ECDSA-AES @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 01 00 5d 02 00 00 59 03 01 70 d2 b8 0b 74 |....]...Y..p...t| -00000010 93 b4 60 d7 ab 1d 0f f3 7c d0 b5 f8 a2 78 45 30 |..`.....|....xE0| -00000020 b1 41 9b b6 73 bd 05 d8 85 16 66 20 e8 26 8d 7a |.A..s.....f .&.z| -00000030 e2 da e0 a0 7a c9 19 d1 dd db 2b bc b4 b2 56 39 |....z.....+...V9| -00000040 9f e6 62 75 29 96 40 b3 0d c0 db 65 c0 09 00 00 |..bu).@....e....| +00000000 16 03 01 00 5d 02 00 00 59 03 01 65 75 f4 83 d3 |....]...Y..eu...| +00000010 95 a2 e3 96 5d 70 09 f1 ab 22 18 3d f6 9c 27 b2 |....]p...".=..'.| +00000020 f0 4f 17 eb f4 6a 32 4d 1f 02 59 20 75 b7 a4 c8 |.O...j2M..Y u...| +00000030 66 a9 4b 54 d3 0b 8b 82 38 24 31 8a 01 71 95 06 |f.KT....8$1..q..| +00000040 a9 4f dd b2 d4 42 25 77 8c 91 87 48 c0 09 00 00 |.O...B%w...H....| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 01 02 0e 0b 00 02 0a 00 02 07 00 02 |................| 00000070 04 30 82 02 00 30 82 01 62 02 09 00 b8 bf 2d 47 |.0...0..b.....-G| @@ -56,37 +58,37 @@ 00000240 8c 25 c1 33 13 83 0d 94 06 bb d4 37 7a f6 ec 7a |.%.3.......7z..z| 00000250 c9 86 2e dd d7 11 69 7f 85 7c 56 de fb 31 78 2b |......i..|V..1x+| 00000260 e4 c7 78 0d ae cb be 9e 4e 36 24 31 7b 6a 0f 39 |..x.....N6$1{j.9| -00000270 95 12 07 8f 2a 16 03 01 00 b4 0c 00 00 b0 03 00 |....*...........| -00000280 1d 20 5f 81 8f 18 31 4e 64 fe 87 f2 da c6 45 45 |. _...1Nd.....EE| -00000290 54 e3 54 c6 a0 bb bf bd d1 01 c5 7b 08 d8 32 6b |T.T........{..2k| -000002a0 a8 31 00 8a 30 81 87 02 42 01 21 7e c2 26 cb 5e |.1..0...B.!~.&.^| -000002b0 f1 2a d2 9b 7f 3f b4 d4 28 5e 63 5a 20 aa 28 87 |.*...?..(^cZ .(.| -000002c0 bb dd 5c 6a 91 a2 2d 03 7a 69 67 8b ca 84 a6 1f |..\j..-.zig.....| -000002d0 d3 58 40 eb 5c 54 95 96 05 d0 37 63 e4 a6 1b 51 |.X@.\T....7c...Q| -000002e0 9a d0 93 31 82 e6 8e a0 af 29 64 02 41 4c ff ac |...1.....)d.AL..| -000002f0 44 74 e0 04 2c ab 1c 23 91 dc 06 36 ff 19 a1 60 |Dt..,..#...6...`| -00000300 19 d4 e5 d3 78 f5 ed d8 09 7b de 61 6f 65 2c 69 |....x....{.aoe,i| -00000310 a1 d2 5d 07 bf 99 26 2b 70 fa 34 26 30 41 59 3b |..]...&+p.4&0AY;| -00000320 bc a3 10 9c 92 fa 60 a7 df ea e4 8a 3a 76 16 03 |......`.....:v..| -00000330 01 00 04 0e 00 00 00 |.......| +00000270 95 12 07 8f 2a 16 03 01 00 b3 0c 00 00 af 03 00 |....*...........| +00000280 1d 20 37 88 b4 b9 cb 5f 71 5e 4c 36 59 f1 37 97 |. 7...._q^L6Y.7.| +00000290 ec 3e 16 c8 ac 23 61 8d fe 75 14 ff 33 eb db 04 |.>...#a..u..3...| +000002a0 7a 17 00 89 30 81 86 02 41 50 a1 8b 98 a0 b9 21 |z...0...AP.....!| +000002b0 22 23 a1 ce 76 85 6e 7a 40 ce 2c 65 bc 3c 89 e6 |"#..v.nz@.,e.<..| +000002c0 1c 74 1e a9 1d 6c c7 60 99 b5 68 62 74 84 0d 7c |.t...l.`..hbt..|| +000002d0 a3 06 61 b1 d2 9a 5c 3e 92 39 d7 ac be 1d ac ff |..a...\>.9......| +000002e0 18 e7 76 29 f1 d2 8f 97 6e 44 02 41 07 e1 ee a8 |..v)....nD.A....| +000002f0 cc 89 7d a5 6e e5 32 52 51 72 ff dc 9e 77 e2 c8 |..}.n.2RQr...w..| +00000300 18 07 1e 6e fa 4a b2 05 f8 a5 e6 21 76 90 ba e4 |...n.J.....!v...| +00000310 9f b4 2a 03 c5 86 07 58 aa 4a c2 d8 24 c9 a5 e0 |..*....X.J..$...| +00000320 d7 04 0e 41 33 3c b7 e2 82 f1 05 0d 6a 16 03 01 |...A3<......j...| +00000330 00 04 0e 00 00 00 |......| >>> Flow 3 (client to server) 00000000 16 03 01 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 01 00 01 01 |....._X.;t......| -00000030 16 03 01 00 30 6d 2a 91 d7 c3 8f 1c d8 d4 cc 67 |....0m*........g| -00000040 ed 07 41 c2 9c 48 0d bd 7f 11 61 00 58 23 55 88 |..A..H....a.X#U.| -00000050 f9 bd da 92 bc e4 8d 47 c0 ac 72 43 7f 2d 0f b5 |.......G..rC.-..| -00000060 de bb 67 6e 9f |..gn.| +00000030 16 03 01 00 30 8b de e9 e0 3d 21 29 46 07 eb da |....0....=!)F...| +00000040 60 6a 55 37 05 9c 94 e1 46 1f 12 a0 76 b6 0f 45 |`jU7....F...v..E| +00000050 9d ad ee 69 ae 01 74 9f de d4 d1 67 a5 0b 57 48 |...i..t....g..WH| +00000060 69 c3 e6 2d ad |i..-.| >>> Flow 4 (server to client) -00000000 14 03 01 00 01 01 16 03 01 00 30 be 25 a7 fa 04 |..........0.%...| -00000010 a5 dd 58 c1 5f a6 31 f8 fc fc db 27 a1 c7 0b 7c |..X._.1....'...|| -00000020 a5 9a 0f bd 07 09 d9 9b 95 bf f4 a5 80 c7 7d bd |..............}.| -00000030 a0 37 25 68 46 63 37 37 5f 3d b2 |.7%hFc77_=.| +00000000 14 03 01 00 01 01 16 03 01 00 30 f7 8f 4a 28 80 |..........0..J(.| +00000010 4c 9b cb 02 39 81 a4 19 84 d9 b3 64 48 4d a6 2b |L...9......dHM.+| +00000020 20 6a 1e 9d 6f d2 39 53 1a f4 27 0e dc 92 ec 71 | j..o.9S..'....q| +00000030 7d 48 66 67 6a 51 68 e4 7c 68 63 |}HfgjQh.|hc| >>> Flow 5 (client to server) -00000000 17 03 01 00 20 98 6e bd 0c 0e 46 88 05 6d 67 b3 |.... .n...F..mg.| -00000010 a7 92 7a 3c f2 98 8b ab 07 9e 80 bc 7a 5e 70 1a |..z<........z^p.| -00000020 2b 3d 2f 28 c9 17 03 01 00 20 f1 a8 ac 45 f6 60 |+=/(..... ...E.`| -00000030 ac 76 4e 66 1b a1 23 65 9c 55 6b 0b d4 cb 0a 43 |.vNf..#e.Uk....C| -00000040 42 d1 1e 1b 61 45 16 8e a8 c2 15 03 01 00 20 3d |B...aE........ =| -00000050 c0 ac 27 49 be 69 0e 23 cd 1b ea 01 0f 97 66 34 |..'I.i.#......f4| -00000060 f8 bd a6 40 35 af 5b 1f cf 42 25 54 aa 2f 2e |...@5.[..B%T./.| +00000000 17 03 01 00 20 ca ea fd d5 01 d1 47 40 a5 57 4f |.... ......G@.WO| +00000010 b0 80 29 e5 a0 4a f2 09 34 02 46 10 45 3a 05 42 |..)..J..4.F.E:.B| +00000020 0f 19 eb a2 33 17 03 01 00 20 34 92 d3 ed e4 50 |....3.... 4....P| +00000030 13 e9 5c 65 01 fc c1 a3 28 77 c8 d6 2c 11 7f 68 |..\e....(w..,..h| +00000040 b9 08 51 53 c9 f3 d3 4e 9a 24 15 03 01 00 20 07 |..QS...N.$.... .| +00000050 4d 53 0a 85 d4 49 c4 7b a2 4c 38 8d cc 8e 2a dd |MS...I.{.L8...*.| +00000060 24 da 28 07 f8 4b c5 2c d2 15 e2 b5 b9 56 b1 |$.(..K.,.....V.| diff --git a/src/crypto/tls/testdata/Client-TLSv10-ECDHE-RSA-AES b/src/crypto/tls/testdata/Client-TLSv10-ECDHE-RSA-AES index 694cd4ce89..9790da472e 100644 --- a/src/crypto/tls/testdata/Client-TLSv10-ECDHE-RSA-AES +++ b/src/crypto/tls/testdata/Client-TLSv10-ECDHE-RSA-AES @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 01 00 5d 02 00 00 59 03 01 5a a9 a1 6f fa |....]...Y..Z..o.| -00000010 19 95 38 9e 68 42 d7 0f 73 23 09 3f 01 5f e8 ae |..8.hB..s#.?._..| -00000020 d7 06 a2 9b d3 01 0f 0d 23 53 7d 20 55 2b 67 4e |........#S} U+gN| -00000030 8b 44 94 a5 25 ef b7 fb e1 c7 85 e8 15 60 f9 d7 |.D..%........`..| -00000040 6d a4 3f 3d 42 d7 78 a6 41 49 b7 12 c0 13 00 00 |m.?=B.x.AI......| +00000000 16 03 01 00 5d 02 00 00 59 03 01 2d 3f 4f 1e 90 |....]...Y..-?O..| +00000010 6e 65 37 1c 8e a3 17 98 72 de 49 69 4d b9 61 c9 |ne7.....r.IiM.a.| +00000020 20 c2 92 6f 4f d1 a8 dc 61 71 4d 20 67 dc 24 8f | ..oO...aqM g.$.| +00000030 59 12 a0 19 ab ca e1 3a 44 e7 b3 32 bd 7d 04 96 |Y......:D..2.}..| +00000040 41 1a 44 f6 fb 60 14 8f 6f f8 0e 69 c0 13 00 00 |A.D..`..o..i....| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 01 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -61,36 +63,36 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 01 00 aa 0c 00 00 a6 03 00 1d 20 a7 ec f4 |............ ...| -000002d0 c7 51 5e a0 fb 55 5a 01 34 cc d1 a6 22 df d6 00 |.Q^..UZ.4..."...| -000002e0 f5 73 e0 9e b8 9d 2a a9 49 3a 99 ba 17 00 80 14 |.s....*.I:......| -000002f0 95 47 77 a1 48 b4 e7 ba 6a e8 0e 4e ee 55 25 f5 |.Gw.H...j..N.U%.| -00000300 ea 82 65 b4 3f db a2 94 03 cc d3 6c 4a e6 cf 57 |..e.?......lJ..W| -00000310 25 4c 79 b8 fb ab dd 1f 68 e4 55 87 b1 46 12 30 |%Ly.....h.U..F.0| -00000320 5e 9f 3d 4a 52 24 76 50 c8 54 83 a2 b9 f5 a6 e0 |^.=JR$vP.T......| -00000330 ec e1 fb ae dd ca d2 c9 b2 31 d5 d4 73 f4 c0 0a |.........1..s...| -00000340 29 1c d3 8e 87 4c b4 0a 37 e8 77 e4 e2 a7 e9 9c |)....L..7.w.....| -00000350 04 ba af 31 dc 2e 5a b3 2e f3 58 e6 21 0a e2 1c |...1..Z...X.!...| -00000360 d4 c6 be b1 70 83 22 05 f8 78 12 6e bd 53 22 16 |....p."..x.n.S".| +000002c0 16 03 01 00 aa 0c 00 00 a6 03 00 1d 20 91 5b 49 |............ .[I| +000002d0 6b 53 81 6a 82 c4 1b db 31 cd d9 3a aa e4 a3 a8 |kS.j....1..:....| +000002e0 76 8d 29 ba a4 27 eb fe 19 98 de 4c 20 00 80 71 |v.)..'.....L ..q| +000002f0 a2 66 8e 70 55 ec 04 3c dd 5a 5e 79 fb 25 2b af |.f.pU..<.Z^y.%+.| +00000300 dc aa 47 03 9b c3 99 d2 20 83 81 cb 82 68 8e 62 |..G..... ....h.b| +00000310 26 90 78 d0 8c 9c 49 87 34 22 c1 0c 73 a8 de 79 |&.x...I.4"..s..y| +00000320 3c 73 e9 49 15 f0 63 17 19 bb cb 5f 97 c6 20 80 |.....&..;K.| +00000350 15 96 f8 84 30 6d b9 e3 44 c4 45 57 aa d1 53 9e |....0m..D.EW..S.| +00000360 cc c9 09 c2 1b 17 0d 8f f7 d7 0e 9d 86 33 60 16 |.............3`.| 00000370 03 01 00 04 0e 00 00 00 |........| >>> Flow 3 (client to server) 00000000 16 03 01 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 01 00 01 01 |....._X.;t......| -00000030 16 03 01 00 30 0f 56 a4 2c c6 11 a2 0a a8 f7 ff |....0.V.,.......| -00000040 6e 71 19 e9 e5 c0 e2 6b 86 9b b1 5d 46 8d 62 93 |nq.....k...]F.b.| -00000050 69 7c 28 6f 25 3d dc ce fa 6f 91 9e b8 8c 15 cd |i|(o%=...o......| -00000060 6a b1 72 ce a8 |j.r..| +00000030 16 03 01 00 30 16 75 14 eb 02 a0 e1 02 79 5f fe |....0.u......y_.| +00000040 fe e6 89 69 f1 5b 57 01 58 0f 4c 7d 4e 27 ed ae |...i.[W.X.L}N'..| +00000050 b8 b2 b9 53 24 f1 f1 d0 0b f2 d2 a0 21 ca 68 37 |...S$.......!.h7| +00000060 26 56 78 68 5c |&Vxh\| >>> Flow 4 (server to client) -00000000 14 03 01 00 01 01 16 03 01 00 30 d0 aa 00 27 9e |..........0...'.| -00000010 fb 56 22 9f 65 ab 3c cf 34 d9 a0 92 08 62 f2 fe |.V".e.<.4....b..| -00000020 29 4b 0c 14 b0 72 f5 c0 f8 2b 7e 1f 38 ad 68 7e |)K...r...+~.8.h~| -00000030 37 c3 fb 26 5a 5b 42 39 83 33 c0 |7..&Z[B9.3.| +00000000 14 03 01 00 01 01 16 03 01 00 30 0b c7 b6 d7 69 |..........0....i| +00000010 7a f5 d7 06 f7 e3 78 7b 35 44 c0 88 4d c2 c7 6f |z.....x{5D..M..o| +00000020 93 0c 61 32 10 47 08 0d e3 44 4f 1a 71 80 e3 96 |..a2.G...DO.q...| +00000030 15 b4 f0 29 b5 d3 7a 78 94 9e a2 |...)..zx...| >>> Flow 5 (client to server) -00000000 17 03 01 00 20 0e 54 7f 5d b9 f2 73 9d a5 49 25 |.... .T.]..s..I%| -00000010 c6 b9 03 1e fb 84 76 a9 69 ca 25 79 c3 a4 60 18 |......v.i.%y..`.| -00000020 94 ff 92 47 4f 17 03 01 00 20 cd 19 d2 cd 7d 7d |...GO.... ....}}| -00000030 3b a1 65 ee 4e a2 f2 02 55 02 28 54 28 92 c9 ec |;.e.N...U.(T(...| -00000040 db 59 f6 7d 2f 9e 7b 66 0e be 15 03 01 00 20 4f |.Y.}/.{f...... O| -00000050 ab cd 12 5b c4 f4 03 0e 57 03 3d f5 4e 09 8b 83 |...[....W.=.N...| -00000060 8b c6 9c c7 eb 30 8c f2 43 f6 10 30 14 80 c5 |.....0..C..0...| +00000000 17 03 01 00 20 aa 76 ee c2 22 9f 8a 31 45 7e 10 |.... .v.."..1E~.| +00000010 97 00 68 2f 54 fa d9 a9 ad 6a 22 0b 85 c9 f7 f6 |..h/T....j".....| +00000020 18 02 59 10 51 17 03 01 00 20 23 9e 9f 87 02 fd |..Y.Q.... #.....| +00000030 6f d9 22 8d d3 db 4a 42 ac 9b 9a 69 7e 54 20 ab |o."...JB...i~T .| +00000040 72 29 4f 06 c6 d2 54 a9 9f 46 15 03 01 00 20 06 |r)O...T..F.... .| +00000050 51 cd cd 83 a9 ce c5 18 4f 5c 0f a6 68 5b c2 07 |Q.......O\..h[..| +00000060 31 59 c1 2a bd 4e 21 be 63 5f 29 49 a7 30 4e |1Y.*.N!.c_)I.0N| diff --git a/src/crypto/tls/testdata/Client-TLSv10-ExportKeyingMaterial b/src/crypto/tls/testdata/Client-TLSv10-ExportKeyingMaterial index 92ae0927a0..6c83cc335e 100644 --- a/src/crypto/tls/testdata/Client-TLSv10-ExportKeyingMaterial +++ b/src/crypto/tls/testdata/Client-TLSv10-ExportKeyingMaterial @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 01 00 5d 02 00 00 59 03 01 6f 36 7b f5 f4 |....]...Y..o6{..| -00000010 3b 49 31 64 aa 42 a7 8c a2 4d 00 a7 9c b9 b6 9c |;I1d.B...M......| -00000020 0d 2f 09 81 e8 ab 74 77 11 fe 0b 20 e0 b9 92 4d |./....tw... ...M| -00000030 e2 70 fd 58 ec 58 02 f2 b3 44 d2 3d 7f c9 ad ca |.p.X.X...D.=....| -00000040 5c 78 fe f9 36 67 a8 b7 a8 0f 7a 1a c0 13 00 00 |\x..6g....z.....| +00000000 16 03 01 00 5d 02 00 00 59 03 01 6f 7c ae 3c cc |....]...Y..o|.<.| +00000010 76 04 54 ef 3c b8 48 b2 c3 fb 68 9d a3 91 e1 43 |v.T.<.H...h....C| +00000020 a1 d5 a0 fa 87 1c ed 6b 9c 14 da 20 c6 25 eb 72 |.......k... .%.r| +00000030 1c 0f c4 96 6a 75 ed 73 f9 20 75 8a 58 ca 5d 72 |....ju.s. u.X.]r| +00000040 3d 97 a2 3e e5 36 c5 04 f2 01 c7 1f c0 13 00 00 |=..>.6..........| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 01 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -61,36 +63,36 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 01 00 aa 0c 00 00 a6 03 00 1d 20 10 69 5f |............ .i_| -000002d0 db e5 a8 1f 14 81 0c c7 35 d4 3c 22 ee 17 a3 21 |........5.<"...!| -000002e0 47 9b e2 3c 5a f6 f5 46 b9 73 2a 7f 62 00 80 49 |G..ukv.........Mf| -00000340 57 70 1a 4c 21 27 7f c8 69 f4 f4 83 5c 44 32 b4 |Wp.L!'..i...\D2.| -00000350 73 18 a3 c4 4a c1 71 92 04 7a 49 49 15 25 05 a0 |s...J.q..zII.%..| -00000360 61 69 f8 38 4b 9f 92 96 f4 6b 6b 4b 96 60 45 16 |ai.8K....kkK.`E.| +000002c0 16 03 01 00 aa 0c 00 00 a6 03 00 1d 20 71 f2 c9 |............ q..| +000002d0 aa 88 45 b7 8a 34 c8 0b f4 09 5d fb c2 a2 27 ad |..E..4....]...'.| +000002e0 48 86 ba 5f c7 a6 55 10 a4 ef 9c 45 4e 00 80 b8 |H.._..U....EN...| +000002f0 82 3a a3 50 23 f2 a5 b2 69 fd 5b 36 b0 7a 16 6d |.:.P#...i.[6.z.m| +00000300 b7 7a df 77 bd 11 48 27 6c f5 7c 41 9c 66 50 13 |.z.w..H'l.|A.fP.| +00000310 1e 57 c5 28 79 2f 55 41 63 18 12 b6 d1 d9 6a 7b |.W.(y/UAc.....j{| +00000320 77 fe 95 44 16 f3 e5 6f f3 6c 39 15 da f5 bd 13 |w..D...o.l9.....| +00000330 35 fc dc ce 4e 7c 89 ae 46 d0 d5 5a b2 d2 d8 28 |5...N|..F..Z...(| +00000340 b2 e0 d8 6b 09 ed 4a 17 78 27 8d c4 14 26 86 6d |...k..J.x'...&.m| +00000350 2d 15 9e ec a9 09 11 71 1f b8 5b a8 24 33 55 09 |-......q..[.$3U.| +00000360 b1 b6 4d 55 b4 06 63 c5 89 a6 9d e1 19 41 b2 16 |..MU..c......A..| 00000370 03 01 00 04 0e 00 00 00 |........| >>> Flow 3 (client to server) 00000000 16 03 01 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 01 00 01 01 |....._X.;t......| -00000030 16 03 01 00 30 e2 8b e2 aa 5a 35 c5 e5 68 ce f4 |....0....Z5..h..| -00000040 fa 51 3f 7b 3e 99 2f 21 b2 c6 b2 70 74 af ae ca |.Q?{>./!...pt...| -00000050 36 86 78 08 ea 8f 02 29 e6 a6 71 fa ad 7f c6 97 |6.x....)..q.....| -00000060 54 6f 88 a3 4b |To..K| +00000030 16 03 01 00 30 9e df 6e 5c c6 25 f6 20 e1 0d 34 |....0..n\.%. ..4| +00000040 c8 a7 38 07 20 b7 fc e2 4d da 40 7f 29 38 7b 42 |..8. ...M.@.)8{B| +00000050 af 9b 6f 14 a7 68 15 2e a0 53 67 73 19 ef 08 c3 |..o..h...Sgs....| +00000060 d0 c5 af cf b6 |.....| >>> Flow 4 (server to client) -00000000 14 03 01 00 01 01 16 03 01 00 30 af 26 01 47 8a |..........0.&.G.| -00000010 a3 08 b2 79 1c fe fa 91 e8 4b a6 e1 ad 8e 59 b7 |...y.....K....Y.| -00000020 ea 41 ee 3e 3a aa 2f f2 07 9e 0d 90 3d 6f 92 d5 |.A.>:./.....=o..| -00000030 72 92 ad ae ee c8 5d 48 a0 25 46 |r.....]H.%F| +00000000 14 03 01 00 01 01 16 03 01 00 30 5c e5 b5 c2 ef |..........0\....| +00000010 6e 64 45 f9 c8 0f 9f 6a 41 b8 47 ad f5 25 af e5 |ndE....jA.G..%..| +00000020 4c 78 86 dc b9 25 c3 0c 69 f7 41 ec 94 a8 06 4c |Lx...%..i.A....L| +00000030 b5 37 f8 17 b8 34 37 c2 7c ff d3 |.7...47.|..| >>> Flow 5 (client to server) -00000000 17 03 01 00 20 29 2b 6a 75 2b 1b 94 f4 cb 80 14 |.... )+ju+......| -00000010 16 91 ec 08 77 5a 08 45 e7 51 2e a2 ec 03 f0 ca |....wZ.E.Q......| -00000020 35 88 20 3a 2e 17 03 01 00 20 59 0c 48 6f 66 8e |5. :..... Y.Hof.| -00000030 88 62 90 cc 33 39 62 ce 96 28 d0 2f 40 6e ed 14 |.b..39b..(./@n..| -00000040 94 72 88 d8 4a cb 73 24 a9 01 15 03 01 00 20 5c |.r..J.s$...... \| -00000050 8a 91 45 ed c9 38 e7 1d 71 02 b8 30 bf 24 0e 30 |..E..8..q..0.$.0| -00000060 6d fa 0a 4a 39 9f 56 b2 04 99 3e 67 bd bc d9 |m..J9.V...>g...| +00000000 17 03 01 00 20 98 c1 0e 51 02 22 68 39 62 1d 2f |.... ...Q."h9b./| +00000010 79 46 0d 97 2c c1 1f 9b aa cd 21 d8 7f c9 d6 bf |yF..,.....!.....| +00000020 f3 ef 94 ad 18 17 03 01 00 20 59 0c 3e 4e c7 ac |......... Y.>N..| +00000030 d2 2e 01 b9 39 69 09 ac 76 ce d8 6e e9 ea 6f 09 |....9i..v..n..o.| +00000040 23 f4 75 4f 20 c0 a9 a8 8f 21 15 03 01 00 20 e5 |#.uO ....!.... .| +00000050 e1 6c 39 c4 51 0a 13 b1 ec ef 75 ce e0 b8 d5 08 |.l9.Q.....u.....| +00000060 22 22 b1 d0 61 78 c8 7d 3c 9c f2 bf 08 12 89 |""..ax.}<......| diff --git a/src/crypto/tls/testdata/Client-TLSv10-RSA-RC4 b/src/crypto/tls/testdata/Client-TLSv10-RSA-RC4 index 8fce559c72..cf9ec918eb 100644 --- a/src/crypto/tls/testdata/Client-TLSv10-RSA-RC4 +++ b/src/crypto/tls/testdata/Client-TLSv10-RSA-RC4 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 01 00 55 02 00 00 51 03 01 9b 6a cd e3 08 |....U...Q...j...| -00000010 29 e7 32 d1 53 14 f5 4a cf b7 61 1a 90 d6 9a 73 |).2.S..J..a....s| -00000020 ad 48 2a 08 ce d7 d7 cb f8 25 b1 20 c1 24 61 85 |.H*......%. .$a.| -00000030 31 d2 81 5e 8e c8 31 40 56 36 79 af bb f7 90 d3 |1..^..1@V6y.....| -00000040 06 5e 4b 5a 62 50 c0 d5 89 7f 35 70 00 05 00 00 |.^KZbP....5p....| +00000000 16 03 01 00 55 02 00 00 51 03 01 2a bd da 4f 4d |....U...Q..*..OM| +00000010 29 da 36 8a ab 13 02 82 da 2e 53 56 77 18 69 8a |).6.......SVw.i.| +00000020 52 ab b2 36 83 38 80 ca 5b 10 38 20 66 2c a6 cf |R..6.8..[.8 f,..| +00000030 90 d0 b5 23 0a 4f ac d8 04 09 b3 3a 87 56 f5 8e |...#.O.....:.V..| +00000040 68 11 9c 41 2c 3e 14 ea b8 ad e3 c4 00 05 00 00 |h..A,>..........| 00000050 09 ff 01 00 01 00 00 17 00 00 16 03 01 02 59 0b |..............Y.| 00000060 00 02 55 00 02 52 00 02 4f 30 82 02 4b 30 82 01 |..U..R..O0..K0..| 00000070 b4 a0 03 02 01 02 02 09 00 e8 f0 9d 3f e2 5b ea |............?.[.| @@ -72,15 +74,15 @@ 00000060 c5 70 0f 08 83 48 e9 48 ef 6e 50 8b 05 7e e5 84 |.p...H.H.nP..~..| 00000070 25 fa 55 c7 ae 31 02 27 00 ef 3f 98 86 20 12 89 |%.U..1.'..?.. ..| 00000080 91 59 28 b4 f7 d7 af d2 69 61 35 14 03 01 00 01 |.Y(.....ia5.....| -00000090 01 16 03 01 00 24 b3 7b e6 d1 8f 79 04 e2 42 0f |.....$.{...y..B.| -000000a0 61 de d2 be 1e 4d 8f d4 6f 7e 2d 59 cf 23 ff 1e |a....M..o~-Y.#..| -000000b0 74 ea 2a 9c 7e e2 5b 23 05 2e |t.*.~.[#..| +00000090 01 16 03 01 00 24 e7 0e d1 a9 78 47 47 d3 9e c7 |.....$....xGG...| +000000a0 76 6d f7 e7 5e b6 df ff e0 e8 2f a6 9d b4 70 eb |vm..^...../...p.| +000000b0 06 00 c9 0e 42 f6 3f 2f 23 83 |....B.?/#.| >>> Flow 4 (server to client) -00000000 14 03 01 00 01 01 16 03 01 00 24 3c 4e 68 82 8f |..........$>> Flow 5 (client to server) -00000000 17 03 01 00 1a e0 a4 39 3c 9c 5c 8e 60 db 8e 5c |.......9<.\.`..\| -00000010 13 aa 60 4a 1c f0 71 1b f2 4d a9 f8 52 07 bd 15 |..`J..q..M..R...| -00000020 03 01 00 16 9e f3 0a 66 42 77 5a 75 74 18 85 f1 |.......fBwZut...| -00000030 3c fb ea d4 b8 76 6d eb 48 3d |<....vm.H=| +00000000 17 03 01 00 1a a0 8c 45 7f 0d 75 48 6f 15 7b af |.......E..uHo.{.| +00000010 6c e5 d2 10 c6 f2 ba 1e 09 50 83 40 f2 96 7c 15 |l........P.@..|.| +00000020 03 01 00 16 53 b3 bd 98 38 ed 20 35 0a 5a 03 f3 |....S...8. 5.Z..| +00000030 49 5c 69 85 4d ae 7e f9 fc 9d |I\i.M.~...| diff --git a/src/crypto/tls/testdata/Client-TLSv11-ECDHE-ECDSA-AES b/src/crypto/tls/testdata/Client-TLSv11-ECDHE-ECDSA-AES index 0ad2db0575..3a5fa10a13 100644 --- a/src/crypto/tls/testdata/Client-TLSv11-ECDHE-ECDSA-AES +++ b/src/crypto/tls/testdata/Client-TLSv11-ECDHE-ECDSA-AES @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 02 00 5d 02 00 00 59 03 02 51 70 ac 24 75 |....]...Y..Qp.$u| -00000010 53 94 02 c6 20 8e 22 0d b2 79 30 3b ee a1 00 44 |S... ."..y0;...D| -00000020 f3 1c b8 a3 4c 51 c4 d9 30 95 d4 20 ca 82 67 4f |....LQ..0.. ..gO| -00000030 8c 13 5f c2 7e fc e0 0c 04 5c e2 9a c2 a3 02 a1 |.._.~....\......| -00000040 bc fa ca 16 38 83 2e 5a c1 75 19 67 c0 09 00 00 |....8..Z.u.g....| +00000000 16 03 02 00 5d 02 00 00 59 03 02 2b 28 48 86 02 |....]...Y..+(H..| +00000010 ae 35 61 75 02 0b ea 8c a1 3b ea c3 6c 26 e6 8d |.5au.....;..l&..| +00000020 a0 49 0c 96 f2 a4 75 b6 5d f5 29 20 ff 34 87 5d |.I....u.].) .4.]| +00000030 f9 ca 98 f2 49 10 3b 98 ff 30 5f a4 28 0d 9b d1 |....I.;..0_.(...| +00000040 60 02 7b fe a0 b8 7e 40 4e fb 45 54 c0 09 00 00 |`.{...~@N.ET....| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 02 02 0e 0b 00 02 0a 00 02 07 00 02 |................| 00000070 04 30 82 02 00 30 82 01 62 02 09 00 b8 bf 2d 47 |.0...0..b.....-G| @@ -56,39 +58,39 @@ 00000240 8c 25 c1 33 13 83 0d 94 06 bb d4 37 7a f6 ec 7a |.%.3.......7z..z| 00000250 c9 86 2e dd d7 11 69 7f 85 7c 56 de fb 31 78 2b |......i..|V..1x+| 00000260 e4 c7 78 0d ae cb be 9e 4e 36 24 31 7b 6a 0f 39 |..x.....N6$1{j.9| -00000270 95 12 07 8f 2a 16 03 02 00 b5 0c 00 00 b1 03 00 |....*...........| -00000280 1d 20 4a 31 cd 48 ea 05 09 8a 6d 78 c5 46 5d ea |. J1.H....mx.F].| -00000290 fb aa 62 79 17 70 31 5e 5a 95 c1 ce a9 52 3e 8e |..by.p1^Z....R>.| -000002a0 a1 7b 00 8b 30 81 88 02 42 01 e1 c6 99 40 d7 9f |.{..0...B....@..| -000002b0 15 41 f4 4f 54 5f 5d 14 bd a6 cc 18 6e 67 98 ab |.A.OT_].....ng..| -000002c0 6a 33 9d 54 68 94 2a 89 22 66 2d 20 97 e7 53 c9 |j3.Th.*."f- ..S.| -000002d0 f8 ee ad 64 46 6e 53 1d d6 57 55 6a 4c bc 37 1f |...dFnS..WUjL.7.| -000002e0 e7 9c c4 bb 23 cb af 27 2a 19 94 02 42 01 35 b4 |....#..'*...B.5.| -000002f0 a1 f0 c2 6d 34 f0 05 a7 25 9a 22 6c 3e 41 e7 a0 |...m4...%."l>A..| -00000300 1e 8f 5a 28 b1 5a 88 46 48 7e 40 93 f2 38 9d 33 |..Z(.Z.FH~@..8.3| -00000310 6b b5 92 ed 6d 44 07 03 c8 77 ee 3a 80 37 1e f9 |k...mD...w.:.7..| -00000320 4d 5c 2b 6d c5 15 07 b2 7c eb c5 f5 c5 14 dd 16 |M\+m....|.......| -00000330 03 02 00 04 0e 00 00 00 |........| +00000270 95 12 07 8f 2a 16 03 02 00 b4 0c 00 00 b0 03 00 |....*...........| +00000280 1d 20 33 24 10 dd 39 bf dd 42 80 f9 51 75 5d d5 |. 3$..9..B..Qu].| +00000290 e3 97 b0 70 c8 9a e5 3c 90 5a f6 84 e7 17 2e d4 |...p...<.Z......| +000002a0 71 6e 00 8a 30 81 87 02 42 01 f3 ed 17 7f 96 9d |qn..0...B.......| +000002b0 52 49 6b fd fb 94 28 67 8d 2f 75 7c 59 31 d1 b7 |RIk...(g./u|Y1..| +000002c0 61 ed 94 c6 1a df 49 e6 9f 19 f1 54 0f 28 2f 3b |a.....I....T.(/;| +000002d0 18 fc 73 61 6d 7c 7e dd 61 80 d7 98 2e 20 6a 54 |..sam|~.a.... jT| +000002e0 37 23 2b d7 11 e0 fa a4 98 49 78 02 41 39 49 af |7#+......Ix.A9I.| +000002f0 f9 28 5c 2b 50 0d 6e be 13 17 df 9a fb d0 71 9c |.(\+P.n.......q.| +00000300 6c 43 eb 09 90 ce 09 bd f3 54 9f 73 da c7 ef f3 |lC.......T.s....| +00000310 df 36 0e 75 d5 cc 4d 42 a5 d8 4c f9 e9 32 b9 90 |.6.u..MB..L..2..| +00000320 9f fd 6c 70 bc d6 cf 73 b6 0b f0 db 55 d6 16 03 |..lp...s....U...| +00000330 02 00 04 0e 00 00 00 |.......| >>> Flow 3 (client to server) 00000000 16 03 02 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 02 00 01 01 |....._X.;t......| 00000030 16 03 02 00 40 00 00 00 00 00 00 00 00 00 00 00 |....@...........| -00000040 00 00 00 00 00 40 aa 15 c7 e0 2e f6 9e e8 aa 92 |.....@..........| -00000050 81 6d 83 8f 13 7e 7c d5 9f b9 bf ca 5d da fd 3c |.m...~|.....]..<| -00000060 ba c7 8e 8e 9a 93 86 21 49 15 04 9d b8 75 c1 fe |.......!I....u..| -00000070 5b a6 41 d5 46 |[.A.F| +00000040 00 00 00 00 00 2b 2a 78 3f 77 6c 2d e6 26 0f ac |.....+*x?wl-.&..| +00000050 c3 d8 c9 0f c0 3d c7 7c e4 08 da 9c af 0f 88 4c |.....=.|.......L| +00000060 2f 8e c0 96 78 a4 1f 2c 73 8c 7d 93 28 d1 ce e2 |/...x..,s.}.(...| +00000070 06 74 35 9d ba |.t5..| >>> Flow 4 (server to client) -00000000 14 03 02 00 01 01 16 03 02 00 40 ba a7 6d aa 40 |..........@..m.@| -00000010 b5 94 f8 d6 84 38 7c 19 7f b9 e9 8b 0f a8 db 4c |.....8|........L| -00000020 68 cf 1e d4 e0 b2 7c 78 80 76 18 c7 a5 cf 57 2d |h.....|x.v....W-| -00000030 1e 3d 17 b2 ce 44 93 76 38 91 4b d0 7f 09 00 2f |.=...D.v8.K..../| -00000040 c2 da c7 32 70 de fd cb a4 99 90 |...2p......| +00000000 14 03 02 00 01 01 16 03 02 00 40 a7 8b 1b c5 b8 |..........@.....| +00000010 b6 44 7d 9b 34 e7 c7 f1 d2 c6 19 e8 13 d4 0a b1 |.D}.4...........| +00000020 07 ae 88 d1 7b 34 ca 0e 84 ab b3 e5 d6 13 22 22 |....{4........""| +00000030 2b 1c e6 c9 2e b6 15 46 55 7d 2c 34 69 2b 06 62 |+......FU},4i+.b| +00000040 d9 ef ce da d7 c8 98 3a e5 23 87 |.......:.#.| >>> Flow 5 (client to server) 00000000 17 03 02 00 30 00 00 00 00 00 00 00 00 00 00 00 |....0...........| -00000010 00 00 00 00 00 86 40 c2 e7 d4 56 43 6b e0 e4 96 |......@...VCk...| -00000020 41 74 2e b1 65 cd c6 93 06 71 f0 25 20 21 c5 1b |At..e....q.% !..| -00000030 d2 ea eb e4 06 15 03 02 00 30 00 00 00 00 00 00 |.........0......| -00000040 00 00 00 00 00 00 00 00 00 00 1e a9 c0 dc d8 23 |...............#| -00000050 f2 08 b0 c5 b2 2e 53 9b 23 50 8a 02 c6 41 9a 36 |......S.#P...A.6| -00000060 59 b1 23 d9 5e 91 45 cf 1b a1 |Y.#.^.E...| +00000010 00 00 00 00 00 8f de 5e 92 28 7d 7d 8a 7e 48 40 |.......^.(}}.~H@| +00000020 9b a6 8c 13 d3 fe 71 c9 d7 f9 a8 3a 06 64 da f2 |......q....:.d..| +00000030 dc cf 69 f2 4b 15 03 02 00 30 00 00 00 00 00 00 |..i.K....0......| +00000040 00 00 00 00 00 00 00 00 00 00 78 0f 3e c5 3c e9 |..........x.>.<.| +00000050 39 5d 5c 7a 2c 16 f0 7f b7 ca 3b 85 f3 ab f4 3d |9]\z,.....;....=| +00000060 ce df fd 6d 4d ad f4 89 38 ba |...mM...8.| diff --git a/src/crypto/tls/testdata/Client-TLSv11-ECDHE-RSA-AES b/src/crypto/tls/testdata/Client-TLSv11-ECDHE-RSA-AES index 83c7d77102..f15445e584 100644 --- a/src/crypto/tls/testdata/Client-TLSv11-ECDHE-RSA-AES +++ b/src/crypto/tls/testdata/Client-TLSv11-ECDHE-RSA-AES @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 02 00 5d 02 00 00 59 03 02 79 2f de f0 f3 |....]...Y..y/...| -00000010 97 6a 5e e3 07 66 d9 f2 8b e9 be 1a 97 9f 6d c8 |.j^..f........m.| -00000020 9d b5 88 57 fc 8c 5d 7f d7 3e 34 20 e5 4c 51 33 |...W..]..>4 .LQ3| -00000030 52 23 a0 52 77 ca 41 4a 1b e4 22 fb 1c 82 f8 e4 |R#.Rw.AJ..".....| -00000040 aa 13 c2 1a ce cd d5 42 de b0 e9 10 c0 13 00 00 |.......B........| +00000000 16 03 02 00 5d 02 00 00 59 03 02 87 2b b1 e5 7b |....]...Y...+..{| +00000010 0e 0d 78 af b9 41 3c 0b 5a 38 2f 40 6d 13 69 da |..x..A<.Z8/@m.i.| +00000020 3a d6 e5 62 ef 72 70 66 9d f0 f4 20 a4 e2 a1 a7 |:..b.rpf... ....| +00000030 51 f7 7e 23 38 df 2e dd 0b 2f 87 a5 86 93 aa 9d |Q.~#8..../......| +00000040 0e aa 02 2b 42 31 cb 36 f3 6b 8e db c0 13 00 00 |...+B1.6.k......| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 02 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -61,38 +63,38 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 02 00 aa 0c 00 00 a6 03 00 1d 20 ef 2a b0 |............ .*.| -000002d0 da 99 1f 17 dc 29 38 43 c2 72 18 b6 ea ad 8f e6 |.....)8C.r......| -000002e0 f2 d2 81 e5 f6 2e 6c 5a 95 89 10 14 34 00 80 11 |......lZ....4...| -000002f0 ff 56 fa 9e 9f 0c b9 a9 57 c4 2c cb a1 ce 70 ca |.V......W.,...p.| -00000300 94 bd 5e 54 0e eb da ce 1b 19 ee bc aa bb 9c 10 |..^T............| -00000310 f8 6e 59 48 82 5e fe 3c 2e 28 6d 8a 2f 08 ce df |.nYH.^.<.(m./...| -00000320 52 e2 07 a6 68 68 69 fc 2b d7 fd 28 ef 48 85 c9 |R...hhi.+..(.H..| -00000330 70 75 b4 f4 04 2f 39 69 ee 1a aa 14 c9 7b e0 f7 |pu.../9i.....{..| -00000340 bc 50 76 df 24 57 8b a4 ca 87 8a b5 ff c9 13 9e |.Pv.$W..........| -00000350 d3 9e 2b e1 d4 6f 0c ce 61 83 e9 38 51 04 2e 23 |..+..o..a..8Q..#| -00000360 b4 f8 90 f4 0f 45 93 34 14 f4 ca 4f 13 02 89 16 |.....E.4...O....| +000002c0 16 03 02 00 aa 0c 00 00 a6 03 00 1d 20 94 fa 9b |............ ...| +000002d0 b7 34 fd 4c f3 a7 12 a3 0f 6a a2 d2 c3 35 71 3a |.4.L.....j...5q:| +000002e0 fa 5c 7e aa ab 17 c9 bf ae 29 a0 89 4e 00 80 26 |.\~......)..N..&| +000002f0 6a cd b9 50 a0 61 19 60 c6 fd 58 69 11 7a 11 ac |j..P.a.`..Xi.z..| +00000300 16 1d 20 4a 28 4d 7a 9c 7a cb b7 a0 ac 90 3d 25 |.. J(Mz.z.....=%| +00000310 dc a7 3d d0 5c d7 34 c4 a6 4c 47 73 8e 5a 1b 06 |..=.\.4..LGs.Z..| +00000320 a5 2d e1 5e 04 d4 c6 31 2e 24 79 6c 0b df 67 3a |.-.^...1.$yl..g:| +00000330 f1 7c 5f c0 37 4a ec 1e d2 32 7c 4f fa 9a d4 51 |.|_.7J...2|O...Q| +00000340 be 2a 76 f2 74 78 b6 cf 22 d6 3d 16 1b ca 6b 9b |.*v.tx..".=...k.| +00000350 d9 9a 3f 65 e4 83 63 91 15 f1 c4 69 45 a3 d9 ab |..?e..c....iE...| +00000360 f5 d3 a9 0e 15 00 20 bb 43 20 a7 90 db c6 1d 16 |...... .C ......| 00000370 03 02 00 04 0e 00 00 00 |........| >>> Flow 3 (client to server) 00000000 16 03 02 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 02 00 01 01 |....._X.;t......| 00000030 16 03 02 00 40 00 00 00 00 00 00 00 00 00 00 00 |....@...........| -00000040 00 00 00 00 00 34 fa 43 0a 6f 38 d0 80 5d a1 d6 |.....4.C.o8..]..| -00000050 61 c9 62 a9 b2 14 88 b4 7d b9 dc 20 93 11 27 37 |a.b.....}.. ..'7| -00000060 5a 2a 5b d4 10 54 75 23 8d 39 4a 5b 51 80 48 f2 |Z*[..Tu#.9J[Q.H.| -00000070 16 64 e5 90 38 |.d..8| +00000040 00 00 00 00 00 5e 93 f4 06 23 2b f4 7e d1 4f 6c |.....^...#+.~.Ol| +00000050 3e ad 67 fe 6c 33 42 e7 c0 ce 2b b9 38 0e ec 6e |>.g.l3B...+.8..n| +00000060 dc 78 d0 51 d9 57 ef 67 69 4e cd 51 52 9b 09 df |.x.Q.W.giN.QR...| +00000070 7e 8d ee cc f1 |~....| >>> Flow 4 (server to client) -00000000 14 03 02 00 01 01 16 03 02 00 40 f8 77 bf c0 dd |..........@.w...| -00000010 11 e1 3f 90 e0 1a c0 dc a6 6a b2 81 9b 1b 63 bc |..?......j....c.| -00000020 42 b6 23 b2 1f 95 36 38 56 f8 a4 e4 c1 c9 6f d2 |B.#...68V.....o.| -00000030 64 16 13 16 b7 25 53 ec a1 c2 94 de 8d ae 38 b9 |d....%S.......8.| -00000040 07 29 42 1d 16 3d fb 29 8b 76 15 |.)B..=.).v.| +00000000 14 03 02 00 01 01 16 03 02 00 40 22 ca 73 9e 54 |..........@".s.T| +00000010 72 60 64 fd f2 29 fa a1 47 04 ca e7 27 db 82 a8 |r`d..)..G...'...| +00000020 66 ed 3c 2b 8f 67 8e 09 1a 2d 24 3b 9e dc 8e 1e |f.<+.g...-$;....| +00000030 64 ba db a7 64 11 5a 6f e6 29 cc ed 73 6c 13 b8 |d...d.Zo.)..sl..| +00000040 40 44 5f d8 72 df 59 b8 a4 4f 7e |@D_.r.Y..O~| >>> Flow 5 (client to server) 00000000 17 03 02 00 30 00 00 00 00 00 00 00 00 00 00 00 |....0...........| -00000010 00 00 00 00 00 59 ac 45 2f 3f 3b d3 5d 73 08 85 |.....Y.E/?;.]s..| -00000020 9a 0e 99 a2 ad 8d 4e de 52 e9 5b 8b 76 71 5d 5e |......N.R.[.vq]^| -00000030 6b ec 05 24 a5 15 03 02 00 30 00 00 00 00 00 00 |k..$.....0......| -00000040 00 00 00 00 00 00 00 00 00 00 92 ce 2d b7 15 d2 |............-...| -00000050 3b c5 42 ad aa 73 a8 e0 ac 26 d2 e7 ef c7 a9 72 |;.B..s...&.....r| -00000060 75 96 5c 8c 2d 60 6e 57 bd ef |u.\.-`nW..| +00000010 00 00 00 00 00 51 2f d5 ee 59 bc cc c2 73 15 e1 |.....Q/..Y...s..| +00000020 15 cb 89 24 d8 7a 2c 2e d9 9c 9f fc 2b 90 f6 28 |...$.z,.....+..(| +00000030 fd e5 db 9b 0f 15 03 02 00 30 00 00 00 00 00 00 |.........0......| +00000040 00 00 00 00 00 00 00 00 00 00 a1 7a 29 17 c3 33 |...........z)..3| +00000050 87 e8 3a 81 97 ae df 40 97 fc 0b f4 6a 00 84 37 |..:....@....j..7| +00000060 8c 68 d1 8e db a8 d3 04 93 60 |.h.......`| diff --git a/src/crypto/tls/testdata/Client-TLSv11-RSA-RC4 b/src/crypto/tls/testdata/Client-TLSv11-RSA-RC4 index dd58620c47..bb770e61b1 100644 --- a/src/crypto/tls/testdata/Client-TLSv11-RSA-RC4 +++ b/src/crypto/tls/testdata/Client-TLSv11-RSA-RC4 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 02 00 55 02 00 00 51 03 02 42 bb c8 01 43 |....U...Q..B...C| -00000010 e4 f7 10 09 bf 35 a3 c2 d7 ca 60 a9 60 be 1d 00 |.....5....`.`...| -00000020 92 33 b6 3e 56 2b c2 f7 29 e3 f9 20 8c d7 b6 90 |.3.>V+..).. ....| -00000030 03 f5 8b 55 e9 81 47 5b 84 ec 19 bc 32 58 c6 30 |...U..G[....2X.0| -00000040 f1 79 ea 51 a2 18 cc c0 4e 8a 8e cb 00 05 00 00 |.y.Q....N.......| +00000000 16 03 02 00 55 02 00 00 51 03 02 fa ec 74 4b af |....U...Q....tK.| +00000010 f7 bb 7c 03 0a 35 f9 91 1e 62 c8 d7 9d b0 cc 29 |..|..5...b.....)| +00000020 0c 67 f1 a9 c6 be ff aa ee 45 2c 20 7e 02 45 29 |.g.......E, ~.E)| +00000030 e8 01 2c 76 c9 49 9c bf ca b7 0c b0 86 69 2a d0 |..,v.I.......i*.| +00000040 34 59 2c 16 b1 bd 67 1a e8 f9 97 3d 00 05 00 00 |4Y,...g....=....| 00000050 09 ff 01 00 01 00 00 17 00 00 16 03 02 02 59 0b |..............Y.| 00000060 00 02 55 00 02 52 00 02 4f 30 82 02 4b 30 82 01 |..U..R..O0..K0..| 00000070 b4 a0 03 02 01 02 02 09 00 e8 f0 9d 3f e2 5b ea |............?.[.| @@ -72,15 +74,15 @@ 00000060 c5 70 0f 08 83 48 e9 48 ef 6e 50 8b 05 7e e5 84 |.p...H.H.nP..~..| 00000070 25 fa 55 c7 ae 31 02 27 00 ef 3f 98 86 20 12 89 |%.U..1.'..?.. ..| 00000080 91 59 28 b4 f7 d7 af d2 69 61 35 14 03 02 00 01 |.Y(.....ia5.....| -00000090 01 16 03 02 00 24 a8 40 50 90 31 50 fc 5e d8 f5 |.....$.@P.1P.^..| -000000a0 64 7a a5 62 8d ad ce 03 34 c9 ab 16 31 45 bc 8b |dz.b....4...1E..| -000000b0 26 8b fa 38 7a 2e 60 42 86 46 |&..8z.`B.F| +00000090 01 16 03 02 00 24 8b f8 3f ae 9d 41 27 8e 52 ca |.....$..?..A'.R.| +000000a0 75 8c 1b 76 fa 20 4f 7f 97 62 ac a6 85 33 71 32 |u..v. O..b...3q2| +000000b0 34 8d 4b e3 d4 a1 a0 bc 9c 29 |4.K......)| >>> Flow 4 (server to client) -00000000 14 03 02 00 01 01 16 03 02 00 24 83 1d 5a 04 90 |..........$..Z..| -00000010 1f 8d 07 46 39 1e 3c cf cb 06 45 f5 88 9e 68 5c |...F9.<...E...h\| -00000020 96 a0 06 47 43 21 20 ce 90 1f 24 49 52 30 59 |...GC! ...$IR0Y| +00000000 14 03 02 00 01 01 16 03 02 00 24 1d d6 e8 70 53 |..........$...pS| +00000010 f2 9e 4f ce 5f 35 4e 8d 41 1f 78 9a 72 79 2b cc |..O._5N.A.x.ry+.| +00000020 17 cd 48 16 b0 69 8b 41 b7 5a c6 df ec f6 5d |..H..i.A.Z....]| >>> Flow 5 (client to server) -00000000 17 03 02 00 1a f9 9f c2 32 02 96 87 95 4b ba 17 |........2....K..| -00000010 1f b9 af fe 6a 87 38 d4 d8 b4 f8 1d ad 05 00 15 |....j.8.........| -00000020 03 02 00 16 54 07 15 34 f4 c3 a2 3e 01 9e 00 cb |....T..4...>....| -00000030 83 f7 58 79 e2 dc a4 b8 15 e9 |..Xy......| +00000000 17 03 02 00 1a 69 a6 2b fe 20 e2 2e e6 b2 ed 03 |.....i.+. ......| +00000010 92 ae e0 ff 84 56 12 f3 60 01 92 c0 f3 0e 8f 15 |.....V..`.......| +00000020 03 02 00 16 d1 05 c5 6f f3 3c 18 63 2b 9c 68 39 |.......o.<.c+.h9| +00000030 c4 45 90 f1 ef 3f e1 00 2f 78 |.E...?../x| diff --git a/src/crypto/tls/testdata/Client-TLSv12-AES128-GCM-SHA256 b/src/crypto/tls/testdata/Client-TLSv12-AES128-GCM-SHA256 index d88acc95f9..1db74434cc 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-AES128-GCM-SHA256 +++ b/src/crypto/tls/testdata/Client-TLSv12-AES128-GCM-SHA256 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 55 02 00 00 51 03 03 d1 5c 30 66 38 |....U...Q...\0f8| -00000010 84 89 85 fe b6 87 de 62 8e b5 86 18 16 f7 8f b0 |.......b........| -00000020 f2 00 09 e5 55 d7 10 a0 76 d8 58 20 23 7d ff 5f |....U...v.X #}._| -00000030 b4 b5 5b de b9 7a f9 d1 bc 90 ff 2c 1d d7 fe ed |..[..z.....,....| -00000040 2f 6e 29 d8 08 61 0b 9d cc 7d 64 6a 00 9c 00 00 |/n)..a...}dj....| +00000000 16 03 03 00 55 02 00 00 51 03 03 00 13 58 0b 7f |....U...Q....X..| +00000010 3c 39 9d df c9 4e 95 64 d5 9f 86 b0 8b 19 35 a2 |<9...N.d......5.| +00000020 71 da 39 5b 14 a5 a4 fd 79 8b 02 20 bf a6 01 51 |q.9[....y.. ...Q| +00000030 3e 8d 7a 68 ef 24 9a a1 92 d8 72 6a 71 0e c9 fa |>.zh.$....rjq...| +00000040 f9 03 36 ca 4b 8a fd 17 95 f5 53 e7 00 9c 00 00 |..6.K.....S.....| 00000050 09 ff 01 00 01 00 00 17 00 00 16 03 03 02 59 0b |..............Y.| 00000060 00 02 55 00 02 52 00 02 4f 30 82 02 4b 30 82 01 |..U..R..O0..K0..| 00000070 b4 a0 03 02 01 02 02 09 00 e8 f0 9d 3f e2 5b ea |............?.[.| @@ -72,17 +74,17 @@ 00000060 c5 70 0f 08 83 48 e9 48 ef 6e 50 8b 05 7e e5 84 |.p...H.H.nP..~..| 00000070 25 fa 55 c7 ae 31 02 27 00 ef 3f 98 86 20 12 89 |%.U..1.'..?.. ..| 00000080 91 59 28 b4 f7 d7 af d2 69 61 35 14 03 03 00 01 |.Y(.....ia5.....| -00000090 01 16 03 03 00 28 00 00 00 00 00 00 00 00 df b8 |.....(..........| -000000a0 35 7a 3e 44 d1 f5 6c c5 43 82 3a ac 11 c8 53 0b |5z>D..l.C.:...S.| -000000b0 a6 d3 5c f0 5b ca e8 6a c7 13 88 65 50 71 |..\.[..j...ePq| +00000090 01 16 03 03 00 28 00 00 00 00 00 00 00 00 07 7c |.....(.........|| +000000a0 26 b4 f3 ba 9c 22 69 af a3 77 5f a3 59 9c b7 58 |&...."i..w_.Y..X| +000000b0 90 e2 de e3 4f ab b6 2a 08 f4 63 14 9e 5f |....O..*..c.._| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 28 3f 30 36 77 c6 |..........(?06w.| -00000010 6d 4f 37 2c ac f1 c2 24 9d e1 3f 0c 51 64 12 67 |mO7,...$..?.Qd.g| -00000020 83 47 ec f1 b8 02 6d 11 11 b7 ec ab 09 26 41 ff |.G....m......&A.| -00000030 e8 32 05 |.2.| +00000000 14 03 03 00 01 01 16 03 03 00 28 d1 2c 6c a6 ff |..........(.,l..| +00000010 35 08 ad e8 3d cd f4 71 1c f7 62 97 44 c5 41 26 |5...=..q..b.D.A&| +00000020 a4 ff a6 eb 63 e7 45 b1 31 3e ea 0e 33 b4 1d 4a |....c.E.1>..3..J| +00000030 9b 1f 87 |...| >>> Flow 5 (client to server) -00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 af 3a 1e |..............:.| -00000010 98 3e 74 5f 66 64 eb 6c 88 36 33 f0 98 e8 46 e9 |.>t_fd.l.63...F.| -00000020 f1 2f 32 15 03 03 00 1a 00 00 00 00 00 00 00 02 |./2.............| -00000030 76 2b 83 08 46 7d 34 58 db e8 e8 e1 e2 cb ad 1e |v+..F}4X........| -00000040 e4 a5 |..| +00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 6f ba 97 |.............o..| +00000010 a1 bb 88 f8 58 ce b3 81 94 20 97 f0 cd 79 5f 9e |....X.... ...y_.| +00000020 3d 3f b5 15 03 03 00 1a 00 00 00 00 00 00 00 02 |=?..............| +00000030 8e 92 d4 4f a2 0e e5 69 e5 9a 7f 7d da 93 54 5c |...O...i...}..T\| +00000040 6e 4d |nM| diff --git a/src/crypto/tls/testdata/Client-TLSv12-AES128-SHA256 b/src/crypto/tls/testdata/Client-TLSv12-AES128-SHA256 index 030cbc6f2b..57fbc75c80 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-AES128-SHA256 +++ b/src/crypto/tls/testdata/Client-TLSv12-AES128-SHA256 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 55 02 00 00 51 03 03 bd e7 e2 ea 28 |....U...Q......(| -00000010 09 0b 7f 30 b5 91 fd b4 91 d1 c3 b8 8f 25 38 88 |...0.........%8.| -00000020 62 28 5c 1d 14 1a 6a 50 7d 30 e8 20 c3 91 2d ea |b(\...jP}0. ..-.| -00000030 59 8d 1d 56 98 c9 02 c0 f1 98 94 a6 8c 2b f2 63 |Y..V.........+.c| -00000040 ed b9 97 36 c6 c6 32 97 9e 61 6c 3b 00 3c 00 00 |...6..2..al;.<..| +00000000 16 03 03 00 55 02 00 00 51 03 03 84 b7 a9 d5 83 |....U...Q.......| +00000010 f6 80 cf 15 58 39 5a 3b 4b f1 6d 2a 86 8b 92 ed |....X9Z;K.m*....| +00000020 f8 fb e0 16 c1 2c 94 3a eb 69 c4 20 e1 b7 43 24 |.....,.:.i. ..C$| +00000030 e7 9c 69 47 60 48 b0 8b 2b 0b 52 2a 8b 8b 5b 1f |..iG`H..+.R*..[.| +00000040 67 12 f6 94 46 c5 b1 53 73 29 f9 d6 00 3c 00 00 |g...F..Ss)...<..| 00000050 09 ff 01 00 01 00 00 17 00 00 16 03 03 02 59 0b |..............Y.| 00000060 00 02 55 00 02 52 00 02 4f 30 82 02 4b 30 82 01 |..U..R..O0..K0..| 00000070 b4 a0 03 02 01 02 02 09 00 e8 f0 9d 3f e2 5b ea |............?.[.| @@ -73,25 +75,25 @@ 00000070 25 fa 55 c7 ae 31 02 27 00 ef 3f 98 86 20 12 89 |%.U..1.'..?.. ..| 00000080 91 59 28 b4 f7 d7 af d2 69 61 35 14 03 03 00 01 |.Y(.....ia5.....| 00000090 01 16 03 03 00 50 00 00 00 00 00 00 00 00 00 00 |.....P..........| -000000a0 00 00 00 00 00 00 f3 6e c5 65 29 75 22 fe 23 6f |.......n.e)u".#o| -000000b0 96 fa b3 8d 98 ac df bf 3a 23 ca 4f d9 52 95 3f |........:#.O.R.?| -000000c0 89 8b 61 cf d2 2d f3 14 31 9d 3a 6f a9 b5 7b 69 |..a..-..1.:o..{i| -000000d0 27 a6 2b 2d 43 6e 77 f1 cd 73 fa 80 7b bf 8a 1d |'.+-Cnw..s..{...| -000000e0 83 c5 9b 8c 0a 03 |......| +000000a0 00 00 00 00 00 00 46 00 2f ca 25 2b 92 37 79 de |......F./.%+.7y.| +000000b0 88 56 36 da ea 43 78 d7 51 72 53 c1 8b ae 33 3a |.V6..Cx.QrS...3:| +000000c0 d2 93 57 08 a1 14 22 5b 5b 33 fe 7c 13 33 17 d6 |..W..."[[3.|.3..| +000000d0 ef 3b be e6 1c ee 09 c0 5e 86 89 9d 50 e2 e9 b3 |.;......^...P...| +000000e0 3b 09 4c 70 f8 eb |;.Lp..| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 50 f6 93 f3 85 25 |..........P....%| -00000010 06 5c 47 ea d5 6e 90 05 21 91 9a 86 06 42 f6 54 |.\G..n..!....B.T| -00000020 25 4a 61 65 7e 19 c8 1a 58 52 06 81 df dd 19 fc |%Jae~...XR......| -00000030 bd 5a 82 ff ae 80 92 b3 3b 7d 89 c0 64 b1 36 e3 |.Z......;}..d.6.| -00000040 5c bb 2a 5b e8 6d 18 02 43 27 b5 57 bc 3f ab b1 |\.*[.m..C'.W.?..| -00000050 27 59 0e 6a d5 07 6a 66 ad 51 82 |'Y.j..jf.Q.| +00000000 14 03 03 00 01 01 16 03 03 00 50 3a 02 c0 c9 cd |..........P:....| +00000010 98 d0 dc ec 0a 58 cf a2 c2 f2 0b b2 5a 2c 9b 6e |.....X......Z,.n| +00000020 30 d2 98 0e 8f 9b b5 9f 1e e2 5f 0c bd 2b ce f8 |0........._..+..| +00000030 08 c9 c1 fe 98 a5 5b ca be 07 81 85 56 bc f4 a3 |......[.....V...| +00000040 05 40 48 5b 76 ac 75 14 46 1a 8a 7f e4 ff 4e 76 |.@H[v.u.F.....Nv| +00000050 8f db 76 19 a5 e3 75 e6 ca 1c 14 |..v...u....| >>> Flow 5 (client to server) 00000000 17 03 03 00 40 00 00 00 00 00 00 00 00 00 00 00 |....@...........| -00000010 00 00 00 00 00 2a 8b 84 55 57 20 b8 4f 11 d2 cc |.....*..UW .O...| -00000020 5e a0 ef 1a f1 62 fc 59 38 14 30 0f e0 76 04 ca |^....b.Y8.0..v..| -00000030 eb c2 45 a4 75 12 e6 1a 16 fc d8 bd d4 f7 fd 6f |..E.u..........o| -00000040 f3 99 ca d6 41 15 03 03 00 40 00 00 00 00 00 00 |....A....@......| -00000050 00 00 00 00 00 00 00 00 00 00 8c 80 a8 e9 95 4c |...............L| -00000060 c9 fa 4d 9d 06 e5 d8 70 5f fa a9 44 24 15 f4 47 |..M....p_..D$..G| -00000070 5a 0a 24 55 a7 6a 04 1c 2a 39 80 fd 08 47 d7 08 |Z.$U.j..*9...G..| -00000080 41 8b 9d 46 74 cb 61 c6 84 84 |A..Ft.a...| +00000010 00 00 00 00 00 02 7a 3c 00 71 20 c9 5a 3a 94 ff |......z<.q .Z:..| +00000020 ed a9 a1 c9 cd 7a ec 10 96 5d b9 78 2b ff 9a d4 |.....z...].x+...| +00000030 2d 5c a2 b5 b1 4d f8 22 b8 70 2b 7e 8d 07 13 62 |-\...M.".p+~...b| +00000040 b2 23 e8 ff a6 15 03 03 00 40 00 00 00 00 00 00 |.#.......@......| +00000050 00 00 00 00 00 00 00 00 00 00 f6 61 2f e6 18 fb |...........a/...| +00000060 dc ed 53 14 e3 a1 6e 22 2d e4 22 c9 a5 d2 cb e8 |..S...n"-.".....| +00000070 89 35 4b e5 89 b8 20 44 1b 79 cc 83 41 42 a5 4f |.5K... D.y..AB.O| +00000080 38 be f4 20 c5 e6 2b 11 ad 3a |8.. ..+..:| diff --git a/src/crypto/tls/testdata/Client-TLSv12-AES256-GCM-SHA384 b/src/crypto/tls/testdata/Client-TLSv12-AES256-GCM-SHA384 index 42454d52f3..bedeedbb19 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-AES256-GCM-SHA384 +++ b/src/crypto/tls/testdata/Client-TLSv12-AES256-GCM-SHA384 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 55 02 00 00 51 03 03 a3 a8 ef 9d b3 |....U...Q.......| -00000010 36 14 00 fe 5b e4 07 77 e7 78 c8 b4 d8 96 8d 72 |6...[..w.x.....r| -00000020 c5 79 99 10 8f 6e ac e3 fd 99 ee 20 53 99 57 36 |.y...n..... S.W6| -00000030 7e 9b 89 a3 79 c7 57 c6 f6 c7 2c 66 0a 6b 48 a2 |~...y.W...,f.kH.| -00000040 06 87 54 2c 20 3d 65 b9 1c 93 fd a3 00 9d 00 00 |..T, =e.........| +00000000 16 03 03 00 55 02 00 00 51 03 03 ac 7e 0f a7 bc |....U...Q...~...| +00000010 e5 97 51 ac d1 a3 f4 e1 a4 a9 b3 52 08 ab cf cd |..Q........R....| +00000020 0a 2a 22 89 6e 7d c4 d4 4f 44 99 20 0f 86 62 46 |.*".n}..OD. ..bF| +00000030 47 98 ce fc 9f ba ba 92 bf 17 dc 94 6f b4 05 ac |G...........o...| +00000040 81 87 89 14 c5 e1 c5 30 49 45 cf 7b 00 9d 00 00 |.......0IE.{....| 00000050 09 ff 01 00 01 00 00 17 00 00 16 03 03 02 59 0b |..............Y.| 00000060 00 02 55 00 02 52 00 02 4f 30 82 02 4b 30 82 01 |..U..R..O0..K0..| 00000070 b4 a0 03 02 01 02 02 09 00 e8 f0 9d 3f e2 5b ea |............?.[.| @@ -72,17 +74,17 @@ 00000060 c5 70 0f 08 83 48 e9 48 ef 6e 50 8b 05 7e e5 84 |.p...H.H.nP..~..| 00000070 25 fa 55 c7 ae 31 02 27 00 ef 3f 98 86 20 12 89 |%.U..1.'..?.. ..| 00000080 91 59 28 b4 f7 d7 af d2 69 61 35 14 03 03 00 01 |.Y(.....ia5.....| -00000090 01 16 03 03 00 28 00 00 00 00 00 00 00 00 76 c9 |.....(........v.| -000000a0 1e 50 43 51 5e 4a b6 c8 98 33 8f 18 ac f3 fe 20 |.PCQ^J...3..... | -000000b0 09 76 7c 48 f7 e8 00 2c 3b e1 7e 2f 71 d5 |.v|H...,;.~/q.| +00000090 01 16 03 03 00 28 00 00 00 00 00 00 00 00 2a f2 |.....(........*.| +000000a0 d8 f8 66 9b 53 99 66 59 83 4b 37 25 44 61 d8 c3 |..f.S.fY.K7%Da..| +000000b0 ef 7f 3e be 62 9c a0 3a 61 43 0c 87 04 4c |..>.b..:aC...L| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 28 55 b2 34 a3 b7 |..........(U.4..| -00000010 18 a8 36 55 c4 ef 81 82 e4 41 9f 1a 42 2c 42 7e |..6U.....A..B,B~| -00000020 9b 59 c8 9d 3a 0b 59 a6 78 d0 ab 2f c4 e1 f7 2b |.Y..:.Y.x../...+| -00000030 9b ee 9f |...| +00000000 14 03 03 00 01 01 16 03 03 00 28 7a 45 6a 5b 2a |..........(zEj[*| +00000010 06 e8 c8 f5 57 07 ee 91 dd f7 33 60 be f1 65 fb |....W.....3`..e.| +00000020 8f 3d 48 3c b2 a0 7c 30 30 b1 98 01 de 35 d2 5f |.=H<..|00....5._| +00000030 cb 0c de |...| >>> Flow 5 (client to server) -00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 ec ad 42 |...............B| -00000010 8a cf 39 ed 82 b7 70 9b 1a 29 4c 3e b7 f6 92 35 |..9...p..)L>...5| -00000020 12 e2 df 15 03 03 00 1a 00 00 00 00 00 00 00 02 |................| -00000030 81 d4 de 3c 03 a9 01 0e e7 64 ae 18 84 dd d3 6c |...<.....d.....l| -00000040 57 6a |Wj| +00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 13 f4 b8 |................| +00000010 b3 95 de d6 9b b3 8e 27 6f 36 dc a4 0d ab 7d 63 |.......'o6....}c| +00000020 35 73 a4 15 03 03 00 1a 00 00 00 00 00 00 00 02 |5s..............| +00000030 9d 64 e3 e6 8f a7 22 ab 82 2f 60 0a 2a 5f fc 39 |.d...."../`.*_.9| +00000040 90 93 |..| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ALPN b/src/crypto/tls/testdata/Client-TLSv12-ALPN index 9f3f4dc930..0cba50bd7a 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ALPN +++ b/src/crypto/tls/testdata/Client-TLSv12-ALPN @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 12 01 00 01 0e 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 30 01 00 01 2c 03 03 00 00 00 00 00 |....0...,.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,22 +7,24 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 93 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 b1 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 10 00 10 |................| -000000d0 00 0e 06 70 72 6f 74 6f 32 06 70 72 6f 74 6f 31 |...proto2.proto1| -000000e0 00 2b 00 09 08 03 04 03 03 03 02 03 01 00 33 00 |.+............3.| -000000f0 26 00 24 00 1d 00 20 2f e5 7d a3 47 cd 62 43 15 |&.$... /.}.G.bC.| -00000100 28 da ac 5f bb 29 07 30 ff f6 84 af c4 cf c2 ed |(.._.).0........| -00000110 90 99 5f 58 cb 3b 74 |.._X.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 10 00 10 00 0e |................| +000000f0 06 70 72 6f 74 6f 32 06 70 72 6f 74 6f 31 00 2b |.proto2.proto1.+| +00000100 00 09 08 03 04 03 03 03 02 03 01 00 33 00 26 00 |............3.&.| +00000110 24 00 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da |$... /.}.G.bC.(.| +00000120 ac 5f bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 |._.).0..........| +00000130 5f 58 cb 3b 74 |_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 6a 02 00 00 66 03 03 71 ba 32 f4 08 |....j...f..q.2..| -00000010 31 23 ea 71 46 b6 f0 24 f9 80 c2 94 b8 13 f5 cc |1#.qF..$........| -00000020 6b 77 e5 46 f1 76 df a5 0c 56 6a 20 98 53 12 a3 |kw.F.v...Vj .S..| -00000030 d2 a6 97 45 36 11 e6 b6 b6 6e 0b b9 30 2d 65 c8 |...E6....n..0-e.| -00000040 47 c7 af 4c c5 a6 51 90 2f 77 db 8c cc a8 00 00 |G..L..Q./w......| +00000000 16 03 03 00 6a 02 00 00 66 03 03 d7 20 92 e0 ec |....j...f... ...| +00000010 a0 c3 77 d9 a8 c8 fe 8f df 7d ab 20 c4 e9 50 bd |..w......}. ..P.| +00000020 9c dc 33 4f ca 0b b1 b1 f4 93 cc 20 d7 5d 8b 7e |..3O....... .].~| +00000030 7e 45 21 86 05 21 77 d0 ed 6a 1c 5a f3 60 06 38 |~E!..!w..j.Z.`.8| +00000040 43 de 49 df 9a 43 60 52 47 57 98 29 cc a8 00 00 |C.I..C`RGW.)....| 00000050 1e ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 10 |................| 00000060 00 09 00 07 06 70 72 6f 74 6f 31 00 17 00 00 16 |.....proto1.....| 00000070 03 03 02 59 0b 00 02 55 00 02 52 00 02 4f 30 82 |...Y...U..R..O0.| @@ -63,31 +65,31 @@ 000002a0 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 4c 72 2b |Cw.......@.a.Lr+| 000002b0 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 bd 42 d4 |...F..M...>...B.| 000002c0 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 16 03 03 |..=.`.\!.;......| -000002d0 00 ac 0c 00 00 a8 03 00 1d 20 76 16 ff 2a 83 9a |......... v..*..| -000002e0 07 b0 01 f6 1e 3e 4b c1 69 62 9b 00 38 35 c5 4f |.....>K.ib..85.O| -000002f0 d3 2c db 50 16 9d 26 b1 cc 28 08 04 00 80 56 73 |.,.P..&..(....Vs| -00000300 39 4d ab f4 68 92 14 6d d5 75 db 10 4b 0c a4 19 |9M..h..m.u..K...| -00000310 9e 67 42 d3 f8 3f 91 26 06 4d f9 34 9b ad 7c 85 |.gB..?.&.M.4..|.| -00000320 ec 11 34 43 dd 7d a8 5b 0f 59 54 ff a3 92 dc 7c |..4C.}.[.YT....|| -00000330 26 ee 07 0e cf bc e4 6a 1a da b9 d2 9a 62 bf de |&......j.....b..| -00000340 37 a6 68 e2 cd 21 8e 4e a3 66 ee e1 74 45 7d 64 |7.h..!.N.f..tE}d| -00000350 b2 d8 1d dc 6a cd 2a 86 9e 0d 76 a3 7b f2 49 11 |....j.*...v.{.I.| -00000360 ae ad a1 d4 f2 a9 e5 56 0e 2a 96 a5 f7 8b 74 d4 |.......V.*....t.| -00000370 78 e0 bc cc 95 a1 f1 76 0b 4b 37 ed 77 1b 16 03 |x......v.K7.w...| +000002d0 00 ac 0c 00 00 a8 03 00 1d 20 6c a6 83 3b fe d9 |......... l..;..| +000002e0 f9 da 88 13 dc 34 f4 01 d4 49 a7 43 80 d7 e2 cf |.....4...I.C....| +000002f0 1d c9 eb 94 5a 6d 85 b5 1d 7c 08 04 00 80 d2 21 |....Zm...|.....!| +00000300 1b 9a f4 26 ac 76 28 68 63 68 fe b5 9b e2 16 bb |...&.v(hch......| +00000310 fd a5 b7 85 3c f8 f9 da 49 d7 4f 62 c0 af 75 08 |....<...I.Ob..u.| +00000320 47 3b 3a 48 26 c3 8e 13 25 08 1d 77 ce eb 30 e9 |G;:H&...%..w..0.| +00000330 b4 2e cc 94 ca 8d b4 60 c6 92 ce 57 ba 1e 46 59 |.......`...W..FY| +00000340 f6 76 61 da f2 59 79 da 87 08 22 1d 5a e9 1a b8 |.va..Yy...".Z...| +00000350 9d 31 0f d9 db ab 49 80 d9 5c 20 ab ef 9e e1 4d |.1....I..\ ....M| +00000360 0c 69 9b 41 f2 dd 4d e9 ee ff d3 40 47 88 64 76 |.i.A..M....@G.dv| +00000370 69 8e 3a a1 e0 68 00 6d 2f 95 b6 f9 64 12 16 03 |i.:..h.m/...d...| 00000380 03 00 04 0e 00 00 00 |.......| >>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| -00000030 16 03 03 00 20 aa 8c 9c ab fb ab ed 5b 2e 3e 4b |.... .......[.>K| -00000040 92 cd 18 dd ac ce af 1a b9 f2 df aa 7f a1 d2 ad |................| -00000050 0e 8a 67 03 3f |..g.?| +00000030 16 03 03 00 20 d5 b6 10 b8 32 7d da 84 25 2b 18 |.... ....2}..%+.| +00000040 78 a4 e3 6b 34 de b2 83 b6 94 12 f9 d2 9a 27 e5 |x..k4.........'.| +00000050 ff ef a2 00 50 |....P| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 20 db cb 3a 73 0c |.......... ..:s.| -00000010 ab 16 44 41 5a 25 df f7 45 bf f0 70 c6 a8 4f bd |..DAZ%..E..p..O.| -00000020 50 99 fb 18 26 e7 cf 71 16 1a 96 |P...&..q...| +00000000 14 03 03 00 01 01 16 03 03 00 20 91 63 26 79 f6 |.......... .c&y.| +00000010 6f fc 51 93 c5 9b e9 10 2e 80 f0 5f 6f 49 b8 a5 |o.Q........_oI..| +00000020 53 d9 a6 2a 4a ec 4c 50 9f 1b 98 |S..*J.LP...| >>> Flow 5 (client to server) -00000000 17 03 03 00 16 34 82 27 01 99 27 08 58 c4 aa 76 |.....4.'..'.X..v| -00000010 fe 34 9c 1f 99 ea 4c f8 a0 ef 96 15 03 03 00 12 |.4....L.........| -00000020 68 b8 da ac 77 d5 f7 95 9f 68 e0 d6 26 88 cd ef |h...w....h..&...| -00000030 31 d4 |1.| +00000000 17 03 03 00 16 96 3e 1b 61 d9 00 1a e4 dc 49 cc |......>.a.....I.| +00000010 09 f8 b3 3e 21 c6 df 74 e2 6b a0 15 03 03 00 12 |...>!..t.k......| +00000020 35 41 fc 32 06 30 3b ad 17 a4 19 3c 06 f9 59 e0 |5A.2.0;....<..Y.| +00000030 d2 02 |..| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-ECDSA-ECDSA b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-ECDSA-ECDSA index 55cff1d489..b3496cedd6 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-ECDSA-ECDSA +++ b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-ECDSA-ECDSA @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 58 a7 ae 6c fc |....]...Y..X..l.| -00000010 0d 53 51 d5 37 8d 1f 88 75 27 bf 34 8f 3d d3 ee |.SQ.7...u'.4.=..| -00000020 95 db 77 d9 c0 3b f1 57 4f 84 e2 20 7f 0d d1 84 |..w..;.WO.. ....| -00000030 0c 7a 4e 41 7f 74 58 6c f5 38 e6 8d 5b 04 15 e1 |.zNA.tXl.8..[...| -00000040 3d 4a ba 7e 58 f4 e8 bf f4 42 8a f5 c0 09 00 00 |=J.~X....B......| +00000000 16 03 03 00 5d 02 00 00 59 03 03 c9 60 0f c9 c7 |....]...Y...`...| +00000010 84 d4 8c 7b e8 33 a1 e2 cc 15 9b 13 21 e6 ff 3a |...{.3......!..:| +00000020 72 2a d2 6b 18 bd 7b aa 4c 95 7f 20 f2 dd 03 c8 |r*.k..{.L.. ....| +00000030 a9 e6 f0 20 b4 72 81 71 ea 10 ca b1 9f 4b 86 96 |... .r.q.....K..| +00000040 27 b5 d4 6a 6a 35 2f d5 5a f6 75 96 c0 09 00 00 |'..jj5/.Z.u.....| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 0e 0b 00 02 0a 00 02 07 00 02 |................| 00000070 04 30 82 02 00 30 82 01 62 02 09 00 b8 bf 2d 47 |.0...0..b.....-G| @@ -57,17 +59,17 @@ 00000250 c9 86 2e dd d7 11 69 7f 85 7c 56 de fb 31 78 2b |......i..|V..1x+| 00000260 e4 c7 78 0d ae cb be 9e 4e 36 24 31 7b 6a 0f 39 |..x.....N6$1{j.9| 00000270 95 12 07 8f 2a 16 03 03 00 b6 0c 00 00 b2 03 00 |....*...........| -00000280 1d 20 b2 5c fe 84 12 a5 2f 8f da 91 3f 44 52 4e |. .\..../...?DRN| -00000290 03 ad e4 f9 8a 14 71 0d 0b 46 86 81 d2 1b 4a 5b |......q..F....J[| -000002a0 d9 4e 04 03 00 8a 30 81 87 02 42 01 78 d2 c2 a9 |.N....0...B.x...| -000002b0 b7 77 f8 eb 8d 9d 36 1f 79 e7 d1 74 a9 9d a4 53 |.w....6.y..t...S| -000002c0 5e 08 4a 92 dc ac b3 32 bf ce e7 f0 80 af 56 48 |^.J....2......VH| -000002d0 42 e2 fd 22 c7 35 11 13 db 2a 6d 74 4a e5 02 ce |B..".5...*mtJ...| -000002e0 ea 43 e6 b0 69 18 3e d3 86 85 76 ff 56 02 41 44 |.C..i.>...v.V.AD| -000002f0 2a e1 6b ae 5d f9 39 5c ec 76 ee 01 d7 04 42 ca |*.k.].9\.v....B.| -00000300 45 07 e0 59 38 75 d4 47 61 a4 5b 0f a9 7a ba 79 |E..Y8u.Ga.[..z.y| -00000310 fa 79 92 41 88 8a d3 be c2 38 3e f7 95 6c 99 3f |.y.A.....8>..l.?| -00000320 4c ff af 10 33 14 25 e0 d7 8a fd 70 17 2b 73 ee |L...3.%....p.+s.| +00000280 1d 20 fc dd 1d af 2f 7d 77 03 42 8b e4 01 fd 0c |. ..../}w.B.....| +00000290 82 3b f8 16 d7 15 cc ce 97 b4 6b ab 78 b6 c4 d5 |.;........k.x...| +000002a0 78 0a 04 03 00 8a 30 81 87 02 42 01 b1 31 15 d3 |x.....0...B..1..| +000002b0 f9 0d 44 57 cc d7 d3 a8 08 91 19 ac fd 6d cf f3 |..DW.........m..| +000002c0 59 87 59 d5 a3 9b 9f 41 0c a6 9d 2f 30 df 97 2c |Y.Y....A.../0..,| +000002d0 e5 04 58 a4 06 b6 67 ba 19 84 5e c5 28 cd a6 29 |..X...g...^.(..)| +000002e0 c7 56 78 ba b5 4f d6 95 34 4c 5f e9 b7 02 41 30 |.Vx..O..4L_...A0| +000002f0 cb d1 6b 75 7a 78 62 06 13 76 49 a7 cb 05 d1 1d |..kuzxb..vI.....| +00000300 14 79 39 e8 80 57 0c ba 52 41 ba 4d c1 82 3b 94 |.y9..W..RA.M..;.| +00000310 d2 0f 0c 90 9b fa 32 03 7a 53 b5 c9 6b bc 3d 0e |......2.zS..k.=.| +00000320 01 2d b2 ca d3 0e b4 45 1a b3 ec 07 b8 ad 28 03 |.-.....E......(.| 00000330 16 03 03 00 3a 0d 00 00 36 03 01 02 40 00 2e 04 |....:...6...@...| 00000340 03 05 03 06 03 08 07 08 08 08 09 08 0a 08 0b 08 |................| 00000350 04 08 05 08 06 04 01 05 01 06 01 03 03 02 03 03 |................| @@ -110,31 +112,31 @@ 00000210 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd 62 |...%...! /.}.G.b| 00000220 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 cf |C.(.._.).0......| 00000230 c2 ed 90 99 5f 58 cb 3b 74 16 03 03 00 92 0f 00 |...._X.;t.......| -00000240 00 8e 04 03 00 8a 30 81 87 02 41 0c 11 31 08 e0 |......0...A..1..| -00000250 7d 4e 11 1e 80 7c 50 70 ea 1b 68 16 d9 e6 93 b7 |}N...|Pp..h.....| -00000260 fb 6f 0d 6e ce 8b d2 7c 86 70 c3 e9 ed 35 3c 29 |.o.n...|.p...5<)| -00000270 c7 d8 6c 8f 43 c9 a1 7a 4a ae 19 22 6e e3 85 7e |..l.C..zJ.."n..~| -00000280 a0 5d 7f 19 a5 b7 25 ad d7 1a 5f 42 02 42 00 d8 |.]....%..._B.B..| -00000290 6a 25 47 2a 0e 1a 38 51 1c 73 aa 2d 10 9e 4b 65 |j%G*..8Q.s.-..Ke| -000002a0 56 34 72 e5 02 09 f6 30 ce a8 a0 59 75 7b 13 42 |V4r....0...Yu{.B| -000002b0 1e 31 f3 dd 08 a9 65 df 2d e6 aa 29 5d 9a 5c eb |.1....e.-..)].\.| -000002c0 d3 67 af 29 4e d2 76 e5 17 1d 7e e7 0a 50 c4 d0 |.g.)N.v...~..P..| +00000240 00 8e 04 03 00 8a 30 81 87 02 41 5f 38 d1 e6 8e |......0...A_8...| +00000250 cd f7 6b 2e 50 d9 e5 40 3a ba e7 67 5d a9 5a 83 |..k.P..@:..g].Z.| +00000260 c1 9e 45 e7 c2 bc f6 a2 c0 d8 3e ca f6 48 44 72 |..E.......>..HDr| +00000270 8b c6 e6 24 e4 aa 90 ff 81 10 c5 86 08 64 d4 30 |...$.........d.0| +00000280 e7 27 e2 9b 66 b9 c8 30 3b 3d 61 51 02 42 01 3b |.'..f..0;=aQ.B.;| +00000290 a1 0b 55 d0 2b 23 90 0c 5a 14 9b f4 2b 04 f4 b3 |..U.+#..Z...+...| +000002a0 b1 9d 6f 86 17 67 3d c1 9d 64 e6 d7 c6 54 eb 99 |..o..g=..d...T..| +000002b0 51 83 df c9 df 41 48 b8 bc 8f 6c c9 bc 0a 36 0f |Q....AH...l...6.| +000002c0 c9 34 70 3a d5 82 5e 42 4f 22 64 23 33 fc e2 d3 |.4p:..^BO"d#3...| 000002d0 14 03 03 00 01 01 16 03 03 00 40 00 00 00 00 00 |..........@.....| -000002e0 00 00 00 00 00 00 00 00 00 00 00 8b ef 24 70 ef |.............$p.| -000002f0 b9 b3 fd 59 49 62 b7 18 9c bc 7f 74 06 21 21 ab |...YIb.....t.!!.| -00000300 9c 4d cf 70 0c 6b 3b d3 d4 12 51 a7 f9 09 65 d1 |.M.p.k;...Q...e.| -00000310 ce b7 28 01 c1 e9 0b e4 41 55 b6 |..(.....AU.| +000002e0 00 00 00 00 00 00 00 00 00 00 00 13 d5 c1 91 72 |...............r| +000002f0 5e 32 35 1d c1 a2 d2 62 80 16 71 ea f9 67 d5 8d |^25....b..q..g..| +00000300 1d 98 a5 87 15 1b 7e 2a 80 a7 08 a2 c1 82 79 d2 |......~*......y.| +00000310 60 e3 d5 8f 0b 9b 43 4f 88 09 7d |`.....CO..}| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 40 af 82 f6 ba d1 |..........@.....| -00000010 e8 f9 c5 58 0e ba 94 ec 98 68 b3 20 5b db 4e 8c |...X.....h. [.N.| -00000020 f5 00 29 e8 9a c1 34 35 ac 77 af e2 a0 6a 6f 45 |..)...45.w...joE| -00000030 05 56 d4 a0 5b 75 19 c6 1b 8a c8 65 04 ed 3d f3 |.V..[u.....e..=.| -00000040 84 e5 1b c0 26 31 5d 03 d5 b4 31 |....&1]...1| +00000000 14 03 03 00 01 01 16 03 03 00 40 8a f4 68 76 16 |..........@..hv.| +00000010 0d 13 09 2a e5 3f 25 87 0f ce 03 96 2a 86 58 41 |...*.?%.....*.XA| +00000020 7a 40 ec 65 ff c5 64 c1 62 6e ae 1d bf b6 4e dd |z@.e..d.bn....N.| +00000030 f6 be 55 56 ba 43 b3 c5 3a 6f 35 e6 73 59 63 87 |..UV.C..:o5.sYc.| +00000040 fd 10 64 b1 94 e3 a9 b7 2d e0 94 |..d.....-..| >>> Flow 5 (client to server) 00000000 17 03 03 00 30 00 00 00 00 00 00 00 00 00 00 00 |....0...........| -00000010 00 00 00 00 00 2e a5 7c 6f cc f7 44 1a 38 99 4a |.......|o..D.8.J| -00000020 2e a4 4b 79 bf ee b6 c9 12 57 f5 2e 98 dd 1d 2a |..Ky.....W.....*| -00000030 5b 79 d5 ef 44 15 03 03 00 30 00 00 00 00 00 00 |[y..D....0......| -00000040 00 00 00 00 00 00 00 00 00 00 3d fe 37 cb 65 03 |..........=.7.e.| -00000050 13 ce 3d 3b c2 18 c2 27 f9 a4 b7 fc e6 37 eb 2a |..=;...'.....7.*| -00000060 27 6c 52 38 2f 3a 61 d4 a9 e6 |'lR8/:a...| +00000010 00 00 00 00 00 15 82 4f fa 8d ce 67 fd 63 bb 74 |.......O...g.c.t| +00000020 98 2f 77 fc 5b 43 70 4d 15 cf 5b 2b 45 ae e7 b3 |./w.[CpM..[+E...| +00000030 d0 dd ae 4b 27 15 03 03 00 30 00 00 00 00 00 00 |...K'....0......| +00000040 00 00 00 00 00 00 00 00 00 00 d2 ce b2 c5 1a 62 |...............b| +00000050 06 9c c1 1e 6f 1e b7 6e 18 5e 74 45 be 10 b7 69 |....o..n.^tE...i| +00000060 6d da 09 65 3c 38 a5 3d f1 0a |m..e<8.=..| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-ECDSA-RSA b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-ECDSA-RSA index de57515d38..7356bfebfc 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-ECDSA-RSA +++ b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-ECDSA-RSA @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 f8 3d 7c a4 a8 |....]...Y...=|..| -00000010 11 e3 56 0f 1c 7e 2e 7c 50 7e 75 5c de 1c 51 8e |..V..~.|P~u\..Q.| -00000020 de d3 8a 84 d2 90 84 f9 e9 07 d5 20 98 6a a8 c1 |........... .j..| -00000030 f4 28 bd 0f 6a 25 a5 26 3d 8d 35 b6 3e bb 77 c6 |.(..j%.&=.5.>.w.| -00000040 8e ab 36 bd 7d c8 a9 b1 5b 30 0f b2 c0 2f 00 00 |..6.}...[0.../..| +00000000 16 03 03 00 5d 02 00 00 59 03 03 26 62 0d 9d 45 |....]...Y..&b..E| +00000010 3d 25 b7 ed ec ce b8 d6 8f fd a6 68 0b 07 05 28 |=%.........h...(| +00000020 d4 2a 9c d9 cf bf e9 a0 92 71 6f 20 18 af a0 13 |.*.......qo ....| +00000030 72 10 57 69 cf 63 db 73 c4 44 b8 a9 27 cd 9a a0 |r.Wi.c.s.D..'...| +00000040 3b be f1 57 ef 10 19 80 0b c0 51 94 c0 2f 00 00 |;..W......Q../..| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -61,18 +63,18 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 5f c1 31 |............ _.1| -000002d0 d7 64 f0 0b 72 6a 66 2c 49 d7 d1 9c dd 6f e3 3a |.d..rjf,I....o.:| -000002e0 ab 2c 78 6d ca b0 ed 16 26 65 9f ff 66 08 04 00 |.,xm....&e..f...| -000002f0 80 a6 91 d0 03 b8 d2 67 48 69 16 8e 30 dc 5b 3f |.......gHi..0.[?| -00000300 ac 4d e4 33 5f 46 e7 0c 49 a0 71 9d 8c 60 63 f2 |.M.3_F..I.q..`c.| -00000310 2d ff 9e 89 21 7d af 71 ce 41 6b d2 22 fc 1f bd |-...!}.q.Ak."...| -00000320 a9 9e 15 2c d7 c3 cb 69 6d df 23 07 7c 13 e9 2b |...,...im.#.|..+| -00000330 7d 05 f0 18 1e 86 c8 37 ad cd 9e 39 26 0c 8a 9b |}......7...9&...| -00000340 12 90 60 12 95 06 e9 bb f2 46 41 20 10 f5 64 ea |..`......FA ..d.| -00000350 66 13 cb 8e 51 7e 41 78 2a 40 fa 15 e2 0d 5b 37 |f...Q~Ax*@....[7| -00000360 a7 a8 4a f6 8e 93 82 2a a2 91 06 66 4e 49 72 68 |..J....*...fNIrh| -00000370 f9 16 03 03 00 3a 0d 00 00 36 03 01 02 40 00 2e |.....:...6...@..| +000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 22 fe 67 |............ ".g| +000002d0 48 d3 90 04 ee 7d c2 2a 6d 9f 3a 36 3c b2 f8 14 |H....}.*m.:6<...| +000002e0 24 76 54 5a ae ed 2f 62 fc 76 e0 00 07 08 04 00 |$vTZ../b.v......| +000002f0 80 6d 8b e6 52 be ed 40 b8 b1 51 53 94 08 93 76 |.m..R..@..QS...v| +00000300 9b 84 06 66 60 b9 be a8 f1 bb 5d fa 81 42 28 8e |...f`.....]..B(.| +00000310 aa ce 72 9f df a3 53 2d c9 6d 34 10 78 36 da 33 |..r...S-.m4.x6.3| +00000320 09 0c a0 5e ea 56 2e 6f 62 fc 3c 5e 5b 6d 97 c9 |...^.V.ob.<^[m..| +00000330 39 1b 3c eb 6d 1f 0a b5 02 06 6d 9e 99 24 14 ee |9.<.m.....m..$..| +00000340 f9 55 cc 4d 7f 77 0c 58 2c 59 0f a4 66 4b 81 b4 |.U.M.w.X,Y..fK..| +00000350 d9 e4 f6 24 4f ba 05 83 6c c3 6c 2f 5e 74 42 09 |...$O...l.l/^tB.| +00000360 b3 be d1 c9 6a c8 a6 34 5c bc 36 65 58 cd 02 ae |....j..4\.6eX...| +00000370 16 16 03 03 00 3a 0d 00 00 36 03 01 02 40 00 2e |.....:...6...@..| 00000380 04 03 05 03 06 03 08 07 08 08 08 09 08 0a 08 0b |................| 00000390 08 04 08 05 08 06 04 01 05 01 06 01 03 03 02 03 |................| 000003a0 03 01 02 01 03 02 02 02 04 02 05 02 06 02 00 00 |................| @@ -113,28 +115,28 @@ 00000200 e4 fa cc b1 8a ce e2 23 a0 87 f0 e1 67 51 eb 16 |.......#....gQ..| 00000210 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd 62 |...%...! /.}.G.b| 00000220 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 cf |C.(.._.).0......| -00000230 c2 ed 90 99 5f 58 cb 3b 74 16 03 03 00 93 0f 00 |...._X.;t.......| -00000240 00 8f 04 03 00 8b 30 81 88 02 42 01 0f 51 5e 59 |......0...B..Q^Y| -00000250 78 34 8f 99 03 da 07 66 3b 0d 48 b2 79 57 e2 d5 |x4.....f;.H.yW..| -00000260 d2 c2 f3 81 8e 25 98 81 e2 9a f7 1f 02 99 b0 7d |.....%.........}| -00000270 1c d1 1f e4 ef d7 bc a1 ad 67 c7 a9 cc 4f 67 58 |.........g...OgX| -00000280 8b 1e 8c 3f 04 73 31 53 60 aa 67 33 27 02 42 01 |...?.s1S`.g3'.B.| -00000290 f1 66 ba 8f ec 9e 3f 76 76 ac 7a e7 56 cb fb 46 |.f....?vv.z.V..F| -000002a0 f4 9b 64 03 3a 72 5a d7 cf 49 39 69 26 19 68 52 |..d.:rZ..I9i&.hR| -000002b0 8b 98 8e ea d3 8e d9 6d 93 f5 e8 23 cd 20 a8 5a |.......m...#. .Z| -000002c0 4c 24 10 70 bd a2 ae a3 b1 4f 38 17 dd b9 f5 93 |L$.p.....O8.....| -000002d0 4b 14 03 03 00 01 01 16 03 03 00 28 00 00 00 00 |K..........(....| -000002e0 00 00 00 00 e1 2b da c6 4a 5c d2 03 c0 7e f0 eb |.....+..J\...~..| -000002f0 a0 4b ed a1 7d e4 45 93 ec f9 37 a0 5b 7e bb 64 |.K..}.E...7.[~.d| -00000300 af d4 fc ac |....| +00000230 c2 ed 90 99 5f 58 cb 3b 74 16 03 03 00 92 0f 00 |...._X.;t.......| +00000240 00 8e 04 03 00 8a 30 81 87 02 42 00 8e 41 5f 48 |......0...B..A_H| +00000250 64 4e 6e 7e 7d ed 5b da 88 7a 38 1f bd 04 ee 93 |dNn~}.[..z8.....| +00000260 88 f8 3d e5 b7 51 4a 43 6b c5 c1 02 06 c5 2c c1 |..=..QJCk.....,.| +00000270 48 18 2e 11 63 8a 9d 94 35 98 bc d1 d7 19 1f c0 |H...c...5.......| +00000280 f6 dc 10 15 89 bf 99 0c 87 7d 3e bf e2 02 41 4f |.........}>...AO| +00000290 e3 d4 a0 b2 4d 80 ec 21 2f b3 fc df 6c b7 bd 6d |....M..!/...l..m| +000002a0 c7 6d 0a 7a 24 56 a4 c8 36 ec 7d 2d 65 ff 8c 4b |.m.z$V..6.}-e..K| +000002b0 c7 cd 52 99 f1 2d e5 19 57 89 fe 52 44 ca e0 c3 |..R..-..W..RD...| +000002c0 34 fc c5 4a da 59 f5 62 eb c4 c5 cb 1d d7 4b 63 |4..J.Y.b......Kc| +000002d0 14 03 03 00 01 01 16 03 03 00 28 00 00 00 00 00 |..........(.....| +000002e0 00 00 00 5d 34 16 3d d0 04 3f b7 3d a2 be 20 8b |...]4.=..?.=.. .| +000002f0 19 20 09 7b f0 7e 52 95 e6 b8 f1 06 08 93 6b 91 |. .{.~R.......k.| +00000300 ee fa c8 |...| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 28 d3 4a 1e 2b ea |..........(.J.+.| -00000010 26 12 c9 fd b0 7b e6 bf e4 bb b6 d2 6b b4 3c 05 |&....{......k.<.| -00000020 1f 6c 46 44 5e 25 e6 f9 80 c8 b9 16 19 59 68 90 |.lFD^%.......Yh.| -00000030 5a 90 16 |Z..| +00000000 14 03 03 00 01 01 16 03 03 00 28 c1 1c 19 bc 14 |..........(.....| +00000010 d3 44 ec 5d 6e 84 c4 06 ba c2 83 00 80 ea dd 7d |.D.]n..........}| +00000020 9b 2e 75 c7 9d 75 40 e8 89 d1 9b 69 16 20 0b 23 |..u..u@....i. .#| +00000030 94 48 42 |.HB| >>> Flow 5 (client to server) -00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 35 25 df |.............5%.| -00000010 1f 16 81 00 e3 c4 9e 45 e2 a1 ef 54 72 66 99 3d |.......E...Trf.=| -00000020 30 13 25 15 03 03 00 1a 00 00 00 00 00 00 00 02 |0.%.............| -00000030 16 a5 e9 36 c1 fb 02 d7 c8 7a aa bc aa 77 7b 5c |...6.....z...w{\| -00000040 4f a1 |O.| +00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 20 ce 1a |............. ..| +00000010 b6 65 88 6d 17 9e 9c 9d ec 36 af d3 7e fa e5 63 |.e.m.....6..~..c| +00000020 bc 90 f0 15 03 03 00 1a 00 00 00 00 00 00 00 02 |................| +00000030 e5 a6 0e 68 bc 75 29 7e c1 ee 6b 3b d3 03 c8 0a |...h.u)~..k;....| +00000040 4d 75 |Mu| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-Ed25519 b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-Ed25519 index edb433fefc..e4e47030dd 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-Ed25519 +++ b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-Ed25519 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 68 ad d5 4c 88 |....]...Y..h..L.| -00000010 60 b8 3b b4 ea e4 f2 55 7d 0f 90 d8 bd 55 b5 53 |`.;....U}....U.S| -00000020 49 6e f7 50 e4 05 70 a2 6d 9e a5 20 d1 0a e5 58 |In.P..p.m.. ...X| -00000030 38 f1 82 94 a7 c3 bf 77 60 d8 51 c2 c7 e9 8e d6 |8......w`.Q.....| -00000040 94 ee 4f 23 51 d3 2c 52 06 12 4b 4a cc a8 00 00 |..O#Q.,R..KJ....| +00000000 16 03 03 00 5d 02 00 00 59 03 03 73 ca 08 75 98 |....]...Y..s..u.| +00000010 14 2e b6 c4 c0 74 e2 cf 05 24 dd 70 f4 aa 22 08 |.....t...$.p..".| +00000020 39 6d 3a 61 11 90 c6 61 50 41 96 20 d1 c7 24 aa |9m:a...aPA. ..$.| +00000030 3a 5e 0c 2c 37 72 8c 80 76 ab c9 2f fb a5 39 7d |:^.,7r..v../..9}| +00000040 f5 f3 ce 97 d8 ea e5 4c db 1b f8 f6 cc a8 00 00 |.......L........| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -61,18 +63,18 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 4e 55 f3 |............ NU.| -000002d0 5f 83 c8 88 d4 f2 5c 75 6a ab 0e 25 df 12 ef f0 |_.....\uj..%....| -000002e0 ea e9 3e b4 4f 2c cd bb 43 5b 64 21 12 08 04 00 |..>.O,..C[d!....| -000002f0 80 84 5e ca 36 b2 fa d0 29 47 1c c2 de 4e 1d 81 |..^.6...)G...N..| -00000300 14 66 0a 26 6f 21 5f d5 b5 54 2e 37 f1 7e b1 90 |.f.&o!_..T.7.~..| -00000310 a0 57 ab 40 81 cf e5 77 29 23 54 fa 12 76 1a 4a |.W.@...w)#T..v.J| -00000320 66 c0 52 08 07 3c 3c 56 06 08 02 df 9f 75 75 5e |f.R..<.W&}...| +000002f0 80 9d d7 8c 28 d8 a8 6c a8 14 5d 92 f8 59 ab e5 |....(..l..]..Y..| +00000300 bd e3 32 1e 49 f6 e6 11 11 ce eb 0c e1 27 3c 34 |..2.I........'<4| +00000310 8c 94 a9 e9 8f 41 51 64 c2 6c 1c d0 e7 d4 ee cf |.....AQd.l......| +00000320 4f 9c f4 92 0f e5 48 c5 2b b5 82 79 c3 91 ee f9 |O.....H.+..y....| +00000330 1c a6 b2 ee ec 9d 73 7c df 2d 2b 49 c8 27 c7 cf |......s|.-+I.'..| +00000340 79 b4 6a 39 f6 ac fe 6f fd f4 6c 7d 2c f2 7f 58 |y.j9...o..l},..X| +00000350 2f a3 d4 f5 92 83 5b 83 19 55 39 e5 f8 d2 2c fd |/.....[..U9...,.| +00000360 ad 89 32 90 ba 89 cd 0d ed 16 02 96 92 bd 77 d2 |..2...........w.| +00000370 f3 16 03 03 00 3a 0d 00 00 36 03 01 02 40 00 2e |.....:...6...@..| 00000380 04 03 05 03 06 03 08 07 08 08 08 09 08 0a 08 0b |................| 00000390 08 04 08 05 08 06 04 01 05 01 06 01 03 03 02 03 |................| 000003a0 03 01 02 01 03 02 02 02 04 02 05 02 06 02 00 00 |................| @@ -101,20 +103,20 @@ 00000140 08 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 |.....%...! /.}.G| 00000150 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af |.bC.(.._.).0....| 00000160 c4 cf c2 ed 90 99 5f 58 cb 3b 74 16 03 03 00 48 |......_X.;t....H| -00000170 0f 00 00 44 08 07 00 40 70 0a 4f 7d dc c7 4a 7a |...D...@p.O}..Jz| -00000180 aa 47 45 8e be a6 df 02 14 c0 a0 f9 b9 a5 47 eb |.GE...........G.| -00000190 3b d3 6f 38 17 aa 5c 48 d5 33 10 41 af 08 2c 2c |;.o8..\H.3.A..,,| -000001a0 86 60 85 d4 22 c0 86 b2 48 1a 9c 31 78 86 7f bf |.`.."...H..1x...| -000001b0 3f 42 cb 04 3d 1b f7 0b 14 03 03 00 01 01 16 03 |?B..=...........| -000001c0 03 00 20 32 0c bb 8e f7 d5 fa a3 f3 9a 2a d1 1f |.. 2.........*..| -000001d0 ed 4b e3 56 ab b3 bc f9 72 ad 7c 3a 8e d2 d7 2f |.K.V....r.|:.../| -000001e0 a2 99 46 |..F| +00000170 0f 00 00 44 08 07 00 40 a1 8a 00 6d 57 47 ab a4 |...D...@...mWG..| +00000180 ae 93 3e dd 04 fb 04 3b dd b7 de 93 bc 2e 40 ff |..>....;......@.| +00000190 29 fa d0 f7 63 4e b9 5f 1f d9 5d 8c 87 eb bb 43 |)...cN._..]....C| +000001a0 25 e5 a7 04 8d 16 88 f8 8b 0d 17 d1 ef 75 7c f1 |%............u|.| +000001b0 1a b4 8f 2f cd f1 18 00 14 03 03 00 01 01 16 03 |.../............| +000001c0 03 00 20 b2 95 81 2d 8c 06 f0 54 da ef 31 9a 33 |.. ...-...T..1.3| +000001d0 89 c3 b5 e8 6a 77 3c fe e8 e3 d0 24 94 2d 7e f9 |....jw<....$.-~.| +000001e0 08 d4 ce |...| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 20 10 cb 1b e5 55 |.......... ....U| -00000010 64 49 55 0a bf 25 e4 b0 d0 45 e1 47 b0 05 d0 f2 |dIU..%...E.G....| -00000020 41 b7 f4 6a 84 4e 6a 66 8d 0e 43 |A..j.Njf..C| +00000000 14 03 03 00 01 01 16 03 03 00 20 b3 9b 27 5a 1e |.......... ..'Z.| +00000010 ce 80 3c 04 f7 aa 69 b6 6b 37 9a 86 e9 95 ce 73 |..<...i.k7.....s| +00000020 8a ef 38 62 6f cb a0 0e 45 78 ad |..8bo...Ex.| >>> Flow 5 (client to server) -00000000 17 03 03 00 16 4a f3 ed 07 22 0d 7d 9b a6 a8 3c |.....J...".}...<| -00000010 88 58 f3 48 c2 f1 aa ea c7 cd 14 15 03 03 00 12 |.X.H............| -00000020 0b 1d 53 98 b3 69 99 e1 cd 4f 37 3c dc 63 17 9f |..S..i...O7<.c..| -00000030 00 7f |..| +00000000 17 03 03 00 16 bf 78 66 da 5b a7 fd cf 95 32 20 |......xf.[....2 | +00000010 b6 ce 1e 5d 4f 21 05 6a f7 3a 27 15 03 03 00 12 |...]O!.j.:'.....| +00000020 42 e1 e3 e3 d3 5a 98 8c d1 e3 ce a5 02 f9 58 ba |B....Z........X.| +00000030 ce 33 |.3| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-AES256-GCM-SHA384 b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-AES256-GCM-SHA384 index c6673f6dc0..0fb7a12f70 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-AES256-GCM-SHA384 +++ b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-AES256-GCM-SHA384 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 60 13 bb 4b ce |....]...Y..`..K.| -00000010 d6 49 3b b2 3a 0c d4 5a e8 25 26 67 41 fd dd 0f |.I;.:..Z.%&gA...| -00000020 62 ec c1 ab bc 58 92 67 9d 71 fd 20 20 4c ab 4d |b....X.g.q. L.M| -00000030 85 ce 87 49 68 8c cf 9c 2f 7b f9 2b 96 62 8a 75 |...Ih.../{.+.b.u| -00000040 c3 21 05 c6 ab b6 98 5e e7 e5 d8 4a c0 30 00 00 |.!.....^...J.0..| +00000000 16 03 03 00 5d 02 00 00 59 03 03 e8 4b b6 f9 1c |....]...Y...K...| +00000010 d9 59 e0 86 7b 9b cf 37 9f 0c f2 14 51 de 10 66 |.Y..{..7....Q..f| +00000020 39 05 15 ab 17 25 df 89 d7 5b 41 20 e5 28 ba da |9....%...[A .(..| +00000030 29 8c 72 40 14 7e 06 2d f8 04 6d 4d 37 09 62 9a |).r@.~.-..mM7.b.| +00000040 87 f7 52 fc 77 61 05 04 2f 65 c0 df c0 30 00 00 |..R.wa../e...0..| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -61,18 +63,18 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 85 c8 0e |............ ...| -000002d0 fb 1e b3 4a ec c1 b2 3a b8 4e bb a1 ca 80 8e 13 |...J...:.N......| -000002e0 f5 08 b5 9a b8 3e c4 6c 23 cf 17 a0 31 08 04 00 |.....>.l#...1...| -000002f0 80 28 db ec 9d f9 f4 9a 06 12 8a 32 89 11 4a e5 |.(.........2..J.| -00000300 b6 68 98 21 ec f1 75 9c f9 28 bc b1 99 5b ec 77 |.h.!..u..(...[.w| -00000310 37 8b 6b 05 ad b3 10 de 24 05 84 a4 16 fe 1d 84 |7.k.....$.......| -00000320 af 5d 28 7d d7 bc de 2f 81 da a3 79 fb c0 a5 43 |.](}.../...y...C| -00000330 b6 3b 8d 90 30 00 80 98 16 83 ac 50 43 c7 3e 76 |.;..0......PC.>v| -00000340 c5 dc 85 c2 19 75 a6 90 f8 2f 71 40 d9 a0 73 7e |.....u.../q@..s~| -00000350 fe 3b 1c d7 66 73 0f f0 42 c5 00 b1 2b be 41 2b |.;..fs..B...+.A+| -00000360 40 da 8f b0 f1 9e b0 0a 83 23 04 80 fb 4c fe 7e |@........#...L.~| -00000370 b4 16 03 03 00 3a 0d 00 00 36 03 01 02 40 00 2e |.....:...6...@..| +000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 57 e9 2a |............ W.*| +000002d0 eb ac 52 cf 39 70 0a c3 21 38 2d 46 66 c1 df 26 |..R.9p..!8-Ff..&| +000002e0 38 ad b2 19 d5 a9 f5 37 15 f7 f6 dc 54 08 04 00 |8......7....T...| +000002f0 80 35 c5 7a 73 5f 36 ed 72 f9 2d 21 a9 9f 94 3f |.5.zs_6.r.-!...?| +00000300 98 de 22 b1 35 c1 9d e2 d2 42 bb 32 7a f3 11 0e |..".5....B.2z...| +00000310 f7 3c a0 ca 44 87 95 e6 f3 1a 19 45 51 a8 f5 f2 |.<..D......EQ...| +00000320 fe ac 00 d0 fc 79 a8 a9 83 fe 81 48 e9 f7 48 ce |.....y.....H..H.| +00000330 08 8c 45 3c 24 b5 d4 e0 07 17 d1 f0 fa 3d 13 3c |..E<$........=.<| +00000340 ef f5 7b f2 5a c2 9a 60 af de 8e 74 50 c7 df b0 |..{.Z..`...tP...| +00000350 27 ef 0e dd db 6a 8f a4 94 69 f0 08 7e 3c 3c 93 |'....j...i..~<<.| +00000360 03 f9 67 ad 30 0b e6 d7 f0 c0 77 bd c4 1a 6e b4 |..g.0.....w...n.| +00000370 52 16 03 03 00 3a 0d 00 00 36 03 01 02 40 00 2e |R....:...6...@..| 00000380 04 03 05 03 06 03 08 07 08 08 08 09 08 0a 08 0b |................| 00000390 08 04 08 05 08 06 04 01 05 01 06 01 03 03 02 03 |................| 000003a0 03 01 02 01 03 02 02 02 04 02 05 02 06 02 00 00 |................| @@ -113,26 +115,26 @@ 00000200 e5 35 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 |.5....%...! /.}.| 00000210 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 |G.bC.(.._.).0...| 00000220 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 16 03 03 00 |......._X.;t....| -00000230 88 0f 00 00 84 08 04 00 80 41 83 55 9b 3c 8d 29 |.........A.U.<.)| -00000240 ed 6c 58 91 85 cb 9b 19 df 61 09 d0 d3 73 fb 2b |.lX......a...s.+| -00000250 3b 4b 4b bd 64 7e e6 53 87 cb 6d 2f 78 1c 67 cf |;KK.d~.S..m/x.g.| -00000260 13 21 e0 ec 1b d7 d8 aa 06 a0 0e d5 86 6f ba 1e |.!...........o..| -00000270 97 e2 8c 9b 86 e2 8a 4d 62 1a bd 35 0e 2d 63 18 |.......Mb..5.-c.| -00000280 a1 1f 7c ed fc 3b 89 c2 00 6d da 01 42 0a 47 95 |..|..;...m..B.G.| -00000290 12 8e 01 82 62 58 f9 96 eb a9 aa c3 f8 96 ec 20 |....bX......... | -000002a0 e1 65 a9 46 a8 af 4b 7c aa 29 ee 9c 48 18 b3 4a |.e.F..K|.)..H..J| -000002b0 00 7f 79 97 87 27 92 ca 45 14 03 03 00 01 01 16 |..y..'..E.......| -000002c0 03 03 00 28 00 00 00 00 00 00 00 00 da f3 01 f2 |...(............| -000002d0 76 e2 df 95 82 0d cc 0c 7e b0 cc 15 69 ba 8c 64 |v.......~...i..d| -000002e0 ac dc f3 45 58 a3 8f ed f0 2a 43 ce |...EX....*C.| +00000230 88 0f 00 00 84 08 04 00 80 ac ba b5 9f a6 2e 81 |................| +00000240 fa c5 95 f7 27 e6 1c 54 80 51 1f 98 c6 bd 54 79 |....'..T.Q....Ty| +00000250 ca 24 1a 0d df a0 e4 c8 5a e2 2d 83 35 ed 88 8f |.$......Z.-.5...| +00000260 08 23 db c9 fa 56 c9 5d 14 91 43 53 57 40 a1 a6 |.#...V.]..CSW@..| +00000270 c9 61 b4 99 d5 4b bc 32 b5 2a a0 13 68 d3 06 1b |.a...K.2.*..h...| +00000280 07 7f 3a a3 05 32 19 c2 d7 ed 9a 68 f7 da e9 80 |..:..2.....h....| +00000290 54 1f 1d c3 6b fc 1f 85 b0 8d 91 76 39 a1 56 e2 |T...k......v9.V.| +000002a0 1b 73 1e c3 1f 57 59 25 17 b2 53 6c fd 47 5f de |.s...WY%..Sl.G_.| +000002b0 57 2c c0 e7 76 1b 71 05 6c 14 03 03 00 01 01 16 |W,..v.q.l.......| +000002c0 03 03 00 28 00 00 00 00 00 00 00 00 42 57 90 45 |...(........BW.E| +000002d0 6a b9 64 64 92 ac c5 63 14 66 d1 f0 f9 65 f3 25 |j.dd...c.f...e.%| +000002e0 de 81 74 da 68 1c cb 90 a5 46 6d 69 |..t.h....Fmi| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 28 e4 27 5e 80 00 |..........(.'^..| -00000010 ee db 03 4c 17 d1 9c bf f5 68 5f eb a6 fb 0c 3f |...L.....h_....?| -00000020 4f c4 38 84 3e c2 e9 f4 9b 06 39 5f 89 06 3a bd |O.8.>.....9_..:.| -00000030 77 db 25 |w.%| +00000000 14 03 03 00 01 01 16 03 03 00 28 6b 52 88 32 f1 |..........(kR.2.| +00000010 6e 1f dd ce 38 ba d4 7d c7 4a 55 89 4c 91 57 34 |n...8..}.JU.L.W4| +00000020 1e 54 12 8e 37 e2 dc a9 7d 37 b6 31 57 2f 11 27 |.T..7...}7.1W/.'| +00000030 42 96 c2 |B..| >>> Flow 5 (client to server) -00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 2b 98 2b |.............+.+| -00000010 d6 dc d2 69 03 c9 0e 44 46 d1 5e d2 5a 14 89 7b |...i...DF.^.Z..{| -00000020 60 ab 62 15 03 03 00 1a 00 00 00 00 00 00 00 02 |`.b.............| -00000030 b9 7a 17 4b 10 5f 25 90 14 75 bb aa 42 de 7b 63 |.z.K._%..u..B.{c| -00000040 69 e8 |i.| +00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 be ea d3 |................| +00000010 87 8c 16 62 86 4a 53 49 9d d7 f8 01 11 8b 9b 58 |...b.JSI.......X| +00000020 39 89 cf 15 03 03 00 1a 00 00 00 00 00 00 00 02 |9...............| +00000030 93 9d 61 38 db c4 be 69 5e fb 63 1e ae f3 57 e4 |..a8...i^.c...W.| +00000040 fe 85 |..| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-ECDSA b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-ECDSA index 7b2a363176..689be1097b 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-ECDSA +++ b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-ECDSA @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 6d b7 f7 cf 1d |....]...Y..m....| -00000010 f9 c0 02 cb ee 90 23 93 41 8e 26 24 3e 74 31 ce |......#.A.&$>t1.| -00000020 4f 53 f8 9d 0f 94 02 b2 66 c9 87 20 d6 5c 35 52 |OS......f.. .\5R| -00000030 4b b1 f2 bb 2e 1d 95 ff 7d 83 f0 58 a8 0a ed b1 |K.......}..X....| -00000040 54 25 03 ca ea 7b 8d 1a 8f 9f 43 51 c0 09 00 00 |T%...{....CQ....| +00000000 16 03 03 00 5d 02 00 00 59 03 03 dc 6d a4 87 a5 |....]...Y...m...| +00000010 a1 8e 67 3d c3 ed c0 e4 ed 38 7a 00 df b1 50 f4 |..g=.....8z...P.| +00000020 4a cc 0f ab e2 e8 d9 77 b8 1a 18 20 cb e9 02 2a |J......w... ...*| +00000030 4f 17 c0 9d 3d 55 60 3e d8 46 ee 52 dd bf 3e e6 |O...=U`>.F.R..>.| +00000040 c9 4a b5 24 f5 19 73 56 ab 78 ce ec c0 09 00 00 |.J.$..sV.x......| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 0e 0b 00 02 0a 00 02 07 00 02 |................| 00000070 04 30 82 02 00 30 82 01 62 02 09 00 b8 bf 2d 47 |.0...0..b.....-G| @@ -56,23 +58,23 @@ 00000240 8c 25 c1 33 13 83 0d 94 06 bb d4 37 7a f6 ec 7a |.%.3.......7z..z| 00000250 c9 86 2e dd d7 11 69 7f 85 7c 56 de fb 31 78 2b |......i..|V..1x+| 00000260 e4 c7 78 0d ae cb be 9e 4e 36 24 31 7b 6a 0f 39 |..x.....N6$1{j.9| -00000270 95 12 07 8f 2a 16 03 03 00 b6 0c 00 00 b2 03 00 |....*...........| -00000280 1d 20 04 b4 79 b4 2c 1d 0f b3 4b ff 67 e7 24 88 |. ..y.,...K.g.$.| -00000290 d6 db 4f 1e 66 da 0e f2 89 5a 53 ed 4e ba ad 4c |..O.f....ZS.N..L| -000002a0 81 0a 04 03 00 8a 30 81 87 02 42 01 fb 16 53 43 |......0...B...SC| -000002b0 2b 86 61 0a 58 a0 68 c1 cd 2c ff ec 79 7f 83 fa |+.a.X.h..,..y...| -000002c0 cc 0b 24 9d 98 54 d0 dc 90 55 e1 b3 e6 48 69 1a |..$..T...U...Hi.| -000002d0 55 62 f4 da 8f 60 db f7 76 80 d5 4d 37 f6 43 49 |Ub...`..v..M7.CI| -000002e0 95 3d 96 f6 e2 fd a4 07 ae 24 8c fa bd 02 41 20 |.=.......$....A | -000002f0 a1 50 78 a3 dd 99 c0 cf 74 f1 c0 79 b1 13 9d bc |.Px.....t..y....| -00000300 0b 37 cf 7c 09 11 b8 a4 71 65 e8 be ff 3a b9 85 |.7.|....qe...:..| -00000310 cd b4 30 f8 1f d6 2e 83 96 6c 01 3e d2 00 a7 5b |..0......l.>...[| -00000320 23 c6 d0 69 eb 90 49 e3 46 ed 45 96 3b 07 d4 a8 |#..i..I.F.E.;...| -00000330 16 03 03 00 3a 0d 00 00 36 03 01 02 40 00 2e 04 |....:...6...@...| -00000340 03 05 03 06 03 08 07 08 08 08 09 08 0a 08 0b 08 |................| -00000350 04 08 05 08 06 04 01 05 01 06 01 03 03 02 03 03 |................| -00000360 01 02 01 03 02 02 02 04 02 05 02 06 02 00 00 16 |................| -00000370 03 03 00 04 0e 00 00 00 |........| +00000270 95 12 07 8f 2a 16 03 03 00 b7 0c 00 00 b3 03 00 |....*...........| +00000280 1d 20 d8 81 5d 07 0c 63 f2 9a bf 82 37 08 f6 6d |. ..]..c....7..m| +00000290 e2 20 4b 98 85 cc 62 ad a2 ac b1 8b 15 de 1d 5e |. K...b........^| +000002a0 3b 74 04 03 00 8b 30 81 88 02 42 01 81 b9 d9 e7 |;t....0...B.....| +000002b0 3b 89 ed 5f cb 0a 10 16 85 69 c3 5e 7f 82 95 f6 |;.._.....i.^....| +000002c0 49 48 3a 6d 84 c2 f5 04 9a 00 ef 86 f9 10 fc 03 |IH:m............| +000002d0 a8 ba eb e7 0c 0c 0c 27 7b ba aa 73 a4 23 03 cb |.......'{..s.#..| +000002e0 d8 be c8 39 34 1f c4 33 e4 cf 12 98 35 02 42 01 |...94..3....5.B.| +000002f0 dc 0b c7 df 9c b2 c4 f5 dc 4a a6 b0 ef 40 3c 8c |.........J...@<.| +00000300 98 f3 93 ac 14 9b 4d fe 6e 7a 09 fd 23 c3 14 4f |......M.nz..#..O| +00000310 cf 1a e6 61 72 58 8c 75 10 6c 75 42 cc 7b 9c 4a |...arX.u.luB.{.J| +00000320 11 62 25 12 63 44 9d fe 3d 67 44 7e 74 bd b0 3d |.b%.cD..=gD~t..=| +00000330 04 16 03 03 00 3a 0d 00 00 36 03 01 02 40 00 2e |.....:...6...@..| +00000340 04 03 05 03 06 03 08 07 08 08 08 09 08 0a 08 0b |................| +00000350 08 04 08 05 08 06 04 01 05 01 06 01 03 03 02 03 |................| +00000360 03 01 02 01 03 02 02 02 04 02 05 02 06 02 00 00 |................| +00000370 16 03 03 00 04 0e 00 00 00 |.........| >>> Flow 3 (client to server) 00000000 16 03 03 01 fd 0b 00 01 f9 00 01 f6 00 01 f3 30 |...............0| 00000010 82 01 ef 30 82 01 58 a0 03 02 01 02 02 10 5c 19 |...0..X.......\.| @@ -109,31 +111,31 @@ 00000200 e5 35 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 |.5....%...! /.}.| 00000210 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 |G.bC.(.._.).0...| 00000220 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 16 03 03 00 |......._X.;t....| -00000230 88 0f 00 00 84 08 04 00 80 3f 4a c2 4f 36 85 f0 |.........?J.O6..| -00000240 d0 c6 b6 8f f1 cc 45 c1 2f f2 c7 24 1e 0f 04 dc |......E./..$....| -00000250 f5 af 6e 38 eb aa a6 6f 36 f4 80 dd 78 78 a7 d4 |..n8...o6...xx..| -00000260 50 3a df e1 23 c4 3f 58 df 1a c0 1d 57 a5 46 3b |P:..#.?X....W.F;| -00000270 5d 09 ac 62 63 28 8a a2 b5 d4 9b 88 7c b9 4d b4 |]..bc(......|.M.| -00000280 66 b2 9d 53 6e 15 9c f2 9b c7 14 ca 19 7f 00 38 |f..Sn..........8| -00000290 81 a3 7b 44 e8 3d 6d 54 0f b3 81 fd 82 07 4d a1 |..{D.=mT......M.| -000002a0 3e 8c 30 34 cd 6e 55 96 58 bf 86 8b 9c f6 be 94 |>.04.nU.X.......| -000002b0 f4 a8 7e 4d 7f 03 07 7e 98 14 03 03 00 01 01 16 |..~M...~........| +00000230 88 0f 00 00 84 08 04 00 80 3c 66 74 5d c3 4b d6 |............| +00000260 19 a7 d9 5d 7c f6 65 32 bd 47 e9 2f 90 a8 90 1b |...]|.e2.G./....| +00000270 41 05 08 35 32 f6 c2 22 70 61 37 a3 48 96 72 e0 |A..52.."pa7.H.r.| +00000280 41 26 07 a9 6c c2 34 72 35 d5 43 ce 23 fd 34 9b |A&..l.4r5.C.#.4.| +00000290 56 b7 4e c0 be b9 b3 bd 81 df 32 58 3f b2 af 34 |V.N.......2X?..4| +000002a0 c0 08 69 27 19 43 0f 34 1b 56 ed 08 cd 1b 2b f3 |..i'.C.4.V....+.| +000002b0 41 75 8c 0a b2 43 4c f6 fe 14 03 03 00 01 01 16 |Au...CL.........| 000002c0 03 03 00 40 00 00 00 00 00 00 00 00 00 00 00 00 |...@............| -000002d0 00 00 00 00 c7 88 1e 15 dd 36 31 22 0f 30 d1 4d |.........61".0.M| -000002e0 40 2e 3a dd 05 cc fd a8 d2 ea f8 d9 79 1d 07 46 |@.:.........y..F| -000002f0 2c 80 ab ab 54 3c 10 5a a7 79 d2 1c 16 18 94 eb |,...T<.Z.y......| -00000300 46 69 cc 03 |Fi..| +000002d0 00 00 00 00 ce ef 0a 09 6d 11 17 89 31 b3 ac 31 |........m...1..1| +000002e0 76 fe 02 d1 2b f8 dc df fc 59 e3 2f aa 14 4e 9d |v...+....Y./..N.| +000002f0 c1 d9 5d f6 4f 57 6f 15 db 93 f1 27 12 02 7c 08 |..].OWo....'..|.| +00000300 75 f6 48 26 |u.H&| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 40 9e 65 27 5b 92 |..........@.e'[.| -00000010 1e 2b 1a bc 81 ab 85 29 51 c1 38 04 b6 97 e5 4b |.+.....)Q.8....K| -00000020 b1 7d a5 e2 6d e7 b1 1a 33 6c f1 3d a4 9c de 2d |.}..m...3l.=...-| -00000030 b3 8a 01 da cc f1 d7 83 b1 1e 84 cb b7 e7 fe e6 |................| -00000040 26 83 b0 2d 6f a9 77 46 55 44 7a |&..-o.wFUDz| +00000000 14 03 03 00 01 01 16 03 03 00 40 c0 0b de 9c 60 |..........@....`| +00000010 35 52 38 09 01 7f e5 52 b3 cf b4 e6 27 02 36 52 |5R8....R....'.6R| +00000020 ce 84 dd f5 ee f8 65 7c 89 ad 5e 1c 86 09 36 d0 |......e|..^...6.| +00000030 23 c7 52 63 6b 67 97 4e bf c0 28 83 3a c8 3e a2 |#.Rckg.N..(.:.>.| +00000040 2f f3 d7 08 8c c0 86 64 8e 9c 3e |/......d..>| >>> Flow 5 (client to server) 00000000 17 03 03 00 30 00 00 00 00 00 00 00 00 00 00 00 |....0...........| -00000010 00 00 00 00 00 e2 55 06 b8 6f 63 c4 63 78 76 4b |......U..oc.cxvK| -00000020 c8 63 8b 4b c6 11 2c ff dc fc 20 f7 52 fe fa 5f |.c.K..,... .R.._| -00000030 e3 45 3a f2 a1 15 03 03 00 30 00 00 00 00 00 00 |.E:......0......| -00000040 00 00 00 00 00 00 00 00 00 00 0e cb 88 2f 1f be |............./..| -00000050 9c 76 4d db 75 7f eb 01 ae bd 76 28 07 41 49 6c |.vM.u.....v(.AIl| -00000060 4c 82 84 d5 fc d3 75 f4 4b 81 |L.....u.K.| +00000010 00 00 00 00 00 98 7e 6b 30 28 7d e1 6f 09 17 40 |......~k0(}.o..@| +00000020 cf 5f 98 90 46 91 b5 9b f8 29 22 a0 85 75 f7 f6 |._..F....)"..u..| +00000030 f4 33 c8 60 75 15 03 03 00 30 00 00 00 00 00 00 |.3.`u....0......| +00000040 00 00 00 00 00 00 00 00 00 00 02 c0 9e 3b 21 50 |.............;!P| +00000050 a1 7a 16 67 32 3d 66 6d c4 7f 9c 9b 44 30 31 f4 |.z.g2=fm....D01.| +00000060 ea 03 7a e3 54 5d 35 7f d3 eb |..z.T]5...| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-RSA b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-RSA index 25fc245b65..2dd00ba602 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-RSA +++ b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-RSA @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 5f da ab 10 86 |....]...Y.._....| -00000010 4c 91 60 4c ec 28 20 d4 37 84 c4 d0 87 bb 9d a9 |L.`L.( .7.......| -00000020 5a c0 86 81 d9 91 38 5a ef 3f ae 20 ec 14 b6 de |Z.....8Z.?. ....| -00000030 b7 cf 59 09 43 dc 59 3f 74 89 10 f2 82 ea 60 46 |..Y.C.Y?t.....`F| -00000040 8f a3 6a 0f 61 0f 2d 66 24 c3 fb 7f c0 2f 00 00 |..j.a.-f$..../..| +00000000 16 03 03 00 5d 02 00 00 59 03 03 df 59 a1 48 61 |....]...Y...Y.Ha| +00000010 ef db cd 29 5f 9b 90 e4 d9 6d db 10 98 ae 69 b8 |...)_....m....i.| +00000020 97 ed 8f 57 24 42 16 32 0a b0 b1 20 79 b3 fc 90 |...W$B.2... y...| +00000030 63 58 4b ab 45 d8 e9 39 7c 11 20 09 33 db b5 4c |cXK.E..9|. .3..L| +00000040 2c e2 d6 39 63 fe 74 d5 59 18 5c 7d c0 2f 00 00 |,..9c.t.Y.\}./..| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -61,18 +63,18 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 2c c4 b9 |............ ,..| -000002d0 13 19 85 99 cb 09 f3 5c 3a a1 b2 16 ee 77 6a cd |.......\:....wj.| -000002e0 23 6c 08 00 7e 6b c0 67 a8 cd 8b 62 64 08 04 00 |#l..~k.g...bd...| -000002f0 80 90 74 bf ce f7 94 f1 94 b1 95 04 4a ab d6 08 |..t.........J...| -00000300 23 11 8d ce 4e 7b 36 ee 67 d2 26 af 11 0e 33 58 |#...N{6.g.&...3X| -00000310 12 cb e5 3b 5b 5c f3 d1 82 19 2e 55 6b 98 05 6e |...;[\.....Uk..n| -00000320 3c 5e 04 f5 3e df 76 c3 e5 46 e7 a6 bb f7 d4 d5 |<^..>.v..F......| -00000330 e8 fd 20 d3 ce 3e 9d a0 90 9a 10 52 a7 04 c9 e9 |.. ..>.....R....| -00000340 28 6f 3f ff e1 0a 10 d0 25 04 ea e4 84 4c b7 80 |(o?.....%....L..| -00000350 e4 fe a7 a6 da db cc b0 e0 62 80 10 fc 03 16 94 |.........b......| -00000360 f2 dd 0d 3f aa 11 45 af e3 e4 7b e6 bc d6 75 91 |...?..E...{...u.| -00000370 99 16 03 03 00 3a 0d 00 00 36 03 01 02 40 00 2e |.....:...6...@..| +000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 12 4b 94 |............ .K.| +000002d0 2b 4a d0 b5 0f ca 87 05 7f 56 c3 11 b0 83 01 27 |+J.......V.....'| +000002e0 68 a2 dd 63 b6 9b ff e5 48 7e af dd 0f 08 04 00 |h..c....H~......| +000002f0 80 38 6f 01 25 4e 51 f1 8d 6c 89 4b 85 85 1d cd |.8o.%NQ..l.K....| +00000300 63 21 5e 89 d5 04 ac 81 cf 42 3c 6f df f1 53 ac |c!^......B>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 28 de 60 8a ea b5 |..........(.`...| -00000010 74 66 35 35 39 bb 62 ab 17 7d 91 c3 1a 5a e5 6c |tf559.b..}...Z.l| -00000020 49 14 c8 bc bd d6 b6 7e 2f 8e d4 40 5a ae ee 89 |I......~/..@Z...| -00000030 89 ae af |...| +00000000 14 03 03 00 01 01 16 03 03 00 28 30 5f 74 39 bb |..........(0_t9.| +00000010 c8 00 8c d7 bd 74 ce 43 62 ea 08 0f ba b4 88 74 |.....t.Cb......t| +00000020 d3 31 c9 3c a6 3a 92 14 75 44 95 ee c0 a9 ef 75 |.1.<.:..uD.....u| +00000030 40 25 5f |@%_| >>> Flow 5 (client to server) -00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 3c 92 2d |.............<.-| -00000010 44 23 5b eb 34 dc 9a 4d c2 fe a7 88 cb 6f 8d 62 |D#[.4..M.....o.b| -00000020 4b 2a bf 15 03 03 00 1a 00 00 00 00 00 00 00 02 |K*..............| -00000030 90 82 82 54 5d 63 6e 8b 50 71 6e e8 fd 75 96 9e |...T]cn.Pqn..u..| -00000040 d0 0d |..| +00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 f9 d9 d3 |................| +00000010 ee ec ec 6e 8d 0d dd 62 f3 e1 19 0f f4 24 06 46 |...n...b.....$.F| +00000020 76 7d 78 15 03 03 00 1a 00 00 00 00 00 00 00 02 |v}x.............| +00000030 ce 6a 05 27 af 9a 3d 09 27 70 dc c2 4c 8a a5 ab |.j.'..=.'p..L...| +00000040 47 d4 |G.| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-RSAPKCS1v15 b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-RSAPKCS1v15 index 6500aec8b0..5fab0f8c82 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-RSAPKCS1v15 +++ b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-RSAPKCS1v15 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 7b 21 bd ee 4b |....]...Y..{!..K| -00000010 af e3 88 cb 18 15 e5 f3 ef a5 a7 b3 a1 66 06 b2 |.............f..| -00000020 f1 cc d7 36 7e 18 d1 f6 2e 3e cd 20 34 09 01 9f |...6~....>. 4...| -00000030 c6 80 10 43 c1 ed e6 c1 29 1c ed ac 61 36 37 4f |...C....)...a67O| -00000040 8e 00 44 9d b9 cb 51 0b a2 9c 64 be c0 2f 00 00 |..D...Q...d../..| +00000000 16 03 03 00 5d 02 00 00 59 03 03 7b 1f 2c 33 ab |....]...Y..{.,3.| +00000010 6e f8 23 ca 20 a9 66 61 ac 29 00 3e ef a6 cd ee |n.#. .fa.).>....| +00000020 fe e7 18 b7 66 57 0d af 24 37 7a 20 e7 c8 bd 22 |....fW..$7z ..."| +00000030 f7 ff 01 c5 ef c0 fb bd b2 93 d9 81 df 30 96 91 |.............0..| +00000040 0b af b5 a2 61 87 76 27 d4 bf ce 88 c0 2f 00 00 |....a.v'...../..| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -61,18 +63,18 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 d3 22 bb |............ .".| -000002d0 c4 42 90 54 0a 43 f6 26 06 c1 ad 71 c8 82 ba 03 |.B.T.C.&...q....| -000002e0 9b cd be a4 a8 04 5a 30 69 ec b5 c9 79 04 01 00 |......Z0i...y...| -000002f0 80 ab c7 ca 24 9b db 7d 8c 81 c4 c4 46 49 2a 45 |....$..}....FI*E| -00000300 69 31 1b dc ef 01 ce 9f e4 da cf 6c 04 4c e3 4e |i1.........l.L.N| -00000310 16 84 05 fe 48 f4 21 60 fc d4 e1 6c 48 8c 87 2d |....H.!`...lH..-| -00000320 1f 56 2c ad 88 2b 5c 8d 4f 36 93 d6 a3 b1 32 4a |.V,..+\.O6....2J| -00000330 ef 0f e6 db 82 1c f2 ea 38 08 2a 62 8b a3 bd 4e |........8.*b...N| -00000340 8b 2a ae eb 0e e5 f1 88 ff 3c de f8 ed d7 c3 07 |.*.......<......| -00000350 05 92 bb e5 6d 15 23 c8 54 19 a6 cf d1 4f e2 b1 |....m.#.T....O..| -00000360 a3 4d ff 6f 22 32 5b 58 f7 58 c1 9f 58 59 b5 e2 |.M.o"2[X.X..XY..| -00000370 7b 16 03 03 00 0c 0d 00 00 08 01 01 00 02 04 01 |{...............| +000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 2d 21 55 |............ -!U| +000002d0 c7 73 14 c1 c8 84 91 4d 16 70 ca 47 46 4a 59 fe |.s.....M.p.GFJY.| +000002e0 20 d8 34 0a 78 8e a3 29 f5 40 38 d9 59 04 01 00 | .4.x..).@8.Y...| +000002f0 80 03 9f da 00 e0 50 28 6b 29 84 9b 96 05 f1 86 |......P(k)......| +00000300 ef f5 6d 9f 17 5f 07 f7 2d 32 af 5e 0d 72 f4 86 |..m.._..-2.^.r..| +00000310 af 7c b9 e8 2d 80 b3 10 80 dd 61 5b e5 a7 53 5a |.|..-.....a[..SZ| +00000320 5e 19 47 5f f1 96 a4 ab d8 e7 65 eb be eb bc 51 |^.G_......e....Q| +00000330 95 6f 29 48 ac cb a7 08 3a b9 45 77 37 30 a3 83 |.o)H....:.Ew70..| +00000340 e4 ef 58 06 0e ec a1 cf 2c 06 62 a8 1c 97 64 ac |..X.....,.b...d.| +00000350 c7 86 13 4c 9b 80 69 d4 89 9c 96 2c f9 20 c6 2c |...L..i....,. .,| +00000360 d2 11 64 ab 8d df c0 ea 1c 73 da ed 10 28 dc 90 |..d......s...(..| +00000370 8a 16 03 03 00 0c 0d 00 00 08 01 01 00 02 04 01 |................| 00000380 00 00 16 03 03 00 04 0e 00 00 00 |...........| >>> Flow 3 (client to server) 00000000 16 03 03 01 fd 0b 00 01 f9 00 01 f6 00 01 f3 30 |...............0| @@ -110,26 +112,26 @@ 00000200 e5 35 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 |.5....%...! /.}.| 00000210 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 |G.bC.(.._.).0...| 00000220 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 16 03 03 00 |......._X.;t....| -00000230 88 0f 00 00 84 04 01 00 80 8f 22 b5 46 ab 82 02 |..........".F...| -00000240 f8 a8 f8 63 d9 0f eb d4 2b 8d 02 de ce 79 d5 a1 |...c....+....y..| -00000250 20 bb 70 7a b2 36 6a b5 52 81 f5 ea f7 23 b5 41 | .pz.6j.R....#.A| -00000260 86 35 90 cc 64 4a 68 7e e3 ae c1 97 32 3b c2 a9 |.5..dJh~....2;..| -00000270 e0 f0 07 14 63 d5 08 15 59 46 f5 ea a6 39 5c 98 |....c...YF...9\.| -00000280 39 7e 17 d8 74 ae 05 a3 f5 3a 71 74 e8 b4 c9 a4 |9~..t....:qt....| -00000290 1c 82 04 ca fe 5f 97 23 8a c1 f9 ce d1 5d 0e 81 |....._.#.....]..| -000002a0 da 5f e1 b6 76 80 3c cf 9f 19 79 cf 33 d0 0a fe |._..v.<...y.3...| -000002b0 19 fc 2d 9a bb 24 cd d4 79 14 03 03 00 01 01 16 |..-..$..y.......| -000002c0 03 03 00 28 00 00 00 00 00 00 00 00 28 78 b8 0b |...(........(x..| -000002d0 59 d8 a8 11 21 ed 45 74 02 00 50 33 42 b9 0a d2 |Y...!.Et..P3B...| -000002e0 8c 9c a3 45 6e b5 9d 3e 5b 30 a9 2e |...En..>[0..| +00000230 88 0f 00 00 84 04 01 00 80 5e cb 28 a9 f4 b7 f1 |.........^.(....| +00000240 a7 31 a5 51 4c 2d b0 c9 fb 84 0a 77 30 bc 00 72 |.1.QL-.....w0..r| +00000250 66 65 aa 20 78 34 f1 3f 31 93 42 f7 7c 28 23 70 |fe. x4.?1.B.|(#p| +00000260 b6 ad 2a 8f ed 70 2f a8 db ce 69 20 3e 9f 2a 6d |..*..p/...i >.*m| +00000270 1f 32 f8 32 7c 74 c9 2a cd b5 c0 0d 0e 1a 32 d5 |.2.2|t.*......2.| +00000280 ed a3 09 fb 8b ce 1d 30 52 5e ba c2 17 85 f0 c2 |.......0R^......| +00000290 59 e6 db 0c 17 b3 2c 81 cd 1b f1 4c 92 e7 1b 6a |Y.....,....L...j| +000002a0 49 86 50 25 00 59 40 df b2 fd c8 3b 9d c7 2f 57 |I.P%.Y@....;../W| +000002b0 e1 e5 31 91 57 60 f2 b8 e5 14 03 03 00 01 01 16 |..1.W`..........| +000002c0 03 03 00 28 00 00 00 00 00 00 00 00 07 cd 54 b1 |...(..........T.| +000002d0 e3 78 20 90 ca 71 5e 06 f4 32 e9 02 41 60 c1 9d |.x ..q^..2..A`..| +000002e0 d3 c6 42 45 d8 2e fc 3d 07 9a 9d 04 |..BE...=....| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 28 f8 f5 85 19 36 |..........(....6| -00000010 be 6e 58 45 66 04 c4 f9 e7 fd 50 55 3b 07 6c 50 |.nXEf.....PU;.lP| -00000020 16 8c 2e 72 cf be 78 0a 8a 82 91 ed c1 72 10 d3 |...r..x......r..| -00000030 cf 42 b5 |.B.| +00000000 14 03 03 00 01 01 16 03 03 00 28 75 60 b0 0a 19 |..........(u`...| +00000010 12 ee 0f 5c c2 6a 31 f8 27 e3 53 b1 76 2b 6a 93 |...\.j1.'.S.v+j.| +00000020 a2 37 72 74 e8 e9 c8 e7 94 56 6b d5 a3 49 09 79 |.7rt.....Vk..I.y| +00000030 59 66 34 |Yf4| >>> Flow 5 (client to server) -00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 53 4b a2 |.............SK.| -00000010 e4 5f 51 70 46 3d e3 41 28 8b 82 02 e2 27 8d eb |._QpF=.A(....'..| -00000020 42 65 7f 15 03 03 00 1a 00 00 00 00 00 00 00 02 |Be..............| -00000030 f3 31 ed 2c ca e5 13 e8 93 cd d7 51 4b c5 16 88 |.1.,.......QK...| -00000040 c0 a4 |..| +00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 70 7a 77 |.............pzw| +00000010 14 b3 3d 3e 51 19 5e ae 97 56 bc e8 3c 1c 46 dd |..=>Q.^..V..<.F.| +00000020 67 e6 f5 15 03 03 00 1a 00 00 00 00 00 00 00 02 |g...............| +00000030 50 4b b6 03 84 33 58 6a a1 95 dc 8e ad d1 1f 8b |PK...3Xj........| +00000040 93 ca |..| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-RSAPSS b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-RSAPSS index b4c5102535..867ec87afa 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-RSAPSS +++ b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-RSAPSS @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 0d 73 c5 43 a1 |....]...Y...s.C.| -00000010 71 b6 21 da 7a f6 76 44 60 8a 84 ec 6b 1d 70 01 |q.!.z.vD`...k.p.| -00000020 d8 b2 29 48 db 5d ea da ea 79 bb 20 3f b9 66 fe |..)H.]...y. ?.f.| -00000030 73 db fc 90 18 3f ac e5 1f 5d 86 24 80 75 ec a3 |s....?...].$.u..| -00000040 c6 aa e9 05 c1 47 21 bd 30 f6 41 43 c0 2f 00 00 |.....G!.0.AC./..| +00000000 16 03 03 00 5d 02 00 00 59 03 03 97 c2 4c 45 c0 |....]...Y....LE.| +00000010 22 6a 7d 71 93 1a 71 a7 e1 40 a5 44 5e 39 8a 3e |"j}q..q..@.D^9.>| +00000020 99 04 1f e1 74 ad 3a 64 89 ad 93 20 61 76 9a e1 |....t.:d... av..| +00000030 39 26 af 37 ad ea f2 9c 4c 2e 1b a2 18 0c 73 8e |9&.7....L.....s.| +00000040 5b 8b f0 0f 44 04 80 31 5a 49 39 f0 c0 2f 00 00 |[...D..1ZI9../..| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 66 0b 00 02 62 00 02 5f 00 02 |......f...b.._..| 00000070 5c 30 82 02 58 30 82 01 8d a0 03 02 01 02 02 11 |\0..X0..........| @@ -62,17 +64,17 @@ 000002a0 fa b1 3f 14 11 89 66 79 d1 8e 88 0e 0b a0 9e 30 |..?...fy.......0| 000002b0 2a c0 67 ef ca 46 02 88 e9 53 81 22 69 22 97 ad |*.g..F...S."i"..| 000002c0 80 93 d4 f7 dd 70 14 24 d7 70 0a 46 a1 16 03 03 |.....p.$.p.F....| -000002d0 00 ac 0c 00 00 a8 03 00 1d 20 03 05 56 dd 40 c0 |......... ..V.@.| -000002e0 b6 4d 5a df 26 e7 4a f1 a8 47 ef af 12 6e 5f 01 |.MZ.&.J..G...n_.| -000002f0 2a 7a 19 1a 45 52 8c 47 d2 53 08 04 00 80 8a 6a |*z..ER.G.S.....j| -00000300 9d 8b 38 73 da 92 bc f6 05 79 90 af 7a 43 59 62 |..8s.....y..zCYb| -00000310 bc 97 b6 af ef ce 5f 59 07 81 93 bc c5 3c 5f f9 |......_Y.....<_.| -00000320 4e 04 45 74 5e cc 7a 6f 82 7a cf 86 0d 68 c9 35 |N.Et^.zo.z...h.5| -00000330 1d 62 f0 3c ee 77 b5 4c 3a 40 ec 89 fc 97 ff a6 |.b.<.w.L:@......| -00000340 34 13 8b bc 6b 83 92 e8 52 c5 c6 42 c9 25 ad 37 |4...k...R..B.%.7| -00000350 41 e7 5a 52 d8 0f 7d fd a8 9e 86 c6 1b b2 8b 50 |A.ZR..}........P| -00000360 2a 1c 15 56 00 d8 a8 85 86 05 28 7f a1 3e ba f2 |*..V......(..>..| -00000370 fe 92 07 c8 a4 4a 2a 5f d1 53 82 09 9c 65 16 03 |.....J*_.S...e..| +000002d0 00 ac 0c 00 00 a8 03 00 1d 20 ae c6 bf 84 a5 c3 |......... ......| +000002e0 05 6b fa 30 b0 ec b7 c2 ff ec 7d e4 b8 e0 f2 0f |.k.0......}.....| +000002f0 3d 0e ef de 32 ad f2 6e 52 55 08 04 00 80 07 86 |=...2..nRU......| +00000300 e1 b2 04 6e b2 43 09 df c9 20 35 11 3b 0f 10 61 |...n.C... 5.;..a| +00000310 7e 67 cc 65 c6 60 80 c3 43 7d b8 1c 52 e3 09 af |~g.e.`..C}..R...| +00000320 df 38 79 e1 ea 6d b4 6b bc 50 fe a8 6f 46 6f 9c |.8y..m.k.P..oFo.| +00000330 40 1c 6f f2 e5 c6 d9 a4 db 72 24 4a 9c 57 e7 d6 |@.o......r$J.W..| +00000340 91 91 5b 1b f1 40 f2 d9 58 a2 81 4c d7 be 20 d4 |..[..@..X..L.. .| +00000350 12 4f 64 05 e5 ec ba 35 22 a7 fe df c9 ea b3 43 |.Od....5"......C| +00000360 dc 47 29 98 eb c9 92 11 42 a0 80 a4 2a 2e 4d 47 |.G).....B...*.MG| +00000370 73 9e 0f 13 37 79 92 ca db c4 84 db 05 4a 16 03 |s...7y.......J..| 00000380 03 00 0c 0d 00 00 08 01 01 00 02 08 04 00 00 16 |................| 00000390 03 03 00 04 0e 00 00 00 |........| >>> Flow 3 (client to server) @@ -118,26 +120,26 @@ 00000270 10 00 00 21 20 2f e5 7d a3 47 cd 62 43 15 28 da |...! /.}.G.bC.(.| 00000280 ac 5f bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 |._.).0..........| 00000290 5f 58 cb 3b 74 16 03 03 00 88 0f 00 00 84 08 04 |_X.;t...........| -000002a0 00 80 2e 4c af b1 f2 9c de 14 92 81 c4 7d d1 2f |...L.........}./| -000002b0 a3 ba ba df 6f 26 da 2d 86 b4 1f 60 cd fe e7 c1 |....o&.-...`....| -000002c0 77 02 a5 58 3f 6a fc 1d ef 93 23 0a 9c c9 70 93 |w..X?j....#...p.| -000002d0 f8 0c 67 fd 58 83 96 85 62 da 31 e7 a6 78 9f 1c |..g.X...b.1..x..| -000002e0 dc 02 b3 b8 bc 05 26 92 e8 6a e7 3c db 5f 80 ee |......&..j.<._..| -000002f0 12 75 ff e6 36 36 e6 75 c2 77 d9 63 ef 60 89 db |.u..66.u.w.c.`..| -00000300 21 aa 27 85 11 9b 8c eb be a3 e3 34 0e 01 93 ca |!.'........4....| -00000310 a6 65 e3 cd 0f b8 b5 c6 f0 d7 15 69 db 4b 57 d2 |.e.........i.KW.| -00000320 05 0d 14 03 03 00 01 01 16 03 03 00 28 00 00 00 |............(...| -00000330 00 00 00 00 00 b5 09 a0 c4 55 89 df 8a 60 83 f3 |.........U...`..| -00000340 82 12 55 1d d5 50 11 81 74 0f cd b5 ed 9a 00 e7 |..U..P..t.......| -00000350 58 f7 65 0e 8d |X.e..| +000002a0 00 80 cb ab 63 1d e6 7e 16 22 27 8b e7 91 f4 5c |....c..~."'....\| +000002b0 66 fc 70 eb f7 e6 9c 86 7c 62 30 1c 78 35 bf 09 |f.p.....|b0.x5..| +000002c0 af d1 5b e3 55 45 98 8d 4c 16 8e 69 cb 8f 45 97 |..[.UE..L..i..E.| +000002d0 6d c4 6a 25 2a 47 43 64 ac 52 12 bd f5 b9 c0 b0 |m.j%*GCd.R......| +000002e0 51 38 e7 d4 c8 a2 9c 35 4b 5b ab 21 76 73 68 fe |Q8.....5K[.!vsh.| +000002f0 d0 7a f2 95 3c 44 3b 55 b0 89 76 3e 42 e1 23 51 |.z..B.#Q| +00000300 29 92 3d 6a df 29 61 ee 52 f5 78 71 97 13 d6 09 |).=j.)a.R.xq....| +00000310 ff 08 7a 5f 9d 20 49 83 2e 84 82 ba 08 69 db ae |..z_. I......i..| +00000320 e2 1b 14 03 03 00 01 01 16 03 03 00 28 00 00 00 |............(...| +00000330 00 00 00 00 00 6a ff 4b 3d c1 06 20 69 ed f0 a8 |.....j.K=.. i...| +00000340 7c ec a7 f8 cc 8e a6 de 2d 5e 50 f7 b2 28 9e 97 ||.......-^P..(..| +00000350 27 35 c3 67 72 |'5.gr| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 28 3f eb 87 50 b0 |..........(?..P.| -00000010 ae c2 fd 68 30 95 94 61 1c 78 1e 60 3e 38 17 ef |...h0..a.x.`>8..| -00000020 ed 9b f1 10 26 5e 53 a3 8c 46 2e 6c 24 b2 ab a7 |....&^S..F.l$...| -00000030 6c f0 ea |l..| +00000000 14 03 03 00 01 01 16 03 03 00 28 e3 2f c4 66 7e |..........(./.f~| +00000010 8f bf 41 2e 56 f3 d1 76 63 f8 c0 b1 86 50 98 a0 |..A.V..vc....P..| +00000020 63 c0 c9 23 68 c5 7c f7 08 17 0a 62 78 a8 3d 86 |c..#h.|....bx.=.| +00000030 5c 1a c6 |\..| >>> Flow 5 (client to server) -00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 fe de 40 |...............@| -00000010 52 50 79 da 5f 31 52 52 d8 96 04 35 86 92 03 0b |RPy._1RR...5....| -00000020 6f 5f 04 15 03 03 00 1a 00 00 00 00 00 00 00 02 |o_..............| -00000030 9c 85 24 b0 a9 17 24 cf 18 f6 ef f5 0d c6 77 6d |..$...$.......wm| -00000040 e0 b2 |..| +00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 e9 51 91 |..............Q.| +00000010 f5 cb 2d b9 5e cb b3 52 14 7c e8 18 8f fe b6 ee |..-.^..R.|......| +00000020 7a 41 90 15 03 03 00 1a 00 00 00 00 00 00 00 02 |zA..............| +00000030 d3 5f c1 e2 f5 12 40 c0 4c 1d ab ef 16 3a af 19 |._....@.L....:..| +00000040 30 59 |0Y| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES index 774cb40e3d..a17b1860e3 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES +++ b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 15 ed ca 52 59 |....]...Y.....RY| -00000010 e2 56 80 e2 f3 20 5b 7d 52 f3 67 1f 01 0d ad 30 |.V... [}R.g....0| -00000020 36 a6 43 c2 ed 5e 34 c5 24 89 e1 20 c7 4c 5d 06 |6.C..^4.$.. .L].| -00000030 01 7a 80 aa 84 0c 46 48 63 36 49 4a 9b 3f 8d ba |.z....FHc6IJ.?..| -00000040 78 1b cd f9 ef 03 df cd ee 2c b1 79 c0 09 00 00 |x........,.y....| +00000000 16 03 03 00 5d 02 00 00 59 03 03 be 37 6c 0c 68 |....]...Y...7l.h| +00000010 bd 81 e4 4e 28 fa 5d 2c 03 8d 17 7a 47 b8 de 89 |...N(.],...zG...| +00000020 3d 06 71 dd 40 c0 70 c1 a8 3d 00 20 22 7e 4c f8 |=.q.@.p..=. "~L.| +00000030 1c 6b 13 c4 12 46 d3 de c4 88 2e 41 c3 d7 df 10 |.k...F.....A....| +00000040 23 aa 30 b1 34 a5 7b c9 03 fb d8 3e c0 09 00 00 |#.0.4.{....>....| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 0e 0b 00 02 0a 00 02 07 00 02 |................| 00000070 04 30 82 02 00 30 82 01 62 02 09 00 b8 bf 2d 47 |.0...0..b.....-G| @@ -57,38 +59,38 @@ 00000250 c9 86 2e dd d7 11 69 7f 85 7c 56 de fb 31 78 2b |......i..|V..1x+| 00000260 e4 c7 78 0d ae cb be 9e 4e 36 24 31 7b 6a 0f 39 |..x.....N6$1{j.9| 00000270 95 12 07 8f 2a 16 03 03 00 b6 0c 00 00 b2 03 00 |....*...........| -00000280 1d 20 b7 f5 92 bc 9b 4a f9 62 3f 46 b8 b0 33 56 |. .....J.b?F..3V| -00000290 1e 8d fc e9 68 af bf 67 9b a5 d0 9e a9 cc d9 65 |....h..g.......e| -000002a0 7e 41 04 03 00 8a 30 81 87 02 41 08 b2 fe 6e 40 |~A....0...A...n@| -000002b0 b7 5f 04 db eb 39 18 d5 e0 46 81 07 33 3a 29 fb |._...9...F..3:).| -000002c0 0b 19 76 ac 95 0d cd 4d a4 f0 99 df 6d d6 73 79 |..v....M....m.sy| -000002d0 ed 48 52 78 ea 7a 1d 4b b1 67 d6 fd 21 3b c9 9d |.HRx.z.K.g..!;..| -000002e0 89 67 b7 b9 8e cf 35 28 62 28 3f 0b 02 42 01 7e |.g....5(b(?..B.~| -000002f0 4c a5 af 5b ba 3b d6 38 3b 34 b7 0c 69 27 92 ce |L..[.;.8;4..i'..| -00000300 34 ba bb 0d f6 32 65 fe 3c c0 9c 9d 92 88 b4 11 |4....2e.<.......| -00000310 04 88 f5 b3 21 79 6c ed 6e f6 51 f5 e7 b1 3d 0d |....!yl.n.Q...=.| -00000320 bd d6 92 67 c8 90 71 7a db cc cc 21 64 44 22 d4 |...g..qz...!dD".| +00000280 1d 20 47 dc 78 14 d8 57 a7 37 29 1a 49 f6 07 09 |. G.x..W.7).I...| +00000290 37 49 df 36 32 a1 e2 c9 67 e3 9c 40 ed f5 ac ea |7I.62...g..@....| +000002a0 c2 34 04 03 00 8a 30 81 87 02 41 14 f9 1f 8e 3d |.4....0...A....=| +000002b0 b6 d9 91 86 b0 b2 94 dd 14 89 47 b7 a5 2b d3 3a |..........G..+.:| +000002c0 b9 f8 ef 4c ae 5c 26 74 e8 c1 c5 18 f1 e5 cd 3f |...L.\&t.......?| +000002d0 4e 70 45 64 3b 53 14 b7 f7 86 bf d1 ee 3b cd ab |NpEd;S.......;..| +000002e0 cf 3a bd 12 c7 1e 89 fb 60 bf 34 be 02 42 01 7c |.:......`.4..B.|| +000002f0 7b 7b 03 94 f9 1b 70 4c 25 3c c5 11 2c 1b e0 39 |{{....pL%<..,..9| +00000300 6c ee d1 11 0e 73 82 97 06 c9 eb 92 44 cb 78 66 |l....s......D.xf| +00000310 7c 9e 93 70 79 08 3e 20 90 ef 4b 9b 73 75 80 d4 ||..py.> ..K.su..| +00000320 68 68 f0 06 b1 e8 d8 92 22 e0 07 a7 78 e7 e2 19 |hh......"...x...| 00000330 16 03 03 00 04 0e 00 00 00 |.........| >>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| 00000030 16 03 03 00 40 00 00 00 00 00 00 00 00 00 00 00 |....@...........| -00000040 00 00 00 00 00 07 03 9e fa a4 84 27 17 b8 dd 53 |...........'...S| -00000050 12 4b 89 a1 47 98 22 e3 7b c8 d4 5c 18 bb 89 09 |.K..G.".{..\....| -00000060 29 3a b9 af d3 38 4a 40 76 d6 15 37 80 19 9c ce |):...8J@v..7....| -00000070 32 5b 94 89 2e |2[...| +00000040 00 00 00 00 00 27 23 d3 72 40 80 76 5c b6 7a fd |.....'#.r@.v\.z.| +00000050 bf 45 9e 33 76 d1 3d 1b 77 23 90 ed 75 7b aa 91 |.E.3v.=.w#..u{..| +00000060 f2 8e e7 b1 bb 69 86 84 b2 b5 40 2c 4a 1d f9 cf |.....i....@,J...| +00000070 3e de fe 39 36 |>..96| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 40 2d 53 b0 b0 c1 |..........@-S...| -00000010 05 78 e3 3c 5d 57 a5 04 9a 4b b9 f7 56 ce 5a 76 |.x.<]W...K..V.Zv| -00000020 84 4d f2 46 2e fc c2 9c ec 37 2b 4d 99 88 ab 30 |.M.F.....7+M...0| -00000030 1b 83 7d d8 72 bf e7 c7 f7 cf b8 13 54 d5 a2 a2 |..}.r.......T...| -00000040 dc 76 b3 01 a4 d0 a5 cc eb 66 29 |.v.......f)| +00000000 14 03 03 00 01 01 16 03 03 00 40 54 e0 6f 57 aa |..........@T.oW.| +00000010 e7 14 b0 06 69 45 42 ee 6c ce a7 0b a7 27 94 83 |....iEB.l....'..| +00000020 cd 63 81 19 ac 06 1b 9f 78 86 5b 04 82 40 e7 41 |.c......x.[..@.A| +00000030 f1 df 17 26 8a b4 1c f1 59 ca 43 6b 13 f8 d7 8b |...&....Y.Ck....| +00000040 4e ce 28 cd d2 9b ca c6 42 04 e6 |N.(.....B..| >>> Flow 5 (client to server) 00000000 17 03 03 00 30 00 00 00 00 00 00 00 00 00 00 00 |....0...........| -00000010 00 00 00 00 00 11 31 80 89 b8 32 e7 66 a6 eb c5 |......1...2.f...| -00000020 ca 4b f7 2b 47 73 e9 cd 9f 4e 9a 5e 3f 99 5a 29 |.K.+Gs...N.^?.Z)| -00000030 00 0d 4f 4e 93 15 03 03 00 30 00 00 00 00 00 00 |..ON.....0......| -00000040 00 00 00 00 00 00 00 00 00 00 d9 18 f4 dd 64 64 |..............dd| -00000050 38 27 a7 96 d5 14 d1 b2 26 9c 14 96 54 2a cf d7 |8'......&...T*..| -00000060 4c d0 b6 c3 20 fe 33 73 78 e5 |L... .3sx.| +00000010 00 00 00 00 00 d7 38 5f c6 c8 c8 c0 2e fc 08 d7 |......8_........| +00000020 40 aa 3d 6a 90 75 2f 90 c4 33 d9 a8 50 db 57 f6 |@.=j.u/..3..P.W.| +00000030 3e 4d 03 c8 b0 15 03 03 00 30 00 00 00 00 00 00 |>M.......0......| +00000040 00 00 00 00 00 00 00 00 00 00 bf 0d 85 fb 60 57 |..............`W| +00000050 02 4a 5f 95 9e 6b 00 6e 6e e6 a9 3e 6d fd 62 b9 |.J_..k.nn..>m.b.| +00000060 79 d3 5e e2 63 cd 3b f1 a8 0d |y.^.c.;...| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES-GCM b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES-GCM index 86095340d4..93bdcc53b2 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES-GCM +++ b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES-GCM @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 e1 ed 2c 5d 15 |....]...Y....,].| -00000010 15 24 d2 e3 a0 58 fb 2f 89 a3 26 b1 c8 06 0f dc |.$...X./..&.....| -00000020 ef e1 a7 a4 81 4a 71 2c 1d a2 35 20 be ff 22 db |.....Jq,..5 ..".| -00000030 2d 33 1b 11 24 55 96 96 54 5f 62 c7 7f b5 ba 32 |-3..$U..T_b....2| -00000040 e7 e6 7c 11 68 f8 97 d1 17 f7 8f 4f c0 2b 00 00 |..|.h......O.+..| +00000000 16 03 03 00 5d 02 00 00 59 03 03 a7 4e f4 80 a2 |....]...Y...N...| +00000010 78 28 eb 69 72 3a 45 21 e6 dd 67 7c a4 64 70 97 |x(.ir:E!..g|.dp.| +00000020 51 60 f1 e3 27 16 b2 08 54 2d 78 20 07 7c ed b5 |Q`..'...T-x .|..| +00000030 dd aa 68 7a a6 8b 85 3d 49 be e4 78 ac 47 b1 02 |..hz...=I..x.G..| +00000040 15 35 ea f2 db 4b 03 f3 29 f3 d1 87 c0 2b 00 00 |.5...K..)....+..| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 0e 0b 00 02 0a 00 02 07 00 02 |................| 00000070 04 30 82 02 00 30 82 01 62 02 09 00 b8 bf 2d 47 |.0...0..b.....-G| @@ -57,33 +59,33 @@ 00000250 c9 86 2e dd d7 11 69 7f 85 7c 56 de fb 31 78 2b |......i..|V..1x+| 00000260 e4 c7 78 0d ae cb be 9e 4e 36 24 31 7b 6a 0f 39 |..x.....N6$1{j.9| 00000270 95 12 07 8f 2a 16 03 03 00 b6 0c 00 00 b2 03 00 |....*...........| -00000280 1d 20 74 55 23 1a ff ed d3 e7 95 30 ee ed 6d 77 |. tU#......0..mw| -00000290 57 83 fb 09 fc 81 70 69 d8 ae 38 1b e7 da 7f c6 |W.....pi..8.....| -000002a0 e4 01 04 03 00 8a 30 81 87 02 41 36 52 ca 91 b7 |......0...A6R...| -000002b0 a2 b2 31 91 98 96 65 92 67 a6 9c f2 75 8a 00 91 |..1...e.g...u...| -000002c0 8e 17 bd 22 d2 6c cb 16 0a fb 6b 27 08 3b f9 e4 |...".l....k'.;..| -000002d0 7c b5 21 45 60 4c c0 71 0b 28 46 d2 a8 a2 ad ad ||.!E`L.q.(F.....| -000002e0 51 fd bc 2e 40 7d 06 89 e7 b8 07 df 02 42 00 86 |Q...@}.......B..| -000002f0 83 4f 1d c1 c0 6d 3c f3 ed 24 47 70 65 e9 7c 5e |.O...m<..$Gpe.|^| -00000300 27 43 f0 05 b8 cd a4 34 ba 69 bc 81 7c fb b1 c3 |'C.....4.i..|...| -00000310 f8 bc 99 d6 90 15 8f db 21 fe 9f 18 10 23 75 6d |........!....#um| -00000320 22 b2 c6 f4 a5 60 80 31 06 a3 ad 33 88 c4 52 5d |"....`.1...3..R]| +00000280 1d 20 26 c9 de 9d 39 5a 31 f1 7c 95 e8 c4 13 8f |. &...9Z1.|.....| +00000290 a7 ac 82 75 12 ac 50 ad 15 41 c9 e8 92 24 1a d1 |...u..P..A...$..| +000002a0 c8 2b 04 03 00 8a 30 81 87 02 41 15 01 bf f7 9b |.+....0...A.....| +000002b0 94 32 92 67 13 9a c6 f5 31 f8 42 67 a3 74 79 24 |.2.g....1.Bg.ty$| +000002c0 55 e5 d3 f4 14 e1 3e 5e ac 65 8c 28 48 d5 ee 05 |U.....>^.e.(H...| +000002d0 d0 12 96 5b 8f 14 30 fa ce e7 19 ee f0 38 86 c2 |...[..0......8..| +000002e0 f4 32 0a 0c d9 7d 9e 40 9b 11 a4 0e 02 42 00 fb |.2...}.@.....B..| +000002f0 c7 0f 07 f9 87 f7 ea af 30 3a 04 e7 6a 89 3f bd |........0:..j.?.| +00000300 39 3f 20 0e b5 b0 aa 5f 29 ea c4 69 22 fb 38 9f |9? ...._)..i".8.| +00000310 35 e1 35 a6 80 86 2d eb bc bf 01 e9 56 78 ca 21 |5.5...-.....Vx.!| +00000320 68 a3 01 07 3c 9e 7f c2 9a 11 3d ef b7 ce 6e 02 |h...<.....=...n.| 00000330 16 03 03 00 04 0e 00 00 00 |.........| >>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| -00000030 16 03 03 00 28 00 00 00 00 00 00 00 00 6b 3d 83 |....(........k=.| -00000040 88 db aa b0 62 30 8d 4a 6c b2 f1 14 d3 99 43 65 |....b0.Jl.....Ce| -00000050 4c ef 26 a4 ba 46 2f 75 9a 05 0c f2 91 |L.&..F/u.....| +00000030 16 03 03 00 28 00 00 00 00 00 00 00 00 32 28 d6 |....(........2(.| +00000040 94 ba 29 2f 2b 40 56 07 0b fd a7 ce a7 79 94 b6 |..)/+@V......y..| +00000050 f6 e4 dd eb a6 23 f3 97 8c 1f c6 a5 52 |.....#......R| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 28 d5 c2 de 26 c1 |..........(...&.| -00000010 ed 28 f1 d8 81 b3 9a 4f 3d 82 ad 22 d0 2c 41 61 |.(.....O=..".,Aa| -00000020 8b 15 a3 72 01 94 44 ff 8f 01 c1 05 e6 84 56 0a |...r..D.......V.| -00000030 8b 1d c4 |...| +00000000 14 03 03 00 01 01 16 03 03 00 28 73 67 36 43 96 |..........(sg6C.| +00000010 59 15 59 7a dd 3c 3f d5 88 bf 55 e1 cb d0 41 10 |Y.Yz.>> Flow 5 (client to server) -00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 c7 7d a7 |..............}.| -00000010 c4 a5 a1 21 94 7a 23 bc 05 44 7d 4a 2f 16 dc 95 |...!.z#..D}J/...| -00000020 25 6e 17 15 03 03 00 1a 00 00 00 00 00 00 00 02 |%n..............| -00000030 77 fa b6 34 7e 60 77 f9 a5 09 d1 39 b0 1e 66 86 |w..4~`w....9..f.| -00000040 50 41 |PA| +00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 31 23 80 |.............1#.| +00000010 a4 01 5a f9 7c 3b fc 2f 4d 70 4e 4f 8f 69 fc 99 |..Z.|;./MpNO.i..| +00000020 d4 7a a7 15 03 03 00 1a 00 00 00 00 00 00 00 02 |.z..............| +00000030 37 75 3a 5a 6c d8 5a fd 0d cf 1f 88 67 2c 48 89 |7u:Zl.Z.....g,H.| +00000040 6c 9e |l.| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES128-SHA256 b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES128-SHA256 index ac5d07e69d..eed1e965d1 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES128-SHA256 +++ b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES128-SHA256 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 36 c3 50 72 b9 |....]...Y..6.Pr.| -00000010 0d e9 d9 76 1d 31 72 e6 61 ec 3e 13 93 d7 f1 52 |...v.1r.a.>....R| -00000020 a7 36 5c 16 9a cc c5 c0 da 7e f3 20 31 79 7a ec |.6\......~. 1yz.| -00000030 1d db f7 cd 0a fe b3 86 6f 43 12 f4 9d 19 16 51 |........oC.....Q| -00000040 e2 42 1b 94 43 13 71 67 2d 52 7a 86 c0 23 00 00 |.B..C.qg-Rz..#..| +00000000 16 03 03 00 5d 02 00 00 59 03 03 83 27 64 12 65 |....]...Y...'d.e| +00000010 ed df dd 5e 6c 79 e4 7b fe fd 05 26 e0 c8 5a ca |...^ly.{...&..Z.| +00000020 fa 08 c2 2a 78 e1 65 33 b3 b9 82 20 01 95 06 02 |...*x.e3... ....| +00000030 41 f4 d7 e9 64 9a a8 91 df dc 15 d0 87 02 28 7c |A...d.........(|| +00000040 e2 75 8c 94 a3 0f 20 19 e6 e8 c4 b7 c0 23 00 00 |.u.... ......#..| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 0e 0b 00 02 0a 00 02 07 00 02 |................| 00000070 04 30 82 02 00 30 82 01 62 02 09 00 b8 bf 2d 47 |.0...0..b.....-G| @@ -56,43 +58,43 @@ 00000240 8c 25 c1 33 13 83 0d 94 06 bb d4 37 7a f6 ec 7a |.%.3.......7z..z| 00000250 c9 86 2e dd d7 11 69 7f 85 7c 56 de fb 31 78 2b |......i..|V..1x+| 00000260 e4 c7 78 0d ae cb be 9e 4e 36 24 31 7b 6a 0f 39 |..x.....N6$1{j.9| -00000270 95 12 07 8f 2a 16 03 03 00 b7 0c 00 00 b3 03 00 |....*...........| -00000280 1d 20 d2 2d 0f 11 29 eb b4 23 67 1c 40 84 7f 7e |. .-..)..#g.@..~| -00000290 cd 8c 3d c2 62 ed 9b 0f 08 01 5b a5 fd 86 31 c5 |..=.b.....[...1.| -000002a0 d2 76 04 03 00 8b 30 81 88 02 42 01 a4 ea c8 67 |.v....0...B....g| -000002b0 c0 0a 93 23 7c d9 41 17 ba 91 02 78 c7 16 28 85 |...#|.A....x..(.| -000002c0 b8 d6 5c ed ed 20 1e 8b 90 e0 19 db 67 72 7e d3 |..\.. ......gr~.| -000002d0 2c 2e 84 6a d7 bc b7 53 74 8b 1b ef a8 bc 39 d8 |,..j...St.....9.| -000002e0 e0 75 29 6b 1d 89 c3 12 c2 3c 51 25 84 02 42 01 |.u)k.....>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| 00000030 16 03 03 00 50 00 00 00 00 00 00 00 00 00 00 00 |....P...........| -00000040 00 00 00 00 00 98 8d 15 68 8c 12 3e 4a 88 64 7c |........h..>J.d|| -00000050 69 46 25 16 66 20 d7 f5 7e 08 d8 9d c4 89 c1 cf |iF%.f ..~.......| -00000060 ac 86 b7 ce 3a 9c 95 0c 5d d1 a2 c2 bf fd 7c e1 |....:...].....|.| -00000070 b5 f4 04 7e 71 ae 3c fc d2 c1 2a ec 81 e4 62 a6 |...~q.<...*...b.| -00000080 e6 05 72 d8 9e |..r..| +00000040 00 00 00 00 00 1b 00 be 75 a8 f7 e4 b6 76 b2 7c |........u....v.|| +00000050 30 bb 35 a2 e0 d1 ea 35 83 6d 05 6b 29 0f 4e 80 |0.5....5.m.k).N.| +00000060 26 16 53 96 67 8e 71 ed 4a 32 1a 9f f3 8d de 34 |&.S.g.q.J2.....4| +00000070 cb d4 b4 11 c8 7d 05 36 21 87 2b ae 33 92 d3 16 |.....}.6!.+.3...| +00000080 1c b6 3b a3 6d |..;.m| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 50 27 94 9b d3 f1 |..........P'....| -00000010 6c 59 bb fa b7 73 8b d6 fa b2 ca c1 0c d3 60 cf |lY...s........`.| -00000020 50 18 a6 6f 3d b3 46 a1 06 a2 b1 62 4c ea 88 2f |P..o=.F....bL../| -00000030 95 bc 35 6f 55 a6 8a 52 69 6c 5b a5 fc 94 2a b6 |..5oU..Ril[...*.| -00000040 27 7c d7 95 27 72 d4 c1 f2 f9 9c a5 b3 2a 85 52 |'|..'r.......*.R| -00000050 ae bf 14 52 54 51 6a fe a1 99 05 |...RTQj....| +00000000 14 03 03 00 01 01 16 03 03 00 50 c0 c8 04 54 26 |..........P...T&| +00000010 72 7d 0d a5 86 d5 92 7b 09 73 02 62 37 7a 86 6f |r}.....{.s.b7z.o| +00000020 5b 31 1f 28 42 3c 98 2b 08 20 03 55 c0 d6 bd 62 |[1.(B<.+. .U...b| +00000030 8b c4 18 57 f1 d8 51 ef f1 93 6b 70 af 72 95 06 |...W..Q...kp.r..| +00000040 77 91 b5 37 b3 31 73 a4 a3 fb bb 63 9d 41 45 30 |w..7.1s....c.AE0| +00000050 b4 07 43 8a 74 44 83 16 50 22 a0 |..C.tD..P".| >>> Flow 5 (client to server) 00000000 17 03 03 00 40 00 00 00 00 00 00 00 00 00 00 00 |....@...........| -00000010 00 00 00 00 00 9b b4 f6 7e 49 48 09 cd 4f ed 22 |........~IH..O."| -00000020 68 db 19 94 ad af de d1 9b b6 bc f5 d6 7f c6 b2 |h...............| -00000030 ff b1 0e b4 0e dd 77 19 e8 9e ff 68 1a 04 fc e5 |......w....h....| -00000040 f2 3b 5b 34 aa 15 03 03 00 40 00 00 00 00 00 00 |.;[4.....@......| -00000050 00 00 00 00 00 00 00 00 00 00 f7 95 04 54 94 ff |.............T..| -00000060 f7 86 df 0a 2e 5b e9 54 fe 13 30 2a 97 f9 21 8e |.....[.T..0*..!.| -00000070 83 8b ba 86 77 67 92 33 5e a8 ea b7 64 65 63 59 |....wg.3^...decY| -00000080 44 2e 65 60 9a 0a 7c 78 97 a4 |D.e`..|x..| +00000010 00 00 00 00 00 ba c5 0e 9d f6 a1 64 f9 13 fa aa |...........d....| +00000020 07 1f cb d1 b6 f3 42 11 ac 2e aa 08 a4 f6 67 9e |......B.......g.| +00000030 1d d9 35 6a 70 85 24 25 aa b0 f3 13 87 fd 9e d5 |..5jp.$%........| +00000040 69 60 88 bc 5c 15 03 03 00 40 00 00 00 00 00 00 |i`..\....@......| +00000050 00 00 00 00 00 00 00 00 00 00 41 86 ed 8a 40 26 |..........A...@&| +00000060 39 b4 bf 47 01 bf a9 9c df 12 07 f0 dc 64 2f 5b |9..G.........d/[| +00000070 1e 44 94 78 85 b7 d8 92 f1 d4 d6 a7 d2 39 b5 3f |.D.x.........9.?| +00000080 f9 e0 78 d6 40 61 c9 4e b0 32 |..x.@a.N.2| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES256-GCM-SHA384 b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES256-GCM-SHA384 index ad5fa50146..2a1b29189c 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES256-GCM-SHA384 +++ b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES256-GCM-SHA384 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 54 28 b4 3e d3 |....]...Y..T(.>.| -00000010 f8 21 2a 34 c9 6b 54 76 aa d2 cf 5e 07 7a aa e2 |.!*4.kTv...^.z..| -00000020 10 cb 3e ed 87 f4 3e 70 44 d0 35 20 6e b4 f0 71 |..>...>pD.5 n..q| -00000030 76 96 1e 2a 57 74 4b db 9a 11 0a af 06 ea 3b 20 |v..*WtK.......; | -00000040 a8 81 51 9d 41 ef f1 f9 23 87 18 cb c0 2c 00 00 |..Q.A...#....,..| +00000000 16 03 03 00 5d 02 00 00 59 03 03 77 69 ed c9 15 |....]...Y..wi...| +00000010 48 74 3a b5 29 8b 17 d7 88 88 33 ac 7d 5e b2 c1 |Ht:.).....3.}^..| +00000020 73 a8 e2 4c 5e 66 a6 07 54 57 0e 20 9f b9 f0 03 |s..L^f..TW. ....| +00000030 74 51 4a bc 23 0b 4c 6d e3 09 8a d9 1f 09 68 33 |tQJ.#.Lm......h3| +00000040 d7 13 a7 7a 8e 34 73 73 97 32 a6 02 c0 2c 00 00 |...z.4ss.2...,..| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 0e 0b 00 02 0a 00 02 07 00 02 |................| 00000070 04 30 82 02 00 30 82 01 62 02 09 00 b8 bf 2d 47 |.0...0..b.....-G| @@ -56,34 +58,34 @@ 00000240 8c 25 c1 33 13 83 0d 94 06 bb d4 37 7a f6 ec 7a |.%.3.......7z..z| 00000250 c9 86 2e dd d7 11 69 7f 85 7c 56 de fb 31 78 2b |......i..|V..1x+| 00000260 e4 c7 78 0d ae cb be 9e 4e 36 24 31 7b 6a 0f 39 |..x.....N6$1{j.9| -00000270 95 12 07 8f 2a 16 03 03 00 b7 0c 00 00 b3 03 00 |....*...........| -00000280 1d 20 de df 32 23 35 b3 79 a9 49 c2 b3 ad 0c d6 |. ..2#5.y.I.....| -00000290 23 a6 6a 9b 0f e3 52 51 7b bc f2 79 00 c9 a4 a0 |#.j...RQ{..y....| -000002a0 94 02 04 03 00 8b 30 81 88 02 42 01 8c 12 91 28 |......0...B....(| -000002b0 d4 6d cd 39 62 75 9a e0 e5 dd ea 31 45 f5 cd 8b |.m.9bu.....1E...| -000002c0 28 82 14 f5 e9 61 0e 9d af 42 06 17 42 e9 24 1c |(....a...B..B.$.| -000002d0 2b 1a c8 77 e4 7a 82 2b b0 dd 28 3f 76 5d dd fd |+..w.z.+..(?v]..| -000002e0 20 53 87 e6 77 26 be 45 e4 6d 31 e3 bf 02 42 01 | S..w&.E.m1...B.| -000002f0 70 c5 97 3a e4 7b 80 2b 1b eb c9 b2 0a 79 92 2e |p..:.{.+.....y..| -00000300 3d b1 4d 13 69 d2 60 a9 fd e9 66 56 83 e4 f5 6a |=.M.i.`...fV...j| -00000310 ae cd 8b 94 9f 0b 70 81 b1 ed c6 0d 5f 33 42 04 |......p....._3B.| -00000320 3d f7 b6 d3 e9 09 b8 bf 43 8c 19 d5 7d 60 d6 a9 |=.......C...}`..| -00000330 f7 16 03 03 00 04 0e 00 00 00 |..........| +00000270 95 12 07 8f 2a 16 03 03 00 b6 0c 00 00 b2 03 00 |....*...........| +00000280 1d 20 a4 6e f2 07 14 a1 e4 02 87 6c 49 4e bf 77 |. .n.......lIN.w| +00000290 c0 d9 85 13 9a 65 b7 a7 27 d7 1c 34 c4 91 bc fb |.....e..'..4....| +000002a0 ef 31 04 03 00 8a 30 81 87 02 42 00 8f a1 f7 fa |.1....0...B.....| +000002b0 18 35 a7 14 ed 02 80 4d 12 bd 07 91 5c b1 e0 8f |.5.....M....\...| +000002c0 c8 74 e9 37 04 56 96 8a f3 57 42 a0 53 18 45 ad |.t.7.V...WB.S.E.| +000002d0 1d 90 27 fb 75 f8 d2 df e2 e7 ad b5 98 f1 b2 88 |..'.u...........| +000002e0 d9 e0 9d 46 fb 53 6d 5a 95 31 75 a4 1e 02 41 3f |...F.SmZ.1u...A?| +000002f0 63 12 d6 e0 8a 92 81 7d 93 fe f6 98 5a a7 75 13 |c......}....Z.u.| +00000300 be 4e 31 8c b0 ee a7 41 82 fe b4 05 01 69 7f 61 |.N1....A.....i.a| +00000310 65 41 d3 9e 59 37 03 e9 e0 4b 18 88 a5 67 d2 c1 |eA..Y7...K...g..| +00000320 83 22 3a 09 88 c0 6e b7 e5 a4 c3 e8 ce d9 3c cc |.":...n.......<.| +00000330 16 03 03 00 04 0e 00 00 00 |.........| >>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| -00000030 16 03 03 00 28 00 00 00 00 00 00 00 00 a7 5d c9 |....(.........].| -00000040 e7 6b 78 13 ae 11 64 d0 e7 77 48 03 d4 cf b9 65 |.kx...d..wH....e| -00000050 7f 07 75 78 7f 3d ae a1 9a 0f fb cb 74 |..ux.=......t| +00000030 16 03 03 00 28 00 00 00 00 00 00 00 00 dd 37 75 |....(.........7u| +00000040 d9 75 19 9e aa 4b dd 1e c7 af 7f 26 e2 72 30 92 |.u...K.....&.r0.| +00000050 70 68 97 ce 03 e3 a2 99 9a 85 1a c8 09 |ph...........| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 28 07 4e 69 71 66 |..........(.Niqf| -00000010 75 a0 bb b4 fd 86 8d 74 40 7e 0d e9 a5 95 d0 2d |u......t@~.....-| -00000020 ca eb 12 2f 7b 09 22 7c 8e bf da 97 18 d9 bd 74 |.../{."|.......t| -00000030 cd 08 6b |..k| +00000000 14 03 03 00 01 01 16 03 03 00 28 f2 ba 40 ec e3 |..........(..@..| +00000010 77 30 c8 b1 b3 3f 97 f1 28 3b 59 26 2c a0 d3 19 |w0...?..(;Y&,...| +00000020 4a bd d3 f1 5d e3 6c 62 56 ee 75 75 05 05 3c 1c |J...].lbV.uu..<.| +00000030 17 98 0a |...| >>> Flow 5 (client to server) -00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 44 26 54 |.............D&T| -00000010 a3 37 94 7a 3d 93 6a 06 35 fe 9a d4 7b 54 ab d4 |.7.z=.j.5...{T..| -00000020 33 fd 93 15 03 03 00 1a 00 00 00 00 00 00 00 02 |3...............| -00000030 bf ff c7 9e 4b db ee a4 a2 b9 a5 91 cd 09 97 a2 |....K...........| -00000040 55 a5 |U.| +00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 0b bc a8 |................| +00000010 12 42 1b c7 8e a4 e9 26 65 4d 89 d6 e1 f0 33 67 |.B.....&eM....3g| +00000020 5a 29 8c 15 03 03 00 1a 00 00 00 00 00 00 00 02 |Z)..............| +00000030 42 d5 85 47 7f 6e b0 ad 23 13 74 44 84 75 4b 85 |B..G.n..#.tD.uK.| +00000040 22 3a |":| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-CHACHA20-POLY1305 b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-CHACHA20-POLY1305 index 9982121ef8..3cea374342 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-CHACHA20-POLY1305 +++ b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-CHACHA20-POLY1305 @@ -1,24 +1,26 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 d4 01 00 00 d0 03 03 00 00 00 00 00 |................| +00000000 16 03 01 00 f2 01 00 00 ee 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 08 cc a9 |................| -00000050 13 03 13 01 13 02 01 00 00 7f 00 0b 00 02 01 00 |................| +00000050 13 03 13 01 13 02 01 00 00 9d 00 0b 00 02 01 00 |................| 00000060 ff 01 00 01 00 00 17 00 00 00 12 00 00 00 05 00 |................| 00000070 05 01 00 00 00 00 00 0a 00 0a 00 08 00 1d 00 17 |................| 00000080 00 18 00 19 00 0d 00 1a 00 18 08 04 04 03 08 07 |................| 00000090 08 05 08 06 04 01 05 01 06 01 05 03 06 03 02 01 |................| -000000a0 02 03 00 2b 00 09 08 03 04 03 03 03 02 03 01 00 |...+............| -000000b0 33 00 26 00 24 00 1d 00 20 2f e5 7d a3 47 cd 62 |3.&.$... /.}.G.b| -000000c0 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 cf |C.(.._.).0......| -000000d0 c2 ed 90 99 5f 58 cb 3b 74 |...._X.;t| +000000a0 02 03 00 32 00 1a 00 18 08 04 04 03 08 07 08 05 |...2............| +000000b0 08 06 04 01 05 01 06 01 05 03 06 03 02 01 02 03 |................| +000000c0 00 2b 00 09 08 03 04 03 03 03 02 03 01 00 33 00 |.+............3.| +000000d0 26 00 24 00 1d 00 20 2f e5 7d a3 47 cd 62 43 15 |&.$... /.}.G.bC.| +000000e0 28 da ac 5f bb 29 07 30 ff f6 84 af c4 cf c2 ed |(.._.).0........| +000000f0 90 99 5f 58 cb 3b 74 |.._X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 4f ed 35 28 41 |....]...Y..O.5(A| -00000010 4a 0f a2 da 57 ef 60 69 32 00 a5 82 22 3d d9 ea |J...W.`i2..."=..| -00000020 36 28 20 31 e3 4a b6 d1 b6 b4 49 20 97 f3 45 59 |6( 1.J....I ..EY| -00000030 e7 9c f5 40 57 51 b8 f8 5a 8d f2 eb ce 83 18 2d |...@WQ..Z......-| -00000040 e3 28 55 6f 17 08 23 88 57 b1 a0 e4 cc a9 00 00 |.(Uo..#.W.......| +00000000 16 03 03 00 5d 02 00 00 59 03 03 32 3b b0 38 26 |....]...Y..2;.8&| +00000010 a2 4b 38 02 83 42 af 10 77 e7 6b a9 d6 e7 ac c8 |.K8..B..w.k.....| +00000020 69 ba 70 cb f8 de 6d 28 a9 b5 40 20 9f f0 a4 35 |i.p...m(..@ ...5| +00000030 3e eb cf 99 5a 69 6c 0c 9d 45 21 ca fe e7 03 52 |>...Zil..E!....R| +00000040 39 66 c5 90 1f 75 57 9d 03 51 3b 21 cc a9 00 00 |9f...uW..Q;!....| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 0e 0b 00 02 0a 00 02 07 00 02 |................| 00000070 04 30 82 02 00 30 82 01 62 02 09 00 b8 bf 2d 47 |.0...0..b.....-G| @@ -54,31 +56,31 @@ 00000250 c9 86 2e dd d7 11 69 7f 85 7c 56 de fb 31 78 2b |......i..|V..1x+| 00000260 e4 c7 78 0d ae cb be 9e 4e 36 24 31 7b 6a 0f 39 |..x.....N6$1{j.9| 00000270 95 12 07 8f 2a 16 03 03 00 b7 0c 00 00 b3 03 00 |....*...........| -00000280 1d 20 64 49 59 eb a9 80 c3 0a 9e 13 f4 09 04 6b |. dIY..........k| -00000290 1f e5 3b 0b 77 84 fe 2e 1f ea 7e d4 64 2a 7f 3f |..;.w.....~.d*.?| -000002a0 dc 0f 04 03 00 8b 30 81 88 02 42 00 a4 62 9b d1 |......0...B..b..| -000002b0 ed 60 b7 2d 05 48 64 b6 94 3b a1 75 cb 41 78 e5 |.`.-.Hd..;.u.Ax.| -000002c0 e0 12 70 d9 90 4d c0 34 39 f3 52 13 75 4b fa 10 |..p..M.49.R.uK..| -000002d0 19 6f a6 2d b4 c3 8f 45 0c 7f 34 fb 82 01 e6 a1 |.o.-...E..4.....| -000002e0 be 73 72 3b e5 04 80 70 7d bd 4a f9 e5 02 42 01 |.sr;...p}.J...B.| -000002f0 69 3d 53 e9 8d 70 6d 07 84 7e 56 3f ce 53 b9 6c |i=S..pm..~V?.S.l| -00000300 43 0f 70 74 f1 52 ce d4 95 55 13 8c 07 e7 20 d7 |C.pt.R...U.... .| -00000310 61 2e b7 f4 5b 34 6e 5d 9c d8 73 66 89 a1 f6 7e |a...[4n]..sf...~| -00000320 01 bb 9a 5e 52 59 3f fc 3e 24 fc e7 49 10 83 9d |...^RY?.>$..I...| -00000330 fb 16 03 03 00 04 0e 00 00 00 |..........| +00000280 1d 20 b4 e4 ee 96 88 73 de d8 bc 4f 90 ca fa df |. .....s...O....| +00000290 26 b4 88 19 04 0e d1 be 0f 3c bb 23 68 0e a6 20 |&........<.#h.. | +000002a0 39 17 04 03 00 8b 30 81 88 02 42 00 c7 4a 60 ba |9.....0...B..J`.| +000002b0 7d 8f 8a 69 93 dc 5b 9d ce a1 33 82 ed 95 00 fb |}..i..[...3.....| +000002c0 96 6b 31 d9 3a 10 80 fd 03 5f d2 63 40 e1 26 75 |.k1.:...._.c@.&u| +000002d0 d3 bd d7 4e 79 c7 1a 82 c2 3b ef e0 72 c2 a6 d3 |...Ny....;..r...| +000002e0 28 bb d4 49 46 39 8d bd 03 9d a8 98 8b 02 42 01 |(..IF9........B.| +000002f0 d2 51 90 9c 41 a2 51 24 8f 2e 4a 24 31 69 91 d0 |.Q..A.Q$..J$1i..| +00000300 c3 39 0b f6 55 3e e7 b0 43 36 99 50 dd c6 45 9a |.9..U>..C6.P..E.| +00000310 a7 e3 c0 65 c9 b5 02 85 f6 f1 55 b2 f6 f9 8e 30 |...e......U....0| +00000320 3b 2a 3d 8a 5c 51 31 5d 9a 3f 9d e5 63 a9 4e ba |;*=.\Q1].?..c.N.| +00000330 fe 16 03 03 00 04 0e 00 00 00 |..........| >>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| -00000030 16 03 03 00 20 cf f9 90 26 e8 2c 00 99 ae 0e e6 |.... ...&.,.....| -00000040 a8 d9 66 6b 23 e7 c9 73 1c f7 e9 af e1 71 1d f3 |..fk#..s.....q..| -00000050 34 60 ee 16 9d |4`...| +00000030 16 03 03 00 20 ae 4e 75 d9 a7 be a2 6c 68 b0 19 |.... .Nu....lh..| +00000040 b6 ef dd 90 f6 6b 27 ce 52 23 66 56 54 4a e0 b7 |.....k'.R#fVTJ..| +00000050 d8 77 fc be 32 |.w..2| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 20 39 9f 39 3a 22 |.......... 9.9:"| -00000010 0b 27 cb 75 0d 43 98 11 06 dd 7e 73 17 e0 8a 19 |.'.u.C....~s....| -00000020 6d eb a8 33 c6 42 b4 e9 cb dd b1 |m..3.B.....| +00000000 14 03 03 00 01 01 16 03 03 00 20 b5 41 67 54 66 |.......... .AgTf| +00000010 94 8b 39 45 fb aa 66 f7 01 4b 4d d3 55 03 56 b3 |..9E..f..KM.U.V.| +00000020 2b 08 ca bb 29 f5 0c 6b 12 8d 76 |+...)..k..v| >>> Flow 5 (client to server) -00000000 17 03 03 00 16 24 1f 08 49 ef 32 16 8d 76 c7 34 |.....$..I.2..v.4| -00000010 e0 08 cb d9 e7 72 aa 0f fb c4 94 15 03 03 00 12 |.....r..........| -00000020 38 0b 8c e0 0b 61 20 e8 a6 7c 77 69 fb 00 96 39 |8....a ..|wi...9| -00000030 b9 a7 |..| +00000000 17 03 03 00 16 7b 7f a6 ce de 59 a8 56 2f 1b a0 |.....{....Y.V/..| +00000010 30 39 9d 87 41 3e bf 7c af 5d f8 15 03 03 00 12 |09..A>.|.]......| +00000020 47 4e 8a e8 c7 b7 5e d2 0d 57 f5 7d 85 91 08 f6 |GN....^..W.}....| +00000030 57 b9 |W.| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-AES b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-AES index e2e935cc2e..2e8cf680f7 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-AES +++ b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-AES @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 8d 69 e3 6e 69 |....]...Y...i.ni| -00000010 45 96 8b 0d c8 7d 9c dc b6 75 24 ee 61 44 95 99 |E....}...u$.aD..| -00000020 cb a8 da df 35 ac c3 36 02 3f b9 20 2d c2 47 c9 |....5..6.?. -.G.| -00000030 f0 47 80 9a c6 bd e4 1b ca d6 62 17 59 ec c9 83 |.G........b.Y...| -00000040 d5 ed 3f 2c 13 b0 30 0a 5e 1f 0e db c0 13 00 00 |..?,..0.^.......| +00000000 16 03 03 00 5d 02 00 00 59 03 03 aa fb 37 3d 67 |....]...Y....7=g| +00000010 95 94 f7 8e 74 8b 21 20 8b 63 e3 61 7f 00 53 e7 |....t.! .c.a..S.| +00000020 cc 9e b4 72 3e ae e5 36 93 b8 17 20 be 6d 69 ec |...r>..6... .mi.| +00000030 ba 51 86 16 80 1e e5 dc 59 d2 6f d5 c0 28 0c bd |.Q......Y.o..(..| +00000040 98 3b 5f 7b 70 36 ce 40 cd 37 23 98 c0 13 00 00 |.;_{p6.@.7#.....| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -61,38 +63,38 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 0f 4e 12 |............ .N.| -000002d0 ab ce 7e 62 68 64 e0 1d 7e 33 a2 ee 5d e7 2d d5 |..~bhd..~3..].-.| -000002e0 d2 dc d0 ce b2 7e 9b be 33 8d 9c 56 7a 08 04 00 |.....~..3..Vz...| -000002f0 80 44 b8 9b 87 5f 84 f6 8a 99 af e9 f7 f8 88 fd |.D..._..........| -00000300 f7 12 02 48 a1 fa 66 9c 89 a2 dc bf fd 41 08 fa |...H..f......A..| -00000310 6f e4 44 09 8e c1 45 bb 2a e9 e3 45 19 a3 81 50 |o.D...E.*..E...P| -00000320 99 46 5f 86 5b 6b c0 29 d1 e5 21 4b 56 af f4 d0 |.F_.[k.)..!KV...| -00000330 63 c4 75 ac f6 75 61 ca fe 1a b9 70 4d 14 50 b1 |c.u..ua....pM.P.| -00000340 12 7f 29 2d c5 d7 78 da 06 3e 4c 47 75 8a a6 01 |..)-..x..>LGu...| -00000350 37 17 1c e8 ef 94 85 d0 e2 ee d5 25 ae 8d f8 e6 |7..........%....| -00000360 90 10 12 37 b4 0f f5 c7 a2 85 1a 83 8a 38 e6 32 |...7.........8.2| -00000370 98 16 03 03 00 04 0e 00 00 00 |..........| +000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 67 97 c9 |............ g..| +000002d0 92 1a a5 f1 e1 9b 81 36 74 0a 00 b1 f9 78 a3 0e |.......6t....x..| +000002e0 a1 44 98 69 92 ac cd 03 3e 94 a1 ee 1c 08 04 00 |.D.i....>.......| +000002f0 80 93 2b a2 28 51 d1 7d 2e 07 e2 07 07 5b 3f 56 |..+.(Q.}.....[?V| +00000300 1a 17 4a 70 6b 74 ac a2 12 02 f9 3d ec 85 b1 df |..Jpkt.....=....| +00000310 5a 17 a2 79 9b bb 40 4a 2f 27 a5 c1 71 7f 70 25 |Z..y..@J/'..q.p%| +00000320 a1 72 c5 20 86 3a a2 1e 0c 53 a0 2e 76 7f 5f 5a |.r. .:...S..v._Z| +00000330 00 55 6b 9d 0b 5e 3a c7 8e 25 97 fb d5 a4 ea 68 |.Uk..^:..%.....h| +00000340 79 9c 29 34 e5 6f 44 07 8b a7 7a 9c 31 c5 34 08 |y.)4.oD...z.1.4.| +00000350 31 8d 5e 9f 0f cb 42 ae e7 66 59 41 62 37 25 f6 |1.^...B..fYAb7%.| +00000360 09 42 10 11 9e 19 08 6b 56 43 ae 05 ac 1c a4 24 |.B.....kVC.....$| +00000370 f5 16 03 03 00 04 0e 00 00 00 |..........| >>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| 00000030 16 03 03 00 40 00 00 00 00 00 00 00 00 00 00 00 |....@...........| -00000040 00 00 00 00 00 6c 72 1c 47 f9 89 fa 2b 0e cf 69 |.....lr.G...+..i| -00000050 bf 95 e4 ea b8 74 e7 99 d4 c4 53 f5 97 f5 08 f9 |.....t....S.....| -00000060 ef 03 e7 76 b8 2c 31 f6 9b 2c cd 27 c8 42 6a a8 |...v.,1..,.'.Bj.| -00000070 c0 e0 b9 5e cd |...^.| +00000040 00 00 00 00 00 fc 6b 1b 7e 07 14 39 83 00 01 20 |......k.~..9... | +00000050 ca 14 c9 c8 03 6e cb 3c 05 b8 63 c3 37 a1 63 c9 |.....n.<..c.7.c.| +00000060 9b a1 94 01 de 61 0c 7f ae 92 95 4d 31 6b e8 5e |.....a.....M1k.^| +00000070 bb 73 3f 3b a5 |.s?;.| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 40 89 35 48 2e 99 |..........@.5H..| -00000010 7c 13 76 5e 7f 07 a6 44 d9 95 1c 9f 25 59 3d f5 ||.v^...D....%Y=.| -00000020 df d6 5e cb 85 3e 0c f7 48 69 95 77 29 95 88 1c |..^..>..Hi.w)...| -00000030 1e 76 8a c3 ea 69 07 75 46 68 09 50 fa 30 0a 57 |.v...i.uFh.P.0.W| -00000040 84 e3 c7 d9 34 c4 40 32 7b f4 95 |....4.@2{..| +00000000 14 03 03 00 01 01 16 03 03 00 40 e4 fe 65 a6 8e |..........@..e..| +00000010 05 32 44 9d 56 27 03 e2 da 79 c9 fd 52 76 2e bb |.2D.V'...y..Rv..| +00000020 37 9f 40 59 ba de ba 56 82 a1 b4 39 29 b0 29 af |7.@Y...V...9).).| +00000030 96 42 9e f8 c4 e7 cf 72 1c 2c c8 c7 cb ba cd 82 |.B.....r.,......| +00000040 bf 21 17 07 6b 39 2c 0a 17 0b 74 |.!..k9,...t| >>> Flow 5 (client to server) 00000000 17 03 03 00 30 00 00 00 00 00 00 00 00 00 00 00 |....0...........| -00000010 00 00 00 00 00 24 6d d9 23 68 ad 8d 64 2e 3a d5 |.....$m.#h..d.:.| -00000020 ed eb 4c e9 cb 9d 13 49 4c 44 b9 00 af af 2c e7 |..L....ILD....,.| -00000030 22 c0 bb 31 4e 15 03 03 00 30 00 00 00 00 00 00 |"..1N....0......| -00000040 00 00 00 00 00 00 00 00 00 00 c8 60 b8 c1 66 9b |...........`..f.| -00000050 52 44 3c 26 7f ff 96 a6 21 c7 eb 33 71 f8 40 23 |RD<&....!..3q.@#| -00000060 7c 5b ef b2 e1 b4 3f 84 82 48 ||[....?..H| +00000010 00 00 00 00 00 e4 be e7 a6 e6 3c 1e ca 47 07 07 |..........<..G..| +00000020 98 a3 4d 13 6d ac 75 57 45 de 8e fc ca 02 c8 b6 |..M.m.uWE.......| +00000030 00 fc 7f e0 50 15 03 03 00 30 00 00 00 00 00 00 |....P....0......| +00000040 00 00 00 00 00 00 00 00 00 00 84 c2 3c b7 11 8c |............<...| +00000050 d2 65 43 4d aa 28 0c 7f 5f 73 9c cf 43 fe 72 d1 |.eCM.(.._s..C.r.| +00000060 87 86 9b c8 1b 04 13 a7 44 5c |........D\| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-AES128-SHA256 b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-AES128-SHA256 index f8f04ac13b..ccfa718fc6 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-AES128-SHA256 +++ b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-AES128-SHA256 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 8f cc 68 50 60 |....]...Y....hP`| -00000010 11 c8 c3 ce e7 e9 e1 3c fb 29 d7 4f df 44 16 65 |.......<.).O.D.e| -00000020 1d 3b 25 5b 32 59 f1 8e be d8 49 20 c2 89 a7 d5 |.;%[2Y....I ....| -00000030 cb 2c a2 05 19 6b 65 64 9b 71 2b d3 d2 19 cb 66 |.,...ked.q+....f| -00000040 61 c1 6f 19 b4 7a 15 41 76 14 85 fc c0 27 00 00 |a.o..z.Av....'..| +00000000 16 03 03 00 5d 02 00 00 59 03 03 81 ab 9b 85 bf |....]...Y.......| +00000010 f2 7f b2 d1 38 37 f5 dd 42 34 b6 69 e9 25 48 1c |....87..B4.i.%H.| +00000020 65 59 3b 6a 04 17 05 49 87 42 87 20 6a da fc 8d |eY;j...I.B. j...| +00000030 38 a9 cd 09 65 ac f1 9c d6 ee ab 74 ad 96 df a0 |8...e......t....| +00000040 87 98 23 29 79 78 0b c3 8f af ea 3c c0 27 00 00 |..#)yx.....<.'..| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -61,42 +63,42 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 88 db 33 |............ ..3| -000002d0 96 fb ae 63 de f8 2b 4b 94 fa da c2 8e 75 fa 63 |...c..+K.....u.c| -000002e0 0a 54 2b 68 01 76 2a 76 4f e7 91 e9 2a 08 04 00 |.T+h.v*vO...*...| -000002f0 80 d9 47 dd dd b9 94 b8 1c 1b dc 1f 79 bd f1 26 |..G.........y..&| -00000300 66 19 52 0b 0a 2e ea 0d 69 bf 93 a0 29 0f 6a 30 |f.R.....i...).j0| -00000310 2c 1b 44 25 13 e3 b7 03 db b3 fc 37 9c 3f bb e7 |,.D%.......7.?..| -00000320 c7 4d 65 8f af bb 39 fa 6e 77 09 bb 08 09 7e d1 |.Me...9.nw....~.| -00000330 0f ad 57 78 a6 cb a8 3f 2e 70 fc 38 75 2f a0 23 |..Wx...?.p.8u/.#| -00000340 0b 0c 6c 28 0a 71 51 dc 10 8f 85 fd 97 0f c4 84 |..l(.qQ.........| -00000350 80 cf 70 0a a9 56 9a af 2f ab 12 c7 8b d1 82 1c |..p..V../.......| -00000360 f0 6c 08 00 73 18 dd 6e 5a 66 ed a5 f7 7a 3d 73 |.l..s..nZf...z=s| -00000370 88 16 03 03 00 04 0e 00 00 00 |..........| +000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 88 0b 7c |............ ..|| +000002d0 04 c5 e3 0b 1c aa 4b 4c 0a 3a 5c 67 a5 ac 01 be |......KL.:\g....| +000002e0 32 77 9e 69 dc ae 64 0e c7 4c 34 7d 74 08 04 00 |2w.i..d..L4}t...| +000002f0 80 b7 0e 09 2f 58 46 d2 7e 19 ca d3 34 31 ac 86 |..../XF.~...41..| +00000300 94 b3 18 56 e0 b0 75 88 ed d2 5c d2 d6 80 18 30 |...V..u...\....0| +00000310 28 75 16 eb fb ee b6 ce 13 ed f2 75 7c b5 0d a8 |(u.........u|...| +00000320 04 33 95 aa 2b c0 21 db 8a a8 cc 9b fe eb 55 32 |.3..+.!.......U2| +00000330 04 22 e6 02 83 ca b1 c0 1d 14 7f 8c 44 de ce c7 |."..........D...| +00000340 6a 60 73 1f 96 c3 62 7d 9d 36 cc f9 c1 a8 12 cb |j`s...b}.6......| +00000350 ea 93 36 db 8c 15 29 a1 03 3a 4f 82 13 52 f8 de |..6...)..:O..R..| +00000360 6f 80 b6 9d ad e8 ea 04 03 0d a5 63 74 e9 bf 2f |o..........ct../| +00000370 5f 16 03 03 00 04 0e 00 00 00 |_.........| >>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| 00000030 16 03 03 00 50 00 00 00 00 00 00 00 00 00 00 00 |....P...........| -00000040 00 00 00 00 00 93 01 19 de 19 e6 58 a9 b2 bb e6 |...........X....| -00000050 83 08 03 78 72 d8 25 fc 31 70 55 fa cd ec e4 0a |...xr.%.1pU.....| -00000060 a2 7b 00 5c fe 7f 08 26 a5 ca 9f d6 28 95 69 f5 |.{.\...&....(.i.| -00000070 b9 17 23 34 83 fe 36 24 60 17 4c 90 18 30 f9 44 |..#4..6$`.L..0.D| -00000080 af 74 ea 65 4b |.t.eK| +00000040 00 00 00 00 00 f3 03 08 16 9c 4f c9 0e 8c 2a 74 |..........O...*t| +00000050 4f d4 8a 84 50 fa 16 da 5e 76 d5 80 26 40 6a 55 |O...P...^v..&@jU| +00000060 75 16 4c 28 58 09 c9 88 fd af 93 f2 94 46 3d 1b |u.L(X........F=.| +00000070 6c 04 af af b4 c1 14 c7 76 5e 10 64 4e 61 19 a9 |l.......v^.dNa..| +00000080 c8 94 aa 7b fc |...{.| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 50 b6 cf 83 c7 0d |..........P.....| -00000010 dc 8f 9a 96 0d 0b 4f 58 ed c9 46 fa 95 0b f1 ab |......OX..F.....| -00000020 9a 50 2a cc af 26 73 03 0b 93 e7 4e 96 a0 e2 44 |.P*..&s....N...D| -00000030 01 99 9e 06 a3 81 3f 0b e4 7c 03 53 e4 65 36 69 |......?..|.S.e6i| -00000040 65 96 79 a2 4e 79 e8 fc b1 6a 50 3e dd 22 1f e3 |e.y.Ny...jP>."..| -00000050 fe e3 77 9f 8c 05 f8 cc 08 4b 6b |..w......Kk| +00000000 14 03 03 00 01 01 16 03 03 00 50 9f 93 29 9e ce |..........P..)..| +00000010 ec cb 1f 2e 0a 4b a9 cf 2a 18 2c 6a 4e b6 4f e5 |.....K..*.,jN.O.| +00000020 e1 15 c5 fc 8b 07 31 c1 88 ea 34 dd 14 c8 e0 e3 |......1...4.....| +00000030 da 9e cf 42 5e 6b d9 3f a7 00 e7 37 b0 2f cb fb |...B^k.?...7./..| +00000040 bb 80 4b c8 e0 00 47 af 04 26 7d e4 c0 71 0a c9 |..K...G..&}..q..| +00000050 73 d4 35 99 e9 d8 06 c3 6f 09 69 |s.5.....o.i| >>> Flow 5 (client to server) 00000000 17 03 03 00 40 00 00 00 00 00 00 00 00 00 00 00 |....@...........| -00000010 00 00 00 00 00 f8 39 8e 57 60 18 1c ef 19 c8 da |......9.W`......| -00000020 f4 3b dc 42 85 44 e3 59 28 ea 29 11 60 ba 2b 2b |.;.B.D.Y(.).`.++| -00000030 dc 6a 5d 3a ed ce f2 10 34 17 6e 10 67 00 f0 43 |.j]:....4.n.g..C| -00000040 3e 0f e1 a1 c8 15 03 03 00 40 00 00 00 00 00 00 |>........@......| -00000050 00 00 00 00 00 00 00 00 00 00 13 0d fa 71 e4 df |.............q..| -00000060 76 f3 c9 01 d5 60 b4 34 d4 6f 68 f5 cd af d6 0b |v....`.4.oh.....| -00000070 e6 af ab ec 64 75 38 d6 17 d4 27 81 96 e5 71 74 |....du8...'...qt| -00000080 d5 cd 39 30 35 4a ef 92 56 6e |..905J..Vn| +00000010 00 00 00 00 00 65 8e 6b 75 f5 ea 6f 63 c0 12 d8 |.....e.ku..oc...| +00000020 c5 42 81 1a ef 04 64 0b 38 99 35 9b 4e 84 9c 40 |.B....d.8.5.N..@| +00000030 bc d6 f9 6f 52 16 4b c3 cb 26 42 30 af a1 d0 f9 |...oR.K..&B0....| +00000040 07 56 27 c2 12 15 03 03 00 40 00 00 00 00 00 00 |.V'......@......| +00000050 00 00 00 00 00 00 00 00 00 00 b1 d0 14 32 93 af |.............2..| +00000060 02 66 bd 5d 39 26 20 3f c5 f1 24 54 52 a6 38 18 |.f.]9& ?..$TR.8.| +00000070 91 6e b8 07 d9 37 58 6d cc a9 b0 86 11 c6 b1 10 |.n...7Xm........| +00000080 06 0c dc a5 5b ad c7 a6 fe b1 |....[.....| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-CHACHA20-POLY1305 b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-CHACHA20-POLY1305 index 2ea5debf2d..c1670a6726 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-CHACHA20-POLY1305 +++ b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-CHACHA20-POLY1305 @@ -1,24 +1,26 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 d4 01 00 00 d0 03 03 00 00 00 00 00 |................| +00000000 16 03 01 00 f2 01 00 00 ee 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 08 cc a8 |................| -00000050 13 03 13 01 13 02 01 00 00 7f 00 0b 00 02 01 00 |................| +00000050 13 03 13 01 13 02 01 00 00 9d 00 0b 00 02 01 00 |................| 00000060 ff 01 00 01 00 00 17 00 00 00 12 00 00 00 05 00 |................| 00000070 05 01 00 00 00 00 00 0a 00 0a 00 08 00 1d 00 17 |................| 00000080 00 18 00 19 00 0d 00 1a 00 18 08 04 04 03 08 07 |................| 00000090 08 05 08 06 04 01 05 01 06 01 05 03 06 03 02 01 |................| -000000a0 02 03 00 2b 00 09 08 03 04 03 03 03 02 03 01 00 |...+............| -000000b0 33 00 26 00 24 00 1d 00 20 2f e5 7d a3 47 cd 62 |3.&.$... /.}.G.b| -000000c0 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 cf |C.(.._.).0......| -000000d0 c2 ed 90 99 5f 58 cb 3b 74 |...._X.;t| +000000a0 02 03 00 32 00 1a 00 18 08 04 04 03 08 07 08 05 |...2............| +000000b0 08 06 04 01 05 01 06 01 05 03 06 03 02 01 02 03 |................| +000000c0 00 2b 00 09 08 03 04 03 03 03 02 03 01 00 33 00 |.+............3.| +000000d0 26 00 24 00 1d 00 20 2f e5 7d a3 47 cd 62 43 15 |&.$... /.}.G.bC.| +000000e0 28 da ac 5f bb 29 07 30 ff f6 84 af c4 cf c2 ed |(.._.).0........| +000000f0 90 99 5f 58 cb 3b 74 |.._X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 01 ce 8f f1 84 |....]...Y.......| -00000010 65 dc 47 4e 43 f2 cd 85 6c 98 40 a7 5c 7f ed 53 |e.GNC...l.@.\..S| -00000020 78 63 03 dd 50 3e a4 27 20 21 bf 20 d9 93 9d f6 |xc..P>.' !. ....| -00000030 1f e8 0e 72 fc 64 e0 dd 8e ef b3 ea ff 5b ad 60 |...r.d.......[.`| -00000040 a5 f0 68 ff 7e 35 46 a4 28 71 31 fd cc a8 00 00 |..h.~5F.(q1.....| +00000000 16 03 03 00 5d 02 00 00 59 03 03 34 c1 8b 5f 3a |....]...Y..4.._:| +00000010 34 19 b4 a5 7a b6 d4 d8 83 54 60 22 6c 56 52 d0 |4...z....T`"lVR.| +00000020 c6 ae 08 d2 17 49 97 ec fe f2 8a 20 d5 fc 67 75 |.....I..... ..gu| +00000030 b1 26 04 0e ce 3a 0e c3 4a e3 9a 20 0b 36 12 43 |.&...:..J.. .6.C| +00000040 13 0e db 9e 50 ca d6 54 89 01 33 56 cc a8 00 00 |....P..T..3V....| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -58,31 +60,31 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 ea 03 c7 |............ ...| -000002d0 b0 eb 76 ba 86 25 18 e5 0d b3 70 2a 41 72 4d 88 |..v..%....p*ArM.| -000002e0 55 6d 91 2b 65 fe e0 64 12 69 42 eb 27 08 04 00 |Um.+e..d.iB.'...| -000002f0 80 0f 00 0a b0 35 db 39 fa ba a1 27 44 e0 9b d4 |.....5.9...'D...| -00000300 b8 aa b3 4f 93 46 ed 09 f8 3e 1b c8 47 6e 52 8a |...O.F...>..GnR.| -00000310 8f fd b1 67 f6 05 87 68 de 7b 25 1b 40 df 1e f2 |...g...h.{%.@...| -00000320 04 2b 4f 39 3d 6f a8 f7 25 37 26 34 87 84 06 c4 |.+O9=o..%7&4....| -00000330 0e 31 bc 46 8a d2 99 14 6d 5d 14 32 a2 32 fc 10 |.1.F....m].2.2..| -00000340 5e fb d9 f8 06 d4 05 17 5d 59 f4 38 c5 13 1c 91 |^.......]Y.8....| -00000350 5a 5f cb dd 3e 27 78 10 2c 0c 9b 7f 1a ec 4c da |Z_..>'x.,.....L.| -00000360 fb d7 52 eb 76 83 75 87 d2 a3 7f e9 25 a5 8a 22 |..R.v.u.....%.."| -00000370 dd 16 03 03 00 04 0e 00 00 00 |..........| +000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 63 b1 95 |............ c..| +000002d0 d7 d2 63 99 59 8e 56 00 0a 08 29 c9 a5 30 bd 1b |..c.Y.V...)..0..| +000002e0 f1 e4 ad 7d 99 c0 ea 9d 44 1c c6 22 56 08 04 00 |...}....D.."V...| +000002f0 80 d8 02 bd 3f 32 2e 05 8b 2f 2b 98 ef fe 6b 96 |....?2.../+...k.| +00000300 80 ab d3 e1 d0 56 45 f6 66 2a 44 52 f3 47 85 f6 |.....VE.f*DR.G..| +00000310 3a 0a 08 11 31 be 39 68 e8 8a cd ac 83 c2 32 10 |:...1.9h......2.| +00000320 d5 9a d6 d4 9c 93 3a 49 1e d2 43 d6 f3 b8 96 6a |......:I..C....j| +00000330 0b 50 53 58 77 2f 7a d5 a3 d8 f7 33 6a 29 16 05 |.PSXw/z....3j)..| +00000340 4a 71 d3 23 dc f1 91 ec 4d be 10 53 f5 57 0d 01 |Jq.#....M..S.W..| +00000350 36 ea 6f b7 42 68 76 6c 15 57 24 bb 92 c6 48 91 |6.o.Bhvl.W$...H.| +00000360 b2 02 83 75 9a 52 63 2d 3c 6a b5 91 8a cf ad 52 |...u.Rc->> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| -00000030 16 03 03 00 20 28 48 18 85 9d 35 c7 5a 46 2c a7 |.... (H...5.ZF,.| -00000040 5b 8b c0 71 73 66 d0 a7 53 a0 e3 ed c8 57 f3 70 |[..qsf..S....W.p| -00000050 9a 01 58 61 84 |..Xa.| +00000030 16 03 03 00 20 ab c0 00 15 90 de 61 3e 0b 60 16 |.... ......a>.`.| +00000040 88 fe 6e a8 31 b8 cf bf 18 f5 21 c0 51 4f 96 fe |..n.1.....!.QO..| +00000050 47 eb c3 75 9b |G..u.| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 20 b9 72 f6 07 40 |.......... .r..@| -00000010 0b 2f 67 8a 97 fa 17 24 81 e5 6f 5b 09 90 72 8d |./g....$..o[..r.| -00000020 48 59 14 00 34 e8 3c 82 b8 2f 87 |HY..4.<../.| +00000000 14 03 03 00 01 01 16 03 03 00 20 38 2e e1 49 d7 |.......... 8..I.| +00000010 20 aa 42 6c 73 05 b7 37 e3 0c 14 b0 fb bd 0f 04 | .Bls..7........| +00000020 79 a8 6c 01 63 4a 92 c8 13 a0 d9 |y.l.cJ.....| >>> Flow 5 (client to server) -00000000 17 03 03 00 16 f6 cf b1 93 64 54 56 f3 35 3d 8f |.........dTV.5=.| -00000010 31 5e 66 62 56 aa e9 81 47 4c 8b 15 03 03 00 12 |1^fbV...GL......| -00000020 de 0b 32 2b 58 2c b5 4e 80 2a 66 e7 a0 a9 28 d9 |..2+X,.N.*f...(.| -00000030 db 11 |..| +00000000 17 03 03 00 16 d4 37 f1 77 d5 49 df 50 58 c9 41 |......7.w.I.PX.A| +00000010 ad 99 2b bc 85 a7 33 d4 ff 96 c0 15 03 03 00 12 |..+...3.........| +00000020 a9 7f 06 84 dd 17 63 18 26 14 5e 3e 04 87 af 37 |......c.&.^>...7| +00000030 7f 0c |..| diff --git a/src/crypto/tls/testdata/Client-TLSv12-Ed25519 b/src/crypto/tls/testdata/Client-TLSv12-Ed25519 index d43ee07eea..a3d23b6208 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-Ed25519 +++ b/src/crypto/tls/testdata/Client-TLSv12-Ed25519 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 93 8a a3 77 84 |....]...Y.....w.| -00000010 fd 41 3d a5 ad b5 eb 91 63 a6 b5 3a 5f 21 08 df |.A=.....c..:_!..| -00000020 72 07 be 1f df d7 4e 6f f3 f8 cb 20 ae d3 e5 fe |r.....No... ....| -00000030 53 a3 c7 84 6c 3e c6 1d d5 65 5d a6 a5 7d f7 5c |S...l>...e]..}.\| -00000040 34 65 a7 df 1e 28 3f 7d 20 08 81 2c cc a9 00 00 |4e...(?} ..,....| +00000000 16 03 03 00 5d 02 00 00 59 03 03 19 33 a6 0c 80 |....]...Y...3...| +00000010 5d 56 d6 7b 85 ae 50 82 3a 61 7b b0 dd 01 f8 98 |]V.{..P.:a{.....| +00000020 b9 51 22 e7 12 4c 98 f2 4c 50 49 20 37 6f ad 03 |.Q"..L..LPI 7o..| +00000030 52 51 44 3e 26 19 df e3 59 cd 6a 41 37 3c 46 95 |RQD>&...Y.jA7.....V..%!.o$..| -00000210 30 33 cf 04 16 03 03 00 04 0e 00 00 00 |03...........| +000001b0 54 12 8c 8b b0 53 e4 e0 43 90 3d 15 fb 26 ee a9 |T....S..C.=..&..| +000001c0 12 24 60 7f d5 57 e5 1c bc ca 4f 31 dd a2 a8 3e |.$`..W....O1...>| +000001d0 08 07 00 40 ad 8c 20 13 7d f5 5e 5e b2 41 9f 60 |...@.. .}.^^.A.`| +000001e0 f7 d2 cc 2f fe 47 6d 8c 24 ca 0d 72 63 eb 0d f8 |.../.Gm.$..rc...| +000001f0 93 0b 13 de 8f bc 92 0e f8 77 8a de 2f 9c 32 30 |.........w../.20| +00000200 96 cb 5b bc b8 94 68 fb 06 62 ce 01 ed b8 f8 f2 |..[...h..b......| +00000210 c1 c4 16 01 16 03 03 00 04 0e 00 00 00 |.............| >>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| -00000030 16 03 03 00 20 69 ac be cf f1 3d 8a 4e f3 3a 54 |.... i....=.N.:T| -00000040 05 d8 20 3a f0 67 40 3f 5b 94 cf a4 3e ec 8e 4e |.. :.g@?[...>..N| -00000050 75 c9 92 2c af |u..,.| +00000030 16 03 03 00 20 25 48 e8 48 d4 0e e2 2e 91 65 98 |.... %H.H.....e.| +00000040 60 1e ae 8f e6 7e 5b 0a bb 7b 90 8a 2b a7 b2 81 |`....~[..{..+...| +00000050 f6 4b 17 c5 cc |.K...| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 20 70 c5 f8 c7 7c |.......... p...|| -00000010 4a 34 6f b0 eb 1b 13 c7 e0 21 32 cf ce 89 aa 53 |J4o......!2....S| -00000020 5f 67 b8 a7 3e 10 bb a3 5f fa 2f |_g..>..._./| +00000000 14 03 03 00 01 01 16 03 03 00 20 f5 ed d5 32 97 |.......... ...2.| +00000010 a7 91 bc 42 03 3b f1 76 21 68 19 41 8f 70 a1 74 |...B.;.v!h.A.p.t| +00000020 28 fb f4 7a 61 1e cf 79 b6 f7 a8 |(..za..y...| >>> Flow 5 (client to server) -00000000 17 03 03 00 16 54 ae 8d 1c 04 40 47 8a 7e ac c3 |.....T....@G.~..| -00000010 21 a2 8a f0 5d 3d 12 9d b0 b5 8d 15 03 03 00 12 |!...]=..........| -00000020 71 3b 30 89 d4 c3 ef 34 66 92 29 1b e1 af d4 d2 |q;0....4f.).....| -00000030 7e cd |~.| +00000000 17 03 03 00 16 9b bf f5 4d cb b0 e2 bb 5c df e4 |........M....\..| +00000010 c8 85 31 11 d1 59 9d 72 03 2a 74 15 03 03 00 12 |..1..Y.r.*t.....| +00000020 13 fd 92 1a 96 bf 23 2e 06 8b e4 42 f6 05 7d 7e |......#....B..}~| +00000030 6c cd |l.| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ExportKeyingMaterial b/src/crypto/tls/testdata/Client-TLSv12-ExportKeyingMaterial index 3d06b4c0ac..55644403d3 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ExportKeyingMaterial +++ b/src/crypto/tls/testdata/Client-TLSv12-ExportKeyingMaterial @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 18 47 80 ab 8d |....]...Y...G...| -00000010 42 c7 73 06 75 ef 28 ff 87 46 49 af 3a 3b cb bb |B.s.u.(..FI.:;..| -00000020 ff 6e e3 60 11 40 2c b8 40 87 5c 20 86 3d de c2 |.n.`.@,.@.\ .=..| -00000030 18 41 ff 1a dc 00 77 4e 17 0b 36 f3 69 92 d7 04 |.A....wN..6.i...| -00000040 c4 c6 39 ad ed f7 06 23 8c 52 50 da cc a8 00 00 |..9....#.RP.....| +00000000 16 03 03 00 5d 02 00 00 59 03 03 37 1f dc 30 b6 |....]...Y..7..0.| +00000010 6b 54 22 cd 46 38 00 7b c2 d4 97 80 f5 b6 cb fc |kT".F8.{........| +00000020 01 b7 91 6a ce 1d 20 9f fb 4a b3 20 d2 72 bb 97 |...j.. ..J. .r..| +00000030 2a 46 3c da d1 8a 8e 1b cd ed e7 5a 5a c7 0c ca |*F<........ZZ...| +00000040 1f 6e 40 b3 6a d6 7a ae 55 bd 82 42 cc a8 00 00 |.n@.j.z.U..B....| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -61,31 +63,31 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 c5 28 44 |............ .(D| -000002d0 4a 31 d9 b6 53 90 8e 41 3c 67 2c 6f 9d b0 a6 d3 |J1..S..AC.C?.| +00000340 1b e6 e4 aa 8f 0f 4d 7f b7 d8 bf fb 40 59 92 2e |......M.....@Y..| +00000350 08 51 2a a4 ce c8 da f9 ec b3 d6 f6 63 32 e9 ef |.Q*.........c2..| +00000360 b8 42 25 2a 5e ec 4b 39 e5 52 d1 e7 f1 5d 18 9f |.B%*^.K9.R...]..| +00000370 97 16 03 03 00 04 0e 00 00 00 |..........| >>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| -00000030 16 03 03 00 20 9f 16 49 2a d8 cc 0a 45 92 8d c2 |.... ..I*...E...| -00000040 25 3c b1 5c a8 f2 c4 9b c4 2a 66 fe 7f 87 df 35 |%<.\.....*f....5| -00000050 77 a4 b0 05 f5 |w....| +00000030 16 03 03 00 20 a6 dc 32 3e 35 76 e8 25 41 ad f7 |.... ..2>5v.%A..| +00000040 64 02 b0 a3 19 0b ea 1c 7f d7 47 4c 73 2d 7e 6f |d.........GLs-~o| +00000050 7a 0c 09 41 1f |z..A.| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 20 37 55 d5 05 71 |.......... 7U..q| -00000010 a0 00 44 56 32 c3 c8 e6 68 5e de d4 e7 65 56 d3 |..DV2...h^...eV.| -00000020 2d 93 07 e6 72 17 e9 49 74 4d c0 |-...r..ItM.| +00000000 14 03 03 00 01 01 16 03 03 00 20 77 e0 48 07 28 |.......... w.H.(| +00000010 72 79 07 2e 8a b8 1c a0 70 78 f1 a8 e9 24 6d 46 |ry......px...$mF| +00000020 78 27 71 a0 a4 7b da 5b 77 3d 78 |x'q..{.[w=x| >>> Flow 5 (client to server) -00000000 17 03 03 00 16 27 a6 31 16 5c 7e bd 05 0a 2c 05 |.....'.1.\~...,.| -00000010 ba 37 06 00 d7 8d 66 a7 8e 16 7b 15 03 03 00 12 |.7....f...{.....| -00000020 70 38 bc 7e 6b 83 83 e1 61 3b bb a5 d9 dc f7 e7 |p8.~k...a;......| -00000030 5e 12 |^.| +00000000 17 03 03 00 16 d9 2e 8d 11 ee 6a df 43 dc 3b f4 |..........j.C.;.| +00000010 dd 9e c3 be 2e 78 8a 39 3b 7a a1 15 03 03 00 12 |.....x.9;z......| +00000020 d5 ef f8 2e 49 c9 f8 27 3e 29 e5 39 fc 25 3d b2 |....I..'>).9.%=.| +00000030 ff a8 |..| diff --git a/src/crypto/tls/testdata/Client-TLSv12-P256-ECDHE b/src/crypto/tls/testdata/Client-TLSv12-P256-ECDHE index 7a0a53c03a..d991b001d5 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-P256-ECDHE +++ b/src/crypto/tls/testdata/Client-TLSv12-P256-ECDHE @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 19 01 00 01 15 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 37 01 00 01 33 03 03 00 00 00 00 00 |....7...3.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,22 +7,24 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9a 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 b8 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 04 00 02 00 17 00 0d 00 1a 00 18 08 04 |................| 000000b0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| -000000c0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| -000000d0 02 03 01 00 33 00 47 00 45 00 17 00 41 04 1e 18 |....3.G.E...A...| -000000e0 37 ef 0d 19 51 88 35 75 71 b5 e5 54 5b 12 2e 8f |7...Q.5uq..T[...| -000000f0 09 67 fd a7 24 20 3e b2 56 1c ce 97 28 5e f8 2b |.g..$ >.V...(^.+| -00000100 2d 4f 9e f1 07 9f 6c 4b 5b 83 56 e2 32 42 e9 58 |-O....lK[.V.2B.X| -00000110 b6 d7 49 a6 b5 68 1a 41 03 56 6b dc 5a 89 |..I..h.A.Vk.Z.| +000000c0 06 03 02 01 02 03 00 32 00 1a 00 18 08 04 04 03 |.......2........| +000000d0 08 07 08 05 08 06 04 01 05 01 06 01 05 03 06 03 |................| +000000e0 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 02 03 |.....+..........| +000000f0 01 00 33 00 47 00 45 00 17 00 41 04 1e 18 37 ef |..3.G.E...A...7.| +00000100 0d 19 51 88 35 75 71 b5 e5 54 5b 12 2e 8f 09 67 |..Q.5uq..T[....g| +00000110 fd a7 24 20 3e b2 56 1c ce 97 28 5e f8 2b 2d 4f |..$ >.V...(^.+-O| +00000120 9e f1 07 9f 6c 4b 5b 83 56 e2 32 42 e9 58 b6 d7 |....lK[.V.2B.X..| +00000130 49 a6 b5 68 1a 41 03 56 6b dc 5a 89 |I..h.A.Vk.Z.| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 1c ad ae e9 64 |....]...Y......d| -00000010 35 80 c6 04 f5 69 05 bb 5c 38 78 d3 99 2f ad e6 |5....i..\8x../..| -00000020 56 20 d4 79 89 1a 51 54 14 ac 6d 20 06 6d 1a bd |V .y..QT..m .m..| -00000030 04 cf 4f 42 3d aa 31 3b fb dc c1 85 42 c3 6d 12 |..OB=.1;....B.m.| -00000040 27 98 be 4b 88 93 45 0e 78 ba d8 13 c0 2f 00 00 |'..K..E.x..../..| +00000000 16 03 03 00 5d 02 00 00 59 03 03 f2 96 d3 16 ce |....]...Y.......| +00000010 7c b8 43 6a 66 b2 9f 58 d2 66 74 f6 92 61 3a 48 ||.Cjf..X.ft..a:H| +00000020 b1 84 87 be bf 7e 5a 9c 75 e3 e1 20 a6 b6 cc cf |.....~Z.u.. ....| +00000030 3a 1e b5 62 01 bd ee 58 eb ea 84 58 08 dc e6 d2 |:..b...X...X....| +00000040 86 a0 5e f2 63 f2 1f 81 29 0d f7 5c c0 2f 00 00 |..^.c...)..\./..| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -62,37 +64,37 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 03 00 cd 0c 00 00 c9 03 00 17 41 04 3a 1c |............A.:.| -000002d0 84 6b e6 cb 7d 3f bd ea d7 7a c3 63 43 77 f7 14 |.k..}?...z.cCw..| -000002e0 a7 98 52 86 49 4d 05 b2 70 e2 d3 44 c9 05 eb 83 |..R.IM..p..D....| -000002f0 b4 11 c5 3e 9d 3b 3b cd de d0 df 78 83 0f 0c d8 |...>.;;....x....| -00000300 76 e7 19 9d 1f 5a 3d 2a 54 19 16 a0 c2 55 08 04 |v....Z=*T....U..| -00000310 00 80 09 ee 97 8a d1 82 fc 4a fc f2 89 d2 a3 c7 |.........J......| -00000320 8c 25 74 98 cf b5 67 c6 fd f6 0d 3b 62 ba 31 ca |.%t...g....;b.1.| -00000330 d1 67 aa c3 32 89 ee 83 22 d2 b7 3c f8 98 af 16 |.g..2..."..<....| -00000340 dd 05 06 2c c4 57 dd fc 22 3a 2e 80 f9 84 6a ee |...,.W..":....j.| -00000350 f2 a1 21 d1 0f db 17 50 a1 35 94 b3 0a b7 62 ca |..!....P.5....b.| -00000360 2c b3 0b 68 0c 58 d7 24 83 82 d8 34 64 3f a4 61 |,..h.X.$...4d?.a| -00000370 0e b1 ca 93 67 b3 51 11 dc 49 f2 df 26 89 8b ea |....g.Q..I..&...| -00000380 22 09 1a be 62 27 61 c8 93 4b dd 95 31 6a ba e2 |"...b'a..K..1j..| -00000390 c3 2b 16 03 03 00 04 0e 00 00 00 |.+.........| +000002c0 16 03 03 00 cd 0c 00 00 c9 03 00 17 41 04 9f ab |............A...| +000002d0 e5 e2 8c b7 47 ce a4 e6 c8 ca 51 d7 28 b3 8b be |....G.....Q.(...| +000002e0 83 f4 d5 34 27 f5 89 2b d0 bb 7e 2f 87 8c 64 3d |...4'..+..~/..d=| +000002f0 fc ee 5e c1 35 f6 ff be 49 75 58 65 22 92 5b 6f |..^.5...IuXe".[o| +00000300 07 08 61 d0 16 9c 6b 2f b0 47 a0 ed 45 d8 08 04 |..a...k/.G..E...| +00000310 00 80 58 85 e9 5f 3b b6 03 25 a8 49 da 56 87 2e |..X.._;..%.I.V..| +00000320 d5 89 ce 53 de f2 8e b7 4b 7a 24 be 0b c1 86 4b |...S....Kz$....K| +00000330 3a a3 58 ea e2 68 bd 33 91 93 8b f5 cc 6e ea 7d |:.X..h.3.....n.}| +00000340 e4 14 fc 6c d2 d3 25 97 73 bf 0d d4 26 65 71 c0 |...l..%.s...&eq.| +00000350 6f 85 52 e6 e5 34 e7 05 7b 8b d0 96 db f4 cc 49 |o.R..4..{......I| +00000360 f7 7f da c6 56 54 b0 e0 5e 60 b1 ea 8a 9b 45 06 |....VT..^`....E.| +00000370 54 ed b4 34 ab a0 0b 72 4f 0e 0a 9c 57 f8 c2 1c |T..4...rO...W...| +00000380 87 8b 9c 48 97 ae 08 2b 51 07 cd 5d 5c 0a 1e 47 |...H...+Q..]\..G| +00000390 b7 bd 16 03 03 00 04 0e 00 00 00 |...........| >>> Flow 3 (client to server) 00000000 16 03 03 00 46 10 00 00 42 41 04 1e 18 37 ef 0d |....F...BA...7..| 00000010 19 51 88 35 75 71 b5 e5 54 5b 12 2e 8f 09 67 fd |.Q.5uq..T[....g.| 00000020 a7 24 20 3e b2 56 1c ce 97 28 5e f8 2b 2d 4f 9e |.$ >.V...(^.+-O.| 00000030 f1 07 9f 6c 4b 5b 83 56 e2 32 42 e9 58 b6 d7 49 |...lK[.V.2B.X..I| 00000040 a6 b5 68 1a 41 03 56 6b dc 5a 89 14 03 03 00 01 |..h.A.Vk.Z......| -00000050 01 16 03 03 00 28 00 00 00 00 00 00 00 00 fa c4 |.....(..........| -00000060 4e 47 d1 de 6d 60 fc af 59 43 7f 2f 4c b3 6e aa |NG..m`..YC./L.n.| -00000070 6f c3 bc 8a 40 5e e9 9c d9 b0 87 c5 92 41 |o...@^.......A| +00000050 01 16 03 03 00 28 00 00 00 00 00 00 00 00 c5 59 |.....(.........Y| +00000060 bb bb c9 dc 4d 95 d9 70 d0 bc 76 ca e7 0f 50 f8 |....M..p..v...P.| +00000070 d5 55 e0 3c fb 12 63 ff 8d b4 a9 85 96 0e |.U.<..c.......| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 28 eb 92 83 02 be |..........(.....| -00000010 89 55 4e 77 b2 45 1d 15 fd e0 6a 36 ab 0c 7b 4a |.UNw.E....j6..{J| -00000020 5d 50 e2 5a f3 c6 10 e2 ac ac a4 d3 4c 2e d8 31 |]P.Z........L..1| -00000030 84 31 17 |.1.| +00000000 14 03 03 00 01 01 16 03 03 00 28 98 cb 91 21 85 |..........(...!.| +00000010 4a fd 3f e5 f7 31 8d 35 c9 11 31 fc 1f 0e e3 0d |J.?..1.5..1.....| +00000020 86 c7 93 10 1d 52 21 2c 6f 7a c7 0e 6a d8 67 9c |.....R!,oz..j.g.| +00000030 c8 e7 cd |...| >>> Flow 5 (client to server) -00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 90 44 33 |..............D3| -00000010 cf be 4e 29 fc 6f 2f 30 c1 ef aa 8e cb 10 0e f9 |..N).o/0........| -00000020 8f 60 fc 15 03 03 00 1a 00 00 00 00 00 00 00 02 |.`..............| -00000030 80 cb 52 6b e7 c9 45 af 69 6b e8 ee 88 23 61 20 |..Rk..E.ik...#a | -00000040 74 33 |t3| +00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 b7 f9 69 |...............i| +00000010 f9 81 f1 da b7 b7 4b fe 3a a4 d7 d2 af b5 2a e9 |......K.:.....*.| +00000020 8f 97 c1 15 03 03 00 1a 00 00 00 00 00 00 00 02 |................| +00000030 b2 0d 99 04 5c 56 a2 6e 50 e1 52 80 c5 3c 4b 69 |....\V.nP.R..>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 55 02 00 00 51 03 03 7c f1 44 f1 2a |....U...Q..|.D.*| -00000010 6f 7f 62 66 08 15 dd c8 bd 4a 30 b5 a3 73 53 82 |o.bf.....J0..sS.| -00000020 93 78 6b f2 c6 70 70 1e 4d 8f 48 20 24 b3 17 46 |.xk..pp.M.H $..F| -00000030 37 c0 0f 79 af f4 48 43 17 6b ea df 6b 73 07 cf |7..y..HC.k..ks..| -00000040 5f 95 c5 5c 8d b2 99 5c fd 30 e5 1b 00 05 00 00 |_..\...\.0......| +00000000 16 03 03 00 55 02 00 00 51 03 03 e6 2c 7a 70 96 |....U...Q...,zp.| +00000010 c0 bf e7 e6 2e 51 35 c7 3e 0a 4c 1e 2a 0b 54 08 |.....Q5.>.L.*.T.| +00000020 57 e1 66 22 94 26 fe df ce 7e bf 20 26 07 f0 81 |W.f".&...~. &...| +00000030 7d 73 2c 70 6f d1 1b 85 f5 af 97 7e 5b 3f 5e a0 |}s,po......~[?^.| +00000040 fc 9b 7d 5a c3 e2 05 30 b5 f5 47 05 00 05 00 00 |..}Z...0..G.....| 00000050 09 ff 01 00 01 00 00 17 00 00 16 03 03 02 59 0b |..............Y.| 00000060 00 02 55 00 02 52 00 02 4f 30 82 02 4b 30 82 01 |..U..R..O0..K0..| 00000070 b4 a0 03 02 01 02 02 09 00 e8 f0 9d 3f e2 5b ea |............?.[.| @@ -72,15 +74,15 @@ 00000060 c5 70 0f 08 83 48 e9 48 ef 6e 50 8b 05 7e e5 84 |.p...H.H.nP..~..| 00000070 25 fa 55 c7 ae 31 02 27 00 ef 3f 98 86 20 12 89 |%.U..1.'..?.. ..| 00000080 91 59 28 b4 f7 d7 af d2 69 61 35 14 03 03 00 01 |.Y(.....ia5.....| -00000090 01 16 03 03 00 24 fd 67 40 11 7e 4d 8f bb 87 e8 |.....$.g@.~M....| -000000a0 c3 1f e8 b0 15 17 3a f4 6f 5f 87 b2 50 c5 92 e4 |......:.o_..P...| -000000b0 ac c0 c0 98 aa 6f be bc fc 77 |.....o...w| +00000090 01 16 03 03 00 24 ad c5 35 7b 7c 74 c7 24 58 ef |.....$..5{|t.$X.| +000000a0 55 3f 8d c1 52 97 f8 91 93 46 02 ff cf 06 00 ba |U?..R....F......| +000000b0 26 91 ec c4 91 23 60 b2 c8 77 |&....#`..w| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 24 e8 ea 6f 8a 0c |..........$..o..| -00000010 79 70 73 a9 7b 2c a8 0a e5 f8 26 f3 eb 05 20 65 |yps.{,....&... e| -00000020 58 9b 0c 8e 28 3d c7 ee cf 57 85 06 a5 d7 46 |X...(=...W....F| +00000000 14 03 03 00 01 01 16 03 03 00 24 e6 06 60 54 3e |..........$..`T>| +00000010 39 d8 22 df 83 a7 7a 4d b4 63 03 77 3d 5d e8 06 |9."...zM.c.w=]..| +00000020 6f fe 0a 70 4b b3 82 cc a8 aa 48 2e f2 72 7b |o..pK.....H..r{| >>> Flow 5 (client to server) -00000000 17 03 03 00 1a 2d 7a c5 d0 12 79 e8 a2 05 d3 a4 |.....-z...y.....| -00000010 51 80 8f 28 37 b9 75 64 f3 11 4c 78 de 0c f3 15 |Q..(7.ud..Lx....| -00000020 03 03 00 16 43 89 2c 8b 9e dc c5 5d 4c ca 7b 4e |....C.,....]L.{N| -00000030 15 e4 e5 62 01 02 b4 d4 6f 1c |...b....o.| +00000000 17 03 03 00 1a e5 e3 38 a3 34 e4 02 f1 c4 96 14 |.......8.4......| +00000010 13 fb 50 7d 6a 26 cf 49 f8 d6 e5 f0 d8 7c b5 15 |..P}j&.I.....|..| +00000020 03 03 00 16 a4 cd 6c b6 b2 45 d7 35 df 56 ba ae |......l..E.5.V..| +00000030 a9 41 09 85 67 bb 16 c0 3e d0 |.A..g...>.| diff --git a/src/crypto/tls/testdata/Client-TLSv12-RenegotiateOnce b/src/crypto/tls/testdata/Client-TLSv12-RenegotiateOnce index 0510d5e2d3..8456e3abf7 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-RenegotiateOnce +++ b/src/crypto/tls/testdata/Client-TLSv12-RenegotiateOnce @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 55 71 df 37 76 |....]...Y..Uq.7v| -00000010 48 bb 86 62 66 f1 58 0d 92 f4 c8 bd 17 6c 00 43 |H..bf.X......l.C| -00000020 a9 da f1 6f 19 2c 76 81 6d aa eb 20 4f c7 eb 3f |...o.,v.m.. O..?| -00000030 b8 48 89 7f d8 61 bc e8 3c e6 a0 3d 6c 29 fd 60 |.H...a..<..=l).`| -00000040 7c 0a 09 1c 71 41 07 04 24 dc e7 27 cc a8 00 00 ||...qA..$..'....| +00000000 16 03 03 00 5d 02 00 00 59 03 03 eb da 48 1d 79 |....]...Y....H.y| +00000010 90 f6 67 5b 69 7b 40 07 20 12 0b 12 bd 94 75 e0 |..g[i{@. .....u.| +00000020 84 3f 0d a5 77 c6 36 18 25 79 3c 20 07 6c 6d c7 |.?..w.6.%y< .lm.| +00000030 b4 7e 2a 2b a5 7e 55 36 83 4d d9 94 9f 73 60 d8 |.~*+.~U6.M...s`.| +00000040 e9 55 05 b9 bf b0 64 84 09 fe c0 2a cc a8 00 00 |.U....d....*....| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -61,186 +63,188 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 7a 15 23 |............ z.#| -000002d0 f5 78 c2 16 21 72 bb e5 d3 2e c9 67 55 a8 2c 1f |.x..!r.....gU.,.| -000002e0 00 50 a2 04 4f 71 9a 94 4a 90 55 69 33 08 04 00 |.P..Oq..J.Ui3...| -000002f0 80 53 b3 16 f5 08 3a 5a 84 3c 02 5d c3 b6 0e c2 |.S....:Z.<.]....| -00000300 93 f6 27 74 24 b4 e2 3d 22 04 30 a0 d6 5b c8 da |..'t$..=".0..[..| -00000310 6e 56 30 d4 fb 86 fd 76 8f 1b 47 c0 55 95 cd 15 |nV0....v..G.U...| -00000320 bf a7 27 ce 2d c3 43 6b ed 2d 09 bb eb 55 73 c9 |..'.-.Ck.-...Us.| -00000330 2c ee cd 23 af d9 1c 51 1d 0c 00 14 01 61 8a fd |,..#...Q.....a..| -00000340 8f 95 d1 ce 32 57 ae 2b 09 15 b4 86 41 1e 74 f5 |....2W.+....A.t.| -00000350 d5 96 d7 e1 03 03 09 f4 3c 53 fe 6b 9a c1 52 ab |........>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| -00000030 16 03 03 00 20 bf 35 ae 8c b4 63 82 40 e8 5d d4 |.... .5...c.@.].| -00000040 bb 3d 0a 0f 07 28 3a 74 2c 5b a8 d0 a6 ab 88 ba |.=...(:t,[......| -00000050 7d 5c 1c 42 c7 |}\.B.| +00000030 16 03 03 00 20 68 e5 aa 89 6f 05 45 05 68 e9 53 |.... h...o.E.h.S| +00000040 35 a0 9b 96 d9 6b ab 2c 7f e1 4c de 3e 06 c6 04 |5....k.,..L.>...| +00000050 bd 7c 28 fb db |.|(..| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 20 e7 86 48 6c 00 |.......... ..Hl.| -00000010 0a 1e f5 5f b8 ff ad 1c 9d 74 24 c5 6e d4 c6 6e |..._.....t$.n..n| -00000020 25 27 7d 6e 18 44 96 29 eb db b0 |%'}n.D.)...| +00000000 14 03 03 00 01 01 16 03 03 00 20 fd 74 c3 42 59 |.......... .t.BY| +00000010 0d 86 2a 1c c7 51 d9 98 2c 1e 5b bd 44 3e 97 3e |..*..Q..,.[.D>.>| +00000020 55 90 5e 74 45 b7 47 0f f7 3e d7 |U.^tE.G..>.| >>> Flow 5 (client to server) -00000000 17 03 03 00 16 64 9d 31 09 a1 ce 5a 6d ec 6f c4 |.....d.1...Zm.o.| -00000010 e5 09 df 92 5f d2 1c 7d 62 c4 e7 |...._..}b..| +00000000 17 03 03 00 16 b5 ca 44 da 63 57 7f 6c e9 95 a5 |.......D.cW.l...| +00000010 56 88 f1 98 dc 73 85 3f 36 66 6f |V....s.?6fo| >>> Flow 6 (server to client) -00000000 16 03 03 00 14 9b cb 75 61 99 76 30 9c 14 a5 12 |.......ua.v0....| -00000010 92 de b7 95 cc 8f fe ad f1 |.........| +00000000 16 03 03 00 14 76 6b 6b 8c c1 38 cf 00 bf 20 c2 |.....vkk..8... .| +00000010 62 ae df 09 0e 61 61 bf 24 |b....aa.$| >>> Flow 7 (client to server) -00000000 16 03 03 01 1a c7 9a be e1 2a 62 9f 01 59 e9 6a |.........*b..Y.j| -00000010 5f d6 32 88 bd 39 76 1b 34 fd 39 8d c7 31 cb 97 |_.2..9v.4.9..1..| -00000020 c6 09 8b 00 c9 f3 f9 00 c5 b6 48 e1 28 ae b8 8b |..........H.(...| -00000030 b2 f0 eb 8b cb e8 68 30 50 b5 23 ba cf f3 8d f3 |......h0P.#.....| -00000040 47 5f 94 ac fb 5e 56 9e 5a f8 e7 12 60 13 83 9c |G_...^V.Z...`...| -00000050 34 ca 45 a7 63 5f 2c 6e 46 c8 5a a0 d3 5b 9a a6 |4.E.c_,nF.Z..[..| -00000060 70 be da df 9e 79 21 98 bd fb 94 01 6d 14 f4 5c |p....y!.....m..\| -00000070 2a 13 56 26 47 33 7d 4f ab 5a fc 9c 9e 8d f4 75 |*.V&G3}O.Z.....u| -00000080 d0 64 16 ba f2 0d 04 ca 5d 94 6b da a8 09 b1 29 |.d......].k....)| -00000090 70 a9 37 1e ac 94 e3 81 60 c3 19 f3 a9 99 6a 11 |p.7.....`.....j.| -000000a0 b1 e7 23 45 8a f5 42 f5 50 76 9f 1e 9e a8 e7 75 |..#E..B.Pv.....u| -000000b0 4a 18 84 80 da 10 ed 83 9a 14 a9 a1 90 54 8e 8b |J............T..| -000000c0 d1 32 83 6d e7 7e be 59 f4 66 59 53 75 37 c6 82 |.2.m.~.Y.fYSu7..| -000000d0 15 aa 56 0a 01 e1 11 ba 64 0c 8e 44 93 60 29 a4 |..V.....d..D.`).| -000000e0 cc 9f b0 b9 d5 df 9c aa 64 2c ef 0c 9a 18 2a 97 |........d,....*.| -000000f0 e1 20 07 37 35 28 97 9d 00 53 61 11 81 22 45 9e |. .75(...Sa.."E.| -00000100 c3 d7 b2 b3 4c f2 05 5b e6 a4 de 11 7f a7 a2 82 |....L..[........| -00000110 88 1c cb d9 24 80 3d 34 0c fc 22 58 32 28 1b |....$.=4.."X2(.| +00000000 16 03 03 01 38 0f c1 53 8f f5 61 aa 61 0a f4 de |....8..S..a.a...| +00000010 80 a6 92 99 a0 33 e6 90 5f b0 13 b7 be 93 0f 60 |.....3.._......`| +00000020 40 97 0a 3c dd 9f 22 fa c1 8f 1d 3d 11 c1 16 97 |@..<.."....=....| +00000030 c5 54 e4 08 fb 77 ff fb 51 fb 1a d1 a6 41 b8 4f |.T...w..Q....A.O| +00000040 a2 22 d7 11 8c 31 49 d7 d5 b2 16 02 2b 4d b6 ba |."...1I.....+M..| +00000050 7d 53 6c 5a 59 59 ec 54 00 c4 6b c3 bd 22 d1 b3 |}SlZYY.T..k.."..| +00000060 78 f8 e7 25 6e 67 b5 32 51 a6 60 5b 55 9a a0 f4 |x..%ng.2Q.`[U...| +00000070 ed e8 8c 8d 77 4b c3 04 9d b0 2a ed a0 bf 9f 03 |....wK....*.....| +00000080 fa e5 2e 17 9e 04 d6 6c 38 70 33 bc 90 eb 6f db |.......l8p3...o.| +00000090 33 9e 69 5f 44 8c 63 af 9f 6e 74 e0 a8 d2 1b 7d |3.i_D.c..nt....}| +000000a0 d1 11 ea f4 c5 49 2c 7a 98 ae f6 28 58 76 ac da |.....I,z...(Xv..| +000000b0 31 0d 7a c7 2d e6 8a 34 9d 37 26 c8 3e 44 ac df |1.z.-..4.7&.>D..| +000000c0 0b 4b 2c 4e 7c 63 ec 23 82 13 a3 87 ac f7 9a 08 |.K,N|c.#........| +000000d0 03 1c e9 ca 89 4a a8 93 37 a3 d6 1f fa dd c8 48 |.....J..7......H| +000000e0 4a 4a ba 4d 54 80 20 18 a6 e4 98 3d dd 81 58 ec |JJ.MT. ....=..X.| +000000f0 9f c0 5f 06 d6 29 04 76 38 1f d0 f4 3f fe 82 ab |.._..).v8...?...| +00000100 de cb 12 44 a2 96 eb ac d2 8d a1 76 37 85 71 80 |...D.......v7.q.| +00000110 de 8b 66 50 8e 41 17 cf 9b 2b 3a 7e 1d a3 e2 26 |..fP.A...+:~...&| +00000120 9f 60 1c 1e 89 06 d8 41 21 8d 3d ab 91 15 be 61 |.`.....A!.=....a| +00000130 6c 07 2a e7 55 8f 6c a5 13 51 9d cc 6f |l.*.U.l..Q..o| >>> Flow 8 (server to client) -00000000 16 03 03 00 85 ba 55 5d 15 b8 6d 8a b6 82 a8 e1 |......U]..m.....| -00000010 88 ea fe c0 a6 a8 fe 78 ed 8b ae 44 eb 7b 6c cc |.......x...D.{l.| -00000020 0f ad a1 da da 86 fb 60 07 4a 0e 5c ba 36 09 8b |.......`.J.\.6..| -00000030 95 3f f0 87 26 0f 7a e7 7c 1f af c7 67 42 c9 39 |.?..&.z.|...gB.9| -00000040 39 6a 4d 8d 87 00 3b 14 76 4a 86 87 46 1e d4 04 |9jM...;.vJ..F...| -00000050 2d ea c1 44 1f e8 87 71 da 1e 26 72 a2 e9 40 0c |-..D...q..&r..@.| -00000060 33 6e 6f 06 43 ed 7f fc 8f 4c d4 f4 0f 83 19 cb |3no.C....L......| -00000070 52 a9 94 f3 6a 64 db dd 20 d1 a7 d4 c7 6e 86 ed |R...jd.. ....n..| -00000080 6e ea 5c 66 d1 34 a6 92 7e b1 16 03 03 02 69 48 |n.\f.4..~.....iH| -00000090 13 97 82 60 46 e1 c9 02 d2 e1 f3 62 da d6 3a c1 |...`F......b..:.| -000000a0 2a a7 47 bd c2 ee 09 d5 2d 7e 5e 35 09 79 88 35 |*.G.....-~^5.y.5| -000000b0 96 50 09 68 79 e9 de e1 71 97 11 60 c5 4e 84 54 |.P.hy...q..`.N.T| -000000c0 03 78 69 84 e3 7f 02 1a 58 04 ed 53 47 01 b6 9e |.xi.....X..SG...| -000000d0 bd 5f 77 34 e7 52 3b 73 45 e1 10 3f c8 6e 4c 09 |._w4.R;sE..?.nL.| -000000e0 d0 4b 79 f8 de 0f 15 e7 2d 42 5d 7a 89 80 1f fb |.Ky.....-B]z....| -000000f0 f9 02 6f a1 72 d4 8d 65 8e d0 a8 43 41 4c 48 57 |..o.r..e...CALHW| -00000100 71 21 b3 14 45 e5 b1 f5 55 7a dd 89 c3 0f af 27 |q!..E...Uz.....'| -00000110 03 d6 5c 2d bc 24 5b 51 fa ae 34 7b f9 56 e8 41 |..\-.$[Q..4{.V.A| -00000120 cd 77 1c 3d c8 45 f5 a5 4a 97 92 ff bb cd 5b ff |.w.=.E..J.....[.| -00000130 d5 33 d6 02 9b 2a 5a 3a e4 1b fb 48 34 b3 0b ce |.3...*Z:...H4...| -00000140 d7 34 5c 4a b4 4b bd 87 b6 72 40 ab 29 b0 65 25 |.4\J.K...r@.).e%| -00000150 c7 1d 71 b6 e2 d7 b1 23 b1 96 a6 bd 74 eb ad 69 |..q....#....t..i| -00000160 59 0c 0f af 8a 64 be e4 a7 27 c2 95 11 05 55 a1 |Y....d...'....U.| -00000170 d6 44 df ad 1d 9c 3a 88 24 52 52 9d 42 f2 74 98 |.D....:.$RR.B.t.| -00000180 08 9f 55 1b 2f 79 ca b4 63 38 e4 f2 fa 99 ce 66 |..U./y..c8.....f| -00000190 77 ac 8d 31 91 05 1c bc 51 0a 31 df 5d 3e f8 69 |w..1....Q.1.]>.i| -000001a0 b7 fa f2 35 af 57 6d 7b c3 bf 1d 98 21 40 dd 02 |...5.Wm{....!@..| -000001b0 1c de ac 02 40 c8 d6 04 23 30 71 16 d0 0a 26 29 |....@...#0q...&)| -000001c0 66 e9 f1 a8 76 f8 52 18 3e 3f c5 66 c9 11 04 6c |f...v.R.>?.f...l| -000001d0 32 1b 35 cc 9a 34 70 07 da db 12 51 78 77 dc bc |2.5..4p....Qxw..| -000001e0 7a bb b8 b9 06 79 bb 04 dd d4 46 8e b5 69 d5 39 |z....y....F..i.9| -000001f0 5e 34 8e 37 dd a2 3e 31 be 28 19 45 21 76 5b dc |^4.7..>1.(.E!v[.| -00000200 7d 25 a2 41 98 16 1b 5b 69 f0 90 f9 28 a8 e9 b5 |}%.A...[i...(...| -00000210 6f 00 e3 3e eb f6 f3 e4 c9 0f bb 74 ce 40 23 df |o..>.......t.@#.| -00000220 12 c6 78 b0 2e bb 68 96 04 a3 e3 43 6b 4b c3 37 |..x...h....CkK.7| -00000230 6d 97 c6 79 1a ff 4f 00 c7 76 64 5c b8 b3 17 20 |m..y..O..vd\... | -00000240 3c 3e 6b d5 2b 72 88 11 73 1e 63 a7 6f 1e ae 83 |<>k.+r..s.c.o...| -00000250 10 77 6f d1 96 86 84 63 fd 27 8e b9 54 da 4b b5 |.wo....c.'..T.K.| -00000260 56 f0 50 8a aa c7 e1 b3 cb 9c 36 9e ec 38 31 39 |V.P.......6..819| -00000270 78 ec ea 34 8a 87 cf 6b 34 fd 5e 81 92 81 61 f1 |x..4...k4.^...a.| -00000280 88 e7 50 62 2e 58 0b d9 b9 ca f3 ed 79 a9 9a 01 |..Pb.X......y...| -00000290 80 9d 7f 84 ae de fb 51 ac 0f 6b b9 76 fd 68 d4 |.......Q..k.v.h.| -000002a0 f4 8d c3 92 6b 5e 9e 99 ff 7a f4 b7 0e ec 0d e7 |....k^...z......| -000002b0 6b 24 75 fb 21 49 6f 5b 31 12 f2 88 8e 3b b4 34 |k$u.!Io[1....;.4| -000002c0 f2 f7 c6 e7 48 0e d6 1d 81 11 32 16 01 cb b7 7f |....H.....2.....| -000002d0 a6 bd 9c 87 8c 0f 12 b2 dc 73 5d a0 46 fd f3 e8 |.........s].F...| -000002e0 b8 6f e4 38 ab 94 96 a8 bd ed 90 0e 31 1f fc 2f |.o.8........1../| -000002f0 8f 50 e2 97 6a f5 5c b4 16 03 03 00 bc 65 bb 7c |.P..j.\......e.|| -00000300 42 03 0d 42 46 e3 ac 9f 8a 96 b6 a3 f4 cf a5 30 |B..BF..........0| -00000310 5b 02 17 dc 20 7d 18 19 21 a4 70 f4 4b 99 bf b5 |[... }..!.p.K...| -00000320 cd d7 07 59 a5 82 ed 85 03 06 5c 34 3f c8 c3 4d |...Y......\4?..M| -00000330 c3 fb 96 05 bf b5 bd bf e2 28 07 7e 51 a6 84 90 |.........(.~Q...| -00000340 bf 9e 2e f6 b5 04 8e 06 7a 63 c8 00 84 a1 a3 2c |........zc.....,| -00000350 f3 6f 52 52 c4 ce 4a 59 31 1f d4 ab 2e f4 75 90 |.oRR..JY1.....u.| -00000360 a5 3b ff ab 20 be 51 92 c5 f4 4d 8b f2 2a a7 ff |.;.. .Q...M..*..| -00000370 90 07 40 3e d6 9c cf 23 54 d1 65 d3 74 79 af 51 |..@>...#T.e.ty.Q| -00000380 31 35 40 aa 29 42 32 7e 42 2d af 79 e8 59 6a 10 |15@.)B2~B-.y.Yj.| -00000390 c5 55 6b 70 53 53 ab 02 48 ba 1f df 07 59 f8 34 |.UkpSS..H....Y.4| -000003a0 ee 1d d3 e9 12 86 8b 37 2b cc 27 78 fe e1 65 2b |.......7+.'x..e+| -000003b0 c3 1e f2 25 a4 6d 3c b1 d4 16 03 03 00 4a 50 98 |...%.m<......JP.| -000003c0 cd ee ab 2c 94 95 d6 46 06 ef 63 65 5c aa 6d 6e |...,...F..ce\.mn| -000003d0 fb a0 99 62 23 af 7a 7d 17 dc a3 c6 2b 9a 56 2e |...b#.z}....+.V.| -000003e0 b8 60 87 1e 88 5d 58 27 3f 02 b4 f5 2f 3b 17 8c |.`...]X'?.../;..| -000003f0 f9 93 0c a9 58 af 11 ed 27 9d af a5 0a 2b d6 55 |....X...'....+.U| -00000400 7e c4 54 4a 36 51 b7 7b 16 03 03 00 14 c1 c4 d7 |~.TJ6Q.{........| -00000410 ea 2d f0 8c 54 0e 19 33 e1 7e a8 ae 49 7c 5e 05 |.-..T..3.~..I|^.| -00000420 23 |#| +00000000 16 03 03 00 85 2f 7c ac ad 05 49 3c 82 9c 82 20 |...../|...I<... | +00000010 0d 77 42 bd 9d 90 c3 2f ab c3 c2 60 a4 18 77 23 |.wB..../...`..w#| +00000020 02 5b e8 e0 3a f3 b7 ee b8 eb d8 7e c5 f6 52 9e |.[..:......~..R.| +00000030 d7 29 b8 1b 51 62 c0 b9 02 79 df 8a 3a 15 ec 74 |.)..Qb...y..:..t| +00000040 9e 2d cf c9 b1 1f 0b d3 7a b5 95 4d 74 80 5a 31 |.-......z..Mt.Z1| +00000050 57 f9 dc 03 be e5 d3 0b 2d 6e 55 1a 58 b4 43 a8 |W.......-nU.X.C.| +00000060 c6 e2 d1 c1 26 30 f5 3e 25 13 b6 4d df de 16 fd |....&0.>%..M....| +00000070 fd 29 85 e8 7f bf 54 74 4d 40 9a 58 c9 d2 e6 af |.)....TtM@.X....| +00000080 e4 fe 8d fc 0f 2e bc 1a 70 25 16 03 03 02 69 23 |........p%....i#| +00000090 0f f9 ff b3 8a ba 05 c3 be fb 3b 29 c5 4c 3f 2e |..........;).L?.| +000000a0 87 c5 2e ec 88 48 24 b7 25 a8 d2 b9 00 7b aa 4c |.....H$.%....{.L| +000000b0 bc 04 96 79 ed a3 e9 3d cf 64 2b 7f 9c 6b b8 3a |...y...=.d+..k.:| +000000c0 53 c3 70 96 39 64 5d 65 c4 aa e3 88 18 7e f6 8c |S.p.9d]e.....~..| +000000d0 36 2b 9b 19 4e 91 40 a3 6c 49 f5 37 96 cb ec f1 |6+..N.@.lI.7....| +000000e0 77 ea 92 dc 17 26 cd 7a 3a 94 30 6a 25 ec 98 6d |w....&.z:.0j%..m| +000000f0 87 ed 9b 30 1e c3 5a 40 84 93 34 a4 d3 5a d3 1b |...0..Z@..4..Z..| +00000100 10 94 9a 92 73 d3 6f 4d 81 72 08 5a dd 6f f0 cd |....s.oM.r.Z.o..| +00000110 ee 45 cf 16 40 a1 60 e8 f9 35 9a 8a 03 79 2f 7c |.E..@.`..5...y/|| +00000120 4a 08 8d 3b a9 0f 9c f8 1e 86 b7 f5 e8 da 09 06 |J..;............| +00000130 9b 1e f7 2d 58 22 2b d0 7d 3d 25 63 52 c4 20 e6 |...-X"+.}=%cR. .| +00000140 a1 c5 37 52 af a2 32 a5 78 fb fb f6 d4 6c 58 cd |..7R..2.x....lX.| +00000150 3b 4d 0e b3 6c 7c 00 0a dc 0e b6 7b f9 b7 42 7e |;M..l|.....{..B~| +00000160 0e a3 84 78 69 d5 9e 05 c1 17 4c d5 b0 5b 0a 5b |...xi.....L..[.[| +00000170 d1 27 dc 7c b6 44 a1 16 0c 97 80 18 2e 7b 5a fe |.'.|.D.......{Z.| +00000180 ca a4 05 36 76 6a a1 89 3e ad 1c 4a 60 7a 35 64 |...6vj..>..J`z5d| +00000190 fb fc db 28 a9 96 68 86 8d 77 e9 c0 60 1d ed 18 |...(..h..w..`...| +000001a0 9d 6f c4 4c e9 70 60 66 03 ef 28 99 f3 4b 93 03 |.o.L.p`f..(..K..| +000001b0 06 ef be de 5a 85 de c0 9a 2f 45 f2 77 bd 2a e3 |....Z..../E.w.*.| +000001c0 3d f3 6d 3b e8 20 f0 fd a6 9a cf 43 cf 83 7e 77 |=.m;. .....C..~w| +000001d0 4b 71 dc 8a d8 4d 85 a5 2d 84 3a ff 75 40 d8 7c |Kq...M..-.:.u@.|| +000001e0 f4 2f ff 12 86 1a a6 9c dc 28 28 0f 33 40 63 f8 |./.......((.3@c.| +000001f0 de 3f 9d 7c ae 9f b9 3a 21 be e9 e7 ae 52 9b 85 |.?.|...:!....R..| +00000200 2b a6 44 78 e1 23 7d 03 eb a4 c0 59 2d 0c d6 e4 |+.Dx.#}....Y-...| +00000210 8f 6c 37 bc d5 0c 7f e5 28 e1 5a 0c 65 0b 57 c7 |.l7.....(.Z.e.W.| +00000220 d2 61 13 b0 dc 19 4b a0 22 cc d9 1f 42 e9 3a 92 |.a....K."...B.:.| +00000230 ce 4e 37 c9 1b 82 7c 0c af b5 3f 5a a8 f4 c4 fb |.N7...|...?Z....| +00000240 fe dc 4a 19 32 da af aa 7c bf f7 2a b0 dc af ce |..J.2...|..*....| +00000250 c9 96 a1 30 b5 f8 4f 07 ca e6 db cd 71 c7 09 75 |...0..O.....q..u| +00000260 0b 7d 30 d9 5d 02 b0 b7 ff fc 92 11 e0 1e 37 40 |.}0.].........7@| +00000270 2f eb 50 8d 65 53 db 52 1c e8 42 2f 89 0d 61 cf |/.P.eS.R..B/..a.| +00000280 a0 a6 10 0f c7 05 c3 6a 32 eb b1 ca 26 f5 1d fc |.......j2...&...| +00000290 96 ec 55 f9 8a e6 05 13 d3 0a fb 74 6a 9a 3f 4f |..U........tj.?O| +000002a0 ca ce 4e 29 2f 46 4c ef 47 13 72 72 aa 46 c4 12 |..N)/FL.G.rr.F..| +000002b0 9a a7 f1 90 b2 ea b2 09 d4 db 77 c7 31 7d 6c d6 |..........w.1}l.| +000002c0 51 9f 97 91 f6 ba 0a fb a7 63 3e 68 e3 f2 50 5d |Q........c>h..P]| +000002d0 b1 33 b8 8b f1 91 68 df 3f b3 9f 5d a7 b5 c1 93 |.3....h.?..]....| +000002e0 bf 5d 8d 3e 90 05 88 bc d9 43 d0 9d 25 17 c1 4a |.].>.....C..%..J| +000002f0 4a 7f e5 73 d5 0b d6 a5 16 03 03 00 bc 1d 81 1d |J..s............| +00000300 dd 11 fe e7 08 d4 0a 50 1a 15 75 a4 0b 49 03 96 |.......P..u..I..| +00000310 8a 1f ba 30 e9 e3 55 c2 a7 27 cf 3a f6 4c 0a 3d |...0..U..'.:.L.=| +00000320 01 5a 08 9a 88 4d ac 0b 7c 84 5c 15 81 84 2d a7 |.Z...M..|.\...-.| +00000330 8e 4b 92 0b 7c de e9 91 20 07 ca 16 cd 43 8f ec |.K..|... ....C..| +00000340 db 7a 16 c9 2c 19 25 23 07 01 4f 68 cc 09 af e0 |.z..,.%#..Oh....| +00000350 cf d7 7c 2f e0 e7 65 3c 1a 24 c4 d8 b2 ae b9 25 |..|/..e<.$.....%| +00000360 20 7b 26 e5 50 a6 e1 b0 a6 18 e1 67 79 f3 a9 f0 | {&.P......gy...| +00000370 bf b1 16 34 47 75 f2 6c 2d 9c ce c4 c8 7b 7d c5 |...4Gu.l-....{}.| +00000380 6f 19 3a 2f 3a 5b 3c ce 9f 8d a2 1d 77 ba 9d 15 |o.:/:[<.....w...| +00000390 7a ee b4 88 62 f1 9e 04 4c be 48 ea 0f 2f e5 cf |z...b...L.H../..| +000003a0 c0 0b 11 0b 67 9e c7 1c 3d 6b da 86 31 b0 fb 9c |....g...=k..1...| +000003b0 55 94 18 26 7a 0e 9b e7 99 16 03 03 00 4a c4 b6 |U..&z........J..| +000003c0 b8 bf cc 7e 5e 8f c4 a0 84 53 bd 28 e4 1d 47 48 |...~^....S.(..GH| +000003d0 88 52 dc 46 46 e3 43 60 d2 90 62 c0 0f f5 37 5a |.R.FF.C`..b...7Z| +000003e0 31 4a b1 c8 45 80 b8 91 71 45 f7 64 08 ae c7 c7 |1J..E...qE.d....| +000003f0 9c ab 03 57 fb d6 04 ff 11 3f be 41 a8 1e a6 d1 |...W.....?.A....| +00000400 18 d7 ce 5d df 0a 12 d2 16 03 03 00 14 ea 34 3b |...]..........4;| +00000410 30 86 2c da 14 f5 a8 c4 0b 08 b9 1a c5 5c 7d ba |0.,..........\}.| +00000420 82 |.| >>> Flow 9 (client to server) -00000000 16 03 03 02 69 83 ef 87 6b aa f1 2a cc c1 b8 5d |....i...k..*...]| -00000010 47 e4 2d da c5 91 62 e4 7d 49 da 54 a3 79 fb 1d |G.-...b.}I.T.y..| -00000020 59 49 e8 a6 ab 79 c0 9f 51 f9 d2 63 0d 8c 6b 7f |YI...y..Q..c..k.| -00000030 b6 77 2d f3 b3 3e 78 86 3a 14 1a ab 3b 5e 23 b2 |.w-..>x.:...;^#.| -00000040 d3 5c b1 2b 5c f4 f0 9d e2 87 08 d0 2f 24 30 d3 |.\.+\......./$0.| -00000050 05 eb f8 a6 b2 d1 52 00 c3 9e 0b 82 34 3e fd 5a |......R.....4>.Z| -00000060 46 d5 b6 b2 f0 a0 96 11 e1 35 c2 32 57 d6 dd b2 |F........5.2W...| -00000070 a8 ad b2 71 a2 6f 83 05 d6 f1 83 38 a0 3c 13 ff |...q.o.....8.<..| -00000080 c1 c1 b0 1e b5 40 5b b5 05 31 65 0b 81 a6 b0 37 |.....@[..1e....7| -00000090 7d 16 3b 7b cb e7 58 7f 81 25 e3 39 37 98 87 b0 |}.;{..X..%.97...| -000000a0 e1 8f c0 d5 de 33 fe de 15 37 41 25 d8 97 5d 84 |.....3...7A%..].| -000000b0 28 12 b4 a5 b0 15 f1 f4 cf 41 28 e9 26 5d ba 36 |(........A(.&].6| -000000c0 da b6 a6 cb 21 92 21 30 4b 21 4d 44 28 4d 76 d1 |....!.!0K!MD(Mv.| -000000d0 61 65 fa 02 05 67 50 ec 7d 98 78 21 46 5d fe 75 |ae...gP.}.x!F].u| -000000e0 78 8e 9d 41 6a 0a d7 0e 27 22 d0 a1 21 57 3d 23 |x..Aj...'"..!W=#| -000000f0 d1 7d 08 f4 0b 1b 90 ec 63 74 4c e7 df c8 8f 8b |.}......ctL.....| -00000100 b8 cd 2b 06 a5 35 f5 c1 62 d5 46 f3 d5 19 5b ce |..+..5..b.F...[.| -00000110 c8 d2 f4 c1 51 5f cd b2 51 23 61 bf 93 7f 5d bd |....Q_..Q#a...].| -00000120 61 f2 b2 e0 ad be ab d7 c9 77 26 c2 61 fb 25 8d |a........w&.a.%.| -00000130 46 38 7a 30 48 9f b5 5c 47 6b ce 10 1d 03 d0 68 |F8z0H..\Gk.....h| -00000140 7f 00 c0 94 f4 35 eb 41 e8 91 f6 d9 5c 44 d6 79 |.....5.A....\D.y| -00000150 72 9f 22 a4 08 fd 74 1b 42 dc 49 06 34 8f b6 f5 |r."...t.B.I.4...| -00000160 12 1c 09 f0 d4 eb e4 6e d5 9a 31 f9 1a 88 c1 bf |.......n..1.....| -00000170 37 42 90 5f c8 e1 38 2b 8b 4b c1 cd 66 72 e6 49 |7B._..8+.K..fr.I| -00000180 d3 19 0e 01 19 60 f7 7d d3 66 b2 bf bd 94 30 c9 |.....`.}.f....0.| -00000190 3a 01 aa b6 dc 2a d6 1a 68 cf a6 31 5e 9a 1d 5b |:....*..h..1^..[| -000001a0 90 bb 77 33 31 f2 28 5a 70 a5 c5 ef 91 91 27 22 |..w31.(Zp.....'"| -000001b0 59 33 d5 22 78 8e 8f 07 91 3c 69 ec b9 81 be e8 |Y3."x.........G...NWQ.Y| -00000250 05 84 dc 4d fd fb d1 11 33 b6 e5 5e df 65 d4 ed |...M....3..^.e..| -00000260 04 af 89 b3 f0 90 9b 7c 5e 83 b1 66 71 b1 16 03 |.......|^..fq...| -00000270 03 00 35 5b 37 fa e1 97 11 25 7c fd da 7e e8 2a |..5[7....%|..~.*| -00000280 9b 28 fa 20 a6 9b 9b ca 99 ed a2 eb 5b 84 df a0 |.(. ........[...| -00000290 b9 14 c2 fe 38 a8 54 06 e4 54 38 87 2a 24 8b 1e |....8.T..T8.*$..| -000002a0 3e ba 0a bb c2 1d a4 74 16 03 03 00 98 8b 39 c7 |>......t......9.| -000002b0 ac e5 80 bf 49 95 ad f4 c0 cf c9 7c 86 bf 11 65 |....I......|...e| -000002c0 53 40 f3 64 3e 04 ad c9 8d 33 8a 10 4a f5 2e c5 |S@.d>....3..J...| -000002d0 22 18 59 1c 81 65 8a 51 47 b4 8d b1 94 57 3c f8 |".Y..e.QG....W<.| -000002e0 d0 06 60 ce 04 f9 50 8f 6c 43 d8 6e b0 9e d9 da |..`...P.lC.n....| -000002f0 4b e5 b5 05 b7 1b 4b 46 59 d6 ad 20 bb 4c fc aa |K.....KFY.. .L..| -00000300 9a 9b ef fd 59 4b 2a 63 01 b0 1b 2d ed b1 f4 5b |....YK*c...-...[| -00000310 bb ca cd fa 13 06 06 7e 1d a5 cd c3 ca 4e bf 7b |.......~.....N.{| -00000320 7e 92 92 09 61 35 68 a2 38 f9 13 41 f4 a9 a5 0f |~...a5h.8..A....| -00000330 42 63 e4 15 e8 86 00 48 90 2b 43 30 da 05 b6 fc |Bc.....H.+C0....| -00000340 8e 7f 52 d3 b8 14 03 03 00 11 82 73 be a9 08 9d |..R........s....| -00000350 5b 2f fe bd 1f 2c fb e2 f3 94 f3 16 03 03 00 20 |[/...,......... | -00000360 d0 47 0f 2d 7e ce 8f 01 e2 7d 01 3c 32 79 a0 26 |.G.-~....}.<2y.&| -00000370 fe 00 ce d3 37 46 20 b4 f8 af 21 81 0f 1e ba 2d |....7F ...!....-| +00000000 16 03 03 02 69 ee f1 51 ac 2b 75 2a 6b 31 f9 25 |....i..Q.+u*k1.%| +00000010 5a 00 97 42 02 d8 b8 e0 2a a6 0f c2 eb 89 75 42 |Z..B....*.....uB| +00000020 4c 94 81 59 d0 26 4b e4 51 0a 77 ac bd bc 84 8e |L..Y.&K.Q.w.....| +00000030 fa 68 9c 1c 38 90 08 35 96 d2 7e e9 ef 8d 00 78 |.h..8..5..~....x| +00000040 1e 30 cd 92 df 44 d8 89 fc e5 ce 65 43 65 be db |.0...D.....eCe..| +00000050 92 5e 56 0c 8e 86 cf 8f 62 4c 9a a2 ab 8b 0c f6 |.^V.....bL......| +00000060 13 b4 57 76 fb c4 de b1 68 1c ca c1 23 3d 0d 6a |..Wv....h...#=.j| +00000070 be ab 0f 03 19 3a 8c 36 0a ed 1c 2b 59 7a b5 f2 |.....:.6...+Yz..| +00000080 9c 29 0b e1 ab 74 ad b4 fc f9 ab 18 bf b0 3d 5e |.)...t........=^| +00000090 57 70 be 2f 57 7c cc cd 4b 0d e3 c7 d6 74 d8 ae |Wp./W|..K....t..| +000000a0 79 b1 f8 aa 28 b7 a4 c7 27 77 a0 20 69 81 f6 a2 |y...(...'w. i...| +000000b0 76 bc 96 fd 2d 03 9c 97 21 5d ea 50 82 5a 6d 00 |v...-...!].P.Zm.| +000000c0 7a 80 19 09 4b 4a 8c cc f4 b4 74 62 60 b6 71 44 |z...KJ....tb`.qD| +000000d0 d5 06 e0 79 45 cc 78 4a ee 4c d6 bb 96 70 ac cb |...yE.xJ.L...p..| +000000e0 3e 94 d6 46 a3 96 15 4f 70 f0 1a 61 13 ec 6d 0d |>..F...Op..a..m.| +000000f0 be ce cd c7 ee 5e c8 ae cf 1f f1 43 dd 29 21 8b |.....^.....C.)!.| +00000100 f1 f0 32 5a 4d 02 09 7f c0 15 be 33 aa eb 55 97 |..2ZM......3..U.| +00000110 ea 74 02 dd 74 22 40 b5 33 7d cf ca be 07 0d cb |.t..t"@.3}......| +00000120 82 a4 62 56 b1 68 f8 25 d7 1d 57 31 83 cc 7b e9 |..bV.h.%..W1..{.| +00000130 8a 9f d5 b5 d1 99 da 4b 55 87 c2 d3 99 ea 34 3c |.......KU.....4<| +00000140 01 61 5e d4 f2 4a 40 b4 ff 4b eb 68 c7 5e a7 7b |.a^..J@..K.h.^.{| +00000150 cf d6 2d 99 ea 6d df a8 b3 74 d1 ad 22 22 81 ae |..-..m...t..""..| +00000160 58 a6 1b 87 cb 75 d7 2c 5b a6 4e 04 28 fb f7 6e |X....u.,[.N.(..n| +00000170 2a 52 c9 19 21 d8 3c ee 0c 8d 0c 55 d9 7a 1f 75 |*R..!.<....U.z.u| +00000180 1e 14 4f c2 7c e3 a1 b7 bd 23 32 40 68 d7 9f d7 |..O.|....#2@h...| +00000190 bc e4 57 62 d2 ba 95 3f 1a c0 2f cf 31 6b 41 e6 |..Wb...?../.1kA.| +000001a0 92 91 91 6f 49 4b 42 fb ae e2 82 c2 ac 5b 5d 0f |...oIKB......[].| +000001b0 f1 9f e7 18 9d 1d 35 f6 6f 51 d2 05 ed a2 ab 55 |......5.oQ.....U| +000001c0 38 19 ec 37 ac f2 25 1d 6c 9e f7 30 87 98 03 96 |8..7..%.l..0....| +000001d0 d6 ae dd 39 74 8f 39 c9 b8 5c aa b2 88 60 5d 96 |...9t.9..\...`].| +000001e0 7e 3f fe 21 91 41 e1 e9 88 8c 63 20 dc 8d 60 7f |~?.!.A....c ..`.| +000001f0 29 36 bd 81 7f 90 48 47 e4 d1 c1 f6 07 06 4f 5d |)6....HG......O]| +00000200 2e fa ba e7 8c 57 0d f7 82 80 31 68 a3 78 f9 73 |.....W....1h.x.s| +00000210 2d 31 0a 76 b1 08 5e 28 af 97 e9 4f 00 b3 eb 99 |-1.v..^(...O....| +00000220 81 0a 2f 64 53 24 63 eb 16 10 67 97 77 e4 52 98 |../dS$c...g.w.R.| +00000230 13 d2 bb a5 26 6a 4a c9 6d 9a f7 4c 99 af 05 3b |....&jJ.m..L...;| +00000240 da 91 d0 1e bf bc e7 49 90 1e 9f 56 03 38 77 28 |.......I...V.8w(| +00000250 a2 78 ca 38 51 ec a4 96 70 f2 23 24 ef d2 5e 70 |.x.8Q...p.#$..^p| +00000260 d0 12 d8 f7 75 64 66 be f9 30 40 13 30 ca 16 03 |....udf..0@.0...| +00000270 03 00 35 2e 74 d1 77 b1 56 b9 b6 33 07 39 6d 6b |..5.t.w.V..3.9mk| +00000280 c9 c0 9e b1 35 5b 1c 5e 8b c7 15 b8 12 90 3f 62 |....5[.^......?b| +00000290 01 4a bd 93 2e 5d 0b 6f 9a 33 f3 0f f3 ce 8b 6e |.J...].o.3.....n| +000002a0 a2 fb 81 8b 69 9a 3b db 16 03 03 00 98 70 68 40 |....i.;......ph@| +000002b0 c3 43 46 fc 9b 8a 1d 3f e2 00 0e e3 a5 a1 d3 b3 |.CF....?........| +000002c0 4e 99 01 15 d1 91 6c be 4d 05 17 f9 67 14 f5 03 |N.....l.M...g...| +000002d0 86 f0 f3 c1 b4 74 8d dc d5 74 d7 b1 f3 f7 5c b1 |.....t...t....\.| +000002e0 12 20 5e 64 aa e5 fa b4 d5 dd 34 29 42 a4 4e 46 |. ^d......4)B.NF| +000002f0 9a e0 98 a7 9a 6c c1 b0 bc d7 4d b9 a8 1c 8d 51 |.....l....M....Q| +00000300 5b 11 bd a3 a9 1c d7 c7 d2 c7 e1 04 a0 6c be a0 |[............l..| +00000310 74 81 e1 9f f3 a6 ac dc e6 ac 76 46 03 28 d3 b1 |t.........vF.(..| +00000320 ab a9 77 b0 84 f2 61 ff 39 a0 e5 09 a0 ad fa 41 |..w...a.9......A| +00000330 a9 09 4d fb 3f 46 11 73 71 cd 80 1b 1f 5a 43 c9 |..M.?F.sq....ZC.| +00000340 b0 b0 df 4a 03 14 03 03 00 11 d1 98 c3 73 d0 be |...J.........s..| +00000350 45 ea 73 e7 71 1c 78 97 4a b9 05 16 03 03 00 20 |E.s.q.x.J...... | +00000360 5e e3 1f 19 aa 89 11 71 09 fb 4c f4 36 d4 3a 4b |^......q..L.6.:K| +00000370 3e 89 3c 78 99 1a 63 7b 45 22 55 39 74 7f d6 5f |>.>> Flow 10 (server to client) -00000000 14 03 03 00 11 53 7f 72 ce 10 f4 0e a3 ed ed 8d |.....S.r........| -00000010 3a ad 2d 57 c8 e1 16 03 03 00 20 11 e9 69 5e ff |:.-W...... ..i^.| -00000020 22 0d f6 a3 e1 e5 3f 14 34 a0 33 d7 d5 0a 7f bc |".....?.4.3.....| -00000030 7c 69 9b 9a d2 aa 41 87 fe da de 17 03 03 00 19 ||i....A.........| -00000040 bd a1 83 5d 27 9f cc 0b 40 02 23 6e 6f 18 4c bc |...]'...@.#no.L.| -00000050 48 c4 02 7d 45 08 71 ac d7 |H..}E.q..| +00000000 14 03 03 00 11 f4 04 c6 5c 08 6d 53 9b 6e 59 7f |........\.mS.nY.| +00000010 75 c7 d9 a9 95 24 16 03 03 00 20 f3 82 ea ea a8 |u....$.... .....| +00000020 ee 3f 83 7f f4 1e 31 d8 66 32 b7 d9 46 13 ac b5 |.?....1.f2..F...| +00000030 cc b0 e6 ac 06 4f 65 3b 2e 57 f6 17 03 03 00 19 |.....Oe;.W......| +00000040 c7 c9 1c 1c 64 a0 c0 90 03 96 5e 94 60 79 f0 85 |....d.....^.`y..| +00000050 e7 41 db ca 6e 21 5a dd 2a |.A..n!Z.*| >>> Flow 11 (client to server) -00000000 15 03 03 00 12 80 ae fb 45 cb a1 2d 1f c8 b6 02 |........E..-....| -00000010 3a 28 62 d6 13 48 2c |:(b..H,| +00000000 15 03 03 00 12 7a a9 2e 4b 21 84 78 cb 46 52 f3 |.....z..K!.x.FR.| +00000010 f9 8e 75 3b 7e 77 a1 |..u;~w.| diff --git a/src/crypto/tls/testdata/Client-TLSv12-RenegotiateTwice b/src/crypto/tls/testdata/Client-TLSv12-RenegotiateTwice index 7ff58763c5..1c7fadb2cd 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-RenegotiateTwice +++ b/src/crypto/tls/testdata/Client-TLSv12-RenegotiateTwice @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 25 9f b0 d0 c5 |....]...Y..%....| -00000010 56 c8 79 6a 1a ff 0e e9 8b 41 b6 be c7 36 0b 58 |V.yj.....A...6.X| -00000020 c0 9e 9d 6c 4c b4 39 1f 95 ff 8f 20 32 27 d2 39 |...lL.9.... 2'.9| -00000030 ac f6 33 f9 48 a4 0b 0f e1 f9 5f 0a 83 7b 75 95 |..3.H....._..{u.| -00000040 23 55 14 ba 55 2f 47 42 e8 df 09 39 cc a8 00 00 |#U..U/GB...9....| +00000000 16 03 03 00 5d 02 00 00 59 03 03 c5 11 e0 7f 6f |....]...Y......o| +00000010 86 2d f5 8f c2 ba 8b a7 1e 15 94 51 e1 d0 ab 40 |.-.........Q...@| +00000020 37 5b 68 a7 ee 6f de ae d2 4b b2 20 a8 02 85 68 |7[h..o...K. ...h| +00000030 2c 18 6b 1a 6c ba 64 81 8a 0f 72 a6 a3 3a 1a ee |,.k.l.d...r..:..| +00000040 6a 9a d6 9a ce 03 78 11 11 b6 fa 7a cc a8 00 00 |j.....x....z....| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -61,286 +63,290 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 2b 66 1d |............ +f.| -000002d0 80 f2 60 32 0f af 6f d3 03 db 28 c1 33 18 1c 5d |..`2..o...(.3..]| -000002e0 71 fd 2a 24 f9 3c 4d 76 ca e3 93 8d 25 08 04 00 |q.*$.>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| -00000030 16 03 03 00 20 7b de 6f c8 b7 f1 69 89 0b 29 af |.... {.o...i..).| -00000040 62 1b 92 47 e9 44 f7 26 91 93 9c 3b e2 77 0e d0 |b..G.D.&...;.w..| -00000050 c5 af fd e5 59 |....Y| +00000030 16 03 03 00 20 c0 2e 41 33 99 c3 00 90 54 c8 ea |.... ..A3....T..| +00000040 64 b2 f5 74 5d 3c b8 eb 0c 6e 12 bb 96 01 13 46 |d..t]<...n.....F| +00000050 1f 7d e9 3a 15 |.}.:.| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 20 94 da e2 2e f3 |.......... .....| -00000010 65 59 31 4f 58 42 57 b5 1f e6 c1 5a c6 07 97 12 |eY1OXBW....Z....| -00000020 f6 6c 20 cc 91 50 76 42 70 dd 2c |.l ..PvBp.,| +00000000 14 03 03 00 01 01 16 03 03 00 20 50 98 09 8a ad |.......... P....| +00000010 b9 ba cb d8 d2 5c a8 69 86 da 30 da 39 ed 3b db |.....\.i..0.9.;.| +00000020 5c eb 34 08 4c ca 51 b2 63 0e 08 |\.4.L.Q.c..| >>> Flow 5 (client to server) -00000000 17 03 03 00 16 fe 0d 78 61 f9 fe 65 3c 42 c0 98 |.......xa..e>> Flow 6 (server to client) -00000000 16 03 03 00 14 e0 bb 6e cc 69 fc a7 02 46 c4 5e |.......n.i...F.^| -00000010 a5 b1 1e ce e9 c7 7a d9 76 |......z.v| +00000000 16 03 03 00 14 b0 3a a3 b6 16 b7 9f 65 f8 7f 64 |......:.....e..d| +00000010 8d 4c 73 1f 41 1b b0 5c 65 |.Ls.A..\e| >>> Flow 7 (client to server) -00000000 16 03 03 01 1a a7 03 1c ef 27 0a 04 9b 31 b0 c6 |.........'...1..| -00000010 17 00 1f 6c d5 91 ae 7c 77 87 98 05 67 9a ea ea |...l...|w...g...| -00000020 6c 79 28 da 2c 91 6d a0 c6 9a e9 f3 85 a0 7f 7d |ly(.,.m........}| -00000030 ae 89 ac 0d 01 7f d8 34 dd fb ba c3 d8 ba ff 9b |.......4........| -00000040 75 dc d6 5e 8a fa ad 9c ea fa 15 63 55 85 98 26 |u..^.......cU..&| -00000050 65 7a 19 17 c4 99 98 85 83 c4 06 39 30 d5 63 51 |ez.........90.cQ| -00000060 ff 22 e8 cd 55 6e fc 88 5e d5 54 24 79 52 7e b0 |."..Un..^.T$yR~.| -00000070 71 e4 e6 cb a6 06 24 14 1a c2 a8 52 85 e9 fc e4 |q.....$....R....| -00000080 66 47 9c 9c d1 f3 56 11 47 16 4b 7c a5 f1 81 1e |fG....V.G.K|....| -00000090 00 78 98 8f 70 ae 47 6d 45 3b c4 af fc 88 bd 88 |.x..p.GmE;......| -000000a0 7b cc 8a 78 86 ff 86 25 2d 21 28 f2 c5 d7 4b 61 |{..x...%-!(...Ka| -000000b0 c0 ea 67 38 4c d0 d6 6f fc a0 69 62 98 6f ac 29 |..g8L..o..ib.o.)| -000000c0 29 13 34 7a f0 2d 1b 7e 52 42 6f f1 64 ed 7f 47 |).4z.-.~RBo.d..G| -000000d0 69 82 9b 9d 19 7b 3a c5 54 51 c8 8f 4c 9e 42 a7 |i....{:.TQ..L.B.| -000000e0 0f 9e 05 1d 4f 85 11 05 97 42 fa 24 37 1c 4e ec |....O....B.$7.N.| -000000f0 55 dc e1 4e f6 e2 dd c6 63 b0 dd 60 11 93 23 8a |U..N....c..`..#.| -00000100 eb 68 76 21 ec 19 cf 59 c8 78 80 f0 fa 39 6a 09 |.hv!...Y.x...9j.| -00000110 f8 7f 9d c0 e7 51 3d 75 17 e3 cf a5 bf 1c 10 |.....Q=u.......| +00000000 16 03 03 01 38 a3 ce 00 8f a3 63 85 d9 cd 78 93 |....8.....c...x.| +00000010 55 94 fc 68 84 5c fc c5 a3 c3 d1 cc 09 83 e0 a0 |U..h.\..........| +00000020 b2 b7 d4 10 6f aa 32 99 a5 53 e0 c0 ae 8c 6a e2 |....o.2..S....j.| +00000030 90 8f 46 ac 71 ce 4e 4f 0a 29 cd 70 ed 8a cc 1e |..F.q.NO.).p....| +00000040 53 de d1 75 72 a2 06 36 28 6e fd d0 60 00 ff c6 |S..ur..6(n..`...| +00000050 a8 18 1e f8 1c 1a 7d e9 d8 16 36 a4 42 d5 59 ad |......}...6.B.Y.| +00000060 d9 01 45 e4 03 8b c8 f3 b7 2f 0f 77 62 69 ad 35 |..E....../.wbi.5| +00000070 16 ef 99 94 7f af 7c f5 44 19 99 65 97 d3 15 af |......|.D..e....| +00000080 82 06 1d 80 ab 55 51 70 c7 23 15 5b 00 fb 93 e6 |.....UQp.#.[....| +00000090 5e 06 c9 db 87 98 af 0b 38 68 5f 0a 06 35 2b bd |^.......8h_..5+.| +000000a0 15 04 57 e6 1c 70 35 b3 2a 16 c7 f6 7e 3b bf d7 |..W..p5.*...~;..| +000000b0 3f f6 35 bd a9 cc 6d aa 75 b4 16 6d 81 0e 34 ab |?.5...m.u..m..4.| +000000c0 2e de e7 4a 2e 13 69 c5 c2 e2 2d 38 e6 3f 8a f4 |...J..i...-8.?..| +000000d0 d5 6a a2 9d 28 a7 98 30 e3 9a 8a 86 15 e6 00 45 |.j..(..0.......E| +000000e0 63 43 1d 28 b0 24 39 06 5e cb cb eb a1 cc 75 f3 |cC.(.$9.^.....u.| +000000f0 18 e4 d0 e6 49 0b 00 5d 67 18 35 52 b4 fa ec 9a |....I..]g.5R....| +00000100 6a 26 1b f8 38 ef f4 be 30 ef af bb bb 3f 28 a2 |j&..8...0....?(.| +00000110 0e 17 48 a6 3c d1 73 a7 45 12 4e 7e b2 87 e2 4a |..H.<.s.E.N~...J| +00000120 92 6e 26 3a f5 17 08 87 7b 34 bc 11 36 51 5f 0b |.n&:....{4..6Q_.| +00000130 e4 05 a9 b7 a5 bd 51 fa 77 e3 72 31 84 |......Q.w.r1.| >>> Flow 8 (server to client) -00000000 16 03 03 00 85 14 4e 8e de d0 5b 59 2d f6 a3 b0 |......N...[Y-...| -00000010 c0 ff 4a ff 8b cf af 2f 09 f1 ee 03 0f b9 70 5e |..J..../......p^| -00000020 1b e4 ef b4 3e e7 c1 43 fb ea a8 68 4c 66 0a 55 |....>..C...hLf.U| -00000030 e8 51 a6 30 bb e3 f5 0e df 11 f2 e0 51 94 14 f6 |.Q.0........Q...| -00000040 1e c6 e8 9d 10 a2 20 9f f2 f6 1e f0 3c f3 ba ff |...... .....<...| -00000050 65 d1 f4 df 9e e6 18 9f a1 a5 9c 5f 4b 4f 20 98 |e.........._KO .| -00000060 4a f6 0b 95 da 01 1f ea c0 c4 39 39 8b fd 19 40 |J.........99...@| -00000070 8d 14 da 45 fd 51 3d a7 36 23 a0 b2 bb cb 81 6b |...E.Q=.6#.....k| -00000080 79 0a 02 71 50 84 ac d6 7b ad 16 03 03 02 69 b8 |y..qP...{.....i.| -00000090 a9 6c 87 d7 23 6b c6 1a 4c 08 dd fa 58 e8 e8 d5 |.l..#k..L...X...| -000000a0 44 16 3b de 77 60 33 2a 47 a5 3c e0 cb c3 1a 38 |D.;.w`3*G.<....8| -000000b0 1d 1f 69 8e 33 a3 ba ac 55 b5 77 9b e1 fc a4 21 |..i.3...U.w....!| -000000c0 99 90 01 5e 99 36 a3 cf 74 b4 1f 96 b7 96 1e 4b |...^.6..t......K| -000000d0 cf 0b 92 5f 6b 1f 1c b0 70 80 2e 87 57 ef 52 b0 |..._k...p...W.R.| -000000e0 2b 7d 66 06 cb a1 78 a7 5a e2 af 4c fc a4 8b 99 |+}f...x.Z..L....| -000000f0 af 6c 6d 0e 07 7e da 11 5a b7 89 af 3c ce 1e 22 |.lm..~..Z...<.."| -00000100 1f 7d 97 d5 d4 78 09 c4 e7 fb 33 bf 36 ee 6e 5a |.}...x....3.6.nZ| -00000110 af f0 5b 0f 00 eb cc 3d 76 35 41 98 4c 65 81 34 |..[....=v5A.Le.4| -00000120 74 d9 d7 ba 04 fc c8 c6 c9 ca 4b b0 8e b1 7e 87 |t.........K...~.| -00000130 9d 69 2e d5 68 54 96 48 37 42 ae ff 18 d0 08 b2 |.i..hT.H7B......| -00000140 dc 26 1c c1 99 f1 c3 02 3f 48 51 a8 92 10 18 01 |.&......?HQ.....| -00000150 f3 3b 96 4b de 80 29 27 87 da f4 89 23 1b 49 b8 |.;.K..)'....#.I.| -00000160 5b f5 50 ec 99 b0 c3 48 e2 d3 fe fb a0 95 c3 c6 |[.P....H........| -00000170 83 fe d9 87 ef 0c cf 67 8f e7 52 3d 17 7d c0 ab |.......g..R=.}..| -00000180 02 1a 33 78 c8 d6 13 8b 8e 82 be 0d 5e d4 22 e8 |..3x........^.".| -00000190 63 c3 84 a9 05 12 d3 b7 e2 36 96 a2 22 0a 77 df |c........6..".w.| -000001a0 20 06 5c 0d 8b c1 d6 ac 73 b0 b2 a0 be db 59 17 | .\.....s.....Y.| -000001b0 05 60 68 b9 18 85 d5 73 9b c9 41 b9 c1 f2 02 47 |.`h....s..A....G| -000001c0 ca 95 c8 47 e2 de 04 75 08 d4 b7 a2 41 d7 e2 6b |...G...u....A..k| -000001d0 ad 8c ba c5 fc f8 b1 fe d3 23 c0 22 ec d0 2f a7 |.........#."../.| -000001e0 d9 ed 0e da 71 18 c0 d0 1f 40 8d eb 79 ea 5f aa |....q....@..y._.| -000001f0 07 4f 65 81 c1 9e ea 36 7f 0d 8b 07 8b 71 81 5a |.Oe....6.....q.Z| -00000200 0e cb d4 0f 98 c8 5c 69 d0 61 6e b5 ef 2a dd 5f |......\i.an..*._| -00000210 63 92 b4 3e 6e f4 b8 fc 45 bf 58 79 08 a4 95 6f |c..>n...E.Xy...o| -00000220 34 01 9b 8a 19 a5 e4 11 3f d4 97 47 66 e8 42 ef |4.......?..Gf.B.| -00000230 92 72 01 f4 6f 07 a4 35 81 83 ee 26 d0 96 cc de |.r..o..5...&....| -00000240 42 2a 65 64 cc a9 0c 39 31 d5 7c 2f 42 e5 ce 36 |B*ed...91.|/B..6| -00000250 0b bf b5 22 2a 4f 3c 56 27 29 cd fb 8e 9f 8f ab |..."*O..Bv=..Qlj.x...| +000002b0 70 1b 9e 70 63 e3 e6 c4 9a ed c9 1e 9f 95 dd e2 |p..pc...........| +000002c0 8e b9 12 7d 7a d1 3b 49 df 4c cc ba b4 2d 91 34 |...}z.;I.L...-.4| +000002d0 f8 05 1e d1 66 39 49 99 49 18 45 da 24 65 bb f8 |....f9I.I.E.$e..| +000002e0 d0 40 87 6d 5b 5a 2a 41 40 f0 98 07 3c 1a 9e 81 |.@.m[Z*A@...<...| +000002f0 8f 5d 44 80 10 0b bb f4 16 03 03 00 bc 8a 5e 4c |.]D...........^L| +00000300 7b 86 c6 d6 f1 fa ba 03 2d 16 75 46 6a 72 b9 98 |{.......-.uFjr..| +00000310 11 75 b5 34 96 6a f9 61 7a b4 47 2d 67 b8 ab 1f |.u.4.j.az.G-g...| +00000320 69 60 1f 28 ff 3d 03 61 62 22 7a 35 73 e7 0e 15 |i`.(.=.ab"z5s...| +00000330 f5 e9 64 a6 8b dc e3 f4 fe 7b 53 82 48 6f df fb |..d......{S.Ho..| +00000340 69 b8 c3 4c a9 dc 87 8b 46 99 1f ef ae 6a 40 56 |i..L....F....j@V| +00000350 81 fd e9 1d 8c 8d 12 c0 07 77 fa e3 e2 cd 48 33 |.........w....H3| +00000360 de b9 db 09 0d d4 eb cc a5 9e 43 75 b6 45 09 c2 |..........Cu.E..| +00000370 08 ff cc fa c6 3b 97 da 85 9a c4 9f 56 03 ed b8 |.....;......V...| +00000380 a5 98 ec b3 b8 d4 39 b5 07 32 b4 f6 70 1f 9f 1d |......9..2..p...| +00000390 6e 0e fc 22 6d 1d 29 b7 d7 83 f3 2e 1a 8e d0 77 |n.."m.)........w| +000003a0 e9 82 4f 21 94 0d e6 39 f4 4f 57 74 0e a6 0d a3 |..O!...9.OWt....| +000003b0 bf ee 24 ac 3e be f6 46 bb 16 03 03 00 4a 0a eb |..$.>..F.....J..| +000003c0 93 1a d4 ab 57 53 2c 5c 40 f1 f8 2f 6c 93 f3 2a |....WS,\@../l..*| +000003d0 6d a0 19 d4 d3 92 1a b0 ae 2d 15 9c 63 21 0f 06 |m........-..c!..| +000003e0 8b ef 7c a4 a6 dc d8 6c 63 ec 24 ce ce ce 55 fa |..|....lc.$...U.| +000003f0 de 31 53 2b df 27 4c 20 60 97 f2 62 86 33 97 b2 |.1S+.'L `..b.3..| +00000400 69 d0 aa 44 3f 1f 02 d5 16 03 03 00 14 0b e0 0c |i..D?...........| +00000410 7b 88 84 70 49 7a e4 80 7a 85 90 76 cc aa 0b 42 |{..pIz..z..v...B| +00000420 6b |k| >>> Flow 9 (client to server) -00000000 16 03 03 02 69 8a dc ce d1 c0 85 30 95 6c da 57 |....i......0.l.W| -00000010 23 05 39 c1 4c 20 08 25 a2 96 f1 55 a1 77 3b 42 |#.9.L .%...U.w;B| -00000020 9f 3d 69 9b 56 49 b4 94 8a 3c d5 85 43 f1 b4 4b |.=i.VI...<..C..K| -00000030 cd e0 67 95 83 34 90 89 81 f0 18 87 28 c0 42 88 |..g..4......(.B.| -00000040 b0 1c d1 cc 0a f0 bb 67 91 55 0b e4 ed 22 52 09 |.......g.U..."R.| -00000050 92 0b 56 ac d0 3f c9 41 05 8a 19 7d e7 9a d7 ff |..V..?.A...}....| -00000060 fa 85 f5 23 b0 98 a0 79 b1 8e 0f 90 0e c8 32 92 |...#...y......2.| -00000070 4b 6a 37 47 45 31 70 be 8b cd 7a 26 3a 3c 0b 63 |Kj7GE1p...z&:<.c| -00000080 a7 8c 00 2c 1d be eb 5c 1f 16 90 76 2b d7 82 5e |...,...\...v+..^| -00000090 31 93 40 7a e0 9a e0 4c 7d 2e e3 84 0f cb 06 7d |1.@z...L}......}| -000000a0 8d 76 41 ea 27 52 4a 77 e5 91 02 ab 11 cc 8c f0 |.vA.'RJw........| -000000b0 fe 8e ee b2 f1 ba 1e ab 0d 5c e2 2d da d5 8d f9 |.........\.-....| -000000c0 7c 22 32 e9 50 1d 88 db af c0 82 51 e0 31 14 71 ||"2.P......Q.1.q| -000000d0 ad c9 05 5d 8e 2b 75 4b 9e 74 b0 3a a9 e4 7c 82 |...].+uK.t.:..|.| -000000e0 ac 75 39 31 0a dc dc 0a 5c f4 ee 55 f2 09 c2 d2 |.u91....\..U....| -000000f0 81 c8 70 2e 8f 37 6b 90 79 5c 18 6e 38 21 c6 00 |..p..7k.y\.n8!..| -00000100 08 be ad 21 e9 40 b6 54 06 f0 61 f9 2c 71 25 0e |...!.@.T..a.,q%.| -00000110 13 6c 66 ef b6 a9 61 d0 d0 42 56 58 32 3c 9c 5a |.lf...a..BVX2<.Z| -00000120 ee 13 1d 42 8b 94 41 9c d1 2e c9 ac d4 ed 0f 04 |...B..A.........| -00000130 1c 6f 5c 30 80 12 37 c6 43 07 7e 03 50 86 24 84 |.o\0..7.C.~.P.$.| -00000140 34 2a 70 82 65 67 35 cd 5e 7c 0e 49 30 35 d4 ee |4*p.eg5.^|.I05..| -00000150 43 b7 7a c3 88 30 e5 ba 98 7f 8d 9e 08 a2 8c bb |C.z..0..........| -00000160 48 44 c2 1a 8d 7b 41 de b6 68 ae d2 8a 64 9b 6b |HD...{A..h...d.k| -00000170 8a 47 88 04 49 05 8a 94 66 da d3 90 78 6d 81 64 |.G..I...f...xm.d| -00000180 4e 6b a5 6f d2 9d 1d 36 6f a2 a3 83 0c f5 69 10 |Nk.o...6o.....i.| -00000190 37 c8 b8 59 c7 b1 5b 91 fc e3 26 37 da 14 80 8f |7..Y..[...&7....| -000001a0 d4 1e 63 51 1d 77 85 67 af 7a 7d e4 5a 27 f9 3f |..cQ.w.g.z}.Z'.?| -000001b0 75 b0 9e 2a 1d 42 29 ac d4 29 c6 0d 2f ee 35 38 |u..*.B)..)../.58| -000001c0 38 91 a4 f1 60 1b d6 49 b2 eb c4 df b6 01 99 69 |8...`..I.......i| -000001d0 06 7c ca 2d aa 15 e8 c5 4f 48 5f 77 87 4b fd 41 |.|.-....OH_w.K.A| -000001e0 cf aa 7d 96 b9 12 ee b7 b3 a2 86 5e 4f 79 08 a1 |..}........^Oy..| -000001f0 00 43 12 93 92 99 07 44 23 48 78 46 c8 fc 4a 96 |.C.....D#HxF..J.| -00000200 88 72 45 2a f4 ff 92 41 7b e5 a0 74 93 ff b8 f6 |.rE*...A{..t....| -00000210 3e e0 6a 3b 3b 12 68 50 89 d1 d3 22 e0 a1 3f ef |>.j;;.hP..."..?.| -00000220 da 18 15 5b c2 48 0e 78 d0 af ae d7 81 af 23 16 |...[.H.x......#.| -00000230 ab 71 07 9d 26 b2 8b 34 7e b2 1a 1e f4 fb 02 9a |.q..&..4~.......| -00000240 f4 15 78 a9 d2 19 94 bb 9f b0 ba 2a 21 20 dd 87 |..x........*! ..| -00000250 57 73 e7 01 08 bc 38 ce 2d 9e dc 3f f7 c4 75 aa |Ws....8.-..?..u.| -00000260 00 9d 28 43 e5 de aa 82 fb e5 ca 87 4e 6c 16 03 |..(C........Nl..| -00000270 03 00 35 e0 37 f9 95 cd 96 f9 ba 36 12 6b 35 c5 |..5.7......6.k5.| -00000280 02 9d 71 8a e5 07 d6 1c 77 6a 86 17 d0 01 9b 79 |..q.....wj.....y| -00000290 74 6b 14 27 33 2f 6d c2 af cb dd 47 71 b3 73 4d |tk.'3/m....Gq.sM| -000002a0 7f 42 3e 7f 86 6e 63 ed 16 03 03 00 98 7f ba 78 |.B>..nc........x| -000002b0 bf a3 d4 02 cb 19 0d 1f 48 bf 4d 9f d0 37 3a c9 |........H.M..7:.| -000002c0 c1 76 6e fb 9a 69 63 0a a1 76 13 2d ea 52 38 18 |.vn..ic..v.-.R8.| -000002d0 71 89 9a f5 02 2e 44 94 72 6d 08 e1 89 9a e1 4c |q.....D.rm.....L| -000002e0 ee 2f 15 9c 0d b6 67 1e 0c 17 b0 e9 03 7d 66 1c |./....g......}f.| -000002f0 28 6b 57 6d c8 49 5d ef ca 4c 51 59 ae 17 55 97 |(kWm.I]..LQY..U.| -00000300 54 f1 f5 64 19 ec 36 27 96 33 0e fd 65 42 ac 50 |T..d..6'.3..eB.P| -00000310 bb cf f9 da fe 98 3d 83 79 a0 24 0d 9f 91 5c b0 |......=.y.$...\.| -00000320 5c c5 04 b4 90 53 c3 8b b5 29 c5 73 7f 04 c6 55 |\....S...).s...U| -00000330 93 4a 08 67 8f f7 a8 ba a8 e2 62 09 85 d3 47 b9 |.J.g......b...G.| -00000340 27 bd 6c 81 95 14 03 03 00 11 88 9b 21 1e 06 0a |'.l.........!...| -00000350 fa 8a 9e 4e d9 7a b3 a5 45 7a 96 16 03 03 00 20 |...N.z..Ez..... | -00000360 6f a0 f0 cf 0b 2b c2 d1 36 d8 64 2b 72 86 7b ab |o....+..6.d+r.{.| -00000370 c7 86 5d c3 67 ec d6 c0 32 4d b8 1f fa d9 3a af |..].g...2M....:.| +00000000 16 03 03 02 69 97 93 8b 02 bb 85 f7 ec fd ae 99 |....i...........| +00000010 d2 31 6c 04 64 02 ee dd 86 ea c2 9c 40 22 5a fc |.1l.d.......@"Z.| +00000020 6e 6e 66 30 1d bb 71 40 90 b1 c2 1c 38 53 37 21 |nnf0..q@....8S7!| +00000030 87 a2 df c3 68 b9 c1 90 46 df 73 f8 ba 20 7e 83 |....h...F.s.. ~.| +00000040 49 2d d8 3c a4 4a 4b 41 70 5d ee 65 68 31 3d f4 |I-.<.JKAp].eh1=.| +00000050 44 ce 10 be d8 d1 bc 21 25 f0 66 36 f0 b9 8b b9 |D......!%.f6....| +00000060 89 cc 0c b8 b2 67 ef 86 24 ed 54 2e e8 b7 b3 87 |.....g..$.T.....| +00000070 c9 58 fa db 3d 0a 78 bb 68 fa 86 26 bd 8b aa 4c |.X..=.x.h..&...L| +00000080 f5 8a f8 6a 82 b1 12 79 39 20 71 c4 3f 6a fc 9c |...j...y9 q.?j..| +00000090 4a 44 e0 ea 7e 06 35 23 77 dd 07 0e c1 89 85 19 |JD..~.5#w.......| +000000a0 98 7b e0 31 2d d0 a2 de be a9 fe 1a 8d ef 45 52 |.{.1-.........ER| +000000b0 5c ee 4e 7f 0d 69 41 9b 84 a6 84 6c 41 42 31 8c |\.N..iA....lAB1.| +000000c0 b8 24 0d cc 54 a6 81 dd 8b 3a 8a 6c ef 75 8c 6b |.$..T....:.l.u.k| +000000d0 01 ce 6a ea ae 67 c3 96 8b b6 42 20 c9 e6 7b 2c |..j..g....B ..{,| +000000e0 79 fe 1c 25 42 55 95 65 a4 af 16 ec aa 49 e4 fa |y..%BU.e.....I..| +000000f0 e5 38 5b c2 82 02 ca 34 8a 20 27 c3 46 55 79 ad |.8[....4. '.FUy.| +00000100 31 18 27 ed 14 dc dc ab 75 ba 1f 4c f7 1c 74 f3 |1.'.....u..L..t.| +00000110 d4 a3 52 f8 39 fe 21 d9 fc 08 7f c6 2c 86 54 90 |..R.9.!.....,.T.| +00000120 c1 2e b0 de 84 25 eb 36 16 4e 96 c5 fc 6f 83 2b |.....%.6.N...o.+| +00000130 3e ad 30 6b ae 33 b2 03 87 2f b7 33 14 50 37 a0 |>.0k.3.../.3.P7.| +00000140 19 cf 41 1c 68 c9 b8 5c 29 f6 34 db 13 40 10 16 |..A.h..\).4..@..| +00000150 7c 22 42 38 d5 43 4f 46 4d ae bd e2 7d 78 5f b6 ||"B8.COFM...}x_.| +00000160 12 ba 19 5a 18 ae b7 76 d6 ae 71 c3 5b c4 b5 3a |...Z...v..q.[..:| +00000170 b5 b6 52 9b 0b 92 30 41 4d a0 f4 62 2c c7 4f 27 |..R...0AM..b,.O'| +00000180 04 f5 7e 77 04 89 11 2a e0 0c 5e 21 3b 75 13 bf |..~w...*..^!;u..| +00000190 1f 48 ed 4d 05 b3 67 f3 d8 71 99 fb 23 c5 0f fd |.H.M..g..q..#...| +000001a0 47 7c 36 f8 e0 25 53 f4 15 bd 77 db f5 71 a1 6e |G|6..%S...w..q.n| +000001b0 6a 1a 06 a1 8a 5d 2b 28 89 82 7b 29 aa b1 68 a6 |j....]+(..{)..h.| +000001c0 fb 29 a8 cb ee e0 71 de 52 b8 8a 57 63 ff 74 a5 |.)....q.R..Wc.t.| +000001d0 ca 8c b5 44 23 74 ab 86 74 cf 82 0b fc 23 90 95 |...D#t..t....#..| +000001e0 3d 83 87 5a aa af 5d d1 c6 4b dc b0 f3 0f 44 57 |=..Z..]..K....DW| +000001f0 ca 47 a1 28 64 64 4d 81 15 11 92 5a 8c b9 8d ef |.G.(ddM....Z....| +00000200 a9 18 58 67 c7 c3 3b a7 9d 41 be 74 67 cb a8 3e |..Xg..;..A.tg..>| +00000210 3d a4 b0 4e 92 15 c1 4a 38 6d 48 ba 57 4b 42 a9 |=..N...J8mH.WKB.| +00000220 2c de de 6a 5b 60 3e 9d 09 5e 8e d4 97 4a 31 52 |,..j[`>..^...J1R| +00000230 47 5c ce bc f8 14 49 78 6b 5a 36 aa 3b c7 bc e7 |G\....IxkZ6.;...| +00000240 59 17 a1 18 d3 b1 54 e8 54 8a 1c 07 a5 3b 9f bd |Y.....T.T....;..| +00000250 d1 60 7d e8 78 8c be b2 ea 20 26 59 65 ef 70 71 |.`}.x.... &Ye.pq| +00000260 98 73 0c 43 cb 3a bc 61 8a f8 19 a4 89 0b 16 03 |.s.C.:.a........| +00000270 03 00 35 28 53 40 d2 93 99 84 8e d8 fc f1 4a 3e |..5(S@........J>| +00000280 22 26 d3 2b c0 e9 32 d4 49 7b 7d 19 61 29 ab 28 |"&.+..2.I{}.a).(| +00000290 e7 e4 a2 13 2e 5a a8 7f ef e7 19 7b 9c de fc 21 |.....Z.....{...!| +000002a0 2a 3d f0 3a d3 dc 17 d2 16 03 03 00 98 30 c7 f4 |*=.:.........0..| +000002b0 b6 60 3b 87 88 e1 0e 26 d2 34 49 de 8c b8 99 35 |.`;....&.4I....5| +000002c0 fe 6f 11 4b 8b ab d9 ce 11 b1 f5 05 8d 6b c1 91 |.o.K.........k..| +000002d0 c8 69 cb 2b 04 99 12 ed 8b 7a 63 e2 9c 5d 80 63 |.i.+.....zc..].c| +000002e0 57 74 8f 1f 9c f4 6b cb 51 57 6b 33 3e 1b 81 54 |Wt....k.QWk3>..T| +000002f0 73 54 5c 28 f1 fe 2f 88 41 ea 2b 52 30 93 0e 98 |sT\(../.A.+R0...| +00000300 fe b1 59 0e 01 26 06 f0 fd 77 cb 59 ec b7 4c 4f |..Y..&...w.Y..LO| +00000310 cd 40 c0 36 11 d2 dd c8 1a 40 e2 ba 9c d9 39 99 |.@.6.....@....9.| +00000320 9a d3 9b 37 ee 76 8b 22 fb 42 a8 90 c6 8d 92 4b |...7.v.".B.....K| +00000330 57 83 33 04 75 6a 79 69 8f f9 4d fd d6 bd 01 76 |W.3.ujyi..M....v| +00000340 98 36 7d b2 b5 14 03 03 00 11 85 15 d7 33 6d 47 |.6}..........3mG| +00000350 80 84 38 df a3 c2 91 0b 1c e0 82 16 03 03 00 20 |..8............ | +00000360 0d cc f8 79 c6 13 4e 81 b7 a7 2d 03 18 7e 9d 24 |...y..N...-..~.$| +00000370 2e 89 d7 7d bf ab a7 1d 2f 15 c1 80 3d f2 89 68 |...}..../...=..h| >>> Flow 10 (server to client) -00000000 14 03 03 00 11 b4 79 7e 62 ea ea f7 37 1d a4 65 |......y~b...7..e| -00000010 9d 02 95 b8 4a 6c 16 03 03 00 20 6a 45 d1 d0 ff |....Jl.... jE...| -00000020 fa 9f 6a ea d5 0d 27 b6 e7 15 8b e8 5b f9 3c d0 |..j...'.....[.<.| -00000030 32 ff 81 24 9a de 1c 31 6a 48 f8 17 03 03 00 19 |2..$...1jH......| -00000040 a9 07 ab fb 37 2f 88 0c 93 4a 0c 34 08 26 39 8c |....7/...J.4.&9.| -00000050 22 00 1b 36 3c 6d 0c 49 61 16 03 03 00 14 bb 63 |"..6..p..t.q.t.....| +00000040 77 fa 0d b1 b4 fc b6 5b d0 73 1a 94 d0 6c 05 7d |w......[.s...l.}| +00000050 1a fa 6e d4 00 4e 2e 91 e0 16 03 03 00 14 f0 79 |..n..N.........y| +00000060 e5 37 1f 13 e6 a0 d3 4a 66 a9 e8 03 71 5f 67 37 |.7.....Jf...q_g7| +00000070 aa b6 |..| >>> Flow 11 (client to server) -00000000 16 03 03 01 1a a4 4c dc 47 09 04 ab bb ca 49 f2 |......L.G.....I.| -00000010 63 36 35 fb e3 3f ad ae 82 2a 9b 87 cc 0c 2e ea |c65..?...*......| -00000020 18 af ad e9 ea 7a c8 45 de c6 9b 0e e0 32 26 95 |.....z.E.....2&.| -00000030 ba e3 57 9e 27 ce ff 36 43 a3 bd 79 47 6c 02 86 |..W.'..6C..yGl..| -00000040 81 44 ac b3 c6 21 d8 fa 8c 69 43 b7 66 70 ea 24 |.D...!...iC.fp.$| -00000050 12 1b ac 44 d2 49 e3 5a d1 0e 50 76 46 4f 58 51 |...D.I.Z..PvFOXQ| -00000060 21 4c f8 20 63 60 c0 20 3a 12 e5 0b 86 e3 03 2c |!L. c`. :......,| -00000070 e1 fc 63 e4 44 d4 67 95 aa af 22 3d 40 7b 4e 12 |..c.D.g..."=@{N.| -00000080 98 7d 05 00 57 50 d5 3a d7 af dd 96 0f ac 77 63 |.}..WP.:......wc| -00000090 f8 1c b0 9c d0 96 9f 20 a1 48 55 aa dc 69 fb b7 |....... .HU..i..| -000000a0 67 58 ff 27 de 22 ea 66 48 32 56 1f ef 12 3f 44 |gX.'.".fH2V...?D| -000000b0 38 af ae 4b c2 16 bb c8 f1 fe 13 d7 05 66 de 08 |8..K.........f..| -000000c0 f3 4d 5c a6 e1 2d 0d c3 ce 50 7b 01 40 49 0f 83 |.M\..-...P{.@I..| -000000d0 97 c0 37 a2 6c 2b 64 a9 40 0e e1 7b f4 6e e1 cc |..7.l+d.@..{.n..| -000000e0 1a 5f 0b c5 69 dc dc db 0e a2 22 7b cf ca 73 81 |._..i....."{..s.| -000000f0 fc 47 47 c7 76 18 8e ae 55 6c fe 5e 5e 33 84 9c |.GG.v...Ul.^^3..| -00000100 4c 1b f8 21 29 3c 47 1b c8 01 38 7d c2 50 45 1c |L..!)...N...<...c.h| +000000e0 55 01 97 e6 d1 e1 b8 ae 2a c6 e7 4c fd e5 40 76 |U.......*..L..@v| +000000f0 11 fa 18 12 db 98 d5 d9 61 8f 33 66 38 95 ba ae |........a.3f8...| +00000100 b6 1d 8e 03 27 6c 78 7a 89 82 0f ca 56 d4 19 ae |....'lxz....V...| +00000110 e2 79 6b 6d 80 b8 ce fc 3e 42 5a c7 e7 05 3b eb |.ykm....>BZ...;.| +00000120 a1 33 a0 56 92 e3 10 e6 ff 17 9b 2d 8e 40 56 fc |.3.V.......-.@V.| +00000130 76 9c a6 32 9f 7a a2 d8 e9 77 2f 9f e9 |v..2.z...w/..| >>> Flow 12 (server to client) -00000000 16 03 03 00 85 bb 34 66 c0 a3 8c 2b 2c fe fe 82 |......4f...+,...| -00000010 53 a1 07 1f 06 db 41 94 ac 21 f2 c4 23 0e b6 48 |S.....A..!..#..H| -00000020 4d 16 97 2a 79 dd 95 4c 93 7f e4 8c 94 90 d4 02 |M..*y..L........| -00000030 3c 44 b4 80 80 7b 45 84 53 3f 6b 9f f6 b6 d3 0c |.c....>TP..alX | -00000200 da a8 5a f7 46 9d a3 57 a1 60 72 59 82 dd f7 08 |..Z.F..W.`rY....| -00000210 9e 48 16 8d b1 c0 f4 d2 e0 4e 5d 3c bf 23 88 0f |.H.......N]<.#..| -00000220 99 90 b0 a9 7e df 0b f5 1a 31 9e 59 e1 05 43 4e |....~....1.Y..CN| -00000230 4f d9 a5 b1 00 2e f2 c8 10 2c 73 ec c4 62 b8 c3 |O........,s..b..| -00000240 59 53 ce 38 37 9d c3 f6 77 36 34 f2 07 a6 21 1f |YS.87...w64...!.| -00000250 62 56 08 d3 ed ae 51 05 4d ed ef 7e 77 c5 7d ae |bV....Q.M..~w.}.| -00000260 b6 aa 74 e9 9a df 5d 89 c2 9f 07 75 a0 c2 35 2d |..t...]....u..5-| -00000270 cc 13 c5 a9 17 85 79 b6 45 0c 82 56 0d 19 9e bc |......y.E..V....| -00000280 e7 1a a6 cc 20 6f f9 7c 29 54 2f 5a 92 1f c0 8b |.... o.|)T/Z....| -00000290 9c a7 a3 85 43 f2 4c e7 c5 e3 af 6e 40 f4 14 d4 |....C.L....n@...| -000002a0 b8 26 5f ac d7 44 16 6d 40 d5 80 c5 49 df 8d fe |.&_..D.m@...I...| -000002b0 06 1c 7c 19 49 94 50 6f e8 8c e0 59 80 9a a0 0e |..|.I.Po...Y....| -000002c0 50 3f 03 de c9 30 88 15 91 83 4e a8 df c3 65 75 |P?...0....N...eu| -000002d0 cd 30 3e 7d 32 4a d9 ff 72 1e 1d 90 50 f3 67 8a |.0>}2J..r...P.g.| -000002e0 6a 94 c3 92 9a d4 0b 20 7e 61 98 6e db d0 71 4a |j...... ~a.n..qJ| -000002f0 8b 43 82 7e 76 e6 93 f7 16 03 03 00 bc e6 e6 85 |.C.~v...........| -00000300 a8 2c 74 47 10 a3 27 26 f7 46 fb da fa 6a 93 2c |.,tG..'&.F...j.,| -00000310 b1 14 b2 90 d3 4e 94 42 c4 37 6d 4d 43 73 b4 a7 |.....N.B.7mMCs..| -00000320 17 c1 3c 62 5d e4 c4 04 7c f7 13 39 9f a8 3f 05 |....d....| -00000390 e5 f8 f3 75 54 65 f4 6f e9 c8 eb a2 6c 06 98 fd |...uTe.o....l...| -000003a0 e9 bb a2 93 ab ee 0b fa c7 b4 fa e1 91 34 a9 a7 |.............4..| -000003b0 b9 14 16 25 32 88 09 3e b1 16 03 03 00 14 d0 c0 |...%2..>........| -000003c0 54 b2 37 35 9b cf 51 71 28 b2 d6 86 05 16 ad a0 |T.75..Qq(.......| -000003d0 18 e7 |..| +00000000 16 03 03 00 85 12 4a cc dd af 7e 9f 8f c0 5e dc |......J...~...^.| +00000010 db 49 95 90 d0 d4 78 49 8b 34 5c 22 7f f8 9b 42 |.I....xI.4\"...B| +00000020 99 79 d3 d8 f2 ad 9e e1 67 80 84 8d b5 48 8c 9a |.y......g....H..| +00000030 ab 68 65 81 28 16 75 77 e6 57 8a 52 ba ab 2e 3d |.he.(.uw.W.R...=| +00000040 27 1c 90 fb 75 99 8f 2b 6b 4e 2c 78 3a f8 5b 25 |'...u..+kN,x:.[%| +00000050 55 df c6 83 c6 0f 01 f0 00 b0 8e 02 51 62 aa 91 |U...........Qb..| +00000060 1b 21 b7 2e b3 11 b6 5d c4 38 04 3c af ad 3e a3 |.!.....].8.<..>.| +00000070 f5 ec 8f 7f 6f 9d 7a eb 22 51 2c 9e 08 af 9d ab |....o.z."Q,.....| +00000080 a7 84 cb f8 68 78 9b 58 50 fa 16 03 03 02 69 07 |....hx.XP.....i.| +00000090 17 f9 21 47 17 ee f7 d3 06 98 d4 32 e5 a1 c8 f0 |..!G.......2....| +000000a0 ec eb 61 80 7f 2c 85 66 27 19 cd 8e 6f ca da 0f |..a..,.f'...o...| +000000b0 c5 34 76 9f b0 96 5d 6d 67 bd 17 7d 96 62 4e ce |.4v...]mg..}.bN.| +000000c0 a1 0e 40 79 6d 25 8c 81 41 a3 2d 0a ba cb d9 35 |..@ym%..A.-....5| +000000d0 4e a7 fc 74 14 a2 c6 bd 57 46 6a d0 11 37 72 24 |N..t....WFj..7r$| +000000e0 19 78 e5 86 51 04 f4 10 47 2f a5 d9 e6 44 47 e0 |.x..Q...G/...DG.| +000000f0 1f 1b ce ea 6f c7 df 17 6a 68 69 01 30 73 e2 48 |....o...jhi.0s.H| +00000100 61 50 3d 7d 85 aa 5f 74 4c 18 33 d0 e1 95 1b 9a |aP=}.._tL.3.....| +00000110 13 30 a2 f4 8e 8b 58 07 15 9b c8 74 ce 58 5b c1 |.0....X....t.X[.| +00000120 03 75 97 39 5b 00 ee 5a d6 ba 21 62 6a 19 41 0d |.u.9[..Z..!bj.A.| +00000130 4f 77 46 a0 2e 2d c3 77 50 2c dc 3f 04 32 6c be |OwF..-.wP,.?.2l.| +00000140 7f 73 c2 58 50 ac 78 eb b9 b0 a0 2e b7 44 27 0f |.s.XP.x......D'.| +00000150 e8 0d 76 d5 a7 4e 9f df 36 bb 63 48 ce f6 2f 9c |..v..N..6.cH../.| +00000160 41 a6 76 38 63 72 a0 33 0f 88 94 0d a2 6e 46 d6 |A.v8cr.3.....nF.| +00000170 57 25 33 e1 36 a0 bf 56 b8 d5 d0 04 2d 23 e8 ac |W%3.6..V....-#..| +00000180 93 2c 46 ac 1f e5 2a 48 88 0e 0d 11 67 fe de 21 |.,F...*H....g..!| +00000190 31 e8 68 9b 7c 4c 49 b8 27 5a c4 89 a4 4c 09 f0 |1.h.|LI.'Z...L..| +000001a0 de 5f 9c 60 bd 54 e5 96 2c bf a1 86 3a cb 5b 3f |._.`.T..,...:.[?| +000001b0 15 3f 4a b2 43 c9 88 0b 49 05 2d d7 61 43 dd 1c |.?J.C...I.-.aC..| +000001c0 a9 4d 52 17 98 4d 5b a7 cd 27 52 60 21 57 ed 09 |.MR..M[..'R`!W..| +000001d0 29 0d c9 a1 b3 6f 11 3a da 17 00 73 22 4e 7f 40 |)....o.:...s"N.@| +000001e0 6f 0f 7a a7 7e 73 b8 be 08 b6 10 b3 bb 70 f5 4a |o.z.~s.......p.J| +000001f0 96 aa 07 9f e2 68 04 7c 01 e3 92 f9 15 cd 97 b5 |.....h.|........| +00000200 4e 87 eb 5d 74 db 8b 5a 72 c1 7c b2 b8 73 83 2d |N..]t..Zr.|..s.-| +00000210 5f d9 d2 62 b2 db 20 9a f2 54 ad d4 66 6c 52 9c |_..b.. ..T..flR.| +00000220 85 ef a4 90 ca e0 c4 4f 1f 82 0e 80 f5 02 56 e2 |.......O......V.| +00000230 d0 78 fd 7e c6 73 89 12 5a 11 2e c9 6d a0 6f 8f |.x.~.s..Z...m.o.| +00000240 ea a1 4c 88 28 ee 66 79 9c 99 ff 6b e6 e7 f7 bf |..L.(.fy...k....| +00000250 1f ef 1f b9 65 46 1e 41 d8 33 13 a1 29 d1 1b 5f |....eF.A.3..).._| +00000260 b6 56 3c bf 28 02 d1 5b b7 77 58 9e cd 4c 5f ac |.V<.(..[.wX..L_.| +00000270 2e 60 9e 0c 20 6a 0a 31 60 0b fb a4 75 20 5d c4 |.`.. j.1`...u ].| +00000280 68 a6 94 bd 99 9c bb 00 57 9c 2e 55 e1 ca d1 0c |h.......W..U....| +00000290 40 1f 69 4f 88 79 da 4f d1 b2 6f 1a 92 77 90 71 |@.iO.y.O..o..w.q| +000002a0 34 d1 90 f7 c9 fc c9 ac 23 76 d3 2d 6c 54 fa 28 |4.......#v.-lT.(| +000002b0 a5 2b df 1d f5 39 21 c1 4c 9c 53 08 f5 fc 19 e6 |.+...9!.L.S.....| +000002c0 29 d4 c2 8b b1 f9 db ae 1f 29 ee 34 8f b0 fe 02 |)........).4....| +000002d0 06 6a 3e a9 e0 2e e1 71 f8 63 15 f0 ac e5 6b f3 |.j>....q.c....k.| +000002e0 db 3d b1 de c5 26 a5 18 22 d8 3a 74 1f 57 43 b5 |.=...&..".:t.WC.| +000002f0 9e f6 40 cc fd ba 68 82 16 03 03 00 bc 0a 05 54 |..@...h........T| +00000300 61 ad be a6 2a 6e ee f3 b7 fb 50 9f c5 f8 7d b3 |a...*n....P...}.| +00000310 9a 85 ed 6f 36 5d f3 e5 05 1a c5 b9 6f 9f 2a 99 |...o6]......o.*.| +00000320 75 d0 49 37 eb 82 fb e0 da bf 8f 6d 0e ab 11 c9 |u.I7.......m....| +00000330 0d e1 d0 1a cd b1 e7 c9 c2 6e f4 90 ae 56 ba d2 |.........n...V..| +00000340 65 af f4 7f c2 3c e8 d7 f6 49 57 61 c8 02 0e 72 |e....<...IWa...r| +00000350 e5 d8 2f 3e f2 d9 4c 64 32 1a 95 f9 f4 f8 47 9f |../>..Ld2.....G.| +00000360 c5 63 6b f2 44 48 7f 69 ae 12 f7 ca ff 60 f0 51 |.ck.DH.i.....`.Q| +00000370 9f 70 7b d9 86 03 fd 9d d5 29 35 c1 bd 4d fe 45 |.p{......)5..M.E| +00000380 e1 e0 15 dd 2d f4 20 54 50 61 ba d9 8c bf e6 f1 |....-. TPa......| +00000390 4a 08 e1 c8 f7 24 f0 5f 41 4c 8e f3 fd 60 31 89 |J....$._AL...`1.| +000003a0 d6 72 a9 e5 14 65 83 c1 ae be e7 b3 89 99 25 87 |.r...e........%.| +000003b0 20 13 1b 0a a8 3d d3 dc 5c 16 03 03 00 14 71 4c | ....=..\.....qL| +000003c0 20 9c de 36 cc ed 88 6f c8 84 5a 03 ee 1d cd 3c | ..6...o..Z....<| +000003d0 c7 88 |..| >>> Flow 13 (client to server) -00000000 16 03 03 00 35 e8 18 a5 be 6e 3b 37 5b d3 81 d3 |....5....n;7[...| -00000010 ad 0b 90 2e e0 df 2b 7f c4 ec 54 58 ef 85 e3 13 |......+...TX....| -00000020 41 07 50 d1 06 9b 3e a3 71 30 bf 7d 0c 7a bd 1e |A.P...>.q0.}.z..| -00000030 b6 e9 1e 10 0d 18 e3 b3 1c 38 14 03 03 00 11 bf |.........8......| -00000040 b3 65 ae 3b e6 c2 ad 30 83 75 65 c0 2b 0d 4b 11 |.e.;...0.ue.+.K.| -00000050 16 03 03 00 20 c6 cb f8 69 c3 bc 36 74 ff 8a 1f |.... ...i..6t...| -00000060 02 ef 32 37 fe 4f 14 51 d2 11 6a 98 05 4c 8c f6 |..27.O.Q..j..L..| -00000070 75 05 f9 39 2c |u..9,| +00000000 16 03 03 00 35 12 be 58 29 49 7c 4d 6c 24 a0 76 |....5..X)I|Ml$.v| +00000010 72 a5 f8 e2 2b 61 fc a6 e3 97 00 cc 3f 52 26 9b |r...+a......?R&.| +00000020 0e 1c 0b 05 2a f3 86 79 13 2b 33 5f 99 f0 91 5f |....*..y.+3_..._| +00000030 95 88 fe d1 0d 84 a7 5b f0 7b 14 03 03 00 11 82 |.......[.{......| +00000040 33 3a 3a d4 72 53 72 1a 90 d1 d1 14 18 c6 2d 03 |3::.rSr.......-.| +00000050 16 03 03 00 20 47 44 78 28 c6 68 5e 4e 7f ae 14 |.... GDx(.h^N...| +00000060 3c 37 64 45 6c 91 29 ff 19 b6 dd 09 6e 2e f8 b8 |<7dEl.).....n...| +00000070 91 ed 60 9f ec |..`..| >>> Flow 14 (server to client) -00000000 14 03 03 00 11 a0 fa 14 67 3f 54 1b 61 89 ed db |........g?T.a...| -00000010 9c 66 9f 49 77 2d 16 03 03 00 20 ca 47 f0 57 8c |.f.Iw-.... .G.W.| -00000020 3e 52 e6 e2 6c 01 cb 16 05 68 5e 19 12 ca 80 48 |>R..l....h^....H| -00000030 dc e9 ed 41 33 08 01 ef 6e b0 a3 17 03 03 00 19 |...A3...n.......| -00000040 d9 c8 68 e8 27 3d cf c0 33 71 55 a9 6a b4 6d a5 |..h.'=..3qU.j.m.| -00000050 da 8d bb 34 94 4f b1 c6 22 |...4.O.."| +00000000 14 03 03 00 11 9b 5d c3 de 7d 32 e1 a2 2c d3 d7 |......]..}2..,..| +00000010 1b c9 cb bd d3 5b 16 03 03 00 20 21 50 5c ba c2 |.....[.... !P\..| +00000020 c3 d5 53 42 9c cf 93 86 e3 29 18 f0 4b 6c d9 a7 |..SB.....)..Kl..| +00000030 17 d6 dc b9 7c 82 9e 61 c1 dd ea 17 03 03 00 19 |....|..a........| +00000040 59 bd 70 5b d8 4e fd 09 1c 17 c1 82 6a 85 8b fc |Y.p[.N......j...| +00000050 2e 59 87 80 13 dc 3e 7a 01 |.Y....>z.| >>> Flow 15 (client to server) -00000000 15 03 03 00 12 15 66 43 1e 60 21 d1 f6 94 34 3e |......fC.`!...4>| -00000010 ee 90 fc 87 45 2a f5 |....E*.| +00000000 15 03 03 00 12 d9 80 6a 95 a6 37 81 5b d0 78 d3 |.......j..7.[.x.| +00000010 4a 02 cc a6 ba b8 96 |J......| diff --git a/src/crypto/tls/testdata/Client-TLSv12-RenegotiateTwiceRejected b/src/crypto/tls/testdata/Client-TLSv12-RenegotiateTwiceRejected index 7698b6791d..3d57311bb2 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-RenegotiateTwiceRejected +++ b/src/crypto/tls/testdata/Client-TLSv12-RenegotiateTwiceRejected @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 e3 fe 9a 75 3b |....]...Y.....u;| -00000010 82 ac ff 66 ee c2 e9 75 d9 29 cc 89 6d e0 27 19 |...f...u.)..m.'.| -00000020 62 07 0b 0b c0 49 df 17 26 af 63 20 2a 95 69 54 |b....I..&.c *.iT| -00000030 3c 5d d9 67 05 4c 45 77 d0 d9 46 29 ed 25 fd 7d |<].g.LEw..F).%.}| -00000040 b4 ef 39 d2 ee 3b a3 88 85 c5 78 9a cc a8 00 00 |..9..;....x.....| +00000000 16 03 03 00 5d 02 00 00 59 03 03 0c 17 84 76 1d |....]...Y.....v.| +00000010 f7 2f 64 9b 6a be 05 1b 7c 96 bf f1 d3 33 37 d2 |./d.j...|....37.| +00000020 4b 33 2d f9 16 12 0a 87 18 60 71 20 36 34 57 1e |K3-......`q 64W.| +00000030 53 7d 7c 52 c6 be a5 35 41 f6 72 65 3c 78 42 a5 |S}|R...5A.re..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 ca 74 42 |............ .tB| -000002d0 03 67 f2 31 ac 68 dd 2c db 23 7d 2c 84 df e9 50 |.g.1.h.,.#},...P| -000002e0 ff ef d4 a1 fa a4 5b 0b 0b 73 20 b7 0e 08 04 00 |......[..s .....| -000002f0 80 41 60 3d b1 1c 1d 14 8a 0a 3e 5c ea ca ce 07 |.A`=......>\....| -00000300 d4 45 18 6c 16 52 40 6f b0 f4 33 38 d7 cf 11 75 |.E.l.R@o..38...u| -00000310 08 4e 7d 8b cc 64 8c 79 dd 42 fa 43 2c 9e 84 91 |.N}..d.y.B.C,...| -00000320 e9 d5 bc 9f 84 2d 10 4b db 4e a6 be 37 e9 2e 34 |.....-.K.N..7..4| -00000330 d7 3e a7 17 80 b5 cd 37 04 2a 6c 2a cc 5f 0c a1 |.>.....7.*l*._..| -00000340 ff c2 31 86 17 50 3a 47 4d 99 49 94 9c 11 12 e2 |..1..P:GM.I.....| -00000350 70 fa d1 f4 7e 3a f2 3a df 16 34 45 0a b2 7b 73 |p...~:.:..4E..{s| -00000360 fa 59 23 85 88 74 2b e6 1e cb c7 00 f5 96 c8 8a |.Y#..t+.........| -00000370 02 16 03 03 00 04 0e 00 00 00 |..........| +000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 02 b5 bb |............ ...| +000002d0 3d 94 26 c2 04 4c 2d e6 e3 d0 e5 78 c1 00 eb de |=.&..L-....x....| +000002e0 df 23 8a f3 d7 67 0c d1 0b 5e 43 84 4f 08 04 00 |.#...g...^C.O...| +000002f0 80 3d b9 6b 00 6e e7 cf 4a 27 67 de a2 d4 a4 ad |.=.k.n..J'g.....| +00000300 37 19 a3 66 ab 1e 92 7f 99 74 6b 4a 5e 3d e6 3b |7..f.....tkJ^=.;| +00000310 1a 0a d1 fe 2a 3a c9 08 d9 0a 1a 7f c1 83 fa 9e |....*:..........| +00000320 9d 8a 5e 2b 52 3a ef 09 91 63 db 4e 19 9c 59 ef |..^+R:...c.N..Y.| +00000330 a9 1c 23 12 8b d5 67 74 05 b7 c4 12 bd 1d 63 9a |..#...gt......c.| +00000340 97 a7 9c fe 94 ed 81 96 a6 e6 30 02 11 c2 97 eb |..........0.....| +00000350 0a f6 14 e7 d4 d3 11 5d 8f ff 77 f1 19 03 a3 16 |.......]..w.....| +00000360 1e 0d 0e e1 9b f6 bd de 7e 40 d5 36 56 dd 85 44 |........~@.6V..D| +00000370 5a 16 03 03 00 04 0e 00 00 00 |Z.........| >>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| -00000030 16 03 03 00 20 0a a7 0c 5f 47 d1 7c 5e ea 63 82 |.... ..._G.|^.c.| -00000040 83 27 6c bc 29 20 25 ec 3d 15 2d 59 94 e7 9d 2c |.'l.) %.=.-Y...,| -00000050 8b 4e 95 85 fc |.N...| +00000030 16 03 03 00 20 c3 8e 95 b8 d7 c3 39 43 fd 47 5f |.... ......9C.G_| +00000040 b5 3f 9e a3 7a a2 82 d5 82 cf d7 b7 9e 95 9f ed |.?..z...........| +00000050 fc f5 76 25 96 |..v%.| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 20 03 84 99 6b f7 |.......... ...k.| -00000010 3e 44 b1 96 6a 09 75 bf 26 4b 67 30 c4 e9 86 74 |>D..j.u.&Kg0...t| -00000020 4d e1 e3 9b fa 15 8e 1e 72 f9 5a |M.......r.Z| +00000000 14 03 03 00 01 01 16 03 03 00 20 1e d5 ca 57 c6 |.......... ...W.| +00000010 43 4f d3 11 44 d1 f8 69 d3 9e 22 17 d6 c1 7f aa |CO..D..i..".....| +00000020 ad d6 1f 08 67 9c cd 4f 9f 53 c0 |....g..O.S.| >>> Flow 5 (client to server) -00000000 17 03 03 00 16 68 29 2f 1b 1c 9d 28 6e b6 e5 09 |.....h)/...(n...| -00000010 4a 77 96 23 20 da 67 9e 14 ec 6b |Jw.# .g...k| +00000000 17 03 03 00 16 8d fa 48 d3 57 aa d7 8e 75 8b ff |.......H.W...u..| +00000010 bd 03 ea df 3e da d3 15 ec 12 67 |....>.....g| >>> Flow 6 (server to client) -00000000 16 03 03 00 14 66 e8 13 d1 b5 13 cf 5c 71 7b d9 |.....f......\q{.| -00000010 63 29 3d be 68 9f f4 ad 7b |c)=.h...{| +00000000 16 03 03 00 14 e9 4d ee 89 18 5f bd d8 15 dd 1f |......M..._.....| +00000010 a4 94 98 3b 96 75 3c 2b bc |...;.u<+.| >>> Flow 7 (client to server) -00000000 16 03 03 01 1a cb 21 91 08 de 08 87 fc 63 10 93 |......!......c..| -00000010 24 a3 83 e8 99 07 d5 03 19 61 4e 8e df dd d0 f6 |$........aN.....| -00000020 50 3c fd 14 23 67 cd 74 ad 87 9b b7 8f ee a2 23 |P<..#g.t.......#| -00000030 6c 2f 90 18 f4 01 6b 31 fe ca f7 65 f9 64 5a bc |l/....k1...e.dZ.| -00000040 49 3b 25 4c 35 59 50 f2 bc 70 cb 24 2f ec 47 12 |I;%L5YP..p.$/.G.| -00000050 b6 16 22 9e ce 3b fb 17 f9 59 4e 2f 5c 03 90 47 |.."..;...YN/\..G| -00000060 d5 e8 e9 eb d9 55 bf 8f 28 e8 72 e5 15 21 42 ba |.....U..(.r..!B.| -00000070 86 65 ac b4 f5 53 7e 98 38 39 b5 7d 2a 14 d6 7b |.e...S~.89.}*..{| -00000080 3e 69 9d dc 43 33 ed 0b 8a 77 14 54 9d b0 da 88 |>i..C3...w.T....| -00000090 3b 75 50 01 07 02 99 36 39 4f 01 ee 02 cf 05 a5 |;uP....69O......| -000000a0 71 75 03 3a a5 5c c4 ce 0e 1d ba dd 9d 79 c1 84 |qu.:.\.......y..| -000000b0 81 69 7c cd 63 a4 20 a3 a2 13 8e 6e d7 01 29 8d |.i|.c. ....n..).| -000000c0 35 e2 fa 3d 74 ea 40 06 7e 0b 2d ab 3c 54 73 ef |5..=t.@.~.-....&.FU........| -00000110 43 bd e5 9f 5c 35 02 25 54 17 89 c0 be ab bc |C...\5.%T......| +00000000 16 03 03 01 38 1c b1 26 7d 48 7e 75 46 3c 85 68 |....8..&}H~uF<.h| +00000010 1c ef 2b 61 c1 f1 c5 dc 38 61 a1 2f a1 f1 3d b8 |..+a....8a./..=.| +00000020 ab 39 ee c6 c1 2b ec fe ea a8 0d d3 81 de 73 87 |.9...+........s.| +00000030 d1 0b e7 cf d0 88 38 11 26 20 aa f4 39 4d 64 ea |......8.& ..9Md.| +00000040 97 b8 7c aa 4b b0 81 3d 2b 32 db 8c be 98 73 e2 |..|.K..=+2....s.| +00000050 e6 81 8b 23 f9 c2 a9 d7 dd 31 17 0f c2 37 b5 95 |...#.....1...7..| +00000060 31 3f 6b 62 0f 57 73 56 bd 94 d9 87 40 e4 43 46 |1?kb.WsV....@.CF| +00000070 fc ae cb b6 f9 7c 0a 8b 04 a6 d7 0f ca 66 42 93 |.....|.......fB.| +00000080 f6 0e 89 b1 b3 1c 6e 4a a2 d3 b3 1b 33 6c cd 83 |......nJ....3l..| +00000090 15 99 4f 3c 2c 27 b0 82 18 1a 0f ba e3 b1 55 aa |..O<,'........U.| +000000a0 5d 2b 92 24 c4 be 22 3e 07 c6 18 d6 5a 19 f7 5a |]+.$..">....Z..Z| +000000b0 f0 6e fe 2a 2c 61 6b cb 9b d3 ad ea 78 c1 9e a2 |.n.*,ak.....x...| +000000c0 fb 5a 9c e0 d7 0e fb 33 ca 9a ed 2b f9 b2 e8 bf |.Z.....3...+....| +000000d0 82 2c 28 09 fd 44 cd 30 b0 e4 a8 5c 8f 28 d1 f5 |.,(..D.0...\.(..| +000000e0 93 46 33 bd ba 18 ff e5 45 19 da 52 34 48 15 7f |.F3.....E..R4H..| +000000f0 39 bd 78 66 9d e4 fd af 58 59 44 8a 46 cc 2c 37 |9.xf....XYD.F.,7| +00000100 95 26 20 dd 14 65 73 d2 3c 25 e2 54 21 be c5 f6 |.& ..es.<%.T!...| +00000110 a1 9a 94 e8 41 aa 4b 75 b7 f8 03 78 a4 8a b8 28 |....A.Ku...x...(| +00000120 7f 72 17 60 37 07 a5 2a dd 65 34 97 9c ee 72 27 |.r.`7..*.e4...r'| +00000130 29 14 d8 b9 ed fc 4d fa df 8b a9 7f 7f |).....M......| >>> Flow 8 (server to client) -00000000 16 03 03 00 85 10 dc 85 7d 1e 66 b2 a4 86 68 a7 |........}.f...h.| -00000010 31 f3 b1 d8 c7 c9 26 6d 74 0a c0 c0 c0 39 ad b5 |1.....&mt....9..| -00000020 1b b1 dc d3 15 9f a4 96 27 dd 65 85 ad 83 2f 97 |........'.e.../.| -00000030 42 6f 8a 9b 58 fc f8 1b 54 89 cd 9c 11 10 b9 1d |Bo..X...T.......| -00000040 c3 e1 8e 89 20 a5 2d 0b 31 b5 e0 16 54 ce 93 9b |.... .-.1...T...| -00000050 de cc b1 af 48 48 33 96 4d a6 00 78 7b 60 3f 7c |....HH3.M..x{`?|| -00000060 cd 86 64 5e 38 e8 fd 60 d4 b1 89 cd e4 fb 42 b5 |..d^8..`......B.| -00000070 82 8f e5 23 91 87 6d 54 9e 85 37 34 df ae 70 a5 |...#..mT..74..p.| -00000080 cd 4c de 95 f7 9f a9 b4 87 0b 16 03 03 02 69 d1 |.L............i.| -00000090 c2 87 4e c8 26 b3 89 88 da c0 b9 24 84 88 c0 76 |..N.&......$...v| -000000a0 94 08 eb 56 5d fc 96 81 18 f3 5b 90 f1 38 e5 ae |...V].....[..8..| -000000b0 b5 4e 9a c1 19 19 1a b3 40 55 08 cb 0e 3b 93 b3 |.N......@U...;..| -000000c0 d7 74 80 3a 7c 0d eb be 70 0e a9 50 88 d2 52 11 |.t.:|...p..P..R.| -000000d0 2d 55 cf d9 9d aa 92 bd 15 ab 1a 62 b3 26 09 3f |-U.........b.&.?| -000000e0 50 2b b8 f2 00 a2 5a 2b 98 e3 bb e2 c7 0b 07 0e |P+....Z+........| -000000f0 5a e5 2e 08 27 87 f3 0b 1b f7 f7 82 49 cf 08 d6 |Z...'.......I...| -00000100 7c 78 39 0e 92 e7 28 f4 8f 12 ac 6a c2 72 46 e8 ||x9...(....j.rF.| -00000110 92 bf 36 c7 52 46 7a 01 92 6d a9 08 19 2a 07 70 |..6.RFz..m...*.p| -00000120 8c b2 40 7d 7f 00 27 ea fb e6 24 5c d2 d8 ae 99 |..@}..'...$\....| -00000130 0b cc 2a 4b 35 12 de 85 e9 b5 e2 2d 80 39 6d 17 |..*K5......-.9m.| -00000140 7a ca ef ca bb 58 1e 13 86 10 bc 4d 8a df 32 ba |z....X.....M..2.| -00000150 3b 7e f5 40 ec af 2e 63 be f3 38 02 a9 9d 30 1f |;~.@...c..8...0.| -00000160 c4 d2 04 93 df e1 8a bb 5d f0 6a a8 d9 b9 ad bf |........].j.....| -00000170 da d6 5e bd a1 a8 b8 20 91 26 ab 50 fd 2b bf e1 |..^.... .&.P.+..| -00000180 56 33 e3 e4 4f 3f 21 ea 86 10 e9 35 84 03 70 0b |V3..O?!....5..p.| -00000190 bd dc 44 fc 58 1d bc 9e 3a 0d 3b 61 13 d6 33 1b |..D.X...:.;a..3.| -000001a0 97 a8 67 bf e6 d9 1d 34 69 70 93 4a 6c 28 88 01 |..g....4ip.Jl(..| -000001b0 01 9d 78 59 c0 58 66 c3 70 e4 ba 74 e6 0f f7 27 |..xY.Xf.p..t...'| -000001c0 8b dd 05 ac 0d 99 dc e9 c8 2f 16 ee 59 53 91 d7 |........./..YS..| -000001d0 28 27 db ad 85 e6 d0 72 28 81 31 e1 e7 bf dd 95 |('.....r(.1.....| -000001e0 75 ff d6 a9 dc 4f 30 37 52 07 87 cb 8d a7 4a 00 |u....O07R.....J.| -000001f0 22 53 3c 6d 91 94 11 5d 0a a8 21 ea 1f 18 4e 42 |"S...A...| -00000390 37 c3 62 b5 30 89 4d b6 6c 5c f2 8c ff 3c 2e 48 |7.b.0.M.l\...<.H| -000003a0 bf 0f 5f 3e e0 b2 d7 64 2b dc 42 ad 2f 83 b5 6b |.._>...d+.B./..k| -000003b0 5a 04 51 f8 c4 07 c2 61 e4 16 03 03 00 4a a9 18 |Z.Q....a.....J..| -000003c0 58 79 d8 ad 86 d7 b6 77 39 76 99 b4 0a 29 72 b1 |Xy.....w9v...)r.| -000003d0 eb c3 ec 95 4d 30 4c 21 1a 7f 52 da 56 21 78 b7 |....M0L!..R.V!x.| -000003e0 fe dd d3 0e fc a9 89 40 99 97 12 68 7e 28 6e 32 |.......@...h~(n2| -000003f0 5b c0 e8 b4 42 eb ee 83 c2 ae 0d 28 99 48 46 a9 |[...B......(.HF.| -00000400 64 38 60 59 c2 dc 5c 7b 16 03 03 00 14 78 72 cf |d8`Y..\{.....xr.| -00000410 ac 5d 53 7e 73 b1 6e e2 0a 8e 12 33 be 03 86 6a |.]S~s.n....3...j| -00000420 ce |.| +00000000 16 03 03 00 85 f4 88 c2 bb 0e c4 2f bc 16 6e 10 |.........../..n.| +00000010 80 16 34 b2 20 c8 8f 01 64 1a 78 f9 0b d4 b9 4d |..4. ...d.x....M| +00000020 97 52 5e 79 86 37 c1 db ae 6f 7a 41 d4 6f 44 0a |.R^y.7...ozA.oD.| +00000030 79 e6 56 02 03 e4 ff 65 cc 7f 95 08 c8 e7 bc 77 |y.V....e.......w| +00000040 7c 7a 3f 85 04 37 50 55 6c 5f 43 b2 28 9e b5 55 ||z?..7PUl_C.(..U| +00000050 f6 a7 3c 9a e3 ef 40 76 14 6e 22 1d 09 3f d1 7c |..<...@v.n"..?.|| +00000060 ba 89 7c 5f e7 91 c3 e8 22 c3 a4 77 e4 da e7 63 |..|_...."..w...c| +00000070 de ea 1b 1f a8 f2 27 a9 ec 95 03 ef b7 96 64 cf |......'.......d.| +00000080 56 56 58 a4 8f c0 f7 58 60 55 16 03 03 02 69 64 |VVX....X`U....id| +00000090 1f e8 68 47 de 6d 1f 7b ed 24 0d 7b b4 7e 45 fd |..hG.m.{.$.{.~E.| +000000a0 0e 76 9e b8 58 0e fb 00 b1 29 74 93 ce 54 29 e4 |.v..X....)t..T).| +000000b0 bb 72 1d ea b7 a0 5e d2 b6 31 de 0d c5 72 8c 75 |.r....^..1...r.u| +000000c0 13 17 41 b6 96 2b e7 f4 4f c4 3f 18 d9 3b 74 65 |..A..+..O.?..;te| +000000d0 dd 7a df 4f b6 5b 95 ff 24 13 a4 84 15 89 d7 cc |.z.O.[..$.......| +000000e0 fc 26 2f e9 8c e6 89 9d 9f d8 65 46 63 5e a0 1d |.&/.......eFc^..| +000000f0 2e 50 65 f6 6d df 65 3c a6 87 c5 65 e5 76 5d 31 |.Pe.m.e<...e.v]1| +00000100 0d f5 54 4a 05 ec 19 0a 25 54 54 7b ab 34 fb df |..TJ....%TT{.4..| +00000110 d2 91 f5 06 36 77 39 1a 67 ab d7 c9 41 a2 eb f4 |....6w9.g...A...| +00000120 ce c5 3e 0a 02 d8 c7 e0 48 99 2a 2b 2d 97 74 03 |..>.....H.*+-.t.| +00000130 64 9b 8c d3 fc 65 17 ce 5a 20 2d 66 e9 9a a6 bc |d....e..Z -f....| +00000140 48 3c 08 65 d3 6f 47 c7 76 b1 59 6a b0 1c 45 b4 |H<.e.oG.v.Yj..E.| +00000150 24 9d 71 83 fb 49 96 cb c4 b9 8a 52 9a 28 92 66 |$.q..I.....R.(.f| +00000160 6e ef 7c a9 a8 88 d5 16 de 96 8e 67 89 cf 62 12 |n.|........g..b.| +00000170 93 63 7f e1 b0 76 0b 49 1a 61 af 02 e7 a0 51 9f |.c...v.I.a....Q.| +00000180 70 41 45 6f b1 d3 f8 cd ce d5 d0 a7 e1 f3 1e 7c |pAEo...........|| +00000190 50 20 ab 03 13 de 4c 1e b4 f3 6b 21 3f 41 99 4d |P ....L...k!?A.M| +000001a0 d0 ca cd de 88 a1 bc 56 72 63 e8 55 c1 31 72 b2 |.......Vrc.U.1r.| +000001b0 b2 a3 ea cf 39 8b 7f 82 55 1a 05 fb 6b c3 b7 6d |....9...U...k..m| +000001c0 08 0f 2a 34 ad 74 10 e0 4a 53 80 f7 98 a4 d6 f1 |..*4.t..JS......| +000001d0 9c e5 9a 61 a0 f0 ca 30 54 f3 d9 a7 c4 54 08 3c |...a...0T....T.<| +000001e0 23 30 f5 3e c6 96 2c 97 84 7c 3d 13 0c 4a e6 0f |#0.>..,..|=..J..| +000001f0 ea 99 9c ba e5 34 a2 e6 74 e5 c0 86 d1 4e d4 ed |.....4..t....N..| +00000200 a1 e2 81 0a cc ec f8 d2 0a 0d 53 87 d7 d7 cc 75 |..........S....u| +00000210 6d a8 c0 25 de 31 f3 cb 08 71 f0 e3 5e 7f d0 5c |m..%.1...q..^..\| +00000220 fb 48 1a a4 f9 70 08 14 a3 3b 90 87 94 0c 70 df |.H...p...;....p.| +00000230 9d b6 db 94 55 99 ac 18 df d1 d5 8c 16 8c c9 25 |....U..........%| +00000240 2d 78 60 69 66 fb 0d 09 39 18 aa 77 b2 fb ed d1 |-x`if...9..w....| +00000250 58 d5 53 6a 32 05 6f cc 35 16 6f 19 98 31 f4 36 |X.Sj2.o.5.o..1.6| +00000260 af 1b 88 39 ad 3b a9 46 b5 49 b3 8e 26 76 ab 02 |...9.;.F.I..&v..| +00000270 a4 ba f3 29 e5 08 f9 47 a6 b4 f0 ad 4d 70 c6 80 |...)...G....Mp..| +00000280 ab 33 c7 5a 57 a7 40 37 6b 53 96 e9 35 88 78 bf |.3.ZW.@7kS..5.x.| +00000290 dd 81 f8 2f 9c 4d c1 d1 ce 45 16 a4 fb 57 bd ff |.../.M...E...W..| +000002a0 67 1c 3f 3f d2 49 89 a2 f3 b3 b9 4b 74 04 c4 e5 |g.??.I.....Kt...| +000002b0 83 7c ff 9f a0 6b d2 c3 6a 07 ab 91 65 40 ba 20 |.|...k..j...e@. | +000002c0 7a 59 f1 66 ba f8 47 b1 ab 03 96 c3 e2 57 8d f5 |zY.f..G......W..| +000002d0 a6 43 a3 6b 6b 9d 42 18 9b 6a 41 09 75 db 8b b7 |.C.kk.B..jA.u...| +000002e0 7a a6 0e 7e d4 ee da a8 eb 8b 0d 39 8a 1d 6e b5 |z..~.......9..n.| +000002f0 9b 6a b1 57 f9 9d ec 01 16 03 03 00 bc 5a c0 bc |.j.W.........Z..| +00000300 54 9d 60 e3 68 3c 67 38 46 de cb 1f f0 fb 11 90 |T.`.h>> Flow 9 (client to server) -00000000 16 03 03 02 69 33 a1 bb 7d ff 23 ba ad dc a0 1e |....i3..}.#.....| -00000010 3c 7c 1f 53 59 81 13 04 49 f7 6e bf 8f ef 11 92 |<|.SY...I.n.....| -00000020 51 bf 8a e7 fe ef 76 e4 f8 88 27 95 f4 12 f2 ed |Q.....v...'.....| -00000030 cc ec a6 2d 10 87 19 5e c9 fe cd 12 ae 1a 38 f9 |...-...^......8.| -00000040 78 f1 42 f8 47 26 1b c2 5f 82 a5 aa 65 17 eb 06 |x.B.G&.._...e...| -00000050 03 c8 22 9c 9f 8b 87 26 4a 64 18 93 9c f4 16 82 |.."....&Jd......| -00000060 28 eb 8d 2d f8 51 60 3a f4 bb a3 77 f5 97 2b 6a |(..-.Q`:...w..+j| -00000070 19 db 2e 46 8b d8 08 d8 28 88 bb bd d8 3b c2 bb |...F....(....;..| -00000080 8c 87 1b 17 a0 34 a8 c6 e8 a5 a0 e5 cb d6 9c 9d |.....4..........| -00000090 a6 a4 6c 06 6a 85 0c 5e ef 0c 97 6f b6 11 e7 4d |..l.j..^...o...M| -000000a0 60 91 95 74 48 af 1b 0b 47 03 ed 47 e9 b9 28 36 |`..tH...G..G..(6| -000000b0 74 0d 8a b8 1e 5d 1c cb ea 7b b7 8f 18 e3 b9 b9 |t....]...{......| -000000c0 43 ed 53 f2 bf 7e 8c 8f e6 c0 2a f4 31 25 f5 e8 |C.S..~....*.1%..| -000000d0 44 48 2d 36 4f a7 11 f6 ea 7c 3f d6 2d 5d 3e 39 |DH-6O....|?.-]>9| -000000e0 fb 50 f1 c9 eb 25 be 7a c5 af 54 f5 12 07 04 22 |.P...%.z..T...."| -000000f0 ec 68 45 f1 fd d1 91 0a cf 64 0f f3 58 4e e8 ce |.hE......d..XN..| -00000100 f6 9e c0 57 ea 3a bd a0 5d 26 d4 ab ed 1a 34 12 |...W.:..]&....4.| -00000110 9f fa ec 73 d6 38 06 78 85 3c f9 cd aa fb fd 32 |...s.8.x.<.....2| -00000120 cb e0 a7 d0 bb 71 b0 a3 d2 b9 89 5e a9 57 18 7e |.....q.....^.W.~| -00000130 c0 c9 2e e3 e5 07 65 6f 4c ad 22 78 50 f2 87 0f |......eoL."xP...| -00000140 cd 93 b3 19 a9 73 e2 1d bf 38 a0 20 8d 3a 3a 4e |.....s...8. .::N| -00000150 b3 02 b7 11 1f df 12 60 dd 10 1c f8 75 4a 52 86 |.......`....uJR.| -00000160 71 61 88 37 b3 bf f7 2d 45 6d 10 4a 9f 80 b3 fc |qa.7...-Em.J....| -00000170 36 d4 d3 9f 08 f2 bb ce 9c 3a 9a 59 f6 0a 0a aa |6........:.Y....| -00000180 7f 61 29 0b df 29 92 09 55 ec 1c 84 d6 1f 7c 68 |.a)..)..U.....|h| -00000190 72 00 88 5e e3 6a ee 35 45 7a 0b 49 35 0e 2d 7c |r..^.j.5Ez.I5.-|| -000001a0 ac 8b 9f 9c 94 48 2d 1e 74 24 68 14 8e 16 b4 06 |.....H-.t$h.....| -000001b0 24 66 a3 18 f4 ff 21 31 4b 9b bb 09 8a 9d 57 e4 |$f....!1K.....W.| -000001c0 a1 5c ae f1 e1 4b 5c 2a be 64 3c 7a 61 10 3d 73 |.\...K\*.d....^O| -000002f0 f7 4b 38 70 d0 82 42 f2 5a c9 34 d2 76 7b 8d e4 |.K8p..B.Z.4.v{..| -00000300 0b c7 3d be 86 7d 21 8c f8 9f 1a 4a dc 48 07 12 |..=..}!....J.H..| -00000310 ab 4c 98 f7 8b 3e 02 49 c2 d1 b5 e9 9a e0 5a 74 |.L...>.I......Zt| -00000320 58 ce a3 33 be 0f ca 12 54 a2 0e a9 e5 22 8f 82 |X..3....T...."..| -00000330 df 1a 3e 21 bf 66 c6 13 39 77 83 95 b1 4b 1d d3 |..>!.f..9w...K..| -00000340 32 69 24 c2 89 14 03 03 00 11 1c eb 63 31 c9 c9 |2i$.........c1..| -00000350 8a e3 8b 25 7e e9 b7 7d 19 03 3c 16 03 03 00 20 |...%~..}..<.... | -00000360 c6 41 57 04 ab e8 6c 55 0b dc cd 06 f5 b3 4b 95 |.AW...lU......K.| -00000370 40 b5 04 47 da 71 d7 70 ce d6 2e 0b c7 66 16 3c |@..G.q.p.....f.<| +00000000 16 03 03 02 69 3d ff d3 96 89 9f 41 3d 64 0c 71 |....i=.....A=d.q| +00000010 e5 80 34 1f 5d 8a cb b4 47 08 c8 c0 7d 17 3b db |..4.]...G...}.;.| +00000020 d4 d1 9d 98 16 b9 84 73 c9 8a ff 76 bf 1e f0 bd |.......s...v....| +00000030 da 35 a8 2a d5 6a 28 cf 66 bf e0 dc 45 a9 8f 61 |.5.*.j(.f...E..a| +00000040 65 75 99 29 fe 5a c8 46 2e 14 10 79 a2 b9 c9 04 |eu.).Z.F...y....| +00000050 37 f8 01 8e 72 2b b7 c9 23 75 51 59 b9 8d 4a 87 |7...r+..#uQY..J.| +00000060 9d 54 5d 70 25 66 5b 70 a7 04 e4 c0 6a e9 25 8f |.T]p%f[p....j.%.| +00000070 1b e0 39 59 b4 f3 0a 3b 42 bd 25 f3 e3 38 45 d6 |..9Y...;B.%..8E.| +00000080 d9 22 b6 1f 40 72 19 2d c6 1d 22 66 c5 cb 10 2c |."..@r.-.."f...,| +00000090 1c 6a f8 fc ca f3 b4 f1 d2 e5 cf 7b ef 89 e6 9b |.j.........{....| +000000a0 c5 5e 4e 83 6b 55 2f 01 da ad d4 3c 91 d4 17 f2 |.^N.kU/....<....| +000000b0 8c ee ae e1 6c b4 c9 9d 33 b1 7c d3 e4 61 72 8f |....l...3.|..ar.| +000000c0 81 26 8f b9 c5 3f ca 42 00 16 57 1c 9a d2 37 80 |.&...?.B..W...7.| +000000d0 76 47 b7 59 3c 39 b6 d2 0b 83 45 d1 3e 4d c4 8d |vG.Y<9....E.>M..| +000000e0 24 8f 95 f6 44 2f 45 70 69 6f 82 13 f7 42 a2 de |$...D/Epio...B..| +000000f0 bb 86 af c3 b1 eb aa 34 ae 5d fb c2 e1 5c 87 d1 |.......4.]...\..| +00000100 2b f4 36 1f da cf 94 b7 fd 78 de 96 0a cd f5 80 |+.6......x......| +00000110 6d a5 7c fa a0 1a dd aa ef 0f 4c 7a cc 10 33 e0 |m.|.......Lz..3.| +00000120 be c1 1c 9e 3f e0 4c a8 93 95 da 5d 01 bd a8 84 |....?.L....]....| +00000130 8b e8 53 c2 69 04 92 fa 54 16 38 d7 82 17 07 da |..S.i...T.8.....| +00000140 71 af 5d 82 72 3d 6b 10 fd 46 b5 a2 8d 6e fe f8 |q.].r=k..F...n..| +00000150 65 4a 48 6f 2e e3 8d b9 97 23 7f 51 ec 32 07 3b |eJHo.....#.Q.2.;| +00000160 1c df 26 be 29 e7 95 77 ed 1e d0 b2 d9 68 e4 65 |..&.)..w.....h.e| +00000170 5b e7 97 58 ec 50 0c d1 e1 6e 76 73 d5 7b 37 41 |[..X.P...nvs.{7A| +00000180 03 03 dd 07 53 48 d6 8c d5 69 83 05 06 1e 59 54 |....SH...i....YT| +00000190 9a cb 50 c5 55 12 23 47 57 83 50 83 58 ec 97 95 |..P.U.#GW.P.X...| +000001a0 09 de e9 01 d7 62 43 eb 1d 80 82 08 c0 1e 7d d4 |.....bC.......}.| +000001b0 6b d5 dd b7 0c 8d 7f 7c 2d ed f9 b1 16 38 ec b7 |k......|-....8..| +000001c0 a0 1b 5a da a6 6f b2 59 ce ff d9 fc 9b 0c fc 16 |..Z..o.Y........| +000001d0 27 5e 79 68 f8 3d 0b dc bb 6d 9f 0d 4d 3b 19 d4 |'^yh.=...m..M;..| +000001e0 0f 36 59 5f 41 c4 f6 9c c1 47 f5 65 e0 d8 b1 06 |.6Y_A....G.e....| +000001f0 3b 05 6c 90 fd f2 e8 b1 33 a9 1c a7 84 f4 e6 02 |;.l.....3.......| +00000200 f3 80 2e 9f 81 13 01 ea 9f 09 f0 55 22 34 93 bf |...........U"4..| +00000210 b2 13 07 62 f0 fc 3e 08 b2 8d cb 62 64 33 a4 e6 |...b..>....bd3..| +00000220 1c 26 ff 4e fe 28 3e 82 58 ce 82 a1 ef a4 14 f3 |.&.N.(>.X.......| +00000230 81 59 e2 29 da 30 ef 1d 20 75 1a 7f 27 b5 90 be |.Y.).0.. u..'...| +00000240 40 fc 52 08 0a 62 c4 53 4f 6d e9 fb 96 81 8c 1e |@.R..b.SOm......| +00000250 3d 3f bc 87 fb fb 6c 8b 17 7a 14 38 53 df 0c ef |=?....l..z.8S...| +00000260 f4 12 24 fa 77 ce 0b 2a ea 1d 1e 0c 8e 50 16 03 |..$.w..*.....P..| +00000270 03 00 35 28 fe 49 cd b2 80 e8 65 78 83 02 1f 03 |..5(.I....ex....| +00000280 75 ab 8c f6 cb c0 fa 86 8f 5e b2 63 f8 a4 37 b9 |u........^.c..7.| +00000290 2b 82 9e 27 cb 82 97 c6 7c 90 cc de 19 d2 cc 7e |+..'....|......~| +000002a0 19 c1 5e da 99 87 05 31 16 03 03 00 98 09 f8 56 |..^....1.......V| +000002b0 7f 7d 66 c3 a3 e0 e2 68 48 b6 38 cb 6c ca b9 28 |.}f....hH.8.l..(| +000002c0 ff 5b 52 f9 7b 69 ba 92 a9 ba 25 7a 0a fe 97 3b |.[R.{i....%z...;| +000002d0 73 f2 b6 8b a7 cb d6 cf 9e da f1 ce d7 41 98 d3 |s............A..| +000002e0 3d 59 ef 9c 14 78 e2 d7 46 0b 63 b2 aa 4e 02 1e |=Y...x..F.c..N..| +000002f0 40 78 a2 e6 55 c2 20 88 ab 0e bd a8 78 76 4d fe |@x..U. .....xvM.| +00000300 68 c4 ad c0 7e 9d 2b 0c 08 e9 0f 65 1c 9e 38 df |h...~.+....e..8.| +00000310 f9 07 1f 8a 6b 2c af 94 89 35 75 61 e9 5f 2b 90 |....k,...5ua._+.| +00000320 b4 38 15 26 a1 ea 15 dc 76 09 0a 2b ff 2d 42 ab |.8.&....v..+.-B.| +00000330 b5 f7 37 ce ec 34 8e 9a 55 b5 01 56 98 46 b7 1e |..7..4..U..V.F..| +00000340 07 30 0d 25 8a 14 03 03 00 11 c7 b7 3a b1 86 25 |.0.%........:..%| +00000350 cf 3e a6 ce 37 36 65 11 b2 85 13 16 03 03 00 20 |.>..76e........ | +00000360 c8 69 c3 d3 63 3d 94 1c 78 e2 b7 dd 84 b5 f9 2d |.i..c=..x......-| +00000370 d6 ed 39 fe 23 48 ee 7a 75 17 21 70 eb b8 96 56 |..9.#H.zu.!p...V| >>> Flow 10 (server to client) -00000000 14 03 03 00 11 c0 4e fd fa 3a 1c 4a 19 ce 08 f6 |......N..:.J....| -00000010 da 70 56 fa 39 42 16 03 03 00 20 0c bc c4 5e 24 |.pV.9B.... ...^$| -00000020 e3 0e c9 23 8c cd f6 a2 45 07 e6 93 40 7c c8 02 |...#....E...@|..| -00000030 6e 24 f7 4e 06 9a ad ba de cd 10 17 03 03 00 19 |n$.N............| -00000040 52 e0 85 b3 46 25 7d fd 8f d0 4c ca df fe 2f a6 |R...F%}...L.../.| -00000050 14 d6 08 82 70 0f 93 78 bf 16 03 03 00 14 ff 68 |....p..x.......h| -00000060 f1 6d 8d b4 5f 74 19 6b e3 1e 6e ee 9d ee c2 34 |.m.._t.k..n....4| -00000070 0f 44 |.D| +00000000 14 03 03 00 11 ce 30 2f ce ec 08 18 13 0f 64 04 |......0/......d.| +00000010 6d a0 fb 38 04 17 16 03 03 00 20 03 cd 4e 30 0f |m..8...... ..N0.| +00000020 e3 c2 1c 52 7d 30 5f 57 e1 2f 50 7b 00 0b 8a 05 |...R}0_W./P{....| +00000030 2e 4b 15 23 fd e6 82 35 ac 96 5f 17 03 03 00 19 |.K.#...5.._.....| +00000040 d9 71 23 60 2a 72 ac 2e 43 66 a9 7a a9 71 5f f3 |.q#`*r..Cf.z.q_.| +00000050 c3 43 72 41 55 49 81 95 43 16 03 03 00 14 c0 af |.CrAUI..C.......| +00000060 63 ad 86 4c 8b 44 8d f1 e1 2c 4e b7 a5 54 b4 1d |c..L.D...,N..T..| +00000070 68 de |h.| >>> Flow 11 (client to server) -00000000 15 03 03 00 12 81 0d 63 a5 11 7a 03 ab 66 f6 c8 |.......c..z..f..| -00000010 15 f3 d9 23 fa 67 6b 15 03 03 00 12 71 0e 3b 52 |...#.gk.....q.;R| -00000020 1a 05 39 4c 8c 76 c3 a9 00 35 bd 66 80 a1 |..9L.v...5.f..| +00000000 15 03 03 00 12 6d 7f 8e 31 17 7d 45 96 a9 b0 6e |.....m..1.}E...n| +00000010 e1 73 b3 f3 f6 51 9a 15 03 03 00 12 ad 22 dc 06 |.s...Q......."..| +00000020 98 ee b2 2f 09 4b 40 25 84 65 60 88 2e db |.../.K@%.e`...| diff --git a/src/crypto/tls/testdata/Client-TLSv12-RenegotiationRejected b/src/crypto/tls/testdata/Client-TLSv12-RenegotiationRejected index 0be2e72bf3..f70978475e 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-RenegotiationRejected +++ b/src/crypto/tls/testdata/Client-TLSv12-RenegotiationRejected @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 21 15 e1 02 00 |....]...Y..!....| -00000010 c6 0c e5 3f c9 6f a5 59 38 7e 13 81 1b 26 50 46 |...?.o.Y8~...&PF| -00000020 bf 2b 95 0c eb a8 bc 72 97 bc 26 20 ad 6b 84 ac |.+.....r..& .k..| -00000030 8f 62 26 0b 4b d8 bf 1b 7d a5 27 3b 3e 45 a5 8f |.b&.K...}.';>E..| -00000040 37 fb b2 25 2c d3 82 69 ed d7 c9 f0 cc a8 00 00 |7..%,..i........| +00000000 16 03 03 00 5d 02 00 00 59 03 03 50 07 ee 50 d2 |....]...Y..P..P.| +00000010 77 fa a1 bb 19 fa ea 54 12 26 62 e7 0c 84 b9 2e |w......T.&b.....| +00000020 b2 b8 c8 19 59 34 b4 3c 60 21 d9 20 4f 36 b8 c7 |....Y4.<`!. O6..| +00000030 5c ae b8 11 14 0d 67 88 65 37 f1 a5 16 3a af 92 |\.....g.e7...:..| +00000040 4d 39 ed 9c 20 1c e7 c1 40 e6 ba b8 cc a8 00 00 |M9.. ...@.......| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -61,36 +63,36 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 b2 3a 28 |............ .:(| -000002d0 2e 2c 66 f1 9b 44 58 9a 92 03 42 81 f6 1c f4 67 |.,f..DX...B....g| -000002e0 50 b5 92 f3 06 1b 1b 23 93 99 12 c5 6b 08 04 00 |P......#....k...| -000002f0 80 44 05 ae 8d ed c6 82 3a 2a 19 05 9d 70 f9 ba |.D......:*...p..| -00000300 45 66 cb 45 75 9c da 92 cc bb 4a a5 ae 41 8c f8 |Ef.Eu.....J..A..| -00000310 9b e7 06 73 88 9f f9 7d 95 ce 74 a6 05 e9 38 a5 |...s...}..t...8.| -00000320 26 4b b2 26 31 5c e9 f9 a8 f8 6e 6b 05 e4 39 b5 |&K.&1\....nk..9.| -00000330 fe b1 b1 cd 40 23 e9 68 f3 9c ed 91 71 d3 0b c5 |....@#.h....q...| -00000340 91 c5 b2 91 69 a9 4b 2c a7 0c 24 d6 a9 e7 74 89 |....i.K,..$...t.| -00000350 9e ce 8b 00 72 9a c9 86 8b ca 8d 39 01 a0 71 3e |....r......9..q>| -00000360 46 ff a6 7d c6 da 0a af f2 84 c4 01 1c 94 47 22 |F..}..........G"| -00000370 71 16 03 03 00 04 0e 00 00 00 |q.........| +000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 5d 84 3d |............ ].=| +000002d0 57 67 a5 0a 3d 25 81 c0 82 e0 b9 03 29 4e e1 87 |Wg..=%......)N..| +000002e0 37 88 c8 9a 6d 7c 4b c9 22 5a ab 5e 68 08 04 00 |7...m|K."Z.^h...| +000002f0 80 5d 80 99 26 5c 59 a0 7f f1 96 68 9e 02 11 1c |.]..&\Y....h....| +00000300 80 89 f1 50 d1 5c 7c 61 29 77 5e c1 4f 42 4b 03 |...P.\|a)w^.OBK.| +00000310 0d 92 0d 20 c4 f9 e3 60 a7 de 90 b7 5a b8 3b 06 |... ...`....Z.;.| +00000320 0a 21 4b 9b 5b e9 2f 85 dc 23 af 5a d0 76 0a 74 |.!K.[./..#.Z.v.t| +00000330 02 64 32 b6 9a 93 d3 b8 65 04 94 f5 c5 be c2 7f |.d2.....e.......| +00000340 9b 76 af cf 1f 77 e0 31 3f 63 0e 0e 78 cd f7 9c |.v...w.1?c..x...| +00000350 e3 d4 52 e2 80 53 7f 53 35 10 21 b9 9e 48 92 e3 |..R..S.S5.!..H..| +00000360 ba 7e 3c 13 0c 36 bc 56 3a 00 d3 13 c1 16 f8 33 |.~<..6.V:......3| +00000370 68 16 03 03 00 04 0e 00 00 00 |h.........| >>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| -00000030 16 03 03 00 20 80 26 44 1c a7 83 b7 12 29 9a 44 |.... .&D.....).D| -00000040 7b c1 0b 96 53 c8 0e 9b dd 8d 29 4b 4b b8 75 d7 |{...S.....)KK.u.| -00000050 0a c7 86 c7 d9 |.....| +00000030 16 03 03 00 20 72 e5 4c 81 fd 78 39 f0 bb 37 cd |.... r.L..x9..7.| +00000040 b4 47 cb 1b 52 25 08 9a ab ab 9b 28 d2 b4 72 eb |.G..R%.....(..r.| +00000050 b0 db 8f fe 29 |....)| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 20 2e d7 9e b0 66 |.......... ....f| -00000010 f1 39 84 a9 d9 93 17 bd 94 5a 31 49 bb eb f0 a0 |.9.......Z1I....| -00000020 7b af d0 3b ae 1a 5d f6 46 31 36 |{..;..].F16| +00000000 14 03 03 00 01 01 16 03 03 00 20 68 26 ca 41 0e |.......... h&.A.| +00000010 ab 2f 28 5d 9e 94 17 4f 9f 25 cb 82 aa 3a e5 40 |./(]...O.%...:.@| +00000020 8a 35 6d a8 72 bf 25 2a 8a 6d 04 |.5m.r.%*.m.| >>> Flow 5 (client to server) -00000000 17 03 03 00 16 cd 39 a7 64 3b 6a de 14 e0 26 ea |......9.d;j...&.| -00000010 66 b2 73 b1 8e b0 e3 a9 94 62 4f |f.s......bO| +00000000 17 03 03 00 16 73 e1 3b 86 fb 05 16 9e a9 af 73 |.....s.;.......s| +00000010 64 72 8b 02 a0 82 7d 70 16 5c d9 |dr....}p.\.| >>> Flow 6 (server to client) -00000000 16 03 03 00 14 c5 d7 88 58 81 44 1f 8d e4 c2 19 |........X.D.....| -00000010 15 3b 5c 43 76 82 fe 03 e1 |.;\Cv....| +00000000 16 03 03 00 14 9b 44 8d b3 1c 77 2c 12 e7 fe 76 |......D...w,...v| +00000010 31 c9 ab e7 f0 be 32 0a e3 |1.....2..| >>> Flow 7 (client to server) -00000000 15 03 03 00 12 d4 b1 0d fa 41 25 ab d4 e1 b7 74 |.........A%....t| -00000010 27 5c 8b c6 0d 49 8e 15 03 03 00 12 65 3d 4e 30 |'\...I......e=N0| -00000020 48 43 8f f6 8b 89 45 af f4 7a e4 eb ad a1 |HC....E..z....| +00000000 15 03 03 00 12 00 54 e7 c6 54 b7 ec 24 d4 07 ad |......T..T..$...| +00000010 ff a7 39 d2 7b 62 ba 15 03 03 00 12 de ad f4 f7 |..9.{b..........| +00000020 0b 8b a3 a3 e5 19 b6 45 63 6f dc 7d f3 c4 |.......Eco.}..| diff --git a/src/crypto/tls/testdata/Client-TLSv12-SCT b/src/crypto/tls/testdata/Client-TLSv12-SCT index 8ea2cd4622..399c5e9ec3 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-SCT +++ b/src/crypto/tls/testdata/Client-TLSv12-SCT @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,21 +7,23 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 01 ca 02 00 01 c6 03 03 da b0 57 a0 ee |.............W..| -00000010 bf 74 92 06 39 a6 9a 9b 80 71 7e 57 63 ab 31 74 |.t..9....q~Wc.1t| -00000020 d3 22 c1 e3 a6 c6 cf 6f 47 57 49 20 86 52 fb 0a |.".....oGWI .R..| -00000030 fd aa 10 47 00 9a 5d ad 4c d8 90 f1 cf 13 10 73 |...G..].L......s| -00000040 31 f1 df 22 f3 42 58 b0 10 25 43 eb cc a8 00 01 |1..".BX..%C.....| +00000000 16 03 03 01 ca 02 00 01 c6 03 03 9a 84 91 7d 3b |..............};| +00000010 31 f1 28 b9 57 a3 5c ea ac 1c 43 91 1a e3 1a 88 |1.(.W.\...C.....| +00000020 29 b8 46 87 18 0a 9d 9e f6 6a 94 20 45 98 c2 a1 |).F......j. E...| +00000030 3f 98 33 0f b7 d0 e8 53 70 a5 01 4e 0b a1 3b 3a |?.3....Sp..N..;:| +00000040 e1 cd 07 a3 b0 96 eb 05 54 26 de d8 cc a8 00 01 |........T&......| 00000050 7e 00 12 01 69 01 67 00 75 00 a4 b9 09 90 b4 18 |~...i.g.u.......| 00000060 58 14 87 bb 13 a2 cc 67 70 0a 3c 35 98 04 f9 1b |X......gp.<5....| 00000070 df b8 e3 77 cd 0e c8 0d dc 10 00 00 01 47 97 99 |...w.........G..| @@ -84,31 +86,31 @@ 00000400 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 4c 72 2b |Cw.......@.a.Lr+| 00000410 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 bd 42 d4 |...F..M...>...B.| 00000420 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 16 03 03 |..=.`.\!.;......| -00000430 00 ac 0c 00 00 a8 03 00 1d 20 0e e6 72 88 cf d1 |......... ..r...| -00000440 05 c7 8d 03 64 b9 db d8 c3 5e 36 80 67 67 36 94 |....d....^6.gg6.| -00000450 5b b7 92 f9 77 1f 6f b2 44 7f 08 04 00 80 1d 3b |[...w.o.D......;| -00000460 70 d5 72 87 2f 58 20 da 29 e0 f8 e8 7c 8d e5 c7 |p.r./X .)...|...| -00000470 bf da 3c 10 f8 b0 3e 38 7b 06 0b 8e 8f d7 40 b6 |..<...>8{.....@.| -00000480 47 9f 1c 64 6e 80 ab 9d 51 92 8c 60 a2 88 c4 43 |G..dn...Q..`...C| -00000490 7d dc 29 64 45 83 a7 9c 2a 39 e9 bb 2a d9 f5 96 |}.)dE...*9..*...| -000004a0 4c fb fd 0d cc 0f 9b 48 f5 ee af 8f 7a 1c 39 3e |L......H....z.9>| -000004b0 cf 23 15 c6 ab c3 f2 29 fd 6c 4f 17 6b d4 be 1a |.#.....).lO.k...| -000004c0 23 6e 74 81 e5 e5 e8 c0 de 9b b0 ed d2 32 bc 2a |#nt..........2.*| -000004d0 b1 30 b2 eb ac 9e 23 f8 be ea 31 9a b4 55 16 03 |.0....#...1..U..| +00000430 00 ac 0c 00 00 a8 03 00 1d 20 4e e0 4b c5 9b e7 |......... N.K...| +00000440 1c 85 3a 3f 64 df cb 87 18 94 c2 e2 cd e9 db 5e |..:?d..........^| +00000450 44 11 ee e0 89 4d 11 62 57 1a 08 04 00 80 7d 99 |D....M.bW.....}.| +00000460 22 49 98 12 7b 7c e7 73 99 dc c1 43 7d 6c ed 8d |"I..{|.s...C}l..| +00000470 7e f3 d5 66 76 0b cd 5e 5f cc 60 68 8e 8c 30 6f |~..fv..^_.`h..0o| +00000480 54 0d 46 ca da a0 82 44 30 fc f1 bc a4 54 a1 49 |T.F....D0....T.I| +00000490 d1 17 e6 c5 dc fd 08 41 19 5a e1 5b 9a 93 3c 3b |.......A.Z.[..<;| +000004a0 3b 0f be 35 51 55 0e 54 1e dc 03 28 0b fa 49 9f |;..5QU.T...(..I.| +000004b0 cf c8 d6 18 79 f7 84 92 0a 37 9f b3 88 3a 46 d9 |....y....7...:F.| +000004c0 dd 7b e5 2b 52 6c a8 06 ac b5 ba 29 32 82 fb eb |.{.+Rl.....)2...| +000004d0 62 78 c9 97 c7 5c 03 e9 26 2e 8d 23 db 35 16 03 |bx...\..&..#.5..| 000004e0 03 00 04 0e 00 00 00 |.......| >>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| -00000030 16 03 03 00 20 a1 58 d5 1a a3 9f 85 4e b6 c8 b7 |.... .X.....N...| -00000040 cb c1 b0 cc 0a 80 59 1d 81 41 cc 4d 0b d3 bd 38 |......Y..A.M...8| -00000050 48 69 01 23 96 |Hi.#.| +00000030 16 03 03 00 20 e4 20 73 0f 70 18 f9 ef a2 7a e3 |.... . s.p....z.| +00000040 73 d2 8d 38 45 61 89 b5 b0 77 1c 39 ba f8 56 ec |s..8Ea...w.9..V.| +00000050 04 0b c6 fb 02 |.....| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 20 83 ae fc 0d dd |.......... .....| -00000010 a1 3a 55 b0 2e 5e 21 9c 57 f3 1b 94 80 6c 0e bb |.:U..^!.W....l..| -00000020 78 ae f4 6c 20 d5 7e 23 11 1e 7d |x..l .~#..}| +00000000 14 03 03 00 01 01 16 03 03 00 20 a8 e6 38 02 7a |.......... ..8.z| +00000010 d2 1c ca b1 79 ae ba 10 b6 ab e2 5e 79 28 06 7f |....y......^y(..| +00000020 0c d4 17 fc e3 72 e2 bf 44 4b 5f |.....r..DK_| >>> Flow 5 (client to server) -00000000 17 03 03 00 16 d3 16 a3 f0 93 49 44 d4 82 60 35 |..........ID..`5| -00000010 e3 63 08 c0 4e 66 99 37 31 90 6c 15 03 03 00 12 |.c..Nf.71.l.....| -00000020 3c ea 2c 19 34 7b cc 6c 7a a9 15 31 6f 9c 3b b0 |<.,.4{.lz..1o.;.| -00000030 b2 1f |..| +00000000 17 03 03 00 16 00 04 dd 86 fc e7 8c c5 67 e6 0f |.............g..| +00000010 32 0a 60 1b f8 b6 1c e7 e1 96 8c 15 03 03 00 12 |2.`.............| +00000020 35 71 48 37 fb f7 d1 3a 94 aa 3f ec c1 99 8a 7c |5qH7...:..?....|| +00000030 20 4a | J| diff --git a/src/crypto/tls/testdata/Client-TLSv12-X25519-ECDHE b/src/crypto/tls/testdata/Client-TLSv12-X25519-ECDHE index c851eb1a1f..a0d9a5eb1b 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-X25519-ECDHE +++ b/src/crypto/tls/testdata/Client-TLSv12-X25519-ECDHE @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 f8 01 00 00 f4 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 16 01 00 01 12 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,20 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 79 00 0b 00 02 01 00 ff 01 00 01 00 00 |...y............| +00000080 01 00 00 97 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 04 00 02 00 1d 00 0d 00 1a 00 18 08 04 |................| 000000b0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| -000000c0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| -000000d0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| -000000e0 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| -000000f0 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| +000000c0 06 03 02 01 02 03 00 32 00 1a 00 18 08 04 04 03 |.......2........| +000000d0 08 07 08 05 08 06 04 01 05 01 06 01 05 03 06 03 |................| +000000e0 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 02 03 |.....+..........| +000000f0 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d a3 47 |..3.&.$... /.}.G| +00000100 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af |.bC.(.._.).0....| +00000110 c4 cf c2 ed 90 99 5f 58 cb 3b 74 |......_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 e0 da ea 5e 09 |....]...Y.....^.| -00000010 bb 30 4c 10 db 85 36 44 38 9e a4 83 74 5f 2f 94 |.0L...6D8...t_/.| -00000020 a1 b4 45 61 73 2f 88 b3 ac ad e4 20 45 55 20 90 |..Eas/..... EU .| -00000030 b0 b0 d4 70 e6 10 13 5c f4 49 0e 9c 2a 52 5c 84 |...p...\.I..*R\.| -00000040 b2 55 1a ea e3 4b 5a 9f ac e9 7b 37 c0 2f 00 00 |.U...KZ...{7./..| +00000000 16 03 03 00 5d 02 00 00 59 03 03 c1 cb c6 9e f2 |....]...Y.......| +00000010 92 cb ca eb 42 5a 30 c2 1a 3f d6 ca fc 69 b9 55 |....BZ0..?...i.U| +00000020 86 21 dd 3f 1d 33 5c 97 a1 1f b9 20 46 58 d4 b8 |.!.?.3\.... FX..| +00000030 c4 71 e6 30 97 a1 f3 fe 1c 7f ca cd bf c2 95 96 |.q.0............| +00000040 ef 5c df 54 60 51 f6 e2 47 7c c5 bd c0 2f 00 00 |.\.T`Q..G|.../..| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -60,33 +62,33 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 ca 07 6e |............ ..n| -000002d0 67 12 8e f7 b4 55 c0 d4 88 73 35 f0 f1 ae c4 34 |g....U...s5....4| -000002e0 59 dc 05 df 75 96 54 f1 4f 7f 79 93 25 08 04 00 |Y...u.T.O.y.%...| -000002f0 80 d2 1d 65 15 23 74 e4 57 80 58 62 b5 6d ab 06 |...e.#t.W.Xb.m..| -00000300 11 4c e0 a0 7b 7e b5 78 87 47 71 30 c3 d8 86 b2 |.L..{~.x.Gq0....| -00000310 af 34 24 95 9c 2f 74 bb 6e c8 2a 8e 81 f8 fb d7 |.4$../t.n.*.....| -00000320 06 06 dc e8 95 01 65 fe 5d cb 9e 7f 36 9b 29 40 |......e.]...6.)@| -00000330 09 81 1b df 24 66 13 94 51 2a 48 31 e3 cb 3a 06 |....$f..Q*H1..:.| -00000340 c9 9c f4 36 b8 c0 de c1 3e 5e 79 95 f8 11 4b d8 |...6....>^y...K.| -00000350 0a b1 6c ef f4 ce 89 ba df ad 24 3d 7c 48 aa 70 |..l.......$=|H.p| -00000360 d8 0e 52 a8 12 1c 6b eb 5b c9 c3 a3 fa f0 60 d4 |..R...k.[.....`.| -00000370 54 16 03 03 00 04 0e 00 00 00 |T.........| +000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 d5 3e d5 |............ .>.| +000002d0 c0 de 8f f1 12 8d 50 f2 97 d1 d6 1d b9 9f 7f 86 |......P.........| +000002e0 00 38 c7 77 7b 65 44 7d 97 e4 61 a3 77 08 04 00 |.8.w{eD}..a.w...| +000002f0 80 07 71 57 61 39 64 7c d0 1e 5d 57 23 5c 18 0c |..qWa9d|..]W#\..| +00000300 46 c8 62 e0 41 5a f9 4f 1b 17 d9 25 64 53 9c 41 |F.b.AZ.O...%dS.A| +00000310 ea 6a fc 01 69 92 4c d1 4e 98 4d c8 d2 7d 5a 8b |.j..i.L.N.M..}Z.| +00000320 19 46 9a 54 57 27 12 ba f2 91 cb 0b 24 08 06 91 |.F.TW'......$...| +00000330 c0 4d 5a 9e 45 e0 34 87 93 87 59 08 ae cb 5c 08 |.MZ.E.4...Y...\.| +00000340 05 bf 71 f7 0c 04 57 b9 d4 9c 00 ec bb 55 ee c3 |..q...W......U..| +00000350 56 ab f9 08 ab 14 f1 f9 27 85 f3 ea 85 26 db bc |V.......'....&..| +00000360 25 54 e8 ad 91 0e 07 f1 bc 48 ca c3 54 c2 da 3c |%T.......H..T..<| +00000370 26 16 03 03 00 04 0e 00 00 00 |&.........| >>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| -00000030 16 03 03 00 28 00 00 00 00 00 00 00 00 21 27 7f |....(........!'.| -00000040 32 c6 19 c4 a9 13 bf 5e 4b 53 5f c3 47 64 bb f8 |2......^KS_.Gd..| -00000050 21 d5 10 12 12 60 5e d8 e8 cf 1e fe 18 |!....`^......| +00000030 16 03 03 00 28 00 00 00 00 00 00 00 00 1c bd 15 |....(...........| +00000040 e4 c0 92 d5 1d 85 17 46 b8 46 6b 71 ef b4 36 9f |.......F.Fkq..6.| +00000050 f4 0c ca a6 81 f8 da 28 63 29 29 d6 2c |.......(c)).,| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 28 af e6 ee d0 75 |..........(....u| -00000010 df 97 22 b0 ff 46 8e 51 bb 23 70 8d 4a 22 01 b6 |.."..F.Q.#p.J"..| -00000020 13 34 68 fd 69 fe 0a 0f df 0e e6 41 48 49 8c e7 |.4h.i......AHI..| -00000030 d3 21 13 |.!.| +00000000 14 03 03 00 01 01 16 03 03 00 28 b7 b5 af 79 b7 |..........(...y.| +00000010 68 6f d7 fa d6 0f 73 8a 51 ea 97 a4 2f b1 29 58 |ho....s.Q.../.)X| +00000020 73 fd f2 15 17 c6 cd 1b 2d 1a 39 32 17 78 37 fe |s.......-.92.x7.| +00000030 87 71 da |.q.| >>> Flow 5 (client to server) -00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 10 16 77 |...............w| -00000010 99 da 71 ef 78 16 d7 cd 2c 7b 71 ba 8a 74 c1 65 |..q.x...,{q..t.e| -00000020 f2 f6 be 15 03 03 00 1a 00 00 00 00 00 00 00 02 |................| -00000030 72 d4 4a f6 6d 63 4c ad 02 46 36 18 61 47 61 7d |r.J.mcL..F6.aGa}| -00000040 50 08 |P.| +00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 a5 8f 5d |...............]| +00000010 59 44 d3 65 6c bd b1 68 3c d2 ee 1c 5d 8c 92 4c |YD.el..h<...]..L| +00000020 c2 89 f3 15 03 03 00 1a 00 00 00 00 00 00 00 02 |................| +00000030 33 c1 b3 d7 37 52 f7 57 3d 00 af 02 e0 e8 9b 6f |3...7R.W=......o| +00000040 ad 0f |..| diff --git a/src/crypto/tls/testdata/Client-TLSv13-AES128-SHA256 b/src/crypto/tls/testdata/Client-TLSv13-AES128-SHA256 index 6c7c3d4711..c6e3f37d2d 100644 --- a/src/crypto/tls/testdata/Client-TLSv13-AES128-SHA256 +++ b/src/crypto/tls/testdata/Client-TLSv13-AES128-SHA256 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,85 +7,87 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 63 fa e1 78 d5 |....z...v..c..x.| -00000010 53 77 64 44 97 45 79 94 e7 79 dd da 70 81 46 66 |SwdD.Ey..y..p.Ff| -00000020 ac 7c 77 a2 f9 29 ca 48 e6 53 56 20 00 00 00 00 |.|w..).H.SV ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 75 19 d0 fb e3 |....z...v..u....| +00000010 11 c7 2a 09 40 fb 18 4b 17 f8 94 3f 54 2b 33 c9 |..*.@..K...?T+3.| +00000020 96 c6 46 72 a5 92 31 7d d3 40 d3 20 00 00 00 00 |..Fr..1}.@. ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 01 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 36 |..+.....3.$... 6| -00000060 e2 c3 a0 14 f4 9c 50 9c 08 03 5e c2 b8 4b 66 85 |......P...^..Kf.| -00000070 71 fb bb 20 6e 97 3a f6 74 be 02 31 29 8e 18 14 |q.. n.:.t..1)...| -00000080 03 03 00 01 01 17 03 03 00 17 00 79 2a 2d 44 f4 |...........y*-D.| -00000090 12 2d 7c d6 8c 7a 27 76 a5 3a 6b c1 2d 40 8f 20 |.-|..z'v.:k.-@. | -000000a0 8b 17 03 03 02 6d 6e 16 f8 0f d2 67 3b e8 1a 95 |.....mn....g;...| -000000b0 2a ce 16 7b 95 21 7e 03 65 bf 01 ce e9 43 83 f6 |*..{.!~.e....C..| -000000c0 0e a9 d2 f2 d1 a3 2f d4 55 d2 27 83 44 3d f9 72 |....../.U.'.D=.r| -000000d0 00 8d 41 44 eb 93 ca 68 09 d1 bd f3 1a cc a0 53 |..AD...h.......S| -000000e0 a7 18 6e b7 27 d0 f5 e1 08 d8 9f 7b 37 bc 8f b9 |..n.'......{7...| -000000f0 84 6d e0 20 cf 99 bf c1 67 c8 00 74 4c 76 3e 2d |.m. ....g..tLv>-| -00000100 63 48 11 f1 75 30 ab a5 5b a2 cb 13 e9 e0 65 36 |cH..u0..[.....e6| -00000110 86 ce 8b 64 f6 dc e1 b7 0d 16 96 d1 ec 4b 93 d5 |...d.........K..| -00000120 6c 10 0d b7 d8 a2 45 b2 f0 e0 aa ab ab 11 8d d0 |l.....E.........| -00000130 2c fc 20 35 99 1b d6 3b 72 6d 88 03 80 5c 59 d4 |,. 5...;rm...\Y.| -00000140 04 18 ee 7a ed fe fb 52 c1 3c 93 95 e2 00 23 0d |...z...R.<....#.| -00000150 cc c1 4e 0a fb 55 33 93 9f c8 31 33 29 f5 12 3e |..N..U3...13)..>| -00000160 39 62 62 27 05 cf d2 be bd 7d 42 51 97 4f 71 95 |9bb'.....}BQ.Oq.| -00000170 10 f8 eb 0f d8 d1 69 aa 22 13 a8 fe 24 f6 87 a1 |......i."...$...| -00000180 9d ca cb 8f 99 39 2b fb 99 d9 18 8a fa fa 25 20 |.....9+.......% | -00000190 df 6a b3 d1 ac ce 56 8b 76 5d a9 46 1c 0b c7 57 |.j....V.v].F...W| -000001a0 90 02 10 55 85 49 48 89 d8 d6 4b 68 29 cb 28 66 |...U.IH...Kh).(f| -000001b0 1c d1 97 e6 a0 10 90 63 83 96 33 ee 5a 5a 5b 66 |.......c..3.ZZ[f| -000001c0 ca b3 0d be 6d 70 c5 de fd 78 c8 f8 e1 c5 78 ef |....mp...x....x.| -000001d0 07 2e 60 06 28 86 ed e6 bd 7b 37 33 0e 06 5e 06 |..`.(....{73..^.| -000001e0 fb 44 2b 96 16 fe 09 30 dc 03 53 bc c9 f9 6f 1e |.D+....0..S...o.| -000001f0 4b 79 a9 ac fe 20 3f 12 58 48 0c 40 a5 2f f2 6a |Ky... ?.XH.@./.j| -00000200 ea 44 69 93 54 4f 4d 6c 98 85 b1 c5 6f 50 83 b8 |.Di.TOMl....oP..| -00000210 8a 20 e3 b9 da b7 7d e4 ec 33 28 96 29 d7 dc a3 |. ....}..3(.)...| -00000220 d0 54 76 cd a6 99 17 e8 0f 14 d2 7c 4b 68 0a 80 |.Tv........|Kh..| -00000230 4f 0b 2b b5 16 68 dc 25 42 b5 0b f7 13 6a c5 81 |O.+..h.%B....j..| -00000240 c0 18 bc fb 40 86 cc 99 2e 70 2b 9a 72 eb be 57 |....@....p+.r..W| -00000250 a0 43 92 83 3b 7e c8 02 43 ab 17 7a 73 87 1a a2 |.C..;~..C..zs...| -00000260 1c 01 db b4 31 b1 d9 44 f1 c0 d9 de 27 bd 4c 8b |....1..D....'.L.| -00000270 1c f5 3d db d6 aa 98 7d 43 fe dd 64 85 8b c1 88 |..=....}C..d....| -00000280 a9 1e f1 04 0b 5d 3b c2 fd 3f b2 27 a7 28 d1 82 |.....];..?.'.(..| -00000290 13 fb 85 46 77 78 50 45 1b 4b c0 75 f2 32 8a 6d |...FwxPE.K.u.2.m| -000002a0 52 37 2e b1 80 e9 81 3b 60 c8 88 78 11 3f 0f 96 |R7.....;`..x.?..| -000002b0 d1 4b 19 49 91 b5 70 44 2d 62 a1 04 8f 98 89 ab |.K.I..pD-b......| -000002c0 75 1f 8a 97 d5 28 dc 88 20 92 7f f2 90 16 1b de |u....(.. .......| -000002d0 54 7c 5f 05 8f c9 70 a1 f5 8c 99 09 43 ab 09 73 |T|_...p.....C..s| -000002e0 dd 5e 62 c3 9f c8 e1 fa 9e 98 65 18 b5 5e 4e f9 |.^b.......e..^N.| -000002f0 85 a4 cc dc b8 12 1b eb 0a bc bc bd 1c 2f 51 0e |............./Q.| -00000300 8f 55 f1 10 22 06 ca cb f2 97 54 63 1c 98 36 9f |.U..".....Tc..6.| -00000310 1d 66 b0 17 03 03 00 99 f0 14 4d 69 84 b3 ca d4 |.f........Mi....| -00000320 96 9c e2 3c a4 55 f4 b6 01 1f 1e 1f 77 98 c4 84 |...<.U......w...| -00000330 5e ce 4c 0b bf ba 39 6b 36 a6 15 9c d1 90 87 d1 |^.L...9k6.......| -00000340 13 39 1c dd 86 0f a0 06 f7 fc f7 c9 10 4e 46 0a |.9...........NF.| -00000350 03 12 a0 bf 3e f3 7d e6 1b b7 ce ec 16 84 52 8e |....>.}.......R.| -00000360 bc 9c 9a 4f 2f a7 d9 aa f3 d6 be 0a f8 39 2d 18 |...O/........9-.| -00000370 28 9e 35 6e 25 25 46 9b 49 61 a6 ee 6a 87 d2 5f |(.5n%%F.Ia..j.._| -00000380 54 e6 fb 96 a3 e9 8a 05 c2 fb 71 0b d7 13 2e 19 |T.........q.....| -00000390 e5 5c a2 d0 f4 b3 34 95 e1 1d 24 ef 33 a2 0a d5 |.\....4...$.3...| -000003a0 65 b2 5f 46 73 45 33 69 d6 c3 f6 49 20 e2 00 bd |e._FsE3i...I ...| -000003b0 16 17 03 03 00 35 89 2f 34 08 44 35 6a 52 1a fd |.....5./4.D5jR..| -000003c0 e4 be 2b 0e 0a dd 2d c1 e7 e3 20 7a 0a 3e 87 1d |..+...-... z.>..| -000003d0 2b 64 87 c5 11 54 46 1a 5c 89 e2 97 3f 83 b2 b4 |+d...TF.\...?...| -000003e0 04 ed d2 c4 1d 3d 37 1f e1 62 f2 |.....=7..b.| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 df |..+.....3.$... .| +00000060 bb 62 90 62 b0 0d ee a9 4f 2a 45 58 9b d4 1d 0b |.b.b....O*EX....| +00000070 b8 49 ee 69 3a e4 48 65 a8 5a 94 60 99 00 2e 14 |.I.i:.He.Z.`....| +00000080 03 03 00 01 01 17 03 03 00 17 5a fa 5d b7 3e 06 |..........Z.].>.| +00000090 4f 87 9d 8e f7 c6 9d 6c 9a f9 c8 c1 48 69 a0 1f |O......l....Hi..| +000000a0 67 17 03 03 02 6d 0f 4d e4 f2 24 16 18 d7 0f 1f |g....m.M..$.....| +000000b0 eb e4 ff f9 71 99 63 21 41 ff e2 65 96 90 07 88 |....q.c!A..e....| +000000c0 b4 3b 23 8e 28 01 df c7 f3 71 71 36 25 6c d5 fe |.;#.(....qq6%l..| +000000d0 e7 7b 94 f3 2f ba e0 b5 02 1a 24 15 66 2f 4b 2c |.{../.....$.f/K,| +000000e0 8e ae da 30 67 9b 33 fa 95 bc ea 80 2d 85 b4 93 |...0g.3.....-...| +000000f0 28 42 f3 af ab 06 b6 a2 20 4e 9a 9a 07 c4 ad 5a |(B...... N.....Z| +00000100 ab 91 b6 f4 b3 ae ba 08 19 4d 0b 5a c7 f8 c6 1c |.........M.Z....| +00000110 db b8 61 d1 55 5f 02 34 44 cf c4 f1 7b 25 b2 12 |..a.U_.4D...{%..| +00000120 a0 37 80 3a 3d 47 b0 cc 92 31 8c 41 d9 85 fa ac |.7.:=G...1.A....| +00000130 ea 81 49 4e 60 b9 1a dc 2a 61 fa 89 e3 b5 93 b5 |..IN`...*a......| +00000140 cf 22 65 46 54 56 bc 3c f9 62 75 bd 04 8f 39 fb |."eFTV.<.bu...9.| +00000150 a3 94 92 20 44 5b 74 51 b1 38 fe 48 a4 26 74 82 |... D[tQ.8.H.&t.| +00000160 ac 11 04 25 a4 76 06 ce 51 47 2f 56 e8 1d 4f 74 |...%.v..QG/V..Ot| +00000170 d5 5c 00 b7 22 a5 47 3c 17 d5 f3 13 37 8e b0 82 |.\..".G<....7...| +00000180 da 5f d9 85 05 e7 12 79 0a 22 97 b5 9b 03 2d 61 |._.....y."....-a| +00000190 ab 19 4c 40 8a 9d d2 08 77 1d cc f0 b7 c7 48 ba |..L@....w.....H.| +000001a0 70 c4 e9 7f 1a ba 5b 0a d2 1e 0c 95 58 e9 f0 56 |p.....[.....X..V| +000001b0 c2 a6 a3 58 b6 b2 ea 85 55 77 c8 09 be 1a 7e 2c |...X....Uw....~,| +000001c0 ac d3 a0 ce 4c 6d 5a 02 c8 d9 7e b8 3b 46 e9 48 |....LmZ...~.;F.H| +000001d0 73 9b 97 1c 32 fe e1 99 c4 2e ee 81 38 27 12 d0 |s...2.......8'..| +000001e0 99 4f dd 18 a3 df 93 24 f3 0d 53 11 fe bb ff b7 |.O.....$..S.....| +000001f0 cf 5e 18 41 01 d4 d3 06 6a f4 5b e3 26 1f 7c fa |.^.A....j.[.&.|.| +00000200 ad 9f 61 a3 b3 05 5e b4 bf 94 9c 94 4b c9 3c 63 |..a...^.....K............U| +00000260 75 01 95 fa 21 f2 5f df d2 38 88 87 99 b0 10 4d |u...!._..8.....M| +00000270 e3 c9 74 28 59 14 90 89 6c 54 83 0b 71 c2 7e 4b |..t(Y...lT..q.~K| +00000280 39 21 92 0f ec 0e 98 53 39 75 54 0b 8d 12 6d 57 |9!.....S9uT...mW| +00000290 4f bd 2a 02 9a 44 ac 45 47 c3 05 71 cc 7e 60 0e |O.*..D.EG..q.~`.| +000002a0 93 1b 70 5b 42 4b d6 7f 01 2d 2a 73 ed 52 b2 8d |..p[BK...-*s.R..| +000002b0 2f fb 6e 85 5e c6 70 2d 3b e8 3d f1 57 6e c5 f8 |/.n.^.p-;.=.Wn..| +000002c0 7b f5 85 af 3e c8 64 28 00 24 1e 8a c9 6c f8 e3 |{...>.d(.$...l..| +000002d0 24 83 50 39 d0 4d b4 23 62 80 7d 6b f8 ee 5a f0 |$.P9.M.#b.}k..Z.| +000002e0 c8 63 df 43 6e ce 58 b9 39 18 91 82 3c 84 d9 12 |.c.Cn.X.9...<...| +000002f0 4a 4b 76 67 2c 07 91 97 ac c9 16 9c b5 7a 84 54 |JKvg,........z.T| +00000300 fb 99 2a 16 0a 00 a3 d6 04 ac 28 f5 d0 34 a6 3c |..*.......(..4.<| +00000310 ac 54 50 17 03 03 00 99 5f ec 9a 27 57 7e 33 28 |.TP....._..'W~3(| +00000320 b3 06 a4 36 6d 4e 59 3e 9a 75 95 3a d2 72 c0 7c |...6mNY>.u.:.r.|| +00000330 61 54 a5 46 01 91 2d 11 ac 6e 25 15 62 c4 8f 8f |aT.F..-..n%.b...| +00000340 f9 a8 a0 2a d1 51 71 12 9b df 4f 6a 1b e9 b1 c2 |...*.Qq...Oj....| +00000350 eb 83 00 fd 32 53 b3 5d 3b 6c 34 59 e9 42 21 ff |....2S.];l4Y.B!.| +00000360 7a 10 c0 81 81 13 01 db bb ef 8f 29 a3 ca 07 67 |z..........)...g| +00000370 b8 8f 5d 27 07 9c ed 67 51 f9 35 a7 11 bf 10 f7 |..]'...gQ.5.....| +00000380 f4 36 d8 dc fd 14 a8 56 18 c8 4e fb be 27 91 5f |.6.....V..N..'._| +00000390 6a a4 da 13 32 3d 6c d9 fa 18 5b 13 26 68 e2 a9 |j...2=l...[.&h..| +000003a0 d2 b6 72 2e dd 7d 69 30 32 fd 24 35 35 a1 1d bd |..r..}i02.$55...| +000003b0 03 17 03 03 00 35 05 56 0b a7 86 2f 45 c1 18 c2 |.....5.V.../E...| +000003c0 ad c5 2f 54 f6 5b b3 eb 45 fc 76 ff c9 60 89 e1 |../T.[..E.v..`..| +000003d0 f1 e2 3a 28 60 8d e9 54 62 4d 7a 30 4f 8c 73 b7 |..:(`..TbMz0O.s.| +000003e0 45 10 27 0f e8 56 91 1f 7c 07 3a |E.'..V..|.:| >>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 00 35 07 8e f6 0b 41 |..........5....A| -00000010 be 74 45 99 5e 35 59 4f 2e 59 d4 37 77 ca 53 d4 |.tE.^5YO.Y.7w.S.| -00000020 fd 33 bf dc 65 85 ee ad c5 d6 94 7e 6e e8 02 cf |.3..e......~n...| -00000030 15 d2 04 cb e1 9f 5e 94 dd 5f 37 17 95 17 0c b7 |......^.._7.....| -00000040 17 03 03 00 17 1f aa e9 7d 34 dc 12 da 3b cb dd |........}4...;..| -00000050 1c d3 b0 f1 79 ad cc 66 06 64 69 21 17 03 03 00 |....y..f.di!....| -00000060 13 b7 c7 a2 01 48 27 3a 44 e6 c6 47 a9 19 5f d2 |.....H':D..G.._.| -00000070 f8 96 98 70 |...p| +00000000 14 03 03 00 01 01 17 03 03 00 35 f9 89 62 39 dc |..........5..b9.| +00000010 cb f6 be b1 6f db 4c 8e 44 3c 1e 13 ba 25 db dc |....o.L.D<...%..| +00000020 f1 64 00 ea f3 56 ba 69 00 5b bd 64 05 8d c7 27 |.d...V.i.[.d...'| +00000030 39 b6 9c 2f ce e4 74 f1 ab 32 59 f1 6d 27 88 58 |9../..t..2Y.m'.X| +00000040 17 03 03 00 17 90 42 5e b1 ae d2 d7 71 4e 8f 51 |......B^....qN.Q| +00000050 91 3b e4 b0 97 ef 35 27 4f 56 79 81 17 03 03 00 |.;....5'OVy.....| +00000060 13 7b 6b c7 ab bf f2 de 55 52 b0 ee 67 40 ad bd |.{k.....UR..g@..| +00000070 6e 4d 22 f8 |nM".| diff --git a/src/crypto/tls/testdata/Client-TLSv13-AES256-SHA384 b/src/crypto/tls/testdata/Client-TLSv13-AES256-SHA384 index c5bac350a6..02eb5092fc 100644 --- a/src/crypto/tls/testdata/Client-TLSv13-AES256-SHA384 +++ b/src/crypto/tls/testdata/Client-TLSv13-AES256-SHA384 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,87 +7,89 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 3d 39 60 81 a4 |....z...v..=9`..| -00000010 cc 92 5d fd 8b 21 58 da 2e 4c e2 70 2b 12 d2 8c |..]..!X..L.p+...| -00000020 35 55 bc ba 79 c1 9e 6f 78 8c cf 20 00 00 00 00 |5U..y..ox.. ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 3e 8f 50 19 e5 |....z...v..>.P..| +00000010 1b d8 bf 48 bf c6 b3 38 d0 a4 9d 33 39 1f 36 72 |...H...8...39.6r| +00000020 9a a4 7d 9a e5 61 f1 9b da 0c a3 20 00 00 00 00 |..}..a..... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 02 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 10 |..+.....3.$... .| -00000060 0e 84 6c ef b3 7e f7 93 33 67 0e d0 5e e4 c6 a8 |..l..~..3g..^...| -00000070 5f c5 ac e7 85 06 86 a4 21 10 aa 56 18 3a 39 14 |_.......!..V.:9.| -00000080 03 03 00 01 01 17 03 03 00 17 a8 c3 84 a3 a2 42 |...............B| -00000090 ba c8 40 ef f8 53 02 58 d7 39 3f b2 34 2f 4e 71 |..@..S.X.9?.4/Nq| -000000a0 54 17 03 03 02 6d e5 41 6d ac 46 4e 7c 71 5c b9 |T....m.Am.FN|q\.| -000000b0 c5 aa 8d 7d f2 ef f3 40 22 9d db d3 83 49 45 94 |...}...@"....IE.| -000000c0 96 c6 85 74 ac f1 64 e2 80 7a 47 1e c1 f7 45 bb |...t..d..zG...E.| -000000d0 6e 56 b5 5b 90 1f 11 6e 47 d5 52 b7 5d d3 02 80 |nV.[...nG.R.]...| -000000e0 55 59 94 53 05 ab 5c aa 18 f8 7d d0 24 1d 6f 7a |UY.S..\...}.$.oz| -000000f0 c7 8e e9 80 61 dc b3 2b c0 74 09 d3 58 be e9 cb |....a..+.t..X...| -00000100 8b 53 ec 68 d7 b4 4b 70 83 42 bb 24 78 05 3c 8c |.S.h..Kp.B.$x.<.| -00000110 a9 54 af 0b 55 e2 d3 35 73 56 9b 9a 19 fd 93 9a |.T..U..5sV......| -00000120 21 c3 5f f8 cf fe e0 a1 63 62 b8 58 bf 35 29 1d |!._.....cb.X.5).| -00000130 69 58 f6 d3 e8 60 66 1b db 53 4b 26 0b 78 d9 5e |iX...`f..SK&.x.^| -00000140 73 d5 34 5a 11 57 98 8d 0c 9f 85 28 80 a4 ee 47 |s.4Z.W.....(...G| -00000150 f8 23 ca 31 7a 24 d5 dd 9b 49 7b 62 ab e5 69 fa |.#.1z$...I{b..i.| -00000160 e7 cc 83 0c 6e e5 0f 98 4c 07 86 2b a9 97 eb c0 |....n...L..+....| -00000170 78 1e 2b 83 7b 9a 6f 51 60 c0 b8 e1 99 f7 b0 e3 |x.+.{.oQ`.......| -00000180 bf d8 ec 4e 9f 69 27 c8 89 fc 18 21 58 8a ba 87 |...N.i'....!X...| -00000190 23 4c cd 95 b7 f1 a5 9a 79 5c d7 35 74 a5 4a 2c |#L......y\.5t.J,| -000001a0 fc c8 f4 b4 c4 de 3b 0e 08 12 e0 24 af 10 b3 e7 |......;....$....| -000001b0 04 74 a9 b4 de ee 98 b5 f1 ed 50 9f eb 5f eb 14 |.t........P.._..| -000001c0 56 6f d2 f2 b3 5e 40 34 0a f9 2d 44 de 0a 29 8f |Vo...^@4..-D..).| -000001d0 e5 86 dc 97 4f dd 26 b6 6a 8f 69 e9 5c 87 87 92 |....O.&.j.i.\...| -000001e0 65 04 d6 aa d0 79 bf ab 85 20 ca e9 bf 50 5d a9 |e....y... ...P].| -000001f0 80 2c 92 26 8e 19 ef 78 a7 68 64 ba 48 3c 24 2e |.,.&...x.hd.H<$.| -00000200 45 69 ce 94 17 e5 8a d7 81 02 de f1 d0 d8 c0 b8 |Ei..............| -00000210 86 c1 fb 2c 6d fe 42 1a ce e0 1c f0 29 15 ba fc |...,m.B.....)...| -00000220 8d 65 5e 6d ea 9e c3 95 f4 1b 15 bb 91 ac 9c 0b |.e^m............| -00000230 13 f0 fa ab 46 ed f1 c5 29 6e 45 db 4c cc 1e 45 |....F...)nE.L..E| -00000240 4d fc f2 6c 2b 0a d0 f3 70 69 32 cd 2f 23 6d f2 |M..l+...pi2./#m.| -00000250 5f f3 f4 f0 5c 1c d7 d3 a7 0c 8f 23 29 30 7a 8e |_...\......#)0z.| -00000260 c3 aa a8 71 21 5c ad b6 fb c6 bd 78 ac ab b1 a0 |...q!\.....x....| -00000270 11 84 23 61 7b ec 90 e1 2c 23 ec 9b 21 c8 ab 01 |..#a{...,#..!...| -00000280 e0 b9 5b 0b 4c ee a5 3c 5b c0 52 bd 60 7a b1 88 |..[.L..<[.R.`z..| -00000290 67 e3 c9 60 b9 04 a8 31 3e 34 d7 33 49 38 d9 a7 |g..`...1>4.3I8..| -000002a0 d1 04 b4 13 a8 5f 0b f2 41 77 d4 c8 b2 d3 0e d6 |....._..Aw......| -000002b0 8c dc 34 ad 2a d9 4b 5f 4a e2 17 0a be 2a 55 4a |..4.*.K_J....*UJ| -000002c0 44 a7 b0 0f d1 39 b0 e5 9d 77 6b d7 44 15 99 bf |D....9...wk.D...| -000002d0 c8 02 57 90 5b 73 29 fe ab 85 93 c3 dc 1c b0 b2 |..W.[s).........| -000002e0 14 78 01 99 f5 d2 db ef ae 0e 2a d9 17 1e 70 fa |.x........*...p.| -000002f0 bb 74 fe 93 a0 aa ff 79 cd 8b 6d 3d 79 66 d2 c8 |.t.....y..m=yf..| -00000300 90 c7 2c e6 54 26 de f7 4d b8 a7 73 cd 92 fc 42 |..,.T&..M..s...B| -00000310 ad 4e ff 17 03 03 00 99 c6 07 36 ce 58 9c fe 38 |.N........6.X..8| -00000320 aa b4 5c c8 8e f5 11 19 82 4c 4b 2b 0a 08 be 3f |..\......LK+...?| -00000330 11 76 06 4b d3 1b b7 fc 66 d9 db de fb 6a ee 29 |.v.K....f....j.)| -00000340 f6 a5 4b 96 f3 3c a0 67 44 73 d4 46 c5 d4 a1 f8 |..K..<.gDs.F....| -00000350 71 36 7c a5 62 79 fc be f9 34 55 85 31 8f fc e3 |q6|.by...4U.1...| -00000360 46 be 64 1e 2d 1b 21 c3 89 8e 1c cc df 30 05 57 |F.d.-.!......0.W| -00000370 2e d5 d5 67 11 10 46 1a af 99 01 0e fd 40 53 1f |...g..F......@S.| -00000380 b0 f0 76 3e 8e c1 7a 6a fe fe ef c1 08 6e ea 9b |..v>..zj.....n..| -00000390 75 6c 62 86 07 50 ee 1f ef 3b 55 fd 68 44 47 27 |ulb..P...;U.hDG'| -000003a0 07 c1 53 b5 13 c5 e0 a4 d6 9e 8a 3c 78 a0 04 b7 |..S............j.+...| +00000070 78 13 e0 9b e1 41 60 7d bd 83 69 d5 dc 1b 6d 14 |x....A`}..i...m.| +00000080 03 03 00 01 01 17 03 03 00 17 cd 1f b4 38 20 00 |.............8 .| +00000090 f5 52 89 92 be 23 95 90 92 b4 2a 06 f9 af f7 6c |.R...#....*....l| +000000a0 82 17 03 03 02 6d 4d 51 05 22 11 94 f0 2e 66 9b |.....mMQ."....f.| +000000b0 d0 bd b8 01 3c 23 03 3a 28 a7 74 80 81 e6 5c 5e |....<#.:(.t...\^| +000000c0 48 fb 4d 29 ab b3 17 c6 25 d8 15 ed 63 ef 07 61 |H.M)....%...c..a| +000000d0 0e 14 44 da 9f 6c c1 57 37 18 34 16 e0 3a 8d ab |..D..l.W7.4..:..| +000000e0 98 45 84 79 e0 19 56 26 61 e1 70 c9 7d 7b 55 b0 |.E.y..V&a.p.}{U.| +000000f0 5c d5 90 60 87 3c 55 f7 5e 4f df fc 05 6e 90 bc |\..`....1..%M| +00000130 ae c0 0f de 5b 44 97 d1 bf f6 7a 84 88 fb 82 7b |....[D....z....{| +00000140 79 5d f0 d8 39 a3 21 5a 67 16 b9 68 55 06 bd 50 |y]..9.!Zg..hU..P| +00000150 f2 83 77 8e e6 60 f3 46 57 d3 96 e1 f7 02 9e 1d |..w..`.FW.......| +00000160 d3 f2 29 0b 8e 34 0d 40 0b 1a 06 c5 33 52 bd 78 |..)..4.@....3R.x| +00000170 4e ff a2 ec 31 a1 c3 57 0d 82 59 ab a7 46 81 94 |N...1..W..Y..F..| +00000180 4f 31 63 25 75 3f b1 c9 99 ae 8a 60 6f 4a 96 d2 |O1c%u?.....`oJ..| +00000190 ce 37 4c 7b f4 f9 83 56 7e 4c 0a 6d a1 0c 80 00 |.7L{...V~L.m....| +000001a0 46 5a a9 fa d6 7c 9a 18 c2 36 b6 19 fa 76 37 65 |FZ...|...6...v7e| +000001b0 d4 c0 33 37 c3 90 26 df 4e c7 89 65 26 f3 cb 9d |..37..&.N..e&...| +000001c0 a2 a0 ae 50 72 89 45 db fb a1 44 3a 12 9e e7 4e |...Pr.E...D:...N| +000001d0 7a b8 aa f8 87 d2 8d 6b 43 ff 66 b7 ad 06 d5 09 |z......kC.f.....| +000001e0 ac 4e 75 db b2 d1 4c 43 81 26 43 bf a3 af 0f 97 |.Nu...LC.&C.....| +000001f0 83 a4 37 e1 aa 50 da e7 6b 3f a1 6c 80 ea b2 06 |..7..P..k?.l....| +00000200 6b 51 b9 b9 b0 83 71 b1 56 fe c7 f6 9e e7 69 1c |kQ....q.V.....i.| +00000210 e7 6b ba 0e 46 b9 9d cb dd 7f 9f bf a3 06 1d ba |.k..F...........| +00000220 5f eb 5e 1f dd 76 5f 8c d7 4e d9 a0 c1 75 28 61 |_.^..v_..N...u(a| +00000230 ea ef 4a 79 fc a6 8f 87 98 b2 26 ce 4e ae b7 9c |..Jy......&.N...| +00000240 ed 73 f3 98 a4 83 56 55 af d7 6d c3 90 fc ec 8d |.s....VU..m.....| +00000250 09 b4 a0 80 ac ff bc 1b 0b f9 70 4d 70 2b 19 ab |..........pMp+..| +00000260 d0 14 de 7c d2 ca b7 56 7f 19 d6 1a 11 04 50 3d |...|...V......P=| +00000270 12 dc 35 c1 ce b9 b0 e4 70 b3 27 4b 26 98 e3 af |..5.....p.'K&...| +00000280 7f 42 62 4b 75 33 61 54 2c 0f 03 bd b6 51 e9 5a |.BbKu3aT,....Q.Z| +00000290 bd 90 f9 af 8e 5f c2 ed aa 63 a4 3b c7 e1 cb cc |....._...c.;....| +000002a0 8b 0f 48 39 9b 6c 49 08 9b f4 27 d8 d8 92 56 a3 |..H9.lI...'...V.| +000002b0 ae a9 60 a9 ab 25 3d 3d ba 36 60 00 39 bd 60 ab |..`..%==.6`.9.`.| +000002c0 58 bd 4d c2 ab 13 2d 70 2d ef 0c a3 65 17 45 ad |X.M...-p-...e.E.| +000002d0 b2 fc 92 ce cb 74 e9 b1 59 cb b2 f1 c7 06 6b 9d |.....t..Y.....k.| +000002e0 12 7a c1 51 3d c8 81 91 88 02 fa be 18 f2 9d 4d |.z.Q=..........M| +000002f0 04 53 3f 39 e9 49 1f fb 99 1b 71 94 44 dd 09 c5 |.S?9.I....q.D...| +00000300 4a c4 71 45 2a d7 8f b9 a3 7d 2f df 23 d0 2c 83 |J.qE*....}/.#.,.| +00000310 1a 90 0e 17 03 03 00 99 60 fb bc b6 8b 4a 50 fb |........`....JP.| +00000320 88 0e 23 81 34 07 98 f8 07 35 5f 12 98 4d a3 63 |..#.4....5_..M.c| +00000330 c3 05 e7 99 eb 22 fe a9 da 60 25 70 e6 53 40 18 |....."...`%p.S@.| +00000340 f9 66 c4 3c 0f 3c 9b 7b 3e 86 5f e9 0f 91 4e ea |.f.<.<.{>._...N.| +00000350 4f 38 dd ef 1c a8 80 16 ae 59 50 70 23 92 40 22 |O8.......YPp#.@"| +00000360 01 d6 72 d4 e5 ee e7 b2 aa 07 d0 ac ee 63 8f dc |..r..........c..| +00000370 55 29 5e e5 6f be 28 1e b5 ad ca 9a 30 94 57 16 |U)^.o.(.....0.W.| +00000380 de 2b ba 7b 4a 50 a8 7a fa 9d 45 89 d1 3c 97 d3 |.+.{JP.z..E..<..| +00000390 9d c5 1d de cd d6 80 9b bd 68 1c e2 8b e3 bb dc |.........h......| +000003a0 c5 2a 4d 38 ae d6 b3 1d 2e 35 52 d0 c0 b4 ae fd |.*M8.....5R.....| +000003b0 68 17 03 03 00 45 ac f9 bb 95 b5 c3 fb dc e9 21 |h....E.........!| +000003c0 65 ef a9 2d 9c 6a 6b 51 35 9b 2b a9 6b f4 2f 66 |e..-.jkQ5.+.k./f| +000003d0 14 9d e0 30 fc eb 43 bb 4f 1b 50 13 65 72 35 74 |...0..C.O.P.er5t| +000003e0 dd 20 dc 88 54 e4 05 18 d7 02 ca 5b 27 dd 32 e9 |. ..T......['.2.| +000003f0 a2 68 68 cc 55 ff 25 21 87 13 9b |.hh.U.%!...| >>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 00 45 ee 00 18 db 1e |..........E.....| -00000010 67 aa 0f 9e 5c 20 7d 25 27 49 e8 d5 60 02 78 7b |g...\ }%'I..`.x{| -00000020 23 58 70 67 67 93 ca 4d 50 69 b1 cf d9 dc 31 d3 |#Xpgg..MPi....1.| -00000030 03 36 b0 07 39 59 52 e1 c7 36 6d 16 0b 56 03 c6 |.6..9YR..6m..V..| -00000040 a0 ec 0e 6b ed de 7b ba 51 96 83 b6 b8 77 8f 6a |...k..{.Q....w.j| -00000050 17 03 03 00 17 77 f6 6f 83 00 ad eb be 16 26 3d |.....w.o......&=| -00000060 27 e8 58 73 a2 bc 11 ff 14 54 4a 15 17 03 03 00 |'.Xs.....TJ.....| -00000070 13 bc 94 3f 6e ee 1b 40 b0 2e 03 13 47 28 38 4d |...?n..@....G(8M| -00000080 2d 26 5d 15 |-&].| +00000000 14 03 03 00 01 01 17 03 03 00 45 87 09 9a a9 a0 |..........E.....| +00000010 6a 25 7e 7f ef f2 95 97 45 9f 25 b3 fc 70 1d a5 |j%~.....E.%..p..| +00000020 c5 e3 bc 95 95 c2 2e 9b 46 d9 cd 5e 04 29 33 9f |........F..^.)3.| +00000030 8c 35 d5 b0 4c 35 e7 f4 02 1a 1a 9f 07 e5 e4 9d |.5..L5..........| +00000040 6f 63 35 d5 c9 21 9f 90 95 a5 14 14 fc 8a bb 41 |oc5..!.........A| +00000050 17 03 03 00 17 3d e1 e9 33 73 b4 29 68 d2 50 d2 |.....=..3s.)h.P.| +00000060 58 9b 85 21 07 3a a8 87 92 37 53 90 17 03 03 00 |X..!.:...7S.....| +00000070 13 24 0a cf 8a 3e 88 9d 9f 57 81 26 10 06 fc 70 |.$...>...W.&...p| +00000080 1d fa da 81 |....| diff --git a/src/crypto/tls/testdata/Client-TLSv13-ALPN b/src/crypto/tls/testdata/Client-TLSv13-ALPN index f40340ac15..d83b270019 100644 --- a/src/crypto/tls/testdata/Client-TLSv13-ALPN +++ b/src/crypto/tls/testdata/Client-TLSv13-ALPN @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 12 01 00 01 0e 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 30 01 00 01 2c 03 03 00 00 00 00 00 |....0...,.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,87 +7,89 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 93 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 b1 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 10 00 10 |................| -000000d0 00 0e 06 70 72 6f 74 6f 32 06 70 72 6f 74 6f 31 |...proto2.proto1| -000000e0 00 2b 00 09 08 03 04 03 03 03 02 03 01 00 33 00 |.+............3.| -000000f0 26 00 24 00 1d 00 20 2f e5 7d a3 47 cd 62 43 15 |&.$... /.}.G.bC.| -00000100 28 da ac 5f bb 29 07 30 ff f6 84 af c4 cf c2 ed |(.._.).0........| -00000110 90 99 5f 58 cb 3b 74 |.._X.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 10 00 10 00 0e |................| +000000f0 06 70 72 6f 74 6f 32 06 70 72 6f 74 6f 31 00 2b |.proto2.proto1.+| +00000100 00 09 08 03 04 03 03 03 02 03 01 00 33 00 26 00 |............3.&.| +00000110 24 00 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da |$... /.}.G.bC.(.| +00000120 ac 5f bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 |._.).0..........| +00000130 5f 58 cb 3b 74 |_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 c2 2e 95 0c cf |....z...v.......| -00000010 63 40 d8 a0 bd 51 27 e2 62 79 72 26 b1 d4 38 5b |c@...Q'.byr&..8[| -00000020 50 03 66 d2 2e 8e 46 b7 cf 40 0a 20 00 00 00 00 |P.f...F..@. ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 cb f0 b7 02 94 |....z...v.......| +00000010 1a 0a b2 1d 4b 7c 43 99 cb 50 bd aa 72 80 91 98 |....K|C..P..r...| +00000020 bc 29 68 eb bd 81 b5 32 7c fe 9b 20 00 00 00 00 |.)h....2|.. ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 03 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 21 |..+.....3.$... !| -00000060 18 6f 64 73 17 22 b0 11 60 92 ab 01 b3 fb 8a 2d |.ods."..`......-| -00000070 27 15 5a 46 ec 6c c3 0c a7 73 00 b2 7e 9f 4f 14 |'.ZF.l...s..~.O.| -00000080 03 03 00 01 01 17 03 03 00 24 68 7f 90 b2 66 74 |.........$h...ft| -00000090 36 f5 fc 65 55 19 c1 78 65 d8 dc 46 fb ad b6 2c |6..eU..xe..F...,| -000000a0 89 f3 d1 fd 3e 46 c2 50 01 24 72 2a 64 98 17 03 |....>F.P.$r*d...| -000000b0 03 02 6d 40 bc da 1a 9c 8b d7 15 24 4f d4 c1 9c |..m@.......$O...| -000000c0 8b 3c 8b 51 37 41 46 a8 cb b4 9c 50 c0 be 72 ef |.<.Q7AF....P..r.| -000000d0 81 d3 7f ed ec 96 e2 c2 08 0e 7e 23 95 c3 4f 79 |..........~#..Oy| -000000e0 01 2d 26 81 c1 ba d0 58 61 d8 c5 b7 e7 79 4f 3e |.-&....Xa....yO>| -000000f0 d8 c1 07 ae de 6a 1e 78 eb 9d 8c a1 2a 57 9c 56 |.....j.x....*W.V| -00000100 1f 6c 6e bb 2d 70 6d 55 92 10 3f 39 7e 8a d2 30 |.ln.-pmU..?9~..0| -00000110 e5 1c 4b df c0 96 d0 de 16 09 c6 34 23 16 54 a8 |..K........4#.T.| -00000120 f5 0a 1a af 9a 27 60 89 19 6a 3e 69 12 de 76 4c |.....'`..j>i..vL| -00000130 88 f2 ca 6c 0b 94 b8 d2 bc 09 f0 d3 86 74 3c 3f |...l.........tq..| -00000290 5c 9a b7 6b f2 d0 1e 55 2c 1c ac 5d 21 64 a2 d2 |\..k...U,..]!d..| -000002a0 a9 dd a8 49 7c 22 26 8e ca 75 a3 ef 52 42 d0 38 |...I|"&..u..RB.8| -000002b0 f4 02 60 af ee 33 30 46 90 a5 b3 7a 66 c8 ab 10 |..`..30F...zf...| -000002c0 3f 76 d1 76 aa 5d da c4 29 ca d7 22 c4 44 b4 e8 |?v.v.]..)..".D..| -000002d0 64 b6 6d 0f 16 cd d9 e9 62 17 91 64 03 0f 99 8f |d.m.....b..d....| -000002e0 c6 97 c8 4b c9 45 c4 31 e4 1f a8 b0 aa 67 02 e7 |...K.E.1.....g..| -000002f0 20 68 2a 89 f9 b8 e8 ce 93 d0 a3 1b 0d d1 4c 45 | h*...........LE| -00000300 c2 19 ac aa 87 43 95 ae c4 56 56 fe 4b 0e af db |.....C...VV.K...| -00000310 08 6a 14 8e 8b 7e 64 9d 6d 6e 0f 78 7c e4 f8 51 |.j...~d.mn.x|..Q| -00000320 17 03 03 00 99 2d 7b fa e6 dc da 89 93 da 93 91 |.....-{.........| -00000330 9c 25 08 50 66 eb a7 e4 f1 20 da 33 e5 cd a5 89 |.%.Pf.... .3....| -00000340 00 a7 47 9c 84 e6 cf 6d e1 86 02 af fb 54 ff b3 |..G....m.....T..| -00000350 b5 a4 e1 46 1a 3a 89 ad f0 c4 63 fe d2 eb bb 6c |...F.:....c....l| -00000360 6e cc a9 95 b0 e4 df f8 44 46 16 43 07 d7 8e 6e |n.......DF.C...n| -00000370 9b ee 0b 22 7a 23 f4 b8 3e fd fe 99 13 9d 18 bc |..."z#..>.......| -00000380 77 99 2f 90 21 a1 5f cc 9f 08 e2 75 44 2f bf 58 |w./.!._....uD/.X| -00000390 70 f2 95 b2 13 20 f3 ed 51 de e8 02 c6 ca 44 57 |p.... ..Q.....DW| -000003a0 eb 0b 9f 3e 61 f1 1a 6e 6b 13 f5 14 f3 43 19 f6 |...>a..nk....C..| -000003b0 7d 46 3a 73 49 2f fd 83 c3 68 c7 ba b4 e8 17 03 |}F:sI/...h......| -000003c0 03 00 35 67 2b 2b 9b f0 f3 d9 09 c4 01 20 ea 22 |..5g++....... ."| -000003d0 c9 7c e6 7a ce 3f 7f 84 c2 1f 6e eb d6 ce 85 b8 |.|.z.?....n.....| -000003e0 2c 3c 9f 77 8b 37 11 dd 64 d1 ae ba 85 50 7e ba |,<.w.7..d....P~.| -000003f0 14 a9 05 ff 82 3b e5 7d |.....;.}| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 78 |..+.....3.$... x| +00000060 05 c7 69 04 93 8d 93 d7 d3 eb 0b 00 70 98 99 c1 |..i.........p...| +00000070 2a a9 84 7f e5 6c 4c d0 b1 f3 10 71 11 c6 78 14 |*....lL....q..x.| +00000080 03 03 00 01 01 17 03 03 00 24 6d 09 77 65 0f 29 |.........$m.we.)| +00000090 b9 e5 1d df a9 e7 98 f6 f3 37 70 4b 8f cf 49 db |.........7pK..I.| +000000a0 fb 8f 73 fc 7f 9e ea e0 a0 35 ee 93 a0 34 17 03 |..s......5...4..| +000000b0 03 02 6d 90 a9 c1 79 ef b1 e3 7a 7d 3d f6 8e bd |..m...y...z}=...| +000000c0 18 04 6a 1c d4 72 52 ad 36 fc 21 c6 0b 94 8b 98 |..j..rR.6.!.....| +000000d0 0e 98 54 c5 ff 3c 6d d2 15 c4 63 51 a6 00 4b 28 |..T.. .|P...CJ .| +00000210 68 1c 2f bf 4e 72 a0 51 9f 22 d1 51 bf b4 b0 b1 |h./.Nr.Q.".Q....| +00000220 fe 78 2b 0e a9 6d f1 27 82 46 a9 2d 43 73 29 0c |.x+..m.'.F.-Cs).| +00000230 c2 6d f8 0c c9 78 d3 ba 5d 5f 96 13 fd 2f 1f e9 |.m...x..]_.../..| +00000240 8f 93 e6 61 7e 0e 07 49 cb 5c af 51 72 85 67 b8 |...a~..I.\.Qr.g.| +00000250 63 e8 f9 4f 7c d7 e4 d1 25 c0 ed 26 de 1f 65 d4 |c..O|...%..&..e.| +00000260 2a 3b 23 30 38 12 56 97 01 f1 bd 3f 96 23 72 89 |*;#08.V....?.#r.| +00000270 2e 88 d6 6a 9f 52 a7 3e 42 72 dc c4 e0 05 81 42 |...j.R.>Br.....B| +00000280 45 e1 c5 6f 32 82 bf 4e 38 a0 06 eb 99 2c 8b 79 |E..o2..N8....,.y| +00000290 f9 2e a7 26 3a 78 fd 90 66 7c 0f 53 4c 4a 00 c2 |...&:x..f|.SLJ..| +000002a0 9d 48 2c a5 37 02 e0 cd 5d 16 1c d4 ee 03 79 71 |.H,.7...].....yq| +000002b0 c6 c2 e4 15 98 6b 40 bb e9 b6 21 a1 e7 fc 68 b2 |.....k@...!...h.| +000002c0 70 cb d5 e1 5b 2d f7 b7 6b d5 2c 50 19 8a 6a 50 |p...[-..k.,P..jP| +000002d0 54 97 bc 90 2b b2 20 6a 9c 96 5d cf d0 5f 9a 6d |T...+. j..].._.m| +000002e0 b4 70 33 ba 83 2d f7 86 41 8b 88 20 51 ae a8 02 |.p3..-..A.. Q...| +000002f0 af 63 ea 1c 0c b0 99 19 73 56 02 68 a9 50 b2 43 |.c......sV.h.P.C| +00000300 6b 9c 5d c2 f3 48 dd fe a3 7c 2b 28 a5 e5 25 ed |k.]..H...|+(..%.| +00000310 05 14 a3 d6 63 25 2e 44 4e f9 fd 6d 9e 16 ae e6 |....c%.DN..m....| +00000320 17 03 03 00 99 b8 3d db c6 ee 13 dd 97 29 32 71 |......=......)2q| +00000330 67 28 89 90 cf c5 23 4a 9e 94 31 7c 5d 6c b3 7c |g(....#J..1|]l.|| +00000340 46 a6 b2 98 c2 e2 b9 a6 c1 7d fd 22 5c 7b 88 67 |F........}."\{.g| +00000350 cc c6 4a 82 83 f9 8a 09 8b 2c d5 9f 0f c3 1d 23 |..J......,.....#| +00000360 b5 27 89 ba 5e 0f 74 96 58 da 5e 3f 63 b2 f3 44 |.'..^.t.X.^?c..D| +00000370 31 86 d0 da 18 54 eb 34 89 fc 11 ee 8e af c1 42 |1....T.4.......B| +00000380 bd 6b 31 c3 f1 54 96 fd 86 37 0d 20 b9 70 3b 88 |.k1..T...7. .p;.| +00000390 20 87 c3 9f 1a 6b 90 7d 84 1d 69 42 01 bc 3d 81 | ....k.}..iB..=.| +000003a0 c9 ea 82 a3 d1 18 bf 4c 3a dc d4 db 92 cc 5d b2 |.......L:.....].| +000003b0 f2 dd b4 17 39 13 ef 45 cc 66 4d d1 f2 a4 17 03 |....9..E.fM.....| +000003c0 03 00 35 3f 02 3e 15 06 ad 50 e9 14 30 be 33 d9 |..5?.>...P..0.3.| +000003d0 18 1c 44 df 42 fa 3f aa 84 31 a7 b3 d8 3c 8e 04 |..D.B.?..1...<..| +000003e0 b3 fc 41 66 4a f0 71 03 0d 0b b5 46 f1 34 f5 37 |..AfJ.q....F.4.7| +000003f0 4c 1c 1a 05 75 98 58 f3 |L...u.X.| >>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 00 35 39 60 84 ac d0 |..........59`...| -00000010 b9 47 4b 47 49 af 52 88 3c 12 50 0d 65 46 f7 a1 |.GKGI.R.<.P.eF..| -00000020 50 39 c5 39 22 b3 45 e6 d3 25 44 a6 bc 3d bc 69 |P9.9".E..%D..=.i| -00000030 35 1d 61 cf a0 3c 53 77 94 67 66 ae 37 7f 3f 84 |5.a..IGDd..k..|.| +00000030 cc e4 01 9e bd 3d a7 30 cd a1 ff 23 d2 fc 7f fc |.....=.0...#....| +00000040 17 03 03 00 17 6b a9 a0 55 b2 53 19 0f 58 7c 79 |.....k..U.S..X|y| +00000050 5a 19 9a 4a 9b 1b 77 8d 78 9c 9c b6 17 03 03 00 |Z..J..w.x.......| +00000060 13 f0 e9 91 46 e4 0a a1 0f e9 43 8e 10 d7 61 80 |....F.....C...a.| +00000070 95 4b db 96 |.K..| diff --git a/src/crypto/tls/testdata/Client-TLSv13-CHACHA20-SHA256 b/src/crypto/tls/testdata/Client-TLSv13-CHACHA20-SHA256 index c4c29e1b85..6becede60f 100644 --- a/src/crypto/tls/testdata/Client-TLSv13-CHACHA20-SHA256 +++ b/src/crypto/tls/testdata/Client-TLSv13-CHACHA20-SHA256 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,85 +7,87 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 3d 50 78 7e 02 |....z...v..=Px~.| -00000010 dc 79 3a 32 6b 6a 50 24 90 65 72 5e cd fc 96 18 |.y:2kjP$.er^....| -00000020 e1 47 21 43 50 5a 32 0f cf e7 ae 20 00 00 00 00 |.G!CPZ2.... ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 37 bf a4 0d 23 |....z...v..7...#| +00000010 be 83 2a 9d 84 f6 de 1c 53 be 13 92 f3 de 35 a9 |..*.....S.....5.| +00000020 cc 95 6d e1 c6 05 2f 53 a6 ce 9f 20 00 00 00 00 |..m.../S... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 03 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 cd |..+.....3.$... .| -00000060 e6 a0 65 6b 1c 9e 5c f0 b7 f9 82 8e 37 d1 c4 35 |..ek..\.....7..5| -00000070 31 c1 3f df 4a 70 33 ba 38 d9 3f 74 0c c2 61 14 |1.?.Jp3.8.?t..a.| -00000080 03 03 00 01 01 17 03 03 00 17 63 c3 02 95 17 f4 |..........c.....| -00000090 a8 76 8d 54 ad 3c 10 c7 cc e8 08 13 d6 9b 0b 0f |.v.T.<..........| -000000a0 db 17 03 03 02 6d 0f ec 8d 0d e5 1a 85 02 3f 92 |.....m........?.| -000000b0 44 09 ac e6 da 2d c8 d7 14 68 00 9d 22 bf 05 1d |D....-...h.."...| -000000c0 cd 07 b5 8b b9 84 3f cf cc c5 48 40 00 2e e1 c9 |......?...H@....| -000000d0 0b 41 6d 39 cb 05 00 d6 7a 10 4a ba 96 e1 96 a9 |.Am9....z.J.....| -000000e0 70 d8 20 76 2f d2 70 83 cb a0 d1 72 43 db 09 cd |p. v/.p....rC...| -000000f0 2d e5 89 11 e8 81 15 13 dd 29 2a c8 88 4a d8 73 |-........)*..J.s| -00000100 35 3d 8e 8a 03 ca ed 32 a9 16 bb 71 88 d5 5f a1 |5=.....2...q.._.| -00000110 1b ec ee 9e 3d 8c f4 d0 c2 5b 72 84 3c 75 aa de |....=....[r......).@..| -00000130 3c f4 32 90 c0 25 b7 f0 fc 6b 16 c1 ab 80 69 79 |<.2..%...k....iy| -00000140 5e dd 95 5a ba e4 5a 68 64 a6 44 f5 a2 3a d6 30 |^..Z..Zhd.D..:.0| -00000150 7e b1 27 b1 79 44 ef 79 95 51 75 02 24 2c ea ab |~.'.yD.y.Qu.$,..| -00000160 d5 e1 fd aa 81 55 89 cf bc 9c 11 2b 0b 4a 99 9f |.....U.....+.J..| -00000170 50 93 68 a1 c8 79 3d d8 aa d8 54 e3 d5 1a 97 90 |P.h..y=...T.....| -00000180 33 87 a9 70 1d 9d ba 78 d0 87 8a 98 6f 1b 1e b0 |3..p...x....o...| -00000190 e8 92 78 df 21 61 88 36 fa 14 4b c9 b1 a4 93 88 |..x.!a.6..K.....| -000001a0 b4 26 9a 13 1b 8f 6c 84 bc b1 78 a8 a1 e7 64 4b |.&....l...x...dK| -000001b0 d4 56 37 b6 d1 80 6d 8d 0f c2 2f 0c 0b 9e 42 8e |.V7...m.../...B.| -000001c0 37 e0 9b 73 e4 ab cf 24 43 86 bc d0 40 fd db 4a |7..s...$C...@..J| -000001d0 c1 f6 55 56 e9 54 5c c7 3c 17 36 44 7b 99 7e 03 |..UV.T\.<.6D{.~.| -000001e0 48 f7 a9 cc 4d b9 b4 bf 09 dd 96 37 8c b5 d5 f0 |H...M......7....| -000001f0 bd af 19 0e 82 6c 5d b6 96 ca 98 a2 56 d3 68 f2 |.....l].....V.h.| -00000200 94 cd 7a 94 8d b3 97 16 03 3d 6a 94 5d 66 32 5d |..z......=j.]f2]| -00000210 11 28 d9 7b c1 8e b1 c4 ec b7 54 94 3b 80 f9 b3 |.(.{......T.;...| -00000220 9d 2d 74 3c 02 55 a0 4a 02 b7 61 19 b0 a2 e6 44 |.-t<.U.J..a....D| -00000230 3e c8 81 e3 a4 18 d7 4c 16 d2 fb e3 90 2c 61 71 |>......L.....,aq| -00000240 a0 82 28 48 de 7c 7c bd ba 27 85 e1 fd c9 df ac |..(H.||..'......| -00000250 b2 61 0f 80 f3 86 31 8f c1 a3 dc b6 43 98 c9 0e |.a....1.....C...| -00000260 73 dd 1d cf 61 f6 25 23 44 ca 5a 4c 12 6c bb 35 |s...a.%#D.ZL.l.5| -00000270 32 c4 32 0d cc 8c 11 b9 4a ee 88 92 d6 27 d4 a8 |2.2.....J....'..| -00000280 25 59 1e fe ba 41 63 50 1e b1 e2 c5 75 95 7d 56 |%Y...AcP....u.}V| -00000290 60 ed 81 d0 e7 12 05 e7 0f b4 5d 6f 27 98 76 72 |`.........]o'.vr| -000002a0 e7 8a e1 ff 5d 6b 29 9f 75 24 a5 fd 6d 1f bc 58 |....]k).u$..m..X| -000002b0 f8 b8 67 d1 b0 21 25 f1 09 c7 f9 41 f5 85 1b eb |..g..!%....A....| -000002c0 56 f6 14 83 bb 08 d5 3e ed 22 e1 c5 9c 14 cc de |V......>."......| -000002d0 d3 45 e1 0e e3 cb 61 b5 ab f6 03 41 bc 71 5d 17 |.E....a....A.q].| -000002e0 99 c6 8f 13 41 f8 78 e8 da 3d 40 1c 1a 47 a9 b2 |....A.x..=@..G..| -000002f0 e7 22 90 2f d8 8f 6f 0d 36 02 b1 36 fa 6d 26 6f |."./..o.6..6.m&o| -00000300 82 e2 54 74 a0 26 3c 0c 57 bb d7 01 ff ee 6f 16 |..Tt.&<.W.....o.| -00000310 63 92 00 17 03 03 00 99 ea 68 e4 08 10 2d 6f b6 |c........h...-o.| -00000320 a2 f8 f5 03 35 00 63 c8 da 23 4c 96 b8 2a 5c f5 |....5.c..#L..*\.| -00000330 9d 24 6f 5a 5b c3 aa d2 df d9 16 b6 9a 91 79 39 |.$oZ[.........y9| -00000340 18 35 65 28 80 97 fe 76 26 79 45 80 4c 8a 7c cc |.5e(...v&yE.L.|.| -00000350 a2 36 1a 8a ad aa f3 06 08 1f b7 4a 9b 22 7f 37 |.6.........J.".7| -00000360 62 3a ae 13 c0 f4 22 05 6f fc 92 5a e0 ed f1 5b |b:....".o..Z...[| -00000370 c6 6b 4f 18 83 a6 39 a7 5c 1c 53 32 08 76 25 03 |.kO...9.\.S2.v%.| -00000380 20 d5 47 57 76 06 38 4e bd b8 dd 7f 0e 37 b3 4e | .GWv.8N.....7.N| -00000390 f1 f3 b1 98 d4 f0 d6 00 ea 6a e9 ec a4 b0 fd 20 |.........j..... | -000003a0 2d 67 20 c8 ef 9f a1 97 00 cd 15 c2 8e c2 ba 46 |-g ............F| -000003b0 76 17 03 03 00 35 d0 f3 18 d0 71 4c 66 8c 40 ef |v....5....qLf.@.| -000003c0 57 92 f3 56 5a 42 1e 4c e6 13 5a cc ab 26 90 6a |W..VZB.L..Z..&.j| -000003d0 9b ca 49 b0 81 ec 38 30 44 27 5a fa ac d6 1f 5c |..I...80D'Z....\| -000003e0 bc 64 4b 0b c3 69 b2 5b ef 7f 4a |.dK..i.[..J| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 3d |..+.....3.$... =| +00000060 1c 09 5d 44 bc 3f 39 2d 9a dd c1 15 0f dc 5d 7c |..]D.?9-......]|| +00000070 93 06 89 42 27 f0 cd 63 55 3e 74 3f 87 10 7a 14 |...B'..cU>t?..z.| +00000080 03 03 00 01 01 17 03 03 00 17 bd 92 4d 21 8d dc |............M!..| +00000090 7b 19 1b f9 44 64 38 5c 61 c3 19 70 75 29 05 e8 |{...Dd8\a..pu)..| +000000a0 ef 17 03 03 02 6d a4 a0 79 ad 41 c1 d2 6b 78 fd |.....m..y.A..kx.| +000000b0 4b 1f 6f 72 c4 92 94 17 dd 40 80 b6 f2 a0 85 4d |K.or.....@.....M| +000000c0 ba 4c 3a 34 80 67 21 2f 6d 2e fc 4e a8 2b ab 86 |.L:4.g!/m..N.+..| +000000d0 18 6c 03 2d e6 ac 2c 3c ce 4c 2d ff 7d fd 44 fc |.l.-..,<.L-.}.D.| +000000e0 4e 1d 62 c5 b1 22 60 6c 56 1e 6d bf d8 90 02 cb |N.b.."`lV.m.....| +000000f0 d2 6c 52 7c f3 51 11 49 62 7a f0 f3 8f 51 bf 0e |.lR|.Q.Ibz...Q..| +00000100 bc 07 9b 1f d9 32 26 d8 c5 01 4d 84 31 3f 4b 33 |.....2&...M.1?K3| +00000110 d0 c7 0c 86 89 bc 88 7d 70 6d 70 38 89 5b 8c d0 |.......}pmp8.[..| +00000120 4d c0 9d 35 20 50 52 c7 5d 9c b3 51 30 46 6a 12 |M..5 PR.]..Q0Fj.| +00000130 54 36 34 55 9a 25 43 39 28 40 13 9a 56 fa a7 f9 |T64U.%C9(@..V...| +00000140 1f 3c 0f da fb ce c2 ed da 9f 6c 99 53 76 74 a8 |.<........l.Svt.| +00000150 4b 62 8a 55 cf a1 bc 5f 10 bb 8e 77 c8 4f bd 1b |Kb.U..._...w.O..| +00000160 d4 72 07 00 4c 8b b6 d7 3a 1a 43 93 34 b4 0a 2d |.r..L...:.C.4..-| +00000170 62 62 a1 e6 96 1a 71 38 a9 06 ae 6f ca 08 6f 52 |bb....q8...o..oR| +00000180 09 c7 c8 37 13 4c 3b be 7b 60 29 7b d4 28 3e 71 |...7.L;.{`){.(>q| +00000190 55 29 bd ab 62 3c 90 1f 8c ed 55 5d 81 85 0b 63 |U)..b<....U]...c| +000001a0 57 8e f9 50 eb b8 3e c6 e0 b0 fa cc 68 42 41 0c |W..P..>.....hBA.| +000001b0 b0 34 f7 5d 39 f4 cd fe 9c ac 42 78 60 b2 27 55 |.4.]9.....Bx`.'U| +000001c0 c2 2e e0 aa 84 00 8f 80 11 d2 52 92 78 2d b7 f6 |..........R.x-..| +000001d0 70 37 e8 87 0b 13 04 29 5b a2 50 fb 4d ad 5e 98 |p7.....)[.P.M.^.| +000001e0 59 a1 f7 7a 80 30 42 c2 59 96 97 f8 47 88 25 f3 |Y..z.0B.Y...G.%.| +000001f0 25 02 ec 9c f3 93 97 63 b1 b2 90 0a 96 66 17 68 |%......c.....f.h| +00000200 3d f0 32 5b d2 4a 3b 97 95 30 f1 22 be f9 04 87 |=.2[.J;..0."....| +00000210 8d 58 d6 81 62 00 85 6c 76 07 c4 7d 05 42 0e 25 |.X..b..lv..}.B.%| +00000220 7b 0d 92 42 bb 8a 36 47 11 2f f1 59 aa 01 44 28 |{..B..6G./.Y..D(| +00000230 96 f0 f6 22 c4 74 c7 1b 3f 9d 67 30 f5 72 f8 24 |...".t..?.g0.r.$| +00000240 b7 5c 9f d5 cb 51 a8 e5 6c b3 f6 0b 00 86 fc bb |.\...Q..l.......| +00000250 ab 1f d8 89 07 e9 a6 0b 48 93 e6 6e ca a3 b4 9a |........H..n....| +00000260 bc 5c 9c 4e ae 64 17 9d 4d 1f b7 c9 fa 8e a3 94 |.\.N.d..M.......| +00000270 a0 da 4e 17 1a b8 f8 1a a7 df dd cb 29 3b bb cf |..N.........);..| +00000280 1a 26 a2 74 d6 b2 80 63 f4 fb 28 10 ea 27 fa 48 |.&.t...c..(..'.H| +00000290 d8 e6 68 34 0f 5f ca 20 e9 3e 01 77 f2 e8 23 70 |..h4._. .>.w..#p| +000002a0 29 67 60 96 81 63 2e 7f 7d d3 30 fa 4c e1 fc bd |)g`..c..}.0.L...| +000002b0 a2 94 e5 1a 0c f3 bc 68 19 aa 20 09 7c 37 68 ac |.......h.. .|7h.| +000002c0 d2 3e 08 1c e5 fb e6 ef b4 1b 8b 58 9c 32 ef 66 |.>.........X.2.f| +000002d0 a0 a3 32 4f ce 37 5b 2f 99 d0 65 1a 26 2c 69 ca |..2O.7[/..e.&,i.| +000002e0 53 2a a2 cb 95 b6 a4 aa bf 51 53 ab 56 73 22 ad |S*.......QS.Vs".| +000002f0 b0 26 18 dd 9c 34 f4 01 bc 10 7c fb b0 b4 97 55 |.&...4....|....U| +00000300 93 fb 94 b1 16 2f 31 50 a5 fa d4 1d 7c b1 a3 3a |...../1P....|..:| +00000310 28 c1 ab 17 03 03 00 99 37 2c 7e fb bc 61 42 37 |(.......7,~..aB7| +00000320 b4 d1 ab 9c e2 45 25 1f dd 2a d3 f2 90 a1 25 01 |.....E%..*....%.| +00000330 26 44 18 6b f3 ba c5 a1 e2 d2 71 c8 00 81 97 2d |&D.k......q....-| +00000340 08 a7 f3 4e 9e 8c b4 d2 a4 22 77 89 65 23 82 56 |...N....."w.e#.V| +00000350 f6 21 f3 5f 06 0c 50 9b 5b 09 b5 b9 a4 d8 d5 dd |.!._..P.[.......| +00000360 e6 2b 98 8b 7d c7 0e 5c 00 1d 2b ab 52 d0 1a 57 |.+..}..\..+.R..W| +00000370 9f d2 ee 5c c8 5c 9e da df 36 f5 29 2c 31 ec 93 |...\.\...6.),1..| +00000380 36 61 2c a6 a2 09 04 f5 58 ed ac e8 cc b9 20 11 |6a,.....X..... .| +00000390 94 73 f7 98 0b 88 46 7d 37 f2 2d 67 57 e5 66 cb |.s....F}7.-gW.f.| +000003a0 69 03 3b 1d ec 98 e8 98 d0 48 d1 15 34 22 f1 d5 |i.;......H..4"..| +000003b0 2e 17 03 03 00 35 50 7a 9f 59 68 a8 06 55 35 93 |.....5Pz.Yh..U5.| +000003c0 ae 92 9d e6 1a 9b 33 c6 bb ee 1a 4a 87 29 89 e6 |......3....J.)..| +000003d0 69 0c b7 c9 b5 1d 73 9d 70 4c 4e 35 e2 a6 b3 9e |i.....s.pLN5....| +000003e0 0e 51 06 42 dd bf b0 6b 32 b3 8b |.Q.B...k2..| >>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 00 35 ef 3b a2 4d 0f |..........5.;.M.| -00000010 69 53 f2 a3 80 a0 06 a9 99 a9 15 1e bc 8b 4a 08 |iS............J.| -00000020 de 87 e7 b6 10 d6 b3 fc 89 f8 24 f9 2d 04 a1 fd |..........$.-...| -00000030 c2 ce eb 14 e9 df bf ab 80 8e f1 00 53 60 88 82 |............S`..| -00000040 17 03 03 00 17 22 aa a9 e0 1f f8 55 03 22 9b 0f |.....".....U."..| -00000050 b2 6d 73 be 10 5d 6c c6 d8 0e 5e 0d 17 03 03 00 |.ms..]l...^.....| -00000060 13 45 f2 81 7f ea ae 0d 77 bb d4 05 1e 55 af a8 |.E......w....U..| -00000070 3e 0d 10 0f |>...| +00000000 14 03 03 00 01 01 17 03 03 00 35 6a 64 a5 70 df |..........5jd.p.| +00000010 c8 89 29 86 27 8e 2f 03 f0 a3 26 0b f4 d2 99 73 |..).'./...&....s| +00000020 0d 52 8b 49 ac 3a 61 0c 30 0f 89 8b 29 91 8c 30 |.R.I.:a.0...)..0| +00000030 1d 82 4d c2 92 9f 47 33 9a 59 b9 a0 da 8b a9 0e |..M...G3.Y......| +00000040 17 03 03 00 17 e2 b8 0e b0 8d eb a1 b2 1f 07 70 |...............p| +00000050 fc 0e 0f 06 c7 fa b3 cc 9e 95 d8 bc 17 03 03 00 |................| +00000060 13 04 92 08 57 71 45 d0 65 d9 c9 27 05 49 e1 7e |....WqE.e..'.I.~| +00000070 12 c9 77 07 |..w.| diff --git a/src/crypto/tls/testdata/Client-TLSv13-ClientCert-ECDSA-RSA b/src/crypto/tls/testdata/Client-TLSv13-ClientCert-ECDSA-RSA index db13bd6387..9aa65c6754 100644 --- a/src/crypto/tls/testdata/Client-TLSv13-ClientCert-ECDSA-RSA +++ b/src/crypto/tls/testdata/Client-TLSv13-ClientCert-ECDSA-RSA @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,134 +7,136 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 37 0c 23 2f 26 |....z...v..7.#/&| -00000010 2a b0 8d 47 84 3b 9b 9c 7e 0f 0a cd 77 39 6c c2 |*..G.;..~...w9l.| -00000020 7b c0 56 a8 9d 07 a0 ec b6 e5 79 20 00 00 00 00 |{.V.......y ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 71 fd 9f ba 42 |....z...v..q...B| +00000010 4c 98 22 8e 16 d3 63 6c a6 34 c2 41 37 f9 98 ad |L."...cl.4.A7...| +00000020 7a a6 c5 61 12 df 37 32 a2 95 a3 20 00 00 00 00 |z..a..72... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 03 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 5e |..+.....3.$... ^| -00000060 9a da 1d cb 90 03 f2 d2 23 e3 54 fc 3d 9b 8c 92 |........#.T.=...| -00000070 42 df cf 7a 3d 47 3f 66 a4 a6 7a 07 44 76 5c 14 |B..z=G?f..z.Dv\.| -00000080 03 03 00 01 01 17 03 03 00 17 53 54 e6 de 6a af |..........ST..j.| -00000090 c2 d9 b8 39 b6 ae 3e 9f 54 60 e1 fa 29 5a fb 16 |...9..>.T`..)Z..| -000000a0 20 17 03 03 00 42 f4 a5 7f e3 e7 ba 6a 88 e1 f2 | ....B......j...| -000000b0 fd 25 3e ba 05 00 29 77 ff 69 6e e0 ac 50 99 50 |.%>...)w.in..P.P| -000000c0 ac 1e bd 8c 52 e6 28 5d 67 bb bb 20 61 69 5b 97 |....R.(]g.. ai[.| -000000d0 7f 29 79 97 bf 13 24 25 ad 3b 01 78 c4 a4 4e 9a |.)y...$%.;.x..N.| -000000e0 06 d6 20 da 63 27 97 8d 17 03 03 02 6d 79 7e 9e |.. .c'......my~.| -000000f0 01 98 a9 7c ba 63 43 2b 21 b1 bc 2c b2 17 c2 35 |...|.cC+!..,...5| -00000100 76 f2 30 01 69 45 d4 56 e0 5a 2c 62 aa 6f a8 1f |v.0.iE.V.Z,b.o..| -00000110 b8 31 df be 6f 3f 60 16 dc 61 5c 9f 99 a9 63 7d |.1..o?`..a\...c}| -00000120 7e 2b d2 ae 02 46 12 db be 51 9e 15 dd 1c 96 b0 |~+...F...Q......| -00000130 74 69 20 c0 e1 78 46 01 a6 23 72 28 ba c7 a3 48 |ti ..xF..#r(...H| -00000140 1e dc 0b 57 c9 b4 39 88 3d 39 c7 6c 38 c7 3a 29 |...W..9.=9.l8.:)| -00000150 a4 45 79 10 04 61 cd db df 5b 88 c1 35 4b 38 ea |.Ey..a...[..5K8.| -00000160 6d 72 57 9f e0 2e 37 61 3d c8 aa b2 25 a6 11 5c |mrW...7a=...%..\| -00000170 09 e2 3a 17 d3 c5 37 2f a7 b4 73 fe e2 61 df 1d |..:...7/..s..a..| -00000180 cd 4f 72 4a 67 c3 c7 e2 53 78 61 78 2c 37 44 12 |.OrJg...Sxax,7D.| -00000190 4d 0e 8c 14 0b de 3b a4 cf ad 8f d4 74 61 77 4b |M.....;.....tawK| -000001a0 36 2d f2 8f 68 95 38 9d e2 9f cf cc 03 15 89 b9 |6-..h.8.........| -000001b0 96 c4 47 e5 2f 65 0a 5c 5d 8f 5c 64 9d c8 76 d2 |..G./e.\].\d..v.| -000001c0 5d a7 90 4d f5 84 2d 31 2d 6c bd ee 0d 45 2b 50 |]..M..-1-l...E+P| -000001d0 79 f7 8c 34 40 f9 bc f4 38 b3 56 a9 6b ca 54 50 |y..4@...8.V.k.TP| -000001e0 19 f8 9a 73 74 9b 0a 92 ee 22 53 05 01 38 43 3a |...st...."S..8C:| -000001f0 49 fe 2d e9 39 c1 76 b0 04 df 8a 3d cc fc 9b 84 |I.-.9.v....=....| -00000200 cd 22 ba 40 24 69 93 b9 c5 b3 ed fd ad 94 1b 83 |.".@$i..........| -00000210 b5 07 a9 e7 94 14 4b c1 59 89 78 56 03 28 29 c3 |......K.Y.xV.().| -00000220 a8 a4 96 14 5a 51 9a 50 f9 34 3c 5a 76 8f 74 68 |....ZQ.P.4..K..k*D?.#..U| -000002f0 a0 11 51 04 0b 82 02 d9 24 85 13 2e d1 29 44 9a |..Q.....$....)D.| -00000300 15 7f a4 1b c4 f5 36 44 88 9a 6e 5a 1e 2f 14 fa |......6D..nZ./..| -00000310 d0 e7 fc 6a fa e5 f3 4a 55 20 73 9b e4 73 2e 47 |...j...JU s..s.G| -00000320 88 25 b7 69 d9 28 fe 50 8c fc f2 94 29 84 c4 7f |.%.i.(.P....)...| -00000330 d6 b2 eb 28 fa 51 8e ff 00 09 35 d3 b2 32 3a c6 |...(.Q....5..2:.| -00000340 bb 91 a7 c4 b7 88 df 4b f7 09 ef e7 e1 92 60 cd |.......K......`.| -00000350 de 34 4f 39 ee b8 ce 50 6a b9 17 03 03 00 99 64 |.4O9...Pj......d| -00000360 76 ab 48 eb 68 7d a6 68 60 aa c2 93 bd 31 81 c8 |v.H.h}.h`....1..| -00000370 b6 15 ba d1 54 94 04 1b 4b 29 86 e1 12 84 ad d5 |....T...K)......| -00000380 ba eb 4a 7a 7a a8 56 41 04 8c 84 c7 83 46 8c 50 |..Jzz.VA.....F.P| -00000390 c4 e3 02 d0 28 a4 fe 24 c4 b8 96 13 4f 87 27 ec |....(..$....O.'.| -000003a0 6b e3 84 4b 97 13 65 fa 1e 5e 9d ac 85 ea a0 3d |k..K..e..^.....=| -000003b0 67 96 e5 ec 88 84 6b 79 d9 16 55 c1 1c 72 17 aa |g.....ky..U..r..| -000003c0 9b 49 13 86 d4 39 0d 2a c8 88 b3 5f f5 11 cb 5f |.I...9.*..._..._| -000003d0 bd 22 57 2c bc c1 01 72 b9 c3 f5 d9 a2 3b 8e ff |."W,...r.....;..| -000003e0 44 b2 82 b6 5b 35 75 b5 7a 50 40 81 4e a7 2d 40 |D...[5u.zP@.N.-@| -000003f0 21 28 d9 c4 d9 e5 07 e1 17 03 03 00 35 23 ab b2 |!(..........5#..| -00000400 60 56 47 6a fe cb 0e 54 22 d5 8f 29 0a 34 e6 82 |`VGj...T"..).4..| -00000410 5b 10 35 ac 93 97 92 6b 39 5d b8 01 54 9c 86 b0 |[.5....k9]..T...| -00000420 41 70 52 88 92 cf dd b7 f8 5d d1 18 e1 1f 78 53 |ApR......]....xS| -00000430 e4 43 |.C| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 50 |..+.....3.$... P| +00000060 f1 4d 28 5f 81 28 a7 d7 cb 82 20 48 91 0b 86 94 |.M(_.(.... H....| +00000070 ae d8 b0 1c d0 84 55 5a 93 4c ee 65 9d 19 68 14 |......UZ.L.e..h.| +00000080 03 03 00 01 01 17 03 03 00 17 7d af 66 34 6e f8 |..........}.f4n.| +00000090 38 18 0a 6a 24 91 d8 6c 4d 7f e6 4c fc 40 8a a7 |8..j$..lM..L.@..| +000000a0 bc 17 03 03 00 42 77 e7 1c fd d3 a9 f5 86 8e 92 |.....Bw.........| +000000b0 f0 28 92 e5 e7 aa 8c 13 00 cb 07 0c b4 3d 13 7c |.(...........=.|| +000000c0 2d 58 a0 94 0c 8f 4b 45 8d aa 97 7a 30 0e 78 d7 |-X....KE...z0.x.| +000000d0 22 89 e0 8b 53 31 1b 9b 2d 7f f7 ff e0 b3 13 d5 |"...S1..-.......| +000000e0 49 12 9e 50 31 38 eb d5 17 03 03 02 6d 65 2e 6f |I..P18......me.o| +000000f0 91 62 81 e9 8c fc 11 34 c1 59 58 44 3d 4f 74 6d |.b.....4.YXD=Otm| +00000100 ae 5a 47 29 56 6d 43 08 43 aa 69 d8 20 6c 02 99 |.ZG)VmC.C.i. l..| +00000110 68 eb fa 47 c6 b0 7d 5b 70 2a a1 f9 f6 4f 70 02 |h..G..}[p*...Op.| +00000120 88 f5 d1 b6 74 6e e2 54 7f fe 04 ce b2 03 9e e4 |....tn.T........| +00000130 6e 3e 5d cf 27 49 de 90 7f 0a 2e 51 87 97 38 0e |n>].'I.....Q..8.| +00000140 cc f9 31 56 c5 bd b2 17 4c a4 a3 95 d7 c4 47 43 |..1V....L.....GC| +00000150 58 cb 60 4f 73 65 71 e3 83 3d 60 04 d4 4d 6b a4 |X.`Oseq..=`..Mk.| +00000160 96 c1 51 ec c5 48 29 13 ae 6d 7c 4c 0c 47 40 26 |..Q..H)..m|L.G@&| +00000170 50 13 71 a9 55 3e bc 7b ce a6 a5 8a 23 3e 41 d5 |P.q.U>.{....#>A.| +00000180 2c 22 3e 3e 65 3e 53 0b 13 fb b9 36 25 77 bd 89 |,">>e>S....6%w..| +00000190 f1 4e c2 99 5c 0a 14 c4 f8 9b da 01 a9 61 f5 a9 |.N..\........a..| +000001a0 f5 a7 04 17 cc e5 a9 8b b7 e8 ce 13 6c 87 75 99 |............l.u.| +000001b0 cb 05 a5 2d c6 8d 03 73 b0 1c ba e3 64 66 d7 a9 |...-...s....df..| +000001c0 b9 3c 16 41 ce ca 7a 9d 67 84 81 78 57 22 24 6e |.<.A..z.g..xW"$n| +000001d0 80 55 10 87 e4 6a b7 3e 62 23 84 ea a6 9b ee 1d |.U...j.>b#......| +000001e0 d0 32 96 74 7a b0 ed 05 a9 ca 53 8c 8c 66 bf ee |.2.tz.....S..f..| +000001f0 2d b4 5f 78 4a 7e 88 6a bf e4 44 fc fb 71 df 9c |-._xJ~.j..D..q..| +00000200 34 a6 f0 4c 5b b9 0f a2 72 b4 28 0a 67 a2 99 be |4..L[...r.(.g...| +00000210 97 da 1d 64 24 c3 99 e6 cb 43 9a eb 28 6e 54 e9 |...d$....C..(nT.| +00000220 34 5a 3c a1 1c 2f 07 27 a1 bf 1b fb a5 2f 61 8d |4Z<../.'...../a.| +00000230 26 ab f4 9f 7e ec 22 dc 4f 34 3d c9 6f 5d 6a 18 |&...~.".O4=.o]j.| +00000240 30 09 bc f0 06 6d 3e bc f7 96 9f 90 4b d8 e3 ac |0....m>.....K...| +00000250 96 3c f4 e2 3e 26 4a 43 07 1f 7e 79 08 f8 12 14 |.<..>&JC..~y....| +00000260 82 1d 27 a5 16 d6 88 c2 31 26 8d 60 40 04 30 7b |..'.....1&.`@.0{| +00000270 49 7b 6d 11 d4 80 c5 09 9f 6a 85 f4 d3 41 ce c4 |I{m......j...A..| +00000280 f6 bc 49 38 05 19 86 55 fa 9a 73 d7 5d 61 97 42 |..I8...U..s.]a.B| +00000290 39 f2 6e 26 c7 11 ca b8 bf 85 2d 25 c2 83 30 6d |9.n&......-%..0m| +000002a0 17 07 af da 39 e9 c5 e4 88 f6 5f 58 e7 00 72 38 |....9....._X..r8| +000002b0 e1 ac f4 75 eb 7f e2 00 d7 d9 e8 aa 77 8b 63 5e |...u........w.c^| +000002c0 85 4c c5 2a dd 8d 89 f4 ea ff 14 9d bb d7 b1 9a |.L.*............| +000002d0 7b d0 38 e9 9d 26 a9 79 f4 de 10 63 1f 09 67 bc |{.8..&.y...c..g.| +000002e0 51 ca 12 51 05 93 29 fe 5f 17 79 7f 84 e2 87 39 |Q..Q..)._.y....9| +000002f0 d4 80 ac 76 fe c4 ab bb 63 06 64 b0 ba 5f 2f 8b |...v....c.d.._/.| +00000300 d9 b5 39 b5 80 69 0d 97 c6 f4 ce e1 2c cf 29 1c |..9..i......,.).| +00000310 e7 f4 b7 02 f5 da b4 63 26 d9 a9 4a 4e 34 66 56 |.......c&..JN4fV| +00000320 c2 89 6a 12 95 16 9c 8b b3 95 fb 8d 1f 4b 67 53 |..j..........KgS| +00000330 5e 1f 68 70 ed 9b aa 89 78 16 88 d2 39 31 d9 59 |^.hp....x...91.Y| +00000340 b5 bd 01 64 59 61 11 22 ab 73 f8 00 c3 7a 8c 45 |...dYa.".s...z.E| +00000350 54 32 4f 5c 24 6a 0b 87 6c dc 17 03 03 00 99 4b |T2O\$j..l......K| +00000360 2d c9 21 11 87 71 41 cf 67 23 4e cd c8 7f e4 73 |-.!..qA.g#N....s| +00000370 97 46 dd ff 0e 13 b4 4a 0e 81 4d fe 6c 0a 1d a0 |.F.....J..M.l...| +00000380 b4 57 e5 4d e0 8d 82 e5 33 71 26 4a ef 72 8d 1f |.W.M....3q&J.r..| +00000390 a2 7b 43 e7 6c 99 19 24 18 7f 53 4a 16 c1 51 0c |.{C.l..$..SJ..Q.| +000003a0 3c 7d 3d c6 64 14 74 65 51 0b 04 09 dc c5 c0 ef |<}=.d.teQ.......| +000003b0 a1 a9 b3 d3 1d 16 2d 9a 5d 40 ec 13 9a 16 7c 9b |......-.]@....|.| +000003c0 6c 18 ba ec e3 e6 25 99 c3 1a 16 44 05 a3 85 ac |l.....%....D....| +000003d0 6a 49 e0 30 af 1c d1 5d f5 6e e6 4b dc f3 71 49 |jI.0...].n.K..qI| +000003e0 b0 5e 1d 7a e2 8b ba 13 7d a2 4a 12 cb 69 5a fe |.^.z....}.J..iZ.| +000003f0 7d cf e5 cf 0a d0 6e 26 17 03 03 00 35 cd 5a 61 |}.....n&....5.Za| +00000400 28 1f 69 d8 c0 48 8a 10 4e 46 3a 51 06 87 28 8d |(.i..H..NF:Q..(.| +00000410 9d 68 60 bc e1 6e a4 a2 21 81 2a 17 57 b9 6a 7a |.h`..n..!.*.W.jz| +00000420 47 ae fb e0 a8 fc 7a 72 0f 9f 52 46 18 a8 b1 01 |G.....zr..RF....| +00000430 0d 9b |..| >>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 02 1e 19 c5 11 9d 64 |...............d| -00000010 8f f5 a9 21 53 fa cc 91 67 30 39 c0 77 d6 35 7b |...!S...g09.w.5{| -00000020 b8 a3 ae 44 8a 9a b1 68 5a 20 72 a6 ae 3a 1b 9f |...D...hZ r..:..| -00000030 03 eb d9 ed 91 20 49 ba 88 39 99 1c 4e 3a 2b 1b |..... I..9..N:+.| -00000040 42 b7 a3 97 a3 a3 6c 7e 3b 4c c1 74 dc 71 e6 14 |B.....l~;L.t.q..| -00000050 6c 5a 36 12 cb 87 a6 75 ce b3 e3 a8 f2 c8 36 12 |lZ6....u......6.| -00000060 3d c8 b8 2a 36 e4 40 38 3e 20 1d de 2a 31 b1 04 |=..*6.@8> ..*1..| -00000070 86 cb 9b c1 f3 fc 01 67 7e 40 0b b8 c4 fa 8f a0 |.......g~@......| -00000080 a7 5b 24 43 a9 d3 eb 55 99 ec 0b 19 cb ec 19 97 |.[$C...U........| -00000090 c8 0f c0 5e 8c b2 b1 93 80 70 7c 0b aa 7c 6c 44 |...^.....p|..|lD| -000000a0 1a 11 dc bd 0d 97 18 f3 ca c6 50 68 ca 77 ab 18 |..........Ph.w..| -000000b0 79 a9 8b 73 13 48 90 c3 4a cd ae f2 60 ea 0c 20 |y..s.H..J...`.. | -000000c0 eb ad 84 fb 2f 01 7e 2c f6 7d ea da 22 59 5f 88 |..../.~,.}.."Y_.| -000000d0 ff 10 19 81 d5 29 1b 0f 36 7b 84 66 eb bf e3 f9 |.....)..6{.f....| -000000e0 1c 68 fa 03 93 3e ba c6 58 e2 a9 57 94 8c a8 29 |.h...>..X..W...)| -000000f0 e2 f9 4b 6d 85 01 e8 f2 11 a2 04 38 73 8e 69 49 |..Km.......8s.iI| -00000100 4b 7f ca be aa 5f 50 ac 82 16 e6 92 78 87 13 f4 |K...._P.....x...| -00000110 fc 21 e8 2d 89 d0 f7 fb 73 0b f3 b7 6a 67 24 e8 |.!.-....s...jg$.| -00000120 d9 33 59 49 d6 88 24 a2 66 f5 c8 4d fe 88 93 77 |.3YI..$.f..M...w| -00000130 f9 3f ee ae 0b 6a 23 7a 8f b7 66 d4 68 7d 38 51 |.?...j#z..f.h}8Q| -00000140 85 0a a0 f5 03 f6 e8 2f cd 0b ac 58 64 82 38 20 |......./...Xd.8 | -00000150 f2 72 0a 85 83 55 cb db 62 59 f4 40 08 28 f9 8a |.r...U..bY.@.(..| -00000160 47 a2 ea a1 1b e1 4c 0a a4 74 cb a2 11 6f e5 68 |G.....L..t...o.h| -00000170 e4 ff 38 b0 a5 fc 21 9e eb de 43 b6 e7 27 cf 9a |..8...!...C..'..| -00000180 80 23 59 a2 e9 a8 12 ae 47 09 5c 48 c2 cb c8 e0 |.#Y.....G.\H....| -00000190 a6 fa 81 c5 49 a4 77 4b d3 83 0a ce 6e a5 2b 88 |....I.wK....n.+.| -000001a0 f2 f5 12 2f 0e 7e 10 20 5b c7 31 39 54 ed 19 33 |.../.~. [.19T..3| -000001b0 5c 94 b5 56 16 fa 0c b0 ec 28 76 fa 38 ca 08 c6 |\..V.....(v.8...| -000001c0 13 c3 1f 8a 20 35 73 4b bb bf d8 96 65 de cd f3 |.... 5sK....e...| -000001d0 44 d4 5b 3d 54 aa ac 53 a9 cc 31 99 86 22 5a f9 |D.[=T..S..1.."Z.| -000001e0 9e bd f1 f3 74 07 e4 fe f7 3a 35 44 e5 c6 48 3f |....t....:5D..H?| -000001f0 a3 81 1e 67 96 51 0f e6 7d 43 67 9c 12 6c dd 91 |...g.Q..}Cg..l..| -00000200 c4 f9 20 4d 88 41 fc 40 c5 ee c2 11 fb f1 67 da |.. M.A.@......g.| -00000210 7b b6 d0 1b f8 6e f7 8b 07 f2 9e 12 56 dc 75 31 |{....n......V.u1| -00000220 cd b9 53 62 3f 2f 72 cf ee 17 03 03 00 a4 f9 ec |..Sb?/r.........| -00000230 72 94 94 1c 52 ab 9e 6d 04 5a 26 07 15 3a f5 dd |r...R..m.Z&..:..| -00000240 f3 45 18 20 de 2e 97 f7 6a a4 7c 92 68 aa 71 55 |.E. ....j.|.h.qU| -00000250 b7 7a 3c 8f 54 e7 cc 31 e1 54 9c ad 8e b4 57 11 |.z<.T..1.T....W.| -00000260 1d 79 85 4a da 3f 1b ab fb f4 d4 d9 4d 8a 2e da |.y.J.?......M...| -00000270 68 3e f9 aa 16 52 cc 4e 49 7a 00 bf fc e8 b5 16 |h>...R.NIz......| -00000280 43 0c 6d aa 82 49 3c 16 43 56 55 35 ee 47 c3 1c |C.m..I<.CVU5.G..| -00000290 99 25 6d 30 89 64 5e 23 bf de fc cc 7c 40 94 28 |.%m0.d^#....|@.(| -000002a0 d8 ed ec c2 e2 8b 24 64 64 b6 e8 6c 29 82 b5 ba |......$dd..l)...| -000002b0 d5 59 7a 6f 11 6e cc 30 91 c8 c0 8b 9f dd 13 59 |.Yzo.n.0.......Y| -000002c0 a9 72 18 f6 6e ce 3a 47 6b 4f 26 55 61 bf 20 7a |.r..n.:GkO&Ua. z| -000002d0 d8 c3 17 03 03 00 35 d7 fc bc 10 29 75 c3 70 0a |......5....)u.p.| -000002e0 02 e4 cf 36 20 49 5d 64 78 e9 27 db 2d e3 1a 66 |...6 I]dx.'.-..f| -000002f0 f3 a8 82 7e 64 f0 29 27 81 6c bd b7 a7 86 a2 6a |...~d.)'.l.....j| -00000300 ac 4e 7b da 48 7c d8 9c 39 6c 95 45 17 03 03 00 |.N{.H|..9l.E....| -00000310 17 c9 13 54 e9 22 62 7e 89 17 de 98 52 93 26 76 |...T."b~....R.&v| -00000320 73 a0 7d 2c 60 68 c8 68 17 03 03 00 13 ad 3a 53 |s.},`h.h......:S| -00000330 d1 41 0e 99 26 c8 fb 22 8f e6 d3 a4 1d 83 ff 28 |.A..&..".......(| +00000000 14 03 03 00 01 01 17 03 03 02 1e ab 60 cd 30 a1 |............`.0.| +00000010 d1 e0 a1 d4 77 15 50 bf aa c7 bf 1a c0 e1 cd dd |....w.P.........| +00000020 6a 64 0b 5e f0 83 24 77 1d 7a ff 97 5b ab 5b 15 |jd.^..$w.z..[.[.| +00000030 eb 9e af 09 c9 38 e1 8a 7d c1 c9 04 40 b9 ca 6e |.....8..}...@..n| +00000040 01 8d cb 1e 66 52 a4 c2 20 44 68 bf d0 0d ec c0 |....fR.. Dh.....| +00000050 0b d2 9e ae 60 e4 5e 19 cf 92 96 22 88 b1 35 e3 |....`.^...."..5.| +00000060 c9 89 c8 67 6d 14 83 e1 ad 76 ca e6 9a d0 34 e0 |...gm....v....4.| +00000070 de 9d 46 44 85 97 b0 cc 4e ef 72 d9 85 47 13 fb |..FD....N.r..G..| +00000080 86 9f 3c 26 20 fa fd 15 f7 83 1f c2 1f 51 3f 4a |..<& ........Q?J| +00000090 b4 3c 3b 09 2b 16 22 d1 30 f2 16 ae b9 28 f7 8e |.<;.+.".0....(..| +000000a0 a2 84 15 c8 42 58 a5 6d 8a 86 a9 7f 23 18 ed ee |....BX.m....#...| +000000b0 18 d7 2d 47 4f b8 f2 44 60 cb 2f 1d 1a ad 7b e7 |..-GO..D`./...{.| +000000c0 15 d3 d8 55 9e fb 0b 0e b8 e3 1f 4e a4 8c 14 ec |...U.......N....| +000000d0 4b 3a c4 d1 66 16 9d 7a 72 20 8a fb 41 33 bc 04 |K:..f..zr ..A3..| +000000e0 4e b7 e4 65 2e 21 d2 3b 5f 07 00 cd 38 b3 9d 78 |N..e.!.;_...8..x| +000000f0 eb 36 00 db d1 e0 8a 3f 50 84 3f d9 4b 2d 85 41 |.6.....?P.?.K-.A| +00000100 bc cc ec 9b 15 2c f9 95 02 18 41 08 13 f3 d5 ec |.....,....A.....| +00000110 e7 32 8c ca 7e 0a e6 81 ed db 8a 49 46 ac a9 42 |.2..~......IF..B| +00000120 27 13 85 f1 16 9b 15 bd ec eb 1c 25 24 9a 7f 0e |'..........%$...| +00000130 a4 67 e1 32 3f cf 8b 61 49 9b 43 a4 57 79 48 14 |.g.2?..aI.C.WyH.| +00000140 90 00 b1 2d 6f 82 9f ef f3 a0 c6 e8 9f fd d4 08 |...-o...........| +00000150 1f 16 5e 7f be 73 7e a6 5b d2 02 12 c9 76 c3 f3 |..^..s~.[....v..| +00000160 13 4c 44 7f e9 8e 5b ce d8 56 d6 2f 76 ff 5a 8e |.LD...[..V./v.Z.| +00000170 6d cb 5b 8e c6 62 29 4e c6 34 a9 74 44 84 b7 28 |m.[..b)N.4.tD..(| +00000180 96 cd fa 6d 2e ac 75 3e 86 73 c3 a9 50 ef e9 e4 |...m..u>.s..P...| +00000190 70 a5 ba bc 1f 9c c3 05 17 30 2c 1b ba c0 15 bf |p........0,.....| +000001a0 f4 47 45 b1 42 d9 6c 6d 57 b0 7a 94 61 ee 78 0e |.GE.B.lmW.z.a.x.| +000001b0 32 4f 01 da df d8 29 51 91 1c 3f f6 40 a7 15 76 |2O....)Q..?.@..v| +000001c0 99 d7 e0 45 af 04 5a 69 f0 65 bf 40 e9 5c 4b e5 |...E..Zi.e.@.\K.| +000001d0 eb e6 2e 79 f7 c8 4a e4 0b 71 e3 d5 dd 7e 25 d4 |...y..J..q...~%.| +000001e0 d9 7f 1b 9b 8b 3f b6 9c 35 59 2e 40 34 e3 c8 2a |.....?..5Y.@4..*| +000001f0 3c 74 0b d6 35 d3 12 e8 93 7e 44 61 b4 3d da 19 |.d.Q..K....| diff --git a/src/crypto/tls/testdata/Client-TLSv13-ClientCert-Ed25519 b/src/crypto/tls/testdata/Client-TLSv13-ClientCert-Ed25519 index b524ef43d2..c174bd9f6d 100644 --- a/src/crypto/tls/testdata/Client-TLSv13-ClientCert-Ed25519 +++ b/src/crypto/tls/testdata/Client-TLSv13-ClientCert-Ed25519 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,117 +7,119 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 28 10 3b 44 b1 |....z...v..(.;D.| -00000010 0f a9 77 89 f9 dd 3c 3a ad 83 a0 ca 3e 60 d6 0e |..w...<:....>`..| -00000020 ab 94 3a ec 2e 63 ef b1 41 90 48 20 00 00 00 00 |..:..c..A.H ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 94 b3 83 34 fd |....z...v.....4.| +00000010 0f d0 16 30 14 0e 57 a1 d3 29 cd 81 c7 a2 59 c9 |...0..W..)....Y.| +00000020 fb 8f 54 d4 9b 69 a8 47 7d c3 63 20 00 00 00 00 |..T..i.G}.c ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 03 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 d9 |..+.....3.$... .| -00000060 ce 37 c6 7e 9c 0f 75 bb b6 91 c9 af 59 eb 24 07 |.7.~..u.....Y.$.| -00000070 2e 80 3a 7e d2 fc 39 9e 45 19 94 2d ae 33 2c 14 |..:~..9.E..-.3,.| -00000080 03 03 00 01 01 17 03 03 00 17 c6 b7 f1 35 ee 93 |.............5..| -00000090 75 ca 2e 3a a2 3d ed 32 5c e1 2c e0 5b 1c 01 e0 |u..:.=.2\.,.[...| -000000a0 bb 17 03 03 00 42 02 e5 db dc 80 e1 c2 6f 31 1c |.....B.......o1.| -000000b0 33 7b 76 8f 51 9c f8 a8 b0 1b 1a 8a 46 00 c7 ff |3{v.Q.......F...| -000000c0 ff 4c c9 d8 28 14 32 74 ee 59 b3 15 4b 45 90 b6 |.L..(.2t.Y..KE..| -000000d0 da 56 b3 ef d4 6f 8a eb 96 b9 94 ab b9 9e b1 2e |.V...o..........| -000000e0 fe 29 f2 0d 0d 93 66 1a 17 03 03 02 6d 84 4e 43 |.)....f.....m.NC| -000000f0 92 85 d5 e0 7a cd da a6 c0 5a bf 8b eb 83 db a0 |....z....Z......| -00000100 dc c3 e2 a8 d5 ca ad 87 75 19 08 dd 3e 2e 36 a0 |........u...>.6.| -00000110 a1 53 28 09 cd 1c 1d a0 24 77 e3 e6 4d b1 8f 36 |.S(.....$w..M..6| -00000120 43 29 79 b3 e2 fb 9e dc 39 90 b5 b7 db 6d 0a c0 |C)y.....9....m..| -00000130 55 d2 1c fd 8d 57 5b bf e3 70 b7 6a bc af 4f 34 |U....W[..p.j..O4| -00000140 e7 e1 46 d3 9a cc e4 73 33 fb e6 ad f9 b5 35 af |..F....s3.....5.| -00000150 97 77 88 11 19 7c e6 7d 8b 08 bb 78 2c 50 29 0c |.w...|.}...x,P).| -00000160 87 5f ef 04 19 34 9f 59 54 df 14 71 d1 5f e7 dc |._...4.YT..q._..| -00000170 46 2e 73 1a 07 12 be 6e 74 e1 8e 82 ca db a2 6d |F.s....nt......m| -00000180 35 5b fc 4c 71 42 45 86 35 1c c0 dc 0d 4c 40 a8 |5[.LqBE.5....L@.| -00000190 c7 ea 4a b8 33 0b 30 e2 6d a4 82 dc 28 35 1f f2 |..J.3.0.m...(5..| -000001a0 ac 23 41 10 a4 d4 1a 40 28 4d ea db 32 d5 06 de |.#A....@(M..2...| -000001b0 1e 37 91 77 34 ed b4 c8 f2 1c 44 de ee 2f dd af |.7.w4.....D../..| -000001c0 61 cc 1e 59 87 a6 be 36 b0 8e a3 61 01 aa f4 60 |a..Y...6...a...`| -000001d0 1e c8 3a 3c 53 57 31 28 3e 40 32 95 67 02 41 9c |..:@2.g.A.| -000001e0 58 28 50 51 5e 06 1d f1 57 e1 39 ba e0 ab 30 26 |X(PQ^...W.9...0&| -000001f0 25 fe b6 0a a9 d5 b3 72 61 3a 71 ec a2 44 91 5e |%......ra:q..D.^| -00000200 30 1b d4 dd 07 cf 35 6a 85 4a 95 b2 a9 f5 5c 6e |0.....5j.J....\n| -00000210 35 f9 07 7b d9 b0 a5 64 2f c3 34 23 84 3f 1a 97 |5..{...d/.4#.?..| -00000220 dd 25 75 7c 76 0f 9b 73 5b aa c0 a1 00 4b f6 b1 |.%u|v..s[....K..| -00000230 61 34 51 d0 d1 3b 00 4f 87 93 f5 45 2e 23 93 ee |a4Q..;.O...E.#..| -00000240 e6 ce e5 1c 02 22 3c c1 22 ed 33 b2 71 99 52 26 |....."<.".3.q.R&| -00000250 70 86 ad bc 41 d9 13 54 d3 3e 5d 4b 63 4d d2 6f |p...A..T.>]KcM.o| -00000260 bf a5 24 f8 7b 83 b2 0b 13 02 0d 42 74 9b 04 4e |..$.{......Bt..N| -00000270 8a 86 6b 40 92 42 3a d8 a8 21 2f ce e0 90 71 65 |..k@.B:..!/...qe| -00000280 5f ed c7 65 38 e3 85 e2 32 d5 4b c0 84 61 24 a1 |_..e8...2.K..a$.| -00000290 00 be 67 f3 59 b0 b2 f0 65 fe a6 49 19 41 f9 9b |..g.Y...e..I.A..| -000002a0 40 3a 62 ec 4d 1f 83 77 03 9d 4b 4c d2 5d 93 ca |@:b.M..w..KL.]..| -000002b0 01 39 44 dc c6 f7 18 6b 2a c9 1b 3d ef 27 6d a4 |.9D....k*..=.'m.| -000002c0 2e 8f 33 63 2b c5 fb bb 52 23 68 7e 0b 16 92 64 |..3c+...R#h~...d| -000002d0 d9 72 04 2d 0d b2 ba 67 45 ae 14 16 f1 57 3b 59 |.r.-...gE....W;Y| -000002e0 44 ba db b0 c9 d2 9b 8f 6d b2 a4 8c c2 d1 1c e4 |D.......m.......| -000002f0 ce d3 32 bf 04 d9 09 d1 28 3d 25 2d b5 d3 da 12 |..2.....(=%-....| -00000300 77 01 45 09 08 e0 df cc f3 4c c0 e0 b7 d7 d8 16 |w.E......L......| -00000310 82 19 1d 57 dc b4 27 83 48 1b 9f a9 0e cc d6 39 |...W..'.H......9| -00000320 c1 4a 66 b3 42 85 a5 a7 14 97 5c 58 fe 41 e1 2e |.Jf.B.....\X.A..| -00000330 16 e9 70 89 e7 98 a8 f3 4a 81 d4 d8 ff 5f 48 6e |..p.....J...._Hn| -00000340 60 c6 4a 07 c5 57 9c 22 25 3a 9f bf 7e 71 f3 0d |`.J..W."%:..~q..| -00000350 71 e5 a5 d4 2b 6d 70 2f c5 a3 17 03 03 00 99 b9 |q...+mp/........| -00000360 15 c7 70 bc 06 75 26 50 0f 22 90 43 99 25 0d 0f |..p..u&P.".C.%..| -00000370 05 d3 ce e7 3c 53 fb 01 d4 d2 e8 fb b7 49 87 03 |....K......#..._C.| -000003e0 75 65 ac ba 46 43 61 b4 3d be b8 49 44 ad 15 00 |ue..FCa.=..ID...| -000003f0 3b c0 07 ba 18 b2 14 71 17 03 03 00 35 d1 22 81 |;......q....5.".| -00000400 7f 21 e9 e2 7b 11 f5 df dd 3f 15 ce b5 fc 71 f3 |.!..{....?....q.| -00000410 0e f2 d0 1c a4 85 29 88 f2 ca 73 01 ee 1c e4 66 |......)...s....f| -00000420 07 fa 5c a3 32 b0 e4 2a e4 97 e5 70 b1 cd db 79 |..\.2..*...p...y| -00000430 83 1f |..| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 38 |..+.....3.$... 8| +00000060 5e 40 05 c2 91 46 5b e0 c6 c4 8f b6 eb 91 98 b1 |^@...F[.........| +00000070 b0 41 8e 34 14 8f 2a b1 5e e6 80 78 f6 0c 3e 14 |.A.4..*.^..x..>.| +00000080 03 03 00 01 01 17 03 03 00 17 30 61 18 ba 71 15 |..........0a..q.| +00000090 e0 75 5d 55 f2 1a d1 7e 69 fa 58 41 97 cd c1 9a |.u]U...~i.XA....| +000000a0 92 17 03 03 00 42 af 88 92 3e 98 ef 74 a5 06 90 |.....B...>..t...| +000000b0 fd c0 21 20 01 ec 1d 68 93 8d dc 36 dc 2c 43 77 |..! ...h...6.,Cw| +000000c0 02 18 47 cf 66 b3 61 88 85 be f1 04 1b da c1 03 |..G.f.a.........| +000000d0 31 68 2c 1c fc dc ed 6b f3 a5 e8 52 fd a7 dc c8 |1h,....k...R....| +000000e0 e1 6a 91 67 83 ce 5c 08 17 03 03 02 6d 55 55 72 |.j.g..\.....mUUr| +000000f0 6e cc c5 4c f0 10 d7 0d 57 5d 4d f4 61 8d 5d 78 |n..L....W]M.a.]x| +00000100 c3 cd df 49 4a 1a 4b c6 fe 70 0a 4a 1c 1d 12 25 |...IJ.K..p.J...%| +00000110 36 1a 68 70 7d 02 e9 cc 4b 92 f9 b8 86 d0 e8 68 |6.hp}...K......h| +00000120 56 be 25 b3 67 3d c0 92 5a 9f 57 8e 22 63 97 78 |V.%.g=..Z.W."c.x| +00000130 1a 7e 70 76 87 f7 3a ef 45 1f 38 d3 95 12 72 98 |.~pv..:.E.8...r.| +00000140 d0 89 e5 bd a7 eb fe b6 89 59 27 07 51 fd 2c 71 |.........Y'.Q.,q| +00000150 8a 99 ca b2 75 bc ae b9 39 c6 15 bf 4e a7 3d 73 |....u...9...N.=s| +00000160 f4 2c 7d 4c 88 3b b1 b6 3a 3d 49 c7 d0 91 57 6a |.,}L.;..:=I...Wj| +00000170 cc 25 c7 07 dc 08 0c ac f4 9a 1d 58 17 3b 44 84 |.%.........X.;D.| +00000180 e4 72 eb d5 11 16 09 f5 1b fb 60 23 63 46 51 10 |.r........`#cFQ.| +00000190 4e 94 7b 5a 31 81 db 9e bb 82 28 4a 08 32 88 fa |N.{Z1.....(J.2..| +000001a0 d2 e3 c4 6e 28 7d 47 66 a1 66 05 39 9e 20 52 fe |...n(}Gf.f.9. R.| +000001b0 3d 4d 2e b4 b8 a6 97 dd 12 8d db 9b 74 71 96 be |=M..........tq..| +000001c0 38 07 62 fc 81 97 3f 85 a2 b8 eb 29 0f e6 95 ca |8.b...?....)....| +000001d0 7b a1 f3 94 7e a4 3c 14 71 55 eb c6 c2 15 09 35 |{...~.<.qU.....5| +000001e0 18 22 5b 9a 2c 19 f1 d3 60 f0 ff c2 09 9f 81 93 |."[.,...`.......| +000001f0 e0 37 6e d0 73 40 c2 66 60 b7 54 85 b4 15 83 fe |.7n.s@.f`.T.....| +00000200 d4 de f4 a2 1f 7d 88 7d 6d 7d 30 ab 4a 25 3a a1 |.....}.}m}0.J%:.| +00000210 2c fa 27 f4 94 35 0d 01 b0 9d fb 58 5b 03 86 9f |,.'..5.....X[...| +00000220 24 d8 57 dc e2 2e bf 1a 28 78 62 f5 29 e0 20 06 |$.W.....(xb.). .| +00000230 38 47 98 b7 44 ce d3 66 92 32 4b 68 3d 45 b9 22 |8G..D..f.2Kh=E."| +00000240 b9 94 32 1b 93 3f c1 88 a5 91 0f 06 8a 1e e6 a1 |..2..?..........| +00000250 62 7e 1e 50 7a 2a be 18 cc 62 93 51 e0 c1 87 21 |b~.Pz*...b.Q...!| +00000260 b3 c3 6b 1a ce f9 95 9e 6f 98 2a 25 43 10 6e 10 |..k.....o.*%C.n.| +00000270 97 5c 09 33 e9 06 b6 6a a8 8b fe 11 d7 b3 38 d6 |.\.3...j......8.| +00000280 67 3f f9 50 37 f5 d2 f0 0d d8 6f 0a 8d 58 ee bc |g?.P7.....o..X..| +00000290 18 c2 68 17 c7 d9 05 c4 d1 e6 a9 f3 c4 63 f5 d4 |..h..........c..| +000002a0 f2 fb 16 05 f3 fb 45 56 c7 ec 2b af fe 26 4c c0 |......EV..+..&L.| +000002b0 85 86 de c3 f5 81 32 b2 bd a9 6c fd 33 25 8e ad |......2...l.3%..| +000002c0 6a 44 3e f0 67 be c8 dc e1 40 9e 40 88 4d e7 c8 |jD>.g....@.@.M..| +000002d0 0b 55 18 e6 2b 10 50 84 ff 93 63 f6 93 4a d2 39 |.U..+.P...c..J.9| +000002e0 62 45 ed 31 1d b5 5a 14 53 6f 0f d1 45 e6 6f 66 |bE.1..Z.So..E.of| +000002f0 a3 cd ff 28 b4 34 4c 54 67 8c 1b b6 a0 b4 01 6c |...(.4LTg......l| +00000300 41 24 ab 5c a0 22 82 8c fa cd 1e 4d e1 8b 7a 04 |A$.\.".....M..z.| +00000310 00 62 e3 44 19 59 c8 e2 04 45 ac e6 46 e2 6a df |.b.D.Y...E..F.j.| +00000320 ce e1 d2 3b 3f 22 b9 17 f2 eb 75 ea 96 cc af f6 |...;?"....u.....| +00000330 6b 77 29 e5 5c 96 13 19 b5 e6 0a 5d 31 9d 6e 28 |kw).\......]1.n(| +00000340 3e ec 58 cc 76 b2 93 1e d0 e4 c3 b7 44 fd 0e 19 |>.X.v.......D...| +00000350 91 e5 21 91 06 56 19 80 cf 25 17 03 03 00 99 22 |..!..V...%....."| +00000360 b0 98 6e 68 69 5c 4d 7e 81 2c dc 0f 68 3e 6c 8a |..nhi\M~.,..h>l.| +00000370 02 4a 56 1b f2 b4 a2 04 31 64 b4 07 2c 37 47 a3 |.JV.....1d..,7G.| +00000380 4c b6 5a 64 94 a8 c2 b6 d8 d2 6f 2e b6 4e ce 46 |L.Zd......o..N.F| +00000390 72 ce 87 73 c4 ce 32 8e 0e e3 6a d2 62 19 56 33 |r..s..2...j.b.V3| +000003a0 95 94 e2 8f 1b 20 db 2a cc c7 61 f8 bc 47 18 11 |..... .*..a..G..| +000003b0 4e d5 d1 66 7a 33 27 e7 38 2b 4b de 01 4c df f7 |N..fz3'.8+K..L..| +000003c0 a9 c3 e9 50 0e e2 8b 94 16 30 fa 82 51 98 b4 2b |...P.....0..Q..+| +000003d0 b6 e6 83 a3 49 13 a5 95 1d 37 38 86 51 08 68 0a |....I....78.Q.h.| +000003e0 73 5e 91 e8 24 57 41 f2 15 5f 28 ca a7 f8 9a db |s^..$WA.._(.....| +000003f0 e9 fc ba 22 dc e7 25 5f 17 03 03 00 35 b3 81 2b |..."..%_....5..+| +00000400 ca e3 9c 5c db 80 ae 0b 41 f7 8c 26 af 9f 68 0a |...\....A..&..h.| +00000410 33 24 6a ea 22 b6 fc 57 37 0d 4e ab 48 29 03 d6 |3$j."..W7.N.H)..| +00000420 d4 25 5f 14 b8 74 2b 80 84 9c 99 3c 18 6c 95 0d |.%_..t+....<.l..| +00000430 7d e0 |}.| >>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 01 50 dd d8 5d 40 64 |..........P..]@d| -00000010 5d 35 b0 82 0d 46 97 4c a2 d1 4d dd 3c c9 0a f9 |]5...F.L..M.<...| -00000020 39 6a 1c 17 c3 f6 1a 6b 42 cc f7 37 23 7a e1 bf |9j.....kB..7#z..| -00000030 de 51 7f 87 6b 3d d6 4d ed 24 b3 de dd 62 18 4a |.Q..k=.M.$...b.J| -00000040 b5 b3 1e 0f 2f a3 c5 e8 67 65 04 bc 37 97 15 a8 |..../...ge..7...| -00000050 a8 f3 a8 79 99 82 e1 10 5d d7 f2 ee 21 46 aa b8 |...y....]...!F..| -00000060 40 9f 3b fc 12 19 c8 82 b4 8e bc b8 9b a9 f6 aa |@.;.............| -00000070 18 6b 48 4e 03 92 43 12 b8 54 f2 b7 29 0b 0a a1 |.kHN..C..T..)...| -00000080 6f c4 1c 2a af 22 c1 3d 1b 43 a5 3c 7d 39 83 5d |o..*.".=.C.<}9.]| -00000090 ee 09 fb f1 9a 4c ff b3 2a bb 85 53 04 18 5e 18 |.....L..*..S..^.| -000000a0 62 e8 cf ec 01 be 76 31 82 1a 60 19 33 c7 37 0a |b.....v1..`.3.7.| -000000b0 fa 45 4d b1 9a 1e 07 e9 9c 45 c3 89 60 a2 c9 59 |.EM......E..`..Y| -000000c0 8c 7d 02 f6 d6 5c 12 26 bd 6d 97 15 e2 07 27 be |.}...\.&.m....'.| -000000d0 2f 59 93 1b 11 0e 05 ef 83 c6 a2 c0 1a 9a 4c 60 |/Y............L`| -000000e0 a6 84 c0 72 b6 2b 7c a1 37 4c d7 eb 76 0f 00 97 |...r.+|.7L..v...| -000000f0 43 b6 25 ed 36 e1 eb 3a 3d 71 05 d8 d0 f9 80 18 |C.%.6..:=q......| -00000100 b2 9b c0 4e 2c 8e 05 41 52 a5 40 57 3c 1f 48 0c |...N,..AR.@W<.H.| -00000110 55 ea d3 76 6d 3a 26 5d 5d 71 74 1c d5 8d 96 92 |U..vm:&]]qt.....| -00000120 79 c5 9c 78 68 5f 20 12 01 06 c3 52 49 66 e4 5b |y..xh_ ....RIf.[| -00000130 41 09 fa 72 c5 d7 d9 26 1b fa a5 1d 23 b2 4a 1e |A..r...&....#.J.| -00000140 da 83 5e 89 c8 3a c4 26 f2 42 70 6d 1b 90 67 eb |..^..:.&.Bpm..g.| -00000150 37 15 35 b9 a2 b0 2b ef 93 5f 11 17 03 03 00 59 |7.5...+.._.....Y| -00000160 b4 a0 79 ba e4 3f 78 d2 11 1a 71 8a a1 a4 28 fc |..y..?x...q...(.| -00000170 44 c7 bc 32 19 06 71 1b 6d 50 20 26 d5 91 39 48 |D..2..q.mP &..9H| -00000180 59 8b fd 55 0a 35 14 f5 31 47 62 15 ee c1 69 23 |Y..U.5..1Gb...i#| -00000190 eb db 79 ef 20 47 5c ef 31 e1 ae bd 2f 72 f8 9d |..y. G\.1.../r..| -000001a0 92 cc 04 6f 73 22 5d 93 59 9f 06 cb bd 70 9b d8 |...os"].Y....p..| -000001b0 c9 41 44 8f 5b b2 59 2b a9 17 03 03 00 35 22 65 |.AD.[.Y+.....5"e| -000001c0 ef 1e dc 4c 63 ba 6d 6a 46 1c d2 9c 9a 81 4b f3 |...Lc.mjF.....K.| -000001d0 1f 58 4e 08 86 93 f8 3a 53 13 64 1f ca 20 d2 da |.XN....:S.d.. ..| -000001e0 6b df 54 88 a8 f3 af 0d 4a 1b 29 91 3a bb 90 27 |k.T.....J.).:..'| -000001f0 29 3a 97 17 03 03 00 17 09 78 1d f3 95 2e 92 af |):.......x......| -00000200 d8 af 64 59 fb 77 e3 85 de f0 37 be 11 91 2f 17 |..dY.w....7.../.| -00000210 03 03 00 13 4e a2 06 c3 90 6f d3 b0 04 a8 25 32 |....N....o....%2| -00000220 09 65 1c f2 ef 9c 32 |.e....2| +00000000 14 03 03 00 01 01 17 03 03 01 50 85 7f 0a 8b bc |..........P.....| +00000010 d1 2a 9f 69 55 c4 37 16 81 a5 46 23 cd af 5a 89 |.*.iU.7...F#..Z.| +00000020 ad a6 c0 c3 5b 7a dc e5 29 c7 47 13 01 e9 64 4b |....[z..).G...dK| +00000030 86 83 50 72 0a bc 45 72 d1 66 47 04 ad 69 01 a7 |..Pr..Er.fG..i..| +00000040 8c 49 4e 38 00 d7 d1 68 48 bd ff 2f a3 72 de 29 |.IN8...hH../.r.)| +00000050 86 56 52 7b f1 2f c4 d3 93 3a c9 bc b8 e7 c2 c0 |.VR{./...:......| +00000060 07 d8 46 81 a2 bd 36 54 79 28 91 1a 85 ab a3 64 |..F...6Ty(.....d| +00000070 6b 33 e4 15 4c 07 c9 f0 45 49 e5 4c 9e b9 48 12 |k3..L...EI.L..H.| +00000080 3b 31 12 51 72 89 7b 0f 79 07 6b 35 11 42 af a8 |;1.Qr.{.y.k5.B..| +00000090 21 40 bd 9b e9 0f 98 80 70 6e e0 b1 99 58 9e 42 |!@......pn...X.B| +000000a0 ca 0c 6f 87 2f 9b 91 10 7d fc c4 4e 57 1d 2f 79 |..o./...}..NW./y| +000000b0 18 ba 6f 6f 61 f2 e4 c0 5e 4f fd 6c 58 06 83 6e |..ooa...^O.lX..n| +000000c0 52 b1 88 69 74 e1 12 3a 81 d6 32 b3 ac 06 4e 79 |R..it..:..2...Ny| +000000d0 7a 50 1c 70 1e 63 6f 46 fa 17 b8 e2 1b b9 31 e2 |zP.p.coF......1.| +000000e0 b0 f6 2f f3 ca 39 95 57 e2 51 82 d1 bf f0 f0 a2 |../..9.W.Q......| +000000f0 3c 1b 28 cc e2 88 83 1d db f7 56 b3 dd 39 d5 cb |<.(.......V..9..| +00000100 80 28 dc d4 2e e7 c6 a1 3a be 1f 8d 9f 53 5e 31 |.(......:....S^1| +00000110 24 f1 25 36 2f f9 b1 f1 56 91 74 c8 44 6e bc c1 |$.%6/...V.t.Dn..| +00000120 a3 cf 35 03 aa cf 87 66 9f 30 e7 eb f6 ff fd b9 |..5....f.0......| +00000130 de 41 d4 b9 ef ce 99 d6 f3 e2 a6 ae 05 39 83 56 |.A...........9.V| +00000140 5b 18 b6 52 8d a0 24 5e 34 4a 12 a6 8a 66 e3 c5 |[..R..$^4J...f..| +00000150 70 92 3c f9 95 0c 59 58 65 b0 dc 17 03 03 00 59 |p.<...YXe......Y| +00000160 56 82 fd bc ab b7 55 ee 45 23 0a cc 55 f7 fb d3 |V.....U.E#..U...| +00000170 9f 75 0c 1f a1 f9 bc 3b 4f d5 4a 6b 47 14 6f 34 |.u.....;O.JkG.o4| +00000180 61 85 c4 e5 3f fb 6d 0e 49 c8 f5 66 81 6b 3a b5 |a...?.m.I..f.k:.| +00000190 14 f2 74 52 bf 8e d7 40 63 a0 45 ce 0b 69 e5 d6 |..tR...@c.E..i..| +000001a0 43 6e 01 8b fd 54 6f ab ce 03 57 c5 3f 6a 00 c1 |Cn...To...W.?j..| +000001b0 bb 79 01 ee 90 7d 50 e7 de 17 03 03 00 35 cc 30 |.y...}P......5.0| +000001c0 81 af c1 0c 4a e7 c9 d4 d2 fc 8f 0f a4 54 1c 41 |....J........T.A| +000001d0 86 c9 a9 81 64 ce 4c 56 1a 94 fc 4b f7 e8 9d 50 |....d.LV...K...P| +000001e0 33 4b b2 92 99 ee 79 43 ce 1f ea e2 14 5e 24 f1 |3K....yC.....^$.| +000001f0 72 be c8 17 03 03 00 17 45 29 9b e2 ea a1 d3 16 |r.......E)......| +00000200 8e 0c ce 85 30 a6 cd 37 b7 5a 42 0f dd 55 4d 17 |....0..7.ZB..UM.| +00000210 03 03 00 13 ef e7 22 eb 4a e8 2a b4 88 da 2e 08 |......".J.*.....| +00000220 01 95 77 ad 88 2e 53 |..w...S| diff --git a/src/crypto/tls/testdata/Client-TLSv13-ClientCert-RSA-ECDSA b/src/crypto/tls/testdata/Client-TLSv13-ClientCert-RSA-ECDSA index 0cd5b76d66..e159d3e537 100644 --- a/src/crypto/tls/testdata/Client-TLSv13-ClientCert-RSA-ECDSA +++ b/src/crypto/tls/testdata/Client-TLSv13-ClientCert-RSA-ECDSA @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,129 +7,131 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 40 ad 79 0c ad |....z...v..@.y..| -00000010 83 38 58 82 dc b2 5a d1 e2 de f5 43 99 72 8a 93 |.8X...Z....C.r..| -00000020 ba b1 ea 17 21 52 a7 e9 ed dc 48 20 00 00 00 00 |....!R....H ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 12 8c 45 11 2d |....z...v....E.-| +00000010 22 19 db e3 07 f4 31 70 a6 9d f5 b2 6a df 8f b5 |".....1p....j...| +00000020 57 6e a1 80 75 6b 6b 77 53 cd b4 20 00 00 00 00 |Wn..ukkwS.. ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 03 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 bd |..+.....3.$... .| -00000060 d2 3a 7e c2 30 84 4f f2 39 7e 26 11 65 49 b9 b2 |.:~.0.O.9~&.eI..| -00000070 ac 63 c8 ef ea 5e f6 23 33 70 ec 16 86 49 03 14 |.c...^.#3p...I..| -00000080 03 03 00 01 01 17 03 03 00 17 16 47 c1 58 83 6b |...........G.X.k| -00000090 66 06 c4 39 42 8f 68 fb 3a 07 9e e7 74 41 0d 10 |f..9B.h.:...tA..| -000000a0 97 17 03 03 00 42 42 b2 84 94 a6 18 c6 b6 21 77 |.....BB.......!w| -000000b0 1e 02 57 4a 14 2d c4 84 17 f1 fa b4 63 0f aa d7 |..WJ.-......c...| -000000c0 4a d5 ae 75 f1 da 14 ec 51 09 93 6b 62 6f 8f 7e |J..u....Q..kbo.~| -000000d0 fe 0c 7f 63 ef 1b 87 d8 43 42 d0 f4 2d 6d 0f cc |...c....CB..-m..| -000000e0 ef 77 79 17 1e 39 1e 75 17 03 03 02 22 9c 82 27 |.wy..9.u...."..'| -000000f0 99 e0 4b 44 a7 a7 bb a9 25 a2 58 7f 70 3f 82 1a |..KD....%.X.p?..| -00000100 4b bc e1 35 3e 66 fa 4f ac 7f 7e da 73 13 06 0f |K..5>f.O..~.s...| -00000110 fe 97 ef 82 53 2e d0 e2 11 c6 ee 8d 25 d2 f0 5c |....S.......%..\| -00000120 2e b8 61 40 09 12 d4 11 9b b8 3d 38 d7 d5 a7 76 |..a@......=8...v| -00000130 ed a7 bf 6f 39 9c 83 49 57 86 de 53 da c5 ff 8a |...o9..IW..S....| -00000140 ee 47 bc 19 72 d3 cc d0 5b fc 6b 25 2f 64 2a 0c |.G..r...[.k%/d*.| -00000150 7d e9 8a 1f f8 48 d1 74 d5 70 97 e7 b4 e2 c8 ce |}....H.t.p......| -00000160 dc 74 27 e9 af b1 64 56 19 28 8a 34 93 4e 1c 03 |.t'...dV.(.4.N..| -00000170 67 ae 41 fb 5f d1 e3 20 45 6b bd 49 25 d8 b4 8b |g.A._.. Ek.I%...| -00000180 d4 96 d6 96 b2 72 72 f0 d0 68 f1 f7 f3 17 76 85 |.....rr..h....v.| -00000190 78 0e dd 35 83 8a 7a 45 c5 91 86 4b a6 b5 77 b4 |x..5..zE...K..w.| -000001a0 ef 02 43 5c 42 c7 f8 a6 1d ed 73 d2 41 02 be cb |..C\B.....s.A...| -000001b0 24 40 61 5a 5f 7a f6 bf f9 d0 bd 05 7f 90 52 16 |$@aZ_z........R.| -000001c0 65 49 c6 74 61 f0 05 fa dd 83 69 b7 ff 5a 2c 4b |eI.ta.....i..Z,K| -000001d0 63 6d d2 57 01 43 67 54 25 90 72 f8 12 7e c2 39 |cm.W.CgT%.r..~.9| -000001e0 26 a9 65 55 02 ca 87 8a e6 13 cd a4 6b eb 3c 4d |&.eU........k.#| -00000250 59 38 6c 9f be 1b ba 60 93 e8 c9 24 fb 13 11 b7 |Y8l....`...$....| -00000260 78 d8 a7 30 6d 06 0f 4d 59 5d d1 1f 81 13 33 99 |x..0m..MY]....3.| -00000270 a8 4d 63 16 53 73 40 22 4b 55 21 79 c1 ce 1c 92 |.Mc.Ss@"KU!y....| -00000280 8c d6 95 14 fd 93 5d c2 54 20 30 c5 79 b0 cd eb |......].T 0.y...| -00000290 ac 1b 50 6a 25 b7 e8 f1 0f da f3 d8 6b 17 2b 12 |..Pj%.......k.+.| -000002a0 06 a8 9a 88 be 2f f3 52 b3 d7 70 05 df 57 88 f9 |...../.R..p..W..| -000002b0 ec 59 d4 e7 ce cb c3 1f 33 3e c0 d8 04 9f 59 a0 |.Y......3>....Y.| -000002c0 04 c0 13 b3 a6 7c ce 6c c4 fa 82 cd da 11 17 b6 |.....|.l........| -000002d0 c2 40 cd e6 5a 6e d3 b5 17 f0 4d c4 34 8f 2a 28 |.@..Zn....M.4.*(| -000002e0 4d ce 93 d5 eb 7e 0a d2 57 0a 98 cf ac 48 ee a8 |M....~..W....H..| -000002f0 8a bd ec c2 d7 d9 39 af e2 a0 9f b2 fd d1 4e 96 |......9.......N.| -00000300 fa fd 34 f7 a4 3e 3d 31 9a f6 a2 a7 97 a3 43 17 |..4..>=1......C.| -00000310 03 03 00 a4 cf 0d e1 8d b7 e4 1a c0 79 0d 7e d9 |............y.~.| -00000320 70 a3 34 57 0f 72 b4 5c 05 7f 1e 16 52 ba d3 e7 |p.4W.r.\....R...| -00000330 fb e5 b8 b0 8d cf 91 7e 96 c4 70 6e cb e5 7e 51 |.......~..pn..~Q| -00000340 19 17 c1 94 e9 49 69 a0 21 59 74 a9 1d 34 9c 10 |.....Ii.!Yt..4..| -00000350 a9 10 f0 4a 51 2c e3 1d e3 59 28 f2 3b ea 66 c1 |...JQ,...Y(.;.f.| -00000360 ed 6a 8d 39 72 ea 5a 24 7a ee 9f cd 85 9d 54 60 |.j.9r.Z$z.....T`| -00000370 d4 95 fd 8d 63 a4 78 6c 2f 7d 6a a5 53 e4 42 97 |....c.xl/}j.S.B.| -00000380 e8 19 36 bf 14 9c a8 48 9f 57 ad 29 7a 30 e5 a9 |..6....H.W.)z0..| -00000390 32 e7 0f 24 9c ca 9d 6d b7 47 46 1c cb 90 7d 18 |2..$...m.GF...}.| -000003a0 39 70 d2 c1 08 28 dc d7 3a 3e 5e 62 a7 4a 4a af |9p...(..:>^b.JJ.| -000003b0 02 93 ce 4b 5d a2 96 f3 17 03 03 00 35 10 07 d6 |...K].......5...| -000003c0 82 f3 28 ef 2f 08 17 f6 0b c2 da 1f b7 52 e1 eb |..(./........R..| -000003d0 ca f4 0b c6 21 5c 54 4d f9 0b 04 c1 5a bf 63 58 |....!\TM....Z.cX| -000003e0 1c e1 da 7f f7 1f 84 77 09 3a 35 7c e6 1f 89 f2 |.......w.:5|....| -000003f0 fd 01 |..| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 d9 |..+.....3.$... .| +00000060 7a 4f 73 11 d0 32 a9 32 96 d4 d6 5d 93 25 4a 83 |zOs..2.2...].%J.| +00000070 26 6d 4d 30 02 8e ed 8e 65 0a 13 27 f3 53 5b 14 |&mM0....e..'.S[.| +00000080 03 03 00 01 01 17 03 03 00 17 85 46 a7 e1 6f a9 |...........F..o.| +00000090 d5 ea 00 e8 d2 7c 10 b9 e2 b1 98 9c eb a3 54 02 |.....|........T.| +000000a0 61 17 03 03 00 42 ca 37 9a 89 50 e8 5d b2 6d 21 |a....B.7..P.].m!| +000000b0 56 68 10 a1 47 76 16 87 f3 50 f0 5f d1 50 3a 03 |Vh..Gv...P._.P:.| +000000c0 1e c7 27 84 d6 82 94 35 92 34 d7 54 f4 9b 30 8d |..'....5.4.T..0.| +000000d0 e9 9b 5a 04 88 4c 27 b3 3a 32 37 9e c2 a5 8a 19 |..Z..L'.:27.....| +000000e0 d3 71 30 7b ba 9f d3 7f 17 03 03 02 22 4e e7 88 |.q0{........"N..| +000000f0 d6 55 13 2b c9 db 93 db 9f 6b ca 4e a7 91 a1 30 |.U.+.....k.N...0| +00000100 04 c7 e7 fc 5d f8 28 0d b0 cd 73 b2 4b 59 e5 89 |....].(...s.KY..| +00000110 68 f8 bb 47 1f 73 a2 d7 fe 75 73 8d a4 02 e7 22 |h..G.s...us...."| +00000120 80 c0 aa d1 4c de f8 89 1a d2 12 86 35 7f cf 40 |....L.......5..@| +00000130 e1 4f 47 f2 69 51 7c a7 7c 23 32 ed a6 53 8a 4a |.OG.iQ|.|#2..S.J| +00000140 47 86 e7 0c c5 5f 34 9f 91 eb d2 c1 bd 65 1e 7c |G...._4......e.|| +00000150 6e ec 18 70 21 d9 95 dc fe 44 cf d7 3f 58 fa e1 |n..p!....D..?X..| +00000160 43 df 2e 44 7f a0 5f 48 e3 02 2c fd 18 f2 23 25 |C..D.._H..,...#%| +00000170 a5 fc d1 23 2c 81 16 c3 8e 58 47 51 bf 0e c3 57 |...#,....XGQ...W| +00000180 54 bf d1 8e f6 82 91 ce 5f 24 2d fd e5 80 52 c6 |T......._$-...R.| +00000190 db b9 a1 3a 0d 80 25 98 17 ed cc 81 36 9f 85 31 |...:..%.....6..1| +000001a0 11 25 65 36 50 ed 8e c7 6f b5 28 22 4c f3 93 94 |.%e6P...o.("L...| +000001b0 61 0d c1 10 19 37 b2 3b ec 41 3c 95 bc ae b5 8d |a....7.;.A<.....| +000001c0 95 87 39 bd 41 a7 cf 3e b2 83 7c 12 fd 37 e4 6b |..9.A..>..|..7.k| +000001d0 0d c7 f9 7f f5 02 74 e0 37 c2 45 68 ab 84 f5 65 |......t.7.Eh...e| +000001e0 78 4f 64 c5 d2 de 15 2b 1b d9 06 7a d5 f8 34 13 |xOd....+...z..4.| +000001f0 19 54 2e 7a 85 04 d0 90 51 78 2a e2 4b ca 11 b9 |.T.z....Qx*.K...| +00000200 7d 38 bd 5f be 5d d5 da 36 41 49 95 39 8e 1e df |}8._.]..6AI.9...| +00000210 a9 3b cc 18 8f 26 bd 37 97 f1 49 42 d4 e9 48 91 |.;...&.7..IB..H.| +00000220 21 dc 70 9b 21 7a 24 13 8d 8e 7a d6 5f 11 2a ab |!.p.!z$...z._.*.| +00000230 73 9a cf cb af bf 3e 19 46 81 48 0a 17 b1 f1 24 |s.....>.F.H....$| +00000240 a5 aa 60 91 fa d0 9b e4 95 28 7a a2 bf 2b ac 18 |..`......(z..+..| +00000250 5f 1d 98 b8 e8 1a b4 58 fe 66 25 d2 0a 8d ad 7f |_......X.f%.....| +00000260 d2 46 95 8d d8 42 de 94 12 88 a6 30 80 14 ce 7c |.F...B.....0...|| +00000270 ef 20 31 cd a3 e7 6b 29 b7 74 aa 62 c4 4c d5 52 |. 1...k).t.b.L.R| +00000280 15 8e 7b da 51 60 24 ca 8d 65 9b 9b d8 2a df 1c |..{.Q`$..e...*..| +00000290 28 63 28 e7 20 07 f2 b4 99 d8 d6 2a d2 d3 ae 28 |(c(. ......*...(| +000002a0 5e c5 12 25 fa b5 1c 31 1c 6d eb 1f d9 92 2b cf |^..%...1.m....+.| +000002b0 de fa d9 7c 39 69 0b a3 a3 05 aa 11 7d 41 3f d7 |...|9i......}A?.| +000002c0 17 48 41 a7 3c 4b 42 93 46 26 da de 47 fe f8 76 |.HA.>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 02 11 f1 43 fc 28 7d |............C.(}| -00000010 43 0b 17 e4 ed cc 95 d5 09 4e 8f 44 3c 3b 46 23 |C........N.D<;F#| -00000020 59 a4 62 a7 94 1e da b6 a7 a5 22 15 6a ed e3 eb |Y.b.......".j...| -00000030 4f 6d 0e 91 c6 20 74 af 97 80 95 db 6a b6 2d ac |Om... t.....j.-.| -00000040 a8 d9 95 84 95 5b 32 27 ec 42 42 a8 fd 05 fc ad |.....[2'.BB.....| -00000050 2e 00 e3 4a 9d 93 d1 5e fd dc 22 30 1f 9c e9 cb |...J...^.."0....| -00000060 3f 2e ac ad 0f ab b7 46 82 69 38 db c6 8a be 77 |?......F.i8....w| -00000070 7e 83 77 4c e1 f4 f2 cf c2 b1 86 ff 17 d3 1d 79 |~.wL...........y| -00000080 3e ac f8 6e 73 15 ab 02 4c bf 2a 63 41 ce 93 3b |>..ns...L.*cA..;| -00000090 af 11 70 8c 91 91 f4 14 5c 1b 63 4b 42 3b d8 ca |..p.....\.cKB;..| -000000a0 00 f6 02 b3 c8 d3 ab 01 1d f2 71 86 7b f9 13 de |..........q.{...| -000000b0 1e 39 1c e7 b5 3b b5 bb 26 33 f7 a9 3f 29 e2 8c |.9...;..&3..?)..| -000000c0 d1 67 64 11 b4 29 be 6e c9 cf c5 6e 41 43 41 e7 |.gd..).n...nACA.| -000000d0 43 9c 5d fb a1 b6 b3 f9 0f 4c 17 11 3c 56 0e 49 |C.]......L...z.U.....4..| -00000130 11 86 8a 14 8e d6 5c c0 c2 55 de da 37 c4 ac 69 |......\..U..7..i| -00000140 95 42 84 5f 1d 5f c7 32 91 a9 45 02 c3 a3 da 4f |.B._._.2..E....O| -00000150 96 da c0 a2 09 7a a6 2b 25 f4 a2 94 89 fa bd 0f |.....z.+%.......| -00000160 87 04 e1 87 00 c4 4f 45 39 7a 5a 7d 75 c5 c9 f6 |......OE9zZ}u...| -00000170 27 34 2d ba 12 c5 2c 76 06 b0 aa d0 34 e1 99 e9 |'4-...,v....4...| -00000180 9b 01 db 2a b4 d5 dd 55 2b 92 6d e3 9e fc f1 09 |...*...U+.m.....| -00000190 2b 37 8b 37 8f 70 31 ee d2 f0 86 5a 1f d3 4a 29 |+7.7.p1....Z..J)| -000001a0 7c c9 0e 97 7c 4f e6 87 b7 c8 94 f3 d2 0b 4a 1d ||...|O........J.| -000001b0 59 60 09 81 55 6a 01 38 9f ca 20 e0 6e 44 f7 b5 |Y`..Uj.8.. .nD..| -000001c0 f6 3e 2e d0 81 f6 e6 1d 15 cf c3 d8 ae 98 84 d1 |.>..............| -000001d0 0b c9 e4 65 96 f9 eb c9 60 6d 50 37 49 9f 6d b1 |...e....`mP7I.m.| -000001e0 b9 f6 25 20 81 2d cf b4 17 2b 4c a9 8a 76 8a db |..% .-...+L..v..| -000001f0 77 8c 29 47 05 0b 27 e1 52 8d 37 27 fb c0 70 26 |w.)G..'.R.7'..p&| -00000200 3b 6d 2e 74 05 75 88 e4 63 3d ac 98 3f 74 67 3b |;m.t.u..c=..?tg;| -00000210 c6 dc 41 39 2b 20 ef f9 8b 2f 4e 20 17 03 03 00 |..A9+ .../N ....| -00000220 99 7d 8a 83 dd 34 5e 37 e2 c3 85 22 f3 6b ee bc |.}...4^7...".k..| -00000230 a5 21 1b c5 2c 38 cf 99 09 5b 31 97 5e a0 8b 69 |.!..,8...[1.^..i| -00000240 75 3a 23 64 18 22 fb 31 ed ac 8b 0f ae 9c 4e ee |u:#d.".1......N.| -00000250 06 0e 3c 3a 18 d3 8e 0c dc d4 3f 7b 25 e3 90 85 |..<:......?{%...| -00000260 ca f4 8a 5c 5e 5e 44 f3 1b 57 cd 14 e0 8d 67 36 |...\^^D..W....g6| -00000270 6e c2 a6 95 60 f3 86 20 29 a6 a8 8f b3 b0 0d 57 |n...`.. )......W| -00000280 d2 1e 4a b9 d2 63 33 09 f9 c5 87 94 89 c5 fd 2e |..J..c3.........| -00000290 de b3 f0 0e 7b 4e 3e d6 21 b4 3b 58 bd 2a 35 49 |....{N>.!.;X.*5I| -000002a0 5e b0 f4 5a ca 58 dc a5 8b 45 a5 d1 7b 13 b2 00 |^..Z.X...E..{...| -000002b0 52 c4 b2 6c d1 9a b8 c5 1b fe 17 03 03 00 35 c9 |R..l..........5.| -000002c0 9b c7 94 b3 eb 5f 4e ab 8c c0 de cf b6 b4 5c ee |....._N.......\.| -000002d0 bb 5f fa 48 a2 06 f0 ed f5 b1 ba 74 0c c5 64 1a |._.H.......t..d.| -000002e0 ce 2e 9e 90 4b 6e 98 13 a0 98 99 a3 b4 6f 73 76 |....Kn.......osv| -000002f0 7b e3 26 15 17 03 03 00 17 3e a1 f0 68 e6 00 86 |{.&......>..h...| -00000300 10 f4 bf 26 b6 f5 e6 77 85 ca b7 c1 75 bb f9 78 |...&...w....u..x| -00000310 17 03 03 00 13 43 7f f3 84 ee d7 a9 59 9d c3 5c |.....C......Y..\| -00000320 c0 b7 c8 20 4e 83 ba 23 |... N..#| +00000000 14 03 03 00 01 01 17 03 03 02 11 67 1a 6d 9c e6 |...........g.m..| +00000010 fd 73 aa 96 0b 7a 9b 1a 28 fd e8 5c 7b a2 65 91 |.s...z..(..\{.e.| +00000020 e8 6a 96 48 6e 56 da 2d 8f 79 d3 d9 bb db f1 26 |.j.HnV.-.y.....&| +00000030 27 99 e5 d2 2e b2 20 ee af e5 b5 8b 6d a3 ea a3 |'..... .....m...| +00000040 2a 6a a5 5e 28 61 04 10 d3 01 62 bd 16 f3 2b 84 |*j.^(a....b...+.| +00000050 1b ca 26 67 62 4b b6 24 df 20 9a 06 57 ed 21 37 |..&gbK.$. ..W.!7| +00000060 a1 0c e4 e1 cd c8 39 e6 5c bc 78 46 8c fb ad f1 |......9.\.xF....| +00000070 55 15 bc d5 f5 21 2b b1 b6 03 5c 14 0f cf 8d 79 |U....!+...\....y| +00000080 ad 64 b6 fd de 92 a9 51 f5 29 f3 d3 14 22 9a d5 |.d.....Q.)..."..| +00000090 70 37 87 19 dd c3 d3 7b 79 ce 80 c3 f8 02 ea dc |p7.....{y.......| +000000a0 86 f8 af d2 fe 0d 49 a5 ba 6d ec 42 cf 28 21 ed |......I..m.B.(!.| +000000b0 5f 23 90 3b 83 d8 c4 73 fd 18 57 7f b1 81 9f 88 |_#.;...s..W.....| +000000c0 19 3c bc 4b 24 4c 22 2f 07 f3 07 29 e8 6c 30 8e |.<.K$L"/...).l0.| +000000d0 12 b5 bc 2f 2f c0 80 fb a1 f0 73 0c 22 ea 4f 24 |...//.....s.".O$| +000000e0 3b 37 a5 68 65 12 42 0b 6b 7f eb ff 59 eb 92 de |;7.he.B.k...Y...| +000000f0 96 d9 f7 23 95 b1 b5 93 61 8b a5 bd c2 bf b0 86 |...#....a.......| +00000100 af 54 91 21 38 b1 7e 4c 05 82 71 70 30 a0 19 ac |.T.!8.~L..qp0...| +00000110 10 63 fa 6a 05 95 14 18 27 cc f3 2e 2d 78 93 35 |.c.j....'...-x.5| +00000120 65 c9 4e ec 3a 10 9e 75 60 21 18 71 f9 b5 95 37 |e.N.:..u`!.q...7| +00000130 af 29 a1 51 a9 e5 a9 b5 5b a5 81 72 65 6c eb f2 |.).Q....[..rel..| +00000140 2e 78 85 04 b8 c0 3c e6 3a 49 0e 28 fa 0a f8 73 |.x....<.:I.(...s| +00000150 16 da ba 60 db ed ad de 7d 5b 10 15 03 5b 79 d0 |...`....}[...[y.| +00000160 d7 da 91 ff 12 76 37 94 43 ad f4 f8 b9 39 23 e6 |.....v7.C....9#.| +00000170 7c ed 92 d9 92 c4 2b bd 8c 7a fd ab 0d 17 0b b5 ||.....+..z......| +00000180 5b 8a 5f a6 9b 19 04 88 37 75 54 a9 35 15 ff df |[._.....7uT.5...| +00000190 42 8b aa fb 9f 30 28 ef bb 74 95 a5 af 44 c2 70 |B....0(..t...D.p| +000001a0 55 c7 cc f5 37 b9 34 c6 dd fb 9b c5 70 fa 0f ed |U...7.4.....p...| +000001b0 45 54 38 02 34 0a 09 df 4c bd 07 78 ce 66 c7 0d |ET8.4...L..x.f..| +000001c0 57 94 06 97 6d b3 ec 90 70 81 37 23 77 b7 2f cb |W...m...p.7#w./.| +000001d0 c5 af 12 bd a7 c5 81 87 92 9e 9b ed 78 6d bf 63 |............xm.c| +000001e0 01 aa d7 f3 50 f2 f7 c6 af a9 7f 73 d8 fb 17 27 |....P......s...'| +000001f0 c3 33 8d 2b 2c ad 10 4d 36 5c 49 e8 19 06 34 45 |.3.+,..M6\I...4E| +00000200 00 eb 1f c1 09 c8 19 06 55 91 52 df cd db f2 d5 |........U.R.....| +00000210 22 2a af 92 cb 18 9f 96 2a 12 d5 ea 17 03 03 00 |"*......*.......| +00000220 99 01 94 eb cc e4 e7 4f 90 c1 9b 85 c8 1f 73 f0 |.......O......s.| +00000230 50 52 7d 62 50 f9 90 49 59 e8 31 a0 ea 3b 42 2c |PR}bP..IY.1..;B,| +00000240 2c dd e8 9c 42 d5 5f 50 84 b9 78 0a 5e 73 55 d9 |,...B._P..x.^sU.| +00000250 21 39 e5 bc c7 88 04 1d b8 d3 46 b3 a0 b6 07 60 |!9........F....`| +00000260 4a 39 1a 39 cc e3 22 2f de 30 16 71 54 1d c0 69 |J9.9.."/.0.qT..i| +00000270 ea 73 81 bf 17 7d 82 dc 33 cd 1f c2 e8 eb 67 61 |.s...}..3.....ga| +00000280 60 1e dd 2c 56 45 d4 49 fb 7f 21 dd a8 23 8c 13 |`..,VE.I..!..#..| +00000290 d3 1b c5 c1 3b 08 e4 21 ac 35 eb d6 44 a6 48 c9 |....;..!.5..D.H.| +000002a0 e2 ae 04 a8 36 fb e8 f6 2e 91 90 da 5a ae 18 3b |....6.......Z..;| +000002b0 a7 14 94 ed b7 f4 8a cc 74 be 17 03 03 00 35 a2 |........t.....5.| +000002c0 9f 3f bd d0 7c 1e ac 4e c9 7e 9d ee 9a 89 61 55 |.?..|..N.~....aU| +000002d0 38 41 8c d9 e1 56 35 bd 0b 6e ad 77 0e 0d 08 df |8A...V5..n.w....| +000002e0 73 67 36 28 e0 9b 96 ba c0 38 de 95 31 53 49 9c |sg6(.....8..1SI.| +000002f0 db 16 c2 90 17 03 03 00 17 6f cc cb 4e ac ef a0 |.........o..N...| +00000300 48 75 94 28 c5 8d 06 33 28 94 11 84 25 9f 26 a6 |Hu.(...3(...%.&.| +00000310 17 03 03 00 13 d2 ce 1b 90 04 b1 32 38 db 0d b5 |...........28...| +00000320 3c e8 e3 34 bc c3 d1 33 |<..4...3| diff --git a/src/crypto/tls/testdata/Client-TLSv13-ClientCert-RSA-RSAPSS b/src/crypto/tls/testdata/Client-TLSv13-ClientCert-RSA-RSAPSS index e557181b29..a306d4bb53 100644 --- a/src/crypto/tls/testdata/Client-TLSv13-ClientCert-RSA-RSAPSS +++ b/src/crypto/tls/testdata/Client-TLSv13-ClientCert-RSA-RSAPSS @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,138 +7,140 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 46 b8 dc eb 72 |....z...v..F...r| -00000010 ac 41 0a 3c 58 14 84 a0 75 91 e1 ca d7 3c c7 2c |.A..#S....R.| +00000020 e5 c9 55 c3 c1 0d db 83 aa ba 4e 20 00 00 00 00 |..U.......N ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 03 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 f9 |..+.....3.$... .| -00000060 c2 64 c8 93 91 3a 81 55 ca 85 23 d4 91 37 3e 01 |.d...:.U..#..7>.| -00000070 42 63 2e 2a a9 13 0c a9 f2 e6 74 14 1e 5c 52 14 |Bc.*......t..\R.| -00000080 03 03 00 01 01 17 03 03 00 17 23 71 3e 39 7a 0c |..........#q>9z.| -00000090 2a fa 89 f1 65 d1 b0 23 96 8e 6a e4 55 2c fd 34 |*...e..#..j.U,.4| -000000a0 ea 17 03 03 00 20 b7 a2 d6 ff b3 b4 db ce f8 90 |..... ..........| -000000b0 f9 a3 9c 0c 8f f0 77 3e 37 f2 d9 e7 84 65 28 f6 |......w>7....e(.| -000000c0 dd fe b9 42 03 3c 17 03 03 02 7a d4 cf 93 f6 2b |...B.<....z....+| -000000d0 64 e3 13 75 41 62 7d bd cf 4f 42 80 23 f4 03 92 |d..uAb}..OB.#...| -000000e0 35 02 5e ed bb c6 2f b1 a8 57 cf d4 69 94 6a db |5.^.../..W..i.j.| -000000f0 39 b8 3a 05 07 dd f1 1d 63 13 22 9b d7 58 68 6f |9.:.....c."..Xho| -00000100 4f ac 79 6a 47 0a 23 35 3c 9b 9f 15 04 e7 6b d8 |O.yjG.#5<.....k.| -00000110 ff df 00 6c 68 5e a0 41 6a a9 34 9f 37 98 c2 3d |...lh^.Aj.4.7..=| -00000120 51 29 73 c4 ad 34 e5 69 78 18 eb 03 55 c0 c6 0d |Q)s..4.ix...U...| -00000130 43 d5 4a 5d cb 53 e6 b9 df e8 8b 0e 98 04 89 bb |C.J].S..........| -00000140 f4 a1 48 01 af d3 42 ef 17 e7 f9 27 b4 b1 63 99 |..H...B....'..c.| -00000150 91 a6 c5 c1 cb 6d 1c 55 b1 69 1c ec b1 b7 c3 cd |.....m.U.i......| -00000160 7a 93 f2 d8 e4 c4 96 43 0a e1 18 b5 9a 3b 57 83 |z......C.....;W.| -00000170 98 ce 74 f2 4c 65 ad 01 aa 76 b5 b0 7c a0 7d 09 |..t.Le...v..|.}.| -00000180 ad d6 20 7d 12 67 f8 4c 2c 41 37 34 66 86 fe 3d |.. }.g.L,A74f..=| -00000190 44 52 f0 08 26 4c b3 e7 71 b3 89 b3 5c 78 7e db |DR..&L..q...\x~.| -000001a0 34 31 dc dc 7c 7d 28 e1 41 96 f4 2f 28 60 9f 5b |41..|}(.A../(`.[| -000001b0 b2 2b 37 6b 3f 3a 37 e2 38 7a 66 40 fe 44 44 72 |.+7k?:7.8zf@.DDr| -000001c0 b4 e3 97 f3 db 73 c8 af 96 c8 a6 24 ef ea 34 8f |.....s.....$..4.| -000001d0 5e 4b 21 22 19 d8 4a db 2e f1 23 90 d0 d2 38 f3 |^K!"..J...#...8.| -000001e0 c6 08 5d 1d c9 a3 f2 6d 01 eb 30 5e cd f4 98 f5 |..]....m..0^....| -000001f0 0d d8 68 4f 00 f4 cd 24 9f c4 3c 6a 31 5d c0 e5 |..hO...$..S8B.| -00000350 6f 99 20 c4 98 59 48 61 e0 13 80 8e 96 25 96 f8 |o. ..YHa.....%..| -00000360 c9 c8 35 9c 35 c0 13 d7 34 24 0b 6e 59 4f 1b 77 |..5.5...4$.nYO.w| -00000370 1f 9a 71 6b 6b dc 71 23 b1 a2 e8 1e c2 a0 b1 8c |..qkk.q#........| -00000380 27 5e 90 c5 f8 65 30 a2 de fc 6b b2 e3 5d 8d 9f |'^...e0...k..]..| -00000390 70 32 3c 92 47 c7 91 10 49 0d f1 3b 41 f1 14 3b |p2<.G...I..;A..;| -000003a0 09 55 f5 78 0e 91 1b 75 a0 58 fc c9 34 82 fe 51 |.U.x...u.X..4..Q| -000003b0 20 73 71 3d 7f 82 a4 29 bc 04 67 d7 30 c7 a5 4b | sq=...)..g.0..K| -000003c0 f3 94 4d 15 35 2a 1e 46 82 3f 36 f4 7b ff 9f 88 |..M.5*.F.?6.{...| -000003d0 3b e6 60 bc 86 51 59 ad 97 58 95 7e 6a 4b c9 6c |;.`..QY..X.~jK.l| -000003e0 34 96 03 17 03 03 00 35 03 94 eb e1 e5 9d eb 8f |4......5........| -000003f0 34 b1 28 3c 9d 26 40 a9 e7 4c 2b bf 37 32 b6 aa |4.(<.&@..L+.72..| -00000400 78 d2 45 0c 6c 5b 0a 0e 8a 3a b6 1a 01 09 3e 0a |x.E.l[...:....>.| -00000410 45 25 c6 83 8a 4a cc 22 d9 29 c8 8a 32 |E%...J.".)..2| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 d8 |..+.....3.$... .| +00000060 b2 05 15 9a 39 db 4f d6 d1 d1 e5 6c f0 8d 6f b1 |....9.O....l..o.| +00000070 54 d6 ff f2 48 2b a7 14 2a f6 4e cd 28 41 61 14 |T...H+..*.N.(Aa.| +00000080 03 03 00 01 01 17 03 03 00 17 c9 09 91 34 14 6c |.............4.l| +00000090 de cb 9f d5 0d 03 5e 58 69 4e 61 75 8a 4b a9 35 |......^XiNau.K.5| +000000a0 51 17 03 03 00 20 4f 41 5c 1d f6 73 a0 ca a7 a9 |Q.... OA\..s....| +000000b0 4c b9 34 ee 7c c0 68 eb e6 28 9f 1f 7f bf 6e 17 |L.4.|.h..(....n.| +000000c0 17 cf 6c cb ad 72 17 03 03 02 7a 1f d1 c8 b3 7a |..l..r....z....z| +000000d0 7b 7b c9 fa c0 5a cb e9 18 64 b9 ef 49 8f 2d da |{{...Z...d..I.-.| +000000e0 cd 97 44 ec dc 2e 32 d8 39 e3 40 78 97 ef 01 69 |..D...2.9.@x...i| +000000f0 0a b6 fc 31 d4 53 85 0c c1 51 3a a7 02 e3 af ae |...1.S...Q:.....| +00000100 20 4b 44 13 c2 d1 4d de b3 5d 24 3e 64 36 78 fd | KD...M..]$>d6x.| +00000110 6f 36 79 3e c2 ef 48 27 e0 e2 a3 86 61 22 14 61 |o6y>..H'....a".a| +00000120 88 df 08 86 ed af 2a d6 2f b6 9d 30 f7 6e 28 7a |......*./..0.n(z| +00000130 44 2c b1 32 cc 4b 9b 6f 67 69 83 cc 7b 59 64 16 |D,.2.K.ogi..{Yd.| +00000140 76 43 b5 0c 6f 5e 5c f0 17 e6 b4 32 0d 2d 01 91 |vC..o^\....2.-..| +00000150 7c 00 af bf 99 fb 0b 97 8e fa 1f cc 10 4c cb 73 ||............L.s| +00000160 81 f8 b3 7c 2e 8d ba c5 95 f1 7b 19 f2 19 48 c5 |...|......{...H.| +00000170 ba a0 ba fd b3 29 42 1d 3a e2 f1 8f 13 c5 38 66 |.....)B.:.....8f| +00000180 be 60 e9 a3 e4 b7 c3 e1 3d cf c3 62 85 4f f3 29 |.`......=..b.O.)| +00000190 11 e4 72 cd c5 90 9c 45 36 11 67 8a 09 a2 f8 b1 |..r....E6.g.....| +000001a0 48 e3 26 c5 d8 5d 8e b4 c0 af a6 e8 93 2f e8 99 |H.&..]......./..| +000001b0 75 07 56 82 ed 58 21 2a d8 4f dc 60 41 2f a9 49 |u.V..X!*.O.`A/.I| +000001c0 aa 73 68 22 b7 73 5c 14 a4 46 b2 de 68 a8 f1 4a |.sh".s\..F..h..J| +000001d0 97 db 0d cd 29 26 d7 28 d2 d0 0c 81 43 c7 ae 0a |....)&.(....C...| +000001e0 c5 35 fe 55 da 7a ea 0f 78 95 f8 ed 02 84 de 5b |.5.U.z..x......[| +000001f0 3e ed e2 d2 25 75 a8 ec 7a 5a a9 35 eb d5 b9 08 |>...%u..zZ.5....| +00000200 36 f9 fd 1a 18 27 d0 bf 07 46 bb 8b a8 52 bf 8b |6....'...F...R..| +00000210 d6 c5 3f 16 11 f9 ea 85 e9 f9 5a 68 17 20 2b 92 |..?.......Zh. +.| +00000220 0c 58 55 b8 9a 66 6b 80 bb be 24 41 b4 2f 76 9a |.XU..fk...$A./v.| +00000230 c5 29 c5 86 e0 d3 1f 63 96 95 3f f2 67 7b 66 d5 |.).....c..?.g{f.| +00000240 79 cc 47 80 8e 13 1a 29 ee 9a 97 3f 79 e0 be 20 |y.G....)...?y.. | +00000250 c8 a1 6e 4a 85 91 7d 93 86 f4 0d 4d 5e e4 52 a9 |..nJ..}....M^.R.| +00000260 a9 17 8b ab fd aa dc fd a2 4b d3 d9 db 41 95 f9 |.........K...A..| +00000270 e3 31 a4 2d 53 43 a2 b9 6a 1e f8 5b f4 0d 55 70 |.1.-SC..j..[..Up| +00000280 f0 18 70 82 8e f3 53 3c 81 ac 13 2a b9 d0 33 dc |..p...S<...*..3.| +00000290 b9 8d b9 41 6a 4d 87 c6 70 f2 04 2c 60 01 5b 5d |...AjM..p..,`.[]| +000002a0 76 91 19 af 2d 48 82 69 59 15 c4 42 40 6a 38 3a |v...-H.iY..B@j8:| +000002b0 a2 db 21 b6 6d b3 e7 50 91 7c 8f f0 97 8f 7c 56 |..!.m..P.|....|V| +000002c0 8b 4d f5 d3 7a 81 b5 4d c5 33 ba 14 36 6f be ea |.M..z..M.3..6o..| +000002d0 95 1d d2 3d 29 a8 72 34 35 38 56 4c 65 47 b5 8b |...=).r458VLeG..| +000002e0 cb 43 9e 8d bd 1b 6b c3 2e 5b 9f f5 5a 60 e6 c9 |.C....k..[..Z`..| +000002f0 6b c4 85 5c ac 55 fa 67 47 15 45 b4 e9 49 dd 0a |k..\.U.gG.E..I..| +00000300 aa be 5f d3 ec c9 88 71 52 eb 91 e9 38 e4 14 15 |.._....qR...8...| +00000310 f3 ef 37 27 9c b1 c1 66 bb 40 c7 01 b5 8e f2 45 |..7'...f.@.....E| +00000320 fb be c1 6a 73 a4 48 cf e6 59 00 0b 37 56 a2 07 |...js.H..Y..7V..| +00000330 41 29 56 2e 11 28 88 6a 37 df 46 33 a8 3d 14 3a |A)V..(.j7.F3.=.:| +00000340 c7 5a be 5e dc 17 03 03 00 99 15 b7 d6 a9 5d ae |.Z.^..........].| +00000350 e0 61 a0 09 69 01 c3 61 63 eb 94 9c e3 e3 78 e4 |.a..i..ac.....x.| +00000360 b9 00 c3 db df cd 72 1b 86 2f 34 4f d0 da 63 c6 |......r../4O..c.| +00000370 a9 b3 55 57 81 76 f1 fe 2b c0 85 6e 9b 6a c7 14 |..UW.v..+..n.j..| +00000380 4c b0 48 fb a9 6d 14 f3 44 d1 30 9d ec c4 fc ac |L.H..m..D.0.....| +00000390 0a 79 c3 89 55 c8 92 9f b6 bd 0b aa 85 bd 81 9b |.y..U...........| +000003a0 8e 94 b4 27 32 6f 26 da 40 27 6e 1f d9 7e 5e 16 |...'2o&.@'n..~^.| +000003b0 b1 10 be 7a 9e 3a 80 ed 89 2e b9 9b b4 a9 70 11 |...z.:........p.| +000003c0 61 46 c3 e9 b3 5e c0 b4 17 71 4a 28 44 1a 27 a4 |aF...^...qJ(D.'.| +000003d0 20 19 47 70 2c 06 66 6a 19 a4 cb 67 2a 28 3d 4b | .Gp,.fj...g*(=K| +000003e0 50 02 c5 17 03 03 00 35 5b 49 ab 32 a4 7e 3c 35 |P......5[I.2.~<5| +000003f0 a3 47 b6 57 da 5e 4a c8 5b cc 5e 71 35 32 63 7f |.G.W.^J.[.^q52c.| +00000400 13 ff c2 d2 db 31 d5 22 3f 6d 26 c3 d3 70 40 4d |.....1."?m&..p@M| +00000410 e5 2a cc 0b 51 a6 61 9e a9 69 22 bf fb |.*..Q.a..i"..| >>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 02 7a 3e 62 91 75 b4 |..........z>b.u.| -00000010 58 7d 61 ac 42 4b 1b 91 86 cd 3f c0 6d 30 5a 01 |X}a.BK....?.m0Z.| -00000020 11 1e 77 87 92 50 bb a0 d2 c6 84 b6 10 37 02 ab |..w..P.......7..| -00000030 2d c2 c2 12 0a db f5 8f e4 1f dd 16 ec 83 ad db |-...............| -00000040 2d 8b ec fa aa 56 44 4e d4 af ce d2 9f 44 3d de |-....VDN.....D=.| -00000050 12 29 db bc 29 2a df 99 d7 d0 53 79 84 a4 b8 2d |.)..)*....Sy...-| -00000060 8b 5c e6 a4 b7 98 07 5a f4 63 10 21 87 13 09 07 |.\.....Z.c.!....| -00000070 28 98 49 48 07 70 c1 ab 8b 62 6d 40 a8 47 27 67 |(.IH.p...bm@.G'g| -00000080 d6 ad 29 8d 2e 14 34 14 18 6b dd f0 76 3b 91 f9 |..)...4..k..v;..| -00000090 e1 93 a2 1c 3a 5e 18 a3 c9 ca b0 c9 cf d9 3c f5 |....:^........<.| -000000a0 a3 38 c7 83 53 67 14 ba 65 6f 11 a2 ef 78 7e ea |.8..Sg..eo...x~.| -000000b0 4a 90 c9 aa bf e9 8e ff 8c 9d 7c 5f 56 c3 9b 16 |J.........|_V...| -000000c0 c1 8a a9 51 24 20 86 dc 99 ac d2 28 af 7b 2d 6e |...Q$ .....(.{-n| -000000d0 16 9b 71 71 82 00 94 51 a4 4f 22 c1 26 a2 6f 67 |..qq...Q.O".&.og| -000000e0 d9 45 ff 80 13 39 16 0f 9c 43 76 54 e5 12 0f 89 |.E...9...CvT....| -000000f0 95 ed 75 df eb cb 6b d2 77 fd fa 37 d7 a3 31 b5 |..u...k.w..7..1.| -00000100 61 47 69 8f 99 55 70 d0 96 b0 f7 a9 1b 53 69 a3 |aGi..Up......Si.| -00000110 e4 59 cc a1 d9 4b d5 4f e2 47 c1 53 30 60 50 03 |.Y...K.O.G.S0`P.| -00000120 c7 07 67 3f 68 ce 8c 32 7e f1 93 12 ba d8 67 21 |..g?h..2~.....g!| -00000130 71 4f c9 ca ae 7b 56 8d f7 64 14 e3 8d d6 a6 ed |qO...{V..d......| -00000140 d0 63 5e 00 1e f7 8a 0c 1e c3 24 e0 bd e2 e8 99 |.c^.......$.....| -00000150 da ca 01 9e fb 21 9e 1f 57 98 f1 36 7d c8 a8 7b |.....!..W..6}..{| -00000160 4b 27 13 fb 8c ab d6 b3 27 3e f5 b5 08 eb cb a9 |K'......'>......| -00000170 b0 a4 d4 3e c9 14 08 75 51 83 48 03 e7 79 65 30 |...>...uQ.H..ye0| -00000180 a4 1a 4f a8 7a 41 c8 af 9e 74 89 4d ec eb 58 9b |..O.zA...t.M..X.| -00000190 20 db 80 ce e0 c8 a7 1c b2 62 fc 85 7d 87 ca 00 | ........b..}...| -000001a0 64 4c 25 4d 3c b2 bf 9d 46 c5 04 b5 dd 7a 29 87 |dL%M<...F....z).| -000001b0 29 30 2e bc 42 31 9b f2 eb 7b 58 63 91 28 6f 43 |)0..B1...{Xc.(oC| -000001c0 6b c1 4e 00 b2 4b 9d 0c ef 18 5b 61 ec 77 84 e1 |k.N..K....[a.w..| -000001d0 88 49 f9 e2 71 2e 35 23 b8 73 6d c2 52 d1 2f ad |.I..q.5#.sm.R./.| -000001e0 55 40 4e a2 b0 14 1b 50 d7 9d 12 80 89 ab 88 a5 |U@N....P........| -000001f0 01 16 88 d5 4f 95 0c ce 79 c7 49 27 4b 44 4d fe |....O...y.I'KDM.| -00000200 f5 cd 95 08 b9 26 8d 52 ff d7 bc 47 11 16 d5 d0 |.....&.R...G....| -00000210 7d 4c 3c 04 74 92 5b 85 d2 2c 95 b8 4b 02 0b 66 |}L<.t.[..,..K..f| -00000220 60 7d b9 12 6e d3 06 73 cc c2 69 b9 fe ad f9 4c |`}..n..s..i....L| -00000230 f6 24 a0 eb 96 f0 b8 7c 32 dc 4c 67 04 83 15 84 |.$.....|2.Lg....| -00000240 f9 ef 70 e7 55 85 0e 8f b3 78 20 2c ed 69 29 89 |..p.U....x ,.i).| -00000250 d4 d8 5e 97 16 59 90 0f 79 41 6e cf 02 d3 9d 08 |..^..Y..yAn.....| -00000260 e4 0c 27 0c 74 97 c6 d6 89 6b c9 65 37 7b ae 6b |..'.t....k.e7{.k| -00000270 b7 0f e8 70 57 a3 1c 95 8d 66 da 4e 34 51 c8 e0 |...pW....f.N4Q..| -00000280 0e 83 e3 24 64 17 03 03 00 99 e3 31 2c ae ae 1c |...$d......1,...| -00000290 64 6c fc 36 c8 9f c2 88 16 c7 b2 ae 4a ef 3a 90 |dl.6........J.:.| -000002a0 f4 ad f2 91 58 37 7c 94 c2 e3 ed 76 c5 90 fb e6 |....X7|....v....| -000002b0 88 08 a6 a2 53 5a 78 cb bd f2 3c 6e 36 b4 cd 87 |....SZx...XCK.$$}.._| +000000e0 3b df 0c 47 fc 96 bc 4a fc 82 55 cf d3 33 b1 da |;..G...J..U..3..| +000000f0 37 7b b4 f3 b2 03 31 cc 2b 60 a2 e4 76 28 d5 fd |7{....1.+`..v(..| +00000100 4a 5f 47 e3 97 21 11 6a 5d 51 a5 43 9e bb b0 50 |J_G..!.j]Q.C...P| +00000110 21 09 7c c8 e5 ca f9 7a 69 2c 0b 83 37 7a 8b 35 |!.|....zi,..7z.5| +00000120 ff 63 cf df aa 18 0c 75 39 14 e7 90 0b 67 5f b6 |.c.....u9....g_.| +00000130 94 cd 1a 49 ce 4f 46 dd 2b 61 7d 07 72 11 6e 69 |...I.OF.+a}.r.ni| +00000140 3b 6f 0c 1c 6c 8c 10 ef ef a1 bc 05 2f c9 20 8b |;o..l......./. .| +00000150 e2 fa 94 89 48 49 5d 1c 73 85 d7 e3 25 27 de a9 |....HI].s...%'..| +00000160 1a fb 2e e0 74 c8 aa 52 4c e7 48 ec ca 99 48 ba |....t..RL.H...H.| +00000170 03 9b f7 75 de 01 0b 2e 9e 14 2f 1b 82 13 01 7c |...u....../....|| +00000180 55 7e 24 06 55 59 62 f4 b6 33 69 7e c9 c1 07 07 |U~$.UYb..3i~....| +00000190 6d 61 e0 18 d3 2b 46 4f ff 14 01 31 06 d6 b2 d2 |ma...+FO...1....| +000001a0 56 40 1e 69 70 21 a1 33 98 ef 23 79 6c b1 ed f6 |V@.ip!.3..#yl...| +000001b0 15 b9 8f fc 69 7a f4 4d 3b f8 bd 50 ee 6a 15 15 |....iz.M;..P.j..| +000001c0 0a 81 b6 4b 40 6c 15 e6 55 92 cf 8f a1 00 bf d5 |...K@l..U.......| +000001d0 f7 74 13 30 ba ab eb 9d 82 bb 76 14 17 7e ab 30 |.t.0......v..~.0| +000001e0 36 62 61 0a d3 2c 92 ca 95 b0 8b 41 54 b3 fa 0a |6ba..,.....AT...| +000001f0 82 8c aa bd 89 e2 fa 1a 87 9d 9a 1e 21 78 a4 27 |............!x.'| +00000200 5d 16 4d e6 a7 43 a5 11 0d db 35 08 9c 23 96 8b |].M..C....5..#..| +00000210 80 46 5d 9f 1d 4e a2 04 17 8e 4d 57 c6 55 35 b4 |.F]..N....MW.U5.| +00000220 ac 0b c2 44 60 f6 08 1c cc c7 ba 7c e1 14 fb c2 |...D`......|....| +00000230 1d 67 67 ed 20 99 14 34 5a 97 85 0b ca 36 34 8e |.gg. ..4Z....64.| +00000240 18 de ab 4d c6 32 6c 4f 44 eb b6 05 7b a6 37 db |...M.2lOD...{.7.| +00000250 57 65 8a 62 5e c4 8c 14 13 6c 41 b4 7a 0d a8 75 |We.b^....lA.z..u| +00000260 42 a7 1b 92 34 16 2a 77 e3 63 bf 23 cc 42 9b 9d |B...4.*w.c.#.B..| +00000270 bd c9 ba b3 20 77 6a 56 c2 2c dc 72 9f ec b2 a8 |.... wjV.,.r....| +00000280 57 cc 00 17 a1 17 03 03 00 99 0a d6 46 7f 5a 00 |W...........F.Z.| +00000290 7e c4 1b 10 c4 d6 ae 8a 37 cb 47 3d bd f0 17 f3 |~.......7.G=....| +000002a0 9b 25 fa 31 cb 75 10 1c 95 4b 80 9e ff 78 ae b4 |.%.1.u...K...x..| +000002b0 65 b7 2f 00 3f 94 79 1d 66 52 f7 48 03 df 35 6b |e./.?.y.fR.H..5k| +000002c0 06 42 55 1a bd 0d f0 e0 6f 8e 8e b7 60 dc e2 ec |.BU.....o...`...| +000002d0 8b 9b 2e de 1a 08 65 b1 ad 9d 41 a5 32 6f bd f2 |......e...A.2o..| +000002e0 02 47 79 4a 02 03 45 e0 2e 0e 9c e4 05 ae 8a 47 |.GyJ..E........G| +000002f0 20 61 5a a3 da ab 84 33 11 76 81 a3 93 6b b0 9a | aZ....3.v...k..| +00000300 9d 64 6e f3 ba a0 ab 17 c5 3e 95 8a 1e 95 62 99 |.dn......>....b.| +00000310 5a 12 68 96 49 05 33 b6 6e 95 46 11 9b af de 62 |Z.h.I.3.n.F....b| +00000320 0c 5e e1 17 03 03 00 35 78 f6 24 17 fb 8f 65 3f |.^.....5x.$...e?| +00000330 5b 1d dd 3d 3d 73 c5 fb 1f 37 fb 54 a5 d3 58 49 |[..==s...7.T..XI| +00000340 ed 63 22 f9 b6 fb a2 68 59 9b 04 55 03 f1 38 af |.c"....hY..U..8.| +00000350 2e ee 85 0c c8 95 2f f9 a9 e7 de d9 14 17 03 03 |....../.........| +00000360 00 17 8b 72 27 df c9 0d 69 d1 95 e2 5a ea 3e dd |...r'...i...Z.>.| +00000370 be df 0b 72 de 0c e5 4a 19 17 03 03 00 13 0d b2 |...r...J........| +00000380 7c 8d b1 44 32 9d 63 b1 8b 90 e1 2d 92 9c c4 b9 ||..D2.c....-....| +00000390 cd |.| diff --git a/src/crypto/tls/testdata/Client-TLSv13-ECDSA b/src/crypto/tls/testdata/Client-TLSv13-ECDSA index b6a3b2addb..53624650c7 100644 --- a/src/crypto/tls/testdata/Client-TLSv13-ECDSA +++ b/src/crypto/tls/testdata/Client-TLSv13-ECDSA @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,81 +7,83 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 24 80 76 3d db |....z...v..$.v=.| -00000010 cf 32 53 04 de ce 2e 74 95 bb 30 a8 d5 5e ab ed |.2S....t..0..^..| -00000020 3c 1e 1a ae 92 63 8f 40 0b ce a4 20 00 00 00 00 |<....c.@... ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 cd 84 c1 22 3c |....z...v....."<| +00000010 2e 71 03 57 5f c1 27 88 ae 0e 7f 1a e7 aa 82 6d |.q.W_.'........m| +00000020 8d f1 18 78 8d b2 4c d6 11 c3 b0 20 00 00 00 00 |...x..L.... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 03 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 d2 |..+.....3.$... .| -00000060 b3 86 f1 35 22 26 89 f4 07 ab b8 f5 27 a6 d5 c9 |...5"&......'...| -00000070 87 00 59 43 b8 df da 92 f6 f5 ed f4 8d 04 26 14 |..YC..........&.| -00000080 03 03 00 01 01 17 03 03 00 17 ed 6b 14 3a 82 c5 |...........k.:..| -00000090 88 9d a4 96 c7 c4 c7 73 63 c6 58 65 d0 d4 a6 cb |.......sc.Xe....| -000000a0 dc 17 03 03 02 22 e8 c5 15 54 3c 26 7b 87 8c d3 |....."...T<&{...| -000000b0 99 b0 af 98 21 1b 8f be f5 d8 40 c9 05 97 39 fd |....!.....@...9.| -000000c0 3d b2 da 2d 80 26 c9 24 cd 14 0b 48 2e d7 c4 dc |=..-.&.$...H....| -000000d0 4c 61 1e 5d 46 ce 66 cd 94 50 a4 e8 c4 d7 f0 48 |La.]F.f..P.....H| -000000e0 20 16 52 fb 12 04 17 48 7d 65 49 50 c5 b8 e6 9c | .R....H}eIP....| -000000f0 be f6 58 09 ea 8b 94 51 93 cf 0d 7a 76 88 78 cb |..X....Q...zv.x.| -00000100 37 83 43 fa 37 d5 5b 3f 10 1d 07 b1 bb 9b ac 3a |7.C.7.[?.......:| -00000110 43 e0 62 b1 fe 64 43 83 53 49 96 9e 81 1c 05 64 |C.b..dC.SI.....d| -00000120 40 2a 1b 98 5f ed 8d 47 52 2c db 84 8b 6a 1e 3b |@*.._..GR,...j.;| -00000130 de bb 7d 20 e6 cf 2a 79 2e c4 54 71 56 2f 79 45 |..} ..*y..TqV/yE| -00000140 07 3f 05 6c 82 e8 ab f7 62 0a 28 e0 db 83 6b bd |.?.l....b.(...k.| -00000150 55 81 8f 3f b6 1f d0 83 cd 97 67 71 56 f5 13 aa |U..?......gqV...| -00000160 45 95 65 ce 1e 42 bf 6a 83 6e bc 2e 41 28 79 b7 |E.e..B.j.n..A(y.| -00000170 b8 3f 6e 64 14 8d ed 3a a4 02 06 46 17 e5 c7 f8 |.?nd...:...F....| -00000180 72 f1 5f 9b 14 96 c9 c6 53 e6 32 b2 0b cc d5 d7 |r._.....S.2.....| -00000190 89 1e d9 52 fb 8f 48 8b 41 6e c6 f3 55 57 41 5d |...R..H.An..UWA]| -000001a0 95 03 9c 34 ea 3c a8 58 8d b7 89 82 e1 40 e0 60 |...4.<.X.....@.`| -000001b0 22 ab 23 30 e8 f0 4e 21 a1 11 0a 7f 18 80 ad de |".#0..N!........| -000001c0 41 ba a1 12 60 31 60 0f 84 f6 91 b1 ae ca f5 81 |A...`1`.........| -000001d0 3e d6 4e 3a 89 b6 b0 fe 3f 27 18 20 65 a9 d4 6c |>.N:....?'. e..l| -000001e0 ac 8a 46 08 e2 7d 06 6d 52 8c 69 9e 24 9b 8d f9 |..F..}.mR.i.$...| -000001f0 b7 a7 74 87 bd f9 84 ca 18 7d 5b 50 1d 8e 64 e1 |..t......}[P..d.| -00000200 39 6f f7 56 5a ef 08 6b e2 a1 87 e4 7a 5e ea b6 |9o.VZ..k....z^..| -00000210 12 75 2d ee e9 af a4 36 99 91 88 11 97 f3 d5 fb |.u-....6........| -00000220 8b 52 59 bc 9c 18 03 5b b1 59 47 ae d4 bb a1 65 |.RY....[.YG....e| -00000230 cf bf 40 54 e5 e7 6e e0 0c 26 0e a1 d2 4d 41 19 |..@T..n..&...MA.| -00000240 36 b5 b6 48 33 96 8a e3 a5 56 9b 34 16 ae 36 48 |6..H3....V.4..6H| -00000250 c5 ff 12 a7 33 f4 76 40 de d1 4b 41 ed 18 3b 04 |....3.v@..KA..;.| -00000260 06 32 6e f3 57 c6 be 72 58 7f 78 b7 91 65 00 a8 |.2n.W..rX.x..e..| -00000270 8d 5c 7f ff 0a 62 d4 99 82 b2 6b c8 80 3e 89 30 |.\...b....k..>.0| -00000280 dd 31 60 7a 00 6e a2 13 c7 58 08 b0 d5 32 03 2e |.1`z.n...X...2..| -00000290 08 86 a2 97 7a f0 a1 95 10 5f a2 d6 fc e7 a3 93 |....z...._......| -000002a0 16 a2 3d 33 04 e7 aa 3b 99 a5 ce c7 2c 28 71 bb |..=3...;....,(q.| -000002b0 ed e6 b9 5a a5 ec d1 44 54 e0 ff 41 cf 1a cb ff |...Z...DT..A....| -000002c0 67 43 6b af 87 19 40 74 17 03 03 00 a4 bc ef 32 |gCk...@t.......2| -000002d0 22 da e9 d5 93 ce 06 bd 3d 6c 2e f0 0c de ec b8 |".......=l......| -000002e0 12 d6 28 17 c6 64 aa 8d 4b 04 76 9e 41 3c 4a 94 |..(..d..K.v.Aru@.0.| -000003a0 fd 46 9d 5e 79 39 e1 a8 f9 27 2b |.F.^y9...'+| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 1a |..+.....3.$... .| +00000060 28 ce a9 6b 7d 26 24 78 52 fe e1 65 34 6b 12 50 |(..k}&$xR..e4k.P| +00000070 5c 4b b0 10 2e 94 3f b3 a0 b7 45 fc 3b 4d 31 14 |\K....?...E.;M1.| +00000080 03 03 00 01 01 17 03 03 00 17 21 d8 25 9d 8a 8a |..........!.%...| +00000090 84 70 10 37 95 29 4e 00 da eb c1 e7 20 a3 09 a3 |.p.7.)N..... ...| +000000a0 63 17 03 03 02 22 51 4c 48 48 ce 06 1d 4d 42 fa |c...."QLHH...MB.| +000000b0 54 16 a0 fe 66 f2 62 56 55 8e 71 0a 8a 75 8f ff |T...f.bVU.q..u..| +000000c0 71 72 29 09 54 f2 74 a8 0a 8c f3 62 84 2d 4c 11 |qr).T.t....b.-L.| +000000d0 02 f1 c5 6f 2c f0 39 91 3e 58 98 e2 3d 87 0d 8b |...o,.9.>X..=...| +000000e0 5a 77 8f 2d 38 fb 3a b8 63 4f 79 24 bb 40 6f 09 |Zw.-8.:.cOy$.@o.| +000000f0 28 01 bd 03 53 f0 63 fc 49 92 ba 9b 3b fd a1 75 |(...S.c.I...;..u| +00000100 cf be 2c 5a da 3d 53 b2 11 5c f8 66 26 d0 78 6c |..,Z.=S..\.f&.xl| +00000110 3e a0 34 16 2b 28 6b 73 95 08 d7 e6 2f f4 f3 74 |>.4.+(ks..../..t| +00000120 3f 1d e1 a5 e4 0e 82 af 52 58 09 b0 90 f8 ee ea |?.......RX......| +00000130 5a 34 b7 29 7a a6 bb 0a 2f 64 f7 51 80 71 90 82 |Z4.)z.../d.Q.q..| +00000140 d2 1a fa c9 43 de 31 eb a1 f6 b0 31 99 5e 8b 84 |....C.1....1.^..| +00000150 6b f1 66 6e 49 6d 2e 52 e1 c4 21 76 7b 1e bf d4 |k.fnIm.R..!v{...| +00000160 c1 8f 7c 1b a9 6f 4d 1b 03 86 63 8b d4 64 24 79 |..|..oM...c..d$y| +00000170 73 00 1e cc 2b 5c a6 65 db 35 74 95 9b 04 5d ce |s...+\.e.5t...].| +00000180 ef 54 eb be 6a 6a 04 5d e2 ba cb 4f c7 3f 33 8f |.T..jj.]...O.?3.| +00000190 20 51 6c 03 0a 1a 90 e3 74 e4 e3 2f 78 00 1b 4a | Ql.....t../x..J| +000001a0 17 9a 6f 35 0b b8 0e 30 cc 51 87 fa 17 d9 95 39 |..o5...0.Q.....9| +000001b0 b5 51 c6 3f 6f 9b 39 74 c6 3e a3 8e 10 2f fc eb |.Q.?o.9t.>.../..| +000001c0 85 b3 a3 6e 21 5d 9f dc fb 6a 5f 4b 42 5c a1 f5 |...n!]...j_KB\..| +000001d0 c3 b7 5c ef 86 22 e9 bb ae 97 96 ff 06 b1 d8 19 |..\.."..........| +000001e0 38 6b 23 03 30 ea 1c 6f c3 4a 94 74 35 16 61 2e |8k#.0..o.J.t5.a.| +000001f0 c6 9d a7 db b0 50 63 f7 e2 7c 00 2b 12 05 89 f2 |.....Pc..|.+....| +00000200 e9 06 98 12 3c 77 6e d3 09 7f 6f 93 28 1e ce 1f |....>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 00 35 09 35 dd b0 97 |..........5.5...| -00000010 7b a4 5b ef 16 90 e4 15 aa 19 e4 5b e8 f1 11 c0 |{.[........[....| -00000020 e0 fa 4b 0e df a3 4a 7c cd 9a 0a c4 05 65 e9 5b |..K...J|.....e.[| -00000030 8b 0b e0 3c b2 5a cc eb 87 2b 67 0d 9f 19 d0 ec |...<.Z...+g.....| -00000040 17 03 03 00 17 68 1f ad 70 7c 49 62 6b 2f 67 15 |.....h..p|Ibk/g.| -00000050 d1 bf bb 35 b3 b3 2b f3 12 27 b6 0e 17 03 03 00 |...5..+..'......| -00000060 13 23 39 42 9f 8a 9e 68 41 39 fa 3b 50 bc 56 59 |.#9B...hA9.;P.VY| -00000070 d0 3a 5a 9a |.:Z.| +00000000 14 03 03 00 01 01 17 03 03 00 35 c8 b8 4f 16 71 |..........5..O.q| +00000010 03 a4 39 02 a9 6e 62 a5 62 8e 64 7d 13 8c 11 66 |..9..nb.b.d}...f| +00000020 f2 6c 24 36 5b 9c 95 6b 5b ea fc 66 a2 ef 7c 97 |.l$6[..k[..f..|.| +00000030 0c 75 7a 05 99 21 ff af fc 91 b3 64 74 64 89 76 |.uz..!.....dtd.v| +00000040 17 03 03 00 17 3f b3 8e 94 d5 bd e2 79 9c e5 d3 |.....?......y...| +00000050 f7 3d bd aa 6a 35 5a 1a 0b 96 69 3d 17 03 03 00 |.=..j5Z...i=....| +00000060 13 d7 34 66 9d 25 f2 de 49 40 34 20 a5 0c 88 b5 |..4f.%..I@4 ....| +00000070 00 e8 ac ee |....| diff --git a/src/crypto/tls/testdata/Client-TLSv13-Ed25519 b/src/crypto/tls/testdata/Client-TLSv13-Ed25519 index 3a2915d613..04c26cb654 100644 --- a/src/crypto/tls/testdata/Client-TLSv13-Ed25519 +++ b/src/crypto/tls/testdata/Client-TLSv13-Ed25519 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,63 +7,65 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 b2 4d aa 76 5b |....z...v...M.v[| -00000010 b7 38 95 18 e6 81 66 f8 27 82 26 2c b3 44 50 b0 |.8....f.'.&,.DP.| -00000020 f4 a8 f5 f2 87 f0 9d 85 4f ac 60 20 00 00 00 00 |........O.` ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 41 2a 70 9e fa |....z...v..A*p..| +00000010 49 ab 26 ea 07 12 90 9f e9 be 67 21 3a 0f e8 c9 |I.&.......g!:...| +00000020 54 97 77 ce d4 54 04 0d 2d b6 1a 20 00 00 00 00 |T.w..T..-.. ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 03 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 e7 |..+.....3.$... .| -00000060 c2 3e 68 73 d9 fd 6e 69 16 15 85 84 24 45 36 47 |.>hs..ni....$E6G| -00000070 1b ad d9 c4 dc 4a 61 c6 12 5c 22 bf 1e 2f 59 14 |.....Ja..\"../Y.| -00000080 03 03 00 01 01 17 03 03 00 17 0f a4 05 81 10 48 |...............H| -00000090 c7 b7 78 9b 56 14 6c 9f 55 28 e3 4c 42 80 cc 1c |..x.V.l.U(.LB...| -000000a0 31 17 03 03 01 50 0d af 3b 08 02 84 89 42 b5 75 |1....P..;....B.u| -000000b0 c5 8f 9f c2 b1 dc cb 7c 6a d5 31 41 9a 16 8f fa |.......|j.1A....| -000000c0 74 40 21 5d f9 cc b0 1d 30 80 87 9a b2 57 58 53 |t@!]....0....WXS| -000000d0 2c 9e 5c 97 20 9c 81 77 16 25 62 9b fc a4 e1 9a |,.\. ..w.%b.....| -000000e0 80 c8 9a 4c f6 fc ae 79 a5 c2 26 4b 55 41 ff d0 |...L...y..&KUA..| -000000f0 25 4b 70 c9 ad b6 04 80 65 19 e0 fe 05 e7 b4 dc |%Kp.....e.......| -00000100 53 8f f8 3b ed 2c df b9 08 c2 da 60 b9 23 17 50 |S..;.,.....`.#.P| -00000110 da 0f 24 76 15 21 e6 e9 a8 f5 3e 08 cc 1b ee 92 |..$v.!....>.....| -00000120 2b 01 92 8d f9 4f 5a 3a 53 11 fc 32 52 cc af cd |+....OZ:S..2R...| -00000130 7b 94 0e 76 10 c2 16 36 2d a4 64 69 1c 05 70 20 |{..v...6-.di..p | -00000140 0d 23 cd 4a 33 c5 c7 db db 0f f8 b6 42 0c 83 0a |.#.J3.......B...| -00000150 a1 73 68 fb 87 2c 9d d2 d3 cf d7 3a bb 36 7e 83 |.sh..,.....:.6~.| -00000160 c3 3f bc e2 61 d9 c2 8b 15 a2 cc bf 14 a0 69 f4 |.?..a.........i.| -00000170 22 02 a9 ff 5e 55 37 6e 61 86 71 73 94 2f 7e 50 |"...^U7na.qs./~P| -00000180 45 96 cf 23 dd 39 90 5d 57 04 a3 d0 9f 97 f8 56 |E..#.9.]W......V| -00000190 fa cf 7a a9 e6 57 1f cb 33 a0 82 7a 84 94 1f 6d |..z..W..3..z...m| -000001a0 d8 0b c7 fb bc 62 94 36 4a d6 96 ce f6 f2 7f 06 |.....b.6J.......| -000001b0 18 59 66 77 77 12 8c 74 06 61 8f b6 37 35 65 fd |.Yfww..t.a..75e.| -000001c0 f1 0b fe e6 cc a9 64 f5 b5 0d 06 4e 38 4b 4b 78 |......d....N8KKx| -000001d0 be 6a cc 67 9e 39 f8 f2 27 33 a9 2d bc 9c 5e 06 |.j.g.9..'3.-..^.| -000001e0 b9 fb 76 0c be 8d 2a a5 6d cf 83 55 4f c5 6e 6e |..v...*.m..UO.nn| -000001f0 d0 08 8b f6 5a 61 17 03 03 00 59 c1 cc 58 14 33 |....Za....Y..X.3| -00000200 5a 39 b5 40 46 e8 b1 28 06 08 22 d3 27 b4 e6 ef |Z9.@F..(..".'...| -00000210 10 79 08 d4 ce 9e e2 cb 0b 86 a4 b1 80 e4 1b ac |.y..............| -00000220 71 15 fd 16 5b aa 01 c2 7b e3 c2 84 01 c0 f6 04 |q...[...{.......| -00000230 a7 31 2b ec f2 50 bf 5a 07 6f b8 03 9f d2 c6 ad |.1+..P.Z.o......| -00000240 73 18 81 f5 fd 9a 5a b2 bc 9f 85 94 9f f6 da da |s.....Z.........| -00000250 dd 56 bc 66 17 03 03 00 35 9f 7e 2e 02 66 bb ac |.V.f....5.~..f..| -00000260 3d d8 92 70 c9 35 c6 df ff 0f 81 b5 ca d4 56 4a |=..p.5........VJ| -00000270 24 06 06 57 28 e9 9d 82 0e 40 06 a7 f8 cc bc 6c |$..W(....@.....l| -00000280 a2 ea 2b 0e 88 77 05 de 3d 30 a0 6f bc 98 |..+..w..=0.o..| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 28 |..+.....3.$... (| +00000060 42 18 1f f9 3f 73 01 41 63 08 8d a1 1a a5 8b 5f |B...?s.Ac......_| +00000070 d0 63 44 21 d2 fc d8 7e 46 9f 66 62 0d c0 19 14 |.cD!...~F.fb....| +00000080 03 03 00 01 01 17 03 03 00 17 66 d5 4f 1f 0b 85 |..........f.O...| +00000090 65 0a 81 21 55 2f 17 bc ad e1 83 69 29 51 6b 7f |e..!U/.....i)Qk.| +000000a0 15 17 03 03 01 50 b2 f9 51 18 c9 23 24 91 b8 b0 |.....P..Q..#$...| +000000b0 32 8d 3c 81 8a ca c3 25 8a 1f cc 17 d1 67 07 42 |2.<....%.....g.B| +000000c0 7b 82 ae 1f b8 65 55 e2 ce 2e ad d3 90 bf 3f 2d |{....eU.......?-| +000000d0 85 dc 68 3a 4c 1a 79 9e cc 86 d3 20 7b 7e ba b4 |..h:L.y.... {~..| +000000e0 cf 8b 4b f8 9b 58 0f 7f 24 cc aa 80 4b be 8f 3e |..K..X..$...K..>| +000000f0 88 1e b1 10 0b 8c 74 6b 2e ad 8d c9 40 e1 3f 4a |......tk....@.?J| +00000100 90 5c 97 79 f4 aa 62 e1 e1 2e e4 f4 22 ce ab 85 |.\.y..b....."...| +00000110 d6 ac e1 d8 21 f8 ed 70 3e 92 0d 2c b2 39 f9 a5 |....!..p>..,.9..| +00000120 da ce 3e ff 76 09 54 10 35 86 80 f8 fa 86 44 a1 |..>.v.T.5.....D.| +00000130 78 7c 9c a8 15 c9 55 92 e8 14 0d 99 c8 40 7c f7 |x|....U......@|.| +00000140 d9 d6 cd ae bf 05 f9 da 0f 33 b1 ee ae 39 bb 30 |.........3...9.0| +00000150 3c f2 3d e4 0a b7 e1 e7 6a 5f 48 65 a6 28 37 26 |<.=.....j_He.(7&| +00000160 c1 18 0b 31 f2 79 00 fd 25 d6 76 8f 7b bc 7e 2e |...1.y..%.v.{.~.| +00000170 3d f2 bb b2 1a 5f 1b 7d df b5 f5 bb b2 e7 1b 51 |=...._.}.......Q| +00000180 de cc 4d 2b 32 c6 cd 33 97 32 d3 c8 02 89 a2 0a |..M+2..3.2......| +00000190 a2 6a 2c d4 6f b8 97 3b 7d bf 42 18 97 a3 2d 51 |.j,.o..;}.B...-Q| +000001a0 70 a7 f0 9f 04 2a a0 6f 2f 30 7c fe b6 fc dd c5 |p....*.o/0|.....| +000001b0 6a 65 e3 a2 7a c0 d8 31 37 3f c0 36 79 d2 a0 20 |je..z..17?.6y.. | +000001c0 7d 4e ea 8c 44 77 53 e9 db 90 ef 24 26 05 ce b0 |}N..DwS....$&...| +000001d0 9e 18 a9 8f 21 55 b6 40 63 b5 4c f6 74 2d 4a c5 |....!U.@c.L.t-J.| +000001e0 7f 67 ee 95 35 21 e0 22 61 c5 68 5f e7 b3 ac 4d |.g..5!."a.h_...M| +000001f0 4e e5 31 bb 10 22 17 03 03 00 59 ab 04 24 cb f7 |N.1.."....Y..$..| +00000200 33 03 08 97 0b d5 9e a7 23 18 ec b6 f6 e8 ee 1f |3.......#.......| +00000210 2d 5f 6b 73 92 ce ac 3b 59 50 27 77 ac 73 ac fe |-_ks...;YP'w.s..| +00000220 b1 5a 8e 9e 81 50 54 4d 3b f7 7b 1e f9 f9 c1 d5 |.Z...PTM;.{.....| +00000230 c6 08 b5 88 55 96 13 c6 d4 f6 cd b5 5d 5a 27 ae |....U.......]Z'.| +00000240 27 95 e0 55 0e c5 fe 6b 9a ae 3d f8 3a b9 05 f6 |'..U...k..=.:...| +00000250 ef 90 99 30 17 03 03 00 35 54 af 85 8b 06 b2 ee |...0....5T......| +00000260 a8 6f 18 76 9b 9a ea 2e 57 b9 2c 9e a7 56 6c 49 |.o.v....W.,..VlI| +00000270 ab 6e 10 4e fc c8 9c 37 b3 dc 95 8b 74 07 e9 90 |.n.N...7....t...| +00000280 a3 35 72 b4 60 9a ea 87 a7 76 72 42 7d b7 |.5r.`....vrB}.| >>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 00 35 1c 60 8f 01 6b |..........5.`..k| -00000010 7c e3 d4 28 24 d8 7c 85 7f 63 44 23 97 7c a0 de ||..($.|..cD#.|..| -00000020 70 61 9e d9 ce 35 d9 3b 81 68 09 12 c1 b9 5e f5 |pa...5.;.h....^.| -00000030 32 23 9b 47 fc be 74 3c e6 1b 3f cd e8 c1 f1 4f |2#.G..t<..?....O| -00000040 17 03 03 00 17 1a 16 bc fe 99 30 d8 97 c1 00 d9 |..........0.....| -00000050 fd 1a 44 bd 84 35 dc 66 62 eb 28 3d 17 03 03 00 |..D..5.fb.(=....| -00000060 13 b4 8a 54 df ae 97 ce 2e ae fa 38 ca 02 a1 d6 |...T.......8....| -00000070 f5 40 64 2b |.@d+| +00000000 14 03 03 00 01 01 17 03 03 00 35 70 04 7a 93 3e |..........5p.z.>| +00000010 de c0 df 1d 2b 25 ea c4 7d 57 eb 94 59 80 2c d6 |....+%..}W..Y.,.| +00000020 80 0e 5e 9f 22 00 82 1c e0 2e 15 1e 5d b6 16 84 |..^.".......]...| +00000030 83 83 79 29 54 49 dc bb b8 f0 f8 71 13 09 7d e9 |..y)TI.....q..}.| +00000040 17 03 03 00 17 93 e8 8f 30 24 3b e7 5e a4 15 b3 |........0$;.^...| +00000050 f6 53 15 d6 f8 4c ab 0c 32 d6 28 ef 17 03 03 00 |.S...L..2.(.....| +00000060 13 2b ea 8e 10 9d 46 08 d9 43 04 da d8 5a 78 f8 |.+....F..C...Zx.| +00000070 33 c0 62 33 |3.b3| diff --git a/src/crypto/tls/testdata/Client-TLSv13-ExportKeyingMaterial b/src/crypto/tls/testdata/Client-TLSv13-ExportKeyingMaterial index 13ae97153a..ef0029ff07 100644 --- a/src/crypto/tls/testdata/Client-TLSv13-ExportKeyingMaterial +++ b/src/crypto/tls/testdata/Client-TLSv13-ExportKeyingMaterial @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,85 +7,87 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 48 e6 a7 a9 4c |....z...v..H...L| -00000010 c3 a7 cc 18 b7 71 7d ed c5 6a cb ca b5 9f 00 fd |.....q}..j......| -00000020 f8 2c ac 9c 1f 24 27 b9 c6 55 8e 20 00 00 00 00 |.,...$'..U. ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 3e 1e de 6b d3 |....z...v..>..k.| +00000010 83 f0 87 bd 4c 26 fe 68 40 01 f3 c6 c8 39 b4 b3 |....L&.h@....9..| +00000020 46 c7 ae 97 1a b2 67 a0 6a 7f 93 20 00 00 00 00 |F.....g.j.. ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 03 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 dd |..+.....3.$... .| -00000060 be 27 eb a0 9c b1 22 6a 8c 29 9a d4 47 c2 ee 14 |.'...."j.)..G...| -00000070 39 0c 60 81 c9 06 3f dc e5 e0 24 9a c4 88 35 14 |9.`...?...$...5.| -00000080 03 03 00 01 01 17 03 03 00 17 25 70 5a e5 6b 9e |..........%pZ.k.| -00000090 56 b9 cf 83 48 b0 bc 99 6a 86 e1 cb 4e ce b5 10 |V...H...j...N...| -000000a0 e0 17 03 03 02 6d c7 a6 79 ef b0 81 d6 e4 0e 02 |.....m..y.......| -000000b0 59 32 88 cc b1 0d 53 f6 33 9b d2 e8 74 a9 0a a7 |Y2....S.3...t...| -000000c0 f9 76 e9 6e 0d 16 75 0b e0 8f 5c b5 31 47 6b 68 |.v.n..u...\.1Gkh| -000000d0 52 c7 c2 84 cb 48 81 a3 da bd a1 50 5c ec 5c a7 |R....H.....P\.\.| -000000e0 10 01 58 cc 03 c3 53 04 03 69 80 f4 ad 4d ce 72 |..X...S..i...M.r| -000000f0 26 4e 6c c7 2c 31 69 2b fd 97 67 5e 7d e0 05 b3 |&Nl.,1i+..g^}...| -00000100 f4 40 64 a1 bd a3 fd a8 f9 7b 18 82 89 8f 25 f9 |.@d......{....%.| -00000110 ca ca c4 8f e4 90 7b 26 7a d5 b2 1e fa 05 db ad |......{&z.......| -00000120 8a 9f 93 e9 13 5b 28 cc cb 8b 30 f2 4c 1d 73 09 |.....[(...0.L.s.| -00000130 7f 6b 63 5c 29 36 2f fc a5 6e eb 24 79 f8 7c 63 |.kc\)6/..n.$y.|c| -00000140 1f ef 41 72 98 69 7c d6 8d f9 76 d4 4d af b0 71 |..Ar.i|...v.M..q| -00000150 2e f7 f8 b5 73 45 05 52 fa 25 46 02 28 0d d9 7a |....sE.R.%F.(..z| -00000160 60 13 b9 6c 6d fb f3 be e3 04 74 76 72 d6 a4 91 |`..lm.....tvr...| -00000170 d1 2c 0d 1e fa 23 ef c7 80 ff 1e aa 1b af 50 58 |.,...#........PX| -00000180 77 ea 49 d9 22 4d ed bc bf a6 0a 41 8e e7 5b 31 |w.I."M.....A..[1| -00000190 de 33 05 10 46 a5 54 aa 5e 90 5c 15 64 2d 1b e9 |.3..F.T.^.\.d-..| -000001a0 5c fc 93 8d 2f b2 af 74 d7 d2 c6 7f 27 68 fd 44 |\.../..t....'h.D| -000001b0 13 60 70 87 e8 08 e1 e2 af 7f 1a 2c 29 5f 45 fe |.`p........,)_E.| -000001c0 49 9a d0 42 c9 51 ef f7 5b ae 02 df 27 1c 29 20 |I..B.Q..[...'.) | -000001d0 35 4f 3d 7d 74 97 0c 20 be f8 a3 c9 b7 ff 65 69 |5O=}t.. ......ei| -000001e0 08 89 92 fe 85 65 9f 8a 00 4b 9f 39 8d 6f 29 7c |.....e...K.9.o)|| -000001f0 7c e9 16 e4 bd 06 a3 b0 5b 7f cf f0 74 14 56 a2 ||.......[...t.V.| -00000200 76 61 b8 79 10 44 55 4f 25 55 a7 be a4 eb 2e 7d |va.y.DUO%U.....}| -00000210 9a b8 7a d8 d7 34 b6 ef 6c f7 fb ef fd 16 c2 61 |..z..4..l......a| -00000220 89 bb 98 22 c6 80 9e 33 7f e9 35 7a 58 b6 33 1c |..."...3..5zX.3.| -00000230 d6 87 68 b7 62 21 3b 26 9b f1 b1 f2 92 d5 4b 19 |..h.b!;&......K.| -00000240 02 58 05 3c 81 cf 00 5a 54 86 a5 61 8f 71 ae 32 |.X.<...ZT..a.q.2| -00000250 f2 0f 08 3b 13 4d f3 e6 03 2e 73 9c 50 4a b7 6c |...;.M....s.PJ.l| -00000260 d8 0a 04 fc b5 44 a5 45 c8 86 c9 9f 29 b4 00 90 |.....D.E....)...| -00000270 d8 8b e0 c8 ba 63 9f 42 65 ef ba 5b dc b2 61 53 |.....c.Be..[..aS| -00000280 e6 4b 29 72 51 c9 21 d4 d7 2d 14 56 82 80 32 36 |.K)rQ.!..-.V..26| -00000290 fd 72 b6 16 6f 06 71 f9 60 4f 32 ce f6 83 94 75 |.r..o.q.`O2....u| -000002a0 d9 23 d3 41 f8 e7 90 60 80 a8 a5 95 c0 a2 dd 2e |.#.A...`........| -000002b0 e7 60 73 5b c0 a5 a0 bd 8b bc cc 32 8a 9e 30 6a |.`s[.......2..0j| -000002c0 72 2f 61 24 56 0b 1e 3e 52 92 d2 e0 11 cd 52 69 |r/a$V..>R.....Ri| -000002d0 c4 73 7f 72 95 fd f5 c4 72 d7 77 73 85 bf be e0 |.s.r....r.ws....| -000002e0 cd 3c 3b 3d 92 63 91 ba c8 a8 d2 32 40 6a 33 91 |.<;=.c.....2@j3.| -000002f0 c0 71 fe ea 76 9f a9 96 dc c0 a9 bd 67 b6 23 42 |.q..v.......g.#B| -00000300 d9 1b 3d 8d d4 5f 81 38 74 1c db 36 9e bd 79 fd |..=.._.8t..6..y.| -00000310 30 c5 db 17 03 03 00 99 61 1e 25 cb 11 26 61 72 |0.......a.%..&ar| -00000320 a0 9a de 5b ad 5b ad 8a 29 43 eb 76 5a 16 a4 d3 |...[.[..)C.vZ...| -00000330 d4 a1 84 e4 7e a1 2b 76 75 b6 a5 a6 36 da d3 bf |....~.+vu...6...| -00000340 0c 3a 39 ca ef 3f 02 22 63 3d 5d c1 30 94 ba 32 |.:9..?."c=].0..2| -00000350 fe c0 20 c1 ba c8 fa 29 e8 1c c6 ab f0 c9 53 a4 |.. ....)......S.| -00000360 73 d0 9a 2d 50 d8 b4 0c db e5 4a 9f 98 38 34 c9 |s..-P.....J..84.| -00000370 9f ff 63 a9 50 7b 26 00 64 26 4d 0d 20 d5 e5 27 |..c.P{&.d&M. ..'| -00000380 e1 41 7b 5a 03 97 0a 14 8c 55 3c 45 4b 72 ce de |.A{Z.....U..d....o..| +00000110 15 bb d0 06 36 1c a9 ab 5e 76 b5 7b f1 fa 0b 27 |....6...^v.{...'| +00000120 09 01 23 58 1d 5e 8e 7c a9 ba 87 de c2 05 31 a5 |..#X.^.|......1.| +00000130 7a 20 cc 4c 4a 72 65 3b 8a a5 66 b6 d3 49 10 49 |z .LJre;..f..I.I| +00000140 7c 3d 27 13 88 01 48 65 41 5d 25 b7 6a 96 78 86 ||='...HeA]%.j.x.| +00000150 03 d7 53 7b 9c fb db db c8 d7 5e 71 f4 6c 03 49 |..S{......^q.l.I| +00000160 6b e3 0d a4 07 ac 7c 45 b7 98 d1 0d 24 72 93 1d |k.....|E....$r..| +00000170 f3 f6 51 3b 5f 08 43 fe 5b db 1a ad 84 10 bd d1 |..Q;_.C.[.......| +00000180 88 fe 24 83 e3 46 d1 40 a0 c0 e9 dc 19 75 b2 8f |..$..F.@.....u..| +00000190 5e ea 67 2e 0e a3 79 bd 9f 92 f4 0a d0 fd f0 26 |^.g...y........&| +000001a0 f9 40 d1 3c 76 03 61 ab 11 d1 c6 22 e2 62 ea 35 |.@...@| +000001c0 79 1f 3b 1f 56 6f b7 98 e1 6e bb 4c 0a 11 cf 1c |y.;.Vo...n.L....| +000001d0 68 a2 87 a6 83 72 ab d1 a8 4f 39 48 fc d0 54 bf |h....r...O9H..T.| +000001e0 47 7f 7c 8f 91 7d 40 96 01 b0 ec 62 b0 16 b8 d3 |G.|..}@....b....| +000001f0 02 15 68 e0 7e d7 40 0a 9f 5e cf 21 75 40 d6 4c |..h.~.@..^.!u@.L| +00000200 50 c0 05 8f 8e db b5 44 d3 50 24 be c3 7b 5d 39 |P......D.P$..{]9| +00000210 a5 cb 92 d5 dd 4b 16 c2 6a ec e5 f6 79 6d 04 6f |.....K..j...ym.o| +00000220 26 fd 55 ba 8a 38 db ab dd 78 13 a7 de 23 e7 c0 |&.U..8...x...#..| +00000230 c6 97 34 18 26 2e d0 ef b0 d7 1a 3c af cc 2f 79 |..4.&......<../y| +00000240 ea cd d3 b2 02 99 5a ca c8 49 39 f7 df 64 5d 1a |......Z..I9..d].| +00000250 89 59 92 33 e8 ae 19 ca 42 53 c0 1a 18 6b 9e 8f |.Y.3....BS...k..| +00000260 65 64 b3 b3 6f 4c c8 7c 46 fb 2f 0a ad ed ef 15 |ed..oL.|F./.....| +00000270 14 dd dd ae b0 09 d4 5a ba 2e 78 a2 3e 8e d4 35 |.......Z..x.>..5| +00000280 a2 96 a1 a2 08 f8 0c c6 a3 13 be 09 b8 5f 00 04 |............._..| +00000290 22 78 98 cf 41 24 40 e9 93 4e b0 86 15 e1 5e c2 |"x..A$@..N....^.| +000002a0 cf c3 49 51 1a d8 a1 e6 c0 a9 ea 35 b2 56 ee 2d |..IQ.......5.V.-| +000002b0 08 4e 3b 3d 03 cb f1 54 94 a0 d5 6a 9c bc d8 7c |.N;=...T...j...|| +000002c0 f1 22 10 0a 5c d9 66 87 fa e2 8e e8 41 cc ce cd |."..\.f.....A...| +000002d0 a9 c2 c7 11 4c e2 e4 20 70 ae aa d1 1e 47 b7 ee |....L.. p....G..| +000002e0 b3 45 18 3a a9 31 44 bb b0 7f 73 6a df 2a 67 00 |.E.:.1D...sj.*g.| +000002f0 81 c6 da 9d 8b 65 98 f8 b8 e5 fb da 85 cc 68 c2 |.....e........h.| +00000300 77 ed d5 14 a8 32 74 b1 d1 9c 89 1c 3e b8 d9 d4 |w....2t.....>...| +00000310 89 8d d5 17 03 03 00 99 1c 42 3c cc 38 4d ed 1e |.........B<.8M..| +00000320 14 2e cb e7 a4 43 64 95 a5 8f c6 ff 81 a1 4f d8 |.....Cd.......O.| +00000330 2a 1e 82 cf 4c 6a a2 32 ee 3b 8e f9 d5 63 99 2b |*...Lj.2.;...c.+| +00000340 7a 7e 4c 9b 1a c8 48 78 4f 8e ad af ea 3a 60 65 |z~L...HxO....:`e| +00000350 b6 05 62 78 36 5f c1 40 e3 16 f2 be 48 41 ca a6 |..bx6_.@....HA..| +00000360 e1 10 e4 fe 14 0b 59 6d da fc 35 1e f5 eb fc 71 |......Ym..5....q| +00000370 08 49 a4 04 55 df 5e 09 cc 48 79 ba 3b e6 12 20 |.I..U.^..Hy.;.. | +00000380 4e 57 b3 22 a0 4f 62 b9 30 e3 1c 3e ed 95 6c c7 |NW.".Ob.0..>..l.| +00000390 49 a3 b4 c5 2d 25 11 18 94 7b 10 43 d3 fe de 98 |I...-%...{.C....| +000003a0 74 65 c1 cd d2 d1 67 a1 86 03 a4 7e 12 88 0e 6e |te....g....~...n| +000003b0 49 17 03 03 00 35 d3 c7 fa 89 82 0d 80 29 53 f8 |I....5.......)S.| +000003c0 49 ba 86 1f aa dd ec d4 4c 8d cc a4 88 95 27 a8 |I.......L.....'.| +000003d0 23 dc b2 09 e6 d3 47 34 fa e1 0c 5c 01 ae 95 a0 |#.....G4...\....| +000003e0 4d 1c 42 fe e7 d6 ed cb a7 83 fd |M.B........| >>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 00 35 a6 7f ef 71 68 |..........5...qh| -00000010 8b 86 84 20 a6 e7 65 3f 3f f8 c6 8b 62 40 31 e2 |... ..e??...b@1.| -00000020 1a ee 8d 0a 64 88 ea 4b 83 5f c5 ff 1b 9d aa 5f |....d..K._....._| -00000030 ce a4 31 76 06 90 da ad b9 17 49 0b a6 b5 37 80 |..1v......I...7.| -00000040 17 03 03 00 17 2b be e8 98 11 37 0d db 46 69 0d |.....+....7..Fi.| -00000050 51 34 ee 13 00 c3 f1 12 8a 13 21 b7 17 03 03 00 |Q4........!.....| -00000060 13 8d ec 94 6f 55 b1 d5 c0 d6 a3 6e a2 8d 67 76 |....oU.....n..gv| -00000070 7b c7 b8 1d |{...| +00000000 14 03 03 00 01 01 17 03 03 00 35 b4 e6 ba 4c 98 |..........5...L.| +00000010 46 1c 04 eb 9a 06 4a ef 8c 2a 6e 9a 69 35 78 4c |F.....J..*n.i5xL| +00000020 9a 5e 43 93 11 d8 8d a5 c9 d0 1a db b6 ef 65 ec |.^C...........e.| +00000030 a9 21 e4 0f a6 3e 0a c1 a0 a1 49 35 c3 e7 d9 20 |.!...>....I5... | +00000040 17 03 03 00 17 d7 8d d4 53 d5 40 dc ae d6 73 24 |........S.@...s$| +00000050 f8 f5 65 4e 0f 8d a6 f0 9d 4a e1 5b 17 03 03 00 |..eN.....J.[....| +00000060 13 fd e0 76 85 ee 46 e9 d4 3c 0d 05 56 9b b3 5b |...v..F..<..V..[| +00000070 9c 42 de d4 |.B..| diff --git a/src/crypto/tls/testdata/Client-TLSv13-HelloRetryRequest b/src/crypto/tls/testdata/Client-TLSv13-HelloRetryRequest index a669920d93..2ef8e40657 100644 --- a/src/crypto/tls/testdata/Client-TLSv13-HelloRetryRequest +++ b/src/crypto/tls/testdata/Client-TLSv13-HelloRetryRequest @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fa 01 00 00 f6 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,14 +7,16 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7b 00 0b 00 02 01 00 ff 01 00 01 00 00 |...{............| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 06 00 04 00 1d 00 17 00 0d 00 1a 00 18 |................| 000000b0 08 04 04 03 08 07 08 05 08 06 04 01 05 01 06 01 |................| -000000c0 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 |.........+......| -000000d0 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f |......3.&.$... /| -000000e0 e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 |.}.G.bC.(.._.).0| -000000f0 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |.........._X.;t| +000000c0 05 03 06 03 02 01 02 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) 00000000 16 03 03 00 58 02 00 00 54 03 03 cf 21 ad 74 e5 |....X...T...!.t.| 00000010 9a 61 11 be 1d 8c 02 1e 65 b8 91 c2 a2 11 16 7a |.a......e......z| @@ -24,7 +26,7 @@ 00000050 0c 00 2b 00 02 03 04 00 33 00 02 00 17 14 03 03 |..+.....3.......| 00000060 00 01 01 |...| >>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 16 03 03 01 1b 01 00 01 17 03 |................| +00000000 14 03 03 00 01 01 16 03 03 01 39 01 00 01 35 03 |..........9...5.| 00000010 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000030 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |. ..............| @@ -32,88 +34,90 @@ 00000050 00 00 00 32 cc a9 cc a8 c0 2b c0 2f c0 2c c0 30 |...2.....+./.,.0| 00000060 c0 09 c0 13 c0 0a c0 14 00 9c 00 9d 00 2f 00 35 |............./.5| 00000070 c0 12 00 0a c0 23 c0 27 00 3c c0 07 c0 11 00 05 |.....#.'.<......| -00000080 13 03 13 01 13 02 01 00 00 9c 00 0b 00 02 01 00 |................| +00000080 13 03 13 01 13 02 01 00 00 ba 00 0b 00 02 01 00 |................| 00000090 ff 01 00 01 00 00 17 00 00 00 12 00 00 00 05 00 |................| 000000a0 05 01 00 00 00 00 00 0a 00 06 00 04 00 1d 00 17 |................| 000000b0 00 0d 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 |................| -000000c0 04 01 05 01 06 01 05 03 06 03 02 01 02 03 00 2b |...............+| -000000d0 00 09 08 03 04 03 03 03 02 03 01 00 33 00 47 00 |............3.G.| -000000e0 45 00 17 00 41 04 1e 18 37 ef 0d 19 51 88 35 75 |E...A...7...Q.5u| -000000f0 71 b5 e5 54 5b 12 2e 8f 09 67 fd a7 24 20 3e b2 |q..T[....g..$ >.| -00000100 56 1c ce 97 28 5e f8 2b 2d 4f 9e f1 07 9f 6c 4b |V...(^.+-O....lK| -00000110 5b 83 56 e2 32 42 e9 58 b6 d7 49 a6 b5 68 1a 41 |[.V.2B.X..I..h.A| -00000120 03 56 6b dc 5a 89 |.Vk.Z.| +000000c0 04 01 05 01 06 01 05 03 06 03 02 01 02 03 00 32 |...............2| +000000d0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000e0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| +000000f0 08 03 04 03 03 03 02 03 01 00 33 00 47 00 45 00 |..........3.G.E.| +00000100 17 00 41 04 1e 18 37 ef 0d 19 51 88 35 75 71 b5 |..A...7...Q.5uq.| +00000110 e5 54 5b 12 2e 8f 09 67 fd a7 24 20 3e b2 56 1c |.T[....g..$ >.V.| +00000120 ce 97 28 5e f8 2b 2d 4f 9e f1 07 9f 6c 4b 5b 83 |..(^.+-O....lK[.| +00000130 56 e2 32 42 e9 58 b6 d7 49 a6 b5 68 1a 41 03 56 |V.2B.X..I..h.A.V| +00000140 6b dc 5a 89 |k.Z.| >>> Flow 4 (server to client) -00000000 16 03 03 00 9b 02 00 00 97 03 03 9a 1f 7a fa 06 |.............z..| -00000010 c4 5f 92 61 62 d2 a5 f3 ae b9 a6 d8 6b eb 13 a7 |._.ab.......k...| -00000020 2f 17 62 79 3a ca 42 8b 18 06 15 20 00 00 00 00 |/.by:.B.... ....| +00000000 16 03 03 00 9b 02 00 00 97 03 03 fe 4a 7b 8f ac |............J{..| +00000010 ff 16 9d af dc a9 3a c4 e6 91 99 1f 20 62 3d 0b |......:..... b=.| +00000020 1f 75 28 88 56 eb 36 d1 84 e5 58 20 00 00 00 00 |.u(.V.6...X ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 03 00 00 |................| 00000050 4f 00 2b 00 02 03 04 00 33 00 45 00 17 00 41 04 |O.+.....3.E...A.| -00000060 d1 56 18 67 59 a5 e1 ed 99 0f ca e5 6b 5f e3 d9 |.V.gY.......k_..| -00000070 e3 fd e6 a2 50 93 bf 87 85 60 e7 7f 0b a0 96 c4 |....P....`......| -00000080 29 55 63 de fe 6b 75 99 b2 a6 75 92 61 d0 96 19 |)Uc..ku...u.a...| -00000090 f5 60 8f ec e9 d3 98 4a b9 6b 98 26 c1 3e 27 7e |.`.....J.k.&.>'~| -000000a0 17 03 03 00 17 5a aa bb 35 67 ec 83 da 8e 85 bd |.....Z..5g......| -000000b0 ae a5 0d c9 8b cd 03 bf 96 2b 35 61 17 03 03 02 |.........+5a....| -000000c0 6d 85 0c 7c d5 ff 0f 77 0a a4 b7 97 aa d3 f7 af |m..|...w........| -000000d0 4b 58 cb 24 4d 9f a6 d8 e2 c3 10 ce 3a 5d e4 cc |KX.$M.......:]..| -000000e0 84 7d 1f 71 bd b6 25 0c 10 75 d3 8d b6 12 04 56 |.}.q..%..u.....V| -000000f0 63 af 53 e5 cc 29 ce f7 18 7a 93 91 73 ae ff c1 |c.S..)...z..s...| -00000100 2e 2b 3d 76 ab 99 c8 e0 fd 69 b3 67 39 e9 58 40 |.+=v.....i.g9.X@| -00000110 4a 63 e8 71 c5 8d de 44 fb ef 4d 0a dc ae 51 12 |Jc.q...D..M...Q.| -00000120 7e ea 6a 25 32 8e 5b 08 6e c7 b2 87 00 4e 35 d8 |~.j%2.[.n....N5.| -00000130 cd 3b bd 8c dc e8 55 a9 2f 65 d1 7f c1 28 33 f9 |.;....U./e...(3.| -00000140 70 e1 af d8 2d 64 4c ac 5a 3a 16 6d 3e 97 a7 0e |p...-dL.Z:.m>...| -00000150 cd 28 05 1c ea 28 8d 63 a3 41 e2 3a 24 27 f4 43 |.(...(.c.A.:$'.C| -00000160 97 c8 89 09 ed 8b 96 74 b3 dc 98 f4 0c c2 6f 25 |.......t......o%| -00000170 fc 30 8a f8 25 49 e1 91 fb c6 39 23 ca d5 16 08 |.0..%I....9#....| -00000180 5f bf 10 88 71 a4 c5 ac e7 ad 9e 5a 4d e8 d3 1f |_...q......ZM...| -00000190 f0 5d 83 9d c9 e2 b3 f8 e4 a3 a5 57 5d ca 30 74 |.].........W].0t| -000001a0 a6 1b c7 51 50 05 5f 7e 93 71 1a 8d fc 04 d6 fe |...QP._~.q......| -000001b0 4e 4b 95 54 18 43 19 4d d2 dc 81 a8 94 76 7e 23 |NK.T.C.M.....v~#| -000001c0 56 8c 86 f9 15 d2 a8 0c 48 4e 0e 81 df e0 31 52 |V.......HN....1R| -000001d0 c9 2e b4 39 f3 cf ae e2 29 72 01 ed 34 4f 09 ce |...9....)r..4O..| -000001e0 64 de a9 9b 84 61 3a bb 0b ac 4e b1 6d 37 41 10 |d....a:...N.m7A.| -000001f0 5b cf 99 b1 3e e6 f5 7b 1c d4 d0 d5 34 fc ab c6 |[...>..{....4...| -00000200 29 8e 0b 53 e4 7b 35 33 e4 e3 f6 77 9b f6 c6 ae |)..S.{53...w....| -00000210 73 3c c5 80 c8 72 f7 56 6c 4c ce e5 a7 05 63 ee |s<...r.VlL....c.| -00000220 07 e0 1d 3e 73 3e 55 73 ba 63 a8 d7 99 6a 48 57 |...>s>Us.c...jHW| -00000230 0c 55 51 42 4b 27 91 4b 75 b3 3b 4c 29 f1 52 e8 |.UQBK'.Ku.;L).R.| -00000240 85 f9 49 53 ed 87 6d 9e 8f 5c 29 7c 5c 9c 4e 9a |..IS..m..\)|\.N.| -00000250 90 a8 99 2a 53 65 f7 d9 61 ef 6a 56 2a da 76 ed |...*Se..a.jV*.v.| -00000260 04 84 11 f5 1c 40 82 52 7d fa 00 79 43 12 42 b4 |.....@.R}..yC.B.| -00000270 ca 7a 86 d5 8d d6 c5 7b 04 13 79 08 72 0c ce d7 |.z.....{..y.r...| -00000280 88 9a f2 2c b5 9a 18 a4 d2 87 48 ce ab 17 33 fd |...,......H...3.| -00000290 cf 22 3c 72 03 86 af 35 2a b3 fe 24 0e 86 d8 82 |."......D..| -000002c0 14 12 cd 16 e5 6a 58 1b 3f f8 70 d6 47 e6 1b 98 |.....jX.?.p.G...| -000002d0 74 9c 21 2b 6d f8 8a 47 05 86 b1 fa 63 9d cc 19 |t.!+m..G....c...| -000002e0 da 9a a0 ea 5a 26 98 e6 b7 d0 da 03 b3 1d 33 e8 |....Z&........3.| -000002f0 55 74 ee 4b 6a 06 0f f1 45 35 72 81 bb c9 61 4e |Ut.Kj...E5r...aN| -00000300 60 d6 83 e6 ab 08 77 a4 f9 73 e5 d8 cb 66 9f 41 |`.....w..s...f.A| -00000310 00 15 2c 09 0e ad 16 02 6c 06 5f bc bf 47 f1 5a |..,.....l._..G.Z| -00000320 85 97 ab 88 e8 45 b0 31 96 ad 56 00 97 59 17 03 |.....E.1..V..Y..| -00000330 03 00 99 5e 77 80 46 1d 2f 47 9f b3 43 4d a6 2b |...^w.F./G..CM.+| -00000340 e9 f7 72 a2 d0 c6 69 7c df 5d ce a0 3b 89 e2 69 |..r...i|.]..;..i| -00000350 e7 35 5e 00 fb 87 10 4a a8 41 02 b7 89 fa 88 fc |.5^....J.A......| -00000360 72 63 ce bf 41 61 16 91 55 06 cd b6 fa 78 09 bc |rc..Aa..U....x..| -00000370 f6 21 a0 c2 1f f3 fa 34 2a 9e b9 8a 0c 72 81 02 |.!.....4*....r..| -00000380 66 a7 da 6b d6 e2 aa 99 6d 4b 42 f5 19 83 52 89 |f..k....mKB...R.| -00000390 9a 26 56 5d d5 a4 a7 bd ad b4 10 db ee 87 1d 15 |.&V]............| -000003a0 15 df 30 95 d8 61 e2 c4 88 47 e1 91 e3 85 33 fe |..0..a...G....3.| -000003b0 7d 02 0c 22 6b 52 22 a7 cf bf bf f0 9d 25 65 e0 |}.."kR"......%e.| -000003c0 6b da a2 8c 9a 00 3d 68 78 55 38 69 17 03 03 00 |k.....=hxU8i....| -000003d0 35 c8 ca 51 96 aa c1 4b a0 09 d3 bc d9 ea 35 db |5..Q...K......5.| -000003e0 f2 8d bb ab b3 23 09 a1 d1 9c 40 3e e4 84 d3 1c |.....#....@>....| -000003f0 60 64 5c ff 01 c7 78 69 c2 4a fb e1 c3 d6 f0 57 |`d\...xi.J.....W| -00000400 fa 3a 5f 7a 8b 70 |.:_z.p| +00000060 22 29 04 60 1f aa 8e 3f bd 63 99 c0 66 e1 e1 d7 |").`...?.c..f...| +00000070 c1 59 57 1d db 9d ba 28 a7 d4 fc fd bd 15 64 14 |.YW....(......d.| +00000080 ec 78 e3 dc e1 c7 3e 07 c3 c5 c4 4e 43 51 10 e2 |.x....>....NCQ..| +00000090 f0 ac 57 6b 56 4b b1 6a 46 e9 70 81 28 68 62 dc |..WkVK.jF.p.(hb.| +000000a0 17 03 03 00 17 2d a3 1d ea 4e f0 8b 4b 19 3f 2d |.....-...N..K.?-| +000000b0 18 ef 9d b1 65 b4 e8 93 b2 80 fe 28 17 03 03 02 |....e......(....| +000000c0 6d 3b 1b 01 88 15 65 6a 66 4a 91 e2 0a c2 c4 64 |m;....ejfJ.....d| +000000d0 c1 f5 d0 c2 fd 1d 18 4a e2 32 e2 d2 6f 25 04 78 |.......J.2..o%.x| +000000e0 96 66 48 53 0b bc 24 0a 6c 46 54 28 bb 63 ed 4e |.fHS..$.lFT(.c.N| +000000f0 ab c3 15 bb ae 1e ea c9 63 2a f1 4b fc 55 60 b2 |........c*.K.U`.| +00000100 8b 46 e3 09 f8 b4 72 87 3c ec 98 e2 21 53 c8 4d |.F....r.<...!S.M| +00000110 9b 07 4a 88 fc 0f c6 42 40 e5 74 5e 3e cf 88 3a |..J....B@.t^>..:| +00000120 f1 d9 ef 88 e8 eb 0a 4b f4 64 12 d1 3f 36 25 f8 |.......K.d..?6%.| +00000130 6d 91 49 a6 c1 ac 9e b7 e7 36 7f a0 0c af 11 48 |m.I......6.....H| +00000140 83 e6 5c ee 23 d9 18 9a 0b 73 76 8f 0e f0 2c 4d |..\.#....sv...,M| +00000150 a8 07 15 da 33 b8 57 de c4 a2 c2 97 ae d2 0b a0 |....3.W.........| +00000160 96 da 1c c5 d6 6d 7f 66 c9 a6 ee ab 91 53 fc d4 |.....m.f.....S..| +00000170 c1 e9 1b 7e e8 be 3e 44 65 8d 91 de 49 86 1c de |...~..>De...I...| +00000180 55 a1 42 5c 4c b5 24 30 67 23 d8 fe ad 54 6f e5 |U.B\L.$0g#...To.| +00000190 e9 ae 78 46 4a f7 cc ed d0 8d d3 65 95 76 ac fb |..xFJ......e.v..| +000001a0 f1 91 d2 90 35 17 5e c4 72 6c 16 2a 52 08 7b 16 |....5.^.rl.*R.{.| +000001b0 10 e4 c4 08 28 86 f7 dd 17 50 6c d0 ea 06 f3 8a |....(....Pl.....| +000001c0 b9 c7 0e fd 67 9d 14 75 13 5b 85 a2 8e 1f 7a be |....g..u.[....z.| +000001d0 17 17 ad 72 a1 40 9d 02 5e 80 16 df e7 30 8a eb |...r.@..^....0..| +000001e0 2d 62 f5 63 e6 c2 96 f3 1c 19 c4 bf 14 50 73 b6 |-b.c.........Ps.| +000001f0 6d 02 0e 7f 70 8f 6f f8 3d 6c 36 60 b5 41 3f 09 |m...p.o.=l6`.A?.| +00000200 f9 72 26 59 fc d3 b2 70 84 2c 9b 7d 7b ab 14 a1 |.r&Y...p.,.}{...| +00000210 43 65 89 51 75 9e 3b 4c 8c 01 8d a9 38 0a e3 fe |Ce.Qu.;L....8...| +00000220 0f f1 58 c5 9e b2 42 28 1e 7c 4a e0 6f fe 53 69 |..X...B(.|J.o.Si| +00000230 e0 bc 8c c2 d5 00 c4 00 c6 f6 47 fe 70 cc a5 c0 |..........G.p...| +00000240 cb 21 d8 89 37 8a ef bc c6 9b 9d 5d 74 a7 22 6b |.!..7......]t."k| +00000250 5c e0 24 89 8d 88 a1 19 8a bf e6 bb d3 43 e3 71 |\.$..........C.q| +00000260 38 99 60 20 2c d5 6e 93 83 20 be 0f ce 35 3d 02 |8.` ,.n.. ...5=.| +00000270 2f 39 5e bb 06 68 b2 c7 fc 42 be a7 81 f5 40 dd |/9^..h...B....@.| +00000280 49 6f 4b 1b 3f a9 6c 5b dd b9 38 29 01 be f7 76 |IoK.?.l[..8)...v| +00000290 cc 7b 8e 34 25 72 64 2a 4b bc 38 f7 07 4e cd 16 |.{.4%rd*K.8..N..| +000002a0 0b 9a 1f c5 5f 3e 5d 6e fe 2c d6 fd 7c cc af 97 |...._>]n.,..|...| +000002b0 89 04 75 20 83 c8 a9 4a d8 65 08 a0 4f 6a f7 71 |..u ...J.e..Oj.q| +000002c0 4a f0 34 b9 49 29 f1 44 d7 95 86 c1 cf fd 3a 46 |J.4.I).D......:F| +000002d0 fb 0a 7a 13 ee ca 0d ce bd 1e 62 63 cd 63 7a 75 |..z.......bc.czu| +000002e0 26 a6 0c 6e d6 77 06 df f7 1b e1 6c 96 e8 55 20 |&..n.w.....l..U | +000002f0 62 f0 98 2d 22 28 3b 95 9b ec dc d7 cb 6c 1d b5 |b..-"(;......l..| +00000300 3a de fd 2d a7 23 59 4b 69 85 20 13 8c e0 a4 b5 |:..-.#YKi. .....| +00000310 c1 e0 72 08 e7 c2 c9 c6 c2 5c 23 e7 d3 15 dd de |..r......\#.....| +00000320 6a 9b d2 0c 47 4d d1 e7 d8 a9 4d 5f 60 03 17 03 |j...GM....M_`...| +00000330 03 00 99 e8 da 65 12 48 68 fa d8 9c ee bf c8 3d |.....e.Hh......=| +00000340 a4 5d e1 bc 8a e3 18 46 a8 89 c9 7b 3e a2 b0 fb |.].....F...{>...| +00000350 1c 7e 64 69 4a 06 aa 0a ce 79 b6 e0 8b 57 a7 7b |.~diJ....y...W.{| +00000360 7f b7 80 3f cf 1b f2 00 2f 22 63 00 97 60 e8 bf |...?..../"c..`..| +00000370 16 c1 37 fd e0 40 96 24 e1 48 c8 c5 7d a4 50 ed |..7..@.$.H..}.P.| +00000380 04 c4 17 88 84 e6 d3 8c b9 8b bf 81 f8 3b 19 32 |.............;.2| +00000390 27 d2 f6 41 2f d1 fb f3 49 79 c9 99 6d db c8 25 |'..A/...Iy..m..%| +000003a0 36 fa 72 d1 c3 2c 1f 01 90 e0 a4 45 2b 3f 24 59 |6.r..,.....E+?$Y| +000003b0 4c 87 04 af 4c 8b 48 04 b3 f6 e5 19 ab cd 57 f1 |L...L.H.......W.| +000003c0 1c 4f a8 ec 48 23 20 65 df 7b cc 01 17 03 03 00 |.O..H# e.{......| +000003d0 35 64 87 14 09 0b dd 3e b1 58 d7 b5 46 e7 e3 c4 |5d.....>.X..F...| +000003e0 76 fa 86 c4 6d 53 97 fd 4f c8 29 77 a7 f8 4f 70 |v...mS..O.)w..Op| +000003f0 0d 91 e9 ba 06 a7 83 df fb 6f 8e c9 fb fb 8f 88 |.........o......| +00000400 1d 2b f9 ce cc 5c |.+...\| >>> Flow 5 (client to server) -00000000 17 03 03 00 35 24 4a 53 55 49 92 7a 21 a2 db 69 |....5$JSUI.z!..i| -00000010 e5 2b 00 29 83 cb 91 32 17 48 73 96 89 d1 b2 11 |.+.)...2.Hs.....| -00000020 c4 23 48 41 eb df eb 5a 10 c2 78 4e a2 e4 f0 38 |.#HA...Z..xN...8| -00000030 4a 1c b6 d3 bb 52 bc 7e f6 94 17 03 03 00 17 74 |J....R.~.......t| -00000040 04 34 8d 27 19 da f3 d8 14 30 1b 85 ad 1e 99 cd |.4.'.....0......| -00000050 06 f0 a3 50 94 48 17 03 03 00 13 ac 8f 7e 2e 9c |...P.H.......~..| -00000060 90 96 db 33 e2 e9 94 c1 c9 95 f2 7a d1 8f |...3.......z..| +00000000 17 03 03 00 35 44 f5 f8 bb f8 ef a5 7e c7 6f 34 |....5D......~.o4| +00000010 88 d9 96 2e 59 11 6e 08 0d 17 20 fb 45 c6 86 7c |....Y.n... .E..|| +00000020 d3 ac 29 0f 50 89 d3 e9 b8 eb 42 63 bc 18 49 99 |..).P.....Bc..I.| +00000030 75 d5 08 2a 72 57 ea a2 a2 21 17 03 03 00 17 38 |u..*rW...!.....8| +00000040 12 6b 56 f1 33 2a 3d 42 94 42 85 e5 3b 49 10 52 |.kV.3*=B.B..;I.R| +00000050 13 82 59 6d 28 fa 17 03 03 00 13 ab 4c ec 58 94 |..Ym(.......L.X.| +00000060 13 b6 f6 91 ce b5 91 f7 34 7f c5 98 38 f2 |........4...8.| diff --git a/src/crypto/tls/testdata/Client-TLSv13-KeyUpdate b/src/crypto/tls/testdata/Client-TLSv13-KeyUpdate index 1b8004ad0a..18d547b9ae 100644 --- a/src/crypto/tls/testdata/Client-TLSv13-KeyUpdate +++ b/src/crypto/tls/testdata/Client-TLSv13-KeyUpdate @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 fe 01 00 00 fa 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,97 +7,99 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 7f 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| 000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000d0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| -000000e0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| -000000f0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| -00000100 cb 3b 74 |.;t| +000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| +000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| +000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| +000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000120 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 dc 81 c4 82 2e |....z...v.......| -00000010 a2 4f c4 c2 53 c2 bc 6a bd f3 46 84 b5 ba 66 b5 |.O..S..j..F...f.| -00000020 8b 67 7c 90 51 40 12 39 18 e1 bf 20 00 00 00 00 |.g|.Q@.9... ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 84 8c be 3d 27 |....z...v.....='| +00000010 0b ef 9d b0 8b bd 21 91 9d 12 b8 4c f2 0f bb 29 |......!....L...)| +00000020 6a f4 1c 56 09 bb 85 c6 9b b7 7b 20 00 00 00 00 |j..V......{ ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 03 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 3b |..+.....3.$... ;| -00000060 6b 2a e6 c2 7e b6 59 68 e4 e3 f2 f3 14 e5 72 bc |k*..~.Yh......r.| -00000070 c9 61 b4 b0 0a c6 41 0d a9 8e d9 9b 7d 2a 11 14 |.a....A.....}*..| -00000080 03 03 00 01 01 17 03 03 00 17 43 af 38 b9 56 06 |..........C.8.V.| -00000090 2d 10 e3 e5 1d 1b 1e a9 5f 90 ca 0d a9 52 33 86 |-......._....R3.| -000000a0 85 17 03 03 02 6d ac 6a a1 8f 42 27 74 80 25 f9 |.....m.j..B't.%.| -000000b0 1f 48 49 2d c2 33 38 e7 93 7e b0 b2 50 b8 6a ea |.HI-.38..~..P.j.| -000000c0 a6 81 ef 9b 55 83 4e 93 df 92 97 6f 00 f5 c4 fc |....U.N....o....| -000000d0 ec b1 19 dd 68 b5 bd c4 bb ba 63 9a e4 c9 24 af |....h.....c...$.| -000000e0 88 13 65 11 bf ea d9 07 e9 46 fd 5b 60 ce 57 46 |..e......F.[`.WF| -000000f0 8b a9 bd c6 58 1a 3b bd 5e fb 0f 46 ec fc 8b 2c |....X.;.^..F...,| -00000100 ea a7 19 06 6a e5 6f 10 7a 27 04 6b aa a4 2c f4 |....j.o.z'.k..,.| -00000110 ef 3b e8 8a 51 88 fd e0 ae 33 b1 4c b3 04 5e 91 |.;..Q....3.L..^.| -00000120 b0 98 0b 9f 38 a3 3c fb 9f d5 d2 36 e4 09 19 18 |....8.<....6....| -00000130 a5 b3 12 aa c9 03 ac b5 ab bb f1 7a 02 d2 dd 75 |...........z...u| -00000140 0e cb 60 09 39 23 c3 b2 c1 8e e0 18 57 72 54 61 |..`.9#......WrTa| -00000150 4c 99 35 1d ba 31 01 0c 48 d2 f2 88 22 9c 91 7d |L.5..1..H..."..}| -00000160 e3 74 f9 b3 52 bf 0e 0b e1 31 7c 2c cb fd f2 8c |.t..R....1|,....| -00000170 bf 27 40 6d 26 b7 62 47 56 91 22 00 67 9a df 4f |.'@m&.bGV.".g..O| -00000180 f0 47 57 3c a6 46 4d 16 f6 8d fc 2d 91 c4 1a bf |.GW<.FM....-....| -00000190 38 63 ec 63 fe 97 14 80 aa 5b 60 ff c8 77 57 9c |8c.c.....[`..wW.| -000001a0 d5 86 a6 76 96 b3 e9 db c9 eb dd 94 84 2a 46 f5 |...v.........*F.| -000001b0 6a c1 10 66 59 f1 13 b9 41 f3 89 26 ba 52 69 95 |j..fY...A..&.Ri.| -000001c0 b1 f3 66 30 f8 aa 90 f7 90 49 19 48 4c 25 4a 1f |..f0.....I.HL%J.| -000001d0 12 9d 67 32 79 bb 53 d8 c5 d1 b4 6e 89 75 49 c0 |..g2y.S....n.uI.| -000001e0 65 86 ac 72 23 2f 97 d3 ae e2 64 79 5e e2 10 4e |e..r#/....dy^..N| -000001f0 55 0c c6 70 d3 2e 4a 6c b0 73 0a 11 eb ae f7 a1 |U..p..Jl.s......| -00000200 a1 f0 5f 67 45 46 d3 8c 11 ff 21 62 7d ed f9 0e |.._gEF....!b}...| -00000210 2a ba b3 82 f5 6b c1 4a 4e cc 11 90 48 81 96 7a |*....k.JN...H..z| -00000220 df f9 22 ae 53 31 14 9d c9 5c 85 e7 db a2 dd 02 |..".S1...\......| -00000230 56 eb d0 fe 20 35 21 c9 33 63 b5 b7 a8 93 30 7f |V... 5!.3c....0.| -00000240 86 1f d1 af b1 ff 3e 9a d1 a8 90 d9 9c 86 55 e8 |......>.......U.| -00000250 d0 4c c4 6d a3 ce c6 c0 df f8 a8 b6 43 03 ae fc |.L.m........C...| -00000260 7d 94 7b fe be 85 46 d8 42 9d b6 15 b9 a3 27 3d |}.{...F.B.....'=| -00000270 80 64 54 c8 53 c4 a7 94 52 8f 9d 4c 58 54 a5 c4 |.dT.S...R..LXT..| -00000280 e0 e7 2e cb f3 8c d0 82 3f 95 76 c9 ea ea 80 41 |........?.v....A| -00000290 21 5d 3e a3 1e be 4e 0b ce 10 ab 61 a5 76 ef 62 |!]>...N....a.v.b| -000002a0 50 1b 52 a8 75 23 fd eb ea 76 f9 d8 41 3c a2 e4 |P.R.u#...v..A<..| -000002b0 21 cb 56 f7 40 81 78 56 22 06 2a 38 fc 1f d8 9f |!.V.@.xV".*8....| -000002c0 38 b0 7a 93 f0 8c ad 3e 54 27 a2 d7 8b 2c 79 46 |8.z....>T'...,yF| -000002d0 15 65 f1 55 b2 2a 06 a1 97 9b 47 23 f8 9a 3f 88 |.e.U.*....G#..?.| -000002e0 8e 26 7e 13 cd 6e 8b cb d5 a5 78 48 f7 ba ad d8 |.&~..n....xH....| -000002f0 08 3b 34 5b 52 cd e3 2d 12 ac 81 00 c0 d0 4d df |.;4[R..-......M.| -00000300 56 d6 40 86 91 31 3d ba 6b 41 bc 51 6f ac b2 df |V.@..1=.kA.Qo...| -00000310 90 4b 78 17 03 03 00 99 21 0f 5b 18 54 84 98 0c |.Kx.....!.[.T...| -00000320 3a 7b 0b db 99 0e 09 f6 b7 4f a9 cc da bf 4c ac |:{.......O....L.| -00000330 5f 44 fc ba 9d 5d 52 d5 ec 2e 08 0c cc 3c e1 72 |_D...]R......<.r| -00000340 10 77 5b 7b 55 f7 c1 44 a3 25 e0 48 20 9a 3a de |.w[{U..D.%.H .:.| -00000350 2f ae 30 a9 e9 5b 75 84 e3 59 f0 6b 23 a6 d8 20 |/.0..[u..Y.k#.. | -00000360 16 51 2a 19 61 60 35 28 74 41 32 fa 97 8d 3b ed |.Q*.a`5(tA2...;.| -00000370 ff 64 94 d7 27 4c 9b 1e 5e b8 89 43 e3 ae 2a b6 |.d..'L..^..C..*.| -00000380 60 a8 bb f0 d1 75 85 15 bb 95 3c 82 f1 62 da b1 |`....u....<..b..| -00000390 25 d2 58 7d 67 7f 02 5b b4 91 68 3c 70 10 09 94 |%.X}g..[..h| +000000f0 b0 72 f8 16 18 eb 47 ca fe bc 83 ca 0a b6 df 6f |.r....G........o| +00000100 1c dd 95 6e 27 60 a3 88 40 0f a0 3f 6e f8 a8 9c |...n'`..@..?n...| +00000110 20 ee 43 60 66 e7 97 8c c2 03 a8 e6 3d 87 6f cd | .C`f.......=.o.| +00000120 e9 3a 69 de 10 1f 49 ea 9d 9b 4d c9 e9 58 55 b2 |.:i...I...M..XU.| +00000130 44 b7 09 f2 29 65 d1 fa c1 00 b8 c0 0c 4d a1 89 |D...)e.......M..| +00000140 1c 03 c5 0a 20 d9 88 b2 8e c6 b6 19 e1 a4 10 92 |.... ...........| +00000150 2b 86 20 f8 0e 7c ed a5 37 03 9e 36 7a bd 0b de |+. ..|..7..6z...| +00000160 13 ef 6e e8 6d 1c 94 4d 6a 3f 17 db c8 44 84 47 |..n.m..Mj?...D.G| +00000170 8b 23 d1 64 c8 90 7a da ac 11 a0 51 c0 f2 76 10 |.#.d..z....Q..v.| +00000180 57 1e bd a5 37 25 a9 a0 1d 3f cf 71 b1 d4 80 ed |W...7%...?.q....| +00000190 b9 eb 28 ec df 36 c4 f0 d1 2b fa 5b 13 fd b4 1a |..(..6...+.[....| +000001a0 82 3a e2 53 53 90 9a 42 0f 4b 3f 62 0e d5 e3 ab |.:.SS..B.K?b....| +000001b0 c2 93 b6 ab e2 db f5 43 fd f3 70 6d 44 68 c4 56 |.......C..pmDh.V| +000001c0 4c 37 5a 9e 50 06 94 b6 d8 e1 f7 0c 97 f9 0f d1 |L7Z.P...........| +000001d0 4f 5a 47 b4 1c 0a 1b 0a ff bc 5d 08 7d ef b7 e6 |OZG.......].}...| +000001e0 72 35 40 12 02 cc ed 48 19 ff e6 c8 e2 90 30 42 |r5@....H......0B| +000001f0 04 bc 3a d0 a1 27 c6 c2 c8 b1 ab 48 a8 ff b2 c4 |..:..'.....H....| +00000200 2e 1b 3b 9d 14 01 01 2e 53 1d 0c f7 6a 8d 49 64 |..;.....S...j.Id| +00000210 5a bf 6e de 66 91 a8 97 2a 9f 2f 36 01 2e 33 2d |Z.n.f...*./6..3-| +00000220 de 5e a8 ba a1 66 fa 8a 18 c3 6e 33 a2 ab 3e 02 |.^...f....n3..>.| +00000230 8b 25 21 dd 8b 9f de 4e 91 c9 14 dd 92 f0 4d b2 |.%!....N......M.| +00000240 15 bf 44 89 8d 00 67 5e 01 c8 6d e7 44 3f 2b c6 |..D...g^..m.D?+.| +00000250 cf 7a c1 4d fc b3 c1 81 f3 07 eb 6c 64 14 19 f1 |.z.M.......ld...| +00000260 94 86 c0 c6 ea 95 35 c2 52 0e 67 37 74 df 27 c7 |......5.R.g7t.'.| +00000270 76 1c 8e 2c 36 7d ef 71 c3 61 dd cb 8e 82 7b a1 |v..,6}.q.a....{.| +00000280 78 c8 88 3c 90 31 17 7c d6 f5 7c ed 67 64 ed 16 |x..<.1.|..|.gd..| +00000290 bf 59 78 ee ee 6c 3e 3c bd ba 29 21 23 15 50 68 |.Yx..l><..)!#.Ph| +000002a0 40 23 ea b7 0f 03 9d 84 52 23 57 c1 dd 03 26 55 |@#......R#W...&U| +000002b0 01 3d 46 ff 15 d0 08 fb e1 a5 90 ac c2 e8 c8 18 |.=F.............| +000002c0 96 e4 79 9a 0f 09 25 71 9a a0 fa 43 08 9a ca a4 |..y...%q...C....| +000002d0 f8 8d cd f9 4f d4 d3 50 4e d2 5e 41 3a e0 e7 2e |....O..PN.^A:...| +000002e0 60 c6 70 8e 10 20 68 a3 8f ac 68 22 14 a2 54 5c |`.p.. h...h"..T\| +000002f0 ee 37 94 68 ff 93 cb 21 6b 2d 61 a3 ba 95 08 15 |.7.h...!k-a.....| +00000300 cc 2d f1 be 22 3d 7b 02 63 01 c2 9a 88 37 aa 76 |.-.."={.c....7.v| +00000310 2c 98 d1 17 03 03 00 99 21 4e 58 2e 4f 2b 3c c6 |,.......!NX.O+<.| +00000320 2e ad 3b 8b d2 bf 54 81 ca 81 c6 7d 8c 40 62 cd |..;...T....}.@b.| +00000330 6a 42 6b 4a 81 b9 81 ce dc c2 e8 3e 63 79 c8 2c |jBkJ.......>cy.,| +00000340 2c 8c 06 eb 70 2c 04 e1 62 6a 56 6e 72 c4 c8 69 |,...p,..bjVnr..i| +00000350 39 39 c3 c2 94 3c bd 6f cf 47 50 bb 8f d7 8e ac |99...<.o.GP.....| +00000360 68 4b 0b 06 e9 6a 44 68 fa 0e 0e 42 82 37 2a 1f |hK...jDh...B.7*.| +00000370 7d 0a 29 0a 18 f4 4f 5b 39 7f 40 9d 63 fe 20 b8 |}.)...O[9.@.c. .| +00000380 6e 4a 64 9d 5f 18 68 16 6e 26 e1 5c 42 c8 0b 74 |nJd._.h.n&.\B..t| +00000390 43 66 5a 9f 1e 32 2d bd f3 2f 45 86 c4 e3 d2 c3 |CfZ..2-../E.....| +000003a0 85 2e 7e ad 29 26 f8 f5 de f6 5c b2 c2 3f d1 61 |..~.)&....\..?.a| +000003b0 6a 17 03 03 00 35 59 e1 a3 78 46 e2 7f db 1e a6 |j....5Y..xF.....| +000003c0 28 ea 50 8a f5 33 1d eb 49 ef b3 34 ea 6a f8 76 |(.P..3..I..4.j.v| +000003d0 69 70 ac d1 49 77 79 19 2c 2d 7c 95 9c e0 b7 c0 |ip..Iwy.,-|.....| +000003e0 d2 6c d6 dd 3d ee 5a 89 0c 7b 66 |.l..=.Z..{f| >>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 00 35 c9 09 ac f5 44 |..........5....D| -00000010 40 83 88 5a b9 46 70 b9 ff 9b 2e bb b4 7e 72 b0 |@..Z.Fp......~r.| -00000020 85 26 d6 37 33 ec d1 ac ce f4 db 72 8c e1 07 b5 |.&.73......r....| -00000030 d0 ce ee 2f 19 77 62 ec 97 ae 1b e1 5f 85 bf c4 |.../.wb....._...| -00000040 17 03 03 00 17 1c ae 0f 1d 50 be 4b d0 64 4f 23 |.........P.K.dO#| -00000050 41 60 d9 c7 f5 60 a6 5c 38 14 fd d5 |A`...`.\8...| +00000000 14 03 03 00 01 01 17 03 03 00 35 38 8f 9d c3 39 |..........58...9| +00000010 03 62 38 be b8 03 22 be 53 0a 0e ff 33 82 29 2a |.b8...".S...3.)*| +00000020 3e a5 4b d0 0e fe 6b c8 bc d8 07 71 77 ca 0f aa |>.K...k....qw...| +00000030 a9 8f 3e 6e 69 5d fc 37 0c 5a f6 1d 8b fc 46 8d |..>ni].7.Z....F.| +00000040 17 03 03 00 17 ac 0d 5d 2a 0b dd 2e 62 ab ac cc |.......]*...b...| +00000050 d6 43 d4 76 ea 52 62 7f 5b 10 93 63 |.C.v.Rb.[..c| >>> Flow 4 (server to client) -00000000 17 03 03 00 16 ad 61 13 66 9c 3c dd 88 42 2c 6c |......a.f.<..B,l| -00000010 d1 22 5d b4 b2 6f f0 68 4f 37 4d |."]..o.hO7M| +00000000 17 03 03 00 16 e0 09 97 59 52 91 65 5a cd 3b d5 |........YR.eZ.;.| +00000010 95 c6 be 7a c7 a8 48 a6 39 73 44 |...z..H.9sD| >>> Flow 5 (client to server) -00000000 17 03 03 00 16 e5 b5 ff ad d4 f5 e5 55 04 83 a7 |............U...| -00000010 59 43 9a 3e 68 4d 38 6f b1 1c 30 |YC.>hM8o..0| +00000000 17 03 03 00 16 12 d4 4b bd d2 98 10 6a 72 29 bc |.......K....jr).| +00000010 6d c1 23 38 88 c3 7b d8 32 b6 7f |m.#8..{.2..| >>> Flow 6 (server to client) -00000000 17 03 03 00 1a 64 0c f4 8e 8f 2b 04 e2 36 28 77 |.....d....+..6(w| -00000010 a2 28 97 4b 15 ba 1b b2 10 31 b3 4d 87 09 af |.(.K.....1.M...| +00000000 17 03 03 00 1a 0c 7b fb 83 bb 87 60 52 4d fb b8 |......{....`RM..| +00000010 c8 cf 95 98 80 60 87 f4 04 ee d1 0a 5d 57 51 |.....`......]WQ| >>> Flow 7 (client to server) -00000000 17 03 03 00 1d 90 c9 33 bf fc 76 12 3d af 9e c8 |.......3..v.=...| -00000010 8c ca e7 a1 63 6e 80 91 b1 7f 5e e4 dc c2 e6 1c |....cn....^.....| -00000020 b6 2b 17 03 03 00 13 ef a8 30 91 b1 20 fe 82 79 |.+.......0.. ..y| -00000030 44 31 a8 af 99 bb 5e 97 75 a3 |D1....^.u.| +00000000 17 03 03 00 1d b1 21 2b 13 dc 27 c2 50 07 61 8d |......!+..'.P.a.| +00000010 63 fa c3 1f 1b ab 19 77 a0 8b 97 5f 03 26 80 54 |c......w..._.&.T| +00000020 04 00 17 03 03 00 13 91 28 90 11 9b f8 75 52 b8 |........(....uR.| +00000030 de 14 32 09 9d 2b 77 bb 3c 5a |..2..+w.>> Flow 1 (client to server) -00000000 16 03 01 01 19 01 00 01 15 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 37 01 00 01 33 03 03 00 00 00 00 00 |....7...3.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,88 +7,90 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9a 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 b8 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 04 00 02 00 17 00 0d 00 1a 00 18 08 04 |................| 000000b0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| -000000c0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| -000000d0 02 03 01 00 33 00 47 00 45 00 17 00 41 04 1e 18 |....3.G.E...A...| -000000e0 37 ef 0d 19 51 88 35 75 71 b5 e5 54 5b 12 2e 8f |7...Q.5uq..T[...| -000000f0 09 67 fd a7 24 20 3e b2 56 1c ce 97 28 5e f8 2b |.g..$ >.V...(^.+| -00000100 2d 4f 9e f1 07 9f 6c 4b 5b 83 56 e2 32 42 e9 58 |-O....lK[.V.2B.X| -00000110 b6 d7 49 a6 b5 68 1a 41 03 56 6b dc 5a 89 |..I..h.A.Vk.Z.| +000000c0 06 03 02 01 02 03 00 32 00 1a 00 18 08 04 04 03 |.......2........| +000000d0 08 07 08 05 08 06 04 01 05 01 06 01 05 03 06 03 |................| +000000e0 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 02 03 |.....+..........| +000000f0 01 00 33 00 47 00 45 00 17 00 41 04 1e 18 37 ef |..3.G.E...A...7.| +00000100 0d 19 51 88 35 75 71 b5 e5 54 5b 12 2e 8f 09 67 |..Q.5uq..T[....g| +00000110 fd a7 24 20 3e b2 56 1c ce 97 28 5e f8 2b 2d 4f |..$ >.V...(^.+-O| +00000120 9e f1 07 9f 6c 4b 5b 83 56 e2 32 42 e9 58 b6 d7 |....lK[.V.2B.X..| +00000130 49 a6 b5 68 1a 41 03 56 6b dc 5a 89 |I..h.A.Vk.Z.| >>> Flow 2 (server to client) -00000000 16 03 03 00 9b 02 00 00 97 03 03 1c 1a ee 30 2f |..............0/| -00000010 02 10 0c 84 ee 6a 2c d1 67 76 00 8a 16 e5 15 c5 |.....j,.gv......| -00000020 4c d7 a9 26 33 43 9a 9a d6 f8 e7 20 00 00 00 00 |L..&3C..... ....| +00000000 16 03 03 00 9b 02 00 00 97 03 03 b4 cc 04 30 25 |..............0%| +00000010 f5 36 2e 22 d7 f5 f2 46 5b 01 09 94 ec 5e 48 df |.6."...F[....^H.| +00000020 60 d5 70 b6 db 62 00 36 dc 66 cb 20 00 00 00 00 |`.p..b.6.f. ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 03 00 00 |................| 00000050 4f 00 2b 00 02 03 04 00 33 00 45 00 17 00 41 04 |O.+.....3.E...A.| -00000060 f0 2e aa 75 ea 32 f4 3c ea b7 61 13 0f 22 8d 39 |...u.2.<..a..".9| -00000070 9e 0a 53 c8 d6 92 ea 5e 87 5b 46 d3 71 2d d1 df |..S....^.[F.q-..| -00000080 fa 1e 9a 6a 0e b2 bc d7 91 6e 26 56 17 24 11 d8 |...j.....n&V.$..| -00000090 0f be c0 1d f5 fd c7 9d 2d 3c a0 0f ee 03 70 1f |........-<....p.| -000000a0 14 03 03 00 01 01 17 03 03 00 17 8e 76 66 0d 44 |............vf.D| -000000b0 aa a2 d9 80 84 7c 6d 42 f0 ee 9f a3 6c b8 83 21 |.....|mB....l..!| -000000c0 5d 7b 17 03 03 02 6d 18 d3 53 cc 09 6a 23 fc c5 |]{....m..S..j#..| -000000d0 a9 2e 73 b4 3d ea 54 56 42 f5 1f 71 3e 8f 8e 7b |..s.=.TVB..q>..{| -000000e0 12 18 d7 d6 ab ed 24 5f 16 c8 18 5e e0 28 84 40 |......$_...^.(.@| -000000f0 89 49 a7 91 57 d6 2b a0 9c ab 5d 85 ac 4f 6b 70 |.I..W.+...]..Okp| -00000100 c3 31 e0 57 87 d7 7c 45 27 34 54 eb 85 02 14 2c |.1.W..|E'4T....,| -00000110 a0 53 4f ec 21 9f 04 91 38 b8 df 2c 5d 0b 79 0a |.SO.!...8..,].y.| -00000120 4f 96 79 15 72 de b5 fb 43 1f d8 71 62 d8 e0 69 |O.y.r...C..qb..i| -00000130 21 13 87 ab e5 b8 e5 86 01 74 25 b7 39 fc 86 e2 |!........t%.9...| -00000140 2f de 0b 1f 8c db b2 98 b3 47 c1 4e dd db 36 d3 |/........G.N..6.| -00000150 28 de cf 4c 4d 54 8e a3 e5 d3 38 19 1f 4b 05 7f |(..LMT....8..K..| -00000160 9a e1 59 4c a3 4e 42 b6 71 0d 9c 96 e4 d8 29 73 |..YL.NB.q.....)s| -00000170 4e e6 f5 87 56 04 99 c2 56 15 6c 8b 04 7c e5 83 |N...V...V.l..|..| -00000180 8b f3 42 e8 97 7a b0 cc 7d 15 b8 84 d3 08 dd c1 |..B..z..}.......| -00000190 89 f5 d4 19 d2 f6 fd 32 b4 37 6e 6a cc 0c 7a 69 |.......2.7nj..zi| -000001a0 09 57 78 36 d4 5b 8c 23 0f e6 39 08 4c 58 3e 3f |.Wx6.[.#..9.LX>?| -000001b0 b1 a0 ae 2e 85 b7 64 45 dd e1 ae c4 91 53 8c 6f |......dE.....S.o| -000001c0 02 70 45 f0 97 7b c8 90 88 0e 95 ed 1e 81 fc 86 |.pE..{..........| -000001d0 27 83 3d 32 43 d6 e4 f3 84 c6 c4 c1 b2 1c 0d 4a |'.=2C..........J| -000001e0 22 78 cd 1c f8 0a aa 19 1a 96 cc 46 6d a0 7f c7 |"x.........Fm...| -000001f0 2f d8 68 de 48 7d ae 42 b3 75 2a d5 ab cf e7 a7 |/.h.H}.B.u*.....| -00000200 a1 e6 66 e0 88 d8 14 25 81 21 4a 6f f7 7c 84 57 |..f....%.!Jo.|.W| -00000210 9c cd 45 8a c0 2d 5f 97 b6 66 96 f1 be d8 02 d2 |..E..-_..f......| -00000220 a4 8e fb 0d c4 cc 02 12 1d b7 76 73 8d 73 8e 71 |..........vs.s.q| -00000230 ec 62 4b ba d1 94 98 e5 de 45 f4 92 22 79 9a 2e |.bK......E.."y..| -00000240 b4 12 a6 f8 ab 8a 52 c3 df f8 77 a9 71 8b ff d6 |......R...w.q...| -00000250 2b bc 47 0b 63 5b 0f cf f8 f1 86 7a 72 91 78 7b |+.G.c[.....zr.x{| -00000260 b8 52 74 96 40 4c 08 f3 ca 46 ef d9 b9 6d 7a dc |.Rt.@L...F...mz.| -00000270 2c da f1 c2 c4 1f 19 38 84 cf 7d b7 5d f2 19 a7 |,......8..}.]...| -00000280 bc 81 70 48 1c 5d da e7 e1 8f 94 33 fa b9 44 97 |..pH.].....3..D.| -00000290 52 7a 22 75 f3 3e 08 f5 d3 66 be 63 8e e6 fc 7b |Rz"u.>...f.c...{| -000002a0 54 6d 14 2e 88 09 c7 a1 a6 b7 8e f3 9f 66 dd a4 |Tm...........f..| -000002b0 ec 81 e9 4b 44 69 29 78 95 dd 44 80 f5 f9 41 23 |...KDi)x..D...A#| -000002c0 97 53 71 63 2d cc d0 47 d6 f7 3f 6b 61 5f 44 33 |.Sqc-..G..?ka_D3| -000002d0 61 d1 35 94 42 7b 88 b9 af 6f e2 c1 71 7b d9 12 |a.5.B{...o..q{..| -000002e0 2c b6 57 fa 42 98 27 6d 8a da f8 dd de 6f b2 ea |,.W.B.'m.....o..| -000002f0 c8 de 5c 09 cd 47 36 10 0f 52 72 39 b2 e5 92 19 |..\..G6..Rr9....| -00000300 81 2a e0 ae aa cc b5 d1 68 98 c4 69 02 fc 86 1a |.*......h..i....| -00000310 79 9c 11 54 fc 43 8a ed 63 50 83 49 ac bf 4c ad |y..T.C..cP.I..L.| -00000320 80 04 98 fd 33 19 76 49 8f fe 5a 0f 22 69 3e eb |....3.vI..Z."i>.| -00000330 d8 eb 51 71 17 03 03 00 99 42 4d 4b db 37 6c c3 |..Qq.....BMK.7l.| -00000340 fb 93 1f a6 7a 86 3c 5e 88 e5 75 d4 a1 73 4a b3 |....z.<^..u..sJ.| -00000350 0b 99 f1 a6 98 5f 6d 0f 00 0e 4f fa a3 5e 7d f0 |....._m...O..^}.| -00000360 41 dd dd 5c 71 3b 10 f9 75 07 d5 6c f2 83 83 5c |A..\q;..u..l...\| -00000370 60 32 d9 d2 b3 13 1b 6c 84 2b 02 58 da b6 18 4e |`2.....l.+.X...N| -00000380 ea 7d b3 46 2b a9 ec e7 65 3a 8e 2f 77 48 92 72 |.}.F+...e:./wH.r| -00000390 6a 82 47 bd 82 2b f7 01 6b c4 22 e2 43 78 78 03 |j.G..+..k.".Cxx.| -000003a0 3c 40 d9 6c d1 b3 5e 21 4d 52 74 e4 07 70 56 21 |<@.l..^!MRt..pV!| -000003b0 05 37 37 82 13 cd e6 ce 3f 93 61 74 b4 9a 42 7d |.77.....?.at..B}| -000003c0 26 fa 15 4f ed b7 63 22 3c 92 f3 72 9c d2 80 17 |&..O..c"<..r....| -000003d0 30 f0 17 03 03 00 35 8c f6 08 33 76 5a a4 7b ef |0.....5...3vZ.{.| -000003e0 0d 91 b6 bf fa 9e 39 19 6f 79 77 4c 4d 74 95 71 |......9.oywLMt.q| -000003f0 00 73 37 17 50 ef 55 fb 71 04 36 87 2e 16 5e 25 |.s7.P.U.q.6...^%| -00000400 9b d4 9c 52 f9 ec c5 26 7e 58 ed 9f |...R...&~X..| +00000060 a4 00 4f 38 9f 17 cc 91 60 06 78 48 40 f3 be ac |..O8....`.xH@...| +00000070 f4 09 3f b1 41 0d 60 66 50 d5 a8 2c bf a6 c6 c8 |..?.A.`fP..,....| +00000080 ca fe ed 4b 3f 5f 51 eb fb da 45 b2 ad d3 70 d4 |...K?_Q...E...p.| +00000090 59 e5 ad 07 5a 02 2e f4 6b 01 7e 57 c5 b7 71 02 |Y...Z...k.~W..q.| +000000a0 14 03 03 00 01 01 17 03 03 00 17 3c 06 c9 4d 5a |...........<..MZ| +000000b0 51 b5 51 d9 dc ae 31 6d 75 9b f8 6e c1 9f e1 48 |Q.Q...1mu..n...H| +000000c0 d6 c4 17 03 03 02 6d 9c e1 d2 b9 0e da 85 ab 4e |......m........N| +000000d0 48 10 60 40 e4 1e 47 22 6f 26 2c fc f8 39 70 0f |H.`@..G"o&,..9p.| +000000e0 34 c8 40 80 dd c4 2b 39 50 d2 9c 9c 13 88 61 9e |4.@...+9P.....a.| +000000f0 62 14 01 ac be 34 95 dd 46 b6 e9 13 36 8f 54 00 |b....4..F...6.T.| +00000100 43 5f 34 61 88 df 09 85 c7 0f 36 f3 0d 22 ef 25 |C_4a......6..".%| +00000110 71 01 a7 ba fa 8d 24 7d 03 34 cf 92 d4 37 be b3 |q.....$}.4...7..| +00000120 8b 79 e4 12 6d 19 32 28 47 51 d4 ec 85 b9 e2 88 |.y..m.2(GQ......| +00000130 60 54 9d b5 75 56 27 fe db bb 2d c9 38 49 f9 dc |`T..uV'...-.8I..| +00000140 cf 3e 71 af 65 b7 c4 72 7a f9 69 d5 a3 d6 be aa |.>q.e..rz.i.....| +00000150 e9 79 fa ec e0 55 33 78 21 2f 2d 54 62 83 6c 77 |.y...U3x!/-Tb.lw| +00000160 2d 1e c9 5a 97 b4 11 46 ca 0e ba 75 58 d4 c4 a0 |-..Z...F...uX...| +00000170 49 d8 76 f1 f0 37 0c 30 c2 a8 86 78 a7 c5 24 00 |I.v..7.0...x..$.| +00000180 6e bd 89 fb 6a e6 73 1e 11 b9 21 29 92 c2 fd 44 |n...j.s...!)...D| +00000190 cd 84 25 e0 19 09 56 a8 65 73 01 f9 1d 26 ed 02 |..%...V.es...&..| +000001a0 67 3c 8a 1d 53 d7 c2 ea a4 0d dd 03 26 85 eb b8 |g<..S.......&...| +000001b0 20 c9 06 64 76 24 9a 4a 96 44 48 78 2e 86 01 9c | ..dv$.J.DHx....| +000001c0 be a3 60 7e 6e 5b 56 30 c7 b4 2d ff 71 db 58 15 |..`~n[V0..-.q.X.| +000001d0 86 22 84 fb 00 d3 96 1d f5 5f e5 39 3a 51 cc 04 |."......._.9:Q..| +000001e0 95 fd 49 f0 c2 cc 34 e1 0b 1d ba bb 62 f8 14 4d |..I...4.....b..M| +000001f0 aa 94 f0 09 b5 04 d3 b7 52 10 d2 ee 01 0c a0 68 |........R......h| +00000200 62 83 4f 11 33 b9 1c b1 4e 23 09 e7 d1 c2 c9 a4 |b.O.3...N#......| +00000210 de 63 c3 48 3f c7 51 9a 78 4c 2e e7 fa 2c bd 06 |.c.H?.Q.xL...,..| +00000220 82 e8 2f 61 35 83 aa 92 8b de 76 fb 0b 5a a7 44 |../a5.....v..Z.D| +00000230 07 6b 8f d9 de d6 dd 35 ec 08 44 31 97 15 9c 70 |.k.....5..D1...p| +00000240 38 89 2d 06 5d 01 39 23 45 ce c1 98 ca 90 f6 4a |8.-.].9#E......J| +00000250 47 a2 d4 6a ea 9f bc 7e ab 42 f5 b9 bd 54 44 0c |G..j...~.B...TD.| +00000260 b8 1c 34 10 53 80 ae fb 97 b5 64 75 2e c0 72 30 |..4.S.....du..r0| +00000270 dc 4a 3d aa 73 25 42 be 18 da 7c ae 0b 31 b0 f9 |.J=.s%B...|..1..| +00000280 55 d6 15 42 da bb e0 91 c9 ee bb b8 e3 6a ea f7 |U..B.........j..| +00000290 bf ae 2d 29 c0 58 4f 61 0c 55 e5 07 78 aa d1 45 |..-).XOa.U..x..E| +000002a0 76 8e e4 a9 d0 dd 49 29 7d f1 ab b8 82 39 31 23 |v.....I)}....91#| +000002b0 4c d4 5f f4 18 e7 b0 70 5f 78 e3 22 65 3b 84 e7 |L._....p_x."e;..| +000002c0 40 d7 cb b5 e3 8c 5d fa 77 cb 45 fa 57 c0 4c fd |@.....].w.E.W.L.| +000002d0 11 7c f1 80 fa 4c 51 d9 78 5d b6 cc 08 90 91 9a |.|...LQ.x]......| +000002e0 71 20 e3 50 ec 21 7e 0d 2d e5 97 12 4a 18 17 ab |q .P.!~.-...J...| +000002f0 a0 1f 74 75 71 6b 8b 81 ac 85 18 99 ad 75 88 4c |..tuqk.......u.L| +00000300 15 87 04 57 1e 78 10 13 4b 51 f2 e9 8a 76 17 77 |...W.x..KQ...v.w| +00000310 32 92 6c 12 6c db 2e ef c1 2d 18 64 e8 b1 62 79 |2.l.l....-.d..by| +00000320 4c 8a d0 23 9a ac 14 ab c3 9f d7 37 0c cb 57 29 |L..#.......7..W)| +00000330 bd 89 d8 32 17 03 03 00 99 40 69 b7 6b 35 af 37 |...2.....@i.k5.7| +00000340 fd 28 d7 52 34 fa 65 84 83 41 a8 cd d9 5d e7 68 |.(.R4.e..A...].h| +00000350 41 9b 39 7c f8 ef cf d8 8d 50 b9 2a 11 13 df f2 |A.9|.....P.*....| +00000360 3c b3 4c 4b 7d c5 a5 d6 cf f2 72 c8 ea 26 0b 90 |<.LK}.....r..&..| +00000370 42 5e b3 44 da a6 7d 81 13 0f f6 eb 4d c4 98 65 |B^.D..}.....M..e| +00000380 84 aa 47 bf ba b3 f5 57 3c 18 cd 8c b2 9d 3f eb |..G....W<.....?.| +00000390 0e 13 aa b2 ed 42 97 cd 3f f9 d0 b7 8c 1a 94 5c |.....B..?......\| +000003a0 63 c3 f8 45 be 91 61 c6 d9 01 bd 88 d7 fa 15 6d |c..E..a........m| +000003b0 8c 48 87 6a 10 eb 43 39 66 a2 a4 cd ef 15 db 4f |.H.j..C9f......O| +000003c0 0d da 85 48 81 af d1 60 4b bc b9 03 a9 c5 c0 7b |...H...`K......{| +000003d0 9a 60 17 03 03 00 35 9a 10 8d b7 6a 5c 8e 16 96 |.`....5....j\...| +000003e0 0a d3 2d 81 4f 3c 47 f5 bc f8 cd 92 c0 17 07 89 |..-.O>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 00 35 f5 7f 27 09 c2 |..........5..'..| -00000010 54 9d e7 a7 3b 14 b3 f2 a6 6d 27 5f 9b 79 04 17 |T...;....m'_.y..| -00000020 28 5c de 4f 67 cf a5 24 e4 d3 c5 e1 38 fa 7e e8 |(\.Og..$....8.~.| -00000030 97 03 7e 66 3b d0 6b e7 f8 7e 97 e0 db 6a da 79 |..~f;.k..~...j.y| -00000040 17 03 03 00 17 30 1a e2 fe 4a 7a 03 03 82 f6 05 |.....0...Jz.....| -00000050 e8 18 67 1d 14 ab 4f 3c 22 c6 45 f5 17 03 03 00 |..g...O<".E.....| -00000060 13 f8 8f 43 e7 74 3c a0 28 b2 71 5a 85 69 e5 86 |...C.t<.(.qZ.i..| -00000070 06 e3 4c 91 |..L.| +00000000 14 03 03 00 01 01 17 03 03 00 35 5e d8 a7 91 d2 |..........5^....| +00000010 39 b1 74 e8 a4 a2 02 97 c9 23 be a2 40 f8 94 39 |9.t......#..@..9| +00000020 4b e8 ed 35 6c 8e 23 ce da 32 90 93 50 f6 80 75 |K..5l.#..2..P..u| +00000030 43 91 9c 90 09 b5 bb 7d ab 56 53 0c a8 95 a5 c3 |C......}.VS.....| +00000040 17 03 03 00 17 7e 95 f6 cc 40 0f 64 9f 6b d6 63 |.....~...@.d.k.c| +00000050 29 28 6d 21 12 c4 70 6f dd 69 ad d1 17 03 03 00 |)(m!..po.i......| +00000060 13 8a b3 a5 7b 42 fe 41 be 86 57 03 16 d4 f1 25 |....{B.A..W....%| +00000070 95 8d 2b f7 |..+.| diff --git a/src/crypto/tls/testdata/Client-TLSv13-X25519-ECDHE b/src/crypto/tls/testdata/Client-TLSv13-X25519-ECDHE index 855f63de21..c10e6c9182 100644 --- a/src/crypto/tls/testdata/Client-TLSv13-X25519-ECDHE +++ b/src/crypto/tls/testdata/Client-TLSv13-X25519-ECDHE @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 f8 01 00 00 f4 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 16 01 00 01 12 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,84 +7,86 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 79 00 0b 00 02 01 00 ff 01 00 01 00 00 |...y............| +00000080 01 00 00 97 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 04 00 02 00 1d 00 0d 00 1a 00 18 08 04 |................| 000000b0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| -000000c0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| -000000d0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| -000000e0 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| -000000f0 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| +000000c0 06 03 02 01 02 03 00 32 00 1a 00 18 08 04 04 03 |.......2........| +000000d0 08 07 08 05 08 06 04 01 05 01 06 01 05 03 06 03 |................| +000000e0 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 02 03 |.....+..........| +000000f0 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d a3 47 |..3.&.$... /.}.G| +00000100 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af |.bC.(.._.).0....| +00000110 c4 cf c2 ed 90 99 5f 58 cb 3b 74 |......_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 6c f6 24 8a 4a |....z...v..l.$.J| -00000010 82 87 8f c9 9a a3 5a d2 4a 24 d3 52 c8 5d 52 95 |......Z.J$.R.]R.| -00000020 0f 12 e8 8e e6 0c a6 5d 60 de 3c 20 00 00 00 00 |.......]`.< ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 97 02 8a b6 20 |....z...v...... | +00000010 f7 b6 e4 eb 5b eb f8 c0 ea 29 ad 6a cb 1a 0a d7 |....[....).j....| +00000020 40 a5 e7 dd 1d 75 88 61 b4 92 2b 20 00 00 00 00 |@....u.a..+ ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 03 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 1b |..+.....3.$... .| -00000060 e6 5f 3d 83 17 1c a6 90 45 f9 00 d9 96 be 4a 58 |._=.....E.....JX| -00000070 ec 82 73 4d e6 8c 74 e9 80 bc 3a 48 1b 93 71 14 |..sM..t...:H..q.| -00000080 03 03 00 01 01 17 03 03 00 17 71 c1 fc 68 5e 33 |..........q..h^3| -00000090 54 8f 43 df 20 55 ac 3b e8 a4 ee 68 ff 88 7c 71 |T.C. U.;...h..|q| -000000a0 92 17 03 03 02 6d 2a 26 5c 45 13 5f 75 46 56 41 |.....m*&\E._uFVA| -000000b0 25 92 a1 6f cd 7b 01 e2 cb 76 81 4d 33 f0 9d d1 |%..o.{...v.M3...| -000000c0 0d db b1 90 1a a7 d9 a8 4a 79 b1 12 59 62 0d c8 |........Jy..Yb..| -000000d0 cc 92 16 26 27 3e 07 b6 8a 15 77 a8 f6 c3 02 e7 |...&'>....w.....| -000000e0 44 0d b5 d3 11 57 6b 81 15 7d 23 b3 91 82 21 3c |D....Wk..}#...!<| -000000f0 0a 0c ef d5 5b 96 5d 85 aa 3a 1e a6 7b fc 3a eb |....[.]..:..{.:.| -00000100 24 af 13 fa 7f 90 0a 83 b5 0a 0b d0 f7 0c 2d 99 |$.............-.| -00000110 75 9b 84 0c d8 dc 60 a3 62 ed 64 55 02 73 a1 74 |u.....`.b.dU.s.t| -00000120 c1 53 c6 97 a5 23 7c 19 c8 f7 1c 97 e9 e9 f8 ee |.S...#|.........| -00000130 4c 47 7e c4 5e 0f 03 fc 60 9e ba 47 ea a9 9b ef |LG~.^...`..G....| -00000140 9a 04 62 e3 db bf 30 d7 5a 1f 20 c9 4c 37 ff 0e |..b...0.Z. .L7..| -00000150 46 d9 ce 85 c5 47 16 43 9a 89 0b 97 44 7a be 09 |F....G.C....Dz..| -00000160 5d 03 a0 b1 1f a6 ca 78 0d fb f4 1a 6d 3a ec 40 |]......x....m:.@| -00000170 1e 58 fc 67 5e bb 69 a1 ae 1d 6d bc b4 80 b9 71 |.X.g^.i...m....q| -00000180 1a 11 12 35 6a 2a 0c dc b3 b5 4b 0a 06 a7 8b be |...5j*....K.....| -00000190 38 4b 70 32 d4 51 e3 99 5b 60 28 e7 9a 60 90 6b |8Kp2.Q..[`(..`.k| -000001a0 1f 3a 9b 4b 66 fd e6 76 b5 8c 29 c3 36 ae a8 81 |.:.Kf..v..).6...| -000001b0 7e 7c bf e7 46 7d 13 27 0d 38 75 f0 15 e1 64 93 |~|..F}.'.8u...d.| -000001c0 1e 26 bc a8 5d 95 60 a2 e5 42 7f 2f 08 a1 e8 d3 |.&..].`..B./....| -000001d0 79 e8 5e 1f 02 45 cc 05 ca 63 7b f2 d9 ad af ab |y.^..E...c{.....| -000001e0 5a 94 f0 16 e7 60 14 c2 3d 05 3f 8d bb 33 c1 ca |Z....`..=.?..3..| -000001f0 79 28 04 c7 20 07 c8 13 89 7a 11 a2 54 6d b8 d5 |y(.. ....z..Tm..| -00000200 e1 b7 b1 43 48 9b a9 b9 e8 e0 40 7e 5a 36 24 70 |...CH.....@~Z6$p| -00000210 42 9a 51 70 6e 22 8a 2b 4b 9d b0 58 ff ae a9 45 |B.Qpn".+K..X...E| -00000220 34 b2 8b c1 35 d8 65 a5 7e 1f 32 fd 51 21 79 00 |4...5.e.~.2.Q!y.| -00000230 79 20 f7 5f 8a e2 e0 b3 4a 78 3b 03 a8 03 b6 ef |y ._....Jx;.....| -00000240 b2 25 37 e9 f3 ce 22 f0 2b fc f8 dd be 50 10 22 |.%7...".+....P."| -00000250 0b fa fb 04 ab a7 33 07 48 2f ca ec 0d fe 19 75 |......3.H/.....u| -00000260 cc c5 3d 17 36 06 5c 07 08 15 df 36 6c 4f f4 73 |..=.6.\....6lO.s| -00000270 50 49 ff 47 ba 47 6d e1 bb 2d 8f 77 d5 44 a9 87 |PI.G.Gm..-.w.D..| -00000280 2a 05 12 52 bf 2b e2 4b 64 94 9c 89 bb 2c 65 cb |*..R.+.Kd....,e.| -00000290 59 2a f0 1a 15 b2 e3 6e 5a cc 48 b4 44 6c 44 07 |Y*.....nZ.H.DlD.| -000002a0 80 01 93 25 86 83 f2 8f 01 e6 ef 5e 9a 36 4e 7f |...%.......^.6N.| -000002b0 bc 27 0e 4d f0 67 3a de 29 b5 e9 6a 7f 4b b4 77 |.'.M.g:.)..j.K.w| -000002c0 9b e2 3b 73 c9 51 e5 a6 df 97 a7 02 fa f2 f7 db |..;s.Q..........| -000002d0 df 71 fb d1 ad 64 37 46 3e de 57 de 1d fc 8f 6e |.q...d7F>.W....n| -000002e0 bb 6f 58 3f 87 00 d1 a3 52 a5 35 12 17 83 19 a4 |.oX?....R.5.....| -000002f0 2b be 31 bd dc a6 62 ca c3 09 39 e1 cd 0b 64 44 |+.1...b...9...dD| -00000300 1a ef 65 26 f3 e5 31 fb 61 56 df d3 11 d9 cc 65 |..e&..1.aV.....e| -00000310 7f 8f ab 17 03 03 00 99 94 ce 37 3c e1 7f b1 f5 |..........7<....| -00000320 7e 2b 04 17 45 3d 38 40 1b 82 0e f7 22 ef 28 ce |~+..E=8@....".(.| -00000330 1a 69 33 a6 ad c6 1f ab 08 12 31 b4 c7 41 ac c5 |.i3.......1..A..| -00000340 b3 e5 4b 84 56 d9 0c 53 58 4c 8f 40 3a 34 66 d0 |..K.V..SXL.@:4f.| -00000350 c7 8f 9b b3 26 25 1f 68 fc 97 ba a7 de ac cf c5 |....&%.h........| -00000360 8b b3 26 99 68 6e ca e9 65 47 07 bd 38 15 f3 0c |..&.hn..eG..8...| -00000370 d0 14 8e 6d 89 a2 ad cd ad ef 00 54 07 5a 4b ef |...m.......T.ZK.| -00000380 02 ce b9 a1 b0 d0 d6 f7 bb e0 91 51 72 87 99 50 |...........Qr..P| -00000390 f4 68 4c 0e d8 fa 00 d4 dd bd 1d 2e 7b f6 e2 61 |.hL.........{..a| -000003a0 d3 a8 46 9c f7 dc 2a 04 be 3c 42 85 4f ad 59 20 |..F...*...={~.| +00000230 30 cd 8a 3b 9e 80 1b 5c cc 48 2d 92 37 b8 5d 23 |0..;...\.H-.7.]#| +00000240 8b 43 9e 1e 6d 60 04 7f 91 b1 7f 7d 4a ff 3f 5f |.C..m`.....}J.?_| +00000250 e8 e4 49 9e 48 04 69 20 5d e9 13 3a 61 23 fa 4e |..I.H.i ]..:a#.N| +00000260 31 f9 d6 3e cd fc 20 e2 14 d7 2d 47 63 7b e5 fd |1..>.. ...-Gc{..| +00000270 20 01 9c f4 b3 82 1f 56 60 f5 7c e2 2a 70 64 91 | ......V`.|.*pd.| +00000280 75 75 68 fb 61 08 72 83 fc 4f a0 75 3a 2d ff f8 |uuh.a.r..O.u:-..| +00000290 c9 1b 02 bf cf 84 fd 5e ab dd 01 28 de d9 d8 1c |.......^...(....| +000002a0 78 7e a0 66 35 43 d5 54 08 66 41 74 df 43 b1 23 |x~.f5C.T.fAt.C.#| +000002b0 f4 f1 3d 78 d0 d2 99 0d 99 c5 c1 f2 cf 86 74 29 |..=x..........t)| +000002c0 10 31 10 4e 56 aa 90 0b 39 1f 7c 7d 6f f7 39 6b |.1.NV...9.|}o.9k| +000002d0 9b 4e 3c 3e 52 2f 7e 6f 6e 55 b5 64 58 08 7d dd |.N<>R/~onU.dX.}.| +000002e0 3b 79 08 b3 30 49 17 28 a0 6e 76 b3 38 54 56 19 |;y..0I.(.nv.8TV.| +000002f0 f7 67 11 5f d5 54 c3 22 07 e8 83 c8 22 19 37 ab |.g._.T."....".7.| +00000300 8e 3a ed 07 47 02 b8 4f 03 6c ca e1 16 20 a0 b6 |.:..G..O.l... ..| +00000310 43 d9 39 17 03 03 00 99 26 fb 79 ee 89 6d e8 ce |C.9.....&.y..m..| +00000320 89 95 ec 7d a2 19 ab 24 b7 b5 49 00 de ae a3 29 |...}...$..I....)| +00000330 00 ce bf 8d 71 42 c2 dc ae 65 ed 84 a3 af 1b d9 |....qB...e......| +00000340 64 0a fa 49 b6 5e a9 64 bb 91 43 25 65 df 06 ee |d..I.^.d..C%e...| +00000350 90 a9 c9 48 99 c2 b6 0d 91 91 77 70 3b ca 58 a4 |...H......wp;.X.| +00000360 c7 e8 fd 01 67 7c b3 ea 8e b9 9d c5 4c cf 55 67 |....g|......L.Ug| +00000370 09 23 99 e7 2d ff 54 4b e4 56 d5 24 72 a9 1b 03 |.#..-.TK.V.$r...| +00000380 bc 4c d9 c8 37 f2 0b 62 88 4e 89 05 db 11 0f 3a |.L..7..b.N.....:| +00000390 9f 8b a7 4f a4 0a 89 d5 c8 df 11 06 af 73 71 38 |...O.........sq8| +000003a0 bd 2f 97 15 24 b6 54 ca bb 1c 3c e1 16 ad eb c6 |./..$.T...<.....| +000003b0 64 17 03 03 00 35 b8 1c a1 16 59 5c 46 6e 4c 3f |d....5....Y\FnL?| +000003c0 3c 79 d0 1f 4f 8a c8 49 49 6e 7e 53 de fb 43 99 |3-| +000003e0 3b 78 12 70 cc 3e cf f6 36 47 23 |;x.p.>..6G#| >>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 00 35 19 50 85 5d 08 |..........5.P.].| -00000010 c9 5e 25 05 37 ed cc 54 fe ba 86 3e 8a d4 e9 fd |.^%.7..T...>....| -00000020 66 54 6e a3 1f 8b 4f 95 cf 04 51 db 60 96 ae 78 |fTn...O...Q.`..x| -00000030 6b 7d 19 63 03 2a b6 e5 97 37 26 79 98 3f 85 52 |k}.c.*...7&y.?.R| -00000040 17 03 03 00 17 c9 80 91 3e 92 1e a7 9b 00 a3 01 |........>.......| -00000050 19 31 d0 6f 2e 69 0c 15 03 73 20 36 17 03 03 00 |.1.o.i...s 6....| -00000060 13 97 85 32 6f a2 9c 72 be ca 43 db 18 a7 98 b7 |...2o..r..C.....| -00000070 67 44 71 ce |gDq.| +00000000 14 03 03 00 01 01 17 03 03 00 35 59 5c b8 42 f1 |..........5Y\.B.| +00000010 bb fc 65 3e 0a 8b 1c 70 be 4b 39 8c ae 0d 91 e1 |..e>...p.K9.....| +00000020 82 b8 ad 51 1f f3 d4 06 13 33 96 71 27 96 1f f2 |...Q.....3.q'...| +00000030 dd 6f ef 94 9b bb 56 bf 8a 59 2b 92 c9 01 b7 72 |.o....V..Y+....r| +00000040 17 03 03 00 17 3a b4 c3 77 5b e6 98 a2 b4 3d f6 |.....:..w[....=.| +00000050 83 fb f4 f5 6e f5 5f 5a 1e 5b 96 4c 17 03 03 00 |....n._Z.[.L....| +00000060 13 3b 5f a0 57 f0 27 8d dd 6a 36 fc 4c 33 86 f6 |.;_.W.'..j6.L3..| +00000070 fe 8b 6f 5a |..oZ| diff --git a/src/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedAndECDSAGiven b/src/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedAndECDSAGiven index a957c26399..686011b0fa 100644 --- a/src/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedAndECDSAGiven +++ b/src/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedAndECDSAGiven @@ -1,180 +1,182 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 ca 01 00 00 c6 03 03 cd 87 c0 5e 7c |..............^|| -00000010 7b d7 c6 77 d9 21 6f 46 00 07 88 61 18 8c b9 d4 |{..w.!oF...a....| -00000020 ad 25 6a 9d 7e 54 cc 70 52 7c 0f 20 67 9b dd 18 |.%j.~T.pR|. g...| -00000030 84 bb 23 7d 53 10 b9 6c 01 ef 30 6f 79 7d 64 5c |..#}S..l..0oy}d\| -00000040 79 3e c1 11 8f 75 cf 83 02 d3 e8 d9 00 04 13 01 |y>...u..........| +00000000 16 03 01 00 ca 01 00 00 c6 03 03 af 29 1d da b2 |............)...| +00000010 1b 14 96 f9 c9 6a 4d 28 cc 1d 9f c4 95 d0 a6 16 |.....jM(........| +00000020 1f 83 3d d6 17 80 5e 4f 9f d9 87 20 cb 34 16 64 |..=...^O... .4.d| +00000030 39 bb 98 16 55 43 38 3a a2 b4 e0 38 02 04 ee 6b |9...UC8:...8...k| +00000040 a6 4e b9 f8 83 09 aa 7b f5 de e0 79 00 04 13 01 |.N.....{...y....| 00000050 00 ff 01 00 00 79 00 0b 00 04 03 00 01 02 00 0a |.....y..........| 00000060 00 0c 00 0a 00 1d 00 17 00 1e 00 19 00 18 00 16 |................| 00000070 00 00 00 17 00 00 00 0d 00 1e 00 1c 04 03 05 03 |................| 00000080 06 03 08 07 08 08 08 09 08 0a 08 0b 08 04 08 05 |................| 00000090 08 06 04 01 05 01 06 01 00 2b 00 03 02 03 04 00 |.........+......| -000000a0 2d 00 02 01 01 00 33 00 26 00 24 00 1d 00 20 d7 |-.....3.&.$... .| -000000b0 18 8a c1 a5 4d cb 7c f2 7d e4 cf 7a c6 92 28 ee |....M.|.}..z..(.| -000000c0 a6 b4 79 65 bf 2b fb 71 2e a5 2a 58 da 6f 5e |..ye.+.q..*X.o^| +000000a0 2d 00 02 01 01 00 33 00 26 00 24 00 1d 00 20 ee |-.....3.&.$... .| +000000b0 90 71 47 4a 18 b1 78 c4 9a 7d 65 5d 4e b3 88 96 |.qGJ..x..}e]N...| +000000c0 6c b1 bc 2d a3 9d 2d 8e a2 7a 7b eb 94 11 4e |l..-..-..z{...N| >>> Flow 2 (server to client) 00000000 16 03 03 00 7a 02 00 00 76 03 03 00 00 00 00 00 |....z...v.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| -00000020 00 00 00 00 00 00 00 00 00 00 00 20 67 9b dd 18 |........... g...| -00000030 84 bb 23 7d 53 10 b9 6c 01 ef 30 6f 79 7d 64 5c |..#}S..l..0oy}d\| -00000040 79 3e c1 11 8f 75 cf 83 02 d3 e8 d9 13 01 00 00 |y>...u..........| +00000020 00 00 00 00 00 00 00 00 00 00 00 20 cb 34 16 64 |........... .4.d| +00000030 39 bb 98 16 55 43 38 3a a2 b4 e0 38 02 04 ee 6b |9...UC8:...8...k| +00000040 a6 4e b9 f8 83 09 aa 7b f5 de e0 79 13 01 00 00 |.N.....{...y....| 00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 2f |..+.....3.$... /| 00000060 e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 |.}.G.bC.(.._.).0| 00000070 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 14 |.........._X.;t.| -00000080 03 03 00 01 01 17 03 03 00 17 4d 4b 33 12 cb ed |..........MK3...| -00000090 f7 a2 55 e7 a6 ab 5b b1 55 16 30 c3 ee e1 5c 14 |..U...[.U.0...\.| -000000a0 b8 17 03 03 00 3e 30 04 2a e5 e8 b8 f3 25 9b a9 |.....>0.*....%..| -000000b0 92 e6 eb d9 fb b6 62 64 e2 de 9d c0 48 68 b3 d7 |......bd....Hh..| -000000c0 0f 8b ad 21 69 c7 f0 d7 96 ff 6a 24 2f 01 c9 e7 |...!i.....j$/...| -000000d0 e9 06 4b 93 94 67 97 44 46 c4 69 2f 0e aa e0 9b |..K..g.DF.i/....| -000000e0 8d 19 f2 2c 17 03 03 02 6d a1 fb 2b 5f 10 e9 62 |...,....m..+_..b| -000000f0 8b ad c1 33 58 f6 a7 89 78 a6 dd 64 ff c2 c7 57 |...3X...x..d...W| -00000100 80 9f 59 be 2d bd f5 b9 8a 6b d9 22 1c fe 10 ea |..Y.-....k."....| -00000110 c4 a5 3e 45 d9 d7 12 cf 48 d5 26 18 49 50 80 69 |..>E....H.&.IP.i| -00000120 44 28 03 3b b6 f8 0a 0e b4 cb 5e 5b 57 0f c0 2f |D(.;......^[W../| -00000130 59 4f 13 e3 9c 02 18 b1 ce 94 78 05 18 64 73 c6 |YO........x..ds.| -00000140 05 89 d1 54 37 18 ea 09 61 08 c5 6a 54 f6 48 44 |...T7...a..jT.HD| -00000150 40 63 6a 53 b9 41 5f 4f 8e 05 e7 31 7b 08 d0 67 |@cjS.A_O...1{..g| -00000160 8e bf 56 c4 56 0a 82 b2 74 6a 89 dd b4 f7 3c 0b |..V.V...tj....<.| -00000170 3c fd 21 1f 00 72 1d 4f be b1 50 44 9a 14 67 7d |<.!..r.O..PD..g}| -00000180 a9 93 30 a2 4e ea 61 c9 fd 44 de 5c 88 36 59 a2 |..0.N.a..D.\.6Y.| -00000190 e3 63 b1 9c ea dd 47 0a ca 63 9e 50 9d ca 57 12 |.c....G..c.P..W.| -000001a0 05 9b fc f1 26 a2 5e 18 9b 32 00 38 1f ce a6 58 |....&.^..2.8...X| -000001b0 58 0f 61 e2 44 c2 89 34 cc f4 fd 9a dc 1a 67 a6 |X.a.D..4......g.| -000001c0 e8 b1 fc 9f dc bd 0b 21 01 49 0d 9b e1 40 00 f6 |.......!.I...@..| -000001d0 33 1a 57 c5 84 c1 98 3d 7f 53 d3 4d 2e 04 5e 40 |3.W....=.S.M..^@| -000001e0 7d 38 80 66 bc c5 40 d9 14 f6 83 26 82 9b c8 14 |}8.f..@....&....| -000001f0 61 aa 6c 1c a1 53 81 f8 b0 7f 06 92 5c af be 57 |a.l..S......\..W| -00000200 1a 54 97 02 27 31 1f 58 52 cf 39 2f 82 26 ae 6c |.T..'1.XR.9/.&.l| -00000210 86 d9 46 cd 38 16 e2 67 62 82 2e 53 7a 86 15 30 |..F.8..gb..Sz..0| -00000220 08 0c a7 e2 85 18 55 79 16 44 4d 50 9e b5 e7 e1 |......Uy.DMP....| -00000230 2c 1e 1d eb e1 83 f3 9e d0 7b 45 b8 1e 51 d9 79 |,........{E..Q.y| -00000240 91 7a b8 90 bc 18 94 69 ad 94 08 e5 23 de 2b fa |.z.....i....#.+.| -00000250 8d ef 23 4c 40 df e1 43 0d 71 51 ef 88 a9 bb 89 |..#L@..C.qQ.....| -00000260 59 87 9c db e1 d4 31 94 a7 f5 af 7d 51 be e9 d0 |Y.....1....}Q...| -00000270 f2 49 12 72 47 65 a0 5b 7d 9f 91 85 f7 e8 d6 90 |.I.rGe.[}.......| -00000280 b3 4d f3 5d 6a 51 96 a9 81 84 72 95 47 e8 0a f5 |.M.]jQ....r.G...| -00000290 8d d6 2a 64 c2 34 1b d8 f0 f9 62 0c be 17 12 9b |..*d.4....b.....| -000002a0 40 a2 c3 8a eb 30 20 04 e4 69 a3 27 90 a6 1a 4f |@....0 ..i.'...O| -000002b0 3f 95 65 e6 9e c7 ad 03 e1 d2 34 d2 84 d5 f6 8c |?.e.......4.....| -000002c0 1e 8a aa e4 75 c0 7f 1d 79 4e 70 10 4e 18 9c eb |....u...yNp.N...| -000002d0 17 76 0c 66 6c 82 72 41 83 98 fc 41 41 4a 07 03 |.v.fl.rA...AAJ..| -000002e0 a6 16 51 0d 60 96 43 0a 97 27 72 42 31 70 6b 02 |..Q.`.C..'rB1pk.| -000002f0 e4 58 b0 15 4f 2e a3 5a ed dc 82 99 82 47 d5 6c |.X..O..Z.....G.l| -00000300 4b b4 68 70 f5 a3 31 36 52 8d af ab d1 ac f6 28 |K.hp..16R......(| -00000310 2e 18 bc 4f 1b 7c a8 ad c3 1f 2f 70 a6 c4 39 c6 |...O.|..../p..9.| -00000320 ae 0f 2e b7 58 c9 c0 2a 4b 34 c2 42 12 e3 5d ed |....X..*K4.B..].| -00000330 d1 ac e1 f1 14 66 d4 09 1c a0 99 82 d3 04 13 2a |.....f.........*| -00000340 a4 20 c4 e7 38 1e 0a 02 4e 96 02 71 9d f6 f7 86 |. ..8...N..q....| -00000350 f7 30 1a 5d 65 4f 17 03 03 00 99 3f 3d 4a 91 ae |.0.]eO.....?=J..| -00000360 0f 80 52 0f 1c d1 a2 75 83 e5 08 d8 1f 9d c8 24 |..R....u.......$| -00000370 fc 85 ba 76 1f 9e 1e 35 a3 dd 45 83 8e b9 55 a6 |...v...5..E...U.| -00000380 3b 26 ae 82 4f 1f 2e 8f e5 25 fb d6 22 0f 55 d6 |;&..O....%..".U.| -00000390 ac fa 93 6d d1 d3 7c 41 af c0 15 5c 8b e1 64 c1 |...m..|A...\..d.| -000003a0 3f a2 c8 9e 48 f5 63 61 3a df 13 6e f4 e3 60 9d |?...H.ca:..n..`.| -000003b0 bc 52 bd b7 94 e9 4b 7a 65 97 28 ac 39 6a 77 a7 |.R....Kze.(.9jw.| -000003c0 86 1d b4 6b e4 15 c4 bd 2b 41 b6 06 ac ff b5 9f |...k....+A......| -000003d0 17 47 b4 a7 1d 69 8b 6e 82 eb f7 39 03 95 10 dd |.G...i.n...9....| -000003e0 18 78 50 58 c8 78 80 ae 45 dc 54 0f 33 cb 4a d2 |.xPX.x..E.T.3.J.| -000003f0 90 00 12 d4 17 03 03 00 35 76 fa bf ab 3f c3 3d |........5v...?.=| -00000400 dd 78 65 cc 35 1e 24 35 4f 7d 3c e4 bb 73 d8 19 |.xe.5.$5O}<..s..| -00000410 56 94 f4 ce ad bc 1d 6a fb 1b 75 01 93 36 2b 44 |V......j..u..6+D| -00000420 3a 3c a3 9b 7c 57 6f 98 24 a3 64 b1 13 47 |:<..|Wo.$.d..G| +00000080 03 03 00 01 01 17 03 03 00 17 c3 9d 29 f6 f8 18 |............)...| +00000090 b9 39 9f 93 b2 f5 ab 30 41 d6 95 40 21 ba f8 8e |.9.....0A..@!...| +000000a0 25 17 03 03 00 52 08 a9 80 f3 24 c6 a6 b6 aa bc |%....R....$.....| +000000b0 30 c2 f7 dd e6 47 10 88 db 0c dd 43 ab 78 bd 16 |0....G.....C.x..| +000000c0 82 7b 4f 26 9c 0e 47 6b 75 79 4e da 8e 43 8b e6 |.{O&..GkuyN..C..| +000000d0 6a 25 0d 47 50 bf 26 c8 16 70 41 1c b2 b5 cd d1 |j%.GP.&..pA.....| +000000e0 34 9b 26 13 92 45 b5 f5 03 04 cf 55 ee ff c8 e6 |4.&..E.....U....| +000000f0 92 9e 04 d9 c5 f5 fd 0f 17 03 03 02 6d f6 33 26 |............m.3&| +00000100 26 da 41 f2 4e 6e ed 41 23 44 29 5f 43 38 7d 24 |&.A.Nn.A#D)_C8}$| +00000110 f7 a1 01 d4 23 a5 bf 85 db 39 86 27 ff 9c e9 ac |....#....9.'....| +00000120 6c 0e 0e 51 c7 95 8d aa f6 59 53 0a 89 d4 e7 2d |l..Q.....YS....-| +00000130 6e f8 66 7d e5 b2 ac e4 7b b2 91 2b 31 c9 2b 4e |n.f}....{..+1.+N| +00000140 92 8f a9 c8 79 21 9a 8f a2 79 29 47 c4 ef ab 80 |....y!...y)G....| +00000150 25 02 d6 8c ae 32 3b 1a 55 0e f9 4a ba 92 b9 61 |%....2;.U..J...a| +00000160 86 39 04 0a a7 d6 eb 95 50 4f 86 1b c9 d1 1d 1e |.9......PO......| +00000170 61 06 43 00 c2 2a a9 e2 06 ff ce 4a fd 6f d0 19 |a.C..*.....J.o..| +00000180 2a 0e ec 14 86 19 9c bc 1d 96 e1 b1 00 b2 19 c4 |*...............| +00000190 15 64 4c 33 54 89 fc 15 01 90 13 3b ff 99 e6 23 |.dL3T......;...#| +000001a0 19 38 4f 67 97 ee ab b3 9f ca 1f 18 7d 45 ef 87 |.8Og........}E..| +000001b0 42 7b 57 51 d0 c3 43 50 35 a3 33 ff 19 df 54 8e |B{WQ..CP5.3...T.| +000001c0 e9 98 2f 46 93 87 b4 b1 c2 73 04 4f 06 5b 3c 0a |../F.....s.O.[<.| +000001d0 c3 87 6c 68 68 b4 61 a2 33 bd 11 06 93 19 fb 05 |..lhh.a.3.......| +000001e0 c3 e6 3f 14 e5 a6 6d ec 48 56 a6 37 60 81 a4 cd |..?...m.HV.7`...| +000001f0 89 b5 4e c8 dc 99 79 66 5e 40 44 de 4a 22 9a ce |..N...yf^@D.J"..| +00000200 3d c4 a0 17 03 45 e6 28 70 27 f5 24 e1 81 7a 5f |=....E.(p'.$..z_| +00000210 5d 6e 6c bc 28 c3 fb b1 8b 18 fa 3d 9d f3 c3 a5 |]nl.(......=....| +00000220 f0 41 7a 0d 87 c1 70 77 d3 3a fa ef 2b 11 9b 61 |.Az...pw.:..+..a| +00000230 12 f8 d1 25 73 bc 79 bf ee 9a 5e e0 3b fb 06 da |...%s.y...^.;...| +00000240 7e d6 08 aa 13 73 8a 8c 97 d7 5a e4 dc 88 51 60 |~....s....Z...Q`| +00000250 8c 61 51 65 f6 d0 4e 7d b0 b1 23 2c 69 77 20 fe |.aQe..N}..#,iw .| +00000260 d1 ff 13 57 d8 c5 58 1f 3c e9 86 f4 3a 45 1a 9c |...W..X.<...:E..| +00000270 c2 e0 4d da 67 1b 81 62 bf 07 de a6 ea 74 81 e3 |..M.g..b.....t..| +00000280 ba 1b 1f bf b0 d3 d3 08 c0 23 5f 05 d5 1f 41 51 |.........#_...AQ| +00000290 f2 11 2e 36 ed 00 f8 b5 ea f1 4c 0b b8 d0 a3 cc |...6......L.....| +000002a0 c6 a7 2a ee 1f 6c 6b 33 0d 38 5b 5c 6e f4 53 d2 |..*..lk3.8[\n.S.| +000002b0 6e 90 5b ce 44 e7 f1 50 1e 12 21 76 35 d1 2f 49 |n.[.D..P..!v5./I| +000002c0 a1 27 66 00 93 27 27 34 5d e5 ed 4b 6f 7e 3d e3 |.'f..''4]..Ko~=.| +000002d0 78 de 2f 48 9f 4c 36 a7 5d 62 98 1e 2c ee 82 3c |x./H.L6.]b..,..<| +000002e0 18 17 2d 80 f4 a2 ac e9 a6 c8 2c b9 92 d1 9e 2b |..-.......,....+| +000002f0 5f 3e 33 56 03 b5 76 51 ea c7 af 1c 42 8e 0e 65 |_>3V..vQ....B..e| +00000300 f7 0f ad 36 9f fe b5 a0 06 31 f0 89 02 b4 bf c3 |...6.....1......| +00000310 8e 2f 52 4d 97 99 dd 95 0f c4 32 9e 81 55 d1 2a |./RM......2..U.*| +00000320 05 ff b5 7a 02 0f 6f 1b ef f1 de 48 dc a8 f8 44 |...z..o....H...D| +00000330 35 8c eb df 6b 78 cd 89 75 ca ef 31 ba 8f b8 ff |5...kx..u..1....| +00000340 a3 74 39 ce 42 a0 01 8b db 68 34 21 0a bf 84 fd |.t9.B....h4!....| +00000350 5f 28 87 d4 09 b2 91 c2 f3 1f b8 39 da 2b 55 3c |_(.........9.+U<| +00000360 46 a2 fa 3d 65 eb 41 0c 37 c8 17 03 03 00 99 e8 |F..=e.A.7.......| +00000370 25 eb 99 2f 80 e2 09 ed 2f b9 78 90 7c dc e2 4a |%../..../.x.|..J| +00000380 78 19 49 46 a8 e7 82 a0 85 84 71 da 80 fb d2 5d |x.IF......q....]| +00000390 28 c4 69 cf ac 1c bc 1e ba 90 5c 0a ec dd 31 5c |(.i.......\...1\| +000003a0 87 d0 4f 31 3f 62 cd 91 1e 99 a5 08 c6 de 6c 75 |..O1?b........lu| +000003b0 91 be 31 83 12 5b fd 5a eb 96 ae 70 9c 06 c9 ee |..1..[.Z...p....| +000003c0 63 e9 3c a0 5b 9c 55 cb cd 9d a2 31 33 17 92 fa |c.<.[.U....13...| +000003d0 dc 34 20 43 71 92 8b 16 dd 1c 29 f5 ec a2 e4 ad |.4 Cq.....).....| +000003e0 d6 21 27 37 32 0c 7b f1 60 7f 58 aa fc d6 ae f3 |.!'72.{.`.X.....| +000003f0 c9 7b 5f 59 39 cf 79 ab 5b a3 7e ea 13 72 51 9f |.{_Y9.y.[.~..rQ.| +00000400 a9 c5 fc fb c0 da 39 2a 17 03 03 00 35 b7 6d ed |......9*....5.m.| +00000410 8d d3 c6 09 fd 9b 6b be 6e bc 01 64 3b a1 4e 2d |......k.n..d;.N-| +00000420 3d 85 e3 5b 4b 7b 44 49 81 fd c8 d9 07 fe e5 53 |=..[K{DI.......S| +00000430 ab 5f a3 64 f6 be 22 79 80 52 f0 ee 3c 1e 4e 65 |._.d.."y.R..<.Ne| +00000440 0e e3 |..| >>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 02 1e e0 29 6d d1 38 |............)m.8| -00000010 a6 03 d7 fc 2b df a4 a4 d0 ae 87 01 b8 82 5d eb |....+.........].| -00000020 3c 25 3e a1 33 89 b5 05 eb bc 02 0f ad 84 f0 2b |<%>.3..........+| -00000030 5f 14 af 0d f8 f1 08 e3 ca c1 8e ad 4b a5 a0 09 |_...........K...| -00000040 b8 a0 4f bf e4 0f 93 a9 4a 35 35 26 22 d7 04 03 |..O.....J55&"...| -00000050 70 95 4f 80 df d4 47 5b 21 14 27 d6 17 ea 32 6e |p.O...G[!.'...2n| -00000060 ea 3a ca 31 7c f2 d1 46 a2 ef 47 b9 16 d6 18 d5 |.:.1|..F..G.....| -00000070 17 35 71 9d 14 37 63 cd e1 c6 ff 3d ec a5 d8 53 |.5q..7c....=...S| -00000080 48 d5 d8 0b 75 39 c1 d2 66 ad 97 4e 5f eb c3 c7 |H...u9..f..N_...| -00000090 e0 77 95 fd 16 84 e2 a3 6a f2 a8 88 5e 4c 86 be |.w......j...^L..| -000000a0 81 a5 f2 6b 12 86 63 f1 4f a6 8d 63 7c 07 0f 8d |...k..c.O..c|...| -000000b0 53 d5 d4 00 c7 b7 2a ef b2 1d 07 4e 43 d6 25 35 |S.....*....NC.%5| -000000c0 c9 b1 fa 91 d1 f7 87 c6 98 c7 e7 c2 c3 7d 42 09 |.............}B.| -000000d0 e5 3c 50 83 1b 20 ef ec e4 ac 2e f2 3e 03 73 52 |..sR| -000000e0 2e 1d 20 cf e2 8d 15 c3 c7 a6 2f 68 b5 8e 5f bc |.. ......./h.._.| -000000f0 c5 73 61 ff 52 3c b0 7b 47 82 47 a0 73 f8 1c ab |.sa.R<.{G.G.s...| -00000100 4d ea 15 fa 94 e0 7f 70 c1 c8 9c 55 f0 96 38 42 |M......p...U..8B| -00000110 76 d4 26 6d a7 73 11 59 43 19 2f 49 70 a9 18 1c |v.&m.s.YC./Ip...| -00000120 12 9e ee d3 eb ca 1c c0 3b e1 99 e3 c2 25 de 39 |........;....%.9| -00000130 1a 15 e0 d7 20 9d 1b 95 74 8c ee 96 7b 5e de 13 |.... ...t...{^..| -00000140 99 56 54 a2 31 7b e9 96 02 9e 86 7b 15 9d c6 3e |.VT.1{.....{...>| -00000150 24 a5 19 e5 8e de 85 97 05 68 4f 39 d1 49 05 c9 |$........hO9.I..| -00000160 7a 54 90 29 e7 93 ec 8e 6f cc 73 73 82 7d 72 8d |zT.)....o.ss.}r.| -00000170 4a 85 29 7f a5 53 13 26 16 b2 fa c3 ce 1f 8b ae |J.)..S.&........| -00000180 e6 60 8c 2d b0 64 66 d4 29 7c b5 2d 1d 11 c5 09 |.`.-.df.)|.-....| -00000190 bb a5 44 c6 c8 af e6 f1 d5 f8 d9 45 97 64 7f 03 |..D........E.d..| -000001a0 02 f7 f5 9f cb 31 1e 89 e4 5d a0 e9 34 db be 28 |.....1...]..4..(| -000001b0 51 15 68 54 01 7c e5 1d b4 05 d2 d6 24 ca 10 69 |Q.hT.|......$..i| -000001c0 31 bf 8b 7a ee d9 bf e1 2a d4 7c c8 e8 79 ca dd |1..z....*.|..y..| -000001d0 0f 73 09 c8 cf 97 28 78 04 5b 04 51 44 c4 5f d1 |.s....(x.[.QD._.| -000001e0 dc da 4f f5 d9 5c 9c b1 ea f8 1b f7 43 90 c0 c0 |..O..\......C...| -000001f0 fd 82 56 e3 71 15 18 5e 7e 5c 61 5e b3 80 c1 1c |..V.q..^~\a^....| -00000200 22 92 32 67 23 f6 3b 74 e4 20 4e 1f fb f8 89 55 |".2g#.;t. N....U| -00000210 e7 3c 18 30 24 77 7c 33 5c 89 91 60 65 14 06 9e |.<.0$w|3\..`e...| -00000220 e2 6d f0 07 84 4b b4 14 e8 17 03 03 00 a3 a7 e1 |.m...K..........| -00000230 f7 26 48 56 da 6d ef a5 f4 5f 19 52 37 9e e7 6d |.&HV.m..._.R7..m| -00000240 28 07 70 ee 1e de 85 2b 7a 2d bf eb 48 06 f5 d4 |(.p....+z-..H...| -00000250 ea 4d 83 86 59 d4 14 4f 46 bc 17 89 f1 f5 37 0e |.M..Y..OF.....7.| -00000260 84 60 6e ba 73 d7 c1 bc 6f d7 aa cf f0 36 96 a2 |.`n.s...o....6..| -00000270 83 60 81 6f 48 6c 9d 87 e5 b6 5e 77 ab c5 e3 cb |.`.oHl....^w....| -00000280 8e 55 94 dc 94 f3 8a ce cb f7 b4 d5 33 55 df 88 |.U..........3U..| -00000290 22 44 04 ee 4e f5 30 e7 30 94 dc 95 2d 97 2c e4 |"D..N.0.0...-.,.| -000002a0 34 58 4d 38 9e 25 61 96 c1 37 66 34 2b be ee e6 |4XM8.%a..7f4+...| -000002b0 ee 39 73 89 a3 aa 1b 0a 5a bf 44 23 4e 19 5c c4 |.9s.....Z.D#N.\.| -000002c0 3f 27 47 5c 40 67 6c 50 b8 3f 7c c9 97 f0 55 02 |?'G\@glP.?|...U.| -000002d0 16 17 03 03 00 35 82 8b 0d 4e 87 3c c6 bc 41 8b |.....5...N.<..A.| -000002e0 ec ab 71 9d 57 7b e6 22 e4 87 82 61 5d f8 69 31 |..q.W{."...a].i1| -000002f0 8a 2c be 2c d8 4d 2f dc 9a 91 31 7a ab d8 a4 0e |.,.,.M/...1z....| -00000300 ba cb fc ef 17 a4 7c 87 ca 13 bb 17 03 03 00 13 |......|.........| -00000310 3b d0 da 9f d4 be fa 59 7a 30 8b 7e 8e a0 99 c0 |;......Yz0.~....| -00000320 c2 36 f3 |.6.| +00000000 14 03 03 00 01 01 17 03 03 02 1e a8 48 8d 47 f6 |............H.G.| +00000010 3d d8 59 5b 26 9e bd fc d1 15 7c e1 37 1b db 3c |=.Y[&.....|.7..<| +00000020 e4 02 98 fd aa cc a6 45 97 6e c5 18 4e 45 8e d6 |.......E.n..NE..| +00000030 84 7a b5 e4 da 8b 17 34 e5 fb 21 3c f6 02 c2 5c |.z.....4..!<...\| +00000040 ea 57 ea 16 67 4a 6d b2 0e 5a 39 f8 6b 11 84 bd |.W..gJm..Z9.k...| +00000050 43 80 03 40 5e d2 d2 54 2e d1 38 bc 9a 16 4f 21 |C..@^..T..8...O!| +00000060 0e 07 38 b5 80 21 16 c6 a1 bb 23 79 a6 df ef 27 |..8..!....#y...'| +00000070 dc 30 3c 4a 53 b1 5c 54 a7 fb ff 73 e2 12 ab 90 |.0..*..`.d~q| +000001b0 45 26 b8 91 26 cc d6 bf d5 4d 26 3f 4f c8 73 99 |E&..&....M&?O.s.| +000001c0 a7 50 9d 14 09 b6 07 1a af aa 9b 02 31 b2 c6 22 |.P..........1.."| +000001d0 ca 3e e0 2f 27 87 27 2e 96 f4 b4 ba c6 01 77 d3 |.>./'.'.......w.| +000001e0 52 09 ea 79 9b ee b4 6a 41 29 b1 de de 74 6b b2 |R..y...jA)...tk.| +000001f0 11 b1 58 90 5c 6a 0d b5 51 4b 2e 1b 3e e6 f4 17 |..X.\j..QK..>...| +00000200 8e 8a 1d 1e c8 bd 55 3a fc f4 90 73 14 5f 63 1b |......U:...s._c.| +00000210 22 f0 81 fd 70 05 ca b2 fd 90 3c 9d 2e 73 d3 8c |"...p.....<..s..| +00000220 f0 0a 59 9e 46 fe 8c e2 22 17 03 03 00 a4 78 2b |..Y.F...".....x+| +00000230 ec c5 5e 71 85 c6 e5 5d 75 f3 b5 3d 55 de 1c f9 |..^q...]u..=U...| +00000240 06 92 be df ef 77 31 4b f3 13 b8 c7 7a 68 ec 1b |.....w1K....zh..| +00000250 e2 7c c0 ff b5 6f c2 62 bd 34 23 fd 6a 39 c7 ef |.|...o.b.4#.j9..| +00000260 91 47 77 7e 32 2e a9 b2 85 ae 01 3e 61 43 8a 93 |.Gw~2......>aC..| +00000270 72 14 e1 b7 a5 14 4b ca 6e cb 4d e7 a3 cd 74 98 |r.....K.n.M...t.| +00000280 4e 08 a4 d4 34 ea 73 17 4b 20 8b 40 03 10 a0 33 |N...4.s.K .@...3| +00000290 c9 2f c0 4c 3b a2 2c 61 3c ab ec e3 c0 e8 e2 d6 |./.L;.,a<.......| +000002a0 a0 85 fa 26 26 a9 65 dc 70 5b 8f b7 3f 9e b3 fb |...&&.e.p[..?...| +000002b0 44 36 62 79 75 af ef 94 05 6b d2 44 07 51 ae 91 |D6byu....k.D.Q..| +000002c0 ea e3 e7 d2 f4 2f 19 17 38 aa 1c ae cb 88 db 0b |...../..8.......| +000002d0 66 5a 17 03 03 00 35 6d d9 23 d1 3c c3 25 7b 5d |fZ....5m.#.<.%{]| +000002e0 8a 1a 41 00 00 f8 0c a7 3e 53 4e e5 f6 cb 11 3f |..A.....>SN....?| +000002f0 9c 66 62 80 98 6c 55 19 b1 6f 00 5d 46 93 d2 0b |.fb..lU..o.]F...| +00000300 79 58 1c d6 d7 f9 fc fb 38 c5 32 63 17 03 03 00 |yX......8.2c....| +00000310 13 72 a9 fd 60 5c cf 68 b3 32 15 04 33 1c e1 5f |.r..`\.h.2..3.._| +00000320 11 11 9e 8c |....| >>> Flow 4 (server to client) -00000000 17 03 03 02 90 a2 a0 e4 83 63 ad 8d d5 45 25 dc |.........c...E%.| -00000010 41 02 31 28 8d b0 87 85 66 b8 9c 36 f3 1f 97 87 |A.1(....f..6....| -00000020 8c c9 e6 b4 67 1e 42 ab 84 c4 eb 0a 41 b1 0f 50 |....g.B.....A..P| -00000030 25 c3 7e 69 20 cf 8a d0 56 79 61 e3 e1 5b cc a4 |%.~i ...Vya..[..| -00000040 24 5a c7 2d 3b 17 33 92 59 6c 7e 29 a9 a2 2c 73 |$Z.-;.3.Yl~)..,s| -00000050 3e b1 65 32 3d 6a 2b 61 5d 76 c4 66 0e 4f f1 da |>.e2=j+a]v.f.O..| -00000060 dd d3 7e 29 3d f5 42 99 9e 04 60 a4 9a a1 c0 f7 |..~)=.B...`.....| -00000070 54 4e d5 58 73 85 02 83 38 ba 4e 93 9a 69 68 07 |TN.Xs...8.N..ih.| -00000080 71 c9 a7 e4 83 51 4c 11 21 26 b2 dd ad 4b 2a ef |q....QL.!&...K*.| -00000090 23 9b b0 f6 d6 96 9f 99 1f 69 fe 35 28 86 49 bc |#........i.5(.I.| -000000a0 ec 97 11 4d 4e b7 c1 c2 da 6c ae c7 40 b9 2a 1f |...MN....l..@.*.| -000000b0 ff 9d 9d ea 90 b9 61 6f 76 ae fe 55 70 f6 ee 54 |......aov..Up..T| -000000c0 54 62 6d 19 9a fc 40 16 e5 c2 e2 3e d1 68 c6 09 |Tbm...@....>.h..| -000000d0 be 54 64 25 8a a0 2b e6 b3 14 7e 74 17 91 f0 de |.Td%..+...~t....| -000000e0 87 e8 3c 3e 58 8d 1b b2 4e 2d 7d c1 f8 aa 16 ca |..<>X...N-}.....| -000000f0 2a 3e 8f aa 52 14 e4 f2 2a b9 6e 62 46 ab ed 3a |*>..R...*.nbF..:| -00000100 ff a1 51 53 92 7a 78 c4 ed 9d fd 1f b4 62 2e e7 |..QS.zx......b..| -00000110 cc 9d 09 fa 06 2e 9e 55 e5 98 9e b8 be e9 12 94 |.......U........| -00000120 33 58 6b be 71 a1 4f f8 a0 83 85 f8 7e b4 28 a7 |3Xk.q.O.....~.(.| -00000130 ee 1b ac 3c 46 b6 ac 60 af 5d cc b0 a8 2c 3f 95 |.....Z.| -00000210 6b 5c d2 4d b2 20 35 63 9e 83 c0 7e 83 60 46 57 |k\.M. 5c...~.`FW| -00000220 c0 80 0d d7 b9 9f 14 c0 58 2d 48 2a cc 8c 1d 32 |........X-H*...2| -00000230 2c 34 ec 10 f2 34 b4 28 e1 0e 83 38 c4 2e 5a 09 |,4...4.(...8..Z.| -00000240 ff e6 3f d3 9a 32 8e 33 9e 31 18 e5 1d 6b 97 12 |..?..2.3.1...k..| -00000250 9b 93 84 86 62 8a 0a 8a ab 8d 37 68 af a1 ec 8e |....b.....7h....| -00000260 38 c8 47 ef 10 f8 64 7c e1 13 0a 33 eb c2 4b bf |8.G...d|...3..K.| -00000270 47 49 6d 93 3c c9 44 aa 74 67 a9 93 dd de 66 47 |GIm.<.D.tg....fG| -00000280 1e b3 55 47 b1 16 88 68 82 24 d6 b8 81 b0 5a b6 |..UG...h.$....Z.| -00000290 27 7a f8 0b 5c 17 03 03 00 1e a5 9b 8c d2 3e 96 |'z..\.........>.| -000002a0 f3 49 7a ed d9 fc 33 62 15 12 43 76 11 f9 dc fc |.Iz...3b..Cv....| -000002b0 ea d2 d7 87 22 6f 9e 3d 17 03 03 00 13 e1 30 4e |...."o.=......0N| -000002c0 4c 1d 02 78 57 a5 ee 8f 1c 5f 19 f0 57 3a 8d 7e |L..xW...._..W:.~| +00000000 17 03 03 02 90 2e 71 49 81 51 71 9c 2f da 1e dc |......qI.Qq./...| +00000010 22 c0 a2 59 13 ad 41 ae 7b 18 56 d0 00 7b b5 cf |"..Y..A.{.V..{..| +00000020 47 e7 bc 8e 92 9e dc 88 78 3e 40 8e 8b 01 b0 30 |G.......x>@....0| +00000030 8f 7e 88 95 77 ed de 31 bf c5 78 ba a1 44 55 ec |.~..w..1..x..DU.| +00000040 b6 df 49 a9 df a0 92 b2 be b7 2c 1c 39 1b a0 63 |..I.......,.9..c| +00000050 18 e5 12 b7 5a a5 85 14 97 7d 9e e1 80 b7 15 c5 |....Z....}......| +00000060 2f ca e3 3b 48 91 42 07 f4 49 25 99 2c ee b8 b5 |/..;H.B..I%.,...| +00000070 05 a2 34 7d bb c0 87 4c f3 a8 07 89 fe b7 08 2c |..4}...L.......,| +00000080 e2 0b 27 6f 49 88 80 2f 3b 9c ae a6 3e 38 74 23 |..'oI../;...>8t#| +00000090 53 70 f5 84 0f 77 d4 94 68 f9 86 18 2f dc e1 94 |Sp...w..h.../...| +000000a0 3c e1 2c f2 84 07 f5 3c 88 99 63 ef a1 96 73 f9 |<.,....<..c...s.| +000000b0 46 43 c2 92 be 04 b8 6b 9e db e1 7f 63 b1 d4 15 |FC.....k....c...| +000000c0 36 2c 37 e3 c2 24 b2 4c c5 60 96 15 3b 20 01 67 |6,7..$.L.`..; .g| +000000d0 e5 52 9a 4f 17 6c 0a f1 a0 a3 31 48 e5 31 8e d3 |.R.O.l....1H.1..| +000000e0 b9 49 38 d2 55 4d 40 8e a2 bf dd 0f 19 25 42 55 |.I8.UM@......%BU| +000000f0 06 57 22 c5 06 c9 59 13 f7 c7 56 b1 68 20 f4 62 |.W"...Y...V.h .b| +00000100 19 0a 5d ab 5f 81 c6 50 b7 a2 f8 ce 55 f2 b6 6c |..]._..P....U..l| +00000110 67 39 75 82 1b a1 6b 85 58 37 c0 a5 12 64 a6 ee |g9u...k.X7...d..| +00000120 2e f8 f0 dc d2 50 08 47 0f 15 c8 37 2d ba 69 64 |.....P.G...7-.id| +00000130 e9 ea 7b fa 16 91 ed b6 24 0d fb e8 aa 74 6b 74 |..{.....$....tkt| +00000140 2d 78 2d 1c 2b 98 8e ab 74 6d 06 a3 00 8a e5 be |-x-.+...tm......| +00000150 c0 68 09 05 e0 95 0d c1 27 8a cf 05 09 0a 7c b9 |.h......'.....|.| +00000160 a1 3a 9b 45 3d d4 5d 16 64 5b d5 a3 6c d2 12 78 |.:.E=.].d[..l..x| +00000170 4f 6b ba 3a fe ad 35 9e 5e 0c 5f d4 f3 32 a2 0b |Ok.:..5.^._..2..| +00000180 f1 af d4 e5 f1 91 c6 6c 47 6b 30 a7 2f bf 60 05 |.......lGk0./.`.| +00000190 e3 c0 2d 9c 34 f2 f0 6b f2 ce 7f 19 d0 86 26 b0 |..-.4..k......&.| +000001a0 e1 7e 7b e0 0e 3d e7 f6 3c 7f 42 bc 9f a6 0a 25 |.~{..=..<.B....%| +000001b0 eb cf 1b 4b 44 10 df 7d f1 1f e3 a9 ea 4f 6d 52 |...KD..}.....OmR| +000001c0 70 b2 f0 0b a9 c5 bc 66 46 21 4d 92 c4 c3 f6 71 |p......fF!M....q| +000001d0 eb 46 c0 f3 e7 6f 4a ee 37 ad 8a ea 3b aa 51 79 |.F...oJ.7...;.Qy| +000001e0 d5 d5 18 7e e8 ae 31 1a db 16 04 d8 3c 94 17 f6 |...~..1.....<...| +000001f0 ad 8f 8b 5d 7d 14 fb b4 e9 b4 7e bb 75 f1 df de |...]}.....~.u...| +00000200 6f 0a 0d a8 f9 b5 d8 53 73 36 88 77 db e6 0e 84 |o......Ss6.w....| +00000210 fc 94 6b c9 cc 74 0f 01 40 39 c4 d0 66 2d 23 76 |..k..t..@9..f-#v| +00000220 9f 0d a1 53 94 a2 dd 56 83 9e 62 39 10 13 39 40 |...S...V..b9..9@| +00000230 55 09 b6 77 d2 22 9c 49 ef f9 af 93 ee d1 cf 3d |U..w.".I.......=| +00000240 1f 29 ef 27 94 3c 6d 23 d6 7c 33 e1 f7 cd 70 05 |.).'.Z..~..i7.| +000002b0 b0 90 43 11 e6 76 5e 2d 17 03 03 00 13 4b 69 75 |..C..v^-.....Kiu| +000002c0 3d 46 35 f6 85 4b 0b 6e f4 6b 30 2a 28 37 3c f1 |=F5..K.n.k0*(7<.| diff --git a/src/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedAndEd25519Given b/src/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedAndEd25519Given index 6943bf6569..016b7da4df 100644 --- a/src/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedAndEd25519Given +++ b/src/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedAndEd25519Given @@ -1,149 +1,151 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 ca 01 00 00 c6 03 03 e4 83 a9 75 06 |..............u.| -00000010 0f 8b c9 35 1e 62 89 7f a8 df 7c 93 b6 f0 8f 94 |...5.b....|.....| -00000020 ea 31 dc 66 11 66 bd 77 33 54 bf 20 38 77 15 8d |.1.f.f.w3T. 8w..| -00000030 b4 21 50 72 6f 95 61 6c 15 b8 35 c9 92 10 72 99 |.!Pro.al..5...r.| -00000040 bc 41 03 53 7c 5e 7b b3 a4 2e b4 19 00 04 13 01 |.A.S|^{.........| +00000000 16 03 01 00 ca 01 00 00 c6 03 03 c3 82 3b bf 9c |.............;..| +00000010 31 25 31 c7 8d 18 7f c1 28 22 0f 23 0c 13 b8 81 |1%1.....(".#....| +00000020 a8 e8 35 00 92 0a 13 21 8d 76 43 20 9e 3a 45 91 |..5....!.vC .:E.| +00000030 73 a0 99 70 ab 96 99 2b ae 4a b1 2a 89 3c 74 94 |s..p...+.J.*.>> Flow 2 (server to client) 00000000 16 03 03 00 7a 02 00 00 76 03 03 00 00 00 00 00 |....z...v.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| -00000020 00 00 00 00 00 00 00 00 00 00 00 20 38 77 15 8d |........... 8w..| -00000030 b4 21 50 72 6f 95 61 6c 15 b8 35 c9 92 10 72 99 |.!Pro.al..5...r.| -00000040 bc 41 03 53 7c 5e 7b b3 a4 2e b4 19 13 01 00 00 |.A.S|^{.........| +00000020 00 00 00 00 00 00 00 00 00 00 00 20 9e 3a 45 91 |........... .:E.| +00000030 73 a0 99 70 ab 96 99 2b ae 4a b1 2a 89 3c 74 94 |s..p...+.J.*.8..`...1&.| -000000b0 db ef e2 b1 99 55 c8 f9 f3 a0 81 19 12 a7 63 85 |.....U........c.| -000000c0 5a 26 2d d1 1c ad 5d ae d6 4b 66 93 62 d7 fe 08 |Z&-...]..Kf.b...| -000000d0 40 e9 fa 16 8b 89 f8 04 e8 33 67 20 2b 21 91 a0 |@........3g +!..| -000000e0 c6 0a 87 ff 17 03 03 02 6d 79 97 6c 2f f6 01 7b |........my.l/..{| -000000f0 3a 49 0e 1a 00 96 10 fd 7f 77 db 76 b2 d4 e4 68 |:I.......w.v...h| -00000100 46 4e 4f 3c 64 54 ca 27 9a 5c 78 98 f4 96 a4 fe |FNO.....u.(..| -00000120 ff d8 ec 27 2c f2 4c e5 a0 6e 88 ce 67 6e 35 f4 |...',.L..n..gn5.| -00000130 e5 d5 96 2d 40 af fa 88 12 8a 48 24 2c f9 82 f5 |...-@.....H$,...| -00000140 cb a4 6e 95 a6 53 bc 79 f7 6a ef 66 77 bc 46 f0 |..n..S.y.j.fw.F.| -00000150 1b 0d 6b 5c 76 82 15 c4 d0 1c dd ec cc ce 09 93 |..k\v...........| -00000160 ce 21 55 9b d8 8a 11 1b 0c 24 fa 9e 5f 29 4a f1 |.!U......$.._)J.| -00000170 2a 2e ad c0 6d 6d 46 06 5b c9 75 b3 3e 32 45 67 |*...mmF.[.u.>2Eg| -00000180 05 26 cc d8 a8 4a a9 b1 67 71 a6 82 1c dc f0 15 |.&...J..gq......| -00000190 6d 25 f5 6e be a2 5f 45 39 dc d1 2e df fa e1 e9 |m%.n.._E9.......| -000001a0 48 ca 7a 78 fa 0e 53 d1 5c 8f c2 40 91 d5 fa 40 |H.zx..S.\..@...@| -000001b0 7e a1 52 23 c8 56 1f 31 17 91 5c 38 bb 54 56 f3 |~.R#.V.1..\8.TV.| -000001c0 1e 14 90 43 b7 ef fd 56 b5 ae 13 90 97 dc 60 15 |...C...V......`.| -000001d0 67 72 fc c2 0a 32 90 be ec de 69 16 d3 1b 22 2c |gr...2....i...",| -000001e0 25 9f 91 27 a7 6d 8c a4 de 02 fd 0e da bf ca 71 |%..'.m.........q| -000001f0 77 9b 56 b8 07 e8 80 00 9b d9 36 1c 09 4f 9f 54 |w.V.......6..O.T| -00000200 76 d5 76 f4 9a 03 94 bb 9e 93 f0 b5 3c a1 71 ec |v.v.........<.q.| -00000210 b3 83 3a 06 b4 46 97 bf ef bb f0 26 94 4e b0 08 |..:..F.....&.N..| -00000220 3b ec 81 20 66 92 11 85 a0 c2 90 fd c5 bc ae 39 |;.. f..........9| -00000230 2c 87 ec e4 5d 59 ee b4 e9 0d f7 2a e0 3b 2a 94 |,...]Y.....*.;*.| -00000240 1a 79 2f e8 5c 88 d3 61 2e 47 c0 f3 c4 01 84 a9 |.y/.\..a.G......| -00000250 cf f6 36 13 cb 4b 0b f7 9a 14 f1 d5 0e 10 80 fd |..6..K..........| -00000260 11 79 20 20 ae 56 5e de 58 53 19 38 26 e2 ac bc |.y .V^.XS.8&...| -00000270 0c 40 38 8b f9 67 62 4c 42 7d 18 4f 27 e9 53 96 |.@8..gbLB}.O'.S.| -00000280 78 4b fa 44 fe c2 c3 d9 99 f2 2c 59 2b 2b 2c 88 |xK.D......,Y++,.| -00000290 5b dc a8 98 3d 17 14 09 70 ce e4 02 8b 3c 5d 94 |[...=...p....<].| -000002a0 44 ac ba 57 2d a9 bf b8 70 e9 b8 a8 c3 b8 90 da |D..W-...p.......| -000002b0 ec b1 b4 57 d6 e3 0f 41 82 bb 21 4a 57 dc ac 4b |...W...A..!JW..K| -000002c0 89 34 75 fc c4 56 6b 70 3d 83 2b fa be c8 2b cd |.4u..Vkp=.+...+.| -000002d0 f8 4f 9f 9e 9a 0e d2 d0 46 cd 21 a5 f7 07 a6 2a |.O......F.!....*| -000002e0 85 7b 30 92 78 a2 da a5 1d 1c 1c 54 63 4b 66 b2 |.{0.x......TcKf.| -000002f0 f1 a7 c4 43 57 97 7f 28 37 e7 15 62 9b 1c f5 90 |...CW..(7..b....| -00000300 0c 19 36 1a c1 48 48 e5 7d 56 93 3c 13 e3 cd 6a |..6..HH.}V.<...j| -00000310 aa aa ba d5 24 95 c7 df 9c a9 76 6c 07 bf 09 2d |....$.....vl...-| -00000320 4b 7b 55 94 37 ec d4 69 ce ab 0f 48 37 74 37 99 |K{U.7..i...H7t7.| -00000330 83 0d 60 8a 73 56 fb e2 9e 0c 39 0e 23 bf 68 b2 |..`.sV....9.#.h.| -00000340 92 51 12 bc cf 1b af 9d 7c fe 77 14 c8 66 4a 6f |.Q......|.w..fJo| -00000350 91 06 55 6a 11 61 17 03 03 00 99 c2 bf 26 a6 fa |..Uj.a.......&..| -00000360 67 16 a3 b9 1f 36 f8 4f 5d 59 b1 be 43 3a 70 01 |g....6.O]Y..C:p.| -00000370 c0 3a 4b c5 20 b1 22 49 04 22 bb 7f 5f f4 bb f8 |.:K. ."I.".._...| -00000380 35 03 0e dc ba ce de 2a 25 ea 96 dd 3d 64 34 90 |5......*%...=d4.| -00000390 30 f8 34 22 bb e4 94 00 bb b3 ea 3c d2 87 90 9a |0.4".......<....| -000003a0 86 76 6b b7 e3 78 fc 35 10 50 ce b6 c0 71 52 ae |.vk..x.5.P...qR.| -000003b0 a5 f7 bf 8c 5e 5d c1 96 c7 92 6f f0 04 87 d9 a8 |....^]....o.....| -000003c0 72 f4 9e ed 6d ab 28 42 7c c8 60 39 81 66 74 a1 |r...m.(B|.`9.ft.| -000003d0 79 79 6a 59 02 29 b8 14 12 34 a7 96 8f e0 c1 d6 |yyjY.)...4......| -000003e0 4e da e2 63 22 c1 60 b1 87 64 d3 80 b9 c4 df 9a |N..c".`..d......| -000003f0 5f 2c 22 91 17 03 03 00 35 9a 62 4d a2 ba 27 31 |_,".....5.bM..'1| -00000400 fc 8e 23 cc 5f f0 5c 8c 9b c1 b0 ae 7b b8 fa e2 |..#._.\.....{...| -00000410 f3 af 6c 6c ac 86 1e e1 2b 9f 14 a1 f3 5f b5 f9 |..ll....+...._..| -00000420 76 b6 dd 73 f5 6a 08 29 f1 29 9e 79 87 aa |v..s.j.).).y..| +00000080 03 03 00 01 01 17 03 03 00 17 84 17 5a 31 cf 40 |............Z1.@| +00000090 61 37 2b 5a 28 91 d9 e1 7b f2 50 14 8e 7b 40 30 |a7+Z(...{.P..{@0| +000000a0 4b 17 03 03 00 52 ad d1 15 51 c8 89 48 44 23 64 |K....R...Q..HD#d| +000000b0 8a b6 8d ac 08 47 ed 65 1d a3 ea cd 3c 89 43 4b |.....G.e....<.CK| +000000c0 36 28 4b b7 bc e4 93 93 ce 37 4c f5 63 ad 3b 3f |6(K......7L.c.;?| +000000d0 05 b9 92 56 88 35 89 30 5e 40 2d 46 ac 9d 1f ec |...V.5.0^@-F....| +000000e0 3d 0a 2a 32 d0 98 79 97 e2 93 2b b0 43 35 37 90 |=.*2..y...+.C57.| +000000f0 64 e3 a6 fd 09 01 14 61 17 03 03 02 6d 3c 5b ed |d......a....m<[.| +00000100 d8 cf c6 d9 e4 b1 7b 15 dc a1 c1 f6 88 87 1a 5c |......{........\| +00000110 22 37 53 87 a7 10 13 50 1c 1c 65 70 09 67 f3 63 |"7S....P..ep.g.c| +00000120 e7 63 88 76 50 45 e6 a8 1a 38 93 3b c0 ef fd c0 |.c.vPE...8.;....| +00000130 17 c2 c5 04 d6 15 c6 e9 70 bd d2 be 9a 38 50 8a |........p....8P.| +00000140 2b 4c a2 ea 4e ad 80 09 8f 24 2c 17 4d 17 e4 d8 |+L..N....$,.M...| +00000150 a1 47 13 fb 76 18 2d 04 8c 39 23 03 67 64 d2 d6 |.G..v.-..9#.gd..| +00000160 3d c8 4f 1d 1c 59 44 08 80 52 6e f3 3f 90 35 bc |=.O..YD..Rn.?.5.| +00000170 7e 58 1e 16 2c b0 7d 89 2a 4a a9 53 5a 2a ce 65 |~X..,.}.*J.SZ*.e| +00000180 c9 85 08 0b 6d e9 a4 9c e7 25 30 49 3c 85 bb 83 |....m....%0I<...| +00000190 7c 78 be 9d ee de 8f fb 01 d7 59 d5 4e 42 bc 21 ||x........Y.NB.!| +000001a0 e6 ba ed 0c 84 3c 8a aa 70 43 8a 46 c5 7f 81 65 |.....<..pC.F...e| +000001b0 b3 18 73 d9 73 8f 4e 67 5e 64 e3 92 0c 2f 03 e4 |..s.s.Ng^d.../..| +000001c0 81 ec 8a a2 0c 7d e9 97 5f 4b 5f 7e 55 48 24 8c |.....}.._K_~UH$.| +000001d0 ea d4 34 18 2b 88 6e 07 17 a9 7a be 6a 99 59 76 |..4.+.n...z.j.Yv| +000001e0 f5 1d 9b e9 4c ad f7 eb 94 8b bb 7d 93 46 ba a7 |....L......}.F..| +000001f0 d5 f8 3b 82 91 6d 5c 7e dc 0f da 08 19 06 40 f0 |..;..m\~......@.| +00000200 fd 16 68 24 fc 85 84 12 65 71 cf 91 63 46 ea 2f |..h$....eq..cF./| +00000210 d6 45 be 8a f3 27 0a 66 cb ed 8a d0 38 02 59 34 |.E...'.f....8.Y4| +00000220 4a 3d dc 6d 2d ef a4 f6 b4 c0 9d 29 85 b3 da 20 |J=.m-......)... | +00000230 4d 60 ec 90 eb 0f f1 5f 83 b4 bd 6a d5 0b b1 01 |M`....._...j....| +00000240 dd df a3 4c 1c b1 f6 b3 0c e0 8d 94 59 84 08 c4 |...L........Y...| +00000250 31 58 83 11 0b 04 5c 5e e3 ef 5a f4 6d 95 3a ca |1X....\^..Z.m.:.| +00000260 7a 11 b9 db e4 dd 38 66 65 b1 24 40 17 22 8f 90 |z.....8fe.$@."..| +00000270 f3 88 c6 a0 76 21 67 be 1f 6c aa ca ad c1 58 20 |....v!g..l....X | +00000280 dd c7 c0 20 32 a8 d7 db 9a 81 c9 82 38 a0 76 6b |... 2.......8.vk| +00000290 54 cf 79 cb 01 f1 59 50 3b 99 e2 68 96 2f 49 01 |T.y...YP;..h./I.| +000002a0 f6 7a ec a5 4f a0 91 be fb 85 52 ef 9b 6d 0c c1 |.z..O.....R..m..| +000002b0 36 82 a2 3f 0b 4e 4e 01 31 43 29 2a c0 26 41 83 |6..?.NN.1C)*.&A.| +000002c0 31 7b 9a b0 bf 0d 0f 96 b7 64 60 4d 07 2b 29 7e |1{.......d`M.+)~| +000002d0 d2 f6 c3 92 89 50 a7 19 b7 5b 15 6d 9c 0b 6e e3 |.....P...[.m..n.| +000002e0 01 d4 58 18 c0 22 95 e6 42 a7 1b 65 a8 2f 5f 6e |..X.."..B..e./_n| +000002f0 fc bc 00 ed 01 21 ec a9 6c ac 9e c7 c0 f0 f5 fc |.....!..l.......| +00000300 bd 0c c1 26 98 20 fa 1d a5 2a b6 fc 01 17 1c ba |...&. ...*......| +00000310 62 17 7d 39 25 76 bb 8c 77 5a bb 5e 74 22 f7 82 |b.}9%v..wZ.^t"..| +00000320 f1 65 8a 25 b5 05 53 db 84 de e6 59 1a a6 e7 09 |.e.%..S....Y....| +00000330 45 8e 14 fc e2 bc 9c 20 42 28 8d e2 ae 48 ad f4 |E...... B(...H..| +00000340 a0 ab 6b 3e 23 02 0a 0f ee 92 68 2f 29 1c 7e 4f |..k>#.....h/).~O| +00000350 8b 92 85 32 15 2f c1 dc fa 87 14 1d 21 3e 95 c6 |...2./......!>..| +00000360 e4 96 f1 66 d6 af bb eb d8 d4 17 03 03 00 99 31 |...f...........1| +00000370 1a 82 6b b3 f2 1d 12 83 7c df 15 6a 5b a8 af 96 |..k.....|..j[...| +00000380 a3 81 92 59 7a 19 c5 6b b4 ec e0 90 14 f1 00 ca |...Yz..k........| +00000390 0d d5 15 c5 24 49 a7 fc c2 2f 40 89 61 c1 6d d4 |....$I.../@.a.m.| +000003a0 da 39 f7 c3 42 50 e2 47 62 b2 5f 2b 91 70 e7 61 |.9..BP.Gb._+.p.a| +000003b0 57 e0 a3 20 a2 79 1f 18 ce f9 ad 5d ea 87 fa 16 |W.. .y.....]....| +000003c0 85 4b 50 a0 43 8f 0a 40 d7 93 cf 82 b5 82 6c 11 |.KP.C..@......l.| +000003d0 b7 cb 7c b2 4d 7d 23 ec a7 f8 2f b6 69 a8 83 29 |..|.M}#.../.i..)| +000003e0 4a ff 72 86 8e 05 79 91 a7 ed 4b 3d c8 86 fc 29 |J.r...y...K=...)| +000003f0 74 1e 88 7b a5 b2 2c 6e 62 08 2e a9 02 c9 05 d8 |t..{..,nb.......| +00000400 66 db 9c 28 35 79 ed 6f 17 03 03 00 35 24 4d e5 |f..(5y.o....5$M.| +00000410 81 c9 80 a9 1b c8 a9 20 27 c8 17 b3 0e 42 91 70 |....... '....B.p| +00000420 cb 4d ac 6f b8 b7 9a 96 94 95 fb ce f1 51 65 21 |.M.o.........Qe!| +00000430 ff 2c c5 53 42 1c b3 1c b1 9b 38 1a 1c a0 bf 3c |.,.SB.....8....<| +00000440 92 06 |..| >>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 01 50 ef 68 27 d6 ec |..........P.h'..| -00000010 76 00 e1 c6 ed 3c f6 a1 83 b4 4b 26 28 ba 0f d6 |v....<....K&(...| -00000020 2a fd f0 4a 10 8f 9c ed 84 3f 0a 0e 5b 77 e2 7d |*..J.....?..[w.}| -00000030 1e 03 2a 76 5b 2b 87 78 ad bd 45 8b 03 b3 8d e7 |..*v[+.x..E.....| -00000040 b7 66 ca 5e 36 f8 53 87 90 3c 1a 33 46 1d 32 4f |.f.^6.S..<.3F.2O| -00000050 f1 90 fb 36 da 96 1c 1a db 9f 9b e6 9f 85 f8 13 |...6............| -00000060 7d e1 ab e1 ca c6 05 df 15 ea af dd 55 58 c7 5f |}...........UX._| -00000070 de 62 1b 93 60 a4 fc 39 0a ef 95 bc 0c ca 8f 84 |.b..`..9........| -00000080 98 0a 6d 5b fd c6 0c ad 02 7f 0c f8 b4 be fe 5a |..m[...........Z| -00000090 fb 22 00 08 09 5d c7 47 76 89 e5 06 d1 90 5b e6 |."...].Gv.....[.| -000000a0 63 64 06 28 37 d9 1b e9 0d 27 45 f7 72 30 d7 f2 |cd.(7....'E.r0..| -000000b0 db 8e bf 95 97 29 43 e7 16 bf a0 59 9c fa d9 59 |.....)C....Y...Y| -000000c0 a0 a6 9b 1f b5 74 80 87 d0 61 2f d5 a5 ac dd b2 |.....t...a/.....| -000000d0 8d 27 fc e6 68 eb 07 b3 3d 97 a9 93 5b 35 99 e9 |.'..h...=...[5..| -000000e0 ba 99 fe 49 d6 39 1a 0a 38 98 cd 47 b9 67 9b 9a |...I.9..8..G.g..| -000000f0 77 65 45 f8 48 fb d3 1c 0f a2 2e af e0 29 68 bc |weE.H........)h.| -00000100 81 24 3b 9b 36 0a ef 51 75 ff 61 6a d4 6c 59 42 |.$;.6..Qu.aj.lYB| -00000110 54 31 47 e9 02 9e 58 33 9e 89 65 b6 65 db b2 81 |T1G...X3..e.e...| -00000120 bd c1 f4 0a 34 eb f3 26 f5 8d 36 6d da 78 e6 88 |....4..&..6m.x..| -00000130 00 8f 92 24 dc 76 e3 95 dc 13 b5 92 91 ee c0 82 |...$.v..........| -00000140 cb 63 85 b6 59 67 dc 14 2e 2d 58 8e 56 7e 7c db |.c..Yg...-X.V~|.| -00000150 2f 54 01 ed 17 8d 9a 97 22 39 7f 17 03 03 00 59 |/T......"9.....Y| -00000160 a1 f2 0d 19 e7 d8 a8 6d cd ea f6 82 ee 5d 0a 55 |.......m.....].U| -00000170 22 61 11 21 f7 b0 1d 86 a8 4d c2 e2 9b ac bb 87 |"a.!.....M......| -00000180 a2 82 67 ee 78 76 9b e0 c0 00 85 bf 1e 2b ab e6 |..g.xv.......+..| -00000190 f1 43 79 69 a0 3d 04 b7 d9 7f 31 c7 7a b7 4f 5c |.Cyi.=....1.z.O\| -000001a0 9f 62 84 dc f4 6d a1 ce 3d ff 24 88 15 10 4a e6 |.b...m..=.$...J.| -000001b0 5c 12 68 08 3c 55 a2 a9 d7 17 03 03 00 35 f4 d9 |\.h..z....5=.| +000001c0 94 02 6e 65 f2 98 8d 45 3e d5 af 22 46 f0 70 3e |..ne...E>.."F.p>| +000001d0 d4 90 9c 02 0a f9 8d e6 c7 8f 52 af ab 74 67 12 |..........R..tg.| +000001e0 6d 8e 25 f8 03 73 02 78 5d 9c 8b 38 68 fe e9 96 |m.%..s.x]..8h...| +000001f0 c6 83 29 |..)| >>> Flow 4 (server to client) -00000000 17 03 03 01 c2 80 69 97 9a 20 30 2a 1c f4 31 f9 |......i.. 0*..1.| -00000010 0f cf f7 79 c0 01 e1 f3 35 f5 16 a0 33 d6 eb 21 |...y....5...3..!| -00000020 44 db bc c6 c4 91 6b a6 75 da ca d3 63 78 47 8b |D.....k.u...cxG.| -00000030 96 e5 6f 63 2c 77 c0 33 29 d8 3e ee bf 8e 6b d4 |..oc,w.3).>...k.| -00000040 de f7 1b 0e e6 ae ce cd 17 0d 24 77 10 3d e4 89 |..........$w.=..| -00000050 06 07 a3 77 68 ac 20 ec 0b ae 47 41 3b 80 4e 95 |...wh. ...GA;.N.| -00000060 02 aa 13 36 19 03 06 1c 47 b3 f7 f0 4b 6d 5a c6 |...6....G...KmZ.| -00000070 42 14 95 03 20 c7 46 96 42 d3 18 5a 40 bd a1 03 |B... .F.B..Z@...| -00000080 b6 d2 8b f9 ff 2d d1 b1 3c 8a 34 af 23 64 31 7d |.....-..<.4.#d1}| -00000090 46 47 21 b4 82 16 df a2 a4 0f 96 03 4b 38 3d 5d |FG!.........K8=]| -000000a0 d0 d1 78 d1 6e 6a a2 95 c0 a7 e6 ee 07 eb 77 68 |..x.nj........wh| -000000b0 35 78 72 3e df d9 4b e9 1b ab 34 99 2d fe 52 99 |5xr>..K...4.-.R.| -000000c0 6e 57 63 13 39 ae 5e ce b6 43 21 07 fd fe b7 6d |nWc.9.^..C!....m| -000000d0 8f 72 a4 f8 7e 0a 56 60 61 d5 5a d4 01 b3 47 8e |.r..~.V`a.Z...G.| -000000e0 f0 48 cd 85 61 a3 d2 d1 eb ba 04 39 6b 5e 5f fc |.H..a......9k^_.| -000000f0 e3 90 c1 cb 3f 40 30 00 5c 94 df bf 5b 89 6d ab |....?@0.\...[.m.| -00000100 15 1e 72 50 ac 56 ee 16 7d 84 4c e6 0c 89 68 fa |..rP.V..}.L...h.| -00000110 d5 8d 5f 09 85 25 5f 8c 70 df 0b b7 94 15 40 20 |.._..%_.p.....@ | -00000120 b1 ff 41 50 5d 9f c6 8a 9b 7f 40 6f dc bd 4f 54 |..AP].....@o..OT| -00000130 d8 1f e6 f1 44 00 11 97 45 ca 80 bc 15 eb 93 01 |....D...E.......| -00000140 dd 54 c6 75 7e 08 b9 38 f5 4d 97 c5 50 56 97 3c |.T.u~..8.M..PV.<| -00000150 3c 72 9a 33 7c 68 b1 73 2b 38 c7 b8 a8 3c 5d af |.....6....[..z| -00000170 f5 74 8d ac a4 0f 38 34 ee cd 08 50 e0 33 b0 e1 |.t....84...P.3..| -00000180 52 e1 5d f2 7d c6 7b 64 c7 46 f6 9e d0 a2 cf 89 |R.].}.{d.F......| -00000190 3c c9 ab 2f fb 8a f3 ba 78 e9 4c c5 2d 62 32 6b |<../....x.L.-b2k| -000001a0 50 4c a0 7e d3 bb 2a 66 57 99 38 69 e8 77 ef 18 |PL.~..*fW.8i.w..| -000001b0 24 af b3 cb e5 c0 37 a2 97 f6 00 d4 68 8a 71 af |$.....7.....h.q.| -000001c0 24 a4 ab 19 07 3b c0 17 03 03 00 1e 60 b4 fc 15 |$....;......`...| -000001d0 f9 9c b1 a1 60 1a ba f5 1b b9 c1 33 f1 8b e5 c0 |....`......3....| -000001e0 48 77 4f 11 42 21 ad 8c d2 d6 17 03 03 00 13 5c |HwO.B!.........\| -000001f0 db 07 5e 65 40 58 74 a4 7f ab 5f cc f0 9a 91 0c |..^e@Xt..._.....| -00000200 17 3d |.=| +00000000 17 03 03 01 c2 48 66 ba b6 48 e4 d9 1a 73 81 09 |.....Hf..H...s..| +00000010 cc 26 f8 2b bd 70 e7 15 c7 29 ac 30 58 21 ee 0c |.&.+.p...).0X!..| +00000020 9b c6 f0 b2 85 23 20 1a 7b ad ce fc 5f b6 ce aa |.....# .{..._...| +00000030 af a3 40 52 bf b3 3f 3d 61 a9 14 d1 eb 3c 21 78 |..@R..?=a......J.........| +00000170 fb ff 37 ce b7 5a 75 34 91 35 de 45 a2 36 71 05 |..7..Zu4.5.E.6q.| +00000180 20 65 d3 e4 fa 48 00 c1 25 3f f2 98 e8 0f 32 2a | e...H..%?....2*| +00000190 ee c5 60 f6 83 25 40 91 f6 13 0b fe 26 a9 f1 4c |..`..%@.....&..L| +000001a0 67 0d e8 c9 25 7e f5 f3 e3 ca 34 c3 e7 0e 4b e1 |g...%~....4...K.| +000001b0 c8 f4 40 94 69 88 a2 81 75 02 7d 6d d4 6a b3 c3 |..@.i...u.}m.j..| +000001c0 61 84 17 29 2a e9 90 17 03 03 00 1e 43 69 c6 7c |a..)*.......Ci.|| +000001d0 1a fa 1a cf bf 78 54 c0 8f b7 8d 83 d8 74 f9 54 |.....xT......t.T| +000001e0 6a 62 2f b1 68 63 69 b7 46 2e 17 03 03 00 13 08 |jb/.hci.F.......| +000001f0 49 af 4e 5f f1 e1 8a 7d 20 4e 55 2b 86 4f 03 a0 |I.N_...} NU+.O..| +00000200 d2 b5 |..| diff --git a/src/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedAndGiven b/src/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedAndGiven index 8ba88ebf3f..2a608bda26 100644 --- a/src/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedAndGiven +++ b/src/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedAndGiven @@ -1,177 +1,180 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 ca 01 00 00 c6 03 03 56 2e 3c 64 35 |...........V.>> Flow 2 (server to client) 00000000 16 03 03 00 7a 02 00 00 76 03 03 00 00 00 00 00 |....z...v.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| -00000020 00 00 00 00 00 00 00 00 00 00 00 20 7c d3 26 20 |........... |.& | -00000030 a0 dc e9 7a 07 71 02 2d 3b 27 85 16 fb 6e 26 e5 |...z.q.-;'...n&.| -00000040 c3 67 e5 0b bd e5 50 8f bd 39 6f 2c 13 01 00 00 |.g....P..9o,....| +00000020 00 00 00 00 00 00 00 00 00 00 00 20 b9 21 2b 29 |........... .!+)| +00000030 79 05 38 92 c6 fe 41 fa be d7 98 08 0a e4 12 b7 |y.8...A.........| +00000040 7a ea 10 5a 0d 1a f2 b4 81 5d 9d 01 13 01 00 00 |z..Z.....]......| 00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 2f |..+.....3.$... /| 00000060 e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 |.}.G.bC.(.._.).0| 00000070 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 14 |.........._X.;t.| -00000080 03 03 00 01 01 17 03 03 00 17 43 8e 41 a4 04 13 |..........C.A...| -00000090 01 08 9f 6e 1a fd 00 68 38 5c 93 d9 9a f7 1e 36 |...n...h8\.....6| -000000a0 ea 17 03 03 00 3e 9f ae 80 ef f4 20 66 e7 44 fc |.....>..... f.D.| -000000b0 4d a4 3f 0e dc bb 33 47 0f 13 96 fa 03 07 d6 6f |M.?...3G.......o| -000000c0 cc 9f 3c fd 01 f5 87 d9 ec c9 d0 fc dd bf c8 5c |..<............\| -000000d0 0b 3d aa a7 c6 1d 90 18 d9 a1 1a a0 a1 ea 49 32 |.=............I2| -000000e0 9e 45 86 f7 17 03 03 02 6d 61 29 fe 45 7e 5c b3 |.E......ma).E~\.| -000000f0 8a 73 f2 65 c1 90 4e 93 0d 84 b2 bd e4 46 93 c2 |.s.e..N......F..| -00000100 52 3f 07 38 e7 23 db 25 5e 71 98 a9 7d fd e9 ef |R?.8.#.%^q..}...| -00000110 3f 2c d8 9c ae 41 c4 d3 c7 9e d5 6e f0 0c 33 78 |?,...A.....n..3x| -00000120 98 cf bf 22 3d 1f d0 f3 c8 a2 34 e8 ce 5e 0d 37 |..."=.....4..^.7| -00000130 52 e2 b8 e3 50 ea 35 3e e5 59 a0 6d ed 9e 09 36 |R...P.5>.Y.m...6| -00000140 59 20 33 08 a9 41 f4 72 aa 2d 0c b5 d6 96 d9 04 |Y 3..A.r.-......| -00000150 1a f1 d8 45 ed 67 ab f9 15 fa 25 ef 6d 87 72 ad |...E.g....%.m.r.| -00000160 f0 06 59 a5 8e 61 80 8b 28 f9 a0 df 5b b2 a2 3a |..Y..a..(...[..:| -00000170 1c 91 43 18 f4 a2 f3 4e db dc 24 1b c3 0e 77 22 |..C....N..$...w"| -00000180 83 ae 88 9f 8e 8d 48 38 f4 60 51 42 fa f2 a4 de |......H8.`QB....| -00000190 33 78 35 d0 b6 01 3d 7a f5 54 68 51 fd 0e 4c 9b |3x5...=z.ThQ..L.| -000001a0 92 7c a5 01 96 52 7e de 38 b9 b0 ee 60 1e aa eb |.|...R~.8...`...| -000001b0 8c e6 b4 f4 7c 35 d2 0b 9b 83 94 ac ac ce 7e 58 |....|5........~X| -000001c0 51 6e c3 ae 3b cd f5 85 8a 1e 43 78 19 ee dc a1 |Qn..;.....Cx....| -000001d0 a3 d0 93 24 0d 3b 6a 4b cd dc 78 9c 0b 2f bc 41 |...$.;jK..x../.A| -000001e0 46 2f 64 3c 23 95 04 8b 60 75 bf 4d 45 3b e4 1e |F/d<#...`u.ME;..| -000001f0 9c 5b 1a 46 bb f3 4d a9 1b 59 33 b4 40 78 bd ff |.[.F..M..Y3.@x..| -00000200 30 7d d4 cc 5e 83 03 de 8d a3 a6 27 b4 bc 12 6e |0}..^......'...n| -00000210 5e f2 88 e8 b6 60 f3 01 e8 4a 53 c7 a9 fc a1 cc |^....`...JS.....| -00000220 27 45 c1 06 90 38 9a fb 1b 2a 9e ed 9e f6 19 85 |'E...8...*......| -00000230 dd f7 8a 7f 95 08 3a 25 c0 5b 63 96 44 71 c2 16 |......:%.[c.Dq..| -00000240 9c e1 10 69 e5 6a 5c 4a e8 2a ed 6f bd de f5 98 |...i.j\J.*.o....| -00000250 c0 a0 c5 54 7c cc 06 11 b2 54 1a c3 b4 46 c2 b4 |...T|....T...F..| -00000260 97 d8 9c 7d f1 f3 d4 6f 3c a0 ef 18 c5 a6 e9 13 |...}...o<.......| -00000270 e9 f4 9d bf 9b 25 a2 da c6 ba 7a 6d 91 fd 41 a4 |.....%....zm..A.| -00000280 e8 88 e3 79 2c 99 df 4d 21 48 89 57 5a bf 2a 2d |...y,..M!H.WZ.*-| -00000290 72 4e 1e 3a e8 c9 82 7b c0 ff 6b 7c e8 8f 41 bf |rN.:...{..k|..A.| -000002a0 83 19 9e 96 d1 3f 2b 60 8f 7f 0b f8 6c 70 82 dd |.....?+`....lp..| -000002b0 34 da 91 62 17 20 e9 99 2e e2 a9 9a 9d fd 5d f8 |4..b. ........].| -000002c0 a5 c0 ac e8 a3 df 11 b5 df 2c bd e1 e8 0f 7e 0a |.........,....~.| -000002d0 f2 47 4c 92 33 7b 6b 49 e5 30 31 8b 2e 16 81 3e |.GL.3{kI.01....>| -000002e0 79 25 f7 d7 d2 8f 5e e6 e3 2d ed 0d e1 08 97 13 |y%....^..-......| -000002f0 f3 ce 7d b1 36 0d 7c b0 4f 23 6b 12 ef 3a a4 8b |..}.6.|.O#k..:..| -00000300 b5 d0 c9 ee 48 77 70 28 61 ff ad 49 f6 48 4c 37 |....Hwp(a..I.HL7| -00000310 7b 00 c4 01 5d 8b 54 bc 44 5c 5f 98 6f 7d 84 84 |{...].T.D\_.o}..| -00000320 c8 d0 55 88 f9 17 f6 02 f1 84 b6 3c 1a 03 e8 7b |..U........<...{| -00000330 b9 4e 24 c6 d8 0a f6 8c b9 49 c6 10 38 53 e1 10 |.N$......I..8S..| -00000340 8f 91 cd 39 9a 3a e8 c7 10 f3 c3 91 84 3c 8c a6 |...9.:.......<..| -00000350 55 ab f4 f5 ab e7 17 03 03 00 99 e5 40 f6 35 34 |U...........@.54| -00000360 2d 42 3e 7f e1 51 26 56 50 4e 60 b0 2f 65 e3 cd |-B>..Q&VPN`./e..| -00000370 c7 08 0e 96 77 08 c7 f6 4f e6 70 90 bc 80 95 e7 |....w...O.p.....| -00000380 b2 df 98 83 94 4d 9e 5c 8a af d3 45 da e9 d7 fa |.....M.\...E....| -00000390 d8 d2 60 f8 b1 06 d9 27 64 45 4d e8 d3 07 8a bb |..`....'dEM.....| -000003a0 72 7a c6 71 00 7e 8b b0 2b 7d d0 f7 ab 1a bf d2 |rz.q.~..+}......| -000003b0 50 be a9 3a 0c 68 b8 48 9a 91 ee db 26 4d d3 66 |P..:.h.H....&M.f| -000003c0 5b 00 ef c3 cc b8 f2 4e 1e 51 c7 9b 34 3c e3 01 |[......N.Q..4<..| -000003d0 7f 75 4e 41 e4 56 34 ec 14 92 0f 1e 6d dd 51 9a |.uNA.V4.....m.Q.| -000003e0 e0 8b 33 54 df 77 1f ff d3 72 67 4c 62 16 b7 f8 |..3T.w...rgLb...| -000003f0 4f 8f f8 ee 17 03 03 00 35 b7 83 d2 27 a3 15 f2 |O.......5...'...| -00000400 75 55 aa 06 8c 5f c4 fa 0f 43 88 c9 c5 e3 c7 36 |uU..._...C.....6| -00000410 40 6b 35 0b 7e 60 a1 1e 48 ef 46 2c d6 e4 48 80 |@k5.~`..H.F,..H.| -00000420 91 b0 e5 3b c0 58 5d fe 5d bd 0a 6c 19 ea |...;.X].]..l..| +00000080 03 03 00 01 01 17 03 03 00 17 4d 00 8b d1 bc 63 |..........M....c| +00000090 c3 8c af c4 0f 2e 36 78 8d 2b 52 32 f6 2c 29 0e |......6x.+R2.,).| +000000a0 17 17 03 03 00 52 aa 37 4e 5d 56 9a 8d 72 e7 77 |.....R.7N]V..r.w| +000000b0 f1 b7 0c 0b be 7d 63 92 58 0f 09 d7 a0 36 12 75 |.....}c.X....6.u| +000000c0 c9 0d ec d8 44 b4 8f ad dd a1 84 58 3f 0a 7c 47 |....D......X?.|G| +000000d0 0b c1 6f 56 7a 90 bf 82 6d 29 22 8b b3 50 03 ea |..oVz...m)"..P..| +000000e0 18 96 5e f5 1b f0 67 7d 10 c8 3f a4 f5 44 84 b3 |..^...g}..?..D..| +000000f0 f3 af 3e f2 b3 93 a1 57 17 03 03 02 6d 54 0a b5 |..>....W....mT..| +00000100 be 3f e0 77 de 6f e3 d7 83 60 2e 17 94 77 fb e1 |.?.w.o...`...w..| +00000110 11 e8 8d 22 1a 7b ac 36 94 35 d5 29 e5 fa 9e 07 |...".{.6.5.)....| +00000120 62 87 34 f8 b4 c5 ae d5 ee 84 76 c8 fd 30 cf a8 |b.4.......v..0..| +00000130 b1 a4 fe 42 12 e1 36 80 05 76 e2 d2 04 2b 6e c7 |...B..6..v...+n.| +00000140 0d 7d dc 99 de 3d 62 41 2f 3c c2 78 22 ec 6f 37 |.}...=bA/<.x".o7| +00000150 ab 0d 03 22 fe fc f4 82 41 49 44 fd 0a 02 4a 79 |..."....AID...Jy| +00000160 bd 5b 40 63 46 58 cd 84 b6 cf 46 c3 31 68 38 2a |.[@cFX....F.1h8*| +00000170 cf e0 3f ee de 06 ee de f8 e8 3e 37 ab 92 a6 9b |..?.......>7....| +00000180 0a f3 a8 64 6a 81 86 5d ed e3 a2 8c d0 0f 09 1e |...dj..]........| +00000190 ba e9 b0 6f 6b 1e 32 be 03 de 97 81 e0 42 ad 6e |...ok.2......B.n| +000001a0 f6 af bd 12 7a 2f f4 41 63 c4 f4 6a 61 8c e5 d4 |....z/.Ac..ja...| +000001b0 60 99 f2 d5 92 54 2f 28 ee 3f 9b ab fa c1 51 9b |`....T/(.?....Q.| +000001c0 f5 6b d1 d6 6d b1 17 28 95 5f 3c cc e4 41 bf 9b |.k..m..(._<..A..| +000001d0 c5 6e 29 4b 39 f8 ad b0 fe 51 4c 2b 92 76 ce 22 |.n)K9....QL+.v."| +000001e0 ee 5c 9e ad 0e 50 12 3d 2a a0 7a 6d a1 63 18 f7 |.\...P.=*.zm.c..| +000001f0 f2 a0 2a b7 b6 c9 f3 60 54 47 a8 90 dd 90 7d c3 |..*....`TG....}.| +00000200 6e f8 58 1c 28 e7 21 b4 52 33 da 67 67 2b b1 51 |n.X.(.!.R3.gg+.Q| +00000210 b0 41 97 a3 1f 9b cd c8 28 63 c9 f5 e5 d1 a3 3f |.A......(c.....?| +00000220 ac 1c 39 2e 72 1b e5 16 4d 8c b1 6b 4c 35 07 e9 |..9.r...M..kL5..| +00000230 24 a4 98 fb 67 75 4b 76 b7 2d cc 35 d9 a4 db 74 |$...guKv.-.5...t| +00000240 96 56 96 e0 74 8e f9 4a 45 19 30 57 a0 22 27 a9 |.V..t..JE.0W."'.| +00000250 d9 34 d7 73 f0 16 87 e5 be 8e b3 d2 53 f2 9c 19 |.4.s........S...| +00000260 c1 0a df 07 e7 e8 30 fb 44 ac 34 13 2b 22 4c a2 |......0.D.4.+"L.| +00000270 00 da 45 fc 95 1f 83 a0 c9 fa b3 b9 16 95 83 0f |..E.............| +00000280 a9 fa ae 2f b7 bc a1 55 d2 ab 2d 31 af 39 c2 82 |.../...U..-1.9..| +00000290 f7 bf 9a 9a 5c e6 61 d7 f2 9c d0 b5 53 85 58 cf |....\.a.....S.X.| +000002a0 9d 2e 50 eb 46 a1 a4 a0 aa c4 44 66 f7 61 41 0f |..P.F.....Df.aA.| +000002b0 75 68 36 76 11 7d 1e d7 be 0f a4 7a a8 bb 9e 26 |uh6v.}.....z...&| +000002c0 a9 7b ea 30 14 51 37 78 58 2a 92 e2 2c d3 9e 27 |.{.0.Q7xX*..,..'| +000002d0 86 92 83 a0 bc e8 50 ed da 9c 06 f4 d8 3c d5 6c |......P......<.l| +000002e0 a5 3a cc 1a ce 00 55 30 20 74 ad 17 5c bd 98 2d |.:....U0 t..\..-| +000002f0 1f 11 e7 38 99 2d b4 fc 1c 42 c9 ae f1 af 46 3e |...8.-...B....F>| +00000300 67 13 d2 31 16 34 fd e9 26 7c dd bb a0 25 10 7d |g..1.4..&|...%.}| +00000310 ca 94 20 6a b9 10 b7 94 0d 26 31 46 f2 bf 45 a8 |.. j.....&1F..E.| +00000320 ed 8f 08 15 7d db dd 3a ad 45 9f bd 32 8d ff 80 |....}..:.E..2...| +00000330 c6 1f bf 57 5e a0 dc 74 3c 8a b3 8f 03 ef a1 ef |...W^..t<.......| +00000340 12 65 2c c3 16 4f bc 63 3b 62 ab fa ae 9f d1 84 |.e,..O.c;b......| +00000350 79 80 25 04 bc e0 f9 70 98 e1 8c 15 55 ba cf a3 |y.%....p....U...| +00000360 0a 24 64 8c 3a b2 b7 a8 04 c1 17 03 03 00 99 c0 |.$d.:...........| +00000370 87 16 ce 52 d1 e9 83 f3 46 02 91 89 a1 6d 24 17 |...R....F....m$.| +00000380 dc 6a 05 bb c2 fb bd 93 94 05 60 8c 6c 47 f6 4a |.j........`.lG.J| +00000390 d8 ad 42 99 8b 77 92 91 f3 58 1e 10 3b 59 b1 19 |..B..w...X..;Y..| +000003a0 55 2c 3b f2 5b f3 e5 67 b2 e1 9c a8 68 dd 0e b9 |U,;.[..g....h...| +000003b0 67 c4 61 63 b3 bc 15 7b d6 76 7d 44 42 46 57 96 |g.ac...{.v}DBFW.| +000003c0 b3 10 40 39 2b 8c d5 fa cf a0 32 c0 d5 1a aa 96 |..@9+.....2.....| +000003d0 95 3b d5 55 fe 06 d2 34 31 7c 29 95 86 ac 7e f5 |.;.U...41|)...~.| +000003e0 e6 6b 7d a6 b5 52 37 2d 02 56 b8 12 66 33 67 80 |.k}..R7-.V..f3g.| +000003f0 14 5f 78 b3 a3 bf fc 4f cb 16 82 4e f5 c4 1b a1 |._x....O...N....| +00000400 33 3e 6c ed df 7b 4d 0b 17 03 03 00 35 dd de ca |3>l..{M.....5...| +00000410 4d 9e 09 ba 14 09 72 72 23 9f 3c 7e 2c 46 e5 5e |M.....rr#.<~,F.^| +00000420 50 a2 21 02 f7 03 4b 76 ab 4c a8 0b a2 b3 9b 7a |P.!...Kv.L.....z| +00000430 fc b9 5d a2 ac 0b c3 55 15 b8 b8 23 2b 61 46 00 |..]....U...#+aF.| +00000440 1c 5c |.\| >>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 02 11 9e 9e cf 44 84 |..............D.| -00000010 df e7 23 47 2d 4e 85 fa f2 02 2a 79 4d 3a 3d df |..#G-N....*yM:=.| -00000020 48 95 2e d7 0d 3c d0 05 fc bf bb 23 0a 25 59 76 |H....<.....#.%Yv| -00000030 fd 04 f8 f0 81 88 85 9f 99 f0 55 91 9a 79 8a 39 |..........U..y.9| -00000040 f4 6e 49 92 be ed 1d d1 20 19 77 bc 55 9b b0 da |.nI..... .w.U...| -00000050 d1 c4 9f b5 2f 5c 1a 60 38 e1 92 9b f9 a1 97 6b |..../\.`8......k| -00000060 1b d0 d0 d0 05 7a 41 26 d4 6b 12 a0 b3 c6 33 13 |.....zA&.k....3.| -00000070 4f 74 10 d6 91 fb b0 69 46 46 ca de 7c 05 d6 62 |Ot.....iFF..|..b| -00000080 51 23 12 58 00 ff 25 8e c8 5f 54 85 f4 2f e9 f9 |Q#.X..%.._T../..| -00000090 f1 1e 32 b9 f1 a6 fb 90 9b a9 65 d2 c9 ea a7 1a |..2.......e.....| -000000a0 e8 c9 a8 bb 7e 3d 3f 03 62 fc f4 06 a4 a2 f7 41 |....~=?.b......A| -000000b0 60 f5 f1 df 3e d6 31 51 f4 dc b1 d3 60 4b 84 4f |`...>.1Q....`K.O| -000000c0 99 e2 9f b2 f0 d5 fd b2 f3 5c 24 5f 91 a6 94 cd |.........\$_....| -000000d0 37 61 91 4e cc ae cd c1 b5 cc 58 5f 9a 91 a1 13 |7a.N......X_....| -000000e0 23 42 8a c5 27 4c 66 32 69 9c 75 9f 2a ed 73 1d |#B..'Lf2i.u.*.s.| -000000f0 29 2e 36 50 34 b4 80 d2 08 e6 9f c6 3e da df 9f |).6P4.......>...| -00000100 e0 2a 08 88 47 b6 d3 ff f7 6c 6c 91 1a 8e 53 89 |.*..G....ll...S.| -00000110 53 6c b8 d7 83 37 ab 03 59 e6 4f 41 42 af d4 f9 |Sl...7..Y.OAB...| -00000120 ac 9d ae d1 77 f1 71 79 a0 16 c4 c7 b5 a6 a9 9f |....w.qy........| -00000130 59 da 55 fb c5 88 8c 13 04 c2 06 39 8f ae 7e ca |Y.U........9..~.| -00000140 99 ce cd aa 86 0a 00 bd 56 f1 98 d9 c8 d2 c1 c0 |........V.......| -00000150 df 16 c2 6f 78 da 66 3f cc 43 c7 38 33 1b 3b 5b |...ox.f?.C.83.;[| -00000160 f8 7e d8 b7 ef 4c 6d c7 f6 84 56 8d 76 f7 0d 83 |.~...Lm...V.v...| -00000170 94 e6 ad c5 f3 05 5c f4 17 69 d5 83 98 c3 43 8e |......\..i....C.| -00000180 9f a5 5c 7b 12 ea f4 1f 39 ce 0d 83 15 b1 e6 ce |..\{....9.......| -00000190 c1 35 9b 8c ec c6 d2 d7 f9 02 36 90 24 f4 3a 70 |.5........6.$.:p| -000001a0 ce bb 8d bb 4b b2 aa 64 f0 b5 c0 88 cc 06 e3 9c |....K..d........| -000001b0 f7 70 64 fd 5d 48 f5 c8 07 48 c2 09 c4 07 56 b9 |.pd.]H...H....V.| -000001c0 86 e9 d6 7b dc ac a5 00 2c 1d 80 8f 47 f2 c4 c7 |...{....,...G...| -000001d0 ab dc 7b 41 7b 3d 47 db 09 12 02 9f 1b 63 e7 cc |..{A{=G......c..| -000001e0 38 1d 33 56 e0 ae 63 7a 95 73 5f e6 da 13 53 49 |8.3V..cz.s_...SI| -000001f0 5f 69 e9 ff 86 26 bd 9a dd be 5c 75 e7 69 66 b4 |_i...&....\u.if.| -00000200 27 3f 79 d2 2e 8e 79 9e 89 42 58 20 a2 ca 8c 2a |'?y...y..BX ...*| -00000210 37 b8 99 81 66 3a 31 66 1a 95 4c 47 17 03 03 00 |7...f:1f..LG....| -00000220 99 66 08 07 06 6d 95 fe f1 72 2a 7c de 84 06 b0 |.f...m...r*|....| -00000230 3d d7 d1 6b 47 0e 4d fb 9e ab 55 f7 71 c5 5d 11 |=..kG.M...U.q.].| -00000240 cb c7 fb 45 90 9d 22 eb ec 03 d6 ce 8c 01 ff 81 |...E..".........| -00000250 a2 90 23 1d 7a f3 cb 16 76 a5 05 57 77 f6 af f0 |..#.z...v..Ww...| -00000260 29 6c 6c 39 9e 99 55 c0 38 c3 31 68 49 b3 bf cc |)ll9..U.8.1hI...| -00000270 31 e2 6d a4 4c e7 99 53 2f 31 3f 05 2c 7c 1b 10 |1.m.L..S/1?.,|..| -00000280 60 ce 8b 60 47 16 eb e5 8b be 1b 7a 95 b9 3c 60 |`..`G......z..<`| -00000290 1c d6 b5 13 5f ad b9 bb 13 dd d6 08 8e 70 cb 2a |...._........p.*| -000002a0 26 3e df ce 7c 21 e5 27 7e 27 ec 75 b6 47 a0 89 |&>..|!.'~'.u.G..| -000002b0 2e e1 3c ab 0d 72 90 d1 d5 07 17 03 03 00 35 82 |..<..r........5.| -000002c0 6b 48 4a 9a 63 16 07 8f b2 d3 4a 65 7d e0 c4 e8 |kHJ.c.....Je}...| -000002d0 27 3e ce 4a 0a c8 63 e0 f9 70 98 c0 6a 12 39 ec |'>.J..c..p..j.9.| -000002e0 e1 52 de 73 58 2d f0 7c bc 8d 41 16 be 89 a0 88 |.R.sX-.|..A.....| -000002f0 56 e5 ef f6 |V...| +00000000 14 03 03 00 01 01 17 03 03 02 11 79 f8 bd a7 4e |...........y...N| +00000010 90 84 77 6f d1 a8 95 67 b7 0b e2 7a 4e 16 e9 ca |..wo...g...zN...| +00000020 1c f3 31 df a8 0e 99 02 c0 09 68 de 6a bb c2 bd |..1.......h.j...| +00000030 19 10 30 65 e6 5d d1 43 e2 aa 81 ba ea 3d 30 9a |..0e.].C.....=0.| +00000040 bb a8 66 ef 91 d1 1d 4c cd 93 97 19 f5 b7 52 1f |..f....L......R.| +00000050 c3 4b f8 dd 2f 39 53 54 68 06 dd 90 c1 75 57 9a |.K../9STh....uW.| +00000060 d6 9d c5 79 36 f9 5e bc c6 9b b8 bd 3d 14 40 71 |...y6.^.....=.@q| +00000070 a8 db 5c a8 d0 28 f3 a6 c1 37 29 c1 38 3f a3 51 |..\..(...7).8?.Q| +00000080 29 5c 01 eb 5c 7e c7 09 e6 2b fd 48 6f 53 77 25 |)\..\~...+.HoSw%| +00000090 c8 55 bb fd 68 21 a4 f0 f8 0e 52 41 97 81 20 78 |.U..h!....RA.. x| +000000a0 5e b8 77 3e 4e 6c 0a b1 32 98 2e d4 58 dd 64 fa |^.w>Nl..2...X.d.| +000000b0 8a 3e ba ea 79 67 c1 01 97 d2 5c d6 09 81 57 b0 |.>..yg....\...W.| +000000c0 fa c3 b8 3d 91 ee 7e 06 47 a8 3e 7b 59 74 14 44 |...=..~.G.>{Yt.D| +000000d0 29 28 29 1f 52 00 b8 31 4f ae 60 d5 18 72 fb a7 |)().R..1O.`..r..| +000000e0 21 0f 79 73 d8 e2 5c 6b b7 aa 78 53 f0 83 b5 ec |!.ys..\k..xS....| +000000f0 89 fc d0 fd 84 2e f6 3b 65 1d ac fe e8 75 10 f6 |.......;e....u..| +00000100 52 01 7f 5a 67 6d 1c 1d 82 4d eb 9d 2f fa 54 4e |R..Zgm...M../.TN| +00000110 0f 05 c8 d0 c3 50 6b cb 15 f0 27 5e 1d 15 b4 60 |.....Pk...'^...`| +00000120 85 bc b0 0e 54 3a 10 54 f9 4c 43 db 57 74 96 4b |....T:.T.LC.Wt.K| +00000130 12 1c c8 1b 4c b7 d6 44 e7 df 95 9b 1d 28 cc d0 |....L..D.....(..| +00000140 20 a5 9f 28 5d da 20 1a 46 42 1c b5 88 81 6b 3e | ..(]. .FB....k>| +00000150 0f 7b 37 5f b8 8e e5 b8 57 3c e7 03 6f 4f be 83 |.{7_....W<..oO..| +00000160 5a 3a a9 46 c6 e9 42 68 4f 10 38 bc ba 4d 67 7b |Z:.F..BhO.8..Mg{| +00000170 19 9a b0 bd ce 9a 8f 21 ff eb 82 59 a6 2f 0a 0f |.......!...Y./..| +00000180 b2 eb 76 c0 e2 dc 3f f4 3b c5 26 d3 7e 8c ed c3 |..v...?.;.&.~...| +00000190 5d 0f 80 56 a0 07 76 88 4c ab 04 3c aa 8a 44 65 |]..V..v.L..<..De| +000001a0 a7 5a 7b 31 29 5f 41 b8 12 c0 c0 f1 cd 95 08 0e |.Z{1)_A.........| +000001b0 f7 89 a0 af 91 e6 52 14 5a 2b 39 c5 c6 4e b7 72 |......R.Z+9..N.r| +000001c0 93 e2 a7 6f 00 b4 57 9b 20 e4 90 b9 57 f0 67 40 |...o..W. ...W.g@| +000001d0 e3 87 7d f6 6b f6 87 91 7f f6 3b 99 f2 93 b3 35 |..}.k.....;....5| +000001e0 e7 d4 fe 7c 1c b7 08 4a 00 de 7c 6c 85 df 2d 37 |...|...J..|l..-7| +000001f0 3b 69 62 18 c6 f9 e0 e3 6e 1d 30 cd 35 7d 83 5c |;ib.....n.0.5}.\| +00000200 1d 0c d8 61 df 4b f3 20 77 81 b1 9e 5f 84 79 44 |...a.K. w..._.yD| +00000210 93 b6 30 60 2d 76 4e 6d 4d 18 3a 21 17 03 03 00 |..0`-vNmM.:!....| +00000220 99 30 99 a3 ff 5c 70 58 5a d7 f0 ec 97 a0 d9 b8 |.0...\pXZ.......| +00000230 9e 98 08 f6 ec 87 48 3b c6 46 c2 45 c4 29 ab 08 |......H;.F.E.)..| +00000240 f2 ee 94 4d 89 c9 19 b4 0d b0 f6 df f7 a5 8d 4b |...M...........K| +00000250 2f 53 62 b8 ee 4c 8a cf 81 be fb 7e 16 2f ec f3 |/Sb..L.....~./..| +00000260 03 49 18 93 dc d3 53 67 fc a2 03 f8 f6 ab 26 87 |.I....Sg......&.| +00000270 92 32 7c 06 1a 12 14 29 cf a2 43 e4 36 04 2c ad |.2|....)..C.6.,.| +00000280 68 ea 5f 5a d2 83 81 d7 96 7d 8c 2e 9a 98 14 56 |h._Z.....}.....V| +00000290 a7 a3 23 69 d5 fd 21 9e 2f 81 43 2b 8a ad 2e c9 |..#i..!./.C+....| +000002a0 50 a8 a5 5c 28 b3 a0 62 c0 95 78 92 f7 3b 7b c0 |P..\(..b..x..;{.| +000002b0 1c a9 29 c4 34 28 39 c4 0b ef 17 03 03 00 35 8d |..).4(9.......5.| +000002c0 35 f3 1d 55 34 aa 92 ff 8f e6 2e c2 9b 2f c6 c8 |5..U4......../..| +000002d0 29 69 66 08 db fb 6f b5 22 4e bf 62 35 43 6c 72 |)if...o."N.b5Clr| +000002e0 c6 2a c4 57 8c a9 42 2c b8 5e 82 25 b2 92 aa 82 |.*.W..B,.^.%....| +000002f0 77 5f a4 1f 17 03 03 00 13 cc 12 01 75 9c 9f d3 |w_..........u...| +00000300 3f 17 17 a8 b8 8b b3 ae dc f6 08 34 |?..........4| >>> Flow 4 (server to client) -00000000 17 03 03 02 83 ce c4 10 39 1a fe 62 a2 ff 27 6d |........9..b..'m| -00000010 b7 e3 1d d6 8e b8 a2 7e f5 30 87 35 16 41 fb 04 |.......~.0.5.A..| -00000020 3c 79 9e 02 9b 06 4c a7 ba 01 5b cf 94 bc c8 08 |.| -00000050 58 7d fe c1 e3 78 79 31 48 d2 74 c0 8d 17 97 6f |X}...xy1H.t....o| -00000060 30 bb 8a 2c 8c d4 76 3d 3f f0 20 24 3d 5a 21 0c |0..,..v=?. $=Z!.| -00000070 37 7b 14 45 e6 69 db ed 52 50 a0 77 e9 a2 84 59 |7{.E.i..RP.w...Y| -00000080 0c 96 c1 ad 48 ed 8d 9f 00 4d f2 15 86 71 c0 fa |....H....M...q..| -00000090 14 b9 77 cb 9f 04 d9 1b be da 68 8e 31 8f 25 14 |..w.......h.1.%.| -000000a0 f5 43 bd e5 6e c5 10 ab f7 68 22 7f c2 ba 5c a6 |.C..n....h"...\.| -000000b0 88 31 c0 a5 fb 63 05 95 52 b3 04 94 14 fe eb 0c |.1...c..R.......| -000000c0 53 a0 c2 bf ae 58 e3 f9 84 22 6b ca 95 33 12 80 |S....X..."k..3..| -000000d0 09 e2 97 b0 2b 4b ed fa 34 e1 5a b1 de 52 b1 2c |....+K..4.Z..R.,| -000000e0 a0 aa 11 d6 fa 07 e1 41 ed 36 9f 9a 1a 56 18 b0 |.......A.6...V..| -000000f0 ef e7 85 dc 5b 53 23 56 c2 ac 34 64 c8 9d 4b 49 |....[S#V..4d..KI| -00000100 6d 29 7e 4b 73 4f 0b 8e 30 86 87 ea cf 1c dd 62 |m)~KsO..0......b| -00000110 c0 a4 96 aa fe 41 e7 25 94 8e 08 b5 4d 42 26 d3 |.....A.%....MB&.| -00000120 ba 84 98 bf 27 2b d5 3d 37 b9 b1 b5 24 33 e3 4d |....'+.=7...$3.M| -00000130 3f 05 38 54 fe 2c 15 63 20 2e 70 c0 c6 da 0e 89 |?.8T.,.c .p.....| -00000140 b6 99 07 db e3 7c 3e 58 d0 a3 2b 50 c4 f3 21 92 |.....|>X..+P..!.| -00000150 62 e0 e9 b5 d4 7a 6b 23 a2 05 ef 9c f5 f5 05 57 |b....zk#.......W| -00000160 cd d4 4d 0a 2f 17 ca ac fc 9d 7e 60 ec 3c 80 8c |..M./.....~`.<..| -00000170 1f 99 da b7 f6 14 7a e1 86 76 50 8d f8 6b 92 24 |......z..vP..k.$| -00000180 f2 b7 82 fa 3c 9b 14 af 0f 37 40 ae 7f 10 f5 0a |....<....7@.....| -00000190 f2 0f 0f bd 01 b7 0a f7 b6 d0 7f cf bf e6 67 55 |..............gU| -000001a0 cc 36 af a6 d8 c4 ca 80 c7 af 35 ff 6e 83 56 30 |.6........5.n.V0| -000001b0 62 26 49 bb 1a 04 8b 39 10 7b 0f 09 19 2b 0f 95 |b&I....9.{...+..| -000001c0 08 9d c8 85 3b 5d 8c 97 16 ae cd 92 00 d5 3e 50 |....;]........>P| -000001d0 54 66 85 8f 42 9b 60 3d f8 99 ca c7 07 3b 51 18 |Tf..B.`=.....;Q.| -000001e0 d5 20 37 57 35 0a d8 c6 13 0f 48 94 8f 50 7d 0e |. 7W5.....H..P}.| -000001f0 5a f0 98 b2 5d 5f 46 fb ba 85 c8 4f ba 02 19 86 |Z...]_F....O....| -00000200 0b ef 4a 04 49 1f 06 cd be dc d5 32 74 14 d8 60 |..J.I......2t..`| -00000210 17 a5 b5 a2 70 8e b1 75 29 bc e0 02 e0 a2 1c 7b |....p..u)......{| -00000220 58 cd 96 69 84 0f 95 7b 78 3e 09 72 a6 e0 50 7e |X..i...{x>.r..P~| -00000230 76 b0 7b 44 11 9b b8 7e 7d 09 49 91 75 5b 9b 6f |v.{D...~}.I.u[.o| -00000240 42 a4 e6 54 4d c6 21 65 c4 64 7d c6 29 74 13 8d |B..TM.!e.d}.)t..| -00000250 69 5f 20 8c f1 88 e8 1e 2d c3 13 d5 f5 52 70 24 |i_ .....-....Rp$| -00000260 de ec 64 c7 00 3f 57 e2 3f c4 23 fe e9 65 e6 d9 |..d..?W.?.#..e..| -00000270 92 ae f0 2f 05 4d 01 72 be 0d 7d c0 f4 30 ac 69 |.../.M.r..}..0.i| -00000280 3c 7c c1 72 c1 b7 c4 c9 17 03 03 00 1e 73 8f 48 |<|.r.........s.H| -00000290 cf 34 35 31 9b 63 59 59 1b 23 e1 6b b2 3a 0f df |.451.cYY.#.k.:..| -000002a0 21 69 8e 73 1a 61 09 5b 82 c7 78 17 03 03 00 13 |!i.s.a.[..x.....| -000002b0 4f a0 ab 25 3f a4 85 9e 78 58 69 d2 2c c3 b6 df |O..%?...xXi.,...| -000002c0 32 4a 7f |2J.| +00000000 17 03 03 02 83 63 68 c7 ae a5 c2 03 56 49 d3 13 |.....ch.....VI..| +00000010 45 f0 de 02 20 70 1a cb a5 cc 6f fa 0e 4b 28 65 |E... p....o..K(e| +00000020 4f 6d 76 2e b0 61 cf fe be 43 82 02 44 06 e4 1e |Omv..a...C..D...| +00000030 91 0c 64 1b 0e 58 53 c0 15 84 e8 6a 23 64 a1 cb |..d..XS....j#d..| +00000040 cd af e6 98 c1 c2 10 23 2b dd 54 9c ff d8 11 af |.......#+.T.....| +00000050 41 0c 88 7b 77 5c 12 47 7e f9 61 97 d6 f4 65 a7 |A..{w\.G~.a...e.| +00000060 5e 9c 06 0e 8a 96 5a 4c 60 f9 ce fb 52 a6 61 44 |^.....ZL`...R.aD| +00000070 7a d1 41 54 10 51 b6 26 d4 18 fb 37 75 55 7f 18 |z.AT.Q.&...7uU..| +00000080 10 39 ea b1 f7 d5 8f 3a a4 e8 d8 be f5 2f c2 90 |.9.....:...../..| +00000090 1a dd bc d7 50 b7 0e 7e c8 71 88 8f a0 04 34 2d |....P..~.q....4-| +000000a0 6f 35 f5 3f 43 08 1d 28 c7 30 db 8e c0 6c cd 14 |o5.?C..(.0...l..| +000000b0 93 10 fc b4 58 43 92 6d a3 3c 2e 87 71 12 70 c5 |....XC.m.<..q.p.| +000000c0 ec f8 64 5a 28 ee 3c 67 05 f4 00 f8 16 11 a6 49 |..dZ(.`3e.^_.| +00000110 7b 16 78 d9 8d 2a 92 16 62 02 fc 27 ee 72 f4 2e |{.x..*..b..'.r..| +00000120 86 11 32 55 a2 9b b7 d3 3a 3b 87 be 28 8f 30 e7 |..2U....:;..(.0.| +00000130 c7 ca 34 51 e5 3b 96 55 c1 d2 b2 b1 4e 84 85 0c |..4Q.;.U....N...| +00000140 df d9 25 3e 29 b8 56 4a 32 b7 45 1a b3 05 c1 d6 |..%>).VJ2.E.....| +00000150 ca ac 13 74 59 b6 0d 03 14 f2 fa b7 05 c4 2f da |...tY........./.| +00000160 11 65 a4 89 06 c6 fd 2b 10 3c 13 3d 92 d5 6a 1c |.e.....+.<.=..j.| +00000170 c5 01 10 b5 1a 3d a0 a5 ea ef 11 74 8b 68 24 20 |.....=.....t.h$ | +00000180 04 58 68 e4 e3 69 b7 12 03 f1 4c dd 78 65 04 58 |.Xh..i....L.xe.X| +00000190 d9 85 45 39 d2 74 18 f7 5c b4 59 fc 08 fb e0 49 |..E9.t..\.Y....I| +000001a0 c6 73 e0 0d 18 05 6a 84 95 03 11 ad 73 1d 45 d3 |.s....j.....s.E.| +000001b0 d7 66 c9 14 14 f4 ed 39 a6 b2 bd 81 ac 23 c0 d9 |.f.....9.....#..| +000001c0 ba 6a 82 16 75 2f c1 31 4f 83 25 ce 87 fb 23 97 |.j..u/.1O.%...#.| +000001d0 a0 0d 7c c8 2d 35 ce a6 e8 76 65 cb 72 cc 95 fc |..|.-5...ve.r...| +000001e0 8c 65 eb f7 74 7f a6 fc 1e 03 05 cd dc 56 8d 3c |.e..t........V.<| +000001f0 09 0b 74 48 24 72 19 07 c0 c4 a3 32 28 15 33 45 |..tH$r.....2(.3E| +00000200 ef c6 02 f2 8d bf 39 a9 b9 41 bd 99 77 be 36 67 |......9..A..w.6g| +00000210 0e eb 62 2b fa cd c9 6e b8 59 d8 f9 2b dd 09 1e |..b+...n.Y..+...| +00000220 4c 4a 90 e5 d4 4c 54 10 b9 f1 e3 5a 88 4b 3f 30 |LJ...LT....Z.K?0| +00000230 c9 7c d5 be e5 b0 44 4f bb 41 7a 83 e2 47 0c 73 |.|....DO.Az..G.s| +00000240 28 b9 f2 c0 6c 28 0c 3c 3a cd 34 92 5c 13 f8 15 |(...l(.<:.4.\...| +00000250 88 5b 02 fa 65 fd 1c b9 c0 cc 78 17 37 cc 53 50 |.[..e.....x.7.SP| +00000260 0f 53 5e a0 fa 08 48 93 c2 4e 7d c1 f9 bb f7 6a |.S^...H..N}....j| +00000270 e0 0e 8b 14 1a 64 60 b6 67 3a 07 68 13 20 e1 8a |.....d`.g:.h. ..| +00000280 f2 7b 0d 25 c6 11 2f 9e 17 03 03 00 1e 1e a5 9c |.{.%../.........| +00000290 f5 56 23 e2 91 d8 e1 fd da 88 04 24 b5 66 79 06 |.V#........$.fy.| +000002a0 b2 3d e8 95 60 e1 86 2d 34 f4 c8 17 03 03 00 13 |.=..`..-4.......| +000002b0 2a c7 60 04 0d 2f b5 d7 d2 c2 f9 15 bf 26 d7 84 |*.`../.......&..| +000002c0 05 98 ee |...| diff --git a/src/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedNotGiven b/src/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedNotGiven index b839c95879..7a06770a57 100644 --- a/src/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedNotGiven +++ b/src/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedNotGiven @@ -1,103 +1,105 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 ca 01 00 00 c6 03 03 4a ea 7e 77 82 |...........J.~w.| -00000010 17 37 46 db 49 14 d2 41 e4 14 b0 46 20 9d 50 45 |.7F.I..A...F .PE| -00000020 d1 75 08 82 2b 8d bc 9a 75 e3 71 20 ce 77 9a 79 |.u..+...u.q .w.y| -00000030 98 24 bc 15 be ac 30 fe 66 35 ab 51 be bd b4 fa |.$....0.f5.Q....| -00000040 6f 53 1f e9 5f 54 58 75 ce 94 f9 47 00 04 13 01 |oS.._TXu...G....| +00000000 16 03 01 00 ca 01 00 00 c6 03 03 00 69 af 00 d0 |............i...| +00000010 54 e8 0e 25 4c 62 db 87 e1 af 15 9e cf 14 ac b6 |T..%Lb..........| +00000020 ce 8c 5a 65 99 f3 c0 48 2e b6 00 20 c4 bf 7a 0b |..Ze...H... ..z.| +00000030 d8 da 4f 37 b8 12 7c ff 2e 1e ac 80 d4 32 77 0f |..O7..|......2w.| +00000040 92 8c b4 76 53 57 ba 7d bb 15 78 c8 00 04 13 01 |...vSW.}..x.....| 00000050 00 ff 01 00 00 79 00 0b 00 04 03 00 01 02 00 0a |.....y..........| 00000060 00 0c 00 0a 00 1d 00 17 00 1e 00 19 00 18 00 16 |................| 00000070 00 00 00 17 00 00 00 0d 00 1e 00 1c 04 03 05 03 |................| 00000080 06 03 08 07 08 08 08 09 08 0a 08 0b 08 04 08 05 |................| 00000090 08 06 04 01 05 01 06 01 00 2b 00 03 02 03 04 00 |.........+......| -000000a0 2d 00 02 01 01 00 33 00 26 00 24 00 1d 00 20 e0 |-.....3.&.$... .| -000000b0 64 7e 58 b6 e7 32 fc c9 d6 3e f7 e0 f5 6a 9c 3a |d~X..2...>...j.:| -000000c0 e6 8f 83 d7 1c 27 62 72 71 06 71 de 49 96 05 |.....'brq.q.I..| +000000a0 2d 00 02 01 01 00 33 00 26 00 24 00 1d 00 20 30 |-.....3.&.$... 0| +000000b0 a0 2a f8 e2 67 08 84 a8 c9 fc f8 de 0e fb 3c 0c |.*..g.........<.| +000000c0 59 10 2d 50 e9 cc d4 32 5c 86 e2 6e 0d ba 03 |Y.-P...2\..n...| >>> Flow 2 (server to client) 00000000 16 03 03 00 7a 02 00 00 76 03 03 00 00 00 00 00 |....z...v.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| -00000020 00 00 00 00 00 00 00 00 00 00 00 20 ce 77 9a 79 |........... .w.y| -00000030 98 24 bc 15 be ac 30 fe 66 35 ab 51 be bd b4 fa |.$....0.f5.Q....| -00000040 6f 53 1f e9 5f 54 58 75 ce 94 f9 47 13 01 00 00 |oS.._TXu...G....| +00000020 00 00 00 00 00 00 00 00 00 00 00 20 c4 bf 7a 0b |........... ..z.| +00000030 d8 da 4f 37 b8 12 7c ff 2e 1e ac 80 d4 32 77 0f |..O7..|......2w.| +00000040 92 8c b4 76 53 57 ba 7d bb 15 78 c8 13 01 00 00 |...vSW.}..x.....| 00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 2f |..+.....3.$... /| 00000060 e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 |.}.G.bC.(.._.).0| 00000070 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 14 |.........._X.;t.| -00000080 03 03 00 01 01 17 03 03 00 17 d0 8f 0a 7e 6c 33 |.............~l3| -00000090 0b be 2a 24 0e fc af df 6e 7d ad 22 28 82 77 60 |..*$....n}."(.w`| -000000a0 3d 17 03 03 00 3e 8f 87 8f f1 5a f6 6f eb eb d9 |=....>....Z.o...| -000000b0 da aa fc 3c 6d ac 73 94 a3 13 5f fe 01 bb 75 eb |........| -000001f0 50 76 d6 79 39 e8 25 bc 3b d9 5a a4 a8 5e 08 6a |Pv.y9.%.;.Z..^.j| -00000200 1c 48 b1 11 f0 d9 b9 48 39 e1 23 db 41 8c bf bd |.H.....H9.#.A...| -00000210 20 27 7b 0c 89 10 1f b0 ae 70 18 9a 7f f2 b4 1d | '{......p......| -00000220 20 cd 6d 80 38 00 a4 33 de 22 ef f6 42 52 c7 66 | .m.8..3."..BR.f| -00000230 83 4a 67 18 6b a6 38 27 d3 40 cf a2 a9 3e 58 06 |.Jg.k.8'.@...>X.| -00000240 91 a7 36 08 29 10 4d 8f 1b f9 7c 5a 17 05 81 b9 |..6.).M...|Z....| -00000250 4b 60 48 40 49 73 63 8a ef 9f f2 9e 80 85 57 fa |K`H@Isc.......W.| -00000260 0a b8 72 83 f3 26 fa 07 ae d2 47 99 b5 a6 5d c5 |..r..&....G...].| -00000270 1e b5 fc ea 0f 17 f8 ba e2 5c 7d 59 70 53 2e 23 |.........\}YpS.#| -00000280 f7 55 75 cb de 82 dc ca b1 bf 3f 5f 7d 7d 92 3c |.Uu.......?_}}.<| -00000290 29 29 64 30 74 0a 01 0b c0 95 db 45 fe 20 be 38 |))d0t......E. .8| -000002a0 c5 87 b7 e4 a9 93 63 67 6b 9a 2f 24 9e 62 8f 1d |......cgk./$.b..| -000002b0 bd 8c 4a d4 b0 0f 95 2f 56 b2 1c e8 5a 58 81 2e |..J..../V...ZX..| -000002c0 b5 b5 b5 f2 1b 7f 6c 39 58 75 51 dc 83 2a 59 0b |......l9XuQ..*Y.| -000002d0 78 5e 22 7e af ee 59 af b9 8f dc 65 97 af a5 b5 |x^"~..Y....e....| -000002e0 b8 50 af 35 51 30 e7 0a 75 e2 d0 33 e2 fb f4 b1 |.P.5Q0..u..3....| -000002f0 99 cd 5f 72 6b a9 f8 85 a1 a5 19 7e 2b 91 01 19 |.._rk......~+...| -00000300 09 dd 88 6e a7 d6 54 57 cd ef d0 97 6a 68 d9 6e |...n..TW....jh.n| -00000310 52 38 ef a5 fa 84 63 70 f0 6d 64 ec 66 1a c9 b5 |R8....cp.md.f...| -00000320 78 ba 17 74 f4 b4 2b a2 fe 9a 7f 38 b8 5e 8b 56 |x..t..+....8.^.V| -00000330 a6 7b 2c 92 7f db 58 c8 fa f9 2d 6b 00 25 dc 0a |.{,...X...-k.%..| -00000340 aa 13 e8 40 f3 fd 47 23 f6 bf 1c 30 fc 91 18 95 |...@..G#...0....| -00000350 ac a8 82 3d f5 ef 17 03 03 00 99 7e 30 4f f1 00 |...=.......~0O..| -00000360 1e dd eb c6 54 d2 f5 f7 21 aa 6b b0 83 0c fa 8b |....T...!.k.....| -00000370 12 af ac 15 3e 54 b6 1c 85 9b 0c 80 02 d8 e3 5f |....>T........._| -00000380 36 57 64 fe 7a b8 31 d0 aa 59 f1 e6 af e0 27 c5 |6Wd.z.1..Y....'.| -00000390 b8 d8 2f ab e0 cc c3 02 18 73 30 36 b5 2a 0d 12 |../......s06.*..| -000003a0 a4 45 e6 c3 79 9f 54 cb 51 61 1a b8 aa 87 45 43 |.E..y.T.Qa....EC| -000003b0 8e 93 58 66 f2 97 cb 3b 44 df ae 93 17 de 22 99 |..Xf...;D.....".| -000003c0 3c b4 9d 21 a6 db 03 ce 7b fb 67 b9 6e fb ab 50 |<..!....{.g.n..P| -000003d0 f8 33 9f 20 a0 fb e9 54 bb 62 16 19 d6 df 8c fe |.3. ...T.b......| -000003e0 3d 63 42 7c b0 72 2b 0d 87 1e f7 7d bb 59 ba f5 |=cB|.r+....}.Y..| -000003f0 d6 e8 f3 57 17 03 03 00 35 9e 6f 39 92 2e 32 10 |...W....5.o9..2.| -00000400 03 cd f0 28 2c 1a 32 77 19 c8 39 38 60 0c 28 b7 |...(,.2w..98`.(.| -00000410 8c 3a d8 50 a1 44 e4 d6 c5 64 59 88 2d a4 23 c9 |.:.P.D...dY.-.#.| -00000420 26 d1 96 0c c9 5d da 84 3e 8a 7d fe 80 77 |&....]..>.}..w| +00000080 03 03 00 01 01 17 03 03 00 17 47 a8 92 ce cd bb |..........G.....| +00000090 b5 b2 f6 47 50 c3 e7 c4 44 59 20 07 13 9a ca 98 |...GP...DY .....| +000000a0 f5 17 03 03 00 52 b6 9d 37 b2 ed bf 53 10 e2 28 |.....R..7...S..(| +000000b0 09 25 e5 f1 f8 6d 10 99 f8 b0 b8 1d cd 5c 82 ff |.%...m.......\..| +000000c0 de fd 9d 8e 89 94 2e 7a 7f ed 30 80 7e f0 e5 ef |.......z..0.~...| +000000d0 13 06 7b cf 8f 91 c9 38 e0 77 52 80 0d 74 a2 28 |..{....8.wR..t.(| +000000e0 a7 73 cd 06 df c4 7e 04 ad 6e e3 44 04 86 98 95 |.s....~..n.D....| +000000f0 b7 2d 76 99 3e 8b cd 7c 17 03 03 02 6d cb e5 77 |.-v.>..|....m..w| +00000100 58 3e c2 74 44 db 85 f8 54 12 02 89 8d 2b 8d 24 |X>.tD...T....+.$| +00000110 2a c0 db 71 25 b8 23 a1 86 1a 09 66 8e 60 b9 58 |*..q%.#....f.`.X| +00000120 40 0f 72 34 95 e2 6b 7c 76 8a 85 e5 dd cd be 0a |@.r4..k|v.......| +00000130 1f a3 13 42 aa 58 d7 95 0a 69 fc 60 5a 4d 17 db |...B.X...i.`ZM..| +00000140 19 59 d3 86 04 3e c2 1b 93 76 68 27 53 ae 07 af |.Y...>...vh'S...| +00000150 47 4e e6 03 b8 fe 8e c5 06 f1 84 54 0c e5 24 be |GN.........T..$.| +00000160 83 43 1f da 1e 3e 7e a3 2f 2f 4d bc cd e5 a5 b5 |.C...>~.//M.....| +00000170 5d 66 e1 2a 9b 1e 76 6c be e7 9d f7 ed c5 1b e9 |]f.*..vl........| +00000180 91 39 18 30 22 b5 d8 71 66 4d 62 b8 6f 94 7f 5f |.9.0"..qfMb.o.._| +00000190 84 77 a2 b5 79 02 a1 44 6a 5c d2 39 c2 95 d6 8e |.w..y..Dj\.9....| +000001a0 49 36 91 97 2e 02 59 47 e8 fa 78 b9 a7 0e 41 f2 |I6....YG..x...A.| +000001b0 df 92 44 7b 59 8f 9c e9 c8 1b 0a 15 cf 1a fe 5a |..D{Y..........Z| +000001c0 b2 5a 9d 9c b2 0b 1e 48 03 a9 2b 73 df 9f dd b2 |.Z.....H..+s....| +000001d0 30 d1 ba bd 46 e6 50 30 ed e3 c5 f7 d8 96 d5 cc |0...F.P0........| +000001e0 d2 3a 39 3b f0 a1 f2 8e 29 c4 be e9 ee af cb 7b |.:9;....)......{| +000001f0 f6 7d c3 be 4e 20 6e 63 21 50 d5 34 9a b4 9c 7f |.}..N nc!P.4....| +00000200 95 22 15 e3 ad 12 c8 6a 9c 68 a3 c1 35 c1 e1 fa |.".....j.h..5...| +00000210 ce 15 ef 12 b5 50 5b d3 56 8a 24 b0 61 ca 67 1d |.....P[.V.$.a.g.| +00000220 60 12 b3 4b 42 6a 3d ba ef 80 b1 b9 74 cf ba e0 |`..KBj=.....t...| +00000230 95 5f 1a b9 c6 24 d7 c5 ec 96 3f 6c e8 13 39 66 |._...$....?l..9f| +00000240 da e6 49 39 dc ca bc 2a 50 10 cf 51 fe d0 eb 80 |..I9...*P..Q....| +00000250 9c 21 dc 9d ae 10 31 d6 9c 9b ac 3e d6 84 36 e6 |.!....1....>..6.| +00000260 76 a1 d2 86 2a a0 2b d8 91 ba c3 f0 17 f7 7a 69 |v...*.+.......zi| +00000270 0d d3 14 6f ca ba 33 d2 d0 2e 85 a9 d7 dc d2 4a |...o..3........J| +00000280 dc bf 88 68 73 4f b1 35 e0 36 3b ed bd f6 37 0b |...hsO.5.6;...7.| +00000290 07 32 a1 96 81 29 63 e1 38 4d 52 7c 5a d0 4c 6c |.2...)c.8MR|Z.Ll| +000002a0 dd 65 83 75 1d 9e bc e4 c8 e7 75 13 5f 71 11 87 |.e.u......u._q..| +000002b0 ea 4b f3 ee d2 fd 38 2a 88 a6 35 e4 a8 63 77 0e |.K....8*..5..cw.| +000002c0 5f 57 ac a6 a2 e7 43 3c 79 1a 2d c9 1d 5f 65 22 |_W....C.K.5.| +000003c0 29 1d 3e ba a0 91 22 0a 8a aa a3 f8 9b eb 77 fe |).>...".......w.| +000003d0 19 ac 2e a7 29 ab 8f 61 91 af 09 b1 3b b3 4b 69 |....)..a....;.Ki| +000003e0 e6 96 a3 05 46 db 28 9b 1d d0 79 71 3d 93 4e 66 |....F.(...yq=.Nf| +000003f0 5d f4 22 38 91 a1 30 c5 c3 b7 72 fa e6 91 d8 a4 |]."8..0...r.....| +00000400 e9 a0 47 cc 5a 87 5e 60 17 03 03 00 35 ce b7 6e |..G.Z.^`....5..n| +00000410 2c 11 dc d4 b8 e1 a4 4b d8 d6 09 1e fe e3 d3 d3 |,......K........| +00000420 52 be fc cc af 5d 73 45 db 1e 05 b6 b1 38 59 65 |R....]sE.....8Ye| +00000430 df 72 6d 7b af b5 7a 3d e1 8a 27 44 6e 72 25 04 |.rm{..z=..'Dnr%.| +00000440 7c 61 ||a| >>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 00 19 87 49 99 a6 d9 |............I...| -00000010 ed cd f7 7a 75 14 e1 26 41 d2 6e 5c 79 a6 be 7c |...zu..&A.n\y..|| -00000020 5d 9d 44 36 17 03 03 00 35 1b 51 a9 b1 ce 11 ed |].D6....5.Q.....| -00000030 95 47 34 b9 3d 2f 6e 27 b2 e5 31 54 7f e3 8a 11 |.G4.=/n'..1T....| -00000040 fd 54 75 2c b6 8a 56 25 00 29 a7 5f 7a 1e 16 be |.Tu,..V%.)._z...| -00000050 16 e3 86 3a 72 84 0e bc 40 ef fd ad 18 33 |...:r...@....3| +00000000 14 03 03 00 01 01 17 03 03 00 19 01 ab 91 41 25 |..............A%| +00000010 d3 52 97 b2 f8 4e 57 9d c5 d3 7d 34 c4 c3 44 93 |.R...NW...}4..D.| +00000020 79 a5 0c fe 17 03 03 00 35 ba 56 09 d8 9d 73 5e |y.......5.V...s^| +00000030 f4 f4 03 4d bf f7 e4 ab cc 83 26 28 cc 68 78 91 |...M......&(.hx.| +00000040 9f 6f f6 dc d5 34 e5 a5 e6 86 11 b3 71 89 70 25 |.o...4......q.p%| +00000050 8c 83 79 b7 c8 56 92 1d 98 c7 35 cd bb 56 |..y..V....5..V| >>> Flow 4 (server to client) -00000000 17 03 03 00 8b 69 2e 81 c4 4d 43 a6 1f 96 b7 8e |.....i...MC.....| -00000010 87 4a 9b be 48 3c 31 18 98 f4 8c 04 24 b2 52 96 |.J..H<1.....$.R.| -00000020 04 b5 12 7c 54 37 83 6d 51 42 c6 52 f4 a5 bc d3 |...|T7.mQB.R....| -00000030 d1 c8 29 ab 4f e4 02 da 74 ec 8e 13 ad 03 f3 e0 |..).O...t.......| -00000040 7f 44 58 6b c7 28 a5 6a 75 30 b8 b1 31 38 fe ba |.DXk.(.ju0..18..| -00000050 e7 27 ae b3 e7 cb 5e 78 24 82 03 61 ba ae dd 4c |.'....^x$..a...L| -00000060 c6 7b f3 45 cf 6f a8 dc 7d 5d 73 65 db ae dc 10 |.{.E.o..}]se....| -00000070 ff 32 dc 4c b4 5e dc ce 4c 34 37 83 a0 0c d5 20 |.2.L.^..L47.... | -00000080 f1 f6 81 42 bc 63 65 47 80 d0 d6 f3 08 aa e2 58 |...B.ceG.......X| -00000090 17 03 03 00 1e 85 84 f3 e4 0f a8 24 c0 fe fa 2c |...........$...,| -000000a0 8b 60 52 32 73 2b 95 e9 37 3d 1c bd 2f ee ff e2 |.`R2s+..7=../...| -000000b0 70 13 df 17 03 03 00 13 65 2b 11 5f 50 7c 11 eb |p.......e+._P|..| -000000c0 3b 06 75 23 28 13 ca 4a b5 fb dc |;.u#(..J...| +00000000 17 03 03 00 8b eb fd 9e 19 36 7f 54 7f 9f 5a 6b |.........6.T..Zk| +00000010 31 0e e8 ca f3 40 7d 74 0d 82 6f 97 41 fb 15 52 |1....@}t..o.A..R| +00000020 36 00 50 c3 c5 36 ea e3 8f ca 02 b1 de ed 61 8e |6.P..6........a.| +00000030 60 0a d8 cf 0a 7c 47 60 87 3f fa 00 6f 74 a8 42 |`....|G`.?..ot.B| +00000040 c1 8d df f7 4d 7c ac c0 52 7c c9 21 5c 45 32 3f |....M|..R|.!\E2?| +00000050 42 0d 75 64 76 93 18 29 a1 50 06 36 94 bb 1e 52 |B.udv..).P.6...R| +00000060 31 5b b7 32 9a b1 9f 59 30 8a da ff 93 4f c1 b3 |1[.2...Y0....O..| +00000070 e9 8d f2 ec 4a 7b 01 51 5e a2 9b ea 8d a8 53 bd |....J{.Q^.....S.| +00000080 db 94 88 73 3b 9f da 77 a8 de 11 55 7b 06 0f c6 |...s;..w...U{...| +00000090 17 03 03 00 1e 1b 76 21 ea fd a4 47 6e ec 6e 26 |......v!...Gn.n&| +000000a0 00 3e fc 2f 87 8f 4e ee 08 58 e7 cc 46 aa b7 8c |.>./..N..X..F...| +000000b0 c1 5d dd 17 03 03 00 13 dd ed 88 b0 f5 e8 17 f1 |.]..............| +000000c0 66 85 c4 f5 6b 47 7d 5f 19 21 7f |f...kG}_.!.| From eb4069127a7dbdaed480aed80ba6ed1b2ea27901 Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Tue, 20 May 2025 17:34:57 +0200 Subject: [PATCH 63/99] crypto/ecdsa: add low-level encoding functions for keys Fixes #63963 Change-Id: I6a6a4656a729b6211171aca46bdc13fed5fc5643 Reviewed-on: https://go-review.googlesource.com/c/go/+/674475 LUCI-TryBot-Result: Go LUCI Auto-Submit: Filippo Valsorda Reviewed-by: Daniel McCarney Reviewed-by: David Chase Reviewed-by: Roland Shoemaker --- api/next/63963.txt | 4 + .../6-stdlib/99-minor/crypto/ecdsa/63963.md | 3 + src/crypto/ecdsa/ecdsa.go | 174 ++++++++++++++++++ src/crypto/ecdsa/ecdsa_test.go | 155 ++++++++++++++++ 4 files changed, 336 insertions(+) create mode 100644 api/next/63963.txt create mode 100644 doc/next/6-stdlib/99-minor/crypto/ecdsa/63963.md diff --git a/api/next/63963.txt b/api/next/63963.txt new file mode 100644 index 0000000000..f64f214c10 --- /dev/null +++ b/api/next/63963.txt @@ -0,0 +1,4 @@ +pkg crypto/ecdsa, func ParseRawPrivateKey(elliptic.Curve, []uint8) (*PrivateKey, error) #63963 +pkg crypto/ecdsa, func ParseUncompressedPublicKey(elliptic.Curve, []uint8) (*PublicKey, error) #63963 +pkg crypto/ecdsa, method (*PrivateKey) Bytes() ([]uint8, error) #63963 +pkg crypto/ecdsa, method (*PublicKey) Bytes() ([]uint8, error) #63963 diff --git a/doc/next/6-stdlib/99-minor/crypto/ecdsa/63963.md b/doc/next/6-stdlib/99-minor/crypto/ecdsa/63963.md new file mode 100644 index 0000000000..5c329c7d51 --- /dev/null +++ b/doc/next/6-stdlib/99-minor/crypto/ecdsa/63963.md @@ -0,0 +1,3 @@ +The new [ParseRawPrivateKey], [ParseUncompressedPublicKey], [PrivateKey.Bytes], +and [PublicKey.Bytes] functions and methods implement low-level encodings, +replacing the need to use crypto/elliptic or math/big functions and methods. diff --git a/src/crypto/ecdsa/ecdsa.go b/src/crypto/ecdsa/ecdsa.go index 5e670c5081..9affc1ff78 100644 --- a/src/crypto/ecdsa/ecdsa.go +++ b/src/crypto/ecdsa/ecdsa.go @@ -23,6 +23,7 @@ import ( "crypto/internal/boring" "crypto/internal/boring/bbig" "crypto/internal/fips140/ecdsa" + "crypto/internal/fips140/nistec" "crypto/internal/fips140cache" "crypto/internal/fips140hash" "crypto/internal/fips140only" @@ -40,6 +41,18 @@ import ( // PublicKey represents an ECDSA public key. type PublicKey struct { elliptic.Curve + + // X, Y are the coordinates of the public key point. + // + // Modifying the raw coordinates can produce invalid keys, and may + // invalidate internal optimizations; moreover, [big.Int] methods are not + // suitable for operating on cryptographic values. To encode and decode + // PublicKey values, use [PublicKey.Bytes] and [ParseUncompressedPublicKey] + // or [x509.MarshalPKIXPublicKey] and [x509.ParsePKIXPublicKey]. For ECDH, + // use [crypto/ecdh]. For lower-level elliptic curve operations, use a + // third-party module like filippo.io/nistec. + // + // These fields will be deprecated in Go 1.26. X, Y *big.Int } @@ -78,9 +91,94 @@ func (pub *PublicKey) Equal(x crypto.PublicKey) bool { pub.Curve == xx.Curve } +// ParseUncompressedPublicKey parses a public key encoded as an uncompressed +// point according to SEC 1, Version 2.0, Section 2.3.3 (also known as the X9.62 +// uncompressed format). It returns an error if the point is not in uncompressed +// form, is not on the curve, or is the point at infinity. +// +// curve must be one of [elliptic.P224], [elliptic.P256], [elliptic.P384], or +// [elliptic.P521], or ParseUncompressedPublicKey returns an error. +// +// ParseUncompressedPublicKey accepts the same format as +// [ecdh.Curve.NewPublicKey] does for NIST curves, but returns a [PublicKey] +// instead of an [ecdh.PublicKey]. +// +// Note that public keys are more commonly encoded in DER (or PEM) format, which +// can be parsed with [x509.ParsePKIXPublicKey] (and [encoding/pem]). +func ParseUncompressedPublicKey(curve elliptic.Curve, data []byte) (*PublicKey, error) { + if len(data) < 1 || data[0] != 4 { + return nil, errors.New("ecdsa: invalid uncompressed public key") + } + switch curve { + case elliptic.P224(): + return parseUncompressedPublicKey(ecdsa.P224(), curve, data) + case elliptic.P256(): + return parseUncompressedPublicKey(ecdsa.P256(), curve, data) + case elliptic.P384(): + return parseUncompressedPublicKey(ecdsa.P384(), curve, data) + case elliptic.P521(): + return parseUncompressedPublicKey(ecdsa.P521(), curve, data) + default: + return nil, errors.New("ecdsa: curve not supported by ParseUncompressedPublicKey") + } +} + +func parseUncompressedPublicKey[P ecdsa.Point[P]](c *ecdsa.Curve[P], curve elliptic.Curve, data []byte) (*PublicKey, error) { + k, err := ecdsa.NewPublicKey(c, data) + if err != nil { + return nil, err + } + return publicKeyFromFIPS(curve, k) +} + +// Bytes encodes the public key as an uncompressed point according to SEC 1, +// Version 2.0, Section 2.3.3 (also known as the X9.62 uncompressed format). +// It returns an error if the public key is invalid. +// +// PublicKey.Curve must be one of [elliptic.P224], [elliptic.P256], +// [elliptic.P384], or [elliptic.P521], or Bytes returns an error. +// +// Bytes returns the same format as [ecdh.PublicKey.Bytes] does for NIST curves. +// +// Note that public keys are more commonly encoded in DER (or PEM) format, which +// can be generated with [x509.MarshalPKIXPublicKey] (and [encoding/pem]). +func (pub *PublicKey) Bytes() ([]byte, error) { + switch pub.Curve { + case elliptic.P224(): + return publicKeyBytes(ecdsa.P224(), pub) + case elliptic.P256(): + return publicKeyBytes(ecdsa.P256(), pub) + case elliptic.P384(): + return publicKeyBytes(ecdsa.P384(), pub) + case elliptic.P521(): + return publicKeyBytes(ecdsa.P521(), pub) + default: + return nil, errors.New("ecdsa: curve not supported by PublicKey.Bytes") + } +} + +func publicKeyBytes[P ecdsa.Point[P]](c *ecdsa.Curve[P], pub *PublicKey) ([]byte, error) { + k, err := publicKeyToFIPS(c, pub) + if err != nil { + return nil, err + } + return k.Bytes(), nil +} + // PrivateKey represents an ECDSA private key. type PrivateKey struct { PublicKey + + // D is the private scalar value. + // + // Modifying the raw value can produce invalid keys, and may + // invalidate internal optimizations; moreover, [big.Int] methods are not + // suitable for operating on cryptographic values. To encode and decode + // PrivateKey values, use [PrivateKey.Bytes] and [ParseRawPrivateKey] + // or [x509.MarshalPKCS8PrivateKey] and [x509.ParsePKCS8PrivateKey]. + // For ECDH, use [crypto/ecdh]. + // + // This field will be deprecated in Go 1.26. D *big.Int } @@ -134,6 +232,82 @@ func bigIntEqual(a, b *big.Int) bool { return subtle.ConstantTimeCompare(a.Bytes(), b.Bytes()) == 1 } +// ParseRawPrivateKey parses a private key encoded as a fixed-length big-endian +// integer, according to SEC 1, Version 2.0, Section 2.3.6 (sometimes referred +// to as the raw format). It returns an error if the value is not reduced modulo +// the curve's order, or if it's zero. +// +// curve must be one of [elliptic.P224], [elliptic.P256], [elliptic.P384], or +// [elliptic.P521], or ParseRawPrivateKey returns an error. +// +// ParseRawPrivateKey accepts the same format as [ecdh.Curve.NewPrivateKey] does +// for NIST curves, but returns a [PrivateKey] instead of an [ecdh.PrivateKey]. +// +// Note that private keys are more commonly encoded in ASN.1 or PKCS#8 format, +// which can be parsed with [x509.ParseECPrivateKey] or +// [x509.ParsePKCS8PrivateKey] (and [encoding/pem]). +func ParseRawPrivateKey(curve elliptic.Curve, data []byte) (*PrivateKey, error) { + switch curve { + case elliptic.P224(): + return parseRawPrivateKey(ecdsa.P224(), nistec.NewP224Point, curve, data) + case elliptic.P256(): + return parseRawPrivateKey(ecdsa.P256(), nistec.NewP256Point, curve, data) + case elliptic.P384(): + return parseRawPrivateKey(ecdsa.P384(), nistec.NewP384Point, curve, data) + case elliptic.P521(): + return parseRawPrivateKey(ecdsa.P521(), nistec.NewP521Point, curve, data) + default: + return nil, errors.New("ecdsa: curve not supported by ParseRawPrivateKey") + } +} + +func parseRawPrivateKey[P ecdsa.Point[P]](c *ecdsa.Curve[P], newPoint func() P, curve elliptic.Curve, data []byte) (*PrivateKey, error) { + q, err := newPoint().ScalarBaseMult(data) + if err != nil { + return nil, err + } + k, err := ecdsa.NewPrivateKey(c, data, q.Bytes()) + if err != nil { + return nil, err + } + return privateKeyFromFIPS(curve, k) +} + +// Bytes encodes the private key as a fixed-length big-endian integer according +// to SEC 1, Version 2.0, Section 2.3.6 (sometimes referred to as the raw +// format). It returns an error if the private key is invalid. +// +// PrivateKey.Curve must be one of [elliptic.P224], [elliptic.P256], +// [elliptic.P384], or [elliptic.P521], or Bytes returns an error. +// +// Bytes returns the same format as [ecdh.PrivateKey.Bytes] does for NIST curves. +// +// Note that private keys are more commonly encoded in ASN.1 or PKCS#8 format, +// which can be generated with [x509.MarshalECPrivateKey] or +// [x509.MarshalPKCS8PrivateKey] (and [encoding/pem]). +func (priv *PrivateKey) Bytes() ([]byte, error) { + switch priv.Curve { + case elliptic.P224(): + return privateKeyBytes(ecdsa.P224(), priv) + case elliptic.P256(): + return privateKeyBytes(ecdsa.P256(), priv) + case elliptic.P384(): + return privateKeyBytes(ecdsa.P384(), priv) + case elliptic.P521(): + return privateKeyBytes(ecdsa.P521(), priv) + default: + return nil, errors.New("ecdsa: curve not supported by PrivateKey.Bytes") + } +} + +func privateKeyBytes[P ecdsa.Point[P]](c *ecdsa.Curve[P], priv *PrivateKey) ([]byte, error) { + k, err := privateKeyToFIPS(c, priv) + if err != nil { + return nil, err + } + return k.Bytes(), nil +} + // Sign signs a hash (which should be the result of hashing a larger message // with opts.HashFunc()) using the private key, priv. If the hash is longer than // the bit-length of the private key's curve order, the hash will be truncated diff --git a/src/crypto/ecdsa/ecdsa_test.go b/src/crypto/ecdsa/ecdsa_test.go index 84b127dc0f..87e74f2a0e 100644 --- a/src/crypto/ecdsa/ecdsa_test.go +++ b/src/crypto/ecdsa/ecdsa_test.go @@ -546,6 +546,161 @@ func testRFC6979(t *testing.T, curve elliptic.Curve, D, X, Y, msg, r, s string) } } +func TestParseAndBytesRoundTrip(t *testing.T) { + testAllCurves(t, testParseAndBytesRoundTrip) +} + +func testParseAndBytesRoundTrip(t *testing.T, curve elliptic.Curve) { + if strings.HasSuffix(t.Name(), "/Generic") { + t.Skip("these methods don't support generic curves") + } + priv, _ := GenerateKey(curve, rand.Reader) + + b, err := priv.PublicKey.Bytes() + if err != nil { + t.Fatalf("failed to serialize private key's public key: %v", err) + } + if b[0] != 4 { + t.Fatalf("public key bytes doesn't start with 0x04 (uncompressed format)") + } + p, err := ParseUncompressedPublicKey(curve, b) + if err != nil { + t.Fatalf("failed to parse private key's public key: %v", err) + } + if !priv.PublicKey.Equal(p) { + t.Errorf("parsed private key's public key doesn't match original") + } + + bk, err := priv.Bytes() + if err != nil { + t.Fatalf("failed to serialize private key: %v", err) + } + k, err := ParseRawPrivateKey(curve, bk) + if err != nil { + t.Fatalf("failed to parse private key: %v", err) + } + if !priv.Equal(k) { + t.Errorf("parsed private key doesn't match original") + } + + if curve != elliptic.P224() { + privECDH, err := priv.ECDH() + if err != nil { + t.Fatalf("failed to convert private key to ECDH: %v", err) + } + + pp, err := privECDH.Curve().NewPublicKey(b) + if err != nil { + t.Fatalf("failed to parse with ECDH: %v", err) + } + if !privECDH.PublicKey().Equal(pp) { + t.Errorf("parsed ECDH public key doesn't match original") + } + if !bytes.Equal(b, pp.Bytes()) { + t.Errorf("encoded ECDH public key doesn't match Bytes") + } + + kk, err := privECDH.Curve().NewPrivateKey(bk) + if err != nil { + t.Fatalf("failed to parse with ECDH: %v", err) + } + if !privECDH.Equal(kk) { + t.Errorf("parsed ECDH private key doesn't match original") + } + if !bytes.Equal(bk, kk.Bytes()) { + t.Errorf("encoded ECDH private key doesn't match Bytes") + } + } +} + +func TestInvalidPublicKeys(t *testing.T) { + testAllCurves(t, testInvalidPublicKeys) +} + +func testInvalidPublicKeys(t *testing.T, curve elliptic.Curve) { + t.Run("Infinity", func(t *testing.T) { + k := &PublicKey{Curve: curve, X: big.NewInt(0), Y: big.NewInt(0)} + if _, err := k.Bytes(); err == nil { + t.Errorf("PublicKey.Bytes accepted infinity") + } + + b := []byte{0} + if _, err := ParseUncompressedPublicKey(curve, b); err == nil { + t.Errorf("ParseUncompressedPublicKey accepted infinity") + } + b = make([]byte, 1+2*(curve.Params().BitSize+7)/8) + b[0] = 4 + if _, err := ParseUncompressedPublicKey(curve, b); err == nil { + t.Errorf("ParseUncompressedPublicKey accepted infinity") + } + }) + t.Run("NotOnCurve", func(t *testing.T) { + k, _ := GenerateKey(curve, rand.Reader) + k.X = k.X.Add(k.X, big.NewInt(1)) + if _, err := k.Bytes(); err == nil { + t.Errorf("PublicKey.Bytes accepted not on curve") + } + + b := make([]byte, 1+2*(curve.Params().BitSize+7)/8) + b[0] = 4 + k.X.FillBytes(b[1 : 1+len(b)/2]) + k.Y.FillBytes(b[1+len(b)/2:]) + if _, err := ParseUncompressedPublicKey(curve, b); err == nil { + t.Errorf("ParseUncompressedPublicKey accepted not on curve") + } + }) + t.Run("Compressed", func(t *testing.T) { + k, _ := GenerateKey(curve, rand.Reader) + b := elliptic.MarshalCompressed(curve, k.X, k.Y) + if _, err := ParseUncompressedPublicKey(curve, b); err == nil { + t.Errorf("ParseUncompressedPublicKey accepted compressed key") + } + }) +} + +func TestInvalidPrivateKeys(t *testing.T) { + testAllCurves(t, testInvalidPrivateKeys) +} + +func testInvalidPrivateKeys(t *testing.T, curve elliptic.Curve) { + t.Run("Zero", func(t *testing.T) { + k := &PrivateKey{PublicKey{curve, big.NewInt(0), big.NewInt(0)}, big.NewInt(0)} + if _, err := k.Bytes(); err == nil { + t.Errorf("PrivateKey.Bytes accepted zero key") + } + + b := make([]byte, (curve.Params().BitSize+7)/8) + if _, err := ParseRawPrivateKey(curve, b); err == nil { + t.Errorf("ParseRawPrivateKey accepted zero key") + } + }) + t.Run("Overflow", func(t *testing.T) { + d := new(big.Int).Add(curve.Params().N, big.NewInt(5)) + x, y := curve.ScalarBaseMult(d.Bytes()) + k := &PrivateKey{PublicKey{curve, x, y}, d} + if _, err := k.Bytes(); err == nil { + t.Errorf("PrivateKey.Bytes accepted overflow key") + } + + b := make([]byte, (curve.Params().BitSize+7)/8) + k.D.FillBytes(b) + if _, err := ParseRawPrivateKey(curve, b); err == nil { + t.Errorf("ParseRawPrivateKey accepted overflow key") + } + }) + t.Run("Length", func(t *testing.T) { + b := []byte{1, 2, 3} + if _, err := ParseRawPrivateKey(curve, b); err == nil { + t.Errorf("ParseRawPrivateKey accepted short key") + } + + b = append(b, make([]byte, (curve.Params().BitSize+7)/8)...) + if _, err := ParseRawPrivateKey(curve, b); err == nil { + t.Errorf("ParseRawPrivateKey accepted long key") + } + }) +} + func benchmarkAllCurves(b *testing.B, f func(*testing.B, elliptic.Curve)) { tests := []struct { name string From 9112511725e37312a95c9d2c33ff94fe2f4da6af Mon Sep 17 00:00:00 2001 From: qiulaidongfeng <2645477756@qq.com> Date: Sat, 25 Jan 2025 16:45:12 +0800 Subject: [PATCH 64/99] hash: add XOF interface For #69518 Change-Id: I68c7057c776522514eed37cf4dc0cfddec034d3a Reviewed-on: https://go-review.googlesource.com/c/go/+/644235 Reviewed-by: Austin Clements LUCI-TryBot-Result: Go LUCI Reviewed-by: Cherry Mui Reviewed-by: Filippo Valsorda --- api/next/69518.txt | 5 +++++ doc/next/6-stdlib/99-minor/hash/69518.md | 3 +++ src/hash/hash.go | 20 ++++++++++++++++++++ 3 files changed, 28 insertions(+) create mode 100644 api/next/69518.txt create mode 100644 doc/next/6-stdlib/99-minor/hash/69518.md diff --git a/api/next/69518.txt b/api/next/69518.txt new file mode 100644 index 0000000000..b70fcc13fb --- /dev/null +++ b/api/next/69518.txt @@ -0,0 +1,5 @@ +pkg hash, type XOF interface { BlockSize, Read, Reset, Write } #69518 +pkg hash, type XOF interface, BlockSize() int #69518 +pkg hash, type XOF interface, Read([]uint8) (int, error) #69518 +pkg hash, type XOF interface, Reset() #69518 +pkg hash, type XOF interface, Write([]uint8) (int, error) #69518 diff --git a/doc/next/6-stdlib/99-minor/hash/69518.md b/doc/next/6-stdlib/99-minor/hash/69518.md new file mode 100644 index 0000000000..67dbdd4ef7 --- /dev/null +++ b/doc/next/6-stdlib/99-minor/hash/69518.md @@ -0,0 +1,3 @@ +The new [XOF](/pkg/hash#XOF) interface can be implemented by "extendable output +functions", which are hash functions with arbitrary or unlimited output length +such as [BLAKE2Xb](https://pkg.go.dev/golang.org/x/crypto/blake2b). diff --git a/src/hash/hash.go b/src/hash/hash.go index 08a0c6764c..c72c4af710 100644 --- a/src/hash/hash.go +++ b/src/hash/hash.go @@ -56,3 +56,23 @@ type Hash64 interface { Hash Sum64() uint64 } + +// XOF (extendable output function) is a hash function with arbitrary or unlimited output length. +type XOF interface { + // Write absorbs more data into the XOF's state. It panics if called + // after Read. + io.Writer + + // Read reads more output from the XOF. It may return io.EOF if there + // is a limit to the XOF output length. + io.Reader + + // Reset resets the XOF to its initial state. + Reset() + + // BlockSize returns the XOF's underlying block size. + // The Write method must be able to accept any amount + // of data, but it may operate more efficiently if all writes + // are a multiple of the block size. + BlockSize() int +} From 4158ca8d7c521aee5cc48f285f559e74845e973c Mon Sep 17 00:00:00 2001 From: Roland Shoemaker Date: Thu, 8 May 2025 16:27:36 -0700 Subject: [PATCH 65/99] crypto: add a test for disallowed instructions WORD and BYTE usage in crypto assembly cores is an anti-pattern which makes extremely sensitive code significantly harder to understand, and can result in unexpected behavior. Because of this, we've decided to ban their usage in the crypto/ tree (as part of the cryptography assembly policy). This test walks the crypto/ tree looking for assembly files (those with the filetype .s) and look for lines that match the regular rexpression "(^|;)\s(BYTE|WORD)\s". Change-Id: I60b5283e05e8588fa53273904a9611a411741f72 Reviewed-on: https://go-review.googlesource.com/c/go/+/671099 Reviewed-by: David Chase LUCI-TryBot-Result: Go LUCI Reviewed-by: Daniel McCarney Auto-Submit: Roland Shoemaker --- src/crypto/crypto_test.go | 53 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/src/crypto/crypto_test.go b/src/crypto/crypto_test.go index b80fb49c13..66babcc2fb 100644 --- a/src/crypto/crypto_test.go +++ b/src/crypto/crypto_test.go @@ -5,13 +5,19 @@ package crypto_test import ( + "bytes" "crypto" "crypto/rand" "crypto/rsa" "crypto/x509" "encoding/pem" "errors" + "internal/testenv" "io" + "io/fs" + "os" + "path/filepath" + "regexp" "strings" "testing" ) @@ -88,3 +94,50 @@ UjmopwKBgAqB2KYYMUqAOvYcBnEfLDmyZv9BTVNHbR2lKkMYqv5LlvDaBxVfilE0 t.Errorf("VerifyPSS failed for MessageSigner signature: %s", err) } } + +func TestDisallowedAssemblyInstructions(t *testing.T) { + // This test enforces the cryptography assembly policy rule that we do not + // use BYTE or WORD instructions, since these instructions can obscure what + // the assembly is actually doing. If we do not support specific + // instructions in the assembler, we should not be using them until we do. + // + // Instead of using the output of the 'go tool asm' tool, we take the simple + // approach and just search the text of .s files for usage of BYTE and WORD. + // We do this because the assembler itself will sometimes insert WORD + // instructions for things like function preambles etc. + + boringSigPath := filepath.Join("internal", "boring", "sig") + + matcher, err := regexp.Compile(`(^|;)\s(BYTE|WORD)\s`) + if err != nil { + t.Fatal(err) + } + if err := filepath.WalkDir(filepath.Join(testenv.GOROOT(t), "src/crypto"), func(path string, d fs.DirEntry, err error) error { + if err != nil { + t.Fatal(err) + } + if d.IsDir() || !strings.HasSuffix(path, ".s") { + return nil + } + if strings.Contains(path, boringSigPath) { + return nil + } + + f, err := os.ReadFile(path) + if err != nil { + t.Fatal(err) + } + + i := 1 + for line := range bytes.Lines(f) { + if matcher.Match(line) { + t.Errorf("%s:%d assembly contains BYTE or WORD instruction (%q)", path, i, string(line)) + } + i++ + } + + return nil + }); err != nil { + t.Fatal(err) + } +} From 59211acb5dbde14647e025eb7379675debcf3930 Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Sat, 15 Mar 2025 15:12:39 +0100 Subject: [PATCH 66/99] crypto/tls: disable SHA-1 signature algorithms in TLS 1.2 This implements RFC 9155 by removing support for SHA-1 algorithms: - we don't advertise them in ClientHello and CertificateRequest (where supportedSignatureAlgorithms is used directly) - we don't select them in our ServerKeyExchange and CertificateVerify (where supportedSignatureAlgorithms filters signatureSchemesForCertificate) - we reject them in the peer's ServerKeyExchange and CertificateVerify (where we check against the algorithms we advertised in ClientHello and CertificateRequest) Fixes #72883 Change-Id: I6a6a4656e2aafd2c38cdd32090d3d8a9a8047818 Reviewed-on: https://go-review.googlesource.com/c/go/+/658216 LUCI-TryBot-Result: Go LUCI Auto-Submit: Filippo Valsorda Reviewed-by: David Chase Reviewed-by: Roland Shoemaker Reviewed-by: Daniel McCarney --- doc/godebug.md | 3 + .../6-stdlib/99-minor/crypto/tls/72883.md | 3 + src/crypto/tls/auth.go | 7 +- src/crypto/tls/auth_test.go | 42 +- src/crypto/tls/bogo_config.json | 2 + src/crypto/tls/defaults.go | 20 +- src/crypto/tls/handshake_client.go | 4 + src/crypto/tls/handshake_server.go | 4 + src/crypto/tls/key_agreement.go | 8 + .../Client-TLSv10-ClientCert-ECDSA-ECDSA | 107 ++-- .../Client-TLSv10-ClientCert-ECDSA-RSA | 101 ++-- .../Client-TLSv10-ClientCert-RSA-ECDSA | 105 ++-- .../testdata/Client-TLSv10-ClientCert-RSA-RSA | 99 ++- .../testdata/Client-TLSv10-ECDHE-ECDSA-AES | 85 ++- .../tls/testdata/Client-TLSv10-ECDHE-RSA-AES | 81 ++- .../Client-TLSv10-ExportKeyingMaterial | 81 ++- src/crypto/tls/testdata/Client-TLSv10-RSA-RC4 | 49 +- .../testdata/Client-TLSv11-ECDHE-ECDSA-AES | 85 ++- .../tls/testdata/Client-TLSv11-ECDHE-RSA-AES | 81 ++- src/crypto/tls/testdata/Client-TLSv11-RSA-RC4 | 49 +- .../testdata/Client-TLSv12-AES128-GCM-SHA256 | 53 +- .../tls/testdata/Client-TLSv12-AES128-SHA256 | 67 +- .../testdata/Client-TLSv12-AES256-GCM-SHA384 | 53 +- src/crypto/tls/testdata/Client-TLSv12-ALPN | 74 +-- .../Client-TLSv12-ClientCert-ECDSA-ECDSA | 115 ++-- .../Client-TLSv12-ClientCert-ECDSA-RSA | 99 ++- .../testdata/Client-TLSv12-ClientCert-Ed25519 | 83 ++- ...nt-TLSv12-ClientCert-RSA-AES256-GCM-SHA384 | 95 ++- .../Client-TLSv12-ClientCert-RSA-ECDSA | 111 ++-- .../testdata/Client-TLSv12-ClientCert-RSA-RSA | 95 ++- .../Client-TLSv12-ClientCert-RSA-RSAPKCS1v15 | 95 ++- .../Client-TLSv12-ClientCert-RSA-RSAPSS | 93 ++- .../testdata/Client-TLSv12-ECDHE-ECDSA-AES | 85 ++- .../Client-TLSv12-ECDHE-ECDSA-AES-GCM | 75 ++- .../Client-TLSv12-ECDHE-ECDSA-AES128-SHA256 | 93 ++- ...lient-TLSv12-ECDHE-ECDSA-AES256-GCM-SHA384 | 79 ++- ...lient-TLSv12-ECDHE-ECDSA-CHACHA20-POLY1305 | 76 +-- .../tls/testdata/Client-TLSv12-ECDHE-RSA-AES | 83 ++- .../Client-TLSv12-ECDHE-RSA-AES128-SHA256 | 91 ++- .../Client-TLSv12-ECDHE-RSA-CHACHA20-POLY1305 | 74 +-- src/crypto/tls/testdata/Client-TLSv12-Ed25519 | 63 +- .../Client-TLSv12-ExportKeyingMaterial | 73 ++- .../tls/testdata/Client-TLSv12-P256-ECDHE | 84 +-- src/crypto/tls/testdata/Client-TLSv12-RSA-RC4 | 49 +- .../testdata/Client-TLSv12-RenegotiateOnce | 375 ++++++------ .../testdata/Client-TLSv12-RenegotiateTwice | 571 +++++++++--------- .../Client-TLSv12-RenegotiateTwiceRejected | 381 ++++++------ .../Client-TLSv12-RenegotiationRejected | 79 ++- src/crypto/tls/testdata/Client-TLSv12-SCT | 71 ++- .../tls/testdata/Client-TLSv12-X25519-ECDHE | 76 +-- .../tls/testdata/Client-TLSv13-AES128-SHA256 | 157 +++-- .../tls/testdata/Client-TLSv13-AES256-SHA384 | 161 +++-- src/crypto/tls/testdata/Client-TLSv13-ALPN | 162 ++--- .../testdata/Client-TLSv13-CHACHA20-SHA256 | 157 +++-- .../Client-TLSv13-ClientCert-ECDSA-RSA | 255 ++++---- .../testdata/Client-TLSv13-ClientCert-Ed25519 | 221 ++++--- .../Client-TLSv13-ClientCert-RSA-ECDSA | 245 ++++---- .../Client-TLSv13-ClientCert-RSA-RSAPSS | 263 ++++---- src/crypto/tls/testdata/Client-TLSv13-ECDSA | 149 +++-- src/crypto/tls/testdata/Client-TLSv13-Ed25519 | 113 ++-- .../Client-TLSv13-ExportKeyingMaterial | 157 +++-- .../testdata/Client-TLSv13-HelloRetryRequest | 179 +++--- .../tls/testdata/Client-TLSv13-KeyUpdate | 173 +++--- .../tls/testdata/Client-TLSv13-P256-ECDHE | 162 ++--- .../tls/testdata/Client-TLSv13-X25519-ECDHE | 156 ++--- ...er-TLSv12-ClientAuthRequestedAndECDSAGiven | 80 +-- ...-TLSv12-ClientAuthRequestedAndEd25519Given | 72 +-- .../Server-TLSv12-ClientAuthRequestedAndGiven | 80 +-- ...TLSv12-ClientAuthRequestedAndPKCS1v15Given | 80 +-- .../Server-TLSv12-ClientAuthRequestedNotGiven | 62 +- src/internal/godebugs/godebugs_test.go | 3 +- src/internal/godebugs/table.go | 1 + src/runtime/metrics/doc.go | 4 + 73 files changed, 3818 insertions(+), 3801 deletions(-) create mode 100644 doc/next/6-stdlib/99-minor/crypto/tls/72883.md diff --git a/doc/godebug.md b/doc/godebug.md index b0c820da46..3b8c62a46c 100644 --- a/doc/godebug.md +++ b/doc/godebug.md @@ -180,6 +180,9 @@ runtime will periodically update GOMAXPROCS for new CPU affinity or cgroup limits. The default value `updatemaxprocs=1` will enable periodic updates. `updatemaxprocs=0` will disable periodic updates. +Go 1.25 disabled SHA-1 signature algorithms in TLS 1.2 according to RFC 9155. +The default can be reverted using the `tlssha1=1` setting. + Go 1.25 corrected the semantics of contention reports for runtime-internal locks, and so removed the [`runtimecontentionstacks` setting](/pkg/runtime#hdr-Environment_Variable). diff --git a/doc/next/6-stdlib/99-minor/crypto/tls/72883.md b/doc/next/6-stdlib/99-minor/crypto/tls/72883.md new file mode 100644 index 0000000000..70e06192a3 --- /dev/null +++ b/doc/next/6-stdlib/99-minor/crypto/tls/72883.md @@ -0,0 +1,3 @@ +SHA-1 signature algorithms are now disallowed in TLS 1.2 handshakes, per +[RFC 9155](https://www.rfc-editor.org/rfc/rfc9155.html). +They can be re-enabled with the `tlssha1=1` GODEBUG option. diff --git a/src/crypto/tls/auth.go b/src/crypto/tls/auth.go index 7f072204a7..2d0596689f 100644 --- a/src/crypto/tls/auth.go +++ b/src/crypto/tls/auth.go @@ -219,7 +219,7 @@ func signatureSchemesForCertificate(version uint16, cert *Certificate) []Signatu } // Filter out any unsupported signature algorithms, for example due to - // FIPS 140-3 policy, or any downstream changes to defaults.go. + // FIPS 140-3 policy, tlssha1=0, or any downstream changes to defaults.go. supportedAlgs := supportedSignatureAlgorithms(version) sigAlgs = slices.DeleteFunc(sigAlgs, func(sigAlg SignatureScheme) bool { return !isSupportedSignatureAlgorithm(sigAlg, supportedAlgs) @@ -239,6 +239,11 @@ func selectSignatureScheme(vers uint16, c *Certificate, peerAlgs []SignatureSche if len(peerAlgs) == 0 && vers == VersionTLS12 { // For TLS 1.2, if the client didn't send signature_algorithms then we // can assume that it supports SHA1. See RFC 5246, Section 7.4.1.4.1. + // RFC 9155 made signature_algorithms mandatory in TLS 1.2, and we gated + // it behind the tlssha1 GODEBUG setting. + if tlssha1.Value() != "1" { + return 0, errors.New("tls: missing signature_algorithms from TLS 1.2 peer") + } peerAlgs = []SignatureScheme{PKCS1WithSHA1, ECDSAWithSHA1} } // Pick signature scheme in the peer's preference order, as our diff --git a/src/crypto/tls/auth_test.go b/src/crypto/tls/auth_test.go index 616d9bab78..727bdc4df7 100644 --- a/src/crypto/tls/auth_test.go +++ b/src/crypto/tls/auth_test.go @@ -7,6 +7,7 @@ package tls import ( "crypto" "crypto/tls/internal/fips140tls" + "os" "testing" ) @@ -33,35 +34,41 @@ func TestSignatureSelection(t *testing.T) { cert *Certificate peerSigAlgs []SignatureScheme tlsVersion uint16 + godebug string expectedSigAlg SignatureScheme expectedSigType uint8 expectedHash crypto.Hash }{ - {rsaCert, []SignatureScheme{PKCS1WithSHA1, PKCS1WithSHA256}, VersionTLS12, PKCS1WithSHA1, signaturePKCS1v15, crypto.SHA1}, - {rsaCert, []SignatureScheme{PKCS1WithSHA512, PKCS1WithSHA1}, VersionTLS12, PKCS1WithSHA512, signaturePKCS1v15, crypto.SHA512}, - {rsaCert, []SignatureScheme{PSSWithSHA256, PKCS1WithSHA256}, VersionTLS12, PSSWithSHA256, signatureRSAPSS, crypto.SHA256}, - {pkcs1Cert, []SignatureScheme{PSSWithSHA256, PKCS1WithSHA256}, VersionTLS12, PKCS1WithSHA256, signaturePKCS1v15, crypto.SHA256}, - {rsaCert, []SignatureScheme{PSSWithSHA384, PKCS1WithSHA1}, VersionTLS13, PSSWithSHA384, signatureRSAPSS, crypto.SHA384}, - {ecdsaCert, []SignatureScheme{ECDSAWithSHA1}, VersionTLS12, ECDSAWithSHA1, signatureECDSA, crypto.SHA1}, - {ecdsaCert, []SignatureScheme{ECDSAWithP256AndSHA256}, VersionTLS12, ECDSAWithP256AndSHA256, signatureECDSA, crypto.SHA256}, - {ecdsaCert, []SignatureScheme{ECDSAWithP256AndSHA256}, VersionTLS13, ECDSAWithP256AndSHA256, signatureECDSA, crypto.SHA256}, - {ed25519Cert, []SignatureScheme{Ed25519}, VersionTLS12, Ed25519, signatureEd25519, directSigning}, - {ed25519Cert, []SignatureScheme{Ed25519}, VersionTLS13, Ed25519, signatureEd25519, directSigning}, + {rsaCert, []SignatureScheme{PKCS1WithSHA1, PKCS1WithSHA256}, VersionTLS12, "", PKCS1WithSHA256, signaturePKCS1v15, crypto.SHA256}, + {rsaCert, []SignatureScheme{PKCS1WithSHA1, PKCS1WithSHA256}, VersionTLS12, "tlssha1=1", PKCS1WithSHA1, signaturePKCS1v15, crypto.SHA1}, + {rsaCert, []SignatureScheme{PKCS1WithSHA512, PKCS1WithSHA1}, VersionTLS12, "", PKCS1WithSHA512, signaturePKCS1v15, crypto.SHA512}, + {rsaCert, []SignatureScheme{PSSWithSHA256, PKCS1WithSHA256}, VersionTLS12, "", PSSWithSHA256, signatureRSAPSS, crypto.SHA256}, + {pkcs1Cert, []SignatureScheme{PSSWithSHA256, PKCS1WithSHA256}, VersionTLS12, "", PKCS1WithSHA256, signaturePKCS1v15, crypto.SHA256}, + {rsaCert, []SignatureScheme{PSSWithSHA384, PKCS1WithSHA1}, VersionTLS13, "", PSSWithSHA384, signatureRSAPSS, crypto.SHA384}, + {rsaCert, []SignatureScheme{PKCS1WithSHA1, PSSWithSHA384}, VersionTLS13, "", PSSWithSHA384, signatureRSAPSS, crypto.SHA384}, + {ecdsaCert, []SignatureScheme{ECDSAWithSHA1, ECDSAWithP256AndSHA256}, VersionTLS12, "", ECDSAWithP256AndSHA256, signatureECDSA, crypto.SHA256}, + {ecdsaCert, []SignatureScheme{ECDSAWithSHA1}, VersionTLS12, "tlssha1=1", ECDSAWithSHA1, signatureECDSA, crypto.SHA1}, + {ecdsaCert, []SignatureScheme{ECDSAWithP256AndSHA256}, VersionTLS12, "", ECDSAWithP256AndSHA256, signatureECDSA, crypto.SHA256}, + {ecdsaCert, []SignatureScheme{ECDSAWithP256AndSHA256}, VersionTLS13, "", ECDSAWithP256AndSHA256, signatureECDSA, crypto.SHA256}, + {ed25519Cert, []SignatureScheme{Ed25519}, VersionTLS12, "", Ed25519, signatureEd25519, directSigning}, + {ed25519Cert, []SignatureScheme{Ed25519}, VersionTLS13, "", Ed25519, signatureEd25519, directSigning}, // TLS 1.2 without signature_algorithms extension - {rsaCert, nil, VersionTLS12, PKCS1WithSHA1, signaturePKCS1v15, crypto.SHA1}, - {ecdsaCert, nil, VersionTLS12, ECDSAWithSHA1, signatureECDSA, crypto.SHA1}, + {rsaCert, nil, VersionTLS12, "tlssha1=1", PKCS1WithSHA1, signaturePKCS1v15, crypto.SHA1}, + {ecdsaCert, nil, VersionTLS12, "tlssha1=1", ECDSAWithSHA1, signatureECDSA, crypto.SHA1}, // TLS 1.2 does not restrict the ECDSA curve (our ecdsaCert is P-256) - {ecdsaCert, []SignatureScheme{ECDSAWithP384AndSHA384}, VersionTLS12, ECDSAWithP384AndSHA384, signatureECDSA, crypto.SHA384}, + {ecdsaCert, []SignatureScheme{ECDSAWithP384AndSHA384}, VersionTLS12, "", ECDSAWithP384AndSHA384, signatureECDSA, crypto.SHA384}, } for testNo, test := range tests { - if fips140tls.Required() && (test.expectedHash == crypto.SHA1 || test.expectedSigAlg == Ed25519) { + if fips140tls.Required() && test.expectedHash == crypto.SHA1 { t.Logf("skipping test[%d] - not compatible with TLS FIPS mode", testNo) continue } + savedGODEBUG := os.Getenv("GODEBUG") + os.Setenv("GODEBUG", savedGODEBUG+","+test.godebug) sigAlg, err := selectSignatureScheme(test.tlsVersion, test.cert, test.peerSigAlgs) if err != nil { @@ -80,6 +87,8 @@ func TestSignatureSelection(t *testing.T) { if test.expectedHash != hashFunc { t.Errorf("test[%d]: expected hash function %#x, got %#x", testNo, test.expectedHash, hashFunc) } + + os.Setenv("GODEBUG", savedGODEBUG) } brokenCert := &Certificate{ @@ -116,6 +125,11 @@ func TestSignatureSelection(t *testing.T) { {ecdsaCert, []SignatureScheme{ECDSAWithSHA1}, VersionTLS13}, // The key can be too small for the hash. {rsaCert, []SignatureScheme{PSSWithSHA512}, VersionTLS12}, + // SHA-1 requires tlssha1=1 + {rsaCert, []SignatureScheme{PKCS1WithSHA1}, VersionTLS12}, + {ecdsaCert, []SignatureScheme{ECDSAWithSHA1}, VersionTLS12}, + {rsaCert, nil, VersionTLS12}, + {ecdsaCert, nil, VersionTLS12}, } for testNo, test := range badTests { diff --git a/src/crypto/tls/bogo_config.json b/src/crypto/tls/bogo_config.json index 6d764daa61..b88201a457 100644 --- a/src/crypto/tls/bogo_config.json +++ b/src/crypto/tls/bogo_config.json @@ -20,6 +20,8 @@ "TLS-ECH-Client-Reject-NoChannelID-TLS13": "We don't support sending channel ID", "TLS-ECH-Client-Reject-NoChannelID-TLS12": "We don't support sending channel ID", + "ServerAuth-SHA1-Fallback*": "We don't ever support SHA-1 in TLS 1.2, so we fail if there are no signature_algorithms", + "TLS-ECH-Client-GREASE-IgnoreHRRExtension": "We don't support ECH GREASE because we don't fallback to plaintext", "TLS-ECH-Client-NoSupportedConfigs-GREASE": "We don't support ECH GREASE because we don't fallback to plaintext", "TLS-ECH-Client-GREASEExtensions": "We don't support ECH GREASE because we don't fallback to plaintext", diff --git a/src/crypto/tls/defaults.go b/src/crypto/tls/defaults.go index 07986294ec..3aa1bc2e4c 100644 --- a/src/crypto/tls/defaults.go +++ b/src/crypto/tls/defaults.go @@ -24,11 +24,29 @@ func defaultCurvePreferences() []CurveID { return []CurveID{X25519MLKEM768, X25519, CurveP256, CurveP384, CurveP521} } +var tlssha1 = godebug.New("tlssha1") + // defaultSupportedSignatureAlgorithms returns the signature and hash algorithms that // the code advertises and supports in a TLS 1.2+ ClientHello and in a TLS 1.2+ // CertificateRequest. The two fields are merged to match with TLS 1.3. // Note that in TLS 1.2, the ECDSA algorithms are not constrained to P-256, etc. func defaultSupportedSignatureAlgorithms() []SignatureScheme { + if tlssha1.Value() == "1" { + return []SignatureScheme{ + PSSWithSHA256, + ECDSAWithP256AndSHA256, + Ed25519, + PSSWithSHA384, + PSSWithSHA512, + PKCS1WithSHA256, + PKCS1WithSHA384, + PKCS1WithSHA512, + ECDSAWithP384AndSHA384, + ECDSAWithP521AndSHA512, + PKCS1WithSHA1, + ECDSAWithSHA1, + } + } return []SignatureScheme{ PSSWithSHA256, ECDSAWithP256AndSHA256, @@ -40,8 +58,6 @@ func defaultSupportedSignatureAlgorithms() []SignatureScheme { PKCS1WithSHA512, ECDSAWithP384AndSHA384, ECDSAWithP521AndSHA512, - PKCS1WithSHA1, - ECDSAWithSHA1, } } diff --git a/src/crypto/tls/handshake_client.go b/src/crypto/tls/handshake_client.go index 619b47afbf..2d3a2ef25b 100644 --- a/src/crypto/tls/handshake_client.go +++ b/src/crypto/tls/handshake_client.go @@ -828,6 +828,10 @@ func (hs *clientHandshakeState) doFullHandshake() error { } certVerify.hasSignatureAlgorithm = true certVerify.signatureAlgorithm = signatureAlgorithm + if sigHash == crypto.SHA1 { + tlssha1.Value() // ensure godebug is initialized + tlssha1.IncNonDefault() + } } else { sigType, sigHash, err = legacyTypeAndHashFromPublicKey(key.Public()) if err != nil { diff --git a/src/crypto/tls/handshake_server.go b/src/crypto/tls/handshake_server.go index 522d3b62c2..6848407e74 100644 --- a/src/crypto/tls/handshake_server.go +++ b/src/crypto/tls/handshake_server.go @@ -772,6 +772,10 @@ func (hs *serverHandshakeState) doFullHandshake() error { if err != nil { return c.sendAlert(alertInternalError) } + if sigHash == crypto.SHA1 { + tlssha1.Value() // ensure godebug is initialized + tlssha1.IncNonDefault() + } } else { sigType, sigHash, err = legacyTypeAndHashFromPublicKey(pub) if err != nil { diff --git a/src/crypto/tls/key_agreement.go b/src/crypto/tls/key_agreement.go index d41bf43591..3daa1aa40b 100644 --- a/src/crypto/tls/key_agreement.go +++ b/src/crypto/tls/key_agreement.go @@ -215,6 +215,10 @@ func (ka *ecdheKeyAgreement) generateServerKeyExchange(config *Config, cert *Cer if err != nil { return nil, err } + if sigHash == crypto.SHA1 { + tlssha1.Value() // ensure godebug is initialized + tlssha1.IncNonDefault() + } } else { sigType, sigHash, err = legacyTypeAndHashFromPublicKey(priv.Public()) if err != nil { @@ -339,6 +343,10 @@ func (ka *ecdheKeyAgreement) processServerKeyExchange(config *Config, clientHell if err != nil { return err } + if sigHash == crypto.SHA1 { + tlssha1.Value() // ensure godebug is initialized + tlssha1.IncNonDefault() + } } else { sigType, sigHash, err = legacyTypeAndHashFromPublicKey(cert.PublicKey) if err != nil { diff --git a/src/crypto/tls/testdata/Client-TLSv10-ClientCert-ECDSA-ECDSA b/src/crypto/tls/testdata/Client-TLSv10-ClientCert-ECDSA-ECDSA index 1a97323780..3bd86fd90e 100644 --- a/src/crypto/tls/testdata/Client-TLSv10-ClientCert-ECDSA-ECDSA +++ b/src/crypto/tls/testdata/Client-TLSv10-ClientCert-ECDSA-ECDSA @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 01 00 5d 02 00 00 59 03 01 5f db 69 f3 84 |....]...Y.._.i..| -00000010 2a 34 27 ec 75 af b4 38 e7 d4 ec 19 70 1a 17 0e |*4'.u..8....p...| -00000020 4d 94 8f 93 b7 88 ba cf 60 be e3 20 10 53 38 8a |M.......`.. .S8.| -00000030 85 c2 1b 7d e3 21 e2 a8 6b 9f 34 dc c1 a0 38 3e |...}.!..k.4...8>| -00000040 66 81 bb c4 1c b8 c5 70 ce 28 81 bf c0 09 00 00 |f......p.(......| +00000000 16 03 01 00 5d 02 00 00 59 03 01 1a 76 c4 d5 b5 |....]...Y...v...| +00000010 7e 30 1c 1e c3 62 8b 92 a8 19 9b 62 4e 36 a1 d3 |~0...b.....bN6..| +00000020 c8 e3 55 f6 64 5f 06 aa 19 9a 48 20 24 a4 2d a9 |..U.d_....H $.-.| +00000030 8a bd cf 4e 9b cf 7d c7 8e 8f e8 ed f5 09 37 ad |...N..}.......7.| +00000040 06 c9 6b a4 d5 de 7f 07 07 a6 9d c7 c0 09 00 00 |..k.............| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 01 02 0e 0b 00 02 0a 00 02 07 00 02 |................| 00000070 04 30 82 02 00 30 82 01 62 02 09 00 b8 bf 2d 47 |.0...0..b.....-G| @@ -58,20 +57,20 @@ 00000240 8c 25 c1 33 13 83 0d 94 06 bb d4 37 7a f6 ec 7a |.%.3.......7z..z| 00000250 c9 86 2e dd d7 11 69 7f 85 7c 56 de fb 31 78 2b |......i..|V..1x+| 00000260 e4 c7 78 0d ae cb be 9e 4e 36 24 31 7b 6a 0f 39 |..x.....N6$1{j.9| -00000270 95 12 07 8f 2a 16 03 01 00 b4 0c 00 00 b0 03 00 |....*...........| -00000280 1d 20 07 a5 80 41 74 22 47 af 5d 75 5e ae bd eb |. ...At"G.]u^...| -00000290 20 93 4c d3 d1 c6 d0 4b f8 68 f4 58 fc 88 ca 2a | .L....K.h.X...*| -000002a0 8b 08 00 8a 30 81 87 02 41 68 37 4f 22 15 13 23 |....0...Ah7O"..#| -000002b0 1b 03 6b f2 e1 8b bf 2a 88 4b 14 b3 85 58 ae 5a |..k....*.K...X.Z| -000002c0 11 14 9a a3 24 77 c6 a3 a2 8c 12 ae 5c 78 ec 26 |....$w......\x.&| -000002d0 24 49 b0 57 30 4e 46 71 5b a8 c4 3f 26 09 85 14 |$I.W0NFq[..?&...| -000002e0 48 3a 8c 4b bf c9 c0 24 1b c1 02 42 01 e1 92 35 |H:.K...$...B...5| -000002f0 a7 1f 8e ae 3d 3d 0d 89 cc 94 a9 e5 1a 27 6b c1 |....==.......'k.| -00000300 89 f8 8a 4c ad 8e 84 6f 65 e9 19 ce 99 73 10 4e |...L...oe....s.N| -00000310 61 2a 31 19 60 bd ac 37 20 9f 54 90 a5 e2 3a 79 |a*1.`..7 .T...:y| -00000320 98 a4 1a b4 30 2b 9f 08 86 41 ac f1 4e d7 16 03 |....0+...A..N...| -00000330 01 00 0a 0d 00 00 06 03 01 02 40 00 00 16 03 01 |..........@.....| -00000340 00 04 0e 00 00 00 |......| +00000270 95 12 07 8f 2a 16 03 01 00 b5 0c 00 00 b1 03 00 |....*...........| +00000280 1d 20 3e 61 33 da 82 02 f5 6d 70 2d e5 07 df 43 |. >a3....mp-...C| +00000290 d7 e6 1a b2 81 3e 58 03 dc 27 37 34 3b 2e 5a d5 |.....>X..'74;.Z.| +000002a0 d4 1a 00 8b 30 81 88 02 42 00 8b 0c f4 0f fe 8c |....0...B.......| +000002b0 01 70 3a c5 e5 29 53 1c ad 6c f4 35 53 e3 e6 ce |.p:..)S..l.5S...| +000002c0 19 21 03 de f5 e3 df 8e e5 6b 43 00 08 b7 24 2c |.!.......kC...$,| +000002d0 27 9e 2b bc 2f 96 07 a0 f9 a9 6b d4 b7 75 a8 5d |'.+./.....k..u.]| +000002e0 99 13 ab 5a dd 35 56 08 6d 9c a1 02 42 01 29 62 |...Z.5V.m...B.)b| +000002f0 b9 64 8b 6d 91 b7 f5 59 73 9d 2d bc 9d 9a 5b 43 |.d.m...Ys.-...[C| +00000300 d8 d5 76 be 2a 8f c5 f0 2e 5d a8 be 7b d0 36 fe |..v.*....]..{.6.| +00000310 62 97 7f 17 96 f6 c3 b4 06 2a e2 cb 77 80 ff 28 |b........*..w..(| +00000320 02 64 cb bb c7 a9 77 4b 96 7d 07 11 7e e8 28 16 |.d....wK.}..~.(.| +00000330 03 01 00 0a 0d 00 00 06 03 01 02 40 00 00 16 03 |...........@....| +00000340 01 00 04 0e 00 00 00 |.......| >>> Flow 3 (client to server) 00000000 16 03 01 02 0a 0b 00 02 06 00 02 03 00 02 00 30 |...............0| 00000010 82 01 fc 30 82 01 5e 02 09 00 9a 30 84 6c 26 35 |...0..^....0.l&5| @@ -108,30 +107,30 @@ 00000200 e4 fa cc b1 8a ce e2 23 a0 87 f0 e1 67 51 eb 16 |.......#....gQ..| 00000210 03 01 00 25 10 00 00 21 20 2f e5 7d a3 47 cd 62 |...%...! /.}.G.b| 00000220 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 cf |C.(.._.).0......| -00000230 c2 ed 90 99 5f 58 cb 3b 74 16 03 01 00 8f 0f 00 |...._X.;t.......| -00000240 00 8b 00 89 30 81 86 02 41 7c e1 65 0a 33 fc 66 |....0...A|.e.3.f| -00000250 85 e8 a7 9d a8 e0 12 1e 8c fa 53 00 2a 1b 70 dc |..........S.*.p.| -00000260 00 ba 15 e9 b2 fa 95 b1 c2 36 b6 a4 dd 4c 6c c2 |.........6...Ll.| -00000270 d9 11 cb 12 90 c2 1e ea 7f 4c e4 94 3a a4 c6 ba |.........L..:...| -00000280 66 3d b9 fa 3a af 0b 74 e5 1e 02 41 30 b2 11 4f |f=..:..t...A0..O| -00000290 f5 06 97 76 2d c9 7c 95 df 44 ba fe 81 2d f4 3f |...v-.|..D...-.?| -000002a0 e0 25 81 16 90 80 60 7b bd 88 14 b3 a4 ef 63 21 |.%....`{......c!| -000002b0 46 0c 15 a3 bd 1a 4d 3d fd a2 d7 3a ff bd 15 94 |F.....M=...:....| -000002c0 40 60 d8 42 14 41 18 7e 55 ab 71 a7 9c 14 03 01 |@`.B.A.~U.q.....| -000002d0 00 01 01 16 03 01 00 30 3d 4f 1e dd 66 64 5a c2 |.......0=O..fdZ.| -000002e0 bc 12 e9 63 d8 95 34 7c 6c 93 66 c6 12 54 5c d0 |...c..4|l.f..T\.| -000002f0 2b 2a 7e 20 4f fc 62 19 5d be 55 1f 82 8a 6c 9b |+*~ O.b.].U...l.| -00000300 85 7c b8 db 29 65 d7 7b |.|..)e.{| +00000230 c2 ed 90 99 5f 58 cb 3b 74 16 03 01 00 90 0f 00 |...._X.;t.......| +00000240 00 8c 00 8a 30 81 87 02 41 46 5f cc 88 bc 2b e5 |....0...AF_...+.| +00000250 20 33 a9 ff 52 bb 25 dc cf a1 08 45 b5 82 9a 1b | 3..R.%....E....| +00000260 53 04 18 b4 23 20 c4 d2 d8 92 9b 21 a7 ec 36 d6 |S...# .....!..6.| +00000270 63 35 68 4c 21 c4 0e 20 07 0c 8f 38 2f 9b b7 9e |c5hL!.. ...8/...| +00000280 e7 9d 6d ea da 1c a6 f1 c5 d3 02 42 01 ed 54 c8 |..m........B..T.| +00000290 9e b2 45 f1 1f 77 ee e3 a7 3a 40 9b fe 9b 1d 38 |..E..w...:@....8| +000002a0 ff 9b b4 c6 e7 94 07 b8 5f 93 bd 38 8d 31 dd 80 |........_..8.1..| +000002b0 2f 82 6e b5 85 8f 15 8b cd b2 04 81 e2 0b 2a fa |/.n...........*.| +000002c0 d9 4b 47 0b 86 26 8b 4e 83 a6 15 9e 93 15 14 03 |.KG..&.N........| +000002d0 01 00 01 01 16 03 01 00 30 f3 06 0e 6f 16 1b 0b |........0...o...| +000002e0 46 54 37 fd c6 80 0f ec 4b dd d7 d4 17 b2 d7 8d |FT7.....K.......| +000002f0 4e 6a 7f 2a af d2 ea 19 11 8f 23 57 b7 e7 2f b3 |Nj.*......#W../.| +00000300 97 f6 93 3f ac 0d 5c f8 f5 |...?..\..| >>> Flow 4 (server to client) -00000000 14 03 01 00 01 01 16 03 01 00 30 1c 42 dd c3 b4 |..........0.B...| -00000010 9e e8 53 fa 2f 12 1c 80 89 97 ec 99 aa 75 04 e4 |..S./........u..| -00000020 19 b9 7f 7f e5 61 53 8e 3f a5 1d 1a cb 02 8a 7a |.....aS.?......z| -00000030 f3 26 77 2d a0 23 c5 41 e1 fe 5c |.&w-.#.A..\| +00000000 14 03 01 00 01 01 16 03 01 00 30 03 aa a1 4c bf |..........0...L.| +00000010 ab 53 f3 96 e7 db b1 a4 d7 19 f7 2f c0 b7 32 ea |.S........./..2.| +00000020 bd f3 4a 7c 0d 4c df a4 5f a0 3d f3 1b 57 65 a1 |..J|.L.._.=..We.| +00000030 d1 31 ae 52 6e ed 15 d2 d9 23 68 |.1.Rn....#h| >>> Flow 5 (client to server) -00000000 17 03 01 00 20 6f 19 91 24 21 15 50 56 db 29 4f |.... o..$!.PV.)O| -00000010 0c e5 d7 85 02 7b dc 76 4f ac ac a1 7d d3 02 07 |.....{.vO...}...| -00000020 ca c2 1d e0 f5 17 03 01 00 20 f2 f4 da dc e9 c7 |......... ......| -00000030 c3 60 af d9 7e a4 5f be 80 1d fe a1 ef 98 22 dd |.`..~._.......".| -00000040 8f 93 06 22 c3 a2 b1 ed 48 5e 15 03 01 00 20 6b |..."....H^.... k| -00000050 2b 7e 37 08 37 21 4e 80 6f 10 e8 d9 30 56 22 aa |+~7.7!N.o...0V".| -00000060 f6 c7 fe 33 69 b6 12 f1 11 83 14 12 b5 73 35 |...3i........s5| +00000000 17 03 01 00 20 aa 0c f4 30 17 b7 59 47 33 91 07 |.... ...0..YG3..| +00000010 cc 52 7b 52 f8 a0 82 44 25 03 0e b4 45 6e 0c 5a |.R{R...D%...En.Z| +00000020 37 6d d6 6d 80 17 03 01 00 20 bc c7 70 3b 94 cc |7m.m..... ..p;..| +00000030 09 db 15 84 d8 b9 c5 cf d6 01 91 93 5b 20 5a b1 |............[ Z.| +00000040 6a 43 23 30 7e 02 ea 8b e0 28 15 03 01 00 20 c2 |jC#0~....(.... .| +00000050 7f c9 90 b3 ef c6 52 68 44 df 05 30 17 39 d9 42 |......RhD..0.9.B| +00000060 76 7a 1d a1 17 2b fa b4 92 ca 40 a9 58 d4 87 |vz...+....@.X..| diff --git a/src/crypto/tls/testdata/Client-TLSv10-ClientCert-ECDSA-RSA b/src/crypto/tls/testdata/Client-TLSv10-ClientCert-ECDSA-RSA index a63734b648..de3de89cd1 100644 --- a/src/crypto/tls/testdata/Client-TLSv10-ClientCert-ECDSA-RSA +++ b/src/crypto/tls/testdata/Client-TLSv10-ClientCert-ECDSA-RSA @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 01 00 5d 02 00 00 59 03 01 f6 fc 17 31 02 |....]...Y.....1.| -00000010 7c 2a e4 6d 3a e7 ae a0 d9 a5 4e 59 88 a6 9c 09 ||*.m:.....NY....| -00000020 ed 6b a1 6d fb 80 03 72 14 63 93 20 47 4b 39 ed |.k.m...r.c. GK9.| -00000030 48 93 f6 9e 80 e0 2a d7 75 30 81 47 b6 94 7a 75 |H.....*.u0.G..zu| -00000040 1d 29 1f 4a fc 69 5f 92 7f d4 5f dc c0 13 00 00 |.).J.i_..._.....| +00000000 16 03 01 00 5d 02 00 00 59 03 01 fc 68 73 9f 1a |....]...Y...hs..| +00000010 9d 3b 9b f9 10 cf b5 84 b9 31 f4 a8 e9 47 ab 33 |.;.......1...G.3| +00000020 55 42 0b c0 f2 8e fa e7 a0 39 55 20 56 cd 87 f6 |UB.......9U V...| +00000030 05 e0 b1 e9 aa b8 b2 ca 33 9d 46 02 fd d8 f0 11 |........3.F.....| +00000040 0e fc 96 7e b4 fa fc c2 f3 da c4 2b c0 13 00 00 |...~.......+....| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 01 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -63,17 +62,17 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 01 00 aa 0c 00 00 a6 03 00 1d 20 2b b0 b2 |............ +..| -000002d0 f5 17 4b 53 12 c2 b0 12 dc 16 c3 ff 62 b4 18 d9 |..KS........b...| -000002e0 7f 1a ef e5 a8 b2 98 ea aa a7 4f 61 01 00 80 2a |..........Oa...*| -000002f0 20 54 cc 3b a3 8e f5 db 04 fa 09 7b b1 bf 8a 79 | T.;.......{...y| -00000300 25 e9 7b 5f 13 0a 3a 23 32 c9 60 90 7c 02 0e 7d |%.{_..:#2.`.|..}| -00000310 7f 88 8f 79 73 f7 c8 7c fe c6 88 d1 d2 c8 88 53 |...ys..|.......S| -00000320 0f c4 f9 e3 61 28 9d 56 f3 84 eb 88 99 b6 8e a9 |....a(.V........| -00000330 e4 72 ec 01 a3 81 61 97 45 ab 90 cd 2a 50 a4 68 |.r....a.E...*P.h| -00000340 35 09 9f d8 99 54 bd 9f af 6e 63 77 2b 00 a1 e3 |5....T...ncw+...| -00000350 d6 f8 ab 08 39 3f df 42 55 4c f7 58 69 e8 db 76 |....9?.BUL.Xi..v| -00000360 43 24 37 5b 65 2c 17 80 c9 c1 50 ba 76 06 71 16 |C$7[e,....P.v.q.| +000002c0 16 03 01 00 aa 0c 00 00 a6 03 00 1d 20 74 0e 72 |............ t.r| +000002d0 d9 71 10 de 9b f7 59 f0 c0 a2 b9 35 68 6a 3d f3 |.q....Y....5hj=.| +000002e0 27 fb 13 3d a1 c0 4c f6 17 9b f1 25 50 00 80 c2 |'..=..L....%P...| +000002f0 20 fd 4f 8b c9 6a fc 97 61 9d b3 b0 1d 2d 9a 2f | .O..j..a....-./| +00000300 90 15 44 a7 04 01 0b 6f a9 47 5d a1 46 aa 30 f1 |..D....o.G].F.0.| +00000310 5f 9b db 4d 8d 7a a4 99 3f 5c cb 4a ff 0a 49 b1 |_..M.z..?\.J..I.| +00000320 fc df 0a f7 31 90 a9 98 cd da 8c 49 a5 1f 0f c7 |....1......I....| +00000330 48 63 ee ff a8 fb 07 0a fe e1 d7 1b ed b3 3f ce |Hc............?.| +00000340 39 ef bb 50 e9 a0 f4 c1 6f a6 7e 5b c8 36 1a 76 |9..P....o.~[.6.v| +00000350 c8 00 3b e2 04 98 88 f1 fa 56 34 8f 02 86 0a 8e |..;......V4.....| +00000360 29 4f eb 70 fb 2f 21 ed 8d fa a9 91 66 c9 c0 16 |)O.p./!.....f...| 00000370 03 01 00 0a 0d 00 00 06 03 01 02 40 00 00 16 03 |...........@....| 00000380 01 00 04 0e 00 00 00 |.......| >>> Flow 3 (client to server) @@ -112,30 +111,30 @@ 00000200 e4 fa cc b1 8a ce e2 23 a0 87 f0 e1 67 51 eb 16 |.......#....gQ..| 00000210 03 01 00 25 10 00 00 21 20 2f e5 7d a3 47 cd 62 |...%...! /.}.G.b| 00000220 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 cf |C.(.._.).0......| -00000230 c2 ed 90 99 5f 58 cb 3b 74 16 03 01 00 90 0f 00 |...._X.;t.......| -00000240 00 8c 00 8a 30 81 87 02 41 0d b5 15 00 c4 b1 af |....0...A.......| -00000250 33 ea 88 c2 cc 9a 1c 16 3d a0 15 bf 20 ef b2 28 |3.......=... ..(| -00000260 de 8b 36 b4 3a 2f df 8b b4 7e 3b a4 ad c1 04 32 |..6.:/...~;....2| -00000270 56 6c 8f 07 ab 3c dc d7 6f 66 41 96 bc 74 e9 4a |Vl...<..ofA..t.J| -00000280 55 00 c4 32 df 22 26 6b 98 0d 02 42 01 67 6e 97 |U..2."&k...B.gn.| -00000290 8b 55 e8 57 74 d8 2e c5 a4 25 1a b6 08 a5 b1 f0 |.U.Wt....%......| -000002a0 99 26 9c 24 b3 02 82 55 0d d9 3a 13 55 f1 cb cc |.&.$...U..:.U...| -000002b0 84 fd b7 5d 82 dd 26 d4 c6 4c 4a 27 ae 08 e7 57 |...]..&..LJ'...W| -000002c0 74 a3 91 b9 6c f6 50 bb d9 34 e5 4b c2 66 14 03 |t...l.P..4.K.f..| -000002d0 01 00 01 01 16 03 01 00 30 be 86 48 b8 3d f0 1e |........0..H.=..| -000002e0 b7 58 d4 b6 54 88 b4 57 1d 7d 5c 3f 17 ff 41 6f |.X..T..W.}\?..Ao| -000002f0 a4 60 57 21 86 bb 77 d9 dd af 96 fb eb c8 b0 86 |.`W!..w.........| -00000300 18 e2 00 4a 1b 92 67 75 5a |...J..guZ| +00000230 c2 ed 90 99 5f 58 cb 3b 74 16 03 01 00 91 0f 00 |...._X.;t.......| +00000240 00 8d 00 8b 30 81 88 02 42 00 88 3e 14 10 fa b5 |....0...B..>....| +00000250 65 d8 03 71 7e b7 44 a5 db 04 85 d2 f4 5d c5 de |e..q~.D......]..| +00000260 71 e4 f9 ad 5e 47 6c 83 eb 6a 2b fc 8d 60 6b 1b |q...^Gl..j+..`k.| +00000270 55 89 7b 03 60 fb 9c b2 b1 42 ef 02 63 29 59 03 |U.{.`....B..c)Y.| +00000280 02 a8 48 4d 9a 3d f3 e9 6b ac 76 02 42 01 90 36 |..HM.=..k.v.B..6| +00000290 5d d0 ec dd 76 75 0c 97 66 7f 10 ec 1d 39 5e bb |]...vu..f....9^.| +000002a0 2c 81 9e 15 fa 59 3f e8 77 3f 33 03 b6 2d 02 5a |,....Y?.w?3..-.Z| +000002b0 28 82 53 7a 18 69 29 5b d9 7d ce 4f 94 d9 69 29 |(.Sz.i)[.}.O..i)| +000002c0 b2 84 87 4a 15 47 c6 da 6f c3 df ca 8a 58 0b 14 |...J.G..o....X..| +000002d0 03 01 00 01 01 16 03 01 00 30 89 15 96 15 9d 93 |.........0......| +000002e0 e3 ae 94 14 f9 ea 39 d7 3b d6 98 e1 ed c8 0a 3f |......9.;......?| +000002f0 6f 2c a2 9b cd c5 ea 1a 1f 27 89 1a 7d ff 60 07 |o,.......'..}.`.| +00000300 22 1f bc b8 56 3a ee 24 5a ff |"...V:.$Z.| >>> Flow 4 (server to client) -00000000 14 03 01 00 01 01 16 03 01 00 30 81 55 c5 00 ab |..........0.U...| -00000010 7e 16 3e 35 25 2a 86 0d bf 69 17 1f e7 13 fd 6c |~.>5%*...i.....l| -00000020 a7 3e 63 e6 23 57 1e 63 ca 1f 1a ea 76 df c1 9e |.>c.#W.c....v...| -00000030 c9 ee fc 23 8a ec e0 e9 78 38 cb |...#....x8.| +00000000 14 03 01 00 01 01 16 03 01 00 30 bf 0c 82 bd 43 |..........0....C| +00000010 ba 60 ec df 88 4d 48 be d5 c4 0c b5 7d c4 94 c4 |.`...MH.....}...| +00000020 15 6e 50 45 77 56 ce d5 e0 4c 15 fc da 96 0b 41 |.nPEwV...L.....A| +00000030 fd 70 39 e9 33 3f 57 77 f5 a3 67 |.p9.3?Ww..g| >>> Flow 5 (client to server) -00000000 17 03 01 00 20 6f 5c 74 f2 48 38 66 86 fe 54 d9 |.... o\t.H8f..T.| -00000010 69 ec a9 91 d4 4d 07 98 7d df 19 1f fd ec c2 d5 |i....M..}.......| -00000020 b5 49 a7 0a 05 17 03 01 00 20 62 0d 0e 63 82 cf |.I....... b..c..| -00000030 74 e1 eb dd 2f 4f 05 92 7a 08 34 ff 84 6e 13 7f |t.../O..z.4..n..| -00000040 21 cb f6 92 c4 d1 4d 49 31 9f 15 03 01 00 20 f1 |!.....MI1..... .| -00000050 53 aa 8e 29 2c 58 3a 9b c3 a1 dc 85 ce d1 70 c3 |S..),X:.......p.| -00000060 06 53 1d 66 4d 51 a5 33 4c 53 41 e8 ac 1b 10 |.S.fMQ.3LSA....| +00000000 17 03 01 00 20 50 1e 02 79 6b 4b 67 77 bb c0 a7 |.... P..ykKgw...| +00000010 ef 5a c1 cc bc 28 14 86 2c 83 4f 3f 34 97 c4 73 |.Z...(..,.O?4..s| +00000020 24 44 ad 59 8c 17 03 01 00 20 e3 52 89 d7 d1 9a |$D.Y..... .R....| +00000030 33 21 78 e4 41 36 b1 11 74 c0 73 fb ea c9 42 88 |3!x.A6..t.s...B.| +00000040 7f 71 ea 40 a0 3a 62 54 dc b7 15 03 01 00 20 4a |.q.@.:bT...... J| +00000050 ff f4 c6 c0 5f fd e2 b3 bd 4a a9 aa 19 64 2d 98 |...._....J...d-.| +00000060 f1 ea 56 4e 3a c9 1c be 8d fb c3 6c 2f 98 ff |..VN:......l/..| diff --git a/src/crypto/tls/testdata/Client-TLSv10-ClientCert-RSA-ECDSA b/src/crypto/tls/testdata/Client-TLSv10-ClientCert-RSA-ECDSA index 8f1ff3f1d3..8ce1bad190 100644 --- a/src/crypto/tls/testdata/Client-TLSv10-ClientCert-RSA-ECDSA +++ b/src/crypto/tls/testdata/Client-TLSv10-ClientCert-RSA-ECDSA @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 01 00 5d 02 00 00 59 03 01 79 7e 8c 72 46 |....]...Y..y~.rF| -00000010 e6 1a d5 db 83 07 37 34 cf f5 84 39 87 af 5f 23 |......74...9.._#| -00000020 47 f9 e2 9d c0 76 e8 6a 7e 88 9c 20 a3 c7 5b 94 |G....v.j~.. ..[.| -00000030 8f 63 f2 ac 89 b5 ed ee e0 8f 87 be 2a 3e f1 6c |.c..........*>.l| -00000040 2f ca cc d0 ee 22 4c a9 ed 03 5e 18 c0 09 00 00 |/...."L...^.....| +00000000 16 03 01 00 5d 02 00 00 59 03 01 ef c9 5c 4d 29 |....]...Y....\M)| +00000010 07 24 2a 41 08 94 39 cc d3 fb 92 88 1c ff 64 6b |.$*A..9.......dk| +00000020 0a 14 41 89 c6 5d 9b 25 7e a7 04 20 a0 aa ad 46 |..A..].%~.. ...F| +00000030 14 01 d2 dd 37 44 05 4b 1d 9f ea e5 98 29 1e 36 |....7D.K.....).6| +00000040 09 e2 ab 90 93 ee c1 99 7d 17 77 9b c0 09 00 00 |........}.w.....| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 01 02 0e 0b 00 02 0a 00 02 07 00 02 |................| 00000070 04 30 82 02 00 30 82 01 62 02 09 00 b8 bf 2d 47 |.0...0..b.....-G| @@ -58,20 +57,20 @@ 00000240 8c 25 c1 33 13 83 0d 94 06 bb d4 37 7a f6 ec 7a |.%.3.......7z..z| 00000250 c9 86 2e dd d7 11 69 7f 85 7c 56 de fb 31 78 2b |......i..|V..1x+| 00000260 e4 c7 78 0d ae cb be 9e 4e 36 24 31 7b 6a 0f 39 |..x.....N6$1{j.9| -00000270 95 12 07 8f 2a 16 03 01 00 b3 0c 00 00 af 03 00 |....*...........| -00000280 1d 20 37 50 ab 46 a8 24 be 20 fd 71 c2 8d 91 a0 |. 7P.F.$. .q....| -00000290 88 88 0b 18 f5 ec 43 99 cb 63 45 9c ad b4 27 20 |......C..cE...' | -000002a0 0d 11 00 89 30 81 86 02 41 35 1d fa 6c 1b a1 b4 |....0...A5..l...| -000002b0 bc 5f 4d a6 77 64 8d e1 92 94 97 53 c5 01 c2 bb |._M.wd.....S....| -000002c0 5c 83 f0 c2 6d 6d d1 1f ff 7a 00 06 4a a0 de c0 |\...mm...z..J...| -000002d0 aa a1 9f 6d f6 62 20 d0 08 1e 5b bc 1d af 03 45 |...m.b ...[....E| -000002e0 d5 70 8b ee d8 a8 ff 3e 2b 7d 02 41 28 ff 3e 45 |.p.....>+}.A(.>E| -000002f0 7f ec c1 87 df dd 14 8b 64 08 84 02 2b de ff 14 |........d...+...| -00000300 b9 6f 54 72 b1 a2 99 47 55 2d 76 91 77 ba 4f db |.oTr...GU-v.w.O.| -00000310 a3 4c ab 21 62 48 3a 8d f7 32 57 12 dc 6c a9 51 |.L.!bH:..2W..l.Q| -00000320 77 cc b3 30 1f e9 41 bf 0b b3 4b a5 e4 16 03 01 |w..0..A...K.....| -00000330 00 0a 0d 00 00 06 03 01 02 40 00 00 16 03 01 00 |.........@......| -00000340 04 0e 00 00 00 |.....| +00000270 95 12 07 8f 2a 16 03 01 00 b4 0c 00 00 b0 03 00 |....*...........| +00000280 1d 20 a4 4e 43 df 00 5c c7 1c e8 d4 8e 9b cf b0 |. .NC..\........| +00000290 36 85 64 7c d7 69 95 c0 b4 6f d8 0b 45 b8 a4 34 |6.d|.i...o..E..4| +000002a0 1a 18 00 8a 30 81 87 02 42 01 d0 4a 3f 65 9d 46 |....0...B..J?e.F| +000002b0 20 80 34 28 12 93 56 6e dc e4 0e 91 0b 45 4b 83 | .4(..Vn.....EK.| +000002c0 c5 e9 83 2c 41 d6 dc 49 15 15 e6 65 9f 18 ba a6 |...,A..I...e....| +000002d0 20 a6 de c7 20 7e 09 71 e6 59 86 9e aa 32 be 43 | ... ~.q.Y...2.C| +000002e0 b7 c3 27 98 ba 5b 49 9b 1d b9 67 02 41 4e 36 0e |..'..[I...g.AN6.| +000002f0 6d 29 c8 7d 0b d9 6f 06 92 ca 0b b9 33 7e 11 58 |m).}..o.....3~.X| +00000300 2f cc 06 ae ad 57 80 f4 38 a1 8a e3 6a ef 37 86 |/....W..8...j.7.| +00000310 58 1a 59 f9 4a 9a 64 89 5b 7c 8a 7a c5 78 dd b5 |X.Y.J.d.[|.z.x..| +00000320 6c 96 b8 23 ff fc 88 20 59 0b e9 74 99 b9 16 03 |l..#... Y..t....| +00000330 01 00 0a 0d 00 00 06 03 01 02 40 00 00 16 03 01 |..........@.....| +00000340 00 04 0e 00 00 00 |......| >>> Flow 3 (client to server) 00000000 16 03 01 01 fd 0b 00 01 f9 00 01 f6 00 01 f3 30 |...............0| 00000010 82 01 ef 30 82 01 58 a0 03 02 01 02 02 10 5c 19 |...0..X.......\.| @@ -108,29 +107,29 @@ 00000200 e5 35 16 03 01 00 25 10 00 00 21 20 2f e5 7d a3 |.5....%...! /.}.| 00000210 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 |G.bC.(.._.).0...| 00000220 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 16 03 01 00 |......._X.;t....| -00000230 86 0f 00 00 82 00 80 22 5d 5b 59 98 4a a8 53 6b |......."][Y.J.Sk| -00000240 78 1d 8f 51 a1 23 6a 87 fb 9d 79 5c 63 9d dc 61 |x..Q.#j...y\c..a| -00000250 13 9f a1 36 f9 fa ec a0 6f 47 11 d6 7c 8f a4 81 |...6....oG..|...| -00000260 fb f1 31 59 11 6c 8e 83 1c 56 3b 03 b4 a9 e0 09 |..1Y.l...V;.....| -00000270 aa 04 c4 d1 7a c5 28 03 ae ce fe a0 95 1b 8c 5c |....z.(........\| -00000280 65 32 ca f0 d5 43 fc 9b e0 8e ca 80 f3 e0 5f 8d |e2...C........_.| -00000290 6d 91 ff f2 4b 7b a7 38 64 dd e8 a8 d8 1f 95 31 |m...K{.8d......1| -000002a0 04 a9 6c 72 45 9c 0d a3 80 60 8e 20 8a af f7 ae |..lrE....`. ....| -000002b0 87 10 26 51 0e a5 e8 14 03 01 00 01 01 16 03 01 |..&Q............| -000002c0 00 30 46 9b a2 75 16 a9 c2 ac d7 47 ca 41 48 bd |.0F..u.....G.AH.| -000002d0 2c 3d 56 e3 a4 21 a6 c0 d8 71 6d fb 4a c6 9a a1 |,=V..!...qm.J...| -000002e0 88 db a5 70 58 e0 e3 5a c7 62 d1 d4 0f 4b c6 55 |...pX..Z.b...K.U| -000002f0 0c aa |..| +00000230 86 0f 00 00 82 00 80 a4 68 2d 1f 8a 97 43 76 aa |........h-...Cv.| +00000240 f9 24 95 20 62 13 c0 a3 45 c6 18 1c a3 34 70 02 |.$. b...E....4p.| +00000250 ff f5 01 4e ba e2 20 1c f9 06 a6 67 92 d9 e6 9d |...N.. ....g....| +00000260 a3 49 e0 75 3e 11 00 74 52 b1 36 58 4b 1e 54 83 |.I.u>..tR.6XK.T.| +00000270 e0 9a 48 4d df 2c ab fd cd 5e 7a cf c9 b8 32 08 |..HM.,...^z...2.| +00000280 74 e6 ae 75 20 f4 41 3a 7c a9 a3 19 38 a0 8d 05 |t..u .A:|...8...| +00000290 0a e9 3e 50 6c f6 f8 a3 89 a9 55 ea dc 3f be b1 |..>Pl.....U..?..| +000002a0 0a 92 83 cc f0 9b c9 e1 49 13 db 64 be 55 46 b5 |........I..d.UF.| +000002b0 12 b1 0b 88 32 e3 f1 14 03 01 00 01 01 16 03 01 |....2...........| +000002c0 00 30 81 77 0f 6c 7a bc a8 d2 41 f9 8b a7 da 96 |.0.w.lz...A.....| +000002d0 29 f1 2f b1 31 f3 57 03 09 21 5c fa dc f7 5c f6 |)./.1.W..!\...\.| +000002e0 7f a8 24 08 30 70 bb 34 16 22 f8 c6 b2 4d a7 16 |..$.0p.4."...M..| +000002f0 68 61 |ha| >>> Flow 4 (server to client) -00000000 14 03 01 00 01 01 16 03 01 00 30 6b ab 63 56 79 |..........0k.cVy| -00000010 32 ef f9 df c5 36 29 50 f5 1d 55 c2 4b 84 f5 68 |2....6)P..U.K..h| -00000020 b0 d8 7d 7d 80 24 e2 5d b9 0f 66 25 4e 50 21 08 |..}}.$.]..f%NP!.| -00000030 a3 15 de 0e 04 ef 86 d6 04 2e 9b |...........| +00000000 14 03 01 00 01 01 16 03 01 00 30 71 d2 ee cd f8 |..........0q....| +00000010 c5 fe b4 96 d5 02 ee cb f7 f8 93 34 f2 8a ed 71 |...........4...q| +00000020 9a b7 1f 01 9d fb 6c 3f ee 22 bb 5c b0 8c 08 f5 |......l?.".\....| +00000030 bf 1e d3 1c 12 ec 7b 86 05 bd e5 |......{....| >>> Flow 5 (client to server) -00000000 17 03 01 00 20 86 3b 02 a4 5c 33 eb 57 cc 42 71 |.... .;..\3.W.Bq| -00000010 32 81 56 00 4a b0 3b 7e ed cd ab d9 76 2b 12 97 |2.V.J.;~....v+..| -00000020 d6 be 22 cc 02 17 03 01 00 20 e7 53 2a b7 18 a7 |.."...... .S*...| -00000030 6f 65 ef 20 9d 38 be 3c f0 6c 4e 5d e9 cc ac 8c |oe. .8.<.lN]....| -00000040 57 7d 61 c6 23 d8 bb d4 97 15 15 03 01 00 20 c9 |W}a.#......... .| -00000050 c1 b2 03 2b b0 a4 cb 4b 65 31 46 c4 6c e4 12 70 |...+...Ke1F.l..p| -00000060 0e eb e8 a0 d2 1c ca 2d 4f 87 f0 16 e9 23 b0 |.......-O....#.| +00000000 17 03 01 00 20 8a 57 b3 89 76 41 f0 b3 51 da f4 |.... .W..vA..Q..| +00000010 e7 6a f8 46 75 77 4d 8b 67 41 f9 f9 eb a0 cd 12 |.j.FuwM.gA......| +00000020 78 08 12 d1 7b 17 03 01 00 20 9d 44 6a dd 48 ad |x...{.... .Dj.H.| +00000030 0a d9 3f 80 da b1 3d b3 50 be 40 c1 85 b5 bb 59 |..?...=.P.@....Y| +00000040 e8 b9 2a 9f f5 2e 98 d3 2b c1 15 03 01 00 20 bd |..*.....+..... .| +00000050 69 41 45 bb 53 de f8 b7 bf a5 87 12 02 32 1a 05 |iAE.S........2..| +00000060 09 94 40 a5 64 b3 31 7d 0d dc 01 ff 25 ca 31 |..@.d.1}....%.1| diff --git a/src/crypto/tls/testdata/Client-TLSv10-ClientCert-RSA-RSA b/src/crypto/tls/testdata/Client-TLSv10-ClientCert-RSA-RSA index 2ad78c7043..37d05fc481 100644 --- a/src/crypto/tls/testdata/Client-TLSv10-ClientCert-RSA-RSA +++ b/src/crypto/tls/testdata/Client-TLSv10-ClientCert-RSA-RSA @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 01 00 5d 02 00 00 59 03 01 26 fc 57 68 fc |....]...Y..&.Wh.| -00000010 0d a6 0d 31 5f 98 77 d2 5d 19 e1 35 55 0e 2b d1 |...1_.w.]..5U.+.| -00000020 08 a0 f2 23 b8 8a 4a 71 58 f5 26 20 23 a6 28 5f |...#..JqX.& #.(_| -00000030 5b 57 e9 7d c9 14 a1 ec 75 33 8d 42 ce 0e 3e fc |[W.}....u3.B..>.| -00000040 0a d6 12 ef 3e f7 7b 15 8e aa 04 4a c0 13 00 00 |....>.{....J....| +00000000 16 03 01 00 5d 02 00 00 59 03 01 71 32 68 84 f2 |....]...Y..q2h..| +00000010 93 91 32 5b 71 e6 d1 fd 26 83 00 87 0f 56 f3 8a |..2[q...&....V..| +00000020 70 17 5e c9 c3 b3 ce 61 9a 1d 4d 20 85 cc 39 26 |p.^....a..M ..9&| +00000030 32 1a 78 34 d5 d3 6c e2 df 89 f5 a0 51 2c f5 2d |2.x4..l.....Q,.-| +00000040 e0 17 51 e7 51 f4 61 8d 35 72 75 92 c0 13 00 00 |..Q.Q.a.5ru.....| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 01 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -63,17 +62,17 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 01 00 aa 0c 00 00 a6 03 00 1d 20 eb d9 23 |............ ..#| -000002d0 5f 21 7f ab f2 ae b4 9a c8 06 2c 2a b4 01 50 5b |_!........,*..P[| -000002e0 7e 57 e6 7f 03 ac 36 9f b7 f7 2f fa 5a 00 80 7e |~W....6.../.Z..~| -000002f0 74 f4 01 6e cd eb f6 d9 13 72 57 57 f5 2f 8d a7 |t..n.....rWW./..| -00000300 5a 39 7b 93 ff b1 56 98 b9 72 02 44 e9 de 4f c1 |Z9{...V..r.D..O.| -00000310 6a 7d 6f 43 73 a8 53 91 0a 82 de 66 21 22 65 f0 |j}oCs.S....f!"e.| -00000320 31 ff e4 e8 bc 80 7a 79 23 d1 3d b8 a5 be ff 3b |1.....zy#.=....;| -00000330 fc 6c f1 45 4e 59 50 29 cd 35 d3 d4 93 eb 1f 65 |.l.ENYP).5.....e| -00000340 56 b1 e8 5f 35 a8 a6 8a 2b 02 4a 84 33 5b ff 01 |V.._5...+.J.3[..| -00000350 d0 d1 d5 17 6c 30 e9 ce 03 cc 7c 28 25 50 0c cd |....l0....|(%P..| -00000360 74 55 3e cf 3f dc 9c 80 19 35 f5 36 e5 ca 9a 16 |tU>.?....5.6....| +000002c0 16 03 01 00 aa 0c 00 00 a6 03 00 1d 20 3a 64 e7 |............ :d.| +000002d0 9a 59 c3 4e fc 40 5e 2f 5c 89 cd e1 94 85 4e 1f |.Y.N.@^/\.....N.| +000002e0 29 37 0b 53 fe 3a 13 76 56 25 2a 97 65 00 80 08 |)7.S.:.vV%*.e...| +000002f0 1c de 63 0d 31 9b 72 7b 85 0c 03 b0 08 ea 80 a1 |..c.1.r{........| +00000300 ee 00 03 f9 29 a3 ba 8e c8 71 3e b4 4d b3 28 54 |....)....q>.M.(T| +00000310 2c e7 11 3a 15 e0 43 06 f0 36 15 50 54 5e 88 48 |,..:..C..6.PT^.H| +00000320 ac c4 68 db 83 dc 0c 22 e4 99 4a 08 2a 00 7d 19 |..h...."..J.*.}.| +00000330 0d 74 ba 7a 27 9c 39 dc 29 41 52 cf a2 ac 29 94 |.t.z'.9.)AR...).| +00000340 e6 b0 87 60 e5 d3 58 af 3e 8e 41 bd be 48 ba 90 |...`..X.>.A..H..| +00000350 49 b2 b1 d3 8e b0 49 98 4a 12 70 60 c7 57 d9 a7 |I.....I.J.p`.W..| +00000360 db dc 41 b0 dc 81 37 1b 6d ac 9c 69 12 f4 fa 16 |..A...7.m..i....| 00000370 03 01 00 0a 0d 00 00 06 03 01 02 40 00 00 16 03 |...........@....| 00000380 01 00 04 0e 00 00 00 |.......| >>> Flow 3 (client to server) @@ -112,29 +111,29 @@ 00000200 e5 35 16 03 01 00 25 10 00 00 21 20 2f e5 7d a3 |.5....%...! /.}.| 00000210 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 |G.bC.(.._.).0...| 00000220 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 16 03 01 00 |......._X.;t....| -00000230 86 0f 00 00 82 00 80 8b 21 19 8e 69 f9 f2 da 9b |........!..i....| -00000240 58 ce 21 ce 77 f1 c4 50 be 04 63 bc 30 ac 9e 32 |X.!.w..P..c.0..2| -00000250 f0 43 31 36 8a 87 f9 8a 3a f8 00 48 04 07 ad e0 |.C16....:..H....| -00000260 0d 57 d6 74 86 70 6e 30 74 97 a0 26 e1 6f dd c1 |.W.t.pn0t..&.o..| -00000270 5b b6 c5 b0 05 35 43 aa b3 14 fb ca 59 80 fa 4a |[....5C.....Y..J| -00000280 d4 be 61 b2 a7 5d f0 b4 dc 9b ee 83 b6 93 09 ca |..a..]..........| -00000290 82 76 a8 99 1d 85 b6 77 f4 eb 7d 4b bb 7c 5b d5 |.v.....w..}K.|[.| -000002a0 7b 40 a9 b0 77 ad a0 8b 08 81 5c 8e 20 e2 2a 62 |{@..w.....\. .*b| -000002b0 9f 53 28 e4 e1 a3 1d 14 03 01 00 01 01 16 03 01 |.S(.............| -000002c0 00 30 84 88 01 5f 1e 79 9b f8 60 b3 7b 50 e0 97 |.0..._.y..`.{P..| -000002d0 e7 94 1c 75 58 89 1e ab 20 c9 2a 35 43 af 5b e1 |...uX... .*5C.[.| -000002e0 05 25 60 49 ec 7b fc 9f d2 ea 77 9a fe a7 86 b8 |.%`I.{....w.....| -000002f0 89 7d |.}| +00000230 86 0f 00 00 82 00 80 21 34 0c d8 10 ac 90 53 f9 |.......!4.....S.| +00000240 18 52 42 05 ca e8 c7 4f 33 c4 43 4b 8e 7c e4 23 |.RB....O3.CK.|.#| +00000250 21 6d e4 07 ef 3f 06 d1 ea 1c 9d 3b e0 d2 66 36 |!m...?.....;..f6| +00000260 b5 c9 a1 da fe 54 fd e0 fe 0c b6 12 90 93 41 1f |.....T........A.| +00000270 43 00 00 e4 a4 04 14 af 00 3e 1b db 16 d6 07 4b |C........>.....K| +00000280 55 2f ed 55 e1 e1 a8 8b d8 e1 fe cb 41 1d fe bc |U/.U........A...| +00000290 6d d9 ba 8f 2b 1c 26 19 9d 93 a9 78 fb 8a 54 59 |m...+.&....x..TY| +000002a0 76 3b 0a df e6 71 2c c0 63 dd 22 8d c6 70 ef 0e |v;...q,.c."..p..| +000002b0 4f 1b 4c da 65 11 f6 14 03 01 00 01 01 16 03 01 |O.L.e...........| +000002c0 00 30 b5 c2 b0 f3 b6 6c 4a 99 de f2 98 2f 37 2b |.0.....lJ..../7+| +000002d0 8a d8 ab 96 91 c2 9b cc 56 5c fb e1 4f 5b 89 09 |........V\..O[..| +000002e0 5f 94 05 60 0e 83 b5 49 9a 15 9b 0f 5d 1a 2b a2 |_..`...I....].+.| +000002f0 11 23 |.#| >>> Flow 4 (server to client) -00000000 14 03 01 00 01 01 16 03 01 00 30 ae 8c 9b 1b 85 |..........0.....| -00000010 41 7b 53 64 51 07 12 6b 37 c0 75 81 b0 6d 4b bd |A{SdQ..k7.u..mK.| -00000020 30 a3 a1 5b a3 9e 3d c3 ed 4f ac e3 67 88 ec a8 |0..[..=..O..g...| -00000030 fb 6f 09 d5 11 8c 7b ae 39 60 0c |.o....{.9`.| +00000000 14 03 01 00 01 01 16 03 01 00 30 63 a2 f0 9b 1c |..........0c....| +00000010 48 6d 23 54 62 b1 2a 19 e7 89 51 fd 0d 83 97 87 |Hm#Tb.*...Q.....| +00000020 9b 73 31 11 5e 42 56 62 62 37 4d e5 e6 72 8a 6d |.s1.^BVbb7M..r.m| +00000030 a3 02 2b 2c 9e a5 1a 5c 34 f2 0d |..+,...\4..| >>> Flow 5 (client to server) -00000000 17 03 01 00 20 ca 25 b7 cb b1 74 e5 00 c2 65 b4 |.... .%...t...e.| -00000010 49 9d 2c c5 a4 0b be 1d 2b 49 30 96 19 f2 10 0c |I.,.....+I0.....| -00000020 7a c2 23 57 5b 17 03 01 00 20 39 20 09 37 f3 b0 |z.#W[.... 9 .7..| -00000030 8f 3a 93 2f 14 6d cd d6 ec 2c 1f 2b 3f ee 13 d3 |.:./.m...,.+?...| -00000040 72 f4 c4 36 49 a9 80 28 f1 08 15 03 01 00 20 82 |r..6I..(...... .| -00000050 c8 e7 e5 a1 c0 78 da 98 8a ad 93 da cb cc 9e a8 |.....x..........| -00000060 c6 60 ec 50 fa d2 25 38 6b e3 5d 0d 1c c7 15 |.`.P..%8k.]....| +00000000 17 03 01 00 20 63 1a 2c 25 27 68 ed de ba 94 52 |.... c.,%'h....R| +00000010 73 f2 7a 28 ed 8c e9 3f a2 48 9a 07 62 22 27 6d |s.z(...?.H..b"'m| +00000020 4e be ba e4 67 17 03 01 00 20 1d ee ac 7c fc a7 |N...g.... ...|..| +00000030 df 74 93 16 c6 ec 58 5e 04 5d 2e 98 0a ba 52 4f |.t....X^.]....RO| +00000040 a0 02 c5 79 c3 d6 f0 ab 8d 33 15 03 01 00 20 bb |...y.....3.... .| +00000050 54 a6 65 a7 c9 03 e7 83 ae a1 f3 26 9f 73 76 6b |T.e........&.svk| +00000060 e6 1e f7 e0 76 e5 ca 9f c8 87 14 ac 27 f1 e3 |....v.......'..| diff --git a/src/crypto/tls/testdata/Client-TLSv10-ECDHE-ECDSA-AES b/src/crypto/tls/testdata/Client-TLSv10-ECDHE-ECDSA-AES index b8f32392b5..a8593e249b 100644 --- a/src/crypto/tls/testdata/Client-TLSv10-ECDHE-ECDSA-AES +++ b/src/crypto/tls/testdata/Client-TLSv10-ECDHE-ECDSA-AES @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 01 00 5d 02 00 00 59 03 01 65 75 f4 83 d3 |....]...Y..eu...| -00000010 95 a2 e3 96 5d 70 09 f1 ab 22 18 3d f6 9c 27 b2 |....]p...".=..'.| -00000020 f0 4f 17 eb f4 6a 32 4d 1f 02 59 20 75 b7 a4 c8 |.O...j2M..Y u...| -00000030 66 a9 4b 54 d3 0b 8b 82 38 24 31 8a 01 71 95 06 |f.KT....8$1..q..| -00000040 a9 4f dd b2 d4 42 25 77 8c 91 87 48 c0 09 00 00 |.O...B%w...H....| +00000000 16 03 01 00 5d 02 00 00 59 03 01 3e 61 ab b7 94 |....]...Y..>a...| +00000010 d9 7c 76 db 26 b6 fc 86 00 8f c4 af bd c6 1a 22 |.|v.&.........."| +00000020 dd 72 ce 5d 2a 4c d8 61 a1 20 6b 20 c9 82 ca c9 |.r.]*L.a. k ....| +00000030 99 59 80 37 6c 01 d2 b3 b5 0d 68 9f 65 b0 15 7d |.Y.7l.....h.e..}| +00000040 a6 b0 15 b0 49 5a ae 38 d2 77 5e 06 c0 09 00 00 |....IZ.8.w^.....| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 01 02 0e 0b 00 02 0a 00 02 07 00 02 |................| 00000070 04 30 82 02 00 30 82 01 62 02 09 00 b8 bf 2d 47 |.0...0..b.....-G| @@ -58,37 +57,37 @@ 00000240 8c 25 c1 33 13 83 0d 94 06 bb d4 37 7a f6 ec 7a |.%.3.......7z..z| 00000250 c9 86 2e dd d7 11 69 7f 85 7c 56 de fb 31 78 2b |......i..|V..1x+| 00000260 e4 c7 78 0d ae cb be 9e 4e 36 24 31 7b 6a 0f 39 |..x.....N6$1{j.9| -00000270 95 12 07 8f 2a 16 03 01 00 b3 0c 00 00 af 03 00 |....*...........| -00000280 1d 20 37 88 b4 b9 cb 5f 71 5e 4c 36 59 f1 37 97 |. 7...._q^L6Y.7.| -00000290 ec 3e 16 c8 ac 23 61 8d fe 75 14 ff 33 eb db 04 |.>...#a..u..3...| -000002a0 7a 17 00 89 30 81 86 02 41 50 a1 8b 98 a0 b9 21 |z...0...AP.....!| -000002b0 22 23 a1 ce 76 85 6e 7a 40 ce 2c 65 bc 3c 89 e6 |"#..v.nz@.,e.<..| -000002c0 1c 74 1e a9 1d 6c c7 60 99 b5 68 62 74 84 0d 7c |.t...l.`..hbt..|| -000002d0 a3 06 61 b1 d2 9a 5c 3e 92 39 d7 ac be 1d ac ff |..a...\>.9......| -000002e0 18 e7 76 29 f1 d2 8f 97 6e 44 02 41 07 e1 ee a8 |..v)....nD.A....| -000002f0 cc 89 7d a5 6e e5 32 52 51 72 ff dc 9e 77 e2 c8 |..}.n.2RQr...w..| -00000300 18 07 1e 6e fa 4a b2 05 f8 a5 e6 21 76 90 ba e4 |...n.J.....!v...| -00000310 9f b4 2a 03 c5 86 07 58 aa 4a c2 d8 24 c9 a5 e0 |..*....X.J..$...| -00000320 d7 04 0e 41 33 3c b7 e2 82 f1 05 0d 6a 16 03 01 |...A3<......j...| -00000330 00 04 0e 00 00 00 |......| +00000270 95 12 07 8f 2a 16 03 01 00 b5 0c 00 00 b1 03 00 |....*...........| +00000280 1d 20 73 36 95 70 b0 c6 fd c6 cf 68 f3 77 1e 46 |. s6.p.....h.w.F| +00000290 c2 22 3e f8 e6 f4 37 82 73 8e 8d ec 40 64 0d a9 |.">...7.s...@d..| +000002a0 f7 6f 00 8b 30 81 88 02 42 01 2f 8b 24 b7 24 65 |.o..0...B./.$.$e| +000002b0 6e f8 a3 55 53 3f da 67 a2 b6 35 b3 ef 8b 87 39 |n..US?.g..5....9| +000002c0 2f 44 e8 a6 9d 2c 16 c1 82 a9 a9 f6 20 0f 1b 36 |/D...,...... ..6| +000002d0 32 b8 7a 96 2d 5a b0 4d 43 53 ec c9 06 82 83 0e |2.z.-Z.MCS......| +000002e0 fb 0b 8c f8 0b 47 b6 dd 19 4c 96 02 42 01 c6 7e |.....G...L..B..~| +000002f0 20 9e d9 2f 33 1f 5f 25 bc 79 a3 df 96 9d e0 05 | ../3._%.y......| +00000300 d7 72 75 29 7d b3 f2 0a 5e 81 39 71 b7 f9 68 e8 |.ru)}...^.9q..h.| +00000310 82 07 93 80 88 31 77 2c db 8b 58 49 28 c5 7b c1 |.....1w,..XI(.{.| +00000320 e3 84 3c b9 08 2e a0 ab 66 12 b9 3c b9 a2 e8 16 |..<.....f..<....| +00000330 03 01 00 04 0e 00 00 00 |........| >>> Flow 3 (client to server) 00000000 16 03 01 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 01 00 01 01 |....._X.;t......| -00000030 16 03 01 00 30 8b de e9 e0 3d 21 29 46 07 eb da |....0....=!)F...| -00000040 60 6a 55 37 05 9c 94 e1 46 1f 12 a0 76 b6 0f 45 |`jU7....F...v..E| -00000050 9d ad ee 69 ae 01 74 9f de d4 d1 67 a5 0b 57 48 |...i..t....g..WH| -00000060 69 c3 e6 2d ad |i..-.| +00000030 16 03 01 00 30 9a 24 ee 81 ee 6e b3 fe ab 63 04 |....0.$...n...c.| +00000040 ae b1 1b 11 91 b0 cc 45 b8 67 74 9e 92 15 fd b1 |.......E.gt.....| +00000050 b4 49 49 b4 f4 a5 61 01 1b ec 91 23 ec c0 98 8d |.II...a....#....| +00000060 ee 21 fd 29 95 |.!.).| >>> Flow 4 (server to client) -00000000 14 03 01 00 01 01 16 03 01 00 30 f7 8f 4a 28 80 |..........0..J(.| -00000010 4c 9b cb 02 39 81 a4 19 84 d9 b3 64 48 4d a6 2b |L...9......dHM.+| -00000020 20 6a 1e 9d 6f d2 39 53 1a f4 27 0e dc 92 ec 71 | j..o.9S..'....q| -00000030 7d 48 66 67 6a 51 68 e4 7c 68 63 |}HfgjQh.|hc| +00000000 14 03 01 00 01 01 16 03 01 00 30 74 d2 f1 68 1e |..........0t..h.| +00000010 1e 11 8a eb 51 ae a6 19 af 60 09 c4 85 65 3e 71 |....Q....`...e>q| +00000020 af d0 94 14 c3 80 18 91 72 23 97 26 f8 91 2f d6 |........r#.&../.| +00000030 65 3c 02 06 10 d0 bb e7 92 57 b0 |e<.......W.| >>> Flow 5 (client to server) -00000000 17 03 01 00 20 ca ea fd d5 01 d1 47 40 a5 57 4f |.... ......G@.WO| -00000010 b0 80 29 e5 a0 4a f2 09 34 02 46 10 45 3a 05 42 |..)..J..4.F.E:.B| -00000020 0f 19 eb a2 33 17 03 01 00 20 34 92 d3 ed e4 50 |....3.... 4....P| -00000030 13 e9 5c 65 01 fc c1 a3 28 77 c8 d6 2c 11 7f 68 |..\e....(w..,..h| -00000040 b9 08 51 53 c9 f3 d3 4e 9a 24 15 03 01 00 20 07 |..QS...N.$.... .| -00000050 4d 53 0a 85 d4 49 c4 7b a2 4c 38 8d cc 8e 2a dd |MS...I.{.L8...*.| -00000060 24 da 28 07 f8 4b c5 2c d2 15 e2 b5 b9 56 b1 |$.(..K.,.....V.| +00000000 17 03 01 00 20 bf f3 92 9c 91 50 02 1e d2 29 17 |.... .....P...).| +00000010 2c 5d 5f 43 c9 de 49 db 7b 0b bf eb 77 c5 9a 37 |,]_C..I.{...w..7| +00000020 c7 e1 c3 83 a3 17 03 01 00 20 df 80 0b 7e 80 39 |......... ...~.9| +00000030 b3 46 d8 7c 09 7a a8 c1 3a 04 77 2f 94 30 eb 8e |.F.|.z..:.w/.0..| +00000040 5d 56 08 95 bb 50 80 76 4b e7 15 03 01 00 20 0e |]V...P.vK..... .| +00000050 91 ba 25 bb d6 f6 ee 42 e0 8e 08 a1 7f d5 8f e3 |..%....B........| +00000060 18 05 85 24 b6 0c 81 80 98 89 ae 2c 04 0e 8a |...$.......,...| diff --git a/src/crypto/tls/testdata/Client-TLSv10-ECDHE-RSA-AES b/src/crypto/tls/testdata/Client-TLSv10-ECDHE-RSA-AES index 9790da472e..b73fd761c4 100644 --- a/src/crypto/tls/testdata/Client-TLSv10-ECDHE-RSA-AES +++ b/src/crypto/tls/testdata/Client-TLSv10-ECDHE-RSA-AES @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 01 00 5d 02 00 00 59 03 01 2d 3f 4f 1e 90 |....]...Y..-?O..| -00000010 6e 65 37 1c 8e a3 17 98 72 de 49 69 4d b9 61 c9 |ne7.....r.IiM.a.| -00000020 20 c2 92 6f 4f d1 a8 dc 61 71 4d 20 67 dc 24 8f | ..oO...aqM g.$.| -00000030 59 12 a0 19 ab ca e1 3a 44 e7 b3 32 bd 7d 04 96 |Y......:D..2.}..| -00000040 41 1a 44 f6 fb 60 14 8f 6f f8 0e 69 c0 13 00 00 |A.D..`..o..i....| +00000000 16 03 01 00 5d 02 00 00 59 03 01 79 f2 d6 96 d6 |....]...Y..y....| +00000010 6d c9 a1 7a 04 ba 6d 7d 29 8d 91 3f 8e 2e 17 0f |m..z..m})..?....| +00000020 c8 c4 3a e1 3c 64 00 28 f8 21 9d 20 16 7b 80 30 |..:...| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 01 00 aa 0c 00 00 a6 03 00 1d 20 91 5b 49 |............ .[I| -000002d0 6b 53 81 6a 82 c4 1b db 31 cd d9 3a aa e4 a3 a8 |kS.j....1..:....| -000002e0 76 8d 29 ba a4 27 eb fe 19 98 de 4c 20 00 80 71 |v.)..'.....L ..q| -000002f0 a2 66 8e 70 55 ec 04 3c dd 5a 5e 79 fb 25 2b af |.f.pU..<.Z^y.%+.| -00000300 dc aa 47 03 9b c3 99 d2 20 83 81 cb 82 68 8e 62 |..G..... ....h.b| -00000310 26 90 78 d0 8c 9c 49 87 34 22 c1 0c 73 a8 de 79 |&.x...I.4"..s..y| -00000320 3c 73 e9 49 15 f0 63 17 19 bb cb 5f 97 c6 20 80 |.....&..;K.| -00000350 15 96 f8 84 30 6d b9 e3 44 c4 45 57 aa d1 53 9e |....0m..D.EW..S.| -00000360 cc c9 09 c2 1b 17 0d 8f f7 d7 0e 9d 86 33 60 16 |.............3`.| +000002c0 16 03 01 00 aa 0c 00 00 a6 03 00 1d 20 69 9e db |............ i..| +000002d0 5f 4b 5e 7d 1e 00 1e 91 a6 49 81 e3 d9 ee ea 5e |_K^}.....I.....^| +000002e0 5c 40 f0 68 fd dd eb 6e e4 85 58 91 70 00 80 8e |\@.h...n..X.p...| +000002f0 d6 64 01 3a 56 c2 58 5c 60 28 bc f6 bd 1e bf 73 |.d.:V.X\`(.....s| +00000300 21 b8 1a ea fb c2 df d5 f1 b9 4d d7 6f 1c 8b 24 |!.........M.o..$| +00000310 99 35 a5 ef 20 75 00 3e 83 34 da 40 4e ec e3 43 |.5.. u.>.4.@N..C| +00000320 04 a4 f2 1e bb 97 23 3e 21 32 88 43 80 99 ec 43 |......#>!2.C...C| +00000330 66 c3 09 87 1e e2 ad bb c3 1c db f7 9a 59 3a a8 |f............Y:.| +00000340 46 43 b6 3d 9a 6e c3 42 5b 1a 7d 85 dc db 96 cc |FC.=.n.B[.}.....| +00000350 8d 06 cc 08 d2 f0 09 c3 c6 ed 5f 3b f6 b0 a3 69 |.........._;...i| +00000360 6c a8 9a a5 ef ad 59 c1 07 96 e8 34 1d f0 d9 16 |l.....Y....4....| 00000370 03 01 00 04 0e 00 00 00 |........| >>> Flow 3 (client to server) 00000000 16 03 01 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 01 00 01 01 |....._X.;t......| -00000030 16 03 01 00 30 16 75 14 eb 02 a0 e1 02 79 5f fe |....0.u......y_.| -00000040 fe e6 89 69 f1 5b 57 01 58 0f 4c 7d 4e 27 ed ae |...i.[W.X.L}N'..| -00000050 b8 b2 b9 53 24 f1 f1 d0 0b f2 d2 a0 21 ca 68 37 |...S$.......!.h7| -00000060 26 56 78 68 5c |&Vxh\| +00000030 16 03 01 00 30 d1 17 2f 22 e5 fa 78 a0 b3 d3 22 |....0../"..x..."| +00000040 ab cb d2 54 52 e6 b2 74 11 bd 3c 69 9a 71 e8 69 |...TR..t..>> Flow 4 (server to client) -00000000 14 03 01 00 01 01 16 03 01 00 30 0b c7 b6 d7 69 |..........0....i| -00000010 7a f5 d7 06 f7 e3 78 7b 35 44 c0 88 4d c2 c7 6f |z.....x{5D..M..o| -00000020 93 0c 61 32 10 47 08 0d e3 44 4f 1a 71 80 e3 96 |..a2.G...DO.q...| -00000030 15 b4 f0 29 b5 d3 7a 78 94 9e a2 |...)..zx...| +00000000 14 03 01 00 01 01 16 03 01 00 30 d1 2e 43 5c f7 |..........0..C\.| +00000010 fc 5f 96 b7 e6 84 60 08 aa b3 22 d1 d9 e2 f3 4d |._....`..."....M| +00000020 c8 44 62 9b fa 0e 18 7c 84 fe 1e 75 09 4a f4 94 |.Db....|...u.J..| +00000030 67 03 91 79 90 26 70 2d 0e 97 6a |g..y.&p-..j| >>> Flow 5 (client to server) -00000000 17 03 01 00 20 aa 76 ee c2 22 9f 8a 31 45 7e 10 |.... .v.."..1E~.| -00000010 97 00 68 2f 54 fa d9 a9 ad 6a 22 0b 85 c9 f7 f6 |..h/T....j".....| -00000020 18 02 59 10 51 17 03 01 00 20 23 9e 9f 87 02 fd |..Y.Q.... #.....| -00000030 6f d9 22 8d d3 db 4a 42 ac 9b 9a 69 7e 54 20 ab |o."...JB...i~T .| -00000040 72 29 4f 06 c6 d2 54 a9 9f 46 15 03 01 00 20 06 |r)O...T..F.... .| -00000050 51 cd cd 83 a9 ce c5 18 4f 5c 0f a6 68 5b c2 07 |Q.......O\..h[..| -00000060 31 59 c1 2a bd 4e 21 be 63 5f 29 49 a7 30 4e |1Y.*.N!.c_)I.0N| +00000000 17 03 01 00 20 c9 ce 68 cc e9 a7 f7 1f 3c 19 76 |.... ..h.....<.v| +00000010 4e a6 2d 64 86 4d 35 9b 5e 5b 8b c7 a1 15 d9 d4 |N.-d.M5.^[......| +00000020 5e 59 67 df 4d 17 03 01 00 20 26 09 76 e2 16 41 |^Yg.M.... &.v..A| +00000030 a3 7f 3e 8e cc 75 ab a0 cf e1 42 8d 3c 51 d4 bb |..>..u....B.>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 01 00 5d 02 00 00 59 03 01 6f 7c ae 3c cc |....]...Y..o|.<.| -00000010 76 04 54 ef 3c b8 48 b2 c3 fb 68 9d a3 91 e1 43 |v.T.<.H...h....C| -00000020 a1 d5 a0 fa 87 1c ed 6b 9c 14 da 20 c6 25 eb 72 |.......k... .%.r| -00000030 1c 0f c4 96 6a 75 ed 73 f9 20 75 8a 58 ca 5d 72 |....ju.s. u.X.]r| -00000040 3d 97 a2 3e e5 36 c5 04 f2 01 c7 1f c0 13 00 00 |=..>.6..........| +00000000 16 03 01 00 5d 02 00 00 59 03 01 97 c9 b8 e6 c1 |....]...Y.......| +00000010 0e b3 68 29 30 ed ff df a6 f3 cd b7 e0 80 a9 76 |..h)0..........v| +00000020 84 1b 45 bb 42 29 e0 c8 7f 52 4b 20 95 97 03 66 |..E.B)...RK ...f| +00000030 6b 45 44 7c 5d 4b 9e 47 fc 72 53 5d 3c 8a 28 6e |kED|]K.G.rS]<.(n| +00000040 bc 40 6d c3 96 67 f9 f2 72 ec 6d 0d c0 13 00 00 |.@m..g..r.m.....| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 01 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -63,36 +62,36 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 01 00 aa 0c 00 00 a6 03 00 1d 20 71 f2 c9 |............ q..| -000002d0 aa 88 45 b7 8a 34 c8 0b f4 09 5d fb c2 a2 27 ad |..E..4....]...'.| -000002e0 48 86 ba 5f c7 a6 55 10 a4 ef 9c 45 4e 00 80 b8 |H.._..U....EN...| -000002f0 82 3a a3 50 23 f2 a5 b2 69 fd 5b 36 b0 7a 16 6d |.:.P#...i.[6.z.m| -00000300 b7 7a df 77 bd 11 48 27 6c f5 7c 41 9c 66 50 13 |.z.w..H'l.|A.fP.| -00000310 1e 57 c5 28 79 2f 55 41 63 18 12 b6 d1 d9 6a 7b |.W.(y/UAc.....j{| -00000320 77 fe 95 44 16 f3 e5 6f f3 6c 39 15 da f5 bd 13 |w..D...o.l9.....| -00000330 35 fc dc ce 4e 7c 89 ae 46 d0 d5 5a b2 d2 d8 28 |5...N|..F..Z...(| -00000340 b2 e0 d8 6b 09 ed 4a 17 78 27 8d c4 14 26 86 6d |...k..J.x'...&.m| -00000350 2d 15 9e ec a9 09 11 71 1f b8 5b a8 24 33 55 09 |-......q..[.$3U.| -00000360 b1 b6 4d 55 b4 06 63 c5 89 a6 9d e1 19 41 b2 16 |..MU..c......A..| +000002c0 16 03 01 00 aa 0c 00 00 a6 03 00 1d 20 15 0b 17 |............ ...| +000002d0 fd fb 69 3e 44 71 3c 68 b2 6a 99 9e 8c 57 ba e8 |..i>Dq.$.`....9...Z| +00000300 12 2c c9 3e a7 db 25 ab 32 32 e4 79 9e 0a 9f 98 |.,.>..%.22.y....| +00000310 99 cd be b3 28 34 40 e1 78 3e 3d 20 35 74 79 7f |....(4@.x>= 5ty.| +00000320 f6 c5 5d 4c 54 30 1d 64 31 49 78 bd a2 cb 62 5a |..]LT0.d1Ix...bZ| +00000330 89 1a bf 65 bf 7f 1c ff 7d 61 6c 7d d2 76 8c 9e |...e....}al}.v..| +00000340 e4 80 56 7d 96 79 48 36 ca c0 99 db 9b ea 3a e7 |..V}.yH6......:.| +00000350 a7 fe cb ed d8 3b 34 8c be d5 ee be 59 d5 e2 5f |.....;4.....Y.._| +00000360 59 17 f3 57 29 eb c8 0e ed 1a 06 79 c0 3c 16 16 |Y..W)......y.<..| 00000370 03 01 00 04 0e 00 00 00 |........| >>> Flow 3 (client to server) 00000000 16 03 01 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 01 00 01 01 |....._X.;t......| -00000030 16 03 01 00 30 9e df 6e 5c c6 25 f6 20 e1 0d 34 |....0..n\.%. ..4| -00000040 c8 a7 38 07 20 b7 fc e2 4d da 40 7f 29 38 7b 42 |..8. ...M.@.)8{B| -00000050 af 9b 6f 14 a7 68 15 2e a0 53 67 73 19 ef 08 c3 |..o..h...Sgs....| -00000060 d0 c5 af cf b6 |.....| +00000030 16 03 01 00 30 c6 d7 ad 2c 52 90 50 3c 50 ec 66 |....0...,R.P>> Flow 4 (server to client) -00000000 14 03 01 00 01 01 16 03 01 00 30 5c e5 b5 c2 ef |..........0\....| -00000010 6e 64 45 f9 c8 0f 9f 6a 41 b8 47 ad f5 25 af e5 |ndE....jA.G..%..| -00000020 4c 78 86 dc b9 25 c3 0c 69 f7 41 ec 94 a8 06 4c |Lx...%..i.A....L| -00000030 b5 37 f8 17 b8 34 37 c2 7c ff d3 |.7...47.|..| +00000000 14 03 01 00 01 01 16 03 01 00 30 8c a1 03 f1 fb |..........0.....| +00000010 fe f8 1b 43 7b fb 10 59 c3 ed b3 34 b9 74 e1 89 |...C{..Y...4.t..| +00000020 7f 5c 9b 81 b1 4f 13 bf 67 c5 87 92 31 96 7f e7 |.\...O..g...1...| +00000030 35 7b b0 da 2c 79 2e be 43 f4 cf |5{..,y..C..| >>> Flow 5 (client to server) -00000000 17 03 01 00 20 98 c1 0e 51 02 22 68 39 62 1d 2f |.... ...Q."h9b./| -00000010 79 46 0d 97 2c c1 1f 9b aa cd 21 d8 7f c9 d6 bf |yF..,.....!.....| -00000020 f3 ef 94 ad 18 17 03 01 00 20 59 0c 3e 4e c7 ac |......... Y.>N..| -00000030 d2 2e 01 b9 39 69 09 ac 76 ce d8 6e e9 ea 6f 09 |....9i..v..n..o.| -00000040 23 f4 75 4f 20 c0 a9 a8 8f 21 15 03 01 00 20 e5 |#.uO ....!.... .| -00000050 e1 6c 39 c4 51 0a 13 b1 ec ef 75 ce e0 b8 d5 08 |.l9.Q.....u.....| -00000060 22 22 b1 d0 61 78 c8 7d 3c 9c f2 bf 08 12 89 |""..ax.}<......| +00000000 17 03 01 00 20 61 e8 5a b2 15 88 f2 f9 e2 09 61 |.... a.Z.......a| +00000010 53 a5 7f 79 4b e8 c7 8d a9 5d 29 bf b9 0a 1d f7 |S..yK....]).....| +00000020 90 9f 3b 89 39 17 03 01 00 20 86 93 3b 08 7f 77 |..;.9.... ..;..w| +00000030 55 e5 51 06 ca 0e 80 96 9d 40 73 55 45 18 28 c7 |U.Q......@sUE.(.| +00000040 54 6a d8 15 d7 67 1e 4b 52 1e 15 03 01 00 20 56 |Tj...g.KR..... V| +00000050 d8 23 be 5a 8a a8 a4 8f 13 2f f0 34 24 90 96 87 |.#.Z...../.4$...| +00000060 59 48 3f 76 77 47 d5 eb 4d cb 80 00 bc 11 cf |YH?vwG..M......| diff --git a/src/crypto/tls/testdata/Client-TLSv10-RSA-RC4 b/src/crypto/tls/testdata/Client-TLSv10-RSA-RC4 index cf9ec918eb..c217b1112a 100644 --- a/src/crypto/tls/testdata/Client-TLSv10-RSA-RC4 +++ b/src/crypto/tls/testdata/Client-TLSv10-RSA-RC4 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 01 00 55 02 00 00 51 03 01 2a bd da 4f 4d |....U...Q..*..OM| -00000010 29 da 36 8a ab 13 02 82 da 2e 53 56 77 18 69 8a |).6.......SVw.i.| -00000020 52 ab b2 36 83 38 80 ca 5b 10 38 20 66 2c a6 cf |R..6.8..[.8 f,..| -00000030 90 d0 b5 23 0a 4f ac d8 04 09 b3 3a 87 56 f5 8e |...#.O.....:.V..| -00000040 68 11 9c 41 2c 3e 14 ea b8 ad e3 c4 00 05 00 00 |h..A,>..........| +00000000 16 03 01 00 55 02 00 00 51 03 01 6a dd d7 0d bb |....U...Q..j....| +00000010 bd b4 9c de 87 94 32 27 fa 4b 66 e0 8b 95 f2 11 |......2'.Kf.....| +00000020 a0 a5 30 15 34 6f 76 6b f7 23 ec 20 ef 7d 52 7d |..0.4ovk.#. .}R}| +00000030 2c 3b 30 1b f2 16 e7 8f b6 62 64 79 51 5b 31 36 |,;0......bdyQ[16| +00000040 b7 59 b1 f9 d5 26 d6 21 94 ff 7f bd 00 05 00 00 |.Y...&.!........| 00000050 09 ff 01 00 01 00 00 17 00 00 16 03 01 02 59 0b |..............Y.| 00000060 00 02 55 00 02 52 00 02 4f 30 82 02 4b 30 82 01 |..U..R..O0..K0..| 00000070 b4 a0 03 02 01 02 02 09 00 e8 f0 9d 3f e2 5b ea |............?.[.| @@ -74,15 +73,15 @@ 00000060 c5 70 0f 08 83 48 e9 48 ef 6e 50 8b 05 7e e5 84 |.p...H.H.nP..~..| 00000070 25 fa 55 c7 ae 31 02 27 00 ef 3f 98 86 20 12 89 |%.U..1.'..?.. ..| 00000080 91 59 28 b4 f7 d7 af d2 69 61 35 14 03 01 00 01 |.Y(.....ia5.....| -00000090 01 16 03 01 00 24 e7 0e d1 a9 78 47 47 d3 9e c7 |.....$....xGG...| -000000a0 76 6d f7 e7 5e b6 df ff e0 e8 2f a6 9d b4 70 eb |vm..^...../...p.| -000000b0 06 00 c9 0e 42 f6 3f 2f 23 83 |....B.?/#.| +00000090 01 16 03 01 00 24 0e 49 42 d7 a8 ca 08 09 a6 63 |.....$.IB......c| +000000a0 0f b1 4b 06 30 37 5e cb 3a c8 d6 ce f9 9c bf 2f |..K.07^.:....../| +000000b0 4a c1 c7 fb 2e 02 a6 b0 de ed |J.........| >>> Flow 4 (server to client) -00000000 14 03 01 00 01 01 16 03 01 00 24 3f 6d ab 1f 62 |..........$?m..b| -00000010 0c 70 c8 df ea 23 f2 36 cf a3 01 89 f2 c4 d6 56 |.p...#.6.......V| -00000020 59 ac 59 13 24 40 31 19 2b 66 ad d3 5d b7 a4 |Y.Y.$@1.+f..]..| +00000000 14 03 01 00 01 01 16 03 01 00 24 ea 96 7b ce ae |..........$..{..| +00000010 69 a8 0d 6d 0c af a7 4f 5f 27 8d 2a 99 38 18 5a |i..m...O_'.*.8.Z| +00000020 f4 4f 67 56 0a 6a f5 fc f5 ee a0 44 01 b0 d0 |.OgV.j.....D...| >>> Flow 5 (client to server) -00000000 17 03 01 00 1a a0 8c 45 7f 0d 75 48 6f 15 7b af |.......E..uHo.{.| -00000010 6c e5 d2 10 c6 f2 ba 1e 09 50 83 40 f2 96 7c 15 |l........P.@..|.| -00000020 03 01 00 16 53 b3 bd 98 38 ed 20 35 0a 5a 03 f3 |....S...8. 5.Z..| -00000030 49 5c 69 85 4d ae 7e f9 fc 9d |I\i.M.~...| +00000000 17 03 01 00 1a d3 71 0b 8e 0d d4 e0 06 04 e2 30 |......q........0| +00000010 59 2c fe 84 81 45 1c e4 59 90 b1 b1 11 85 cb 15 |Y,...E..Y.......| +00000020 03 01 00 16 ad 5d 98 96 4e 9d 83 af b0 50 64 77 |.....]..N....Pdw| +00000030 62 a1 2b 1a 63 59 16 9e 60 da |b.+.cY..`.| diff --git a/src/crypto/tls/testdata/Client-TLSv11-ECDHE-ECDSA-AES b/src/crypto/tls/testdata/Client-TLSv11-ECDHE-ECDSA-AES index 3a5fa10a13..dbaefe8eb3 100644 --- a/src/crypto/tls/testdata/Client-TLSv11-ECDHE-ECDSA-AES +++ b/src/crypto/tls/testdata/Client-TLSv11-ECDHE-ECDSA-AES @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 02 00 5d 02 00 00 59 03 02 2b 28 48 86 02 |....]...Y..+(H..| -00000010 ae 35 61 75 02 0b ea 8c a1 3b ea c3 6c 26 e6 8d |.5au.....;..l&..| -00000020 a0 49 0c 96 f2 a4 75 b6 5d f5 29 20 ff 34 87 5d |.I....u.].) .4.]| -00000030 f9 ca 98 f2 49 10 3b 98 ff 30 5f a4 28 0d 9b d1 |....I.;..0_.(...| -00000040 60 02 7b fe a0 b8 7e 40 4e fb 45 54 c0 09 00 00 |`.{...~@N.ET....| +00000000 16 03 02 00 5d 02 00 00 59 03 02 14 c4 6e 18 e9 |....]...Y....n..| +00000010 5b 74 0d 7f 05 01 75 e3 a3 af 90 f0 ea e3 a8 f0 |[t....u.........| +00000020 6e b5 7d 29 97 4d f3 7e e9 06 20 20 ba 37 13 9f |n.}).M.~.. .7..| +00000030 4e dd 10 6d 52 96 14 d0 93 3b 99 5b c2 cd f3 9c |N..mR....;.[....| +00000040 48 c1 12 78 c2 e5 e7 9d a1 d6 b4 da c0 09 00 00 |H..x............| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 02 02 0e 0b 00 02 0a 00 02 07 00 02 |................| 00000070 04 30 82 02 00 30 82 01 62 02 09 00 b8 bf 2d 47 |.0...0..b.....-G| @@ -58,39 +57,39 @@ 00000240 8c 25 c1 33 13 83 0d 94 06 bb d4 37 7a f6 ec 7a |.%.3.......7z..z| 00000250 c9 86 2e dd d7 11 69 7f 85 7c 56 de fb 31 78 2b |......i..|V..1x+| 00000260 e4 c7 78 0d ae cb be 9e 4e 36 24 31 7b 6a 0f 39 |..x.....N6$1{j.9| -00000270 95 12 07 8f 2a 16 03 02 00 b4 0c 00 00 b0 03 00 |....*...........| -00000280 1d 20 33 24 10 dd 39 bf dd 42 80 f9 51 75 5d d5 |. 3$..9..B..Qu].| -00000290 e3 97 b0 70 c8 9a e5 3c 90 5a f6 84 e7 17 2e d4 |...p...<.Z......| -000002a0 71 6e 00 8a 30 81 87 02 42 01 f3 ed 17 7f 96 9d |qn..0...B.......| -000002b0 52 49 6b fd fb 94 28 67 8d 2f 75 7c 59 31 d1 b7 |RIk...(g./u|Y1..| -000002c0 61 ed 94 c6 1a df 49 e6 9f 19 f1 54 0f 28 2f 3b |a.....I....T.(/;| -000002d0 18 fc 73 61 6d 7c 7e dd 61 80 d7 98 2e 20 6a 54 |..sam|~.a.... jT| -000002e0 37 23 2b d7 11 e0 fa a4 98 49 78 02 41 39 49 af |7#+......Ix.A9I.| -000002f0 f9 28 5c 2b 50 0d 6e be 13 17 df 9a fb d0 71 9c |.(\+P.n.......q.| -00000300 6c 43 eb 09 90 ce 09 bd f3 54 9f 73 da c7 ef f3 |lC.......T.s....| -00000310 df 36 0e 75 d5 cc 4d 42 a5 d8 4c f9 e9 32 b9 90 |.6.u..MB..L..2..| -00000320 9f fd 6c 70 bc d6 cf 73 b6 0b f0 db 55 d6 16 03 |..lp...s....U...| -00000330 02 00 04 0e 00 00 00 |.......| +00000270 95 12 07 8f 2a 16 03 02 00 b5 0c 00 00 b1 03 00 |....*...........| +00000280 1d 20 d1 90 13 d3 6d b1 e1 ec a3 e1 8b a1 d6 a6 |. ....m.........| +00000290 40 ac 8e cf 6e 42 06 7d a8 80 9a 9e a8 06 00 84 |@...nB.}........| +000002a0 69 1f 00 8b 30 81 88 02 42 01 b6 ba 66 1c de c4 |i...0...B...f...| +000002b0 8b a1 4a a7 0e f5 cb aa 5c 76 65 59 ba bb e2 7f |..J.....\veY....| +000002c0 a5 ee 91 26 77 40 e9 5d 25 73 5a d6 f9 b4 aa ac |...&w@.]%sZ.....| +000002d0 c8 bd 2b a4 95 b3 ef e0 c7 bb f1 d0 5e da 76 34 |..+.........^.v4| +000002e0 a4 34 5b 6c d6 c8 3b 13 b1 d0 12 02 42 01 e1 18 |.4[l..;.....B...| +000002f0 d5 90 79 c5 06 00 6b 7a 86 19 e0 2f 67 49 db 9e |..y...kz.../gI..| +00000300 4a 74 07 30 51 15 7b a1 01 89 9c 94 d8 17 18 a6 |Jt.0Q.{.........| +00000310 31 aa fb 4b 57 24 52 00 41 1d cc 36 89 6e b4 ed |1..KW$R.A..6.n..| +00000320 fc 23 33 63 dd 94 3b 40 6f f1 af d7 78 27 0c 16 |.#3c..;@o...x'..| +00000330 03 02 00 04 0e 00 00 00 |........| >>> Flow 3 (client to server) 00000000 16 03 02 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 02 00 01 01 |....._X.;t......| 00000030 16 03 02 00 40 00 00 00 00 00 00 00 00 00 00 00 |....@...........| -00000040 00 00 00 00 00 2b 2a 78 3f 77 6c 2d e6 26 0f ac |.....+*x?wl-.&..| -00000050 c3 d8 c9 0f c0 3d c7 7c e4 08 da 9c af 0f 88 4c |.....=.|.......L| -00000060 2f 8e c0 96 78 a4 1f 2c 73 8c 7d 93 28 d1 ce e2 |/...x..,s.}.(...| -00000070 06 74 35 9d ba |.t5..| +00000040 00 00 00 00 00 bd f5 0b 25 31 b7 e6 3f 74 dc 39 |........%1..?t.9| +00000050 c8 a4 f5 3f 78 f5 6f 66 1b 59 53 51 40 d2 e1 14 |...?x.of.YSQ@...| +00000060 56 96 ea 1f 08 30 3f 66 ca e4 e4 a0 b5 9f 60 9b |V....0?f......`.| +00000070 f8 b0 c7 b8 79 |....y| >>> Flow 4 (server to client) -00000000 14 03 02 00 01 01 16 03 02 00 40 a7 8b 1b c5 b8 |..........@.....| -00000010 b6 44 7d 9b 34 e7 c7 f1 d2 c6 19 e8 13 d4 0a b1 |.D}.4...........| -00000020 07 ae 88 d1 7b 34 ca 0e 84 ab b3 e5 d6 13 22 22 |....{4........""| -00000030 2b 1c e6 c9 2e b6 15 46 55 7d 2c 34 69 2b 06 62 |+......FU},4i+.b| -00000040 d9 ef ce da d7 c8 98 3a e5 23 87 |.......:.#.| +00000000 14 03 02 00 01 01 16 03 02 00 40 68 2d 60 78 1b |..........@h-`x.| +00000010 a7 b8 28 3a 2b f5 cd b8 ef 4e 8e ab 3c d5 67 7b |..(:+....N..<.g{| +00000020 1f 29 9e 59 de ca 43 3a 4c 0c f5 70 43 cb 0b 40 |.).Y..C:L..pC..@| +00000030 69 a3 7c f7 1a 3b 48 2f b8 a2 7c b4 4a 03 36 2a |i.|..;H/..|.J.6*| +00000040 24 c9 78 9a 06 6e 18 2e 4a c0 54 |$.x..n..J.T| >>> Flow 5 (client to server) 00000000 17 03 02 00 30 00 00 00 00 00 00 00 00 00 00 00 |....0...........| -00000010 00 00 00 00 00 8f de 5e 92 28 7d 7d 8a 7e 48 40 |.......^.(}}.~H@| -00000020 9b a6 8c 13 d3 fe 71 c9 d7 f9 a8 3a 06 64 da f2 |......q....:.d..| -00000030 dc cf 69 f2 4b 15 03 02 00 30 00 00 00 00 00 00 |..i.K....0......| -00000040 00 00 00 00 00 00 00 00 00 00 78 0f 3e c5 3c e9 |..........x.>.<.| -00000050 39 5d 5c 7a 2c 16 f0 7f b7 ca 3b 85 f3 ab f4 3d |9]\z,.....;....=| -00000060 ce df fd 6d 4d ad f4 89 38 ba |...mM...8.| +00000010 00 00 00 00 00 f6 ff 38 da 12 09 78 fe de fb 0f |.......8...x....| +00000020 ea d3 5a d8 57 65 73 78 41 2d 0b 1b a4 8d f6 e7 |..Z.WesxA-......| +00000030 ed 58 97 c9 ea 15 03 02 00 30 00 00 00 00 00 00 |.X.......0......| +00000040 00 00 00 00 00 00 00 00 00 00 7d 4a 10 43 93 8a |..........}J.C..| +00000050 6d d2 50 34 92 22 24 f6 7a 9a c4 1f 57 e8 6d f8 |m.P4."$.z...W.m.| +00000060 74 c4 cb 8b e0 4d 99 dd ce 0a |t....M....| diff --git a/src/crypto/tls/testdata/Client-TLSv11-ECDHE-RSA-AES b/src/crypto/tls/testdata/Client-TLSv11-ECDHE-RSA-AES index f15445e584..d0093da76c 100644 --- a/src/crypto/tls/testdata/Client-TLSv11-ECDHE-RSA-AES +++ b/src/crypto/tls/testdata/Client-TLSv11-ECDHE-RSA-AES @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 02 00 5d 02 00 00 59 03 02 87 2b b1 e5 7b |....]...Y...+..{| -00000010 0e 0d 78 af b9 41 3c 0b 5a 38 2f 40 6d 13 69 da |..x..A<.Z8/@m.i.| -00000020 3a d6 e5 62 ef 72 70 66 9d f0 f4 20 a4 e2 a1 a7 |:..b.rpf... ....| -00000030 51 f7 7e 23 38 df 2e dd 0b 2f 87 a5 86 93 aa 9d |Q.~#8..../......| -00000040 0e aa 02 2b 42 31 cb 36 f3 6b 8e db c0 13 00 00 |...+B1.6.k......| +00000000 16 03 02 00 5d 02 00 00 59 03 02 3d 12 00 a1 c0 |....]...Y..=....| +00000010 6f b2 13 96 d8 c3 b6 4e 81 60 03 60 fa 9a 4b 54 |o......N.`.`..KT| +00000020 a9 1d e3 e9 10 e6 8d 84 e3 af 76 20 7c 6d 5c 41 |..........v |m\A| +00000030 f6 19 49 92 b0 d2 1d 74 22 5d 6a 3f c6 5e 77 c0 |..I....t"]j?.^w.| +00000040 c4 bb 31 2d 62 8d 7b 5c 66 6d c4 94 c0 13 00 00 |..1-b.{\fm......| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 02 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -63,38 +62,38 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 02 00 aa 0c 00 00 a6 03 00 1d 20 94 fa 9b |............ ...| -000002d0 b7 34 fd 4c f3 a7 12 a3 0f 6a a2 d2 c3 35 71 3a |.4.L.....j...5q:| -000002e0 fa 5c 7e aa ab 17 c9 bf ae 29 a0 89 4e 00 80 26 |.\~......)..N..&| -000002f0 6a cd b9 50 a0 61 19 60 c6 fd 58 69 11 7a 11 ac |j..P.a.`..Xi.z..| -00000300 16 1d 20 4a 28 4d 7a 9c 7a cb b7 a0 ac 90 3d 25 |.. J(Mz.z.....=%| -00000310 dc a7 3d d0 5c d7 34 c4 a6 4c 47 73 8e 5a 1b 06 |..=.\.4..LGs.Z..| -00000320 a5 2d e1 5e 04 d4 c6 31 2e 24 79 6c 0b df 67 3a |.-.^...1.$yl..g:| -00000330 f1 7c 5f c0 37 4a ec 1e d2 32 7c 4f fa 9a d4 51 |.|_.7J...2|O...Q| -00000340 be 2a 76 f2 74 78 b6 cf 22 d6 3d 16 1b ca 6b 9b |.*v.tx..".=...k.| -00000350 d9 9a 3f 65 e4 83 63 91 15 f1 c4 69 45 a3 d9 ab |..?e..c....iE...| -00000360 f5 d3 a9 0e 15 00 20 bb 43 20 a7 90 db c6 1d 16 |...... .C ......| +000002c0 16 03 02 00 aa 0c 00 00 a6 03 00 1d 20 73 f2 57 |............ s.W| +000002d0 12 5a 50 bb 9d 2d 14 f0 ca ee c1 41 bf da 9e 8e |.ZP..-.....A....| +000002e0 d5 a9 25 c3 84 07 e7 5c 35 87 8b 70 3d 00 80 d3 |..%....\5..p=...| +000002f0 86 1b 82 48 5c 14 9b cf e4 a0 2b 24 bc 8c ad e9 |...H\.....+$....| +00000300 7c 1e 4f da c2 22 10 91 76 47 bc 9f 64 ca 1c 69 ||.O.."..vG..d..i| +00000310 77 c0 c7 2c 50 ea 1a 07 d0 8c ec da aa ed 82 9d |w..,P...........| +00000320 a5 6c d6 27 05 f8 24 19 f9 d4 b1 c6 e3 0f 49 6f |.l.'..$.......Io| +00000330 e4 47 25 9a 36 f1 d3 ed b1 b5 a0 cc 66 50 75 64 |.G%.6.......fPud| +00000340 97 ee 3c 65 84 1b 62 f8 1a 8f 02 5a d4 2c 49 b3 |..>> Flow 3 (client to server) 00000000 16 03 02 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 02 00 01 01 |....._X.;t......| 00000030 16 03 02 00 40 00 00 00 00 00 00 00 00 00 00 00 |....@...........| -00000040 00 00 00 00 00 5e 93 f4 06 23 2b f4 7e d1 4f 6c |.....^...#+.~.Ol| -00000050 3e ad 67 fe 6c 33 42 e7 c0 ce 2b b9 38 0e ec 6e |>.g.l3B...+.8..n| -00000060 dc 78 d0 51 d9 57 ef 67 69 4e cd 51 52 9b 09 df |.x.Q.W.giN.QR...| -00000070 7e 8d ee cc f1 |~....| +00000040 00 00 00 00 00 93 60 ad fa 30 93 3e 31 6d 2c 0c |......`..0.>1m,.| +00000050 21 3d 6a 53 b1 51 f9 a9 1f 74 ee 42 7a 90 8a 08 |!=jS.Q...t.Bz...| +00000060 9e a0 7f 42 19 c4 28 06 77 bb 32 c1 a0 0d ec 71 |...B..(.w.2....q| +00000070 4f 20 89 c1 7d |O ..}| >>> Flow 4 (server to client) -00000000 14 03 02 00 01 01 16 03 02 00 40 22 ca 73 9e 54 |..........@".s.T| -00000010 72 60 64 fd f2 29 fa a1 47 04 ca e7 27 db 82 a8 |r`d..)..G...'...| -00000020 66 ed 3c 2b 8f 67 8e 09 1a 2d 24 3b 9e dc 8e 1e |f.<+.g...-$;....| -00000030 64 ba db a7 64 11 5a 6f e6 29 cc ed 73 6c 13 b8 |d...d.Zo.)..sl..| -00000040 40 44 5f d8 72 df 59 b8 a4 4f 7e |@D_.r.Y..O~| +00000000 14 03 02 00 01 01 16 03 02 00 40 fb 97 d9 4a c6 |..........@...J.| +00000010 10 21 6f 7b 77 ba e0 41 b2 50 d3 8c df 54 b1 9f |.!o{w..A.P...T..| +00000020 98 55 e7 0e fb bd 25 67 fb fb 5a 5c 86 b8 f0 17 |.U....%g..Z\....| +00000030 2b 56 b3 81 21 45 58 98 38 63 24 0a ec aa 17 55 |+V..!EX.8c$....U| +00000040 8c 46 67 a6 44 57 00 8d 49 83 28 |.Fg.DW..I.(| >>> Flow 5 (client to server) 00000000 17 03 02 00 30 00 00 00 00 00 00 00 00 00 00 00 |....0...........| -00000010 00 00 00 00 00 51 2f d5 ee 59 bc cc c2 73 15 e1 |.....Q/..Y...s..| -00000020 15 cb 89 24 d8 7a 2c 2e d9 9c 9f fc 2b 90 f6 28 |...$.z,.....+..(| -00000030 fd e5 db 9b 0f 15 03 02 00 30 00 00 00 00 00 00 |.........0......| -00000040 00 00 00 00 00 00 00 00 00 00 a1 7a 29 17 c3 33 |...........z)..3| -00000050 87 e8 3a 81 97 ae df 40 97 fc 0b f4 6a 00 84 37 |..:....@....j..7| -00000060 8c 68 d1 8e db a8 d3 04 93 60 |.h.......`| +00000010 00 00 00 00 00 e7 87 56 3d 84 0b 17 94 41 94 67 |.......V=....A.g| +00000020 48 ff 0f e4 2d a9 1c 7a 68 fc 42 36 17 27 b0 66 |H...-..zh.B6.'.f| +00000030 af 97 25 90 a2 15 03 02 00 30 00 00 00 00 00 00 |..%......0......| +00000040 00 00 00 00 00 00 00 00 00 00 55 a4 8a bc 52 98 |..........U...R.| +00000050 07 3a dd 7a dc 4f 2c 8d f2 1b f0 76 09 ca 88 36 |.:.z.O,....v...6| +00000060 d4 fa f9 f4 b7 2e ce 6e 26 82 |.......n&.| diff --git a/src/crypto/tls/testdata/Client-TLSv11-RSA-RC4 b/src/crypto/tls/testdata/Client-TLSv11-RSA-RC4 index bb770e61b1..64b06a8f17 100644 --- a/src/crypto/tls/testdata/Client-TLSv11-RSA-RC4 +++ b/src/crypto/tls/testdata/Client-TLSv11-RSA-RC4 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 02 00 55 02 00 00 51 03 02 fa ec 74 4b af |....U...Q....tK.| -00000010 f7 bb 7c 03 0a 35 f9 91 1e 62 c8 d7 9d b0 cc 29 |..|..5...b.....)| -00000020 0c 67 f1 a9 c6 be ff aa ee 45 2c 20 7e 02 45 29 |.g.......E, ~.E)| -00000030 e8 01 2c 76 c9 49 9c bf ca b7 0c b0 86 69 2a d0 |..,v.I.......i*.| -00000040 34 59 2c 16 b1 bd 67 1a e8 f9 97 3d 00 05 00 00 |4Y,...g....=....| +00000000 16 03 02 00 55 02 00 00 51 03 02 3d a4 ea 71 81 |....U...Q..=..q.| +00000010 c9 47 24 2b 53 22 83 07 df 5a 9e 76 ef ca d8 1b |.G$+S"...Z.v....| +00000020 1f 16 15 cd 7e e4 62 93 1e 5d a7 20 9d ac ea 5a |....~.b..]. ...Z| +00000030 9e e3 7c 14 94 9d 1b 9e 2a 7b 2d 80 55 85 2f 9e |..|.....*{-.U./.| +00000040 ed 17 20 79 66 a2 6c 88 81 cb b0 79 00 05 00 00 |.. yf.l....y....| 00000050 09 ff 01 00 01 00 00 17 00 00 16 03 02 02 59 0b |..............Y.| 00000060 00 02 55 00 02 52 00 02 4f 30 82 02 4b 30 82 01 |..U..R..O0..K0..| 00000070 b4 a0 03 02 01 02 02 09 00 e8 f0 9d 3f e2 5b ea |............?.[.| @@ -74,15 +73,15 @@ 00000060 c5 70 0f 08 83 48 e9 48 ef 6e 50 8b 05 7e e5 84 |.p...H.H.nP..~..| 00000070 25 fa 55 c7 ae 31 02 27 00 ef 3f 98 86 20 12 89 |%.U..1.'..?.. ..| 00000080 91 59 28 b4 f7 d7 af d2 69 61 35 14 03 02 00 01 |.Y(.....ia5.....| -00000090 01 16 03 02 00 24 8b f8 3f ae 9d 41 27 8e 52 ca |.....$..?..A'.R.| -000000a0 75 8c 1b 76 fa 20 4f 7f 97 62 ac a6 85 33 71 32 |u..v. O..b...3q2| -000000b0 34 8d 4b e3 d4 a1 a0 bc 9c 29 |4.K......)| +00000090 01 16 03 02 00 24 30 52 7f 8a 5c 3a 31 65 87 8c |.....$0R..\:1e..| +000000a0 9e 31 8f b1 22 15 ed af 99 6c 19 47 46 fd e1 3b |.1.."....l.GF..;| +000000b0 b3 f4 3a 5b d8 e5 a6 1a 7c 5e |..:[....|^| >>> Flow 4 (server to client) -00000000 14 03 02 00 01 01 16 03 02 00 24 1d d6 e8 70 53 |..........$...pS| -00000010 f2 9e 4f ce 5f 35 4e 8d 41 1f 78 9a 72 79 2b cc |..O._5N.A.x.ry+.| -00000020 17 cd 48 16 b0 69 8b 41 b7 5a c6 df ec f6 5d |..H..i.A.Z....]| +00000000 14 03 02 00 01 01 16 03 02 00 24 c1 5d da 6d 6e |..........$.].mn| +00000010 55 3e 70 a4 52 15 d9 ba 88 a1 b7 f0 40 71 09 fa |U>p.R.......@q..| +00000020 3f 00 6f 39 72 88 89 a1 3d cf 7a 7a 97 15 b7 |?.o9r...=.zz...| >>> Flow 5 (client to server) -00000000 17 03 02 00 1a 69 a6 2b fe 20 e2 2e e6 b2 ed 03 |.....i.+. ......| -00000010 92 ae e0 ff 84 56 12 f3 60 01 92 c0 f3 0e 8f 15 |.....V..`.......| -00000020 03 02 00 16 d1 05 c5 6f f3 3c 18 63 2b 9c 68 39 |.......o.<.c+.h9| -00000030 c4 45 90 f1 ef 3f e1 00 2f 78 |.E...?../x| +00000000 17 03 02 00 1a 56 ea a4 ed 0f 9d 98 3b 48 bc 76 |.....V......;H.v| +00000010 35 3f fb 78 92 d9 ce ef 53 b2 ef a6 13 9a 4c 15 |5?.x....S.....L.| +00000020 03 02 00 16 b5 41 d0 98 50 73 73 90 c0 fe ec 11 |.....A..Pss.....| +00000030 ec 98 d5 fb 02 c0 11 11 29 1c |........).| diff --git a/src/crypto/tls/testdata/Client-TLSv12-AES128-GCM-SHA256 b/src/crypto/tls/testdata/Client-TLSv12-AES128-GCM-SHA256 index 1db74434cc..33e01c140b 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-AES128-GCM-SHA256 +++ b/src/crypto/tls/testdata/Client-TLSv12-AES128-GCM-SHA256 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 55 02 00 00 51 03 03 00 13 58 0b 7f |....U...Q....X..| -00000010 3c 39 9d df c9 4e 95 64 d5 9f 86 b0 8b 19 35 a2 |<9...N.d......5.| -00000020 71 da 39 5b 14 a5 a4 fd 79 8b 02 20 bf a6 01 51 |q.9[....y.. ...Q| -00000030 3e 8d 7a 68 ef 24 9a a1 92 d8 72 6a 71 0e c9 fa |>.zh.$....rjq...| -00000040 f9 03 36 ca 4b 8a fd 17 95 f5 53 e7 00 9c 00 00 |..6.K.....S.....| +00000000 16 03 03 00 55 02 00 00 51 03 03 c5 da f3 88 41 |....U...Q......A| +00000010 ed 43 a7 4e 49 ad db 74 04 c6 fb c2 13 49 86 14 |.C.NI..t.....I..| +00000020 fd d0 e1 7a ab d3 df 65 62 c6 1f 20 29 1a 03 bf |...z...eb.. )...| +00000030 10 35 3c 58 36 fd 4d 7a 7d dc f1 fd be d0 c6 b5 |.5>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 28 d1 2c 6c a6 ff |..........(.,l..| -00000010 35 08 ad e8 3d cd f4 71 1c f7 62 97 44 c5 41 26 |5...=..q..b.D.A&| -00000020 a4 ff a6 eb 63 e7 45 b1 31 3e ea 0e 33 b4 1d 4a |....c.E.1>..3..J| -00000030 9b 1f 87 |...| +00000000 14 03 03 00 01 01 16 03 03 00 28 e5 b5 71 5d e0 |..........(..q].| +00000010 c8 9a 75 4c 6e 72 4e a2 5f f9 b4 9f f4 40 a0 de |..uLnrN._....@..| +00000020 73 48 9c 01 f3 0b 78 91 5f 85 29 9c 51 dc 77 bc |sH....x._.).Q.w.| +00000030 c0 32 42 |.2B| >>> Flow 5 (client to server) -00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 6f ba 97 |.............o..| -00000010 a1 bb 88 f8 58 ce b3 81 94 20 97 f0 cd 79 5f 9e |....X.... ...y_.| -00000020 3d 3f b5 15 03 03 00 1a 00 00 00 00 00 00 00 02 |=?..............| -00000030 8e 92 d4 4f a2 0e e5 69 e5 9a 7f 7d da 93 54 5c |...O...i...}..T\| -00000040 6e 4d |nM| +00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 9e 81 42 |...............B| +00000010 90 9e ab a2 29 b3 f7 a6 31 45 5f a4 2e d5 52 f7 |....)...1E_...R.| +00000020 72 8b 3b 15 03 03 00 1a 00 00 00 00 00 00 00 02 |r.;.............| +00000030 96 5a f4 de 37 1b 2c f1 8d 90 91 17 6f 81 90 7f |.Z..7.,.....o...| +00000040 e7 9d |..| diff --git a/src/crypto/tls/testdata/Client-TLSv12-AES128-SHA256 b/src/crypto/tls/testdata/Client-TLSv12-AES128-SHA256 index 57fbc75c80..b373f27aae 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-AES128-SHA256 +++ b/src/crypto/tls/testdata/Client-TLSv12-AES128-SHA256 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 55 02 00 00 51 03 03 84 b7 a9 d5 83 |....U...Q.......| -00000010 f6 80 cf 15 58 39 5a 3b 4b f1 6d 2a 86 8b 92 ed |....X9Z;K.m*....| -00000020 f8 fb e0 16 c1 2c 94 3a eb 69 c4 20 e1 b7 43 24 |.....,.:.i. ..C$| -00000030 e7 9c 69 47 60 48 b0 8b 2b 0b 52 2a 8b 8b 5b 1f |..iG`H..+.R*..[.| -00000040 67 12 f6 94 46 c5 b1 53 73 29 f9 d6 00 3c 00 00 |g...F..Ss)...<..| +00000000 16 03 03 00 55 02 00 00 51 03 03 eb c3 6e 78 2e |....U...Q....nx.| +00000010 9f 47 ec 9d 0e bc 8d 49 d2 46 11 75 5e 50 a5 07 |.G.....I.F.u^P..| +00000020 0a 99 90 34 34 2d 81 75 1b f4 ca 20 fb 28 c1 8c |...44-.u... .(..| +00000030 55 27 36 be 4e d1 c7 ee e8 b3 2a eb 7a be f1 2a |U'6.N.....*.z..*| +00000040 fc 81 df d8 5b c2 1f 1e 7b 47 0f 06 00 3c 00 00 |....[...{G...<..| 00000050 09 ff 01 00 01 00 00 17 00 00 16 03 03 02 59 0b |..............Y.| 00000060 00 02 55 00 02 52 00 02 4f 30 82 02 4b 30 82 01 |..U..R..O0..K0..| 00000070 b4 a0 03 02 01 02 02 09 00 e8 f0 9d 3f e2 5b ea |............?.[.| @@ -75,25 +74,25 @@ 00000070 25 fa 55 c7 ae 31 02 27 00 ef 3f 98 86 20 12 89 |%.U..1.'..?.. ..| 00000080 91 59 28 b4 f7 d7 af d2 69 61 35 14 03 03 00 01 |.Y(.....ia5.....| 00000090 01 16 03 03 00 50 00 00 00 00 00 00 00 00 00 00 |.....P..........| -000000a0 00 00 00 00 00 00 46 00 2f ca 25 2b 92 37 79 de |......F./.%+.7y.| -000000b0 88 56 36 da ea 43 78 d7 51 72 53 c1 8b ae 33 3a |.V6..Cx.QrS...3:| -000000c0 d2 93 57 08 a1 14 22 5b 5b 33 fe 7c 13 33 17 d6 |..W..."[[3.|.3..| -000000d0 ef 3b be e6 1c ee 09 c0 5e 86 89 9d 50 e2 e9 b3 |.;......^...P...| -000000e0 3b 09 4c 70 f8 eb |;.Lp..| +000000a0 00 00 00 00 00 00 ee 37 21 73 05 93 63 ca 4f 0e |.......7!s..c.O.| +000000b0 e2 29 7f 90 6f 3a aa 52 a0 e0 71 97 5f f9 66 cf |.)..o:.R..q._.f.| +000000c0 06 19 09 51 03 5f 2e 0c 57 26 42 15 ef 8f 4e a9 |...Q._..W&B...N.| +000000d0 c4 97 95 0a d1 ce 30 2c bf 7a 85 4b a9 d0 a9 e0 |......0,.z.K....| +000000e0 64 11 1a dc 48 1d |d...H.| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 50 3a 02 c0 c9 cd |..........P:....| -00000010 98 d0 dc ec 0a 58 cf a2 c2 f2 0b b2 5a 2c 9b 6e |.....X......Z,.n| -00000020 30 d2 98 0e 8f 9b b5 9f 1e e2 5f 0c bd 2b ce f8 |0........._..+..| -00000030 08 c9 c1 fe 98 a5 5b ca be 07 81 85 56 bc f4 a3 |......[.....V...| -00000040 05 40 48 5b 76 ac 75 14 46 1a 8a 7f e4 ff 4e 76 |.@H[v.u.F.....Nv| -00000050 8f db 76 19 a5 e3 75 e6 ca 1c 14 |..v...u....| +00000000 14 03 03 00 01 01 16 03 03 00 50 58 d1 09 93 e9 |..........PX....| +00000010 97 c1 cc c3 db 1d 65 d8 97 35 c1 b4 3f 9f a0 00 |......e..5..?...| +00000020 9f 81 2a 81 61 b5 51 9f ec 15 94 d0 86 0f a1 70 |..*.a.Q........p| +00000030 e9 90 59 dd 16 d3 e7 33 21 b7 d8 6e 4b a8 fd fb |..Y....3!..nK...| +00000040 dd 98 78 95 16 44 f8 da bd e3 e2 3f f0 e1 d9 39 |..x..D.....?...9| +00000050 c0 2e 0d c4 fe a5 ac 41 66 2d f3 |.......Af-.| >>> Flow 5 (client to server) 00000000 17 03 03 00 40 00 00 00 00 00 00 00 00 00 00 00 |....@...........| -00000010 00 00 00 00 00 02 7a 3c 00 71 20 c9 5a 3a 94 ff |......z<.q .Z:..| -00000020 ed a9 a1 c9 cd 7a ec 10 96 5d b9 78 2b ff 9a d4 |.....z...].x+...| -00000030 2d 5c a2 b5 b1 4d f8 22 b8 70 2b 7e 8d 07 13 62 |-\...M.".p+~...b| -00000040 b2 23 e8 ff a6 15 03 03 00 40 00 00 00 00 00 00 |.#.......@......| -00000050 00 00 00 00 00 00 00 00 00 00 f6 61 2f e6 18 fb |...........a/...| -00000060 dc ed 53 14 e3 a1 6e 22 2d e4 22 c9 a5 d2 cb e8 |..S...n"-.".....| -00000070 89 35 4b e5 89 b8 20 44 1b 79 cc 83 41 42 a5 4f |.5K... D.y..AB.O| -00000080 38 be f4 20 c5 e6 2b 11 ad 3a |8.. ..+..:| +00000010 00 00 00 00 00 2f d9 4b fc 22 0f 20 dd 2c 20 83 |...../.K.". ., .| +00000020 bd f0 49 5b bc 57 55 bc fb 41 13 79 a7 19 4d e3 |..I[.WU..A.y..M.| +00000030 71 66 ce b5 77 35 9c 54 86 0e fc 21 d6 9e c4 66 |qf..w5.T...!...f| +00000040 ee 95 3f 0a d5 15 03 03 00 40 00 00 00 00 00 00 |..?......@......| +00000050 00 00 00 00 00 00 00 00 00 00 54 25 cd 1a 0a d4 |..........T%....| +00000060 7b a4 ce f1 62 c8 8f 62 af 93 8e 0e e8 fd ef 55 |{...b..b.......U| +00000070 1d 47 a4 ac 1c 80 25 6f c4 a2 51 11 84 e9 63 cb |.G....%o..Q...c.| +00000080 db d8 e6 bf 2c 89 4e 1a d4 11 |....,.N...| diff --git a/src/crypto/tls/testdata/Client-TLSv12-AES256-GCM-SHA384 b/src/crypto/tls/testdata/Client-TLSv12-AES256-GCM-SHA384 index bedeedbb19..9920621be3 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-AES256-GCM-SHA384 +++ b/src/crypto/tls/testdata/Client-TLSv12-AES256-GCM-SHA384 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 55 02 00 00 51 03 03 ac 7e 0f a7 bc |....U...Q...~...| -00000010 e5 97 51 ac d1 a3 f4 e1 a4 a9 b3 52 08 ab cf cd |..Q........R....| -00000020 0a 2a 22 89 6e 7d c4 d4 4f 44 99 20 0f 86 62 46 |.*".n}..OD. ..bF| -00000030 47 98 ce fc 9f ba ba 92 bf 17 dc 94 6f b4 05 ac |G...........o...| -00000040 81 87 89 14 c5 e1 c5 30 49 45 cf 7b 00 9d 00 00 |.......0IE.{....| +00000000 16 03 03 00 55 02 00 00 51 03 03 9f 42 e3 1b 5f |....U...Q...B.._| +00000010 00 d9 00 0a a5 fa 6d 63 95 11 d2 5a ff 51 b0 f8 |......mc...Z.Q..| +00000020 bc a9 7f 18 3c 8d d7 38 d5 e8 2d 20 be 5b 08 a0 |....<..8..- .[..| +00000030 2f 7b 50 d9 06 0c bf 7c 2d cc f0 39 3a 90 e4 e7 |/{P....|-..9:...| +00000040 9c 27 9b 88 ea ff c0 51 f8 79 cd b9 00 9d 00 00 |.'.....Q.y......| 00000050 09 ff 01 00 01 00 00 17 00 00 16 03 03 02 59 0b |..............Y.| 00000060 00 02 55 00 02 52 00 02 4f 30 82 02 4b 30 82 01 |..U..R..O0..K0..| 00000070 b4 a0 03 02 01 02 02 09 00 e8 f0 9d 3f e2 5b ea |............?.[.| @@ -74,17 +73,17 @@ 00000060 c5 70 0f 08 83 48 e9 48 ef 6e 50 8b 05 7e e5 84 |.p...H.H.nP..~..| 00000070 25 fa 55 c7 ae 31 02 27 00 ef 3f 98 86 20 12 89 |%.U..1.'..?.. ..| 00000080 91 59 28 b4 f7 d7 af d2 69 61 35 14 03 03 00 01 |.Y(.....ia5.....| -00000090 01 16 03 03 00 28 00 00 00 00 00 00 00 00 2a f2 |.....(........*.| -000000a0 d8 f8 66 9b 53 99 66 59 83 4b 37 25 44 61 d8 c3 |..f.S.fY.K7%Da..| -000000b0 ef 7f 3e be 62 9c a0 3a 61 43 0c 87 04 4c |..>.b..:aC...L| +00000090 01 16 03 03 00 28 00 00 00 00 00 00 00 00 0e dd |.....(..........| +000000a0 10 e6 7a dd b2 02 5c 0d 0c 73 b4 f1 a1 89 85 95 |..z...\..s......| +000000b0 91 a9 e4 7a 47 49 9a 52 96 77 93 0b cc 74 |...zGI.R.w...t| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 28 7a 45 6a 5b 2a |..........(zEj[*| -00000010 06 e8 c8 f5 57 07 ee 91 dd f7 33 60 be f1 65 fb |....W.....3`..e.| -00000020 8f 3d 48 3c b2 a0 7c 30 30 b1 98 01 de 35 d2 5f |.=H<..|00....5._| -00000030 cb 0c de |...| +00000000 14 03 03 00 01 01 16 03 03 00 28 72 c3 d3 ad 10 |..........(r....| +00000010 71 48 c4 32 9b 24 ac c0 a4 88 db 35 e9 be fe 34 |qH.2.$.....5...4| +00000020 ee 9a bb 5a a5 90 b6 ec 31 9a bc 4c 56 e2 e6 d5 |...Z....1..LV...| +00000030 f9 2b 93 |.+.| >>> Flow 5 (client to server) -00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 13 f4 b8 |................| -00000010 b3 95 de d6 9b b3 8e 27 6f 36 dc a4 0d ab 7d 63 |.......'o6....}c| -00000020 35 73 a4 15 03 03 00 1a 00 00 00 00 00 00 00 02 |5s..............| -00000030 9d 64 e3 e6 8f a7 22 ab 82 2f 60 0a 2a 5f fc 39 |.d...."../`.*_.9| -00000040 90 93 |..| +00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 ed af c7 |................| +00000010 74 44 64 5d e3 1b 0c d4 bd a1 7e 7e 87 10 8d bc |tDd]......~~....| +00000020 26 db e8 15 03 03 00 1a 00 00 00 00 00 00 00 02 |&...............| +00000030 42 6b 3e 59 c5 e4 e5 5b 53 0f fe d9 3f 0c 5c f0 |Bk>Y...[S...?.\.| +00000040 67 d5 |g.| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ALPN b/src/crypto/tls/testdata/Client-TLSv12-ALPN index 0cba50bd7a..6686f6e9c0 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ALPN +++ b/src/crypto/tls/testdata/Client-TLSv12-ALPN @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 30 01 00 01 2c 03 03 00 00 00 00 00 |....0...,.......| +00000000 16 03 01 01 2c 01 00 01 28 03 03 00 00 00 00 00 |....,...(.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,24 +7,24 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 b1 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 ad 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 10 00 10 00 0e |................| -000000f0 06 70 72 6f 74 6f 32 06 70 72 6f 74 6f 31 00 2b |.proto2.proto1.+| -00000100 00 09 08 03 04 03 03 03 02 03 01 00 33 00 26 00 |............3.&.| -00000110 24 00 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da |$... /.}.G.bC.(.| -00000120 ac 5f bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 |._.).0..........| -00000130 5f 58 cb 3b 74 |_X.;t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 10 00 10 00 0e 06 70 72 6f |.............pro| +000000f0 74 6f 32 06 70 72 6f 74 6f 31 00 2b 00 09 08 03 |to2.proto1.+....| +00000100 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000110 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000120 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000130 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 6a 02 00 00 66 03 03 d7 20 92 e0 ec |....j...f... ...| -00000010 a0 c3 77 d9 a8 c8 fe 8f df 7d ab 20 c4 e9 50 bd |..w......}. ..P.| -00000020 9c dc 33 4f ca 0b b1 b1 f4 93 cc 20 d7 5d 8b 7e |..3O....... .].~| -00000030 7e 45 21 86 05 21 77 d0 ed 6a 1c 5a f3 60 06 38 |~E!..!w..j.Z.`.8| -00000040 43 de 49 df 9a 43 60 52 47 57 98 29 cc a8 00 00 |C.I..C`RGW.)....| +00000000 16 03 03 00 6a 02 00 00 66 03 03 37 57 f9 cb 6a |....j...f..7W..j| +00000010 dc 6c e2 4b 1d 74 93 8e e1 1a 05 e7 fd 8d 29 57 |.l.K.t........)W| +00000020 5e b4 fc 9a ba 7d df de 56 cc e7 20 57 f3 1a b0 |^....}..V.. W...| +00000030 20 cd ac a1 e3 93 b9 79 f5 1c ce d2 d1 24 da fc | ......y.....$..| +00000040 88 97 25 fb 36 72 75 bb cc a3 2a 79 cc a8 00 00 |..%.6ru...*y....| 00000050 1e ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 10 |................| 00000060 00 09 00 07 06 70 72 6f 74 6f 31 00 17 00 00 16 |.....proto1.....| 00000070 03 03 02 59 0b 00 02 55 00 02 52 00 02 4f 30 82 |...Y...U..R..O0.| @@ -65,31 +65,31 @@ 000002a0 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 4c 72 2b |Cw.......@.a.Lr+| 000002b0 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 bd 42 d4 |...F..M...>...B.| 000002c0 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 16 03 03 |..=.`.\!.;......| -000002d0 00 ac 0c 00 00 a8 03 00 1d 20 6c a6 83 3b fe d9 |......... l..;..| -000002e0 f9 da 88 13 dc 34 f4 01 d4 49 a7 43 80 d7 e2 cf |.....4...I.C....| -000002f0 1d c9 eb 94 5a 6d 85 b5 1d 7c 08 04 00 80 d2 21 |....Zm...|.....!| -00000300 1b 9a f4 26 ac 76 28 68 63 68 fe b5 9b e2 16 bb |...&.v(hch......| -00000310 fd a5 b7 85 3c f8 f9 da 49 d7 4f 62 c0 af 75 08 |....<...I.Ob..u.| -00000320 47 3b 3a 48 26 c3 8e 13 25 08 1d 77 ce eb 30 e9 |G;:H&...%..w..0.| -00000330 b4 2e cc 94 ca 8d b4 60 c6 92 ce 57 ba 1e 46 59 |.......`...W..FY| -00000340 f6 76 61 da f2 59 79 da 87 08 22 1d 5a e9 1a b8 |.va..Yy...".Z...| -00000350 9d 31 0f d9 db ab 49 80 d9 5c 20 ab ef 9e e1 4d |.1....I..\ ....M| -00000360 0c 69 9b 41 f2 dd 4d e9 ee ff d3 40 47 88 64 76 |.i.A..M....@G.dv| -00000370 69 8e 3a a1 e0 68 00 6d 2f 95 b6 f9 64 12 16 03 |i.:..h.m/...d...| +000002d0 00 ac 0c 00 00 a8 03 00 1d 20 27 fd a6 7d 32 28 |......... '..}2(| +000002e0 d2 44 43 d5 2a 95 3b e2 7e 77 5a d2 66 87 4a 92 |.DC.*.;.~wZ.f.J.| +000002f0 12 56 ba 40 3e 09 43 b4 90 02 08 04 00 80 8b e9 |.V.@>.C.........| +00000300 93 0c 5e 72 b8 a8 49 1c c3 b7 fc 39 af 58 9c 3a |..^r..I....9.X.:| +00000310 27 b6 20 23 9a 5d 35 0e dd 21 da 1b be 34 32 23 |'. #.]5..!...42#| +00000320 76 2e c8 9e 3d c8 e5 9e cd 04 11 a9 be 97 52 53 |v...=.........RS| +00000330 81 b6 01 fc 60 5d 0d dd 0d ba 05 a6 15 3b 29 4e |....`].......;)N| +00000340 88 a0 69 b9 c2 46 d9 c2 6d 17 b2 d0 c0 ee de f9 |..i..F..m.......| +00000350 94 fe 25 31 66 df 72 7d 02 77 a6 2c a6 ad da eb |..%1f.r}.w.,....| +00000360 dc 4b ea d4 5b 0a d4 e6 c8 89 15 cf 3f 81 58 20 |.K..[.......?.X | +00000370 0f 83 2f e1 db a1 cc a7 e1 61 79 7d 14 4b 16 03 |../......ay}.K..| 00000380 03 00 04 0e 00 00 00 |.......| >>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| -00000030 16 03 03 00 20 d5 b6 10 b8 32 7d da 84 25 2b 18 |.... ....2}..%+.| -00000040 78 a4 e3 6b 34 de b2 83 b6 94 12 f9 d2 9a 27 e5 |x..k4.........'.| -00000050 ff ef a2 00 50 |....P| +00000030 16 03 03 00 20 50 e7 36 59 68 f6 0f cd b0 cc ae |.... P.6Yh......| +00000040 bc 18 23 d3 c0 fb c9 41 49 91 ec 8f cd f0 69 84 |..#....AI.....i.| +00000050 49 3c 68 6e 05 |I>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 20 91 63 26 79 f6 |.......... .c&y.| -00000010 6f fc 51 93 c5 9b e9 10 2e 80 f0 5f 6f 49 b8 a5 |o.Q........_oI..| -00000020 53 d9 a6 2a 4a ec 4c 50 9f 1b 98 |S..*J.LP...| +00000000 14 03 03 00 01 01 16 03 03 00 20 84 30 04 4f 3e |.......... .0.O>| +00000010 72 f6 d8 6a dc ae fb 55 82 69 8e a3 77 c2 1f 27 |r..j...U.i..w..'| +00000020 88 14 5b 8d 10 79 4c 6a 41 3e e5 |..[..yLjA>.| >>> Flow 5 (client to server) -00000000 17 03 03 00 16 96 3e 1b 61 d9 00 1a e4 dc 49 cc |......>.a.....I.| -00000010 09 f8 b3 3e 21 c6 df 74 e2 6b a0 15 03 03 00 12 |...>!..t.k......| -00000020 35 41 fc 32 06 30 3b ad 17 a4 19 3c 06 f9 59 e0 |5A.2.0;....<..Y.| -00000030 d2 02 |..| +00000000 17 03 03 00 16 03 a8 d7 eb 5d 79 60 d4 65 1d c1 |.........]y`.e..| +00000010 2b 32 b5 c3 fb b2 2f 10 83 4e 39 15 03 03 00 12 |+2..../..N9.....| +00000020 90 eb 89 fc e7 4c a2 94 02 33 b3 0e 72 6e bc 4e |.....L...3..rn.N| +00000030 d4 e7 |..| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-ECDSA-ECDSA b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-ECDSA-ECDSA index b3496cedd6..784e95f87e 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-ECDSA-ECDSA +++ b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-ECDSA-ECDSA @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 c9 60 0f c9 c7 |....]...Y...`...| -00000010 84 d4 8c 7b e8 33 a1 e2 cc 15 9b 13 21 e6 ff 3a |...{.3......!..:| -00000020 72 2a d2 6b 18 bd 7b aa 4c 95 7f 20 f2 dd 03 c8 |r*.k..{.L.. ....| -00000030 a9 e6 f0 20 b4 72 81 71 ea 10 ca b1 9f 4b 86 96 |... .r.q.....K..| -00000040 27 b5 d4 6a 6a 35 2f d5 5a f6 75 96 c0 09 00 00 |'..jj5/.Z.u.....| +00000000 16 03 03 00 5d 02 00 00 59 03 03 4a 0b 4d 4a 05 |....]...Y..J.MJ.| +00000010 a0 5b ca 5d 65 4f f7 7e 82 3c 54 1d a3 42 64 7c |.[.]eO.~.>> Flow 3 (client to server) 00000000 16 03 03 02 0a 0b 00 02 06 00 02 03 00 02 00 30 |...............0| 00000010 82 01 fc 30 82 01 5e 02 09 00 9a 30 84 6c 26 35 |...0..^....0.l&5| @@ -111,32 +110,32 @@ 00000200 e4 fa cc b1 8a ce e2 23 a0 87 f0 e1 67 51 eb 16 |.......#....gQ..| 00000210 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd 62 |...%...! /.}.G.b| 00000220 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 cf |C.(.._.).0......| -00000230 c2 ed 90 99 5f 58 cb 3b 74 16 03 03 00 92 0f 00 |...._X.;t.......| -00000240 00 8e 04 03 00 8a 30 81 87 02 41 5f 38 d1 e6 8e |......0...A_8...| -00000250 cd f7 6b 2e 50 d9 e5 40 3a ba e7 67 5d a9 5a 83 |..k.P..@:..g].Z.| -00000260 c1 9e 45 e7 c2 bc f6 a2 c0 d8 3e ca f6 48 44 72 |..E.......>..HDr| -00000270 8b c6 e6 24 e4 aa 90 ff 81 10 c5 86 08 64 d4 30 |...$.........d.0| -00000280 e7 27 e2 9b 66 b9 c8 30 3b 3d 61 51 02 42 01 3b |.'..f..0;=aQ.B.;| -00000290 a1 0b 55 d0 2b 23 90 0c 5a 14 9b f4 2b 04 f4 b3 |..U.+#..Z...+...| -000002a0 b1 9d 6f 86 17 67 3d c1 9d 64 e6 d7 c6 54 eb 99 |..o..g=..d...T..| -000002b0 51 83 df c9 df 41 48 b8 bc 8f 6c c9 bc 0a 36 0f |Q....AH...l...6.| -000002c0 c9 34 70 3a d5 82 5e 42 4f 22 64 23 33 fc e2 d3 |.4p:..^BO"d#3...| -000002d0 14 03 03 00 01 01 16 03 03 00 40 00 00 00 00 00 |..........@.....| -000002e0 00 00 00 00 00 00 00 00 00 00 00 13 d5 c1 91 72 |...............r| -000002f0 5e 32 35 1d c1 a2 d2 62 80 16 71 ea f9 67 d5 8d |^25....b..q..g..| -00000300 1d 98 a5 87 15 1b 7e 2a 80 a7 08 a2 c1 82 79 d2 |......~*......y.| -00000310 60 e3 d5 8f 0b 9b 43 4f 88 09 7d |`.....CO..}| +00000230 c2 ed 90 99 5f 58 cb 3b 74 16 03 03 00 93 0f 00 |...._X.;t.......| +00000240 00 8f 04 03 00 8b 30 81 88 02 42 01 dd bf fd e0 |......0...B.....| +00000250 db 99 16 0b f0 bc a9 4b 93 10 d9 59 06 d2 eb 30 |.......K...Y...0| +00000260 dc b1 44 69 1d 54 2d 9b b4 a4 c9 3a f8 d8 9d 2e |..Di.T-....:....| +00000270 36 71 3e ff aa 05 98 8a 27 00 dd 65 6a 15 b7 c9 |6q>.....'..ej...| +00000280 fe 1d 4d 45 02 58 09 4f 38 ea cd 88 3c 02 42 00 |..ME.X.O8...<.B.| +00000290 a6 27 a5 d7 e7 9e 66 7e f8 38 37 03 7b 6d df c4 |.'....f~.87.{m..| +000002a0 81 6a 59 af 5b c7 06 2e 57 e9 8f 8d 1f 9c 9d 94 |.jY.[...W.......| +000002b0 70 4c 74 ed 03 24 3d df 35 51 a1 76 a7 8f 9b 40 |pLt..$=.5Q.v...@| +000002c0 16 c6 4f 0e 49 95 34 20 22 dc 5c ce 1d c0 ed bf |..O.I.4 ".\.....| +000002d0 f4 14 03 03 00 01 01 16 03 03 00 40 00 00 00 00 |...........@....| +000002e0 00 00 00 00 00 00 00 00 00 00 00 00 b7 d5 df bf |................| +000002f0 2b 32 a9 9e e4 78 40 84 ca c9 7d 54 4e 38 89 3b |+2...x@...}TN8.;| +00000300 0f 83 23 42 75 95 6e 4d 70 d4 b6 5a 1a 26 dd bb |..#Bu.nMp..Z.&..| +00000310 37 4a 85 88 ab 60 ba 3c 19 bd 02 79 |7J...`.<...y| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 40 8a f4 68 76 16 |..........@..hv.| -00000010 0d 13 09 2a e5 3f 25 87 0f ce 03 96 2a 86 58 41 |...*.?%.....*.XA| -00000020 7a 40 ec 65 ff c5 64 c1 62 6e ae 1d bf b6 4e dd |z@.e..d.bn....N.| -00000030 f6 be 55 56 ba 43 b3 c5 3a 6f 35 e6 73 59 63 87 |..UV.C..:o5.sYc.| -00000040 fd 10 64 b1 94 e3 a9 b7 2d e0 94 |..d.....-..| +00000000 14 03 03 00 01 01 16 03 03 00 40 07 8e 16 c5 c2 |..........@.....| +00000010 e1 e5 32 41 2d 8b 3c fb 2e 3e b2 84 89 56 4d b5 |..2A-.<..>...VM.| +00000020 1c bd 1e a5 11 a1 b0 18 29 ce eb 46 f8 11 ff dc |........)..F....| +00000030 c0 cc ed 5a 38 33 5a 8f 48 df bf e9 8e 09 be b0 |...Z83Z.H.......| +00000040 9d 70 85 f7 71 f5 1e 5c aa 6f 88 |.p..q..\.o.| >>> Flow 5 (client to server) 00000000 17 03 03 00 30 00 00 00 00 00 00 00 00 00 00 00 |....0...........| -00000010 00 00 00 00 00 15 82 4f fa 8d ce 67 fd 63 bb 74 |.......O...g.c.t| -00000020 98 2f 77 fc 5b 43 70 4d 15 cf 5b 2b 45 ae e7 b3 |./w.[CpM..[+E...| -00000030 d0 dd ae 4b 27 15 03 03 00 30 00 00 00 00 00 00 |...K'....0......| -00000040 00 00 00 00 00 00 00 00 00 00 d2 ce b2 c5 1a 62 |...............b| -00000050 06 9c c1 1e 6f 1e b7 6e 18 5e 74 45 be 10 b7 69 |....o..n.^tE...i| -00000060 6d da 09 65 3c 38 a5 3d f1 0a |m..e<8.=..| +00000010 00 00 00 00 00 37 b7 99 22 eb 67 a0 32 57 76 b5 |.....7..".g.2Wv.| +00000020 53 86 fc 5b 79 c5 4a 4f 3a 6b a9 0f d8 c8 30 de |S..[y.JO:k....0.| +00000030 0a 5b 9b af e2 15 03 03 00 30 00 00 00 00 00 00 |.[.......0......| +00000040 00 00 00 00 00 00 00 00 00 00 57 9c 4b ca 83 a3 |..........W.K...| +00000050 c0 3a 52 71 24 f5 b1 37 1e 4d c1 5a 2d 29 1c 90 |.:Rq$..7.M.Z-)..| +00000060 9b 96 cf 1e 07 39 f1 1b 03 2b |.....9...+| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-ECDSA-RSA b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-ECDSA-RSA index 7356bfebfc..c20bd95d7f 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-ECDSA-RSA +++ b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-ECDSA-RSA @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 26 62 0d 9d 45 |....]...Y..&b..E| -00000010 3d 25 b7 ed ec ce b8 d6 8f fd a6 68 0b 07 05 28 |=%.........h...(| -00000020 d4 2a 9c d9 cf bf e9 a0 92 71 6f 20 18 af a0 13 |.*.......qo ....| -00000030 72 10 57 69 cf 63 db 73 c4 44 b8 a9 27 cd 9a a0 |r.Wi.c.s.D..'...| -00000040 3b be f1 57 ef 10 19 80 0b c0 51 94 c0 2f 00 00 |;..W......Q../..| +00000000 16 03 03 00 5d 02 00 00 59 03 03 48 41 85 3e fc |....]...Y..HA.>.| +00000010 9f e7 b6 84 da fe 2f a7 1d e9 ba 12 4e a1 cf cb |....../.....N...| +00000020 9e f8 df 76 7c e7 29 c1 3b 9e 23 20 07 c9 55 c7 |...v|.).;.# ..U.| +00000030 0e 45 5c 26 17 94 b4 14 6b 58 39 27 43 4e dc 9b |.E\&....kX9'CN..| +00000040 65 30 0e f2 bd 59 d9 a2 a1 f3 0a 01 c0 2f 00 00 |e0...Y......./..| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -63,18 +62,18 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 22 fe 67 |............ ".g| -000002d0 48 d3 90 04 ee 7d c2 2a 6d 9f 3a 36 3c b2 f8 14 |H....}.*m.:6<...| -000002e0 24 76 54 5a ae ed 2f 62 fc 76 e0 00 07 08 04 00 |$vTZ../b.v......| -000002f0 80 6d 8b e6 52 be ed 40 b8 b1 51 53 94 08 93 76 |.m..R..@..QS...v| -00000300 9b 84 06 66 60 b9 be a8 f1 bb 5d fa 81 42 28 8e |...f`.....]..B(.| -00000310 aa ce 72 9f df a3 53 2d c9 6d 34 10 78 36 da 33 |..r...S-.m4.x6.3| -00000320 09 0c a0 5e ea 56 2e 6f 62 fc 3c 5e 5b 6d 97 c9 |...^.V.ob.<^[m..| -00000330 39 1b 3c eb 6d 1f 0a b5 02 06 6d 9e 99 24 14 ee |9.<.m.....m..$..| -00000340 f9 55 cc 4d 7f 77 0c 58 2c 59 0f a4 66 4b 81 b4 |.U.M.w.X,Y..fK..| -00000350 d9 e4 f6 24 4f ba 05 83 6c c3 6c 2f 5e 74 42 09 |...$O...l.l/^tB.| -00000360 b3 be d1 c9 6a c8 a6 34 5c bc 36 65 58 cd 02 ae |....j..4\.6eX...| -00000370 16 16 03 03 00 3a 0d 00 00 36 03 01 02 40 00 2e |.....:...6...@..| +000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 73 d3 a9 |............ s..| +000002d0 7e 93 32 e3 dd ad 1c b3 c1 ff 03 c2 b9 08 da 09 |~.2.............| +000002e0 d3 1b 67 95 9c 8c d1 05 12 2e 8b dc 7a 08 04 00 |..g.........z...| +000002f0 80 85 af 3b 06 67 b0 ab 07 70 21 02 b1 3a 89 40 |...;.g...p!..:.@| +00000300 d6 90 ef a5 5b 89 49 81 18 20 74 9f 7b dd 58 65 |....[.I.. t.{.Xe| +00000310 28 6f 2a f1 aa 3f 35 91 b9 88 79 27 a0 f3 e7 41 |(o*..?5...y'...A| +00000320 9a a5 77 be 55 5e 70 89 37 b6 4a 7b 3b 8c df ad |..w.U^p.7.J{;...| +00000330 47 cc ac 45 47 43 05 05 ad c9 7b d8 1d d6 a8 fa |G..EGC....{.....| +00000340 38 45 c3 54 35 0c 28 a1 29 be 1f 73 98 a6 02 01 |8E.T5.(.)..s....| +00000350 fb 9d 12 64 1a 9c f3 82 e5 3f f6 0c 20 67 59 72 |...d.....?.. gYr| +00000360 3f a7 59 4e ef b4 58 ba 49 4e c9 b6 ea 95 b2 b3 |?.YN..X.IN......| +00000370 78 16 03 03 00 3a 0d 00 00 36 03 01 02 40 00 2e |x....:...6...@..| 00000380 04 03 05 03 06 03 08 07 08 08 08 09 08 0a 08 0b |................| 00000390 08 04 08 05 08 06 04 01 05 01 06 01 03 03 02 03 |................| 000003a0 03 01 02 01 03 02 02 02 04 02 05 02 06 02 00 00 |................| @@ -115,28 +114,28 @@ 00000200 e4 fa cc b1 8a ce e2 23 a0 87 f0 e1 67 51 eb 16 |.......#....gQ..| 00000210 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd 62 |...%...! /.}.G.b| 00000220 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 cf |C.(.._.).0......| -00000230 c2 ed 90 99 5f 58 cb 3b 74 16 03 03 00 92 0f 00 |...._X.;t.......| -00000240 00 8e 04 03 00 8a 30 81 87 02 42 00 8e 41 5f 48 |......0...B..A_H| -00000250 64 4e 6e 7e 7d ed 5b da 88 7a 38 1f bd 04 ee 93 |dNn~}.[..z8.....| -00000260 88 f8 3d e5 b7 51 4a 43 6b c5 c1 02 06 c5 2c c1 |..=..QJCk.....,.| -00000270 48 18 2e 11 63 8a 9d 94 35 98 bc d1 d7 19 1f c0 |H...c...5.......| -00000280 f6 dc 10 15 89 bf 99 0c 87 7d 3e bf e2 02 41 4f |.........}>...AO| -00000290 e3 d4 a0 b2 4d 80 ec 21 2f b3 fc df 6c b7 bd 6d |....M..!/...l..m| -000002a0 c7 6d 0a 7a 24 56 a4 c8 36 ec 7d 2d 65 ff 8c 4b |.m.z$V..6.}-e..K| -000002b0 c7 cd 52 99 f1 2d e5 19 57 89 fe 52 44 ca e0 c3 |..R..-..W..RD...| -000002c0 34 fc c5 4a da 59 f5 62 eb c4 c5 cb 1d d7 4b 63 |4..J.Y.b......Kc| -000002d0 14 03 03 00 01 01 16 03 03 00 28 00 00 00 00 00 |..........(.....| -000002e0 00 00 00 5d 34 16 3d d0 04 3f b7 3d a2 be 20 8b |...]4.=..?.=.. .| -000002f0 19 20 09 7b f0 7e 52 95 e6 b8 f1 06 08 93 6b 91 |. .{.~R.......k.| -00000300 ee fa c8 |...| +00000230 c2 ed 90 99 5f 58 cb 3b 74 16 03 03 00 91 0f 00 |...._X.;t.......| +00000240 00 8d 04 03 00 89 30 81 86 02 41 66 64 90 bc df |......0...Afd...| +00000250 a5 d0 19 89 2b ed fc a5 8f 7e 14 d0 9f a2 07 6b |....+....~.....k| +00000260 d3 09 07 46 f8 29 4d b5 6c 01 e5 2e 0d d8 a4 b9 |...F.)M.l.......| +00000270 1a 86 2f b1 10 4c 29 5b de e7 29 e6 b9 32 53 ca |../..L)[..)..2S.| +00000280 d0 fc 7b a1 82 6e 34 2f 11 7a 2b 98 02 41 74 a4 |..{..n4/.z+..At.| +00000290 51 21 0c 57 ac 99 d1 a3 8c 86 f6 f2 b8 66 b8 1f |Q!.W.........f..| +000002a0 2d db 49 1a c1 34 e6 02 fd ce 50 14 7c 9b a4 52 |-.I..4....P.|..R| +000002b0 17 bc 96 ab 11 5f 97 9a 7f be ab 26 f7 1f 2b cf |....._.....&..+.| +000002c0 30 f1 da 80 b5 82 a0 da 44 be c1 00 51 1d b4 14 |0.......D...Q...| +000002d0 03 03 00 01 01 16 03 03 00 28 00 00 00 00 00 00 |.........(......| +000002e0 00 00 39 c2 3d 4e 74 16 e2 8c 4b f9 11 38 94 12 |..9.=Nt...K..8..| +000002f0 8f d3 16 18 9b ad 41 ef c9 ed 56 7f e3 ed d7 e5 |......A...V.....| +00000300 0e 52 |.R| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 28 c1 1c 19 bc 14 |..........(.....| -00000010 d3 44 ec 5d 6e 84 c4 06 ba c2 83 00 80 ea dd 7d |.D.]n..........}| -00000020 9b 2e 75 c7 9d 75 40 e8 89 d1 9b 69 16 20 0b 23 |..u..u@....i. .#| -00000030 94 48 42 |.HB| +00000000 14 03 03 00 01 01 16 03 03 00 28 c0 9a 2a 35 ef |..........(..*5.| +00000010 fa 87 1f 74 0a e9 b7 ea 3c 1c ab 1c ce 6e bb 95 |...t....<....n..| +00000020 ef 92 f3 cb 07 c0 e6 af b1 2a 60 fb 09 2a d7 68 |.........*`..*.h| +00000030 27 b0 f1 |'..| >>> Flow 5 (client to server) -00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 20 ce 1a |............. ..| -00000010 b6 65 88 6d 17 9e 9c 9d ec 36 af d3 7e fa e5 63 |.e.m.....6..~..c| -00000020 bc 90 f0 15 03 03 00 1a 00 00 00 00 00 00 00 02 |................| -00000030 e5 a6 0e 68 bc 75 29 7e c1 ee 6b 3b d3 03 c8 0a |...h.u)~..k;....| -00000040 4d 75 |Mu| +00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 b1 98 56 |...............V| +00000010 38 68 a7 d0 da c6 83 4b 00 31 40 d7 1e 81 35 1a |8h.....K.1@...5.| +00000020 2f e3 42 15 03 03 00 1a 00 00 00 00 00 00 00 02 |/.B.............| +00000030 1d 8f a1 cf 12 2f 53 37 4d 60 46 90 e2 db 97 ce |...../S7M`F.....| +00000040 3e 99 |>.| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-Ed25519 b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-Ed25519 index e4e47030dd..9eb522b86b 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-Ed25519 +++ b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-Ed25519 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 73 ca 08 75 98 |....]...Y..s..u.| -00000010 14 2e b6 c4 c0 74 e2 cf 05 24 dd 70 f4 aa 22 08 |.....t...$.p..".| -00000020 39 6d 3a 61 11 90 c6 61 50 41 96 20 d1 c7 24 aa |9m:a...aPA. ..$.| -00000030 3a 5e 0c 2c 37 72 8c 80 76 ab c9 2f fb a5 39 7d |:^.,7r..v../..9}| -00000040 f5 f3 ce 97 d8 ea e5 4c db 1b f8 f6 cc a8 00 00 |.......L........| +00000000 16 03 03 00 5d 02 00 00 59 03 03 7f e3 92 d1 05 |....]...Y.......| +00000010 fd a2 f7 b4 24 f8 e6 e2 2f 15 51 f2 4b 72 12 59 |....$.../.Q.Kr.Y| +00000020 e6 af fe c9 0b 86 8b 53 a3 ce ff 20 68 97 1d e3 |.......S... h...| +00000030 6d 6c fb 67 78 05 ba fc 10 5b 83 87 8c 04 e9 57 |ml.gx....[.....W| +00000040 19 32 3f ee 88 a0 30 61 de 1c d2 2d cc a8 00 00 |.2?...0a...-....| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -63,18 +62,18 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 35 1f 14 |............ 5..| -000002d0 77 42 a0 9c 04 14 f7 8b df e5 b5 e7 71 40 34 4f |wB..........q@4O| -000002e0 f5 0d ab c2 2f 38 97 46 3e c2 57 26 7d 08 04 00 |..../8.F>.W&}...| -000002f0 80 9d d7 8c 28 d8 a8 6c a8 14 5d 92 f8 59 ab e5 |....(..l..]..Y..| -00000300 bd e3 32 1e 49 f6 e6 11 11 ce eb 0c e1 27 3c 34 |..2.I........'<4| -00000310 8c 94 a9 e9 8f 41 51 64 c2 6c 1c d0 e7 d4 ee cf |.....AQd.l......| -00000320 4f 9c f4 92 0f e5 48 c5 2b b5 82 79 c3 91 ee f9 |O.....H.+..y....| -00000330 1c a6 b2 ee ec 9d 73 7c df 2d 2b 49 c8 27 c7 cf |......s|.-+I.'..| -00000340 79 b4 6a 39 f6 ac fe 6f fd f4 6c 7d 2c f2 7f 58 |y.j9...o..l},..X| -00000350 2f a3 d4 f5 92 83 5b 83 19 55 39 e5 f8 d2 2c fd |/.....[..U9...,.| -00000360 ad 89 32 90 ba 89 cd 0d ed 16 02 96 92 bd 77 d2 |..2...........w.| -00000370 f3 16 03 03 00 3a 0d 00 00 36 03 01 02 40 00 2e |.....:...6...@..| +000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 55 93 3e |............ U.>| +000002d0 dd fc 30 52 61 80 f3 e8 7e e2 fb f8 03 ab e4 86 |..0Ra...~.......| +000002e0 bc 8b 69 5b f5 8c fd 4b fc 12 2e 99 1a 08 04 00 |..i[...K........| +000002f0 80 43 60 48 4c 88 e9 fc 78 36 5f a9 6a 61 54 7e |.C`HL...x6_.jaT~| +00000300 a8 a3 67 91 df ff 78 66 d6 b6 ce 95 26 af 8e ac |..g...xf....&...| +00000310 42 fa 95 e1 a3 c6 9b 73 bb 7b dc e6 aa ca 6f a0 |B......s.{....o.| +00000320 17 6b ee 50 ff d9 20 ed 11 c4 e5 81 23 1d 6b 02 |.k.P.. .....#.k.| +00000330 a8 e6 f6 ef fc 1f 69 9e c1 28 d9 bd 36 98 ad f6 |......i..(..6...| +00000340 f3 40 5a e8 a4 e9 3c 62 b2 8d 53 a1 88 06 e6 81 |.@Z.......;......@.| -00000190 29 fa d0 f7 63 4e b9 5f 1f d9 5d 8c 87 eb bb 43 |)...cN._..]....C| -000001a0 25 e5 a7 04 8d 16 88 f8 8b 0d 17 d1 ef 75 7c f1 |%............u|.| -000001b0 1a b4 8f 2f cd f1 18 00 14 03 03 00 01 01 16 03 |.../............| -000001c0 03 00 20 b2 95 81 2d 8c 06 f0 54 da ef 31 9a 33 |.. ...-...T..1.3| -000001d0 89 c3 b5 e8 6a 77 3c fe e8 e3 d0 24 94 2d 7e f9 |....jw<....$.-~.| -000001e0 08 d4 ce |...| +00000170 0f 00 00 44 08 07 00 40 ff da 51 80 4b 76 25 5d |...D...@..Q.Kv%]| +00000180 89 dc ce 9a fe 11 c3 95 c5 9a c2 fa ee 8a ba 87 |................| +00000190 42 be 46 93 da 10 c7 2a ab 7c 4c 24 a8 a7 b1 de |B.F....*.|L$....| +000001a0 17 6a b4 85 13 ff db 8d 69 9a be 0a b1 7d 1d d6 |.j......i....}..| +000001b0 b1 83 26 d1 2f 26 59 06 14 03 03 00 01 01 16 03 |..&./&Y.........| +000001c0 03 00 20 7b 59 a9 9c 67 42 6e ce 78 78 cb d0 94 |.. {Y..gBn.xx...| +000001d0 d1 b1 38 06 65 a7 97 56 3c cf 14 2f 80 1c f4 04 |..8.e..V<../....| +000001e0 59 de 4d |Y.M| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 20 b3 9b 27 5a 1e |.......... ..'Z.| -00000010 ce 80 3c 04 f7 aa 69 b6 6b 37 9a 86 e9 95 ce 73 |..<...i.k7.....s| -00000020 8a ef 38 62 6f cb a0 0e 45 78 ad |..8bo...Ex.| +00000000 14 03 03 00 01 01 16 03 03 00 20 91 2c 24 55 e8 |.......... .,$U.| +00000010 70 9e 88 07 53 e1 60 9e 86 af 53 d4 21 d9 99 ad |p...S.`...S.!...| +00000020 3a 2b 83 b0 bc f7 93 5e 63 04 50 |:+.....^c.P| >>> Flow 5 (client to server) -00000000 17 03 03 00 16 bf 78 66 da 5b a7 fd cf 95 32 20 |......xf.[....2 | -00000010 b6 ce 1e 5d 4f 21 05 6a f7 3a 27 15 03 03 00 12 |...]O!.j.:'.....| -00000020 42 e1 e3 e3 d3 5a 98 8c d1 e3 ce a5 02 f9 58 ba |B....Z........X.| -00000030 ce 33 |.3| +00000000 17 03 03 00 16 e0 69 be 8e c5 4d 63 0e 77 88 42 |......i...Mc.w.B| +00000010 4e a8 e9 8f f4 c5 05 56 99 92 70 15 03 03 00 12 |N......V..p.....| +00000020 64 5c 05 8f 23 af e8 aa f6 76 1b b6 90 36 d9 d5 |d\..#....v...6..| +00000030 59 e6 |Y.| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-AES256-GCM-SHA384 b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-AES256-GCM-SHA384 index 0fb7a12f70..e9f6604b2f 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-AES256-GCM-SHA384 +++ b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-AES256-GCM-SHA384 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 e8 4b b6 f9 1c |....]...Y...K...| -00000010 d9 59 e0 86 7b 9b cf 37 9f 0c f2 14 51 de 10 66 |.Y..{..7....Q..f| -00000020 39 05 15 ab 17 25 df 89 d7 5b 41 20 e5 28 ba da |9....%...[A .(..| -00000030 29 8c 72 40 14 7e 06 2d f8 04 6d 4d 37 09 62 9a |).r@.~.-..mM7.b.| -00000040 87 f7 52 fc 77 61 05 04 2f 65 c0 df c0 30 00 00 |..R.wa../e...0..| +00000000 16 03 03 00 5d 02 00 00 59 03 03 bc b7 27 59 a9 |....]...Y....'Y.| +00000010 a7 ac ce 8b f5 5b 13 56 60 19 70 2a a7 f0 a2 ea |.....[.V`.p*....| +00000020 1a ce 27 2a 67 53 e0 5c 7e 5e 80 20 d5 c6 de 6d |..'*gS.\~^. ...m| +00000030 d1 3c 6d cb c9 49 77 00 cc 31 87 0a 86 45 06 70 |...| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 57 e9 2a |............ W.*| -000002d0 eb ac 52 cf 39 70 0a c3 21 38 2d 46 66 c1 df 26 |..R.9p..!8-Ff..&| -000002e0 38 ad b2 19 d5 a9 f5 37 15 f7 f6 dc 54 08 04 00 |8......7....T...| -000002f0 80 35 c5 7a 73 5f 36 ed 72 f9 2d 21 a9 9f 94 3f |.5.zs_6.r.-!...?| -00000300 98 de 22 b1 35 c1 9d e2 d2 42 bb 32 7a f3 11 0e |..".5....B.2z...| -00000310 f7 3c a0 ca 44 87 95 e6 f3 1a 19 45 51 a8 f5 f2 |.<..D......EQ...| -00000320 fe ac 00 d0 fc 79 a8 a9 83 fe 81 48 e9 f7 48 ce |.....y.....H..H.| -00000330 08 8c 45 3c 24 b5 d4 e0 07 17 d1 f0 fa 3d 13 3c |..E<$........=.<| -00000340 ef f5 7b f2 5a c2 9a 60 af de 8e 74 50 c7 df b0 |..{.Z..`...tP...| -00000350 27 ef 0e dd db 6a 8f a4 94 69 f0 08 7e 3c 3c 93 |'....j...i..~<<.| -00000360 03 f9 67 ad 30 0b e6 d7 f0 c0 77 bd c4 1a 6e b4 |..g.0.....w...n.| -00000370 52 16 03 03 00 3a 0d 00 00 36 03 01 02 40 00 2e |R....:...6...@..| +000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 8b ea d3 |............ ...| +000002d0 e4 1f c2 21 cb 32 99 00 d2 a9 a4 f3 e4 9a d7 6e |...!.2.........n| +000002e0 f0 6e 7c 45 ca 41 51 60 a3 31 61 f0 34 08 04 00 |.n|E.AQ`.1a.4...| +000002f0 80 96 62 58 0c b4 72 a7 49 1c b8 73 72 5a c7 ba |..bX..r.I..srZ..| +00000300 e2 fe dc a6 a4 54 3d 21 83 70 ab ef de d8 d8 db |.....T=!.p......| +00000310 82 56 22 4f 9d f6 04 c2 b6 f7 9d a0 41 88 53 c9 |.V"O........A.S.| +00000320 2b 57 80 71 a2 bd d7 84 b6 4b cd 65 3d c3 10 cb |+W.q.....K.e=...| +00000330 5d 89 03 af 46 d5 b0 39 b8 c8 2d 74 1b 46 8d 0d |]...F..9..-t.F..| +00000340 ca 13 30 34 54 10 ea ec 77 ca 84 a6 2c 88 68 d6 |..04T...w...,.h.| +00000350 69 e6 f3 95 aa 65 af 05 7d e0 c2 84 48 f5 fa ae |i....e..}...H...| +00000360 d5 90 2a 79 0c 45 c6 7d d3 b7 de 85 e8 b5 2b 68 |..*y.E.}......+h| +00000370 bf 16 03 03 00 3a 0d 00 00 36 03 01 02 40 00 2e |.....:...6...@..| 00000380 04 03 05 03 06 03 08 07 08 08 08 09 08 0a 08 0b |................| 00000390 08 04 08 05 08 06 04 01 05 01 06 01 03 03 02 03 |................| 000003a0 03 01 02 01 03 02 02 02 04 02 05 02 06 02 00 00 |................| @@ -115,26 +114,26 @@ 00000200 e5 35 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 |.5....%...! /.}.| 00000210 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 |G.bC.(.._.).0...| 00000220 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 16 03 03 00 |......._X.;t....| -00000230 88 0f 00 00 84 08 04 00 80 ac ba b5 9f a6 2e 81 |................| -00000240 fa c5 95 f7 27 e6 1c 54 80 51 1f 98 c6 bd 54 79 |....'..T.Q....Ty| -00000250 ca 24 1a 0d df a0 e4 c8 5a e2 2d 83 35 ed 88 8f |.$......Z.-.5...| -00000260 08 23 db c9 fa 56 c9 5d 14 91 43 53 57 40 a1 a6 |.#...V.]..CSW@..| -00000270 c9 61 b4 99 d5 4b bc 32 b5 2a a0 13 68 d3 06 1b |.a...K.2.*..h...| -00000280 07 7f 3a a3 05 32 19 c2 d7 ed 9a 68 f7 da e9 80 |..:..2.....h....| -00000290 54 1f 1d c3 6b fc 1f 85 b0 8d 91 76 39 a1 56 e2 |T...k......v9.V.| -000002a0 1b 73 1e c3 1f 57 59 25 17 b2 53 6c fd 47 5f de |.s...WY%..Sl.G_.| -000002b0 57 2c c0 e7 76 1b 71 05 6c 14 03 03 00 01 01 16 |W,..v.q.l.......| -000002c0 03 03 00 28 00 00 00 00 00 00 00 00 42 57 90 45 |...(........BW.E| -000002d0 6a b9 64 64 92 ac c5 63 14 66 d1 f0 f9 65 f3 25 |j.dd...c.f...e.%| -000002e0 de 81 74 da 68 1c cb 90 a5 46 6d 69 |..t.h....Fmi| +00000230 88 0f 00 00 84 08 04 00 80 48 ae 01 b6 4e e2 f0 |.........H...N..| +00000240 6b d9 58 e9 95 fb 93 56 10 8f 15 dc e8 3e c7 49 |k.X....V.....>.I| +00000250 b3 26 c2 06 91 4a 02 27 36 6b 21 cd aa 4a 62 6a |.&...J.'6k!..Jbj| +00000260 9d 44 6a b7 6c 16 d4 52 23 12 20 9d e5 5c 83 04 |.Dj.l..R#. ..\..| +00000270 d8 38 45 61 8b 30 5b 7b 6b 77 be 47 5a f8 fe 4d |.8Ea.0[{kw.GZ..M| +00000280 c8 e7 83 97 44 b4 fb 71 89 30 f2 cf d2 49 82 e8 |....D..q.0...I..| +00000290 d4 a8 73 86 44 29 30 17 7b b6 0e 4f 5f 6b 0c 33 |..s.D)0.{..O_k.3| +000002a0 43 7f 9b 84 a4 9b c6 30 18 ff 1b 85 a7 a9 17 23 |C......0.......#| +000002b0 2e 08 d3 57 10 af 49 95 2a 14 03 03 00 01 01 16 |...W..I.*.......| +000002c0 03 03 00 28 00 00 00 00 00 00 00 00 43 b8 4c 8a |...(........C.L.| +000002d0 84 1e 6c 41 02 fb b6 74 1e 4d 69 0d c0 f8 fc 8b |..lA...t.Mi.....| +000002e0 ce 64 53 95 40 c8 e8 52 31 5f a3 65 |.dS.@..R1_.e| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 28 6b 52 88 32 f1 |..........(kR.2.| -00000010 6e 1f dd ce 38 ba d4 7d c7 4a 55 89 4c 91 57 34 |n...8..}.JU.L.W4| -00000020 1e 54 12 8e 37 e2 dc a9 7d 37 b6 31 57 2f 11 27 |.T..7...}7.1W/.'| -00000030 42 96 c2 |B..| +00000000 14 03 03 00 01 01 16 03 03 00 28 04 f3 da a1 b9 |..........(.....| +00000010 b9 1a cf f3 a8 19 aa 23 12 65 8d 68 dc 37 09 9a |.......#.e.h.7..| +00000020 e4 0c cd e5 d4 3d cb 42 89 e4 ad 9e 49 34 de 05 |.....=.B....I4..| +00000030 74 f0 33 |t.3| >>> Flow 5 (client to server) -00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 be ea d3 |................| -00000010 87 8c 16 62 86 4a 53 49 9d d7 f8 01 11 8b 9b 58 |...b.JSI.......X| -00000020 39 89 cf 15 03 03 00 1a 00 00 00 00 00 00 00 02 |9...............| -00000030 93 9d 61 38 db c4 be 69 5e fb 63 1e ae f3 57 e4 |..a8...i^.c...W.| -00000040 fe 85 |..| +00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 00 33 c0 |..............3.| +00000010 3f 9c 56 3e 9b ed bb 5e 81 0c 4a 01 65 91 f5 da |?.V>...^..J.e...| +00000020 f6 4b 62 15 03 03 00 1a 00 00 00 00 00 00 00 02 |.Kb.............| +00000030 55 6f 8d 18 50 1f aa 00 94 9b 79 26 f0 3e 0a c6 |Uo..P.....y&.>..| +00000040 45 b0 |E.| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-ECDSA b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-ECDSA index 689be1097b..25120914e8 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-ECDSA +++ b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-ECDSA @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 dc 6d a4 87 a5 |....]...Y...m...| -00000010 a1 8e 67 3d c3 ed c0 e4 ed 38 7a 00 df b1 50 f4 |..g=.....8z...P.| -00000020 4a cc 0f ab e2 e8 d9 77 b8 1a 18 20 cb e9 02 2a |J......w... ...*| -00000030 4f 17 c0 9d 3d 55 60 3e d8 46 ee 52 dd bf 3e e6 |O...=U`>.F.R..>.| -00000040 c9 4a b5 24 f5 19 73 56 ab 78 ce ec c0 09 00 00 |.J.$..sV.x......| +00000000 16 03 03 00 5d 02 00 00 59 03 03 80 e4 9b 9d a9 |....]...Y.......| +00000010 59 27 7f 44 b9 4b 90 31 c7 66 03 90 d6 9b ef 17 |Y'.D.K.1.f......| +00000020 f8 fb e5 63 04 68 f6 ce a1 a6 f4 20 cb 84 55 fa |...c.h..... ..U.| +00000030 41 77 48 0f 0a 5a 24 92 e3 59 b2 d9 91 0c 18 4a |AwH..Z$..Y.....J| +00000040 bf af ad db 64 db cb 57 d8 0b de 46 c0 09 00 00 |....d..W...F....| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 0e 0b 00 02 0a 00 02 07 00 02 |................| 00000070 04 30 82 02 00 30 82 01 62 02 09 00 b8 bf 2d 47 |.0...0..b.....-G| @@ -58,23 +57,23 @@ 00000240 8c 25 c1 33 13 83 0d 94 06 bb d4 37 7a f6 ec 7a |.%.3.......7z..z| 00000250 c9 86 2e dd d7 11 69 7f 85 7c 56 de fb 31 78 2b |......i..|V..1x+| 00000260 e4 c7 78 0d ae cb be 9e 4e 36 24 31 7b 6a 0f 39 |..x.....N6$1{j.9| -00000270 95 12 07 8f 2a 16 03 03 00 b7 0c 00 00 b3 03 00 |....*...........| -00000280 1d 20 d8 81 5d 07 0c 63 f2 9a bf 82 37 08 f6 6d |. ..]..c....7..m| -00000290 e2 20 4b 98 85 cc 62 ad a2 ac b1 8b 15 de 1d 5e |. K...b........^| -000002a0 3b 74 04 03 00 8b 30 81 88 02 42 01 81 b9 d9 e7 |;t....0...B.....| -000002b0 3b 89 ed 5f cb 0a 10 16 85 69 c3 5e 7f 82 95 f6 |;.._.....i.^....| -000002c0 49 48 3a 6d 84 c2 f5 04 9a 00 ef 86 f9 10 fc 03 |IH:m............| -000002d0 a8 ba eb e7 0c 0c 0c 27 7b ba aa 73 a4 23 03 cb |.......'{..s.#..| -000002e0 d8 be c8 39 34 1f c4 33 e4 cf 12 98 35 02 42 01 |...94..3....5.B.| -000002f0 dc 0b c7 df 9c b2 c4 f5 dc 4a a6 b0 ef 40 3c 8c |.........J...@<.| -00000300 98 f3 93 ac 14 9b 4d fe 6e 7a 09 fd 23 c3 14 4f |......M.nz..#..O| -00000310 cf 1a e6 61 72 58 8c 75 10 6c 75 42 cc 7b 9c 4a |...arX.u.luB.{.J| -00000320 11 62 25 12 63 44 9d fe 3d 67 44 7e 74 bd b0 3d |.b%.cD..=gD~t..=| -00000330 04 16 03 03 00 3a 0d 00 00 36 03 01 02 40 00 2e |.....:...6...@..| -00000340 04 03 05 03 06 03 08 07 08 08 08 09 08 0a 08 0b |................| -00000350 08 04 08 05 08 06 04 01 05 01 06 01 03 03 02 03 |................| -00000360 03 01 02 01 03 02 02 02 04 02 05 02 06 02 00 00 |................| -00000370 16 03 03 00 04 0e 00 00 00 |.........| +00000270 95 12 07 8f 2a 16 03 03 00 b6 0c 00 00 b2 03 00 |....*...........| +00000280 1d 20 2f 6b 4c 95 75 59 25 2f f7 fd b1 1f d2 9e |. /kL.uY%/......| +00000290 2f 38 5e 57 1a 7c 36 99 1e 11 4a 3f f7 13 5b 0b |/8^W.|6...J?..[.| +000002a0 90 33 04 03 00 8a 30 81 87 02 42 01 b4 34 3f d0 |.3....0...B..4?.| +000002b0 41 09 00 12 f4 79 20 f4 b7 80 5c d1 35 9d 8b d2 |A....y ...\.5...| +000002c0 fa c9 4a a9 44 6b 05 95 c5 a7 50 08 0d 73 66 3e |..J.Dk....P..sf>| +000002d0 dd 49 e4 a4 c6 c0 12 ca 0b 4a df bc c1 3e ec 88 |.I.......J...>..| +000002e0 ec 9a 0e 71 15 4d 45 98 04 3a 51 7a 67 02 41 15 |...q.ME..:Qzg.A.| +000002f0 17 de b0 5c 03 a5 74 0e 0f 2b 53 6e 55 17 73 b8 |...\..t..+SnU.s.| +00000300 ac 16 70 1a 95 f9 25 b1 fc 4b 9d c7 b1 f4 71 f6 |..p...%..K....q.| +00000310 86 2d 5b 74 9e d3 4e 1b 40 67 f4 a6 62 2e c8 4d |.-[t..N.@g..b..M| +00000320 66 f7 32 e9 05 df d5 b0 e8 1a b7 b1 48 c4 1c 91 |f.2.........H...| +00000330 16 03 03 00 3a 0d 00 00 36 03 01 02 40 00 2e 04 |....:...6...@...| +00000340 03 05 03 06 03 08 07 08 08 08 09 08 0a 08 0b 08 |................| +00000350 04 08 05 08 06 04 01 05 01 06 01 03 03 02 03 03 |................| +00000360 01 02 01 03 02 02 02 04 02 05 02 06 02 00 00 16 |................| +00000370 03 03 00 04 0e 00 00 00 |........| >>> Flow 3 (client to server) 00000000 16 03 03 01 fd 0b 00 01 f9 00 01 f6 00 01 f3 30 |...............0| 00000010 82 01 ef 30 82 01 58 a0 03 02 01 02 02 10 5c 19 |...0..X.......\.| @@ -111,31 +110,31 @@ 00000200 e5 35 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 |.5....%...! /.}.| 00000210 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 |G.bC.(.._.).0...| 00000220 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 16 03 03 00 |......._X.;t....| -00000230 88 0f 00 00 84 08 04 00 80 3c 66 74 5d c3 4b d6 |............| -00000260 19 a7 d9 5d 7c f6 65 32 bd 47 e9 2f 90 a8 90 1b |...]|.e2.G./....| -00000270 41 05 08 35 32 f6 c2 22 70 61 37 a3 48 96 72 e0 |A..52.."pa7.H.r.| -00000280 41 26 07 a9 6c c2 34 72 35 d5 43 ce 23 fd 34 9b |A&..l.4r5.C.#.4.| -00000290 56 b7 4e c0 be b9 b3 bd 81 df 32 58 3f b2 af 34 |V.N.......2X?..4| -000002a0 c0 08 69 27 19 43 0f 34 1b 56 ed 08 cd 1b 2b f3 |..i'.C.4.V....+.| -000002b0 41 75 8c 0a b2 43 4c f6 fe 14 03 03 00 01 01 16 |Au...CL.........| +00000230 88 0f 00 00 84 08 04 00 80 70 66 f2 ac fb f7 29 |.........pf....)| +00000240 15 31 a2 12 de 37 3f cc 97 74 5c 5b 7e 6d e4 f8 |.1...7?..t\[~m..| +00000250 b0 b3 3d 9c ee 32 bf d7 64 90 d7 af ad 8f 61 77 |..=..2..d.....aw| +00000260 f2 c0 7e 6f 91 1d 4e 95 92 3e ab 23 f0 ac d8 de |..~o..N..>.#....| +00000270 32 69 cd bc 04 4c d1 a3 77 7a af ac f0 64 41 aa |2i...L..wz...dA.| +00000280 a0 53 f0 89 89 a4 6f 1f 67 21 16 55 4e dc cb a8 |.S....o.g!.UN...| +00000290 12 7d cb a0 5c a9 48 48 d9 af 03 f0 75 ed 32 72 |.}..\.HH....u.2r| +000002a0 d5 da 34 a3 ea 82 08 8f 00 fc 7d 1d b8 11 ff f7 |..4.......}.....| +000002b0 09 52 a8 cc a8 66 b0 06 1e 14 03 03 00 01 01 16 |.R...f..........| 000002c0 03 03 00 40 00 00 00 00 00 00 00 00 00 00 00 00 |...@............| -000002d0 00 00 00 00 ce ef 0a 09 6d 11 17 89 31 b3 ac 31 |........m...1..1| -000002e0 76 fe 02 d1 2b f8 dc df fc 59 e3 2f aa 14 4e 9d |v...+....Y./..N.| -000002f0 c1 d9 5d f6 4f 57 6f 15 db 93 f1 27 12 02 7c 08 |..].OWo....'..|.| -00000300 75 f6 48 26 |u.H&| +000002d0 00 00 00 00 9c 7d d4 9e 59 53 e7 66 64 63 9c cb |.....}..YS.fdc..| +000002e0 58 03 03 26 fe d9 15 eb 03 1c 8f a7 9c 5a 86 4a |X..&.........Z.J| +000002f0 6c 4e 06 4a 80 91 94 00 6f 7d 38 6a ea a3 68 df |lN.J....o}8j..h.| +00000300 17 08 14 ed |....| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 40 c0 0b de 9c 60 |..........@....`| -00000010 35 52 38 09 01 7f e5 52 b3 cf b4 e6 27 02 36 52 |5R8....R....'.6R| -00000020 ce 84 dd f5 ee f8 65 7c 89 ad 5e 1c 86 09 36 d0 |......e|..^...6.| -00000030 23 c7 52 63 6b 67 97 4e bf c0 28 83 3a c8 3e a2 |#.Rckg.N..(.:.>.| -00000040 2f f3 d7 08 8c c0 86 64 8e 9c 3e |/......d..>| +00000000 14 03 03 00 01 01 16 03 03 00 40 7e 6d 15 90 c5 |..........@~m...| +00000010 99 96 ca bb 16 b5 5a 55 3e b0 ef 3f ab e5 b6 8c |......ZU>..?....| +00000020 51 1d 18 c7 c2 25 86 e0 db c1 d0 38 85 51 4e 8d |Q....%.....8.QN.| +00000030 37 51 92 cc d0 64 37 b7 67 7b 2c fc e7 1e 16 f6 |7Q...d7.g{,.....| +00000040 76 3a 94 48 68 eb dc cc cf 2a 4d |v:.Hh....*M| >>> Flow 5 (client to server) 00000000 17 03 03 00 30 00 00 00 00 00 00 00 00 00 00 00 |....0...........| -00000010 00 00 00 00 00 98 7e 6b 30 28 7d e1 6f 09 17 40 |......~k0(}.o..@| -00000020 cf 5f 98 90 46 91 b5 9b f8 29 22 a0 85 75 f7 f6 |._..F....)"..u..| -00000030 f4 33 c8 60 75 15 03 03 00 30 00 00 00 00 00 00 |.3.`u....0......| -00000040 00 00 00 00 00 00 00 00 00 00 02 c0 9e 3b 21 50 |.............;!P| -00000050 a1 7a 16 67 32 3d 66 6d c4 7f 9c 9b 44 30 31 f4 |.z.g2=fm....D01.| -00000060 ea 03 7a e3 54 5d 35 7f d3 eb |..z.T]5...| +00000010 00 00 00 00 00 db 14 ae 78 62 50 37 42 b8 fc c6 |........xbP7B...| +00000020 f1 84 40 75 7c e4 3f 8a 57 b8 1c 12 4a 6f 11 f2 |..@u|.?.W...Jo..| +00000030 ba 1a a6 9b 20 15 03 03 00 30 00 00 00 00 00 00 |.... ....0......| +00000040 00 00 00 00 00 00 00 00 00 00 09 93 aa 80 fd b2 |................| +00000050 66 e2 83 0e f8 83 45 3d e1 39 06 5d a3 12 9e 12 |f.....E=.9.]....| +00000060 fd f5 cb 32 c4 3b ce 20 e4 10 |...2.;. ..| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-RSA b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-RSA index 2dd00ba602..3bfb4aaabd 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-RSA +++ b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-RSA @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 df 59 a1 48 61 |....]...Y...Y.Ha| -00000010 ef db cd 29 5f 9b 90 e4 d9 6d db 10 98 ae 69 b8 |...)_....m....i.| -00000020 97 ed 8f 57 24 42 16 32 0a b0 b1 20 79 b3 fc 90 |...W$B.2... y...| -00000030 63 58 4b ab 45 d8 e9 39 7c 11 20 09 33 db b5 4c |cXK.E..9|. .3..L| -00000040 2c e2 d6 39 63 fe 74 d5 59 18 5c 7d c0 2f 00 00 |,..9c.t.Y.\}./..| +00000000 16 03 03 00 5d 02 00 00 59 03 03 c0 dd 18 ad 41 |....]...Y......A| +00000010 2b ee fd 45 1f c0 c1 10 75 a7 1d 80 74 3e 8e 66 |+..E....u...t>.f| +00000020 18 c8 64 c2 b4 89 4f 19 ff e0 0c 20 be c6 2a 8e |..d...O.... ..*.| +00000030 73 0a 1e 7a 2a d2 81 71 11 ba e9 de 02 0a aa 52 |s..z*..q.......R| +00000040 76 b7 43 a3 49 a0 81 24 9c 57 4c 26 c0 2f 00 00 |v.C.I..$.WL&./..| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -63,18 +62,18 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 12 4b 94 |............ .K.| -000002d0 2b 4a d0 b5 0f ca 87 05 7f 56 c3 11 b0 83 01 27 |+J.......V.....'| -000002e0 68 a2 dd 63 b6 9b ff e5 48 7e af dd 0f 08 04 00 |h..c....H~......| -000002f0 80 38 6f 01 25 4e 51 f1 8d 6c 89 4b 85 85 1d cd |.8o.%NQ..l.K....| -00000300 63 21 5e 89 d5 04 ac 81 cf 42 3c 6f df f1 53 ac |c!^......B...lm6./tQ| +00000300 50 84 a2 0b 1c b4 90 71 72 2b f9 7d 35 2a a6 fc |P......qr+.}5*..| +00000310 56 b1 fa 36 e0 cb ea 5a 4e 89 71 3f 28 d3 fc 90 |V..6...ZN.q?(...| +00000320 de 21 0c 03 84 d9 23 78 b6 58 f2 03 02 27 48 f9 |.!....#x.X...'H.| +00000330 6d 6c 2b eb 62 36 47 66 55 fc d9 77 42 1e 9b 93 |ml+.b6GfU..wB...| +00000340 00 0f 5a 71 76 af 2c d9 b7 c3 6e e8 7a 64 34 0f |..Zqv.,...n.zd4.| +00000350 78 36 d7 cf a1 bb 3d 0a 23 64 c4 70 f0 78 8e 42 |x6....=.#d.p.x.B| +00000360 80 42 1f 0f 1d 7f c9 b6 7b 9c 2a 30 6c 7a ef 0c |.B......{.*0lz..| +00000370 2f 16 03 03 00 3a 0d 00 00 36 03 01 02 40 00 2e |/....:...6...@..| 00000380 04 03 05 03 06 03 08 07 08 08 08 09 08 0a 08 0b |................| 00000390 08 04 08 05 08 06 04 01 05 01 06 01 03 03 02 03 |................| 000003a0 03 01 02 01 03 02 02 02 04 02 05 02 06 02 00 00 |................| @@ -115,26 +114,26 @@ 00000200 e5 35 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 |.5....%...! /.}.| 00000210 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 |G.bC.(.._.).0...| 00000220 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 16 03 03 00 |......._X.;t....| -00000230 88 0f 00 00 84 08 04 00 80 a5 81 a8 8a ed 68 25 |..............h%| -00000240 5d 82 da 0f dc 93 20 56 34 c1 a0 62 0a a7 fb a5 |]..... V4..b....| -00000250 58 07 79 b0 45 17 2d 13 99 9f 6c dc 53 9e 1c e2 |X.y.E.-...l.S...| -00000260 1d 9b a3 bb 69 af 58 33 e1 31 d7 72 f4 86 1d 66 |....i.X3.1.r...f| -00000270 55 a8 c9 77 5b 57 c5 86 74 a0 c9 25 a9 cc 2e da |U..w[W..t..%....| -00000280 26 17 6e bb 34 5b 49 94 0e 05 db b4 05 a4 65 22 |&.n.4[I.......e"| -00000290 98 8c 91 ae d6 1c 89 f4 df 63 8b 45 17 05 0c 50 |.........c.E...P| -000002a0 c0 1d 5e 75 67 c5 be 32 9d f0 4c a5 85 91 f6 f0 |..^ug..2..L.....| -000002b0 8d 58 11 61 85 7b 5c e4 7e 14 03 03 00 01 01 16 |.X.a.{\.~.......| -000002c0 03 03 00 28 00 00 00 00 00 00 00 00 30 27 fd 36 |...(........0'.6| -000002d0 e0 91 2d 1d d7 4a 38 d2 73 5c 5d 4c b2 27 42 cf |..-..J8.s\]L.'B.| -000002e0 df 0d 33 ee 49 18 36 f3 bd c6 ee a8 |..3.I.6.....| +00000230 88 0f 00 00 84 08 04 00 80 56 a2 bb f3 05 94 90 |.........V......| +00000240 46 bc ef 79 ea 74 f9 a4 5c 27 59 dd 93 53 c3 9f |F..y.t..\'Y..S..| +00000250 07 b0 bf c1 e2 dc 39 b9 0d 63 62 d1 d0 88 65 e4 |......9..cb...e.| +00000260 2b 28 d3 ad b1 78 60 4c 0d a6 1f 2e a1 bc 36 81 |+(...x`L......6.| +00000270 31 f0 aa 0b 52 e6 04 69 ba 8a 9d c1 fd 25 d3 50 |1...R..i.....%.P| +00000280 43 5b ed fc 78 21 2b cc 13 f8 db f1 8b e7 57 d8 |C[..x!+.......W.| +00000290 59 f3 cf 54 ab d0 ea d6 8c 61 32 79 b8 be a6 c7 |Y..T.....a2y....| +000002a0 87 0a 35 88 70 f7 3f 2d bd 1b 7c 57 35 32 1b 81 |..5.p.?-..|W52..| +000002b0 87 08 e3 b0 1f a1 2b 13 fb 14 03 03 00 01 01 16 |......+.........| +000002c0 03 03 00 28 00 00 00 00 00 00 00 00 49 94 ed a1 |...(........I...| +000002d0 a3 13 e0 f4 20 2a 63 4d ef 24 d3 6c 8d 6c de b3 |.... *cM.$.l.l..| +000002e0 92 16 21 0d b0 6c 64 df 1b 32 ca dc |..!..ld..2..| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 28 30 5f 74 39 bb |..........(0_t9.| -00000010 c8 00 8c d7 bd 74 ce 43 62 ea 08 0f ba b4 88 74 |.....t.Cb......t| -00000020 d3 31 c9 3c a6 3a 92 14 75 44 95 ee c0 a9 ef 75 |.1.<.:..uD.....u| -00000030 40 25 5f |@%_| +00000000 14 03 03 00 01 01 16 03 03 00 28 b9 2c 96 43 03 |..........(.,.C.| +00000010 f9 8c 28 34 4e 8b 58 ba d7 1a c4 87 d8 67 5c 0f |..(4N.X......g\.| +00000020 36 36 67 54 4e f4 6c 9c 0c 0e 1f df ca a3 8d ab |66gTN.l.........| +00000030 31 f2 84 |1..| >>> Flow 5 (client to server) -00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 f9 d9 d3 |................| -00000010 ee ec ec 6e 8d 0d dd 62 f3 e1 19 0f f4 24 06 46 |...n...b.....$.F| -00000020 76 7d 78 15 03 03 00 1a 00 00 00 00 00 00 00 02 |v}x.............| -00000030 ce 6a 05 27 af 9a 3d 09 27 70 dc c2 4c 8a a5 ab |.j.'..=.'p..L...| -00000040 47 d4 |G.| +00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 de 90 16 |................| +00000010 8e ec 2c 60 b8 a7 4f b6 26 8a c9 78 ff e0 73 19 |..,`..O.&..x..s.| +00000020 b3 01 c1 15 03 03 00 1a 00 00 00 00 00 00 00 02 |................| +00000030 8a 4b 2c 4b 99 51 81 27 34 28 63 00 15 24 e1 47 |.K,K.Q.'4(c..$.G| +00000040 4a 2f |J/| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-RSAPKCS1v15 b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-RSAPKCS1v15 index 5fab0f8c82..b933f592be 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-RSAPKCS1v15 +++ b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-RSAPKCS1v15 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 7b 1f 2c 33 ab |....]...Y..{.,3.| -00000010 6e f8 23 ca 20 a9 66 61 ac 29 00 3e ef a6 cd ee |n.#. .fa.).>....| -00000020 fe e7 18 b7 66 57 0d af 24 37 7a 20 e7 c8 bd 22 |....fW..$7z ..."| -00000030 f7 ff 01 c5 ef c0 fb bd b2 93 d9 81 df 30 96 91 |.............0..| -00000040 0b af b5 a2 61 87 76 27 d4 bf ce 88 c0 2f 00 00 |....a.v'...../..| +00000000 16 03 03 00 5d 02 00 00 59 03 03 0e 33 06 1f 9d |....]...Y...3...| +00000010 3d 0e 59 21 38 7d 4c ea a2 2a 2a c7 99 7b e9 bf |=.Y!8}L..**..{..| +00000020 61 e2 44 a1 10 5e 5d a1 e4 fd 90 20 c1 f0 1c 8e |a.D..^].... ....| +00000030 00 2f d9 a0 45 23 76 35 e0 01 2e 49 b8 4d b4 76 |./..E#v5...I.M.v| +00000040 08 65 3f cd 8b dc 80 ea fd 31 9f 47 c0 2f 00 00 |.e?......1.G./..| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -63,18 +62,18 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 2d 21 55 |............ -!U| -000002d0 c7 73 14 c1 c8 84 91 4d 16 70 ca 47 46 4a 59 fe |.s.....M.p.GFJY.| -000002e0 20 d8 34 0a 78 8e a3 29 f5 40 38 d9 59 04 01 00 | .4.x..).@8.Y...| -000002f0 80 03 9f da 00 e0 50 28 6b 29 84 9b 96 05 f1 86 |......P(k)......| -00000300 ef f5 6d 9f 17 5f 07 f7 2d 32 af 5e 0d 72 f4 86 |..m.._..-2.^.r..| -00000310 af 7c b9 e8 2d 80 b3 10 80 dd 61 5b e5 a7 53 5a |.|..-.....a[..SZ| -00000320 5e 19 47 5f f1 96 a4 ab d8 e7 65 eb be eb bc 51 |^.G_......e....Q| -00000330 95 6f 29 48 ac cb a7 08 3a b9 45 77 37 30 a3 83 |.o)H....:.Ew70..| -00000340 e4 ef 58 06 0e ec a1 cf 2c 06 62 a8 1c 97 64 ac |..X.....,.b...d.| -00000350 c7 86 13 4c 9b 80 69 d4 89 9c 96 2c f9 20 c6 2c |...L..i....,. .,| -00000360 d2 11 64 ab 8d df c0 ea 1c 73 da ed 10 28 dc 90 |..d......s...(..| -00000370 8a 16 03 03 00 0c 0d 00 00 08 01 01 00 02 04 01 |................| +000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 09 ce 63 |............ ..c| +000002d0 9c 52 37 83 ef 21 78 60 eb 8b dd 22 91 fb 34 4f |.R7..!x`..."..4O| +000002e0 ee 04 ef 48 75 2f 49 7e 3f 0b 00 62 15 04 01 00 |...Hu/I~?..b....| +000002f0 80 a0 11 99 d2 bc a9 fd 59 ad 38 20 bb 44 85 8e |........Y.8 .D..| +00000300 89 35 2e 42 ff a2 87 81 86 f5 e3 6c 9d 84 2a cf |.5.B.......l..*.| +00000310 0d cc 6a c0 ce 31 01 91 48 78 75 23 24 3e 3d 93 |..j..1..Hxu#$>=.| +00000320 bf ad c9 49 9d 63 66 cd 4b cc 92 0f 6d 64 2c 80 |...I.cf.K...md,.| +00000330 71 22 bf 6d 62 8e 8a f7 19 6f 50 2a 86 46 e4 46 |q".mb....oP*.F.F| +00000340 71 73 df 8c 25 84 6f 28 a7 8c bd 78 01 22 a2 91 |qs..%.o(...x."..| +00000350 f4 17 ef 88 55 9d d5 ac 42 5a 8a c8 7a 1b bf d1 |....U...BZ..z...| +00000360 d9 6d 15 42 b9 37 16 7b 2b 3c c7 58 99 da ab 98 |.m.B.7.{+<.X....| +00000370 f3 16 03 03 00 0c 0d 00 00 08 01 01 00 02 04 01 |................| 00000380 00 00 16 03 03 00 04 0e 00 00 00 |...........| >>> Flow 3 (client to server) 00000000 16 03 03 01 fd 0b 00 01 f9 00 01 f6 00 01 f3 30 |...............0| @@ -112,26 +111,26 @@ 00000200 e5 35 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 |.5....%...! /.}.| 00000210 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 |G.bC.(.._.).0...| 00000220 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 16 03 03 00 |......._X.;t....| -00000230 88 0f 00 00 84 04 01 00 80 5e cb 28 a9 f4 b7 f1 |.........^.(....| -00000240 a7 31 a5 51 4c 2d b0 c9 fb 84 0a 77 30 bc 00 72 |.1.QL-.....w0..r| -00000250 66 65 aa 20 78 34 f1 3f 31 93 42 f7 7c 28 23 70 |fe. x4.?1.B.|(#p| -00000260 b6 ad 2a 8f ed 70 2f a8 db ce 69 20 3e 9f 2a 6d |..*..p/...i >.*m| -00000270 1f 32 f8 32 7c 74 c9 2a cd b5 c0 0d 0e 1a 32 d5 |.2.2|t.*......2.| -00000280 ed a3 09 fb 8b ce 1d 30 52 5e ba c2 17 85 f0 c2 |.......0R^......| -00000290 59 e6 db 0c 17 b3 2c 81 cd 1b f1 4c 92 e7 1b 6a |Y.....,....L...j| -000002a0 49 86 50 25 00 59 40 df b2 fd c8 3b 9d c7 2f 57 |I.P%.Y@....;../W| -000002b0 e1 e5 31 91 57 60 f2 b8 e5 14 03 03 00 01 01 16 |..1.W`..........| -000002c0 03 03 00 28 00 00 00 00 00 00 00 00 07 cd 54 b1 |...(..........T.| -000002d0 e3 78 20 90 ca 71 5e 06 f4 32 e9 02 41 60 c1 9d |.x ..q^..2..A`..| -000002e0 d3 c6 42 45 d8 2e fc 3d 07 9a 9d 04 |..BE...=....| +00000230 88 0f 00 00 84 04 01 00 80 01 83 0b 8b bf a3 50 |...............P| +00000240 03 89 e8 24 9b 9e 2e f5 7b 72 58 b1 b1 ba b2 64 |...$....{rX....d| +00000250 9f a9 e2 b4 00 78 79 50 ec 55 18 43 e5 c4 a4 76 |.....xyP.U.C...v| +00000260 c8 21 bc 7e e0 c4 2d 78 85 d7 33 ca d7 4d e0 f1 |.!.~..-x..3..M..| +00000270 cd 6d bd 17 2f a0 b9 39 93 29 ba d7 09 4f bb 08 |.m../..9.)...O..| +00000280 b0 b0 05 f1 83 de d0 db 39 f9 b4 34 a3 ca d3 76 |........9..4...v| +00000290 97 35 f6 ea cd 53 fe bb 94 99 30 e3 a2 0a 29 1a |.5...S....0...).| +000002a0 5f f4 28 0e 8c 80 fc 75 84 a4 e2 3a 29 a9 50 be |_.(....u...:).P.| +000002b0 11 99 bb a5 12 64 5c af 5f 14 03 03 00 01 01 16 |.....d\._.......| +000002c0 03 03 00 28 00 00 00 00 00 00 00 00 8e 51 58 0e |...(.........QX.| +000002d0 1a fd 8e 01 f1 6b 59 94 54 ab 00 be 45 8b 4c ae |.....kY.T...E.L.| +000002e0 70 c3 db 53 de 82 12 6c cb df 32 72 |p..S...l..2r| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 28 75 60 b0 0a 19 |..........(u`...| -00000010 12 ee 0f 5c c2 6a 31 f8 27 e3 53 b1 76 2b 6a 93 |...\.j1.'.S.v+j.| -00000020 a2 37 72 74 e8 e9 c8 e7 94 56 6b d5 a3 49 09 79 |.7rt.....Vk..I.y| -00000030 59 66 34 |Yf4| +00000000 14 03 03 00 01 01 16 03 03 00 28 7b 7f 81 c9 d7 |..........({....| +00000010 1d 3a 32 48 da 92 d6 9f 78 6e 2f d3 e9 7e 9f 12 |.:2H....xn/..~..| +00000020 9b 0b e1 00 e8 2f 4b 63 2c 3d 94 e4 f8 1e 06 7d |...../Kc,=.....}| +00000030 a7 7e 6a |.~j| >>> Flow 5 (client to server) -00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 70 7a 77 |.............pzw| -00000010 14 b3 3d 3e 51 19 5e ae 97 56 bc e8 3c 1c 46 dd |..=>Q.^..V..<.F.| -00000020 67 e6 f5 15 03 03 00 1a 00 00 00 00 00 00 00 02 |g...............| -00000030 50 4b b6 03 84 33 58 6a a1 95 dc 8e ad d1 1f 8b |PK...3Xj........| -00000040 93 ca |..| +00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 ee 21 1b |..............!.| +00000010 45 15 6a 0c 79 12 4d 79 d2 26 db fc e4 da 0f e4 |E.j.y.My.&......| +00000020 20 7e c7 15 03 03 00 1a 00 00 00 00 00 00 00 02 | ~..............| +00000030 2a 46 62 6b 5e c3 14 56 e1 fb d0 61 f5 e8 7b 2f |*Fbk^..V...a..{/| +00000040 cc fd |..| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-RSAPSS b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-RSAPSS index 867ec87afa..646026793f 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-RSAPSS +++ b/src/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-RSAPSS @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 97 c2 4c 45 c0 |....]...Y....LE.| -00000010 22 6a 7d 71 93 1a 71 a7 e1 40 a5 44 5e 39 8a 3e |"j}q..q..@.D^9.>| -00000020 99 04 1f e1 74 ad 3a 64 89 ad 93 20 61 76 9a e1 |....t.:d... av..| -00000030 39 26 af 37 ad ea f2 9c 4c 2e 1b a2 18 0c 73 8e |9&.7....L.....s.| -00000040 5b 8b f0 0f 44 04 80 31 5a 49 39 f0 c0 2f 00 00 |[...D..1ZI9../..| +00000000 16 03 03 00 5d 02 00 00 59 03 03 cd 47 5d a7 66 |....]...Y...G].f| +00000010 aa b1 e1 bd ed 83 bd 3d 4a b7 b2 08 b8 79 08 c5 |.......=J....y..| +00000020 22 7b 8d be fe 55 4c 2d b5 4c b9 20 13 26 2a e6 |"{...UL-.L. .&*.| +00000030 ab 60 4c 53 8c b7 27 c4 d5 12 ff 38 64 b1 a2 1d |.`LS..'....8d...| +00000040 4f a4 c7 28 53 95 01 8f 7e 4a 7b 02 c0 2f 00 00 |O..(S...~J{../..| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 66 0b 00 02 62 00 02 5f 00 02 |......f...b.._..| 00000070 5c 30 82 02 58 30 82 01 8d a0 03 02 01 02 02 11 |\0..X0..........| @@ -64,17 +63,17 @@ 000002a0 fa b1 3f 14 11 89 66 79 d1 8e 88 0e 0b a0 9e 30 |..?...fy.......0| 000002b0 2a c0 67 ef ca 46 02 88 e9 53 81 22 69 22 97 ad |*.g..F...S."i"..| 000002c0 80 93 d4 f7 dd 70 14 24 d7 70 0a 46 a1 16 03 03 |.....p.$.p.F....| -000002d0 00 ac 0c 00 00 a8 03 00 1d 20 ae c6 bf 84 a5 c3 |......... ......| -000002e0 05 6b fa 30 b0 ec b7 c2 ff ec 7d e4 b8 e0 f2 0f |.k.0......}.....| -000002f0 3d 0e ef de 32 ad f2 6e 52 55 08 04 00 80 07 86 |=...2..nRU......| -00000300 e1 b2 04 6e b2 43 09 df c9 20 35 11 3b 0f 10 61 |...n.C... 5.;..a| -00000310 7e 67 cc 65 c6 60 80 c3 43 7d b8 1c 52 e3 09 af |~g.e.`..C}..R...| -00000320 df 38 79 e1 ea 6d b4 6b bc 50 fe a8 6f 46 6f 9c |.8y..m.k.P..oFo.| -00000330 40 1c 6f f2 e5 c6 d9 a4 db 72 24 4a 9c 57 e7 d6 |@.o......r$J.W..| -00000340 91 91 5b 1b f1 40 f2 d9 58 a2 81 4c d7 be 20 d4 |..[..@..X..L.. .| -00000350 12 4f 64 05 e5 ec ba 35 22 a7 fe df c9 ea b3 43 |.Od....5"......C| -00000360 dc 47 29 98 eb c9 92 11 42 a0 80 a4 2a 2e 4d 47 |.G).....B...*.MG| -00000370 73 9e 0f 13 37 79 92 ca db c4 84 db 05 4a 16 03 |s...7y.......J..| +000002d0 00 ac 0c 00 00 a8 03 00 1d 20 a8 94 95 94 cc 16 |......... ......| +000002e0 f1 dc 11 b6 c5 52 b3 fe 95 4d 28 34 1f 2d 87 ec |.....R...M(4.-..| +000002f0 8d 56 51 0e 5b 92 03 f9 60 0d 08 04 00 80 09 3a |.VQ.[...`......:| +00000300 99 39 d8 3f 63 b4 86 12 ba ce e6 6d d6 22 aa d8 |.9.?c......m."..| +00000310 31 60 86 eb 48 cc c0 87 97 a5 0d c7 42 86 cc f8 |1`..H.......B...| +00000320 f7 f9 d5 1a 34 86 ec 41 02 08 99 c2 93 9b d1 b5 |....4..A........| +00000330 57 a4 84 3c a8 93 0a c9 f7 1e a1 33 07 ca 60 c4 |W..<.......3..`.| +00000340 4b 40 32 20 a6 22 3f 6d 4e 28 22 3b 52 70 9a 4d |K@2 ."?mN(";Rp.M| +00000350 fa 84 67 88 ba b5 0d 92 eb 23 94 90 00 e2 68 74 |..g......#....ht| +00000360 5f 13 a3 d4 2d fb 24 f2 32 09 b1 e3 63 15 39 b1 |_...-.$.2...c.9.| +00000370 9e 1e a6 61 fd 8d c6 cf 1f f7 f7 43 0c 64 16 03 |...a.......C.d..| 00000380 03 00 0c 0d 00 00 08 01 01 00 02 08 04 00 00 16 |................| 00000390 03 03 00 04 0e 00 00 00 |........| >>> Flow 3 (client to server) @@ -120,26 +119,26 @@ 00000270 10 00 00 21 20 2f e5 7d a3 47 cd 62 43 15 28 da |...! /.}.G.bC.(.| 00000280 ac 5f bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 |._.).0..........| 00000290 5f 58 cb 3b 74 16 03 03 00 88 0f 00 00 84 08 04 |_X.;t...........| -000002a0 00 80 cb ab 63 1d e6 7e 16 22 27 8b e7 91 f4 5c |....c..~."'....\| -000002b0 66 fc 70 eb f7 e6 9c 86 7c 62 30 1c 78 35 bf 09 |f.p.....|b0.x5..| -000002c0 af d1 5b e3 55 45 98 8d 4c 16 8e 69 cb 8f 45 97 |..[.UE..L..i..E.| -000002d0 6d c4 6a 25 2a 47 43 64 ac 52 12 bd f5 b9 c0 b0 |m.j%*GCd.R......| -000002e0 51 38 e7 d4 c8 a2 9c 35 4b 5b ab 21 76 73 68 fe |Q8.....5K[.!vsh.| -000002f0 d0 7a f2 95 3c 44 3b 55 b0 89 76 3e 42 e1 23 51 |.z..B.#Q| -00000300 29 92 3d 6a df 29 61 ee 52 f5 78 71 97 13 d6 09 |).=j.)a.R.xq....| -00000310 ff 08 7a 5f 9d 20 49 83 2e 84 82 ba 08 69 db ae |..z_. I......i..| -00000320 e2 1b 14 03 03 00 01 01 16 03 03 00 28 00 00 00 |............(...| -00000330 00 00 00 00 00 6a ff 4b 3d c1 06 20 69 ed f0 a8 |.....j.K=.. i...| -00000340 7c ec a7 f8 cc 8e a6 de 2d 5e 50 f7 b2 28 9e 97 ||.......-^P..(..| -00000350 27 35 c3 67 72 |'5.gr| +000002a0 00 80 86 14 3f 28 40 db 2b 02 d6 56 d3 58 d0 77 |....?(@.+..V.X.w| +000002b0 58 f8 a3 25 1f 18 d1 9c 0a d2 56 09 32 59 34 db |X..%......V.2Y4.| +000002c0 d9 2e 0a bf b4 c2 0a 86 ee 6e 29 56 53 aa 82 11 |.........n)VS...| +000002d0 96 6d 86 29 7c 85 a4 71 56 04 71 5f e6 68 3f 3f |.m.)|..qV.q_.h??| +000002e0 71 54 13 a2 22 b4 3e 38 fa c2 96 a4 c4 ab 83 c6 |qT..".>8........| +000002f0 f5 ca 7a ea 2c 8d 62 4d 76 d6 db 9c f0 0e 8c 2a |..z.,.bMv......*| +00000300 38 2f 9d 24 34 f4 33 73 54 a2 44 9a e3 4c 1f a7 |8/.$4.3sT.D..L..| +00000310 ca 49 16 e8 35 29 29 d1 48 95 0a 38 19 64 4c e7 |.I..5)).H..8.dL.| +00000320 0d a5 14 03 03 00 01 01 16 03 03 00 28 00 00 00 |............(...| +00000330 00 00 00 00 00 09 7f fa f5 c5 e5 b1 46 7e 3d e2 |............F~=.| +00000340 d4 51 a7 b8 ae 0a 56 a3 8c 45 40 97 d4 c5 81 4e |.Q....V..E@....N| +00000350 6f 12 50 b3 f6 |o.P..| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 28 e3 2f c4 66 7e |..........(./.f~| -00000010 8f bf 41 2e 56 f3 d1 76 63 f8 c0 b1 86 50 98 a0 |..A.V..vc....P..| -00000020 63 c0 c9 23 68 c5 7c f7 08 17 0a 62 78 a8 3d 86 |c..#h.|....bx.=.| -00000030 5c 1a c6 |\..| +00000000 14 03 03 00 01 01 16 03 03 00 28 0b 0d 27 bb 5f |..........(..'._| +00000010 c5 fa 62 08 8f 7a 24 65 90 bc de be 28 ae a4 e2 |..b..z$e....(...| +00000020 1f ac 18 7a 83 3e 90 bb 76 2f 73 ec 35 ca d3 e7 |...z.>..v/s.5...| +00000030 d8 25 7f |.%.| >>> Flow 5 (client to server) -00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 e9 51 91 |..............Q.| -00000010 f5 cb 2d b9 5e cb b3 52 14 7c e8 18 8f fe b6 ee |..-.^..R.|......| -00000020 7a 41 90 15 03 03 00 1a 00 00 00 00 00 00 00 02 |zA..............| -00000030 d3 5f c1 e2 f5 12 40 c0 4c 1d ab ef 16 3a af 19 |._....@.L....:..| -00000040 30 59 |0Y| +00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 a7 07 a5 |................| +00000010 b5 4c 26 d0 d1 6b 52 10 8f 7c 3a 4c 31 ce 74 fa |.L&..kR..|:L1.t.| +00000020 4a c7 9b 15 03 03 00 1a 00 00 00 00 00 00 00 02 |J...............| +00000030 22 22 5a b9 ef 4f 05 9f 2e 1e 9c 11 e1 6c 0b 1e |""Z..O.......l..| +00000040 bd 10 |..| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES index a17b1860e3..6268dbcc7a 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES +++ b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 be 37 6c 0c 68 |....]...Y...7l.h| -00000010 bd 81 e4 4e 28 fa 5d 2c 03 8d 17 7a 47 b8 de 89 |...N(.],...zG...| -00000020 3d 06 71 dd 40 c0 70 c1 a8 3d 00 20 22 7e 4c f8 |=.q.@.p..=. "~L.| -00000030 1c 6b 13 c4 12 46 d3 de c4 88 2e 41 c3 d7 df 10 |.k...F.....A....| -00000040 23 aa 30 b1 34 a5 7b c9 03 fb d8 3e c0 09 00 00 |#.0.4.{....>....| +00000000 16 03 03 00 5d 02 00 00 59 03 03 61 e9 cc eb 72 |....]...Y..a...r| +00000010 7c 11 18 0e 9d 6b 72 e9 be 84 f3 92 8d 5f e6 4c ||....kr......_.L| +00000020 ec 9e f0 00 ca 00 6f af 90 5b de 20 29 97 82 6d |......o..[. )..m| +00000030 57 ac 60 59 41 1d bb 29 b1 12 a4 ac 60 18 3b 51 |W.`YA..)....`.;Q| +00000040 af 5c e7 80 1a dc 9d 72 ed 3a 74 96 c0 09 00 00 |.\.....r.:t.....| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 0e 0b 00 02 0a 00 02 07 00 02 |................| 00000070 04 30 82 02 00 30 82 01 62 02 09 00 b8 bf 2d 47 |.0...0..b.....-G| @@ -58,39 +57,39 @@ 00000240 8c 25 c1 33 13 83 0d 94 06 bb d4 37 7a f6 ec 7a |.%.3.......7z..z| 00000250 c9 86 2e dd d7 11 69 7f 85 7c 56 de fb 31 78 2b |......i..|V..1x+| 00000260 e4 c7 78 0d ae cb be 9e 4e 36 24 31 7b 6a 0f 39 |..x.....N6$1{j.9| -00000270 95 12 07 8f 2a 16 03 03 00 b6 0c 00 00 b2 03 00 |....*...........| -00000280 1d 20 47 dc 78 14 d8 57 a7 37 29 1a 49 f6 07 09 |. G.x..W.7).I...| -00000290 37 49 df 36 32 a1 e2 c9 67 e3 9c 40 ed f5 ac ea |7I.62...g..@....| -000002a0 c2 34 04 03 00 8a 30 81 87 02 41 14 f9 1f 8e 3d |.4....0...A....=| -000002b0 b6 d9 91 86 b0 b2 94 dd 14 89 47 b7 a5 2b d3 3a |..........G..+.:| -000002c0 b9 f8 ef 4c ae 5c 26 74 e8 c1 c5 18 f1 e5 cd 3f |...L.\&t.......?| -000002d0 4e 70 45 64 3b 53 14 b7 f7 86 bf d1 ee 3b cd ab |NpEd;S.......;..| -000002e0 cf 3a bd 12 c7 1e 89 fb 60 bf 34 be 02 42 01 7c |.:......`.4..B.|| -000002f0 7b 7b 03 94 f9 1b 70 4c 25 3c c5 11 2c 1b e0 39 |{{....pL%<..,..9| -00000300 6c ee d1 11 0e 73 82 97 06 c9 eb 92 44 cb 78 66 |l....s......D.xf| -00000310 7c 9e 93 70 79 08 3e 20 90 ef 4b 9b 73 75 80 d4 ||..py.> ..K.su..| -00000320 68 68 f0 06 b1 e8 d8 92 22 e0 07 a7 78 e7 e2 19 |hh......"...x...| -00000330 16 03 03 00 04 0e 00 00 00 |.........| +00000270 95 12 07 8f 2a 16 03 03 00 b7 0c 00 00 b3 03 00 |....*...........| +00000280 1d 20 88 7d 69 d3 1b 2d b5 dd 4e 0a f4 98 f3 8c |. .}i..-..N.....| +00000290 42 d7 ee e2 7c 28 dc f2 75 ec b0 9e ca ad cb 21 |B...|(..u......!| +000002a0 59 34 04 03 00 8b 30 81 88 02 42 01 32 2c 84 f3 |Y4....0...B.2,..| +000002b0 d8 7c 05 58 ac d0 25 46 42 11 b4 7c 0a cb ee 83 |.|.X..%FB..|....| +000002c0 7f 68 36 b6 be f8 d2 0a 8d d7 bc 8a 95 d8 2d b3 |.h6...........-.| +000002d0 fa 87 56 ae 4c 01 3f bf 29 d1 81 c1 5d e9 f0 93 |..V.L.?.)...]...| +000002e0 f6 32 91 e7 da 18 84 dd 8d a4 94 3f 81 02 42 01 |.2.........?..B.| +000002f0 70 96 e1 3c c9 aa b8 72 8d 8e 13 68 00 50 65 9c |p..<...r...h.Pe.| +00000300 cf c6 1e 5f 5a d0 80 e8 8b ff 24 df a9 55 42 d9 |..._Z.....$..UB.| +00000310 75 83 67 d7 20 69 f1 29 2d 15 f4 83 f9 ff 3d c8 |u.g. i.)-.....=.| +00000320 0e 79 a9 3e 86 38 4a c5 a2 93 f1 47 a2 43 41 a5 |.y.>.8J....G.CA.| +00000330 bb 16 03 03 00 04 0e 00 00 00 |..........| >>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| 00000030 16 03 03 00 40 00 00 00 00 00 00 00 00 00 00 00 |....@...........| -00000040 00 00 00 00 00 27 23 d3 72 40 80 76 5c b6 7a fd |.....'#.r@.v\.z.| -00000050 bf 45 9e 33 76 d1 3d 1b 77 23 90 ed 75 7b aa 91 |.E.3v.=.w#..u{..| -00000060 f2 8e e7 b1 bb 69 86 84 b2 b5 40 2c 4a 1d f9 cf |.....i....@,J...| -00000070 3e de fe 39 36 |>..96| +00000040 00 00 00 00 00 84 08 13 72 05 4e a7 cb ac c1 40 |........r.N....@| +00000050 9e 31 9c a4 8f 7f f1 41 c6 63 19 39 3d d4 27 74 |.1.....A.c.9=.'t| +00000060 f9 5c 59 88 15 c3 e2 a7 6a 6f 6d fb 52 6f 94 36 |.\Y.....jom.Ro.6| +00000070 1e 8d 47 50 db |..GP.| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 40 54 e0 6f 57 aa |..........@T.oW.| -00000010 e7 14 b0 06 69 45 42 ee 6c ce a7 0b a7 27 94 83 |....iEB.l....'..| -00000020 cd 63 81 19 ac 06 1b 9f 78 86 5b 04 82 40 e7 41 |.c......x.[..@.A| -00000030 f1 df 17 26 8a b4 1c f1 59 ca 43 6b 13 f8 d7 8b |...&....Y.Ck....| -00000040 4e ce 28 cd d2 9b ca c6 42 04 e6 |N.(.....B..| +00000000 14 03 03 00 01 01 16 03 03 00 40 9f 65 82 54 e1 |..........@.e.T.| +00000010 50 68 92 33 d1 f2 a1 1d 95 81 e1 df c3 b2 4c 9b |Ph.3..........L.| +00000020 f4 8d ee b2 4b 43 2f e9 e3 af 60 ae d4 4c 7a 4b |....KC/...`..LzK| +00000030 f5 03 22 f0 11 58 de 4d ac 46 5a bf 98 da 01 1d |.."..X.M.FZ.....| +00000040 fa 19 ad a6 48 66 fa c1 25 4b a0 |....Hf..%K.| >>> Flow 5 (client to server) 00000000 17 03 03 00 30 00 00 00 00 00 00 00 00 00 00 00 |....0...........| -00000010 00 00 00 00 00 d7 38 5f c6 c8 c8 c0 2e fc 08 d7 |......8_........| -00000020 40 aa 3d 6a 90 75 2f 90 c4 33 d9 a8 50 db 57 f6 |@.=j.u/..3..P.W.| -00000030 3e 4d 03 c8 b0 15 03 03 00 30 00 00 00 00 00 00 |>M.......0......| -00000040 00 00 00 00 00 00 00 00 00 00 bf 0d 85 fb 60 57 |..............`W| -00000050 02 4a 5f 95 9e 6b 00 6e 6e e6 a9 3e 6d fd 62 b9 |.J_..k.nn..>m.b.| -00000060 79 d3 5e e2 63 cd 3b f1 a8 0d |y.^.c.;...| +00000010 00 00 00 00 00 b3 26 24 39 5d 7c fc 25 23 ee fc |......&$9]|.%#..| +00000020 3a 6a 38 08 f5 bf 5e cc dc 34 83 1f 5e af b0 b4 |:j8...^..4..^...| +00000030 ee 34 fc f5 e1 15 03 03 00 30 00 00 00 00 00 00 |.4.......0......| +00000040 00 00 00 00 00 00 00 00 00 00 84 b2 cc 06 95 78 |...............x| +00000050 de 1d a0 cc d3 15 32 b7 89 74 8d 99 70 13 37 c3 |......2..t..p.7.| +00000060 e2 99 6e fe 8c 2d 69 77 cc 93 |..n..-iw..| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES-GCM b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES-GCM index 93bdcc53b2..e235f27b75 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES-GCM +++ b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES-GCM @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 a7 4e f4 80 a2 |....]...Y...N...| -00000010 78 28 eb 69 72 3a 45 21 e6 dd 67 7c a4 64 70 97 |x(.ir:E!..g|.dp.| -00000020 51 60 f1 e3 27 16 b2 08 54 2d 78 20 07 7c ed b5 |Q`..'...T-x .|..| -00000030 dd aa 68 7a a6 8b 85 3d 49 be e4 78 ac 47 b1 02 |..hz...=I..x.G..| -00000040 15 35 ea f2 db 4b 03 f3 29 f3 d1 87 c0 2b 00 00 |.5...K..)....+..| +00000000 16 03 03 00 5d 02 00 00 59 03 03 ac 28 cc 34 03 |....]...Y...(.4.| +00000010 c8 91 48 22 79 a2 98 74 e4 55 df 72 6b 41 cb 40 |..H"y..t.U.rkA.@| +00000020 58 ba 04 93 e7 f3 1c 8e 0a 19 d1 20 98 93 cb 7c |X.......... ...|| +00000030 a3 57 a1 c7 ca 19 13 5c e1 ac c4 44 17 30 cb a3 |.W.....\...D.0..| +00000040 b2 83 81 90 82 1d 37 c3 71 ae b8 45 c0 2b 00 00 |......7.q..E.+..| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 0e 0b 00 02 0a 00 02 07 00 02 |................| 00000070 04 30 82 02 00 30 82 01 62 02 09 00 b8 bf 2d 47 |.0...0..b.....-G| @@ -59,33 +58,33 @@ 00000250 c9 86 2e dd d7 11 69 7f 85 7c 56 de fb 31 78 2b |......i..|V..1x+| 00000260 e4 c7 78 0d ae cb be 9e 4e 36 24 31 7b 6a 0f 39 |..x.....N6$1{j.9| 00000270 95 12 07 8f 2a 16 03 03 00 b6 0c 00 00 b2 03 00 |....*...........| -00000280 1d 20 26 c9 de 9d 39 5a 31 f1 7c 95 e8 c4 13 8f |. &...9Z1.|.....| -00000290 a7 ac 82 75 12 ac 50 ad 15 41 c9 e8 92 24 1a d1 |...u..P..A...$..| -000002a0 c8 2b 04 03 00 8a 30 81 87 02 41 15 01 bf f7 9b |.+....0...A.....| -000002b0 94 32 92 67 13 9a c6 f5 31 f8 42 67 a3 74 79 24 |.2.g....1.Bg.ty$| -000002c0 55 e5 d3 f4 14 e1 3e 5e ac 65 8c 28 48 d5 ee 05 |U.....>^.e.(H...| -000002d0 d0 12 96 5b 8f 14 30 fa ce e7 19 ee f0 38 86 c2 |...[..0......8..| -000002e0 f4 32 0a 0c d9 7d 9e 40 9b 11 a4 0e 02 42 00 fb |.2...}.@.....B..| -000002f0 c7 0f 07 f9 87 f7 ea af 30 3a 04 e7 6a 89 3f bd |........0:..j.?.| -00000300 39 3f 20 0e b5 b0 aa 5f 29 ea c4 69 22 fb 38 9f |9? ...._)..i".8.| -00000310 35 e1 35 a6 80 86 2d eb bc bf 01 e9 56 78 ca 21 |5.5...-.....Vx.!| -00000320 68 a3 01 07 3c 9e 7f c2 9a 11 3d ef b7 ce 6e 02 |h...<.....=...n.| +00000280 1d 20 40 9c d1 ec 0a 11 08 c3 fa a0 33 80 00 62 |. @.........3..b| +00000290 5b 65 59 c6 4f 4e 32 8a 79 fc df 63 2f ee f6 59 |[eY.ON2.y..c/..Y| +000002a0 40 4a 04 03 00 8a 30 81 87 02 41 39 af 63 7a fa |@J....0...A9.cz.| +000002b0 dc e3 40 85 19 9d 1b 8f ca 55 26 e4 00 a1 f5 01 |..@......U&.....| +000002c0 73 e6 b5 6f ab bb c3 f3 b4 e0 c2 a1 33 37 ae ec |s..o........37..| +000002d0 e7 90 f6 dd b4 a4 c8 f1 3c 51 67 94 c1 ee d7 f3 |........>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| -00000030 16 03 03 00 28 00 00 00 00 00 00 00 00 32 28 d6 |....(........2(.| -00000040 94 ba 29 2f 2b 40 56 07 0b fd a7 ce a7 79 94 b6 |..)/+@V......y..| -00000050 f6 e4 dd eb a6 23 f3 97 8c 1f c6 a5 52 |.....#......R| +00000030 16 03 03 00 28 00 00 00 00 00 00 00 00 50 16 81 |....(........P..| +00000040 fe 51 5b ac de d7 31 1b 9a 09 4f 1e d4 de a4 af |.Q[...1...O.....| +00000050 c9 62 5d 38 85 23 84 8c ae 4f 55 5d 0d |.b]8.#...OU].| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 28 73 67 36 43 96 |..........(sg6C.| -00000010 59 15 59 7a dd 3c 3f d5 88 bf 55 e1 cb d0 41 10 |Y.Yz....,......^30i| +00000020 3c d9 55 8b e4 14 e2 0e 3a f9 89 39 fc a7 89 70 |<.U.....:..9...p| +00000030 58 16 44 |X.D| >>> Flow 5 (client to server) -00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 31 23 80 |.............1#.| -00000010 a4 01 5a f9 7c 3b fc 2f 4d 70 4e 4f 8f 69 fc 99 |..Z.|;./MpNO.i..| -00000020 d4 7a a7 15 03 03 00 1a 00 00 00 00 00 00 00 02 |.z..............| -00000030 37 75 3a 5a 6c d8 5a fd 0d cf 1f 88 67 2c 48 89 |7u:Zl.Z.....g,H.| -00000040 6c 9e |l.| +00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 0b 26 61 |..............&a| +00000010 e6 d8 6a 6d db c6 2d 8a c3 8e f4 17 1a f7 8e f3 |..jm..-.........| +00000020 ce 04 ce 15 03 03 00 1a 00 00 00 00 00 00 00 02 |................| +00000030 fa f7 0a 81 bb 8d 83 f3 82 05 ee 26 69 22 90 b2 |...........&i"..| +00000040 bb b1 |..| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES128-SHA256 b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES128-SHA256 index eed1e965d1..f81845ab3d 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES128-SHA256 +++ b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES128-SHA256 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 83 27 64 12 65 |....]...Y...'d.e| -00000010 ed df dd 5e 6c 79 e4 7b fe fd 05 26 e0 c8 5a ca |...^ly.{...&..Z.| -00000020 fa 08 c2 2a 78 e1 65 33 b3 b9 82 20 01 95 06 02 |...*x.e3... ....| -00000030 41 f4 d7 e9 64 9a a8 91 df dc 15 d0 87 02 28 7c |A...d.........(|| -00000040 e2 75 8c 94 a3 0f 20 19 e6 e8 c4 b7 c0 23 00 00 |.u.... ......#..| +00000000 16 03 03 00 5d 02 00 00 59 03 03 be 62 2f ca 91 |....]...Y...b/..| +00000010 8b 79 1d ce e3 3f 2e 37 bc 74 da c8 7d de a5 85 |.y...?.7.t..}...| +00000020 58 c8 04 55 4e c6 51 f2 18 60 33 20 2f 33 8b c1 |X..UN.Q..`3 /3..| +00000030 b6 be 54 3e 3f 78 12 1b d9 d0 db 71 fa 0c ee f9 |..T>?x.....q....| +00000040 60 fb 49 08 a1 83 a4 f6 22 e8 dc 2c c0 23 00 00 |`.I....."..,.#..| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 0e 0b 00 02 0a 00 02 07 00 02 |................| 00000070 04 30 82 02 00 30 82 01 62 02 09 00 b8 bf 2d 47 |.0...0..b.....-G| @@ -58,43 +57,43 @@ 00000240 8c 25 c1 33 13 83 0d 94 06 bb d4 37 7a f6 ec 7a |.%.3.......7z..z| 00000250 c9 86 2e dd d7 11 69 7f 85 7c 56 de fb 31 78 2b |......i..|V..1x+| 00000260 e4 c7 78 0d ae cb be 9e 4e 36 24 31 7b 6a 0f 39 |..x.....N6$1{j.9| -00000270 95 12 07 8f 2a 16 03 03 00 b5 0c 00 00 b1 03 00 |....*...........| -00000280 1d 20 69 77 9a 39 8f bb af a5 cd 5e 60 af f9 6a |. iw.9.....^`..j| -00000290 dc e7 2a 36 a9 bc 47 e1 fa 2d 3f a6 91 1e 6f ae |..*6..G..-?...o.| -000002a0 43 01 04 03 00 89 30 81 86 02 41 01 b7 fa da 05 |C.....0...A.....| -000002b0 7c 23 3c b6 32 ea 79 ea 7c 48 62 62 c1 af 4c ff ||#<.2.y.|Hbb..L.| -000002c0 3f 1f e6 11 a5 8e 78 76 f6 40 d3 27 a1 24 87 90 |?.....xv.@.'.$..| -000002d0 14 5b 66 75 31 00 0a 97 f8 98 25 af 3c 59 39 a9 |.[fu1.....%.+| +000002b0 e8 b6 0b c9 76 80 60 6f 9a c5 4c 6e 7c d8 53 00 |....v.`o..Ln|.S.| +000002c0 56 c7 f9 37 36 32 2d dc 82 d8 0c 67 7a 96 5c 34 |V..762-....gz.\4| +000002d0 db 10 71 4e f4 29 e0 20 84 01 09 9a dc 74 76 39 |..qN.). .....tv9| +000002e0 63 e3 b2 c5 b4 7b cc 20 92 77 f1 3b a0 02 41 5d |c....{. .w.;..A]| +000002f0 36 ae 86 8c 27 7f 9e 0d 17 8e 16 48 20 2a 43 ac |6...'......H *C.| +00000300 d4 ce c6 9b 6a 95 47 5a 47 5c 13 b6 eb db 0b a6 |....j.GZG\......| +00000310 fa 23 fe 0c 76 e0 a9 b2 97 76 02 ff 68 3d 68 c5 |.#..v....v..h=h.| +00000320 17 08 54 25 1a 22 c0 a3 06 bd a3 f6 7c 68 07 9e |..T%."......|h..| +00000330 16 03 03 00 04 0e 00 00 00 |.........| >>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| 00000030 16 03 03 00 50 00 00 00 00 00 00 00 00 00 00 00 |....P...........| -00000040 00 00 00 00 00 1b 00 be 75 a8 f7 e4 b6 76 b2 7c |........u....v.|| -00000050 30 bb 35 a2 e0 d1 ea 35 83 6d 05 6b 29 0f 4e 80 |0.5....5.m.k).N.| -00000060 26 16 53 96 67 8e 71 ed 4a 32 1a 9f f3 8d de 34 |&.S.g.q.J2.....4| -00000070 cb d4 b4 11 c8 7d 05 36 21 87 2b ae 33 92 d3 16 |.....}.6!.+.3...| -00000080 1c b6 3b a3 6d |..;.m| +00000040 00 00 00 00 00 27 1a a1 cf 9d f5 8f 91 e4 7f dc |.....'..........| +00000050 2f 81 3f 1e 3a c3 40 21 c2 6d dd dd 8f f6 9c 4b |/.?.:.@!.m.....K| +00000060 0b da 8d 10 f6 83 da 35 bb b9 a4 bf 2f 29 27 a5 |.......5..../)'.| +00000070 12 52 6a 74 6e 15 8d 82 cf 86 df f0 52 26 32 ca |.Rjtn.......R&2.| +00000080 02 91 8c 03 f7 |.....| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 50 c0 c8 04 54 26 |..........P...T&| -00000010 72 7d 0d a5 86 d5 92 7b 09 73 02 62 37 7a 86 6f |r}.....{.s.b7z.o| -00000020 5b 31 1f 28 42 3c 98 2b 08 20 03 55 c0 d6 bd 62 |[1.(B<.+. .U...b| -00000030 8b c4 18 57 f1 d8 51 ef f1 93 6b 70 af 72 95 06 |...W..Q...kp.r..| -00000040 77 91 b5 37 b3 31 73 a4 a3 fb bb 63 9d 41 45 30 |w..7.1s....c.AE0| -00000050 b4 07 43 8a 74 44 83 16 50 22 a0 |..C.tD..P".| +00000000 14 03 03 00 01 01 16 03 03 00 50 1f 1c 35 9b 6c |..........P..5.l| +00000010 a8 9f 58 0d bf 0f db b5 91 c6 74 de b1 b7 68 b6 |..X.......t...h.| +00000020 05 0d 39 68 87 7d b3 b0 8b 86 15 67 ba 7e 54 0c |..9h.}.....g.~T.| +00000030 0d 4f 6e f3 ad d8 27 e8 1d fa 43 31 be 30 67 d2 |.On...'...C1.0g.| +00000040 bc 0a 30 37 78 3e 30 62 bf 81 2e 53 da b3 88 73 |..07x>0b...S...s| +00000050 17 42 79 ee ef 0e d3 3c 87 c8 85 |.By....<...| >>> Flow 5 (client to server) 00000000 17 03 03 00 40 00 00 00 00 00 00 00 00 00 00 00 |....@...........| -00000010 00 00 00 00 00 ba c5 0e 9d f6 a1 64 f9 13 fa aa |...........d....| -00000020 07 1f cb d1 b6 f3 42 11 ac 2e aa 08 a4 f6 67 9e |......B.......g.| -00000030 1d d9 35 6a 70 85 24 25 aa b0 f3 13 87 fd 9e d5 |..5jp.$%........| -00000040 69 60 88 bc 5c 15 03 03 00 40 00 00 00 00 00 00 |i`..\....@......| -00000050 00 00 00 00 00 00 00 00 00 00 41 86 ed 8a 40 26 |..........A...@&| -00000060 39 b4 bf 47 01 bf a9 9c df 12 07 f0 dc 64 2f 5b |9..G.........d/[| -00000070 1e 44 94 78 85 b7 d8 92 f1 d4 d6 a7 d2 39 b5 3f |.D.x.........9.?| -00000080 f9 e0 78 d6 40 61 c9 4e b0 32 |..x.@a.N.2| +00000010 00 00 00 00 00 2c 39 43 06 0a c3 81 10 24 e8 bb |.....,9C.....$..| +00000020 de b8 74 00 a9 a3 ab 9a 2a a7 8a 0e 62 b8 2a 23 |..t.....*...b.*#| +00000030 10 46 1b 76 dc a7 81 2d 37 2e e8 5f b5 75 5e 65 |.F.v...-7.._.u^e| +00000040 73 11 ef 71 16 15 03 03 00 40 00 00 00 00 00 00 |s..q.....@......| +00000050 00 00 00 00 00 00 00 00 00 00 a5 24 00 67 c6 ae |...........$.g..| +00000060 7f 05 91 ab 17 c9 ea eb 5a f8 8f 07 f3 e5 9b 9c |........Z.......| +00000070 20 41 63 21 69 3e f1 bb 66 7e 0b 3d c0 0a 14 b1 | Ac!i>..f~.=....| +00000080 a3 de 2e d9 10 23 37 84 4d 88 |.....#7.M.| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES256-GCM-SHA384 b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES256-GCM-SHA384 index 2a1b29189c..bf3f019260 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES256-GCM-SHA384 +++ b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES256-GCM-SHA384 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 77 69 ed c9 15 |....]...Y..wi...| -00000010 48 74 3a b5 29 8b 17 d7 88 88 33 ac 7d 5e b2 c1 |Ht:.).....3.}^..| -00000020 73 a8 e2 4c 5e 66 a6 07 54 57 0e 20 9f b9 f0 03 |s..L^f..TW. ....| -00000030 74 51 4a bc 23 0b 4c 6d e3 09 8a d9 1f 09 68 33 |tQJ.#.Lm......h3| -00000040 d7 13 a7 7a 8e 34 73 73 97 32 a6 02 c0 2c 00 00 |...z.4ss.2...,..| +00000000 16 03 03 00 5d 02 00 00 59 03 03 45 43 2c 7b 07 |....]...Y..EC,{.| +00000010 6e 76 10 6b f3 9c 7c 2e b8 c9 6b 8d a0 b6 7b be |nv.k..|...k...{.| +00000020 79 7a 52 ab 8d f8 c6 cb 00 f6 48 20 a3 a7 3c ca |yzR.......H ..<.| +00000030 d7 57 be c7 6e 45 d6 75 c1 70 e0 86 1e 58 14 a3 |.W..nE.u.p...X..| +00000040 b4 7d 78 2c ca 82 2f 38 b8 96 ef c4 c0 2c 00 00 |.}x,../8.....,..| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 0e 0b 00 02 0a 00 02 07 00 02 |................| 00000070 04 30 82 02 00 30 82 01 62 02 09 00 b8 bf 2d 47 |.0...0..b.....-G| @@ -58,34 +57,34 @@ 00000240 8c 25 c1 33 13 83 0d 94 06 bb d4 37 7a f6 ec 7a |.%.3.......7z..z| 00000250 c9 86 2e dd d7 11 69 7f 85 7c 56 de fb 31 78 2b |......i..|V..1x+| 00000260 e4 c7 78 0d ae cb be 9e 4e 36 24 31 7b 6a 0f 39 |..x.....N6$1{j.9| -00000270 95 12 07 8f 2a 16 03 03 00 b6 0c 00 00 b2 03 00 |....*...........| -00000280 1d 20 a4 6e f2 07 14 a1 e4 02 87 6c 49 4e bf 77 |. .n.......lIN.w| -00000290 c0 d9 85 13 9a 65 b7 a7 27 d7 1c 34 c4 91 bc fb |.....e..'..4....| -000002a0 ef 31 04 03 00 8a 30 81 87 02 42 00 8f a1 f7 fa |.1....0...B.....| -000002b0 18 35 a7 14 ed 02 80 4d 12 bd 07 91 5c b1 e0 8f |.5.....M....\...| -000002c0 c8 74 e9 37 04 56 96 8a f3 57 42 a0 53 18 45 ad |.t.7.V...WB.S.E.| -000002d0 1d 90 27 fb 75 f8 d2 df e2 e7 ad b5 98 f1 b2 88 |..'.u...........| -000002e0 d9 e0 9d 46 fb 53 6d 5a 95 31 75 a4 1e 02 41 3f |...F.SmZ.1u...A?| -000002f0 63 12 d6 e0 8a 92 81 7d 93 fe f6 98 5a a7 75 13 |c......}....Z.u.| -00000300 be 4e 31 8c b0 ee a7 41 82 fe b4 05 01 69 7f 61 |.N1....A.....i.a| -00000310 65 41 d3 9e 59 37 03 e9 e0 4b 18 88 a5 67 d2 c1 |eA..Y7...K...g..| -00000320 83 22 3a 09 88 c0 6e b7 e5 a4 c3 e8 ce d9 3c cc |.":...n.......<.| -00000330 16 03 03 00 04 0e 00 00 00 |.........| +00000270 95 12 07 8f 2a 16 03 03 00 b5 0c 00 00 b1 03 00 |....*...........| +00000280 1d 20 2c 21 c0 1d 0f 62 0d 25 60 02 a2 5f 10 5b |. ,!...b.%`.._.[| +00000290 68 fb b8 74 a5 2f 33 d6 1e 3f 05 43 19 6d 1c 74 |h..t./3..?.C.m.t| +000002a0 ce 5b 04 03 00 89 30 81 86 02 41 4c 6b 04 c2 3f |.[....0...ALk..?| +000002b0 98 87 0d 54 5a d5 1f 4c 77 1b b6 e5 f8 1f 35 29 |...TZ..Lw.....5)| +000002c0 e9 72 13 34 ba f8 f9 b3 0f 49 ed b5 69 bd 03 3e |.r.4.....I..i..>| +000002d0 10 7d a5 0f 7a aa a6 c5 e0 48 24 2a 61 85 17 5d |.}..z....H$*a..]| +000002e0 ac 93 35 47 41 60 f6 3b d6 41 32 20 02 41 02 4b |..5GA`.;.A2 .A.K| +000002f0 b7 28 37 9d 5d f3 fe 87 7b 13 9a 71 b0 59 7b f0 |.(7.]...{..q.Y{.| +00000300 50 e2 87 aa 9a ef 0e e8 47 bd 85 60 d5 41 32 00 |P.......G..`.A2.| +00000310 aa 26 e4 f3 c9 4c 9d df 6c dc 6a de 2b fc 76 b2 |.&...L..l.j.+.v.| +00000320 99 28 41 1c d3 04 a2 e0 71 92 41 97 0a b3 4b 16 |.(A.....q.A...K.| +00000330 03 03 00 04 0e 00 00 00 |........| >>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| -00000030 16 03 03 00 28 00 00 00 00 00 00 00 00 dd 37 75 |....(.........7u| -00000040 d9 75 19 9e aa 4b dd 1e c7 af 7f 26 e2 72 30 92 |.u...K.....&.r0.| -00000050 70 68 97 ce 03 e3 a2 99 9a 85 1a c8 09 |ph...........| +00000030 16 03 03 00 28 00 00 00 00 00 00 00 00 5a b1 f1 |....(........Z..| +00000040 5a c2 32 50 dd 2b 6c 8a 0b de b7 04 cd 69 de 3a |Z.2P.+l......i.:| +00000050 45 3c 72 94 80 e2 f6 6c 66 98 c3 2d 4d |E>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 28 f2 ba 40 ec e3 |..........(..@..| -00000010 77 30 c8 b1 b3 3f 97 f1 28 3b 59 26 2c a0 d3 19 |w0...?..(;Y&,...| -00000020 4a bd d3 f1 5d e3 6c 62 56 ee 75 75 05 05 3c 1c |J...].lbV.uu..<.| -00000030 17 98 0a |...| +00000000 14 03 03 00 01 01 16 03 03 00 28 be d2 0b b0 a2 |..........(.....| +00000010 ac 18 1e dc 59 4f b4 85 be 3a 81 bd 73 51 47 35 |....YO...:..sQG5| +00000020 b3 2b b2 84 45 3a 08 11 a3 40 13 0e 5d ef 4b 26 |.+..E:...@..].K&| +00000030 9d e6 83 |...| >>> Flow 5 (client to server) -00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 0b bc a8 |................| -00000010 12 42 1b c7 8e a4 e9 26 65 4d 89 d6 e1 f0 33 67 |.B.....&eM....3g| -00000020 5a 29 8c 15 03 03 00 1a 00 00 00 00 00 00 00 02 |Z)..............| -00000030 42 d5 85 47 7f 6e b0 ad 23 13 74 44 84 75 4b 85 |B..G.n..#.tD.uK.| -00000040 22 3a |":| +00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 0f 8d 3a |...............:| +00000010 5b dd b2 49 18 84 73 e7 a5 c0 46 c0 ad fa cc 44 |[..I..s...F....D| +00000020 60 0d 8c 15 03 03 00 1a 00 00 00 00 00 00 00 02 |`...............| +00000030 f6 4c c6 95 ff e5 01 3a 3b a9 46 23 f3 bc 24 29 |.L.....:;.F#..$)| +00000040 6d 52 |mR| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-CHACHA20-POLY1305 b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-CHACHA20-POLY1305 index 3cea374342..db53e96a01 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-CHACHA20-POLY1305 +++ b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-CHACHA20-POLY1305 @@ -1,26 +1,26 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 f2 01 00 00 ee 03 03 00 00 00 00 00 |................| +00000000 16 03 01 00 ee 01 00 00 ea 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 08 cc a9 |................| -00000050 13 03 13 01 13 02 01 00 00 9d 00 0b 00 02 01 00 |................| +00000050 13 03 13 01 13 02 01 00 00 99 00 0b 00 02 01 00 |................| 00000060 ff 01 00 01 00 00 17 00 00 00 12 00 00 00 05 00 |................| 00000070 05 01 00 00 00 00 00 0a 00 0a 00 08 00 1d 00 17 |................| -00000080 00 18 00 19 00 0d 00 1a 00 18 08 04 04 03 08 07 |................| -00000090 08 05 08 06 04 01 05 01 06 01 05 03 06 03 02 01 |................| -000000a0 02 03 00 32 00 1a 00 18 08 04 04 03 08 07 08 05 |...2............| -000000b0 08 06 04 01 05 01 06 01 05 03 06 03 02 01 02 03 |................| -000000c0 00 2b 00 09 08 03 04 03 03 03 02 03 01 00 33 00 |.+............3.| -000000d0 26 00 24 00 1d 00 20 2f e5 7d a3 47 cd 62 43 15 |&.$... /.}.G.bC.| -000000e0 28 da ac 5f bb 29 07 30 ff f6 84 af c4 cf c2 ed |(.._.).0........| -000000f0 90 99 5f 58 cb 3b 74 |.._X.;t| +00000080 00 18 00 19 00 0d 00 16 00 14 08 04 04 03 08 07 |................| +00000090 08 05 08 06 04 01 05 01 06 01 05 03 06 03 00 32 |...............2| +000000a0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000b0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| +000000c0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| +000000d0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| +000000e0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| +000000f0 cb 3b 74 |.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 32 3b b0 38 26 |....]...Y..2;.8&| -00000010 a2 4b 38 02 83 42 af 10 77 e7 6b a9 d6 e7 ac c8 |.K8..B..w.k.....| -00000020 69 ba 70 cb f8 de 6d 28 a9 b5 40 20 9f f0 a4 35 |i.p...m(..@ ...5| -00000030 3e eb cf 99 5a 69 6c 0c 9d 45 21 ca fe e7 03 52 |>...Zil..E!....R| -00000040 39 66 c5 90 1f 75 57 9d 03 51 3b 21 cc a9 00 00 |9f...uW..Q;!....| +00000000 16 03 03 00 5d 02 00 00 59 03 03 74 9e c0 76 74 |....]...Y..t..vt| +00000010 c1 54 da a1 cf ad 75 4c fe 91 3b e2 06 e9 fb 1a |.T....uL..;.....| +00000020 9c 69 ee bf 30 1f 5c 0c 92 ca 58 20 a9 bb 64 3d |.i..0.\...X ..d=| +00000030 1e 8a 19 db 31 25 15 f2 65 5a 78 ad 7e d2 98 90 |....1%..eZx.~...| +00000040 8a 8b 0f 0e 77 53 db a2 93 b4 76 6d cc a9 00 00 |....wS....vm....| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 0e 0b 00 02 0a 00 02 07 00 02 |................| 00000070 04 30 82 02 00 30 82 01 62 02 09 00 b8 bf 2d 47 |.0...0..b.....-G| @@ -55,32 +55,32 @@ 00000240 8c 25 c1 33 13 83 0d 94 06 bb d4 37 7a f6 ec 7a |.%.3.......7z..z| 00000250 c9 86 2e dd d7 11 69 7f 85 7c 56 de fb 31 78 2b |......i..|V..1x+| 00000260 e4 c7 78 0d ae cb be 9e 4e 36 24 31 7b 6a 0f 39 |..x.....N6$1{j.9| -00000270 95 12 07 8f 2a 16 03 03 00 b7 0c 00 00 b3 03 00 |....*...........| -00000280 1d 20 b4 e4 ee 96 88 73 de d8 bc 4f 90 ca fa df |. .....s...O....| -00000290 26 b4 88 19 04 0e d1 be 0f 3c bb 23 68 0e a6 20 |&........<.#h.. | -000002a0 39 17 04 03 00 8b 30 81 88 02 42 00 c7 4a 60 ba |9.....0...B..J`.| -000002b0 7d 8f 8a 69 93 dc 5b 9d ce a1 33 82 ed 95 00 fb |}..i..[...3.....| -000002c0 96 6b 31 d9 3a 10 80 fd 03 5f d2 63 40 e1 26 75 |.k1.:...._.c@.&u| -000002d0 d3 bd d7 4e 79 c7 1a 82 c2 3b ef e0 72 c2 a6 d3 |...Ny....;..r...| -000002e0 28 bb d4 49 46 39 8d bd 03 9d a8 98 8b 02 42 01 |(..IF9........B.| -000002f0 d2 51 90 9c 41 a2 51 24 8f 2e 4a 24 31 69 91 d0 |.Q..A.Q$..J$1i..| -00000300 c3 39 0b f6 55 3e e7 b0 43 36 99 50 dd c6 45 9a |.9..U>..C6.P..E.| -00000310 a7 e3 c0 65 c9 b5 02 85 f6 f1 55 b2 f6 f9 8e 30 |...e......U....0| -00000320 3b 2a 3d 8a 5c 51 31 5d 9a 3f 9d e5 63 a9 4e ba |;*=.\Q1].?..c.N.| -00000330 fe 16 03 03 00 04 0e 00 00 00 |..........| +00000270 95 12 07 8f 2a 16 03 03 00 b6 0c 00 00 b2 03 00 |....*...........| +00000280 1d 20 6b 7f 5e 5e cd 37 8e 2a cf 07 bf 99 89 93 |. k.^^.7.*......| +00000290 05 be e6 3c 1d a8 67 07 b4 0d 28 22 be 3f 57 88 |...<..g...(".?W.| +000002a0 e4 41 04 03 00 8a 30 81 87 02 42 00 ce 0f 5f f7 |.A....0...B..._.| +000002b0 52 8c 44 e3 58 4c ed 4a 4f bf 2d 14 77 0f 3c a7 |R.D.XL.JO.-.w.<.| +000002c0 8a 7b fc 2d 0f 94 6e 51 01 51 e0 8c 58 b0 72 e4 |.{.-..nQ.Q..X.r.| +000002d0 57 cd ab ad fd a9 8c c2 e7 92 f3 0e e0 a0 22 64 |W............."d| +000002e0 a0 36 f9 e1 a3 f5 19 c8 8a b8 25 f6 0b 02 41 5d |.6........%...A]| +000002f0 d3 7c a0 42 5b f9 5d b8 f9 c2 a3 d4 8f 0e 4c c7 |.|.B[.].......L.| +00000300 d4 61 11 73 f0 35 7e b1 73 29 0f 97 52 75 8a 1f |.a.s.5~.s)..Ru..| +00000310 00 e9 6e 59 25 bb ca 72 bd 1e 4f 34 fc 55 ef 66 |..nY%..r..O4.U.f| +00000320 33 3d 5f fc e2 8d ac 09 7f 20 85 ca b3 a4 b3 ca |3=_...... ......| +00000330 16 03 03 00 04 0e 00 00 00 |.........| >>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| -00000030 16 03 03 00 20 ae 4e 75 d9 a7 be a2 6c 68 b0 19 |.... .Nu....lh..| -00000040 b6 ef dd 90 f6 6b 27 ce 52 23 66 56 54 4a e0 b7 |.....k'.R#fVTJ..| -00000050 d8 77 fc be 32 |.w..2| +00000030 16 03 03 00 20 1a fc 19 6c ef eb a5 d1 28 d9 aa |.... ...l....(..| +00000040 56 3f b7 12 a0 18 eb 76 16 be 6d 1e d9 3b 6f 14 |V?.....v..m..;o.| +00000050 51 68 9c 63 b3 |Qh.c.| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 20 b5 41 67 54 66 |.......... .AgTf| -00000010 94 8b 39 45 fb aa 66 f7 01 4b 4d d3 55 03 56 b3 |..9E..f..KM.U.V.| -00000020 2b 08 ca bb 29 f5 0c 6b 12 8d 76 |+...)..k..v| +00000000 14 03 03 00 01 01 16 03 03 00 20 38 c9 5f c3 6f |.......... 8._.o| +00000010 1b 84 54 77 40 98 70 cb f1 d1 5f 9e 11 16 24 c6 |..Tw@.p..._...$.| +00000020 c4 7e f0 44 32 2c ce 29 dd 8e 20 |.~.D2,.).. | >>> Flow 5 (client to server) -00000000 17 03 03 00 16 7b 7f a6 ce de 59 a8 56 2f 1b a0 |.....{....Y.V/..| -00000010 30 39 9d 87 41 3e bf 7c af 5d f8 15 03 03 00 12 |09..A>.|.]......| -00000020 47 4e 8a e8 c7 b7 5e d2 0d 57 f5 7d 85 91 08 f6 |GN....^..W.}....| -00000030 57 b9 |W.| +00000000 17 03 03 00 16 86 12 a2 e2 ae df 03 ed e4 a4 74 |...............t| +00000010 d0 8b 8c 17 92 20 4d bd c2 29 ac 15 03 03 00 12 |..... M..)......| +00000020 e1 66 4e 21 16 24 34 9f 0f 95 63 80 d6 22 52 c4 |.fN!.$4...c.."R.| +00000030 67 ac |g.| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-AES b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-AES index 2e8cf680f7..70b43803f1 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-AES +++ b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-AES @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 aa fb 37 3d 67 |....]...Y....7=g| -00000010 95 94 f7 8e 74 8b 21 20 8b 63 e3 61 7f 00 53 e7 |....t.! .c.a..S.| -00000020 cc 9e b4 72 3e ae e5 36 93 b8 17 20 be 6d 69 ec |...r>..6... .mi.| -00000030 ba 51 86 16 80 1e e5 dc 59 d2 6f d5 c0 28 0c bd |.Q......Y.o..(..| -00000040 98 3b 5f 7b 70 36 ce 40 cd 37 23 98 c0 13 00 00 |.;_{p6.@.7#.....| +00000000 16 03 03 00 5d 02 00 00 59 03 03 c7 61 5d 9b a7 |....]...Y...a]..| +00000010 9f 27 4f de 56 2b 83 b8 dc 21 7d 27 e5 23 c0 b4 |.'O.V+...!}'.#..| +00000020 a7 b1 61 3c 7c b7 af 1a b0 c6 ed 20 82 8c 08 27 |..a<|...... ...'| +00000030 79 99 c6 a7 dd 7e 33 bb 6c d0 4b 4a 02 e7 2e 87 |y....~3.l.KJ....| +00000040 69 24 05 ac 32 6f 40 4f dc 2e 11 3f c0 13 00 00 |i$..2o@O...?....| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -63,38 +62,38 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 67 97 c9 |............ g..| -000002d0 92 1a a5 f1 e1 9b 81 36 74 0a 00 b1 f9 78 a3 0e |.......6t....x..| -000002e0 a1 44 98 69 92 ac cd 03 3e 94 a1 ee 1c 08 04 00 |.D.i....>.......| -000002f0 80 93 2b a2 28 51 d1 7d 2e 07 e2 07 07 5b 3f 56 |..+.(Q.}.....[?V| -00000300 1a 17 4a 70 6b 74 ac a2 12 02 f9 3d ec 85 b1 df |..Jpkt.....=....| -00000310 5a 17 a2 79 9b bb 40 4a 2f 27 a5 c1 71 7f 70 25 |Z..y..@J/'..q.p%| -00000320 a1 72 c5 20 86 3a a2 1e 0c 53 a0 2e 76 7f 5f 5a |.r. .:...S..v._Z| -00000330 00 55 6b 9d 0b 5e 3a c7 8e 25 97 fb d5 a4 ea 68 |.Uk..^:..%.....h| -00000340 79 9c 29 34 e5 6f 44 07 8b a7 7a 9c 31 c5 34 08 |y.)4.oD...z.1.4.| -00000350 31 8d 5e 9f 0f cb 42 ae e7 66 59 41 62 37 25 f6 |1.^...B..fYAb7%.| -00000360 09 42 10 11 9e 19 08 6b 56 43 ae 05 ac 1c a4 24 |.B.....kVC.....$| -00000370 f5 16 03 03 00 04 0e 00 00 00 |..........| +000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 5c ce 07 |............ \..| +000002d0 a8 0b 8f ff 08 19 e7 d7 38 62 98 bf c1 f7 92 27 |........8b.....'| +000002e0 cb 7b 5e 50 36 51 83 61 8d b4 d6 29 1c 08 04 00 |.{^P6Q.a...)....| +000002f0 80 98 88 66 48 81 8b 9d 9b e0 6e 6e c4 c4 99 fb |...fH.....nn....| +00000300 63 46 fd 8c 7e e1 d0 dd 01 e6 bb 23 97 b8 21 2e |cF..~......#..!.| +00000310 53 06 e0 5d 58 c8 79 c3 01 a5 01 e2 81 7b c7 a9 |S..]X.y......{..| +00000320 04 15 98 9b 53 98 42 0b 3d 4e 97 93 b9 88 80 2c |....S.B.=N.....,| +00000330 78 fd 9b 99 12 7f a8 de a0 c0 c4 1d 15 59 d4 d8 |x............Y..| +00000340 ef 0d bd 0b 46 c3 6e e6 4b 04 69 91 c0 db 74 ca |....F.n.K.i...t.| +00000350 99 2e 6f 47 8b 9b 22 3f b3 4a e3 10 47 2d dd 47 |..oG.."?.J..G-.G| +00000360 d5 e1 9b 66 8f d9 b2 fb b7 52 ae 6a 14 74 32 2d |...f.....R.j.t2-| +00000370 6e 16 03 03 00 04 0e 00 00 00 |n.........| >>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| 00000030 16 03 03 00 40 00 00 00 00 00 00 00 00 00 00 00 |....@...........| -00000040 00 00 00 00 00 fc 6b 1b 7e 07 14 39 83 00 01 20 |......k.~..9... | -00000050 ca 14 c9 c8 03 6e cb 3c 05 b8 63 c3 37 a1 63 c9 |.....n.<..c.7.c.| -00000060 9b a1 94 01 de 61 0c 7f ae 92 95 4d 31 6b e8 5e |.....a.....M1k.^| -00000070 bb 73 3f 3b a5 |.s?;.| +00000040 00 00 00 00 00 99 c9 2d 35 8b 96 18 36 f4 db a4 |.......-5...6...| +00000050 9a 56 67 6a 6b 9d ee b1 cb 95 54 43 93 7c 0e ff |.Vgjk.....TC.|..| +00000060 c0 54 84 83 14 bf d5 95 85 a1 b5 c5 2c fe c3 29 |.T..........,..)| +00000070 81 7b 1e 16 2e |.{...| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 40 e4 fe 65 a6 8e |..........@..e..| -00000010 05 32 44 9d 56 27 03 e2 da 79 c9 fd 52 76 2e bb |.2D.V'...y..Rv..| -00000020 37 9f 40 59 ba de ba 56 82 a1 b4 39 29 b0 29 af |7.@Y...V...9).).| -00000030 96 42 9e f8 c4 e7 cf 72 1c 2c c8 c7 cb ba cd 82 |.B.....r.,......| -00000040 bf 21 17 07 6b 39 2c 0a 17 0b 74 |.!..k9,...t| +00000000 14 03 03 00 01 01 16 03 03 00 40 8b 6e b0 cb bf |..........@.n...| +00000010 35 8d c3 7e 48 27 92 77 20 8a 38 c6 81 94 17 d4 |5..~H'.w .8.....| +00000020 b8 18 4e 23 e7 8b 0a 89 7b d1 72 58 aa b9 9b bb |..N#....{.rX....| +00000030 c9 40 c7 c4 8e 74 77 f3 3e 90 9c b0 19 04 6c ea |.@...tw.>.....l.| +00000040 87 85 f1 fd d9 fd 2d 57 57 f1 c9 |......-WW..| >>> Flow 5 (client to server) 00000000 17 03 03 00 30 00 00 00 00 00 00 00 00 00 00 00 |....0...........| -00000010 00 00 00 00 00 e4 be e7 a6 e6 3c 1e ca 47 07 07 |..........<..G..| -00000020 98 a3 4d 13 6d ac 75 57 45 de 8e fc ca 02 c8 b6 |..M.m.uWE.......| -00000030 00 fc 7f e0 50 15 03 03 00 30 00 00 00 00 00 00 |....P....0......| -00000040 00 00 00 00 00 00 00 00 00 00 84 c2 3c b7 11 8c |............<...| -00000050 d2 65 43 4d aa 28 0c 7f 5f 73 9c cf 43 fe 72 d1 |.eCM.(.._s..C.r.| -00000060 87 86 9b c8 1b 04 13 a7 44 5c |........D\| +00000010 00 00 00 00 00 b9 8c 86 6d 84 db d0 60 f7 11 22 |........m...`.."| +00000020 97 52 b3 fe bb 1c 0c bd 26 9c a1 84 51 3d a2 2b |.R......&...Q=.+| +00000030 c0 79 e5 a5 96 15 03 03 00 30 00 00 00 00 00 00 |.y.......0......| +00000040 00 00 00 00 00 00 00 00 00 00 7a 42 27 d5 ae 30 |..........zB'..0| +00000050 81 b5 94 05 55 c9 93 e0 11 98 6d f8 aa 18 92 f4 |....U.....m.....| +00000060 32 8f d1 aa a6 86 cd df 11 c2 |2.........| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-AES128-SHA256 b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-AES128-SHA256 index ccfa718fc6..9081031e73 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-AES128-SHA256 +++ b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-AES128-SHA256 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 81 ab 9b 85 bf |....]...Y.......| -00000010 f2 7f b2 d1 38 37 f5 dd 42 34 b6 69 e9 25 48 1c |....87..B4.i.%H.| -00000020 65 59 3b 6a 04 17 05 49 87 42 87 20 6a da fc 8d |eY;j...I.B. j...| -00000030 38 a9 cd 09 65 ac f1 9c d6 ee ab 74 ad 96 df a0 |8...e......t....| -00000040 87 98 23 29 79 78 0b c3 8f af ea 3c c0 27 00 00 |..#)yx.....<.'..| +00000000 16 03 03 00 5d 02 00 00 59 03 03 7b 18 cc 97 f2 |....]...Y..{....| +00000010 59 62 62 18 bc ee e1 09 0c 7b 8c 3e f0 36 3d 8b |Ybb......{.>.6=.| +00000020 96 54 26 93 c8 ac bb 7c 19 63 6a 20 96 8e 51 d2 |.T&....|.cj ..Q.| +00000030 18 6d 8a 72 6b 5d d2 5e 2b 53 4e a5 43 cf 75 4f |.m.rk].^+SN.C.uO| +00000040 e6 9c 3a 30 f5 23 3f bf 66 bc fe a2 c0 27 00 00 |..:0.#?.f....'..| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -63,42 +62,42 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 88 0b 7c |............ ..|| -000002d0 04 c5 e3 0b 1c aa 4b 4c 0a 3a 5c 67 a5 ac 01 be |......KL.:\g....| -000002e0 32 77 9e 69 dc ae 64 0e c7 4c 34 7d 74 08 04 00 |2w.i..d..L4}t...| -000002f0 80 b7 0e 09 2f 58 46 d2 7e 19 ca d3 34 31 ac 86 |..../XF.~...41..| -00000300 94 b3 18 56 e0 b0 75 88 ed d2 5c d2 d6 80 18 30 |...V..u...\....0| -00000310 28 75 16 eb fb ee b6 ce 13 ed f2 75 7c b5 0d a8 |(u.........u|...| -00000320 04 33 95 aa 2b c0 21 db 8a a8 cc 9b fe eb 55 32 |.3..+.!.......U2| -00000330 04 22 e6 02 83 ca b1 c0 1d 14 7f 8c 44 de ce c7 |."..........D...| -00000340 6a 60 73 1f 96 c3 62 7d 9d 36 cc f9 c1 a8 12 cb |j`s...b}.6......| -00000350 ea 93 36 db 8c 15 29 a1 03 3a 4f 82 13 52 f8 de |..6...)..:O..R..| -00000360 6f 80 b6 9d ad e8 ea 04 03 0d a5 63 74 e9 bf 2f |o..........ct../| -00000370 5f 16 03 03 00 04 0e 00 00 00 |_.........| +000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 e4 05 36 |............ ..6| +000002d0 05 47 cf b0 62 f8 f6 d6 e0 ce a5 f9 45 f6 28 f9 |.G..b.......E.(.| +000002e0 d2 58 47 6c 0a 58 9d 85 74 52 d3 0d 17 08 04 00 |.XGl.X..tR......| +000002f0 80 d0 8b 12 95 dd 2a 7f b2 55 33 e0 13 28 41 47 |......*..U3..(AG| +00000300 06 38 fe fb 11 b3 3f 66 c4 62 db 1c f9 29 9e ea |.8....?f.b...)..| +00000310 2f e4 62 22 4f 99 36 05 fb 89 8f d5 29 bf a6 e0 |/.b"O.6.....)...| +00000320 fc 12 88 d8 60 9a 4d 82 eb 64 ba 99 1c 1c 82 ff |....`.M..d......| +00000330 df 57 a9 b9 14 d5 a7 ad 57 45 1d e0 91 db 61 90 |.W......WE....a.| +00000340 ca 15 9b 0c 49 f8 a9 40 5f 34 6b d2 fe 00 48 e5 |....I..@_4k...H.| +00000350 ea 1e 3b ae 1f 81 a9 d7 91 ff 46 e9 af 48 04 b3 |..;.......F..H..| +00000360 83 0c 95 91 ea 5f 1f 5b 48 98 2a 9c f6 80 2a db |....._.[H.*...*.| +00000370 d2 16 03 03 00 04 0e 00 00 00 |..........| >>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| 00000030 16 03 03 00 50 00 00 00 00 00 00 00 00 00 00 00 |....P...........| -00000040 00 00 00 00 00 f3 03 08 16 9c 4f c9 0e 8c 2a 74 |..........O...*t| -00000050 4f d4 8a 84 50 fa 16 da 5e 76 d5 80 26 40 6a 55 |O...P...^v..&@jU| -00000060 75 16 4c 28 58 09 c9 88 fd af 93 f2 94 46 3d 1b |u.L(X........F=.| -00000070 6c 04 af af b4 c1 14 c7 76 5e 10 64 4e 61 19 a9 |l.......v^.dNa..| -00000080 c8 94 aa 7b fc |...{.| +00000040 00 00 00 00 00 c0 4e 63 30 1d 23 c8 dc ef 03 e9 |......Nc0.#.....| +00000050 29 7c 61 b8 7a a4 52 c3 09 f4 aa 97 30 3c 5a 7c |)|a.z.R.....0>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 50 9f 93 29 9e ce |..........P..)..| -00000010 ec cb 1f 2e 0a 4b a9 cf 2a 18 2c 6a 4e b6 4f e5 |.....K..*.,jN.O.| -00000020 e1 15 c5 fc 8b 07 31 c1 88 ea 34 dd 14 c8 e0 e3 |......1...4.....| -00000030 da 9e cf 42 5e 6b d9 3f a7 00 e7 37 b0 2f cb fb |...B^k.?...7./..| -00000040 bb 80 4b c8 e0 00 47 af 04 26 7d e4 c0 71 0a c9 |..K...G..&}..q..| -00000050 73 d4 35 99 e9 d8 06 c3 6f 09 69 |s.5.....o.i| +00000000 14 03 03 00 01 01 16 03 03 00 50 bd 21 3f c1 94 |..........P.!?..| +00000010 2f 3e 00 3c 43 00 17 39 90 74 b2 4f 40 5d 0c 2b |/>.>> Flow 5 (client to server) 00000000 17 03 03 00 40 00 00 00 00 00 00 00 00 00 00 00 |....@...........| -00000010 00 00 00 00 00 65 8e 6b 75 f5 ea 6f 63 c0 12 d8 |.....e.ku..oc...| -00000020 c5 42 81 1a ef 04 64 0b 38 99 35 9b 4e 84 9c 40 |.B....d.8.5.N..@| -00000030 bc d6 f9 6f 52 16 4b c3 cb 26 42 30 af a1 d0 f9 |...oR.K..&B0....| -00000040 07 56 27 c2 12 15 03 03 00 40 00 00 00 00 00 00 |.V'......@......| -00000050 00 00 00 00 00 00 00 00 00 00 b1 d0 14 32 93 af |.............2..| -00000060 02 66 bd 5d 39 26 20 3f c5 f1 24 54 52 a6 38 18 |.f.]9& ?..$TR.8.| -00000070 91 6e b8 07 d9 37 58 6d cc a9 b0 86 11 c6 b1 10 |.n...7Xm........| -00000080 06 0c dc a5 5b ad c7 a6 fe b1 |....[.....| +00000010 00 00 00 00 00 ad 41 d8 27 7d f4 06 b7 6c 89 f4 |......A.'}...l..| +00000020 e3 c5 de 6d 06 80 0c 2e f8 42 5a 2c da f1 e2 b6 |...m.....BZ,....| +00000030 e6 e8 6f 5c ee e0 aa 4b d6 8a 7a 04 6a 5e 8c 99 |..o\...K..z.j^..| +00000040 1b 36 be f9 d0 15 03 03 00 40 00 00 00 00 00 00 |.6.......@......| +00000050 00 00 00 00 00 00 00 00 00 00 f1 cf 76 91 15 bd |............v...| +00000060 33 f3 96 25 c7 d9 77 30 a6 84 1a 06 c1 96 96 27 |3..%..w0.......'| +00000070 70 ff d2 ce 82 1e 39 8f 19 75 c7 f2 0f cb de bc |p.....9..u......| +00000080 9a ef 4c 93 e3 3c 0c 2f 97 ad |..L..<./..| diff --git a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-CHACHA20-POLY1305 b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-CHACHA20-POLY1305 index c1670a6726..30ea8ec568 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-CHACHA20-POLY1305 +++ b/src/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-CHACHA20-POLY1305 @@ -1,26 +1,26 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 f2 01 00 00 ee 03 03 00 00 00 00 00 |................| +00000000 16 03 01 00 ee 01 00 00 ea 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 08 cc a8 |................| -00000050 13 03 13 01 13 02 01 00 00 9d 00 0b 00 02 01 00 |................| +00000050 13 03 13 01 13 02 01 00 00 99 00 0b 00 02 01 00 |................| 00000060 ff 01 00 01 00 00 17 00 00 00 12 00 00 00 05 00 |................| 00000070 05 01 00 00 00 00 00 0a 00 0a 00 08 00 1d 00 17 |................| -00000080 00 18 00 19 00 0d 00 1a 00 18 08 04 04 03 08 07 |................| -00000090 08 05 08 06 04 01 05 01 06 01 05 03 06 03 02 01 |................| -000000a0 02 03 00 32 00 1a 00 18 08 04 04 03 08 07 08 05 |...2............| -000000b0 08 06 04 01 05 01 06 01 05 03 06 03 02 01 02 03 |................| -000000c0 00 2b 00 09 08 03 04 03 03 03 02 03 01 00 33 00 |.+............3.| -000000d0 26 00 24 00 1d 00 20 2f e5 7d a3 47 cd 62 43 15 |&.$... /.}.G.bC.| -000000e0 28 da ac 5f bb 29 07 30 ff f6 84 af c4 cf c2 ed |(.._.).0........| -000000f0 90 99 5f 58 cb 3b 74 |.._X.;t| +00000080 00 18 00 19 00 0d 00 16 00 14 08 04 04 03 08 07 |................| +00000090 08 05 08 06 04 01 05 01 06 01 05 03 06 03 00 32 |...............2| +000000a0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000b0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| +000000c0 08 03 04 03 03 03 02 03 01 00 33 00 26 00 24 00 |..........3.&.$.| +000000d0 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f |.. /.}.G.bC.(.._| +000000e0 bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 |.).0.........._X| +000000f0 cb 3b 74 |.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 34 c1 8b 5f 3a |....]...Y..4.._:| -00000010 34 19 b4 a5 7a b6 d4 d8 83 54 60 22 6c 56 52 d0 |4...z....T`"lVR.| -00000020 c6 ae 08 d2 17 49 97 ec fe f2 8a 20 d5 fc 67 75 |.....I..... ..gu| -00000030 b1 26 04 0e ce 3a 0e c3 4a e3 9a 20 0b 36 12 43 |.&...:..J.. .6.C| -00000040 13 0e db 9e 50 ca d6 54 89 01 33 56 cc a8 00 00 |....P..T..3V....| +00000000 16 03 03 00 5d 02 00 00 59 03 03 1b 61 37 54 ad |....]...Y...a7T.| +00000010 7e 92 6a 93 df 5e f8 16 be e7 06 12 3f e7 23 84 |~.j..^......?.#.| +00000020 be 2a 30 78 98 cf 60 8a 8a 2d 26 20 44 fb 40 31 |.*0x..`..-& D.@1| +00000030 88 38 6e fc ce 1d af 07 e3 c0 49 05 ff bc 92 ae |.8n.......I.....| +00000040 58 79 51 ec a7 24 82 75 9a 16 45 fa cc a8 00 00 |XyQ..$.u..E.....| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -60,31 +60,31 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 63 b1 95 |............ c..| -000002d0 d7 d2 63 99 59 8e 56 00 0a 08 29 c9 a5 30 bd 1b |..c.Y.V...)..0..| -000002e0 f1 e4 ad 7d 99 c0 ea 9d 44 1c c6 22 56 08 04 00 |...}....D.."V...| -000002f0 80 d8 02 bd 3f 32 2e 05 8b 2f 2b 98 ef fe 6b 96 |....?2.../+...k.| -00000300 80 ab d3 e1 d0 56 45 f6 66 2a 44 52 f3 47 85 f6 |.....VE.f*DR.G..| -00000310 3a 0a 08 11 31 be 39 68 e8 8a cd ac 83 c2 32 10 |:...1.9h......2.| -00000320 d5 9a d6 d4 9c 93 3a 49 1e d2 43 d6 f3 b8 96 6a |......:I..C....j| -00000330 0b 50 53 58 77 2f 7a d5 a3 d8 f7 33 6a 29 16 05 |.PSXw/z....3j)..| -00000340 4a 71 d3 23 dc f1 91 ec 4d be 10 53 f5 57 0d 01 |Jq.#....M..S.W..| -00000350 36 ea 6f b7 42 68 76 6c 15 57 24 bb 92 c6 48 91 |6.o.Bhvl.W$...H.| -00000360 b2 02 83 75 9a 52 63 2d 3c 6a b5 91 8a cf ad 52 |...u.Rc-<..."h...| +000002f0 80 10 fc 5b 90 af a6 8e d4 1b 5e 63 13 55 88 55 |...[......^c.U.U| +00000300 f3 bb ad 7a 5b 14 95 55 6b 2f 01 eb 22 88 fb 21 |...z[..Uk/.."..!| +00000310 40 88 d1 7f 52 b2 a2 ff 51 f9 05 8c c8 28 70 77 |@...R...Q....(pw| +00000320 3c 7a b0 48 28 f0 34 19 cc 8e c8 c9 43 93 aa fa |..a...4..r}..| +00000360 98 f2 bb c0 ae 5f b8 8e 00 6a 47 9c 8d cf 91 eb |....._...jG.....| +00000370 e7 16 03 03 00 04 0e 00 00 00 |..........| >>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| -00000030 16 03 03 00 20 ab c0 00 15 90 de 61 3e 0b 60 16 |.... ......a>.`.| -00000040 88 fe 6e a8 31 b8 cf bf 18 f5 21 c0 51 4f 96 fe |..n.1.....!.QO..| -00000050 47 eb c3 75 9b |G..u.| +00000030 16 03 03 00 20 af 23 75 51 f1 3c 68 f8 87 2e 2b |.... .#uQ.>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 20 38 2e e1 49 d7 |.......... 8..I.| -00000010 20 aa 42 6c 73 05 b7 37 e3 0c 14 b0 fb bd 0f 04 | .Bls..7........| -00000020 79 a8 6c 01 63 4a 92 c8 13 a0 d9 |y.l.cJ.....| +00000000 14 03 03 00 01 01 16 03 03 00 20 c0 52 cb d5 de |.......... .R...| +00000010 b1 43 8a 0b 75 a6 a4 d4 8f af 85 63 71 1d 3b 4f |.C..u......cq.;O| +00000020 7a ad 9b 77 85 1a 1d 7e 4b 42 13 |z..w...~KB.| >>> Flow 5 (client to server) -00000000 17 03 03 00 16 d4 37 f1 77 d5 49 df 50 58 c9 41 |......7.w.I.PX.A| -00000010 ad 99 2b bc 85 a7 33 d4 ff 96 c0 15 03 03 00 12 |..+...3.........| -00000020 a9 7f 06 84 dd 17 63 18 26 14 5e 3e 04 87 af 37 |......c.&.^>...7| -00000030 7f 0c |..| +00000000 17 03 03 00 16 30 b8 0e dd 42 64 a4 17 ee f5 70 |.....0...Bd....p| +00000010 1e 00 e8 da a7 f6 8e 73 c7 70 32 15 03 03 00 12 |.......s.p2.....| +00000020 57 be 7b cf bb 7b fe cb 7e b2 bb 38 9f 31 65 07 |W.{..{..~..8.1e.| +00000030 ba 61 |.a| diff --git a/src/crypto/tls/testdata/Client-TLSv12-Ed25519 b/src/crypto/tls/testdata/Client-TLSv12-Ed25519 index a3d23b6208..40b2f35137 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-Ed25519 +++ b/src/crypto/tls/testdata/Client-TLSv12-Ed25519 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 19 33 a6 0c 80 |....]...Y...3...| -00000010 5d 56 d6 7b 85 ae 50 82 3a 61 7b b0 dd 01 f8 98 |]V.{..P.:a{.....| -00000020 b9 51 22 e7 12 4c 98 f2 4c 50 49 20 37 6f ad 03 |.Q"..L..LPI 7o..| -00000030 52 51 44 3e 26 19 df e3 59 cd 6a 41 37 3c 46 95 |RQD>&...Y.jA7k.Y.h....(.q..| +00000020 08 6c 10 12 aa 8d e4 f9 aa 7d 9b 20 a0 b8 96 40 |.l.......}. ...@| +00000030 1a ce 65 ae a6 a2 4d 4d 92 41 8e 2c 8d 94 d1 02 |..e...MM.A.,....| +00000040 c1 cb bd 6d 8b ee 36 ae c5 ec 6a 40 cc a9 00 00 |...m..6...j@....| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 01 3c 0b 00 01 38 00 01 35 00 01 |......<...8..5..| 00000070 32 30 82 01 2e 30 81 e1 a0 03 02 01 02 02 10 0f |20...0..........| @@ -46,26 +45,26 @@ 00000180 fc ab 7d 4d d4 e0 93 13 d0 a9 42 e0 b6 6b fe 5d |..}M......B..k.]| 00000190 67 48 d7 9f 50 bc 6c cd 4b 03 83 7c f2 08 58 cd |gH..P.l.K..|..X.| 000001a0 ac cf 0c 16 03 03 00 6c 0c 00 00 68 03 00 1d 20 |.......l...h... | -000001b0 54 12 8c 8b b0 53 e4 e0 43 90 3d 15 fb 26 ee a9 |T....S..C.=..&..| -000001c0 12 24 60 7f d5 57 e5 1c bc ca 4f 31 dd a2 a8 3e |.$`..W....O1...>| -000001d0 08 07 00 40 ad 8c 20 13 7d f5 5e 5e b2 41 9f 60 |...@.. .}.^^.A.`| -000001e0 f7 d2 cc 2f fe 47 6d 8c 24 ca 0d 72 63 eb 0d f8 |.../.Gm.$..rc...| -000001f0 93 0b 13 de 8f bc 92 0e f8 77 8a de 2f 9c 32 30 |.........w../.20| -00000200 96 cb 5b bc b8 94 68 fb 06 62 ce 01 ed b8 f8 f2 |..[...h..b......| -00000210 c1 c4 16 01 16 03 03 00 04 0e 00 00 00 |.............| +000001b0 fd f1 12 74 21 62 15 da 36 af d5 6c f3 0a cd 1e |...t!b..6..l....| +000001c0 09 37 aa 55 32 1a 27 a7 5b 37 34 32 35 36 f5 14 |.7.U2.'.[74256..| +000001d0 08 07 00 40 3d 7c 51 33 98 02 91 19 da 47 1a 1a |...@=|Q3.....G..| +000001e0 fe 03 4e 1b e8 5c 5e a7 12 9c e6 8a c2 74 18 dd |..N..\^......t..| +000001f0 18 9a 9d d6 60 f3 c8 63 00 33 d8 81 3e 2e 40 0f |....`..c.3..>.@.| +00000200 c5 98 fc a8 1c 6b 0c 19 70 f5 16 a5 25 ce 7b b8 |.....k..p...%.{.| +00000210 f2 f5 87 04 16 03 03 00 04 0e 00 00 00 |.............| >>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| -00000030 16 03 03 00 20 25 48 e8 48 d4 0e e2 2e 91 65 98 |.... %H.H.....e.| -00000040 60 1e ae 8f e6 7e 5b 0a bb 7b 90 8a 2b a7 b2 81 |`....~[..{..+...| -00000050 f6 4b 17 c5 cc |.K...| +00000030 16 03 03 00 20 91 a7 c4 90 65 85 ce 63 66 fa 8b |.... ....e..cf..| +00000040 5c 22 e1 1d fb 14 c2 6c 86 7c 52 7c d1 96 3b 41 |\".....l.|R|..;A| +00000050 20 0d bf 09 e8 | ....| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 20 f5 ed d5 32 97 |.......... ...2.| -00000010 a7 91 bc 42 03 3b f1 76 21 68 19 41 8f 70 a1 74 |...B.;.v!h.A.p.t| -00000020 28 fb f4 7a 61 1e cf 79 b6 f7 a8 |(..za..y...| +00000000 14 03 03 00 01 01 16 03 03 00 20 d0 3e 15 0e 08 |.......... .>...| +00000010 5b fd a8 b7 5f 01 7f ca 6d af 78 6e 33 7a 93 42 |[..._...m.xn3z.B| +00000020 aa 6e e4 f4 a1 bb 9a 2d bb 17 6f |.n.....-..o| >>> Flow 5 (client to server) -00000000 17 03 03 00 16 9b bf f5 4d cb b0 e2 bb 5c df e4 |........M....\..| -00000010 c8 85 31 11 d1 59 9d 72 03 2a 74 15 03 03 00 12 |..1..Y.r.*t.....| -00000020 13 fd 92 1a 96 bf 23 2e 06 8b e4 42 f6 05 7d 7e |......#....B..}~| -00000030 6c cd |l.| +00000000 17 03 03 00 16 7b f9 2f ce ac bc 43 3c 6b 10 3b |.....{./...C>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 37 1f dc 30 b6 |....]...Y..7..0.| -00000010 6b 54 22 cd 46 38 00 7b c2 d4 97 80 f5 b6 cb fc |kT".F8.{........| -00000020 01 b7 91 6a ce 1d 20 9f fb 4a b3 20 d2 72 bb 97 |...j.. ..J. .r..| -00000030 2a 46 3c da d1 8a 8e 1b cd ed e7 5a 5a c7 0c ca |*F<........ZZ...| -00000040 1f 6e 40 b3 6a d6 7a ae 55 bd 82 42 cc a8 00 00 |.n@.j.z.U..B....| +00000000 16 03 03 00 5d 02 00 00 59 03 03 ad 2d c6 4e 13 |....]...Y...-.N.| +00000010 72 ea 19 e0 65 33 ec cb aa 5c 70 bd f5 70 e0 b4 |r...e3...\p..p..| +00000020 ca 7e 64 da 5e 5f cb a6 69 d4 8c 20 79 45 e2 0a |.~d.^_..i.. yE..| +00000030 c7 b2 be 37 28 b5 c6 35 f9 0c c9 34 39 4d 38 3b |...7(..5...49M8;| +00000040 c0 47 31 44 e2 47 f7 6f 70 0f 8b 2d cc a8 00 00 |.G1D.G.op..-....| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -63,31 +62,31 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 da a1 33 |............ ..3| -000002d0 ec 12 5f c7 25 b5 de 66 38 64 74 a9 e2 69 09 e3 |.._.%..f8dt..i..| -000002e0 12 49 fe 0a 0a 74 c5 c8 04 b0 4c 01 6d 08 04 00 |.I...t....L.m...| -000002f0 80 5d c4 70 28 74 65 b3 74 bb 2d 71 87 84 48 25 |.].p(te.t.-q..H%| -00000300 41 14 38 17 cd e3 8c a8 24 a5 6b bd 81 62 ef bc |A.8.....$.k..b..| -00000310 9d 15 31 a7 6f a7 55 90 c8 fb 71 8a 45 a6 4a fb |..1.o.U...q.E.J.| -00000320 14 5d 92 5b fc 41 79 ca d4 ac 5b 43 ea 18 f2 e4 |.].[.Ay...[C....| -00000330 69 91 45 27 8e 32 ef ae 59 70 3e 43 b0 43 3f f0 |i.E'.2..Yp>C.C?.| -00000340 1b e6 e4 aa 8f 0f 4d 7f b7 d8 bf fb 40 59 92 2e |......M.....@Y..| -00000350 08 51 2a a4 ce c8 da f9 ec b3 d6 f6 63 32 e9 ef |.Q*.........c2..| -00000360 b8 42 25 2a 5e ec 4b 39 e5 52 d1 e7 f1 5d 18 9f |.B%*^.K9.R...]..| -00000370 97 16 03 03 00 04 0e 00 00 00 |..........| +000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 f4 07 0a |............ ...| +000002d0 38 0a 4e 5d 59 90 98 e7 19 02 7b 51 76 59 2e 3d |8.N]Y.....{QvY.=| +000002e0 d2 f5 2f 1c 87 29 61 94 a0 ad 95 8b 4b 08 04 00 |../..)a.....K...| +000002f0 80 22 b1 ac 42 df 30 4f ea 41 75 a5 28 2e a7 50 |."..B.0O.Au.(..P| +00000300 2a 4f c8 f4 1f c3 35 82 88 47 78 de fe 00 43 ed |*O....5..Gx...C.| +00000310 84 48 52 8b bf 77 22 00 fd 92 c4 e0 67 66 28 5c |.HR..w".....gf(\| +00000320 8a 7f 32 21 c2 5a bd b2 8f d5 72 48 3a 83 3b d7 |..2!.Z....rH:.;.| +00000330 c8 c0 fb 54 52 28 41 49 3f 6d b4 4c ef 87 3a e5 |...TR(AI?m.L..:.| +00000340 30 db e2 c8 5c ed f1 46 a8 f4 04 0b 02 2b 93 03 |0...\..F.....+..| +00000350 de dc 41 88 50 f6 22 c5 2a 30 ac 47 f2 db 00 5c |..A.P.".*0.G...\| +00000360 7e 14 25 fd 72 de 81 ed 30 c8 62 1c 6d 44 4e 90 |~.%.r...0.b.mDN.| +00000370 3f 16 03 03 00 04 0e 00 00 00 |?.........| >>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| -00000030 16 03 03 00 20 a6 dc 32 3e 35 76 e8 25 41 ad f7 |.... ..2>5v.%A..| -00000040 64 02 b0 a3 19 0b ea 1c 7f d7 47 4c 73 2d 7e 6f |d.........GLs-~o| -00000050 7a 0c 09 41 1f |z..A.| +00000030 16 03 03 00 20 e1 88 c9 ef 40 26 52 ca d2 d9 31 |.... ....@&R...1| +00000040 9c 51 a6 fa b3 40 6b 62 7e ad 00 ea da 8f 54 bf |.Q...@kb~.....T.| +00000050 f5 89 4b c9 a9 |..K..| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 20 77 e0 48 07 28 |.......... w.H.(| -00000010 72 79 07 2e 8a b8 1c a0 70 78 f1 a8 e9 24 6d 46 |ry......px...$mF| -00000020 78 27 71 a0 a4 7b da 5b 77 3d 78 |x'q..{.[w=x| +00000000 14 03 03 00 01 01 16 03 03 00 20 6f e3 54 91 aa |.......... o.T..| +00000010 00 b4 8e f3 b2 51 1e 76 48 91 49 b9 ba dc 5f e4 |.....Q.vH.I..._.| +00000020 9f 0e 49 b5 54 f5 e3 9d 25 75 38 |..I.T...%u8| >>> Flow 5 (client to server) -00000000 17 03 03 00 16 d9 2e 8d 11 ee 6a df 43 dc 3b f4 |..........j.C.;.| -00000010 dd 9e c3 be 2e 78 8a 39 3b 7a a1 15 03 03 00 12 |.....x.9;z......| -00000020 d5 ef f8 2e 49 c9 f8 27 3e 29 e5 39 fc 25 3d b2 |....I..'>).9.%=.| -00000030 ff a8 |..| +00000000 17 03 03 00 16 7b 2a af 79 d3 1c 0d cf 0f 83 04 |.....{*.y.......| +00000010 9e 96 63 69 0c ec f7 98 02 33 12 15 03 03 00 12 |..ci.....3......| +00000020 58 d3 1a 60 74 2c 92 91 61 2c 13 23 6d e9 5f de |X..`t,..a,.#m._.| +00000030 65 42 |eB| diff --git a/src/crypto/tls/testdata/Client-TLSv12-P256-ECDHE b/src/crypto/tls/testdata/Client-TLSv12-P256-ECDHE index d991b001d5..0cac7e7545 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-P256-ECDHE +++ b/src/crypto/tls/testdata/Client-TLSv12-P256-ECDHE @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 37 01 00 01 33 03 03 00 00 00 00 00 |....7...3.......| +00000000 16 03 01 01 33 01 00 01 2f 03 03 00 00 00 00 00 |....3.../.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,24 +7,24 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 b8 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 b4 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| -000000a0 00 0a 00 04 00 02 00 17 00 0d 00 1a 00 18 08 04 |................| +000000a0 00 0a 00 04 00 02 00 17 00 0d 00 16 00 14 08 04 |................| 000000b0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| -000000c0 06 03 02 01 02 03 00 32 00 1a 00 18 08 04 04 03 |.......2........| -000000d0 08 07 08 05 08 06 04 01 05 01 06 01 05 03 06 03 |................| -000000e0 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 02 03 |.....+..........| -000000f0 01 00 33 00 47 00 45 00 17 00 41 04 1e 18 37 ef |..3.G.E...A...7.| -00000100 0d 19 51 88 35 75 71 b5 e5 54 5b 12 2e 8f 09 67 |..Q.5uq..T[....g| -00000110 fd a7 24 20 3e b2 56 1c ce 97 28 5e f8 2b 2d 4f |..$ >.V...(^.+-O| -00000120 9e f1 07 9f 6c 4b 5b 83 56 e2 32 42 e9 58 b6 d7 |....lK[.V.2B.X..| -00000130 49 a6 b5 68 1a 41 03 56 6b dc 5a 89 |I..h.A.Vk.Z.| +000000c0 06 03 00 32 00 1a 00 18 08 04 04 03 08 07 08 05 |...2............| +000000d0 08 06 04 01 05 01 06 01 05 03 06 03 02 01 02 03 |................| +000000e0 00 2b 00 09 08 03 04 03 03 03 02 03 01 00 33 00 |.+............3.| +000000f0 47 00 45 00 17 00 41 04 1e 18 37 ef 0d 19 51 88 |G.E...A...7...Q.| +00000100 35 75 71 b5 e5 54 5b 12 2e 8f 09 67 fd a7 24 20 |5uq..T[....g..$ | +00000110 3e b2 56 1c ce 97 28 5e f8 2b 2d 4f 9e f1 07 9f |>.V...(^.+-O....| +00000120 6c 4b 5b 83 56 e2 32 42 e9 58 b6 d7 49 a6 b5 68 |lK[.V.2B.X..I..h| +00000130 1a 41 03 56 6b dc 5a 89 |.A.Vk.Z.| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 f2 96 d3 16 ce |....]...Y.......| -00000010 7c b8 43 6a 66 b2 9f 58 d2 66 74 f6 92 61 3a 48 ||.Cjf..X.ft..a:H| -00000020 b1 84 87 be bf 7e 5a 9c 75 e3 e1 20 a6 b6 cc cf |.....~Z.u.. ....| -00000030 3a 1e b5 62 01 bd ee 58 eb ea 84 58 08 dc e6 d2 |:..b...X...X....| -00000040 86 a0 5e f2 63 f2 1f 81 29 0d f7 5c c0 2f 00 00 |..^.c...)..\./..| +00000000 16 03 03 00 5d 02 00 00 59 03 03 d9 70 61 62 c5 |....]...Y...pab.| +00000010 f4 b4 22 c6 ea f6 e9 8c fc 29 e8 8c 24 2d 4b c4 |.."......)..$-K.| +00000020 04 57 01 ae e5 41 7e 7f 6f ec c3 20 86 6b 38 a9 |.W...A~.o.. .k8.| +00000030 ea cd 51 3b 0f 05 5c a3 98 0c 4d ba 46 d6 99 f3 |..Q;..\...M.F...| +00000040 67 da f2 62 56 29 f7 e6 8c 14 8a 7a c0 2f 00 00 |g..bV).....z./..| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -64,37 +64,37 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 03 00 cd 0c 00 00 c9 03 00 17 41 04 9f ab |............A...| -000002d0 e5 e2 8c b7 47 ce a4 e6 c8 ca 51 d7 28 b3 8b be |....G.....Q.(...| -000002e0 83 f4 d5 34 27 f5 89 2b d0 bb 7e 2f 87 8c 64 3d |...4'..+..~/..d=| -000002f0 fc ee 5e c1 35 f6 ff be 49 75 58 65 22 92 5b 6f |..^.5...IuXe".[o| -00000300 07 08 61 d0 16 9c 6b 2f b0 47 a0 ed 45 d8 08 04 |..a...k/.G..E...| -00000310 00 80 58 85 e9 5f 3b b6 03 25 a8 49 da 56 87 2e |..X.._;..%.I.V..| -00000320 d5 89 ce 53 de f2 8e b7 4b 7a 24 be 0b c1 86 4b |...S....Kz$....K| -00000330 3a a3 58 ea e2 68 bd 33 91 93 8b f5 cc 6e ea 7d |:.X..h.3.....n.}| -00000340 e4 14 fc 6c d2 d3 25 97 73 bf 0d d4 26 65 71 c0 |...l..%.s...&eq.| -00000350 6f 85 52 e6 e5 34 e7 05 7b 8b d0 96 db f4 cc 49 |o.R..4..{......I| -00000360 f7 7f da c6 56 54 b0 e0 5e 60 b1 ea 8a 9b 45 06 |....VT..^`....E.| -00000370 54 ed b4 34 ab a0 0b 72 4f 0e 0a 9c 57 f8 c2 1c |T..4...rO...W...| -00000380 87 8b 9c 48 97 ae 08 2b 51 07 cd 5d 5c 0a 1e 47 |...H...+Q..]\..G| -00000390 b7 bd 16 03 03 00 04 0e 00 00 00 |...........| +000002c0 16 03 03 00 cd 0c 00 00 c9 03 00 17 41 04 a0 b7 |............A...| +000002d0 0f 94 44 46 c4 72 5a 3c b8 5c cd f1 9e b0 49 17 |..DF.rZ<.\....I.| +000002e0 ea a0 ca 1d 17 d8 85 5f 0a e3 4a 85 5d f4 bb 52 |......._..J.]..R| +000002f0 23 79 24 a9 50 81 9f 8a 5e e4 2f 5d cc 7d e2 10 |#y$.P...^./].}..| +00000300 db 42 f0 26 98 61 b7 f5 39 16 46 d6 04 f7 08 04 |.B.&.a..9.F.....| +00000310 00 80 05 70 60 b3 39 e0 61 6e 72 b3 13 2c 8c 2d |...p`.9.anr..,.-| +00000320 e1 d9 37 8e cd 13 64 2f 4b 65 4f 7c a0 2a 7e 91 |..7...d/KeO|.*~.| +00000330 e1 fd 7d 3b e3 35 dd 5a c8 ab 56 13 c3 c6 07 90 |..};.5.Z..V.....| +00000340 fb d3 cf 22 dd 78 4c 33 c7 d3 6e 64 7e 65 ba 02 |...".xL3..nd~e..| +00000350 ca 04 50 77 08 65 d5 80 c9 4f c3 b3 5b 97 b2 80 |..Pw.e...O..[...| +00000360 3d 48 37 20 ab 28 15 0c f2 86 dd b6 19 66 46 e3 |=H7 .(.......fF.| +00000370 23 69 e2 5d fb 70 65 fb c6 ae fc a4 02 42 9f fe |#i.].pe......B..| +00000380 b4 5c f0 4b 23 92 2a 4f a4 1a f4 86 3b 5c 25 9d |.\.K#.*O....;\%.| +00000390 86 e2 16 03 03 00 04 0e 00 00 00 |...........| >>> Flow 3 (client to server) 00000000 16 03 03 00 46 10 00 00 42 41 04 1e 18 37 ef 0d |....F...BA...7..| 00000010 19 51 88 35 75 71 b5 e5 54 5b 12 2e 8f 09 67 fd |.Q.5uq..T[....g.| 00000020 a7 24 20 3e b2 56 1c ce 97 28 5e f8 2b 2d 4f 9e |.$ >.V...(^.+-O.| 00000030 f1 07 9f 6c 4b 5b 83 56 e2 32 42 e9 58 b6 d7 49 |...lK[.V.2B.X..I| 00000040 a6 b5 68 1a 41 03 56 6b dc 5a 89 14 03 03 00 01 |..h.A.Vk.Z......| -00000050 01 16 03 03 00 28 00 00 00 00 00 00 00 00 c5 59 |.....(.........Y| -00000060 bb bb c9 dc 4d 95 d9 70 d0 bc 76 ca e7 0f 50 f8 |....M..p..v...P.| -00000070 d5 55 e0 3c fb 12 63 ff 8d b4 a9 85 96 0e |.U.<..c.......| +00000050 01 16 03 03 00 28 00 00 00 00 00 00 00 00 3f 54 |.....(........?T| +00000060 35 c8 33 70 66 0f 9d 3d 57 d7 a8 7f 57 45 63 a4 |5.3pf..=W...WEc.| +00000070 67 a2 83 c4 17 5b 22 8f 1c 89 78 1c 43 8d |g....["...x.C.| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 28 98 cb 91 21 85 |..........(...!.| -00000010 4a fd 3f e5 f7 31 8d 35 c9 11 31 fc 1f 0e e3 0d |J.?..1.5..1.....| -00000020 86 c7 93 10 1d 52 21 2c 6f 7a c7 0e 6a d8 67 9c |.....R!,oz..j.g.| -00000030 c8 e7 cd |...| +00000000 14 03 03 00 01 01 16 03 03 00 28 25 5d 63 2d f3 |..........(%]c-.| +00000010 a5 91 45 d0 7d 68 39 f6 0e 04 6f 4b c9 dd 4a 54 |..E.}h9...oK..JT| +00000020 f5 a2 04 54 d2 57 4b 40 75 4d 2f b3 5d 00 5b 11 |...T.WK@uM/.].[.| +00000030 89 0e 92 |...| >>> Flow 5 (client to server) -00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 b7 f9 69 |...............i| -00000010 f9 81 f1 da b7 b7 4b fe 3a a4 d7 d2 af b5 2a e9 |......K.:.....*.| -00000020 8f 97 c1 15 03 03 00 1a 00 00 00 00 00 00 00 02 |................| -00000030 b2 0d 99 04 5c 56 a2 6e 50 e1 52 80 c5 3c 4b 69 |....\V.nP.R..>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 55 02 00 00 51 03 03 e6 2c 7a 70 96 |....U...Q...,zp.| -00000010 c0 bf e7 e6 2e 51 35 c7 3e 0a 4c 1e 2a 0b 54 08 |.....Q5.>.L.*.T.| -00000020 57 e1 66 22 94 26 fe df ce 7e bf 20 26 07 f0 81 |W.f".&...~. &...| -00000030 7d 73 2c 70 6f d1 1b 85 f5 af 97 7e 5b 3f 5e a0 |}s,po......~[?^.| -00000040 fc 9b 7d 5a c3 e2 05 30 b5 f5 47 05 00 05 00 00 |..}Z...0..G.....| +00000000 16 03 03 00 55 02 00 00 51 03 03 c4 5b d6 0f d4 |....U...Q...[...| +00000010 64 3a 37 34 a3 84 9d 3d 1b 33 c3 d4 4f 42 f7 3a |d:74...=.3..OB.:| +00000020 e8 da 8c 8b 97 1a e5 f4 56 a4 bd 20 03 30 25 fd |........V.. .0%.| +00000030 d9 01 7a 7c b8 9d 63 f0 a3 7a 1c 00 6b 75 16 d8 |..z|..c..z..ku..| +00000040 68 5c 7a 8d 4a ae ed 52 fc 92 e5 03 00 05 00 00 |h\z.J..R........| 00000050 09 ff 01 00 01 00 00 17 00 00 16 03 03 02 59 0b |..............Y.| 00000060 00 02 55 00 02 52 00 02 4f 30 82 02 4b 30 82 01 |..U..R..O0..K0..| 00000070 b4 a0 03 02 01 02 02 09 00 e8 f0 9d 3f e2 5b ea |............?.[.| @@ -74,15 +73,15 @@ 00000060 c5 70 0f 08 83 48 e9 48 ef 6e 50 8b 05 7e e5 84 |.p...H.H.nP..~..| 00000070 25 fa 55 c7 ae 31 02 27 00 ef 3f 98 86 20 12 89 |%.U..1.'..?.. ..| 00000080 91 59 28 b4 f7 d7 af d2 69 61 35 14 03 03 00 01 |.Y(.....ia5.....| -00000090 01 16 03 03 00 24 ad c5 35 7b 7c 74 c7 24 58 ef |.....$..5{|t.$X.| -000000a0 55 3f 8d c1 52 97 f8 91 93 46 02 ff cf 06 00 ba |U?..R....F......| -000000b0 26 91 ec c4 91 23 60 b2 c8 77 |&....#`..w| +00000090 01 16 03 03 00 24 83 66 73 cf 08 6f c7 29 1b ea |.....$.fs..o.)..| +000000a0 86 aa 02 66 2d d9 d4 7b 19 0d cc e5 9e dc e9 20 |...f-..{....... | +000000b0 d9 62 82 59 bd e9 91 6b 90 62 |.b.Y...k.b| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 24 e6 06 60 54 3e |..........$..`T>| -00000010 39 d8 22 df 83 a7 7a 4d b4 63 03 77 3d 5d e8 06 |9."...zM.c.w=]..| -00000020 6f fe 0a 70 4b b3 82 cc a8 aa 48 2e f2 72 7b |o..pK.....H..r{| +00000000 14 03 03 00 01 01 16 03 03 00 24 ef bb 0c 3b fb |..........$...;.| +00000010 4e 36 53 b9 fa d4 c3 d0 37 5e 2b 22 a2 12 b6 9e |N6S.....7^+"....| +00000020 1c a3 f7 93 74 60 38 18 f1 cc 72 e4 ba 1a 3d |....t`8...r...=| >>> Flow 5 (client to server) -00000000 17 03 03 00 1a e5 e3 38 a3 34 e4 02 f1 c4 96 14 |.......8.4......| -00000010 13 fb 50 7d 6a 26 cf 49 f8 d6 e5 f0 d8 7c b5 15 |..P}j&.I.....|..| -00000020 03 03 00 16 a4 cd 6c b6 b2 45 d7 35 df 56 ba ae |......l..E.5.V..| -00000030 a9 41 09 85 67 bb 16 c0 3e d0 |.A..g...>.| +00000000 17 03 03 00 1a 62 a3 b3 3a 89 25 05 89 bc 5a 21 |.....b..:.%...Z!| +00000010 30 61 84 b0 97 52 26 a2 18 87 25 43 17 1a 52 15 |0a...R&...%C..R.| +00000020 03 03 00 16 97 d6 18 0c 30 b3 9b 8f 2b f1 f9 3f |........0...+..?| +00000030 c7 8d a2 e1 ff 36 0c d6 c2 f1 |.....6....| diff --git a/src/crypto/tls/testdata/Client-TLSv12-RenegotiateOnce b/src/crypto/tls/testdata/Client-TLSv12-RenegotiateOnce index 8456e3abf7..868b527396 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-RenegotiateOnce +++ b/src/crypto/tls/testdata/Client-TLSv12-RenegotiateOnce @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 eb da 48 1d 79 |....]...Y....H.y| -00000010 90 f6 67 5b 69 7b 40 07 20 12 0b 12 bd 94 75 e0 |..g[i{@. .....u.| -00000020 84 3f 0d a5 77 c6 36 18 25 79 3c 20 07 6c 6d c7 |.?..w.6.%y< .lm.| -00000030 b4 7e 2a 2b a5 7e 55 36 83 4d d9 94 9f 73 60 d8 |.~*+.~U6.M...s`.| -00000040 e9 55 05 b9 bf b0 64 84 09 fe c0 2a cc a8 00 00 |.U....d....*....| +00000000 16 03 03 00 5d 02 00 00 59 03 03 9e b0 dd 2b 97 |....]...Y.....+.| +00000010 86 13 76 2e 65 fc 27 bc fd 01 c0 05 86 b9 e3 bd |..v.e.'.........| +00000020 b9 46 3b 09 37 2a fe 3a eb ee e0 20 65 ad 7c 0b |.F;.7*.:... e.|.| +00000030 1a 0b 9b da b0 8d 56 86 b6 e1 04 1b dd 5d 93 8e |......V......]..| +00000040 a9 ea b6 b7 17 c9 75 26 58 5a c5 37 cc a8 00 00 |......u&XZ.7....| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -63,188 +62,188 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 be 2a c0 |............ .*.| -000002d0 ce 61 d8 36 d0 41 4c 32 83 bb be 81 66 c8 cf cb |.a.6.AL2....f...| -000002e0 a2 d9 ff 9d 05 51 d9 52 bc 06 be 09 10 08 04 00 |.....Q.R........| -000002f0 80 00 d1 fc 8c 60 a1 8f 36 3d a5 53 62 06 dd 93 |.....`..6=.Sb...| -00000300 58 30 71 f6 a1 b8 bd c4 4e 44 2d 37 b8 38 d1 6f |X0q.....ND-7.8.o| -00000310 16 8d f6 6d 4a 7c af e2 a2 4a 55 b5 17 d2 61 a0 |...mJ|...JU...a.| -00000320 93 80 d4 a9 11 49 55 cf e3 d0 87 95 c9 c2 f6 d0 |.....IU.........| -00000330 44 6f 33 2b ae 4a 1d e4 1e 04 f5 32 ca d6 19 61 |Do3+.J.....2...a| -00000340 9c 8e 0d d1 1a f3 38 4b b3 c3 eb dd fb 04 40 b7 |......8K......@.| -00000350 f7 ef 1f f1 0a 23 08 21 2a b3 d9 f8 cf 2b 65 4c |.....#.!*....+eL| -00000360 47 92 52 18 61 5e f3 ad 58 36 26 09 bf 12 b6 ab |G.R.a^..X6&.....| -00000370 21 16 03 03 00 04 0e 00 00 00 |!.........| +000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 41 0e e9 |............ A..| +000002d0 28 d0 77 ab a1 9e 93 62 b1 ec d9 e4 17 7d cb 29 |(.w....b.....}.)| +000002e0 25 28 6f 7d de fa 2e 89 8c 02 f7 22 25 08 04 00 |%(o}......."%...| +000002f0 80 c9 63 f4 f2 99 a9 c3 dd 81 1b 3a c2 85 0a e7 |..c........:....| +00000300 0f a6 5d 71 54 42 9e b9 68 35 5f ff b5 f3 51 9f |..]qTB..h5_...Q.| +00000310 16 46 c3 55 44 15 34 22 6d 68 15 6f 86 60 36 27 |.F.UD.4"mh.o.`6'| +00000320 29 b1 f5 f3 21 5a c5 bc 95 b9 18 f3 57 7b f7 90 |)...!Z......W{..| +00000330 20 c1 41 f2 53 d2 a0 a6 4a c8 3b 2b 75 7d 27 84 | .A.S...J.;+u}'.| +00000340 fb 90 1c 9c 29 26 91 71 e8 25 0b 2a f1 76 b5 5c |....)&.q.%.*.v.\| +00000350 7f df 02 86 1c a9 ba 5a 4a 6c 25 95 1d 3c 51 21 |.......ZJl%..>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| -00000030 16 03 03 00 20 68 e5 aa 89 6f 05 45 05 68 e9 53 |.... h...o.E.h.S| -00000040 35 a0 9b 96 d9 6b ab 2c 7f e1 4c de 3e 06 c6 04 |5....k.,..L.>...| -00000050 bd 7c 28 fb db |.|(..| +00000030 16 03 03 00 20 5b d2 2a ad 40 50 6f a8 b8 70 d0 |.... [.*.@Po..p.| +00000040 b9 aa ab d5 d7 2a f1 2b f7 d7 9b cd 10 a5 80 e9 |.....*.+........| +00000050 d3 15 3f 4f 00 |..?O.| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 20 fd 74 c3 42 59 |.......... .t.BY| -00000010 0d 86 2a 1c c7 51 d9 98 2c 1e 5b bd 44 3e 97 3e |..*..Q..,.[.D>.>| -00000020 55 90 5e 74 45 b7 47 0f f7 3e d7 |U.^tE.G..>.| +00000000 14 03 03 00 01 01 16 03 03 00 20 dd 90 d8 8a 0a |.......... .....| +00000010 11 a6 30 9b b0 29 50 c8 b1 70 36 bc fb 84 6e 6d |..0..)P..p6...nm| +00000020 a9 5e 67 3c e2 2e 0b 09 b2 44 38 |.^g<.....D8| >>> Flow 5 (client to server) -00000000 17 03 03 00 16 b5 ca 44 da 63 57 7f 6c e9 95 a5 |.......D.cW.l...| -00000010 56 88 f1 98 dc 73 85 3f 36 66 6f |V....s.?6fo| +00000000 17 03 03 00 16 9f e0 6a fc e9 a2 bf cf b4 df 07 |.......j........| +00000010 ba b4 8b 8b 08 ca bd a7 d5 02 2a |..........*| >>> Flow 6 (server to client) -00000000 16 03 03 00 14 76 6b 6b 8c c1 38 cf 00 bf 20 c2 |.....vkk..8... .| -00000010 62 ae df 09 0e 61 61 bf 24 |b....aa.$| +00000000 16 03 03 00 14 ed 9b 22 44 dd b2 e2 c3 7e ab 0c |......."D....~..| +00000010 69 98 d0 7b 40 9e da e2 67 |i..{@...g| >>> Flow 7 (client to server) -00000000 16 03 03 01 38 0f c1 53 8f f5 61 aa 61 0a f4 de |....8..S..a.a...| -00000010 80 a6 92 99 a0 33 e6 90 5f b0 13 b7 be 93 0f 60 |.....3.._......`| -00000020 40 97 0a 3c dd 9f 22 fa c1 8f 1d 3d 11 c1 16 97 |@..<.."....=....| -00000030 c5 54 e4 08 fb 77 ff fb 51 fb 1a d1 a6 41 b8 4f |.T...w..Q....A.O| -00000040 a2 22 d7 11 8c 31 49 d7 d5 b2 16 02 2b 4d b6 ba |."...1I.....+M..| -00000050 7d 53 6c 5a 59 59 ec 54 00 c4 6b c3 bd 22 d1 b3 |}SlZYY.T..k.."..| -00000060 78 f8 e7 25 6e 67 b5 32 51 a6 60 5b 55 9a a0 f4 |x..%ng.2Q.`[U...| -00000070 ed e8 8c 8d 77 4b c3 04 9d b0 2a ed a0 bf 9f 03 |....wK....*.....| -00000080 fa e5 2e 17 9e 04 d6 6c 38 70 33 bc 90 eb 6f db |.......l8p3...o.| -00000090 33 9e 69 5f 44 8c 63 af 9f 6e 74 e0 a8 d2 1b 7d |3.i_D.c..nt....}| -000000a0 d1 11 ea f4 c5 49 2c 7a 98 ae f6 28 58 76 ac da |.....I,z...(Xv..| -000000b0 31 0d 7a c7 2d e6 8a 34 9d 37 26 c8 3e 44 ac df |1.z.-..4.7&.>D..| -000000c0 0b 4b 2c 4e 7c 63 ec 23 82 13 a3 87 ac f7 9a 08 |.K,N|c.#........| -000000d0 03 1c e9 ca 89 4a a8 93 37 a3 d6 1f fa dd c8 48 |.....J..7......H| -000000e0 4a 4a ba 4d 54 80 20 18 a6 e4 98 3d dd 81 58 ec |JJ.MT. ....=..X.| -000000f0 9f c0 5f 06 d6 29 04 76 38 1f d0 f4 3f fe 82 ab |.._..).v8...?...| -00000100 de cb 12 44 a2 96 eb ac d2 8d a1 76 37 85 71 80 |...D.......v7.q.| -00000110 de 8b 66 50 8e 41 17 cf 9b 2b 3a 7e 1d a3 e2 26 |..fP.A...+:~...&| -00000120 9f 60 1c 1e 89 06 d8 41 21 8d 3d ab 91 15 be 61 |.`.....A!.=....a| -00000130 6c 07 2a e7 55 8f 6c a5 13 51 9d cc 6f |l.*.U.l..Q..o| +00000000 16 03 03 01 34 0d de 90 41 3c 76 1d 54 9d c2 7e |....4...A?J..}......| +00000070 4c 1c fb 2c 88 4c 13 8d c8 d0 e3 7f f6 cb 2e ca |L..,.L..........| +00000080 cb 92 ae 30 fe ea 3c 3e ae 57 51 6a d6 98 5c d6 |...0..<>.WQj..\.| +00000090 19 85 72 bd 62 56 fa c2 ea 08 eb b4 d9 75 ac de |..r.bV.......u..| +000000a0 a5 40 8d 8b 1f c4 8f f6 6d b2 5f d1 6d fb 14 fa |.@......m._.m...| +000000b0 e2 92 9e 04 37 d3 60 83 28 4a f9 92 8c b3 4a d2 |....7.`.(J....J.| +000000c0 ce 6d 95 e4 40 79 7c 3d 98 11 e7 da 5c 56 0a 95 |.m..@y|=....\V..| +000000d0 e0 6f 36 80 07 da 29 ef 88 44 db cd 2b 5a a5 27 |.o6...)..D..+Z.'| +000000e0 56 5a 94 49 aa 51 ae 48 f9 12 8d df e0 2a a7 67 |VZ.I.Q.H.....*.g| +000000f0 7f 55 3e 7a b6 bb 28 e3 a8 d9 44 67 e9 03 8f e5 |.U>z..(...Dg....| +00000100 2b 40 a3 37 fb e4 51 0a 18 8f bb 14 2e 5b 62 93 |+@.7..Q......[b.| +00000110 ab a4 40 d7 5f 15 12 cf 93 74 37 d0 ec 14 d3 a3 |..@._....t7.....| +00000120 eb 6f 61 35 4a c4 b5 d7 d1 bb ae fe 11 6d 04 ac |.oa5J........m..| +00000130 58 72 a6 72 b6 06 9d 93 a5 |Xr.r.....| >>> Flow 8 (server to client) -00000000 16 03 03 00 85 2f 7c ac ad 05 49 3c 82 9c 82 20 |...../|...I<... | -00000010 0d 77 42 bd 9d 90 c3 2f ab c3 c2 60 a4 18 77 23 |.wB..../...`..w#| -00000020 02 5b e8 e0 3a f3 b7 ee b8 eb d8 7e c5 f6 52 9e |.[..:......~..R.| -00000030 d7 29 b8 1b 51 62 c0 b9 02 79 df 8a 3a 15 ec 74 |.)..Qb...y..:..t| -00000040 9e 2d cf c9 b1 1f 0b d3 7a b5 95 4d 74 80 5a 31 |.-......z..Mt.Z1| -00000050 57 f9 dc 03 be e5 d3 0b 2d 6e 55 1a 58 b4 43 a8 |W.......-nU.X.C.| -00000060 c6 e2 d1 c1 26 30 f5 3e 25 13 b6 4d df de 16 fd |....&0.>%..M....| -00000070 fd 29 85 e8 7f bf 54 74 4d 40 9a 58 c9 d2 e6 af |.)....TtM@.X....| -00000080 e4 fe 8d fc 0f 2e bc 1a 70 25 16 03 03 02 69 23 |........p%....i#| -00000090 0f f9 ff b3 8a ba 05 c3 be fb 3b 29 c5 4c 3f 2e |..........;).L?.| -000000a0 87 c5 2e ec 88 48 24 b7 25 a8 d2 b9 00 7b aa 4c |.....H$.%....{.L| -000000b0 bc 04 96 79 ed a3 e9 3d cf 64 2b 7f 9c 6b b8 3a |...y...=.d+..k.:| -000000c0 53 c3 70 96 39 64 5d 65 c4 aa e3 88 18 7e f6 8c |S.p.9d]e.....~..| -000000d0 36 2b 9b 19 4e 91 40 a3 6c 49 f5 37 96 cb ec f1 |6+..N.@.lI.7....| -000000e0 77 ea 92 dc 17 26 cd 7a 3a 94 30 6a 25 ec 98 6d |w....&.z:.0j%..m| -000000f0 87 ed 9b 30 1e c3 5a 40 84 93 34 a4 d3 5a d3 1b |...0..Z@..4..Z..| -00000100 10 94 9a 92 73 d3 6f 4d 81 72 08 5a dd 6f f0 cd |....s.oM.r.Z.o..| -00000110 ee 45 cf 16 40 a1 60 e8 f9 35 9a 8a 03 79 2f 7c |.E..@.`..5...y/|| -00000120 4a 08 8d 3b a9 0f 9c f8 1e 86 b7 f5 e8 da 09 06 |J..;............| -00000130 9b 1e f7 2d 58 22 2b d0 7d 3d 25 63 52 c4 20 e6 |...-X"+.}=%cR. .| -00000140 a1 c5 37 52 af a2 32 a5 78 fb fb f6 d4 6c 58 cd |..7R..2.x....lX.| -00000150 3b 4d 0e b3 6c 7c 00 0a dc 0e b6 7b f9 b7 42 7e |;M..l|.....{..B~| -00000160 0e a3 84 78 69 d5 9e 05 c1 17 4c d5 b0 5b 0a 5b |...xi.....L..[.[| -00000170 d1 27 dc 7c b6 44 a1 16 0c 97 80 18 2e 7b 5a fe |.'.|.D.......{Z.| -00000180 ca a4 05 36 76 6a a1 89 3e ad 1c 4a 60 7a 35 64 |...6vj..>..J`z5d| -00000190 fb fc db 28 a9 96 68 86 8d 77 e9 c0 60 1d ed 18 |...(..h..w..`...| -000001a0 9d 6f c4 4c e9 70 60 66 03 ef 28 99 f3 4b 93 03 |.o.L.p`f..(..K..| -000001b0 06 ef be de 5a 85 de c0 9a 2f 45 f2 77 bd 2a e3 |....Z..../E.w.*.| -000001c0 3d f3 6d 3b e8 20 f0 fd a6 9a cf 43 cf 83 7e 77 |=.m;. .....C..~w| -000001d0 4b 71 dc 8a d8 4d 85 a5 2d 84 3a ff 75 40 d8 7c |Kq...M..-.:.u@.|| -000001e0 f4 2f ff 12 86 1a a6 9c dc 28 28 0f 33 40 63 f8 |./.......((.3@c.| -000001f0 de 3f 9d 7c ae 9f b9 3a 21 be e9 e7 ae 52 9b 85 |.?.|...:!....R..| -00000200 2b a6 44 78 e1 23 7d 03 eb a4 c0 59 2d 0c d6 e4 |+.Dx.#}....Y-...| -00000210 8f 6c 37 bc d5 0c 7f e5 28 e1 5a 0c 65 0b 57 c7 |.l7.....(.Z.e.W.| -00000220 d2 61 13 b0 dc 19 4b a0 22 cc d9 1f 42 e9 3a 92 |.a....K."...B.:.| -00000230 ce 4e 37 c9 1b 82 7c 0c af b5 3f 5a a8 f4 c4 fb |.N7...|...?Z....| -00000240 fe dc 4a 19 32 da af aa 7c bf f7 2a b0 dc af ce |..J.2...|..*....| -00000250 c9 96 a1 30 b5 f8 4f 07 ca e6 db cd 71 c7 09 75 |...0..O.....q..u| -00000260 0b 7d 30 d9 5d 02 b0 b7 ff fc 92 11 e0 1e 37 40 |.}0.].........7@| -00000270 2f eb 50 8d 65 53 db 52 1c e8 42 2f 89 0d 61 cf |/.P.eS.R..B/..a.| -00000280 a0 a6 10 0f c7 05 c3 6a 32 eb b1 ca 26 f5 1d fc |.......j2...&...| -00000290 96 ec 55 f9 8a e6 05 13 d3 0a fb 74 6a 9a 3f 4f |..U........tj.?O| -000002a0 ca ce 4e 29 2f 46 4c ef 47 13 72 72 aa 46 c4 12 |..N)/FL.G.rr.F..| -000002b0 9a a7 f1 90 b2 ea b2 09 d4 db 77 c7 31 7d 6c d6 |..........w.1}l.| -000002c0 51 9f 97 91 f6 ba 0a fb a7 63 3e 68 e3 f2 50 5d |Q........c>h..P]| -000002d0 b1 33 b8 8b f1 91 68 df 3f b3 9f 5d a7 b5 c1 93 |.3....h.?..]....| -000002e0 bf 5d 8d 3e 90 05 88 bc d9 43 d0 9d 25 17 c1 4a |.].>.....C..%..J| -000002f0 4a 7f e5 73 d5 0b d6 a5 16 03 03 00 bc 1d 81 1d |J..s............| -00000300 dd 11 fe e7 08 d4 0a 50 1a 15 75 a4 0b 49 03 96 |.......P..u..I..| -00000310 8a 1f ba 30 e9 e3 55 c2 a7 27 cf 3a f6 4c 0a 3d |...0..U..'.:.L.=| -00000320 01 5a 08 9a 88 4d ac 0b 7c 84 5c 15 81 84 2d a7 |.Z...M..|.\...-.| -00000330 8e 4b 92 0b 7c de e9 91 20 07 ca 16 cd 43 8f ec |.K..|... ....C..| -00000340 db 7a 16 c9 2c 19 25 23 07 01 4f 68 cc 09 af e0 |.z..,.%#..Oh....| -00000350 cf d7 7c 2f e0 e7 65 3c 1a 24 c4 d8 b2 ae b9 25 |..|/..e<.$.....%| -00000360 20 7b 26 e5 50 a6 e1 b0 a6 18 e1 67 79 f3 a9 f0 | {&.P......gy...| -00000370 bf b1 16 34 47 75 f2 6c 2d 9c ce c4 c8 7b 7d c5 |...4Gu.l-....{}.| -00000380 6f 19 3a 2f 3a 5b 3c ce 9f 8d a2 1d 77 ba 9d 15 |o.:/:[<.....w...| -00000390 7a ee b4 88 62 f1 9e 04 4c be 48 ea 0f 2f e5 cf |z...b...L.H../..| -000003a0 c0 0b 11 0b 67 9e c7 1c 3d 6b da 86 31 b0 fb 9c |....g...=k..1...| -000003b0 55 94 18 26 7a 0e 9b e7 99 16 03 03 00 4a c4 b6 |U..&z........J..| -000003c0 b8 bf cc 7e 5e 8f c4 a0 84 53 bd 28 e4 1d 47 48 |...~^....S.(..GH| -000003d0 88 52 dc 46 46 e3 43 60 d2 90 62 c0 0f f5 37 5a |.R.FF.C`..b...7Z| -000003e0 31 4a b1 c8 45 80 b8 91 71 45 f7 64 08 ae c7 c7 |1J..E...qE.d....| -000003f0 9c ab 03 57 fb d6 04 ff 11 3f be 41 a8 1e a6 d1 |...W.....?.A....| -00000400 18 d7 ce 5d df 0a 12 d2 16 03 03 00 14 ea 34 3b |...]..........4;| -00000410 30 86 2c da 14 f5 a8 c4 0b 08 b9 1a c5 5c 7d ba |0.,..........\}.| -00000420 82 |.| +00000000 16 03 03 00 85 8b 8d 61 42 37 50 ee 69 d8 fb e9 |.......aB7P.i...| +00000010 89 a4 04 63 5d 87 a4 31 cc 22 26 c0 2c 22 1a 73 |...c]..1."&.,".s| +00000020 cc f0 9f be 65 c4 e0 ad 6d b0 b5 d3 86 2c 0b 59 |....e...m....,.Y| +00000030 e6 ae 58 38 b5 5f 4f 6e 7c ec e9 27 23 5f 4a 92 |..X8._On|..'#_J.| +00000040 78 5f cc 9f 7f 2b bb 2c dd 04 17 ea d4 87 b9 6d |x_...+.,.......m| +00000050 d0 1e 35 01 b4 4d 5d 73 6a 9f de 1d 71 47 78 d6 |..5..M]sj...qGx.| +00000060 89 dc c2 d6 5c 69 0c dc bb 7b 59 60 56 47 e9 5c |....\i...{Y`VG.\| +00000070 04 3e 3c 93 18 9b 40 4b 95 1f 20 e3 17 c6 ab 35 |.><...@K.. ....5| +00000080 db 3f 88 d7 4b 89 5a 53 b7 a9 16 03 03 02 69 85 |.?..K.ZS......i.| +00000090 49 cc 00 5a 45 40 9d be 80 06 97 16 a0 c0 dc bb |I..ZE@..........| +000000a0 32 62 18 88 31 3b 14 ec 9d f2 3f ed c0 36 ad bb |2b..1;....?..6..| +000000b0 69 fa 32 f5 13 54 2b 77 f3 db 6e 20 0a 2b 5c a5 |i.2..T+w..n .+\.| +000000c0 d8 aa 5a 63 8d c1 51 50 41 f6 6c f7 ef 2f 15 81 |..Zc..QPA.l../..| +000000d0 85 af 6e e5 01 95 9a 5e 70 26 cb c1 c8 89 3f b8 |..n....^p&....?.| +000000e0 3d 5a 1b 68 a6 25 08 48 ad dd 29 db bf ce 75 44 |=Z.h.%.H..)...uD| +000000f0 ca cd 92 79 47 d8 25 f1 23 9a 63 62 15 05 d8 2c |...yG.%.#.cb...,| +00000100 c0 30 a4 65 a7 f9 89 a4 fe 87 32 21 07 24 d9 16 |.0.e......2!.$..| +00000110 64 26 48 75 ab a7 00 e1 9b 48 5c 77 3d 66 18 69 |d&Hu.....H\w=f.i| +00000120 35 a9 4c 03 f5 9f 42 ff 50 98 73 b1 82 16 fd ff |5.L...B.P.s.....| +00000130 94 fd aa 3c 46 1f b5 99 fd de ab 2e 6a 24 00 5a |.........."| +00000300 3d 8d 48 5d 28 cd ae 94 db 95 2e a6 44 77 da d5 |=.H](.......Dw..| +00000310 a1 09 7c a3 4c 3f a6 18 80 92 cf 5c 77 9d 18 5d |..|.L?.....\w..]| +00000320 43 78 05 bb cb 8e 27 7c cc 2e 9c 54 95 ff 1c 74 |Cx....'|...T...t| +00000330 48 fb df 47 e8 e1 24 94 94 5d cc 2c b2 df 48 6c |H..G..$..].,..Hl| +00000340 22 1e 61 f1 e3 c6 56 fb 79 70 b0 ab c5 70 ca 7f |".a...V.yp...p..| +00000350 c0 32 8d 6d a5 55 6d 94 8c 7b 9d da 0b 35 d1 da |.2.m.Um..{...5..| +00000360 77 85 01 66 15 be 10 c3 3c 9b 80 61 b3 c0 1a 29 |w..f....<..a...)| +00000370 22 d1 d1 ba 4a ea 01 58 72 94 79 f0 6e 5f 36 23 |"...J..Xr.y.n_6#| +00000380 8a cf 16 fa 2c 5f 6d dd 54 61 df bc 6f 91 d4 df |....,_m.Ta..o...| +00000390 e7 6f 50 8f 9c 27 04 04 19 80 10 a2 8d a5 61 81 |.oP..'........a.| +000003a0 06 1f b0 79 87 c0 95 87 f7 d8 87 22 75 a5 87 30 |...y......."u..0| +000003b0 f4 33 6d cb 59 f7 18 75 0f 16 03 03 00 4a d3 e9 |.3m.Y..u.....J..| +000003c0 2e 47 65 f2 29 70 4c 74 3f e9 13 88 e7 66 c6 73 |.Ge.)pLt?....f.s| +000003d0 0f e4 7a 8f 0e 49 49 39 90 e7 ff d4 1f 8a d6 c6 |..z..II9........| +000003e0 91 16 f6 a6 fe 60 d8 ba 26 a6 5e 44 f5 76 88 63 |.....`..&.^D.v.c| +000003f0 10 d0 89 2f 6b ae 55 64 13 0c 63 76 69 df 6a 4a |.../k.Ud..cvi.jJ| +00000400 74 15 51 0b 4d 74 db 49 16 03 03 00 14 f2 0f e7 |t.Q.Mt.I........| +00000410 38 90 33 ff 5e 20 60 42 32 40 72 2c c8 70 d7 ba |8.3.^ `B2@r,.p..| +00000420 a1 |.| >>> Flow 9 (client to server) -00000000 16 03 03 02 69 ee f1 51 ac 2b 75 2a 6b 31 f9 25 |....i..Q.+u*k1.%| -00000010 5a 00 97 42 02 d8 b8 e0 2a a6 0f c2 eb 89 75 42 |Z..B....*.....uB| -00000020 4c 94 81 59 d0 26 4b e4 51 0a 77 ac bd bc 84 8e |L..Y.&K.Q.w.....| -00000030 fa 68 9c 1c 38 90 08 35 96 d2 7e e9 ef 8d 00 78 |.h..8..5..~....x| -00000040 1e 30 cd 92 df 44 d8 89 fc e5 ce 65 43 65 be db |.0...D.....eCe..| -00000050 92 5e 56 0c 8e 86 cf 8f 62 4c 9a a2 ab 8b 0c f6 |.^V.....bL......| -00000060 13 b4 57 76 fb c4 de b1 68 1c ca c1 23 3d 0d 6a |..Wv....h...#=.j| -00000070 be ab 0f 03 19 3a 8c 36 0a ed 1c 2b 59 7a b5 f2 |.....:.6...+Yz..| -00000080 9c 29 0b e1 ab 74 ad b4 fc f9 ab 18 bf b0 3d 5e |.)...t........=^| -00000090 57 70 be 2f 57 7c cc cd 4b 0d e3 c7 d6 74 d8 ae |Wp./W|..K....t..| -000000a0 79 b1 f8 aa 28 b7 a4 c7 27 77 a0 20 69 81 f6 a2 |y...(...'w. i...| -000000b0 76 bc 96 fd 2d 03 9c 97 21 5d ea 50 82 5a 6d 00 |v...-...!].P.Zm.| -000000c0 7a 80 19 09 4b 4a 8c cc f4 b4 74 62 60 b6 71 44 |z...KJ....tb`.qD| -000000d0 d5 06 e0 79 45 cc 78 4a ee 4c d6 bb 96 70 ac cb |...yE.xJ.L...p..| -000000e0 3e 94 d6 46 a3 96 15 4f 70 f0 1a 61 13 ec 6d 0d |>..F...Op..a..m.| -000000f0 be ce cd c7 ee 5e c8 ae cf 1f f1 43 dd 29 21 8b |.....^.....C.)!.| -00000100 f1 f0 32 5a 4d 02 09 7f c0 15 be 33 aa eb 55 97 |..2ZM......3..U.| -00000110 ea 74 02 dd 74 22 40 b5 33 7d cf ca be 07 0d cb |.t..t"@.3}......| -00000120 82 a4 62 56 b1 68 f8 25 d7 1d 57 31 83 cc 7b e9 |..bV.h.%..W1..{.| -00000130 8a 9f d5 b5 d1 99 da 4b 55 87 c2 d3 99 ea 34 3c |.......KU.....4<| -00000140 01 61 5e d4 f2 4a 40 b4 ff 4b eb 68 c7 5e a7 7b |.a^..J@..K.h.^.{| -00000150 cf d6 2d 99 ea 6d df a8 b3 74 d1 ad 22 22 81 ae |..-..m...t..""..| -00000160 58 a6 1b 87 cb 75 d7 2c 5b a6 4e 04 28 fb f7 6e |X....u.,[.N.(..n| -00000170 2a 52 c9 19 21 d8 3c ee 0c 8d 0c 55 d9 7a 1f 75 |*R..!.<....U.z.u| -00000180 1e 14 4f c2 7c e3 a1 b7 bd 23 32 40 68 d7 9f d7 |..O.|....#2@h...| -00000190 bc e4 57 62 d2 ba 95 3f 1a c0 2f cf 31 6b 41 e6 |..Wb...?../.1kA.| -000001a0 92 91 91 6f 49 4b 42 fb ae e2 82 c2 ac 5b 5d 0f |...oIKB......[].| -000001b0 f1 9f e7 18 9d 1d 35 f6 6f 51 d2 05 ed a2 ab 55 |......5.oQ.....U| -000001c0 38 19 ec 37 ac f2 25 1d 6c 9e f7 30 87 98 03 96 |8..7..%.l..0....| -000001d0 d6 ae dd 39 74 8f 39 c9 b8 5c aa b2 88 60 5d 96 |...9t.9..\...`].| -000001e0 7e 3f fe 21 91 41 e1 e9 88 8c 63 20 dc 8d 60 7f |~?.!.A....c ..`.| -000001f0 29 36 bd 81 7f 90 48 47 e4 d1 c1 f6 07 06 4f 5d |)6....HG......O]| -00000200 2e fa ba e7 8c 57 0d f7 82 80 31 68 a3 78 f9 73 |.....W....1h.x.s| -00000210 2d 31 0a 76 b1 08 5e 28 af 97 e9 4f 00 b3 eb 99 |-1.v..^(...O....| -00000220 81 0a 2f 64 53 24 63 eb 16 10 67 97 77 e4 52 98 |../dS$c...g.w.R.| -00000230 13 d2 bb a5 26 6a 4a c9 6d 9a f7 4c 99 af 05 3b |....&jJ.m..L...;| -00000240 da 91 d0 1e bf bc e7 49 90 1e 9f 56 03 38 77 28 |.......I...V.8w(| -00000250 a2 78 ca 38 51 ec a4 96 70 f2 23 24 ef d2 5e 70 |.x.8Q...p.#$..^p| -00000260 d0 12 d8 f7 75 64 66 be f9 30 40 13 30 ca 16 03 |....udf..0@.0...| -00000270 03 00 35 2e 74 d1 77 b1 56 b9 b6 33 07 39 6d 6b |..5.t.w.V..3.9mk| -00000280 c9 c0 9e b1 35 5b 1c 5e 8b c7 15 b8 12 90 3f 62 |....5[.^......?b| -00000290 01 4a bd 93 2e 5d 0b 6f 9a 33 f3 0f f3 ce 8b 6e |.J...].o.3.....n| -000002a0 a2 fb 81 8b 69 9a 3b db 16 03 03 00 98 70 68 40 |....i.;......ph@| -000002b0 c3 43 46 fc 9b 8a 1d 3f e2 00 0e e3 a5 a1 d3 b3 |.CF....?........| -000002c0 4e 99 01 15 d1 91 6c be 4d 05 17 f9 67 14 f5 03 |N.....l.M...g...| -000002d0 86 f0 f3 c1 b4 74 8d dc d5 74 d7 b1 f3 f7 5c b1 |.....t...t....\.| -000002e0 12 20 5e 64 aa e5 fa b4 d5 dd 34 29 42 a4 4e 46 |. ^d......4)B.NF| -000002f0 9a e0 98 a7 9a 6c c1 b0 bc d7 4d b9 a8 1c 8d 51 |.....l....M....Q| -00000300 5b 11 bd a3 a9 1c d7 c7 d2 c7 e1 04 a0 6c be a0 |[............l..| -00000310 74 81 e1 9f f3 a6 ac dc e6 ac 76 46 03 28 d3 b1 |t.........vF.(..| -00000320 ab a9 77 b0 84 f2 61 ff 39 a0 e5 09 a0 ad fa 41 |..w...a.9......A| -00000330 a9 09 4d fb 3f 46 11 73 71 cd 80 1b 1f 5a 43 c9 |..M.?F.sq....ZC.| -00000340 b0 b0 df 4a 03 14 03 03 00 11 d1 98 c3 73 d0 be |...J.........s..| -00000350 45 ea 73 e7 71 1c 78 97 4a b9 05 16 03 03 00 20 |E.s.q.x.J...... | -00000360 5e e3 1f 19 aa 89 11 71 09 fb 4c f4 36 d4 3a 4b |^......q..L.6.:K| -00000370 3e 89 3c 78 99 1a 63 7b 45 22 55 39 74 7f d6 5f |>..c....| +000000e0 6c b5 0d 0c d3 c6 6d 47 2e a8 3a d8 ec fd d3 42 |l.....mG..:....B| +000000f0 ef 8b e8 75 a6 04 06 3b 5e 57 ae a3 10 2e 6d 01 |...u...;^W....m.| +00000100 0e ea 94 e6 78 1b 91 f0 a0 1e 55 d3 25 13 15 ac |....x.....U.%...| +00000110 eb a4 7c c3 66 83 62 00 a3 d2 f5 7c 64 c6 39 fb |..|.f.b....|d.9.| +00000120 6d ee 01 50 d4 13 5d 10 5f 31 30 09 90 91 64 ad |m..P..]._10...d.| +00000130 f1 c5 4b ed 9d ef 2a 71 e5 7a b2 5d a8 57 bc b8 |..K...*q.z.].W..| +00000140 1f 32 c6 f0 61 f0 08 9e 07 9b d3 99 5b 5e a5 32 |.2..a.......[^.2| +00000150 1f 8a f7 30 1f e9 e6 39 b1 5a c6 a5 22 c8 98 49 |...0...9.Z.."..I| +00000160 04 f2 58 4d e2 15 e6 cd d1 2b 05 54 81 cc b8 33 |..XM.....+.T...3| +00000170 5d 26 52 65 95 32 84 01 f6 05 fa 19 58 c6 57 53 |]&Re.2......X.WS| +00000180 c8 d7 3d ef 56 4e 6e e4 17 45 1c bc 40 ee 06 32 |..=.VNn..E..@..2| +00000190 60 74 9e 62 02 47 52 a8 92 57 26 1f ba 2d 93 67 |`t.b.GR..W&..-.g| +000001a0 94 46 0f c4 0d f5 df 75 b0 d9 27 02 56 f3 82 e1 |.F.....u..'.V...| +000001b0 da 1c 3b 3e 97 93 c8 2d 12 bd b4 5b 36 7a 5c bf |..;>...-...[6z\.| +000001c0 27 9a 75 11 f9 4d 9b c0 ae 6b be 71 5f 37 33 b5 |'.u..M...k.q_73.| +000001d0 4e d4 5a fb 98 71 c5 77 8c fc e2 f3 91 73 35 f4 |N.Z..q.w.....s5.| +000001e0 e7 13 b1 ea bd c2 a9 46 b9 ea 88 06 58 a2 49 a2 |.......F....X.I.| +000001f0 97 2b cf 1b 25 a3 71 a0 22 95 4c 54 81 eb 41 7f |.+..%.q.".LT..A.| +00000200 80 15 82 ec 19 0c f8 a3 21 fe 37 2e e1 ca 34 02 |........!.7...4.| +00000210 5d ec 78 d9 eb 99 93 5d 96 26 cd 4c 56 3a 35 6a |].x....].&.LV:5j| +00000220 7f d0 0c c7 b7 c3 80 c6 fe d0 04 54 00 8c 4c 8b |...........T..L.| +00000230 43 f4 36 b8 ea 51 35 3c 5e b5 b9 45 dc d2 19 bd |C.6..Q5<^..E....| +00000240 d2 2a 95 bc 7f 22 43 4f 84 be bd 7b ab a8 5c 4d |.*..."CO...{..\M| +00000250 28 99 e6 e5 05 33 05 38 be 17 55 80 2d e1 de cf |(....3.8..U.-...| +00000260 39 4e 5b 7d 89 b4 a6 d3 0a e3 fd 47 e1 2c 16 03 |9N[}.......G.,..| +00000270 03 00 35 f3 2d 2c 7b fa 06 39 06 40 27 5b ea 9e |..5.-,{..9.@'[..| +00000280 2f 4a 6c 32 df 62 c3 bc af ed 21 6a 1a 34 82 cf |/Jl2.b....!j.4..| +00000290 73 e5 b9 1d 8d 42 3d 8e b7 e6 1c 0a e0 81 3e cd |s....B=.......>.| +000002a0 88 23 f3 56 55 09 e2 6e 16 03 03 00 98 73 0f 59 |.#.VU..n.....s.Y| +000002b0 0e 1b 1b d1 db db 6d 47 d9 05 f8 e1 29 32 e5 16 |......mG....)2..| +000002c0 f9 f6 24 2b 0f 2d bb 74 da fd 75 9b ec 6a 3f 02 |..$+.-.t..u..j?.| +000002d0 c8 3a ab 23 ec cb 77 c6 d7 7b ba ce 29 85 66 54 |.:.#..w..{..).fT| +000002e0 ab df c9 74 2a 50 b5 cd 45 03 e2 ce 6f d3 d0 f1 |...t*P..E...o...| +000002f0 1a 3e e4 c0 34 72 e1 53 1e 69 9a d7 41 4f d4 3a |.>..4r.S.i..AO.:| +00000300 31 af 1a 0b 83 82 e7 6c 4f f6 9a d5 84 bb 9a 14 |1......lO.......| +00000310 e3 ec 04 12 c8 83 9c c8 d9 81 c1 c9 16 db 35 6e |..............5n| +00000320 0f af a0 b3 e6 a9 2b ad a5 1f cd a0 fb 45 01 84 |......+......E..| +00000330 ae b5 42 49 21 d8 29 06 0a 0e e8 26 8e f4 f1 56 |..BI!.)....&...V| +00000340 c2 7c 8f d6 4a 14 03 03 00 11 c6 06 37 68 e0 2b |.|..J.......7h.+| +00000350 dd 32 2a b5 c7 b6 ad e2 c8 7c d8 16 03 03 00 20 |.2*......|..... | +00000360 1d 80 95 df 2d d3 38 50 a2 2d bc 09 50 e4 e8 47 |....-.8P.-..P..G| +00000370 5f 3e 26 03 5e d3 9b 5a ee ed d4 bb cb da 05 5b |_>&.^..Z.......[| >>> Flow 10 (server to client) -00000000 14 03 03 00 11 f4 04 c6 5c 08 6d 53 9b 6e 59 7f |........\.mS.nY.| -00000010 75 c7 d9 a9 95 24 16 03 03 00 20 f3 82 ea ea a8 |u....$.... .....| -00000020 ee 3f 83 7f f4 1e 31 d8 66 32 b7 d9 46 13 ac b5 |.?....1.f2..F...| -00000030 cc b0 e6 ac 06 4f 65 3b 2e 57 f6 17 03 03 00 19 |.....Oe;.W......| -00000040 c7 c9 1c 1c 64 a0 c0 90 03 96 5e 94 60 79 f0 85 |....d.....^.`y..| -00000050 e7 41 db ca 6e 21 5a dd 2a |.A..n!Z.*| +00000000 14 03 03 00 11 13 75 b3 44 ec 4c 6b 24 d3 52 90 |......u.D.Lk$.R.| +00000010 28 c1 47 92 5c 0d 16 03 03 00 20 c2 61 ed 34 d2 |(.G.\..... .a.4.| +00000020 c5 cf fd b3 31 3d 1d 5f 30 87 18 65 01 47 da 0f |....1=._0..e.G..| +00000030 d9 eb 4f 0f 50 2e 02 86 fe eb 13 17 03 03 00 19 |..O.P...........| +00000040 3f ac 26 1c 16 0e 16 bf b1 d3 80 86 dd c6 e2 b6 |?.&.............| +00000050 3f 5a 0b 0c 3e 7d 3b a8 d5 |?Z..>};..| >>> Flow 11 (client to server) -00000000 15 03 03 00 12 7a a9 2e 4b 21 84 78 cb 46 52 f3 |.....z..K!.x.FR.| -00000010 f9 8e 75 3b 7e 77 a1 |..u;~w.| +00000000 15 03 03 00 12 ea 81 9d df ec c1 0c 3d 21 8b fe |............=!..| +00000010 b5 24 d8 92 43 1d 3d |.$..C.=| diff --git a/src/crypto/tls/testdata/Client-TLSv12-RenegotiateTwice b/src/crypto/tls/testdata/Client-TLSv12-RenegotiateTwice index 1c7fadb2cd..e83ad4b285 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-RenegotiateTwice +++ b/src/crypto/tls/testdata/Client-TLSv12-RenegotiateTwice @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 c5 11 e0 7f 6f |....]...Y......o| -00000010 86 2d f5 8f c2 ba 8b a7 1e 15 94 51 e1 d0 ab 40 |.-.........Q...@| -00000020 37 5b 68 a7 ee 6f de ae d2 4b b2 20 a8 02 85 68 |7[h..o...K. ...h| -00000030 2c 18 6b 1a 6c ba 64 81 8a 0f 72 a6 a3 3a 1a ee |,.k.l.d...r..:..| -00000040 6a 9a d6 9a ce 03 78 11 11 b6 fa 7a cc a8 00 00 |j.....x....z....| +00000000 16 03 03 00 5d 02 00 00 59 03 03 36 29 60 e0 b5 |....]...Y..6)`..| +00000010 ee 59 a6 3b 1a de 96 8a 51 0c c1 15 30 ce 6a 70 |.Y.;....Q...0.jp| +00000020 ca 5b fa a5 86 f4 59 79 44 cd 73 20 ad b7 a9 d5 |.[....YyD.s ....| +00000030 c1 aa a6 49 6d a8 36 a9 bf 40 1e 3a d4 2c 21 4a |...Im.6..@.:.,!J| +00000040 5d aa fa 75 80 d4 cb fc be 2b 41 36 cc a8 00 00 |]..u.....+A6....| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -63,290 +62,290 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 42 e7 5a |............ B.Z| -000002d0 6b 3f 36 51 1f 06 45 c8 de 17 f8 19 9c a2 cb bb |k?6Q..E.........| -000002e0 89 52 59 e0 1a d5 c4 1e 42 0c 9b 93 14 08 04 00 |.RY.....B.......| -000002f0 80 cb 39 db 19 17 fd 12 ec 25 87 ce d2 76 8c c7 |..9......%...v..| -00000300 aa 30 e3 50 0c 22 a6 73 d0 e5 b0 b6 b6 3c 5a ab |.0.P.".s.....{W...*| +00000350 85 0d b0 5f bf a5 8e 74 55 72 dc 2c 5c 60 52 93 |..._...tUr.,\`R.| +00000360 1e 28 9d 36 9f fd da a5 3b 51 96 4e 12 d6 d4 ca |.(.6....;Q.N....| +00000370 d3 16 03 03 00 04 0e 00 00 00 |..........| >>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| -00000030 16 03 03 00 20 c0 2e 41 33 99 c3 00 90 54 c8 ea |.... ..A3....T..| -00000040 64 b2 f5 74 5d 3c b8 eb 0c 6e 12 bb 96 01 13 46 |d..t]<...n.....F| -00000050 1f 7d e9 3a 15 |.}.:.| +00000030 16 03 03 00 20 e4 80 79 12 42 80 88 c3 66 6b 9b |.... ..y.B...fk.| +00000040 a2 03 59 f9 a3 54 2f 7f 03 de 90 97 1d cb 48 08 |..Y..T/.......H.| +00000050 19 a4 bb 13 64 |....d| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 20 50 98 09 8a ad |.......... P....| -00000010 b9 ba cb d8 d2 5c a8 69 86 da 30 da 39 ed 3b db |.....\.i..0.9.;.| -00000020 5c eb 34 08 4c ca 51 b2 63 0e 08 |\.4.L.Q.c..| +00000000 14 03 03 00 01 01 16 03 03 00 20 9e 59 22 68 f2 |.......... .Y"h.| +00000010 3c 38 7d cf 43 eb 77 73 94 6c 35 e5 3f 3e 7e 03 |<8}.C.ws.l5.?>~.| +00000020 29 96 e8 c6 f7 5c b4 39 c3 77 61 |)....\.9.wa| >>> Flow 5 (client to server) -00000000 17 03 03 00 16 62 a6 a2 7c 1a 5e 4b 4e 58 86 12 |.....b..|.^KNX..| -00000010 35 8b 6e d9 00 b0 f2 31 46 e6 2a |5.n....1F.*| +00000000 17 03 03 00 16 ec 02 9b 89 68 8b 8a c6 e1 36 f1 |.........h....6.| +00000010 4a b7 c4 d5 63 0a e8 d9 2c 1f ce |J...c...,..| >>> Flow 6 (server to client) -00000000 16 03 03 00 14 b0 3a a3 b6 16 b7 9f 65 f8 7f 64 |......:.....e..d| -00000010 8d 4c 73 1f 41 1b b0 5c 65 |.Ls.A..\e| +00000000 16 03 03 00 14 a8 ab 9e 3c 00 e4 6f b3 26 dd 3a |........<..o.&.:| +00000010 67 ab ee 28 a0 a1 65 83 91 |g..(..e..| >>> Flow 7 (client to server) -00000000 16 03 03 01 38 a3 ce 00 8f a3 63 85 d9 cd 78 93 |....8.....c...x.| -00000010 55 94 fc 68 84 5c fc c5 a3 c3 d1 cc 09 83 e0 a0 |U..h.\..........| -00000020 b2 b7 d4 10 6f aa 32 99 a5 53 e0 c0 ae 8c 6a e2 |....o.2..S....j.| -00000030 90 8f 46 ac 71 ce 4e 4f 0a 29 cd 70 ed 8a cc 1e |..F.q.NO.).p....| -00000040 53 de d1 75 72 a2 06 36 28 6e fd d0 60 00 ff c6 |S..ur..6(n..`...| -00000050 a8 18 1e f8 1c 1a 7d e9 d8 16 36 a4 42 d5 59 ad |......}...6.B.Y.| -00000060 d9 01 45 e4 03 8b c8 f3 b7 2f 0f 77 62 69 ad 35 |..E....../.wbi.5| -00000070 16 ef 99 94 7f af 7c f5 44 19 99 65 97 d3 15 af |......|.D..e....| -00000080 82 06 1d 80 ab 55 51 70 c7 23 15 5b 00 fb 93 e6 |.....UQp.#.[....| -00000090 5e 06 c9 db 87 98 af 0b 38 68 5f 0a 06 35 2b bd |^.......8h_..5+.| -000000a0 15 04 57 e6 1c 70 35 b3 2a 16 c7 f6 7e 3b bf d7 |..W..p5.*...~;..| -000000b0 3f f6 35 bd a9 cc 6d aa 75 b4 16 6d 81 0e 34 ab |?.5...m.u..m..4.| -000000c0 2e de e7 4a 2e 13 69 c5 c2 e2 2d 38 e6 3f 8a f4 |...J..i...-8.?..| -000000d0 d5 6a a2 9d 28 a7 98 30 e3 9a 8a 86 15 e6 00 45 |.j..(..0.......E| -000000e0 63 43 1d 28 b0 24 39 06 5e cb cb eb a1 cc 75 f3 |cC.(.$9.^.....u.| -000000f0 18 e4 d0 e6 49 0b 00 5d 67 18 35 52 b4 fa ec 9a |....I..]g.5R....| -00000100 6a 26 1b f8 38 ef f4 be 30 ef af bb bb 3f 28 a2 |j&..8...0....?(.| -00000110 0e 17 48 a6 3c d1 73 a7 45 12 4e 7e b2 87 e2 4a |..H.<.s.E.N~...J| -00000120 92 6e 26 3a f5 17 08 87 7b 34 bc 11 36 51 5f 0b |.n&:....{4..6Q_.| -00000130 e4 05 a9 b7 a5 bd 51 fa 77 e3 72 31 84 |......Q.w.r1.| +00000000 16 03 03 01 34 d8 7e 6c f6 7b d5 eb 3f 49 63 78 |....4.~l.{..?Icx| +00000010 28 92 1c 8b 67 f2 70 a7 ff e2 91 42 43 d8 90 4e |(...g.p....BC..N| +00000020 01 47 0a 12 bb 9d a2 9a e1 a2 d6 ee 5e 91 8c 4d |.G..........^..M| +00000030 86 8e 29 d4 e0 b3 67 0f c4 5e a9 02 c9 e3 8f f0 |..)...g..^......| +00000040 e6 ea 24 50 da 57 70 35 58 98 81 3e ff b8 8d ea |..$P.Wp5X..>....| +00000050 b3 e0 f0 a1 91 39 69 33 40 bc 0f 67 21 10 67 f4 |.....9i3@..g!.g.| +00000060 93 66 0c f2 66 aa fd a5 2c 8d 2b 38 31 30 b3 50 |.f..f...,.+810.P| +00000070 71 09 de ce 22 59 c3 96 5a 07 84 c0 1f 96 5c e3 |q..."Y..Z.....\.| +00000080 7e 6b c8 7e 3f a5 32 77 20 3c 7b 92 df bc 11 57 |~k.~?.2w <{....W| +00000090 86 e5 a1 03 78 9c 08 ea 49 bc a7 1b 6b fb 47 6d |....x...I...k.Gm| +000000a0 9a 86 14 fa cc 98 e6 9a f8 39 18 57 36 fb 1b ff |.........9.W6...| +000000b0 ae ce 1e 96 20 9d 16 be c6 00 45 51 2a 5a 7b 46 |.... .....EQ*Z{F| +000000c0 9c c9 c1 eb fb fc 37 52 8d b2 22 e3 58 6a d1 fe |......7R..".Xj..| +000000d0 71 55 18 4b ff 92 e1 16 62 29 cb fb d0 0d 94 22 |qU.K....b)....."| +000000e0 13 ee 8e bb 75 2e 1c ae 11 61 3d 37 69 0d 51 b0 |....u....a=7i.Q.| +000000f0 61 e3 7f 94 08 54 3a 49 68 94 b5 64 da ac a9 a4 |a....T:Ih..d....| +00000100 e2 3f 65 ad d7 42 8e 0b 70 5f 4f 6d 6e 0c 27 51 |.?e..B..p_Omn.'Q| +00000110 5a 48 57 71 6e 9b 58 e0 6e 05 40 48 a8 20 36 98 |ZHWqn.X.n.@H. 6.| +00000120 f8 71 a3 ef 2d db 8c ae fa a5 14 d8 1f ff ad 7b |.q..-..........{| +00000130 2a 15 0d fb 3d e8 1b fe 48 |*...=...H| >>> Flow 8 (server to client) -00000000 16 03 03 00 85 5d 34 8c 78 d1 0e 67 b7 5c ee 45 |.....]4.x..g.\.E| -00000010 ec f6 47 3c 67 11 2e 53 a5 a4 54 d2 25 80 88 bf |..G..Bv=..Qlj.x...| -000002b0 70 1b 9e 70 63 e3 e6 c4 9a ed c9 1e 9f 95 dd e2 |p..pc...........| -000002c0 8e b9 12 7d 7a d1 3b 49 df 4c cc ba b4 2d 91 34 |...}z.;I.L...-.4| -000002d0 f8 05 1e d1 66 39 49 99 49 18 45 da 24 65 bb f8 |....f9I.I.E.$e..| -000002e0 d0 40 87 6d 5b 5a 2a 41 40 f0 98 07 3c 1a 9e 81 |.@.m[Z*A@...<...| -000002f0 8f 5d 44 80 10 0b bb f4 16 03 03 00 bc 8a 5e 4c |.]D...........^L| -00000300 7b 86 c6 d6 f1 fa ba 03 2d 16 75 46 6a 72 b9 98 |{.......-.uFjr..| -00000310 11 75 b5 34 96 6a f9 61 7a b4 47 2d 67 b8 ab 1f |.u.4.j.az.G-g...| -00000320 69 60 1f 28 ff 3d 03 61 62 22 7a 35 73 e7 0e 15 |i`.(.=.ab"z5s...| -00000330 f5 e9 64 a6 8b dc e3 f4 fe 7b 53 82 48 6f df fb |..d......{S.Ho..| -00000340 69 b8 c3 4c a9 dc 87 8b 46 99 1f ef ae 6a 40 56 |i..L....F....j@V| -00000350 81 fd e9 1d 8c 8d 12 c0 07 77 fa e3 e2 cd 48 33 |.........w....H3| -00000360 de b9 db 09 0d d4 eb cc a5 9e 43 75 b6 45 09 c2 |..........Cu.E..| -00000370 08 ff cc fa c6 3b 97 da 85 9a c4 9f 56 03 ed b8 |.....;......V...| -00000380 a5 98 ec b3 b8 d4 39 b5 07 32 b4 f6 70 1f 9f 1d |......9..2..p...| -00000390 6e 0e fc 22 6d 1d 29 b7 d7 83 f3 2e 1a 8e d0 77 |n.."m.)........w| -000003a0 e9 82 4f 21 94 0d e6 39 f4 4f 57 74 0e a6 0d a3 |..O!...9.OWt....| -000003b0 bf ee 24 ac 3e be f6 46 bb 16 03 03 00 4a 0a eb |..$.>..F.....J..| -000003c0 93 1a d4 ab 57 53 2c 5c 40 f1 f8 2f 6c 93 f3 2a |....WS,\@../l..*| -000003d0 6d a0 19 d4 d3 92 1a b0 ae 2d 15 9c 63 21 0f 06 |m........-..c!..| -000003e0 8b ef 7c a4 a6 dc d8 6c 63 ec 24 ce ce ce 55 fa |..|....lc.$...U.| -000003f0 de 31 53 2b df 27 4c 20 60 97 f2 62 86 33 97 b2 |.1S+.'L `..b.3..| -00000400 69 d0 aa 44 3f 1f 02 d5 16 03 03 00 14 0b e0 0c |i..D?...........| -00000410 7b 88 84 70 49 7a e4 80 7a 85 90 76 cc aa 0b 42 |{..pIz..z..v...B| -00000420 6b |k| +00000000 16 03 03 00 85 1b 2d 33 65 c9 76 7a 52 fc bf 49 |......-3e.vzR..I| +00000010 7f 21 89 e6 3d 0e 79 55 83 8d 2e de b9 c4 57 08 |.!..=.yU......W.| +00000020 fc 79 f5 32 95 9f 97 fe a9 40 3a e6 c6 ec 2a e2 |.y.2.....@:...*.| +00000030 92 4c cc 48 0b ac bc 66 58 c6 0f 5c b6 62 3d a6 |.L.H...fX..\.b=.| +00000040 86 9f 4c f5 0d 2e 4b 69 cb 7a 62 25 08 04 de 51 |..L...Ki.zb%...Q| +00000050 6c 78 99 ff b2 96 5f 3d 85 60 34 28 2e b4 64 ec |lx...._=.`4(..d.| +00000060 33 d8 c1 09 49 cf 10 ee 19 6c 89 67 28 b1 4d 00 |3...I....l.g(.M.| +00000070 08 43 33 8e 8e b9 bf 25 73 a9 88 5d 0d 97 09 26 |.C3....%s..]...&| +00000080 d3 3d 7f 7e fa da e4 89 16 a5 16 03 03 02 69 3c |.=.~..........i<| +00000090 8b c1 7c 1e a4 46 7d 21 40 ed 6f 45 c2 c0 19 d3 |..|..F}!@.oE....| +000000a0 18 e3 b7 e1 a4 d0 c0 ad 4f cf a7 0f d3 39 ad 0f |........O....9..| +000000b0 6a 70 28 d2 ab 8e 26 93 e1 f4 4d 25 65 1a 7e 44 |jp(...&...M%e.~D| +000000c0 63 30 3c 54 8a 2f 1e 31 f6 d2 e2 26 66 43 91 df |c0...d...V*.h| +000001e0 45 68 13 da c6 eb 5d f2 7b 51 bd b4 8e 25 0d b7 |Eh....].{Q...%..| +000001f0 f0 03 dd 2b cd 93 7f 00 96 ca 75 c1 1b c7 d0 95 |...+......u.....| +00000200 0f 08 52 e0 d6 c9 2c b2 42 b3 0b 0c ed e1 01 e3 |..R...,.B.......| +00000210 7d ef b1 fb 80 76 c8 08 ec 9f c2 13 a5 04 05 fe |}....v..........| +00000220 33 c2 b7 2e 1a 2b 4a 74 f5 f5 92 ad e8 cf f7 76 |3....+Jt.......v| +00000230 3e 7c 69 4b 2d be 9b 08 3b 80 97 66 63 e5 df db |>|iK-...;..fc...| +00000240 1a a4 aa 8a bd 43 2a 65 44 6d f1 e6 60 92 cd 98 |.....C*eDm..`...| +00000250 a9 ac 81 de fb 22 06 f4 ca 90 4a 67 64 3f 25 ab |....."....Jgd?%.| +00000260 3c db 77 cb bc 32 55 bc 2d 48 4e 32 c7 48 d1 2f |<.w..2U.-HN2.H./| +00000270 bf 80 03 7e 27 92 8b 6a 90 35 ab 8e 93 dd 27 c7 |...~'..j.5....'.| +00000280 7d d6 a7 ea d8 1f 6a 43 57 34 d2 a9 7c c3 23 55 |}.....jCW4..|.#U| +00000290 62 5b 98 80 a1 ec 61 53 63 b9 a7 89 85 7e a8 0e |b[....aSc....~..| +000002a0 31 e9 9f 82 e9 1a b3 25 b8 d3 bf 4b f7 da 40 ce |1......%...K..@.| +000002b0 30 95 8f 41 75 9e 99 f5 3f fd 90 57 77 ee ad b7 |0..Au...?..Ww...| +000002c0 56 1e fd a6 d6 98 ae d3 a0 36 8a e0 19 a5 64 63 |V........6....dc| +000002d0 8f 08 d3 e6 2b c3 8a 29 90 8d e0 d7 1d 8b 84 6d |....+..).......m| +000002e0 a8 7a 0d 8b 6d 0e d5 fa bd c1 31 13 c7 39 61 f6 |.z..m.....1..9a.| +000002f0 e8 b3 fd 4d fe 49 a0 2c 16 03 03 00 bc 6d 99 1c |...M.I.,.....m..| +00000300 76 24 e6 f4 79 ac da e5 71 78 32 8d df a7 74 a4 |v$..y...qx2...t.| +00000310 e1 22 43 86 62 7a 99 34 9e c1 c7 82 82 f2 ad c0 |."C.bz.4........| +00000320 cb e5 54 c7 2d 3f bd 00 ba 4f 9f 6b 90 c2 2c bf |..T.-?...O.k..,.| +00000330 d5 d1 20 48 28 f0 bc 21 d4 1f 8d a9 89 82 ce 3d |.. H(..!.......=| +00000340 b2 52 bd 91 57 65 da 07 74 d9 56 b3 54 a7 2c 20 |.R..We..t.V.T., | +00000350 93 5e 79 59 d0 d3 33 95 a9 de f6 a4 48 37 11 10 |.^yY..3.....H7..| +00000360 a7 34 2a 2b 30 a5 24 03 5b d5 63 78 1f ad ca 70 |.4*+0.$.[.cx...p| +00000370 ff f9 22 ca bc 23 ac 4d eb 5a d7 de af 31 72 25 |.."..#.M.Z...1r%| +00000380 84 24 72 b7 b8 c0 a5 7a b6 7e a9 95 42 bb 5e 52 |.$r....z.~..B.^R| +00000390 6c 13 87 c2 b5 17 04 a8 0a 43 d0 b4 96 12 12 4b |l........C.....K| +000003a0 1e d1 0b ab a1 5d 1a bc 48 15 ec 88 e6 7b 57 aa |.....]..H....{W.| +000003b0 da 3b 7f 0b cc 11 93 8f ee 16 03 03 00 4a 35 4e |.;...........J5N| +000003c0 5f 82 88 e9 d5 24 cc 81 3c 0a cc 49 63 13 ea 0c |_....$..<..Ic...| +000003d0 e6 d7 a9 f2 7b 4f 7f d4 c1 d8 71 4e 1d e6 68 e6 |....{O....qN..h.| +000003e0 7e ba 73 f8 23 a5 af 1a 05 35 4c bf 88 8d 8a 90 |~.s.#....5L.....| +000003f0 09 26 34 1d b6 88 92 2d 60 92 52 2c cb 45 02 a4 |.&4....-`.R,.E..| +00000400 78 54 3d a3 44 d3 f9 46 16 03 03 00 14 58 29 f7 |xT=.D..F.....X).| +00000410 44 f4 a0 9f 65 d8 47 1a 01 7e 1b 95 3b 5f 1f 4a |D...e.G..~..;_.J| +00000420 12 |.| >>> Flow 9 (client to server) -00000000 16 03 03 02 69 97 93 8b 02 bb 85 f7 ec fd ae 99 |....i...........| -00000010 d2 31 6c 04 64 02 ee dd 86 ea c2 9c 40 22 5a fc |.1l.d.......@"Z.| -00000020 6e 6e 66 30 1d bb 71 40 90 b1 c2 1c 38 53 37 21 |nnf0..q@....8S7!| -00000030 87 a2 df c3 68 b9 c1 90 46 df 73 f8 ba 20 7e 83 |....h...F.s.. ~.| -00000040 49 2d d8 3c a4 4a 4b 41 70 5d ee 65 68 31 3d f4 |I-.<.JKAp].eh1=.| -00000050 44 ce 10 be d8 d1 bc 21 25 f0 66 36 f0 b9 8b b9 |D......!%.f6....| -00000060 89 cc 0c b8 b2 67 ef 86 24 ed 54 2e e8 b7 b3 87 |.....g..$.T.....| -00000070 c9 58 fa db 3d 0a 78 bb 68 fa 86 26 bd 8b aa 4c |.X..=.x.h..&...L| -00000080 f5 8a f8 6a 82 b1 12 79 39 20 71 c4 3f 6a fc 9c |...j...y9 q.?j..| -00000090 4a 44 e0 ea 7e 06 35 23 77 dd 07 0e c1 89 85 19 |JD..~.5#w.......| -000000a0 98 7b e0 31 2d d0 a2 de be a9 fe 1a 8d ef 45 52 |.{.1-.........ER| -000000b0 5c ee 4e 7f 0d 69 41 9b 84 a6 84 6c 41 42 31 8c |\.N..iA....lAB1.| -000000c0 b8 24 0d cc 54 a6 81 dd 8b 3a 8a 6c ef 75 8c 6b |.$..T....:.l.u.k| -000000d0 01 ce 6a ea ae 67 c3 96 8b b6 42 20 c9 e6 7b 2c |..j..g....B ..{,| -000000e0 79 fe 1c 25 42 55 95 65 a4 af 16 ec aa 49 e4 fa |y..%BU.e.....I..| -000000f0 e5 38 5b c2 82 02 ca 34 8a 20 27 c3 46 55 79 ad |.8[....4. '.FUy.| -00000100 31 18 27 ed 14 dc dc ab 75 ba 1f 4c f7 1c 74 f3 |1.'.....u..L..t.| -00000110 d4 a3 52 f8 39 fe 21 d9 fc 08 7f c6 2c 86 54 90 |..R.9.!.....,.T.| -00000120 c1 2e b0 de 84 25 eb 36 16 4e 96 c5 fc 6f 83 2b |.....%.6.N...o.+| -00000130 3e ad 30 6b ae 33 b2 03 87 2f b7 33 14 50 37 a0 |>.0k.3.../.3.P7.| -00000140 19 cf 41 1c 68 c9 b8 5c 29 f6 34 db 13 40 10 16 |..A.h..\).4..@..| -00000150 7c 22 42 38 d5 43 4f 46 4d ae bd e2 7d 78 5f b6 ||"B8.COFM...}x_.| -00000160 12 ba 19 5a 18 ae b7 76 d6 ae 71 c3 5b c4 b5 3a |...Z...v..q.[..:| -00000170 b5 b6 52 9b 0b 92 30 41 4d a0 f4 62 2c c7 4f 27 |..R...0AM..b,.O'| -00000180 04 f5 7e 77 04 89 11 2a e0 0c 5e 21 3b 75 13 bf |..~w...*..^!;u..| -00000190 1f 48 ed 4d 05 b3 67 f3 d8 71 99 fb 23 c5 0f fd |.H.M..g..q..#...| -000001a0 47 7c 36 f8 e0 25 53 f4 15 bd 77 db f5 71 a1 6e |G|6..%S...w..q.n| -000001b0 6a 1a 06 a1 8a 5d 2b 28 89 82 7b 29 aa b1 68 a6 |j....]+(..{)..h.| -000001c0 fb 29 a8 cb ee e0 71 de 52 b8 8a 57 63 ff 74 a5 |.)....q.R..Wc.t.| -000001d0 ca 8c b5 44 23 74 ab 86 74 cf 82 0b fc 23 90 95 |...D#t..t....#..| -000001e0 3d 83 87 5a aa af 5d d1 c6 4b dc b0 f3 0f 44 57 |=..Z..]..K....DW| -000001f0 ca 47 a1 28 64 64 4d 81 15 11 92 5a 8c b9 8d ef |.G.(ddM....Z....| -00000200 a9 18 58 67 c7 c3 3b a7 9d 41 be 74 67 cb a8 3e |..Xg..;..A.tg..>| -00000210 3d a4 b0 4e 92 15 c1 4a 38 6d 48 ba 57 4b 42 a9 |=..N...J8mH.WKB.| -00000220 2c de de 6a 5b 60 3e 9d 09 5e 8e d4 97 4a 31 52 |,..j[`>..^...J1R| -00000230 47 5c ce bc f8 14 49 78 6b 5a 36 aa 3b c7 bc e7 |G\....IxkZ6.;...| -00000240 59 17 a1 18 d3 b1 54 e8 54 8a 1c 07 a5 3b 9f bd |Y.....T.T....;..| -00000250 d1 60 7d e8 78 8c be b2 ea 20 26 59 65 ef 70 71 |.`}.x.... &Ye.pq| -00000260 98 73 0c 43 cb 3a bc 61 8a f8 19 a4 89 0b 16 03 |.s.C.:.a........| -00000270 03 00 35 28 53 40 d2 93 99 84 8e d8 fc f1 4a 3e |..5(S@........J>| -00000280 22 26 d3 2b c0 e9 32 d4 49 7b 7d 19 61 29 ab 28 |"&.+..2.I{}.a).(| -00000290 e7 e4 a2 13 2e 5a a8 7f ef e7 19 7b 9c de fc 21 |.....Z.....{...!| -000002a0 2a 3d f0 3a d3 dc 17 d2 16 03 03 00 98 30 c7 f4 |*=.:.........0..| -000002b0 b6 60 3b 87 88 e1 0e 26 d2 34 49 de 8c b8 99 35 |.`;....&.4I....5| -000002c0 fe 6f 11 4b 8b ab d9 ce 11 b1 f5 05 8d 6b c1 91 |.o.K.........k..| -000002d0 c8 69 cb 2b 04 99 12 ed 8b 7a 63 e2 9c 5d 80 63 |.i.+.....zc..].c| -000002e0 57 74 8f 1f 9c f4 6b cb 51 57 6b 33 3e 1b 81 54 |Wt....k.QWk3>..T| -000002f0 73 54 5c 28 f1 fe 2f 88 41 ea 2b 52 30 93 0e 98 |sT\(../.A.+R0...| -00000300 fe b1 59 0e 01 26 06 f0 fd 77 cb 59 ec b7 4c 4f |..Y..&...w.Y..LO| -00000310 cd 40 c0 36 11 d2 dd c8 1a 40 e2 ba 9c d9 39 99 |.@.6.....@....9.| -00000320 9a d3 9b 37 ee 76 8b 22 fb 42 a8 90 c6 8d 92 4b |...7.v.".B.....K| -00000330 57 83 33 04 75 6a 79 69 8f f9 4d fd d6 bd 01 76 |W.3.ujyi..M....v| -00000340 98 36 7d b2 b5 14 03 03 00 11 85 15 d7 33 6d 47 |.6}..........3mG| -00000350 80 84 38 df a3 c2 91 0b 1c e0 82 16 03 03 00 20 |..8............ | -00000360 0d cc f8 79 c6 13 4e 81 b7 a7 2d 03 18 7e 9d 24 |...y..N...-..~.$| -00000370 2e 89 d7 7d bf ab a7 1d 2f 15 c1 80 3d f2 89 68 |...}..../...=..h| +00000000 16 03 03 02 69 ef e7 da 35 77 b6 d6 09 a1 71 43 |....i...5w....qC| +00000010 1c 2b 72 d6 65 ea b4 38 e4 13 c1 85 c3 36 bb f4 |.+r.e..8.....6..| +00000020 ef 1a b8 94 de 11 22 6e b8 28 14 05 88 2a 5d 7a |......"n.(...*]z| +00000030 7c 0a 00 ac 74 ce 4f f8 b3 94 5d 5c a1 aa 3e 20 ||...t.O...]\..> | +00000040 ee 0b e3 50 3d e7 4f 4d ad 5c 9e 6e 8e 75 26 b4 |...P=.OM.\.n.u&.| +00000050 80 e1 85 3f ae 76 6f 95 6e f0 79 98 3d 86 17 9c |...?.vo.n.y.=...| +00000060 e9 d6 35 1d f5 15 ea c5 29 67 15 9d 03 4b 41 9d |..5.....)g...KA.| +00000070 25 b3 ab 3a b0 12 d1 ff fc 9e 25 af ff 8a c8 1c |%..:......%.....| +00000080 4b 4e f0 10 9d d3 98 6e 66 0a 13 82 b9 04 d7 39 |KN.....nf......9| +00000090 b2 2c c5 f9 cf be 4b 8b 8a 28 e9 24 db c8 fe d6 |.,....K..(.$....| +000000a0 a1 b1 3c 9e 19 92 0b 5d 2e c8 5f 56 35 dc 16 46 |..<....].._V5..F| +000000b0 7b a1 d2 43 d9 ee 3f a7 74 c1 4c ed 2a 84 4a ad |{..C..?.t.L.*.J.| +000000c0 76 a2 bc 90 8d 19 06 11 1a 6d b8 e0 3a 8e 0d 33 |v........m..:..3| +000000d0 f2 ad 06 d7 e5 a3 16 8c 14 07 4c 84 8a 47 13 c1 |..........L..G..| +000000e0 b1 cb 81 8b d7 5b fb 04 2b da 3c 7f d1 0f 2b 8b |.....[..+.<...+.| +000000f0 23 ad f5 f1 09 82 24 80 5c bc f7 68 69 c0 90 5f |#.....$.\..hi.._| +00000100 fa 96 b4 9d 51 0e 96 1e 06 2a d1 98 5d 96 95 68 |....Q....*..]..h| +00000110 de df 40 f9 f6 b1 f2 ef a7 c4 0c 05 ee b3 63 8d |..@...........c.| +00000120 3a 1e a2 d8 34 2a b2 99 c3 17 03 60 18 4f 43 21 |:...4*.....`.OC!| +00000130 99 4f 81 c1 11 8e a4 45 79 d8 fa fc b2 9a f8 d0 |.O.....Ey.......| +00000140 95 10 79 38 45 1b 82 42 f0 bb 75 27 6b a2 53 d3 |..y8E..B..u'k.S.| +00000150 e6 dd 2d 43 f5 80 fd 9a 59 ec 07 42 ee b0 9d bd |..-C....Y..B....| +00000160 33 dd 58 c8 57 e8 16 de a4 21 c9 92 51 d2 e5 8b |3.X.W....!..Q...| +00000170 48 f5 cb a8 3a d8 f6 a3 b2 00 90 9e f0 e0 ca c7 |H...:...........| +00000180 fe 79 70 f7 8e 5c 4b 3c 86 c8 cc ca b1 b6 05 e2 |.yp..\K<........| +00000190 90 66 db 85 fc 7c 87 6f e0 44 ed 2a c9 66 b7 de |.f...|.o.D.*.f..| +000001a0 c5 f0 d2 80 dd f2 c2 26 5b 84 cf b0 c4 78 7e 65 |.......&[....x~e| +000001b0 66 d9 d8 c5 fe 97 b9 27 6e 55 11 c0 0b 3e e2 c9 |f......'nU...>..| +000001c0 ce 4d dd 27 28 6f 62 45 70 b3 e4 0c 18 31 f1 b2 |.M.'(obEp....1..| +000001d0 33 8f 7d 34 7c f6 f3 50 d9 a9 6b ec a7 cf c2 7b |3.}4|..P..k....{| +000001e0 36 21 d7 76 68 c1 0e 90 8d af 2e c5 d5 26 c7 c1 |6!.vh........&..| +000001f0 0b 1c 43 85 a6 43 3e 96 67 46 2d 1e 0a c8 90 99 |..C..C>.gF-.....| +00000200 0f 71 cc 60 49 68 2c df 17 68 e4 fa 79 05 50 ac |.q.`Ih,..h..y.P.| +00000210 16 d0 26 1f 7e 58 a2 dc 73 e9 05 8d 92 f6 8c 56 |..&.~X..s......V| +00000220 db 08 0a b7 99 64 f7 5b d0 5f f3 88 f5 02 f5 d0 |.....d.[._......| +00000230 66 55 e3 db f4 d1 c9 d3 c1 f4 ab 8c 5c 39 fd 64 |fU..........\9.d| +00000240 ec cd ab 63 da 7b 3e 64 1a b4 c3 d9 79 bd 92 e3 |...c.{>d....y...| +00000250 97 68 a4 83 b5 f1 fa f5 05 04 84 39 e9 82 a6 84 |.h.........9....| +00000260 e5 a0 6f a2 6d ea 6b ab 4c f8 a5 87 9c 9c 16 03 |..o.m.k.L.......| +00000270 03 00 35 08 0b 50 f9 90 d3 e9 58 e5 5b df a1 99 |..5..P....X.[...| +00000280 89 ea 0b 1a f1 4d e3 fd a6 79 2c 61 ac 6f da 7c |.....M...y,a.o.|| +00000290 2a 78 e1 38 05 35 2e 8b db eb 25 fd eb 2f d7 a3 |*x.8.5....%../..| +000002a0 27 9d 27 f2 b3 ff 20 8a 16 03 03 00 98 95 42 7e |'.'... .......B~| +000002b0 d5 86 40 42 dc 93 fe 80 ef 70 cc fb 2f b1 51 bd |..@B.....p../.Q.| +000002c0 ca 5f 1e 0d a0 3f c6 e0 c9 69 0e d4 dc 18 25 52 |._...?...i....%R| +000002d0 5c c2 8c 37 f6 a8 e6 4d 48 27 81 4d 7a f3 49 5c |\..7...MH'.Mz.I\| +000002e0 92 92 68 a9 e0 dc d6 c5 b5 ea 99 5c 51 df 93 a1 |..h........\Q...| +000002f0 36 2d 65 a8 cb ca 72 76 53 92 7d c7 81 5f 19 2c |6-e...rvS.}.._.,| +00000300 3e 83 29 16 41 65 4f 81 d7 3f 5c 15 f0 36 d9 75 |>.).AeO..?\..6.u| +00000310 a7 c8 52 6f 5b b6 98 46 5e 39 31 83 1c 99 3f f9 |..Ro[..F^91...?.| +00000320 9e 28 d7 94 ae a7 b4 f7 c9 ce 5b 74 2f 88 9e fd |.(........[t/...| +00000330 3c 1c 1e eb f4 b3 39 65 39 07 14 8e 3e 95 87 b2 |<.....9e9...>...| +00000340 b8 4c e8 7d 3b 14 03 03 00 11 cc eb 21 2a 7c 9a |.L.};.......!*|.| +00000350 5c 35 9f 35 e3 09 dd f8 7a 4f 43 16 03 03 00 20 |\5.5....zOC.... | +00000360 0b ff 00 c0 96 43 18 d9 9d ad 51 55 44 40 11 2f |.....C....QUD@./| +00000370 cd 1c bd ae ea 0a c9 eb de 57 95 c2 81 63 79 4c |.........W...cyL| >>> Flow 10 (server to client) -00000000 14 03 03 00 11 81 c4 6d 51 fc a3 05 28 42 9a 59 |.......mQ...(B.Y| -00000010 3f 84 d4 ac 19 a4 16 03 03 00 20 44 a9 25 3f 24 |?......... D.%?$| -00000020 0a ab 91 47 24 f9 81 fc 1e ab d2 6b ee 81 04 b1 |...G$......k....| -00000030 3e 16 1f 70 16 e2 74 f5 71 b8 74 17 03 03 00 19 |>..p..t.q.t.....| -00000040 77 fa 0d b1 b4 fc b6 5b d0 73 1a 94 d0 6c 05 7d |w......[.s...l.}| -00000050 1a fa 6e d4 00 4e 2e 91 e0 16 03 03 00 14 f0 79 |..n..N.........y| -00000060 e5 37 1f 13 e6 a0 d3 4a 66 a9 e8 03 71 5f 67 37 |.7.....Jf...q_g7| -00000070 aa b6 |..| +00000000 14 03 03 00 11 d8 35 87 10 ce 65 af f6 19 4d 34 |......5...e...M4| +00000010 6c 01 68 91 74 2d 16 03 03 00 20 70 df d4 bd c1 |l.h.t-.... p....| +00000020 29 ac f3 f8 70 a4 5b ca cb 7e 20 d4 1b 7e 2f 4b |)...p.[..~ ..~/K| +00000030 79 0b ea a3 ff 41 4a 5c ff 5b 16 17 03 03 00 19 |y....AJ\.[......| +00000040 4b 34 71 05 b5 b8 40 44 d4 2a ec f1 dc e1 ee 6a |K4q...@D.*.....j| +00000050 4f e6 c2 bf 44 98 0c 25 9b 16 03 03 00 14 98 20 |O...D..%....... | +00000060 3c 7a 9f ba ba fd 6e 1f a1 b9 4b d5 b9 d0 4c 75 |>> Flow 11 (client to server) -00000000 16 03 03 01 38 e1 e6 8b 40 d6 ae f9 34 1a 27 20 |....8...@...4.' | -00000010 67 ad c3 86 18 ee c0 e2 82 10 c1 33 df f6 4d 13 |g..........3..M.| -00000020 46 a1 0b 23 25 12 2e 71 e9 50 2d 08 1c 53 47 a9 |F..#%..q.P-..SG.| -00000030 69 bd e2 d3 f9 cf 44 91 ec 9a c7 2c ee 2a f8 4e |i.....D....,.*.N| -00000040 bf 07 22 9b 6d 00 48 63 78 63 ab 39 b2 be d3 64 |..".m.Hcxc.9...d| -00000050 7b 46 7a 34 91 e0 1e fc f4 89 49 e3 75 dc 6b 83 |{Fz4......I.u.k.| -00000060 95 77 f0 cc 09 b0 3a 19 18 93 6e 9b 5d da b4 93 |.w....:...n.]...| -00000070 d2 f6 ef de b0 e8 11 04 02 d2 a4 3d cd 95 fd cd |...........=....| -00000080 58 93 91 ed 45 1e b9 35 0b 46 5e fc f7 7a e4 18 |X...E..5.F^..z..| -00000090 96 97 95 f9 8c 84 aa 7c a9 67 f3 ac b6 e9 9f 12 |.......|.g......| -000000a0 9f 0f fc 3a 3f 35 ae 13 49 42 04 21 0c b8 06 d3 |...:?5..IB.!....| -000000b0 e2 13 7a 1e 57 cb 15 91 09 d2 9a 42 84 81 4f b7 |..z.W......B..O.| -000000c0 6e 6f 8f c0 71 af 7b ca 37 9c 01 2a bc 37 04 8c |no..q.{.7..*.7..| -000000d0 ce 3e 82 7f 8b 4e 13 00 15 3c b6 8a 06 63 b6 68 |.>...N...<...c.h| -000000e0 55 01 97 e6 d1 e1 b8 ae 2a c6 e7 4c fd e5 40 76 |U.......*..L..@v| -000000f0 11 fa 18 12 db 98 d5 d9 61 8f 33 66 38 95 ba ae |........a.3f8...| -00000100 b6 1d 8e 03 27 6c 78 7a 89 82 0f ca 56 d4 19 ae |....'lxz....V...| -00000110 e2 79 6b 6d 80 b8 ce fc 3e 42 5a c7 e7 05 3b eb |.ykm....>BZ...;.| -00000120 a1 33 a0 56 92 e3 10 e6 ff 17 9b 2d 8e 40 56 fc |.3.V.......-.@V.| -00000130 76 9c a6 32 9f 7a a2 d8 e9 77 2f 9f e9 |v..2.z...w/..| +00000000 16 03 03 01 34 82 8c 60 3d d0 8e d7 cd d6 37 37 |....4..`=.....77| +00000010 d8 18 6f b1 8c b5 81 f3 0a bf 4f ca 6d 04 9e 6a |..o.......O.m..j| +00000020 4f ee bb a0 6c 40 40 96 96 94 b7 44 3d 56 1b 86 |O...l@@....D=V..| +00000030 eb 52 55 5d 4d da eb 99 85 fb 28 b6 20 33 1c ec |.RU]M.....(. 3..| +00000040 95 d9 23 1d 69 fa 40 8f 3f 2b ae 5f 08 c9 eb 71 |..#.i.@.?+._...q| +00000050 24 b8 4f b0 20 9f db 3d cb d1 9e d7 7f f0 2e e9 |$.O. ..=........| +00000060 c0 b5 81 ea 67 3f 70 cc 51 db 8c 00 6b 30 87 61 |....g?p.Q...k0.a| +00000070 aa 75 dc 1e bc 19 33 82 c2 d4 6e 47 9c c8 ce 60 |.u....3...nG...`| +00000080 01 73 f2 a9 73 c4 49 da 2e 69 4e 38 66 d8 ab 05 |.s..s.I..iN8f...| +00000090 39 6b 42 13 43 22 26 ad bd d7 78 f4 c6 81 b4 8a |9kB.C"&...x.....| +000000a0 73 52 6c b8 02 4c 08 fd 7c 79 3b 04 73 61 66 5b |sRl..L..|y;.saf[| +000000b0 59 98 50 7d d0 25 89 39 70 b0 e2 b4 3f c6 f1 ce |Y.P}.%.9p...?...| +000000c0 83 4b 4a a4 88 7b c5 59 c7 9e 3a e0 a9 d5 95 57 |.KJ..{.Y..:....W| +000000d0 6f f0 ce 33 c6 58 69 30 04 8b 98 7d 80 74 35 2a |o..3.Xi0...}.t5*| +000000e0 a5 40 fe 3b e8 9b c7 2e 30 8c 61 9d e9 f5 56 b2 |.@.;....0.a...V.| +000000f0 b7 a5 cd 9b a7 91 87 05 ee da e1 5e c7 00 c3 ae |...........^....| +00000100 1d c0 71 5d 02 03 15 e6 1b bc a5 da 04 78 89 c6 |..q].........x..| +00000110 aa 3e 97 31 00 ff e9 12 23 9e 86 74 45 7b 8a db |.>.1....#..tE{..| +00000120 d8 c8 c0 8b 00 72 ee d8 a9 64 b8 1b 48 77 98 b9 |.....r...d..Hw..| +00000130 20 61 b8 23 17 b5 65 7c fb | a.#..e|.| >>> Flow 12 (server to client) -00000000 16 03 03 00 85 12 4a cc dd af 7e 9f 8f c0 5e dc |......J...~...^.| -00000010 db 49 95 90 d0 d4 78 49 8b 34 5c 22 7f f8 9b 42 |.I....xI.4\"...B| -00000020 99 79 d3 d8 f2 ad 9e e1 67 80 84 8d b5 48 8c 9a |.y......g....H..| -00000030 ab 68 65 81 28 16 75 77 e6 57 8a 52 ba ab 2e 3d |.he.(.uw.W.R...=| -00000040 27 1c 90 fb 75 99 8f 2b 6b 4e 2c 78 3a f8 5b 25 |'...u..+kN,x:.[%| -00000050 55 df c6 83 c6 0f 01 f0 00 b0 8e 02 51 62 aa 91 |U...........Qb..| -00000060 1b 21 b7 2e b3 11 b6 5d c4 38 04 3c af ad 3e a3 |.!.....].8.<..>.| -00000070 f5 ec 8f 7f 6f 9d 7a eb 22 51 2c 9e 08 af 9d ab |....o.z."Q,.....| -00000080 a7 84 cb f8 68 78 9b 58 50 fa 16 03 03 02 69 07 |....hx.XP.....i.| -00000090 17 f9 21 47 17 ee f7 d3 06 98 d4 32 e5 a1 c8 f0 |..!G.......2....| -000000a0 ec eb 61 80 7f 2c 85 66 27 19 cd 8e 6f ca da 0f |..a..,.f'...o...| -000000b0 c5 34 76 9f b0 96 5d 6d 67 bd 17 7d 96 62 4e ce |.4v...]mg..}.bN.| -000000c0 a1 0e 40 79 6d 25 8c 81 41 a3 2d 0a ba cb d9 35 |..@ym%..A.-....5| -000000d0 4e a7 fc 74 14 a2 c6 bd 57 46 6a d0 11 37 72 24 |N..t....WFj..7r$| -000000e0 19 78 e5 86 51 04 f4 10 47 2f a5 d9 e6 44 47 e0 |.x..Q...G/...DG.| -000000f0 1f 1b ce ea 6f c7 df 17 6a 68 69 01 30 73 e2 48 |....o...jhi.0s.H| -00000100 61 50 3d 7d 85 aa 5f 74 4c 18 33 d0 e1 95 1b 9a |aP=}.._tL.3.....| -00000110 13 30 a2 f4 8e 8b 58 07 15 9b c8 74 ce 58 5b c1 |.0....X....t.X[.| -00000120 03 75 97 39 5b 00 ee 5a d6 ba 21 62 6a 19 41 0d |.u.9[..Z..!bj.A.| -00000130 4f 77 46 a0 2e 2d c3 77 50 2c dc 3f 04 32 6c be |OwF..-.wP,.?.2l.| -00000140 7f 73 c2 58 50 ac 78 eb b9 b0 a0 2e b7 44 27 0f |.s.XP.x......D'.| -00000150 e8 0d 76 d5 a7 4e 9f df 36 bb 63 48 ce f6 2f 9c |..v..N..6.cH../.| -00000160 41 a6 76 38 63 72 a0 33 0f 88 94 0d a2 6e 46 d6 |A.v8cr.3.....nF.| -00000170 57 25 33 e1 36 a0 bf 56 b8 d5 d0 04 2d 23 e8 ac |W%3.6..V....-#..| -00000180 93 2c 46 ac 1f e5 2a 48 88 0e 0d 11 67 fe de 21 |.,F...*H....g..!| -00000190 31 e8 68 9b 7c 4c 49 b8 27 5a c4 89 a4 4c 09 f0 |1.h.|LI.'Z...L..| -000001a0 de 5f 9c 60 bd 54 e5 96 2c bf a1 86 3a cb 5b 3f |._.`.T..,...:.[?| -000001b0 15 3f 4a b2 43 c9 88 0b 49 05 2d d7 61 43 dd 1c |.?J.C...I.-.aC..| -000001c0 a9 4d 52 17 98 4d 5b a7 cd 27 52 60 21 57 ed 09 |.MR..M[..'R`!W..| -000001d0 29 0d c9 a1 b3 6f 11 3a da 17 00 73 22 4e 7f 40 |)....o.:...s"N.@| -000001e0 6f 0f 7a a7 7e 73 b8 be 08 b6 10 b3 bb 70 f5 4a |o.z.~s.......p.J| -000001f0 96 aa 07 9f e2 68 04 7c 01 e3 92 f9 15 cd 97 b5 |.....h.|........| -00000200 4e 87 eb 5d 74 db 8b 5a 72 c1 7c b2 b8 73 83 2d |N..]t..Zr.|..s.-| -00000210 5f d9 d2 62 b2 db 20 9a f2 54 ad d4 66 6c 52 9c |_..b.. ..T..flR.| -00000220 85 ef a4 90 ca e0 c4 4f 1f 82 0e 80 f5 02 56 e2 |.......O......V.| -00000230 d0 78 fd 7e c6 73 89 12 5a 11 2e c9 6d a0 6f 8f |.x.~.s..Z...m.o.| -00000240 ea a1 4c 88 28 ee 66 79 9c 99 ff 6b e6 e7 f7 bf |..L.(.fy...k....| -00000250 1f ef 1f b9 65 46 1e 41 d8 33 13 a1 29 d1 1b 5f |....eF.A.3..).._| -00000260 b6 56 3c bf 28 02 d1 5b b7 77 58 9e cd 4c 5f ac |.V<.(..[.wX..L_.| -00000270 2e 60 9e 0c 20 6a 0a 31 60 0b fb a4 75 20 5d c4 |.`.. j.1`...u ].| -00000280 68 a6 94 bd 99 9c bb 00 57 9c 2e 55 e1 ca d1 0c |h.......W..U....| -00000290 40 1f 69 4f 88 79 da 4f d1 b2 6f 1a 92 77 90 71 |@.iO.y.O..o..w.q| -000002a0 34 d1 90 f7 c9 fc c9 ac 23 76 d3 2d 6c 54 fa 28 |4.......#v.-lT.(| -000002b0 a5 2b df 1d f5 39 21 c1 4c 9c 53 08 f5 fc 19 e6 |.+...9!.L.S.....| -000002c0 29 d4 c2 8b b1 f9 db ae 1f 29 ee 34 8f b0 fe 02 |)........).4....| -000002d0 06 6a 3e a9 e0 2e e1 71 f8 63 15 f0 ac e5 6b f3 |.j>....q.c....k.| -000002e0 db 3d b1 de c5 26 a5 18 22 d8 3a 74 1f 57 43 b5 |.=...&..".:t.WC.| -000002f0 9e f6 40 cc fd ba 68 82 16 03 03 00 bc 0a 05 54 |..@...h........T| -00000300 61 ad be a6 2a 6e ee f3 b7 fb 50 9f c5 f8 7d b3 |a...*n....P...}.| -00000310 9a 85 ed 6f 36 5d f3 e5 05 1a c5 b9 6f 9f 2a 99 |...o6]......o.*.| -00000320 75 d0 49 37 eb 82 fb e0 da bf 8f 6d 0e ab 11 c9 |u.I7.......m....| -00000330 0d e1 d0 1a cd b1 e7 c9 c2 6e f4 90 ae 56 ba d2 |.........n...V..| -00000340 65 af f4 7f c2 3c e8 d7 f6 49 57 61 c8 02 0e 72 |e....<...IWa...r| -00000350 e5 d8 2f 3e f2 d9 4c 64 32 1a 95 f9 f4 f8 47 9f |../>..Ld2.....G.| -00000360 c5 63 6b f2 44 48 7f 69 ae 12 f7 ca ff 60 f0 51 |.ck.DH.i.....`.Q| -00000370 9f 70 7b d9 86 03 fd 9d d5 29 35 c1 bd 4d fe 45 |.p{......)5..M.E| -00000380 e1 e0 15 dd 2d f4 20 54 50 61 ba d9 8c bf e6 f1 |....-. TPa......| -00000390 4a 08 e1 c8 f7 24 f0 5f 41 4c 8e f3 fd 60 31 89 |J....$._AL...`1.| -000003a0 d6 72 a9 e5 14 65 83 c1 ae be e7 b3 89 99 25 87 |.r...e........%.| -000003b0 20 13 1b 0a a8 3d d3 dc 5c 16 03 03 00 14 71 4c | ....=..\.....qL| -000003c0 20 9c de 36 cc ed 88 6f c8 84 5a 03 ee 1d cd 3c | ..6...o..Z....<| -000003d0 c7 88 |..| +00000000 16 03 03 00 85 93 93 97 db ec 52 74 ce 78 ca e6 |..........Rt.x..| +00000010 95 19 ac 68 2c 81 ad 6b c3 6d d5 f7 84 a1 00 d0 |...h,..k.m......| +00000020 15 4c ae 2d 10 6a 07 d3 82 af af f8 d9 5d 9d 65 |.L.-.j.......].e| +00000030 8d c9 1e 8c 61 3e b3 67 71 89 41 7e 94 1e 4a 27 |....a>.gq.A~..J'| +00000040 73 53 83 d4 70 44 9a 4f 8d e7 62 af 9b 71 9e 83 |sS..pD.O..b..q..| +00000050 72 9a a1 e2 03 47 5f c3 11 4f 56 b9 6f 02 b5 b8 |r....G_..OV.o...| +00000060 8b 4a cb 99 ed 62 58 45 2d 0f f1 25 ce e9 de 7d |.J...bXE-..%...}| +00000070 3f 17 a8 35 d5 73 06 6e d6 bc 77 2a 82 27 d7 92 |?..5.s.n..w*.'..| +00000080 91 67 68 07 52 4b ed a0 3c 95 16 03 03 02 69 11 |.gh.RK..<.....i.| +00000090 73 93 d5 ad 00 17 11 3b 83 81 68 6d 3a 8a 02 1b |s......;..hm:...| +000000a0 90 df 84 f6 2b 4a b8 98 cf 50 0d dd 29 22 9d 58 |....+J...P..)".X| +000000b0 ea 7b 2c 30 2d e7 e2 d1 ae ad 00 9e 01 f6 ef 96 |.{,0-...........| +000000c0 ae a4 48 58 29 63 1d 2c 19 f3 c2 49 6f cf c9 7b |..HX)c.,...Io..{| +000000d0 e3 ca 5c e7 30 a0 b5 72 a9 3d 61 a2 0f 96 e4 d6 |..\.0..r.=a.....| +000000e0 8f 93 66 f1 de 24 88 14 9f 8b 14 9a b5 94 f7 70 |..f..$.........p| +000000f0 79 e4 94 68 b7 e0 f1 8e d0 1b 56 da d0 ce 90 b2 |y..h......V.....| +00000100 13 b3 4b b5 20 99 77 4a a4 83 47 4e 1b 1f db 35 |..K. .wJ..GN...5| +00000110 96 16 f0 d8 2b 7e 18 bf 0c b7 a3 da 44 fe 4c 96 |....+~......D.L.| +00000120 86 06 52 81 f9 a1 f4 ab 43 6d a3 fd 50 f6 83 08 |..R.....Cm..P...| +00000130 ba b5 d5 15 55 16 aa 84 95 77 1d 9e cd d6 53 d0 |....U....w....S.| +00000140 d3 c7 1c 9a 12 4d 8d 7a b5 0b 02 34 3f cf b5 0f |.....M.z...4?...| +00000150 98 56 cc 6e 15 ef 60 88 e0 71 2e 47 46 ce 19 11 |.V.n..`..q.GF...| +00000160 81 21 fe c6 80 86 d7 be d9 a7 6f a1 8c 8d ff ba |.!........o.....| +00000170 fb 8b 8b 8f 35 95 03 cb 10 e6 f5 71 18 d5 3c e0 |....5......q..<.| +00000180 60 e7 a2 47 36 41 a0 a3 c4 a3 c1 23 6c da 55 6a |`..G6A.....#l.Uj| +00000190 5f ef cd 58 e7 5d d3 cf 50 7b 3d b5 c6 7c 73 d9 |_..X.]..P{=..|s.| +000001a0 ce c3 ae 6a 46 4a 9a e6 10 57 53 b3 6c e5 ec 9d |...jFJ...WS.l...| +000001b0 f0 25 3c a4 a6 f0 42 1a 1e 8c 2b 40 79 e5 51 84 |.%<...B...+@y.Q.| +000001c0 79 6b c5 8a 3d 25 11 38 97 ca 15 11 e7 51 74 29 |yk..=%.8.....Qt)| +000001d0 66 9e 4d 4d 50 6a ec 1d 94 6b 4d c9 e9 a7 f8 4e |f.MMPj...kM....N| +000001e0 5b c3 06 74 ba 1d a1 79 3c 24 94 c9 3b b0 b1 16 |[..t...y<$..;...| +000001f0 fe 42 31 fe d0 4b e4 51 e6 06 63 89 2d 3b 56 6a |.B1..K.Q..c.-;Vj| +00000200 cf 89 4c 45 49 fd 10 58 9b 6b 4b 35 eb d8 c9 9d |..LEI..X.kK5....| +00000210 c0 31 b6 3e 33 da 7e 87 39 e3 c0 6a f8 7f bd 9a |.1.>3.~.9..j....| +00000220 26 4f 42 51 86 40 fb f7 fb cc 50 80 b6 0a 63 f4 |&OBQ.@....P...c.| +00000230 41 62 68 c0 b8 99 7d 8e ab e1 8a 15 92 f2 35 a4 |Abh...}.......5.| +00000240 cc 0e e7 9e 74 2d c1 b4 44 be 25 10 92 02 4f e3 |....t-..D.%...O.| +00000250 e7 ea c4 77 83 18 62 36 ba 9c 77 a6 d4 c1 6f 66 |...w..b6..w...of| +00000260 fc 07 4b 1a 00 98 a4 10 5e bc d5 93 07 e7 0c e3 |..K.....^.......| +00000270 34 05 32 23 c7 60 22 a8 52 fa 6e de 3f f9 c6 cc |4.2#.`".R.n.?...| +00000280 c2 54 08 d4 2a 98 39 20 09 f4 1d 8e d5 18 77 5a |.T..*.9 ......wZ| +00000290 f0 f4 08 a4 66 a7 8e fe f5 25 50 16 ca 4a 8d f0 |....f....%P..J..| +000002a0 b4 9f f1 37 e6 9b db 24 25 d0 a0 57 06 74 e2 14 |...7...$%..W.t..| +000002b0 46 51 e9 9c 03 f0 e0 16 17 d0 c9 54 54 29 e6 04 |FQ.........TT)..| +000002c0 9a c3 47 93 69 78 1a de ca f1 d4 b1 52 ff c0 5c |..G.ix......R..\| +000002d0 9f 5f 16 a9 35 01 f9 18 47 7b ee 06 f4 f3 3a 1d |._..5...G{....:.| +000002e0 94 b9 d5 2c 29 a0 80 85 b0 31 55 37 63 bc a6 e6 |...,)....1U7c...| +000002f0 67 66 21 5f eb 1c 17 15 16 03 03 00 bc 93 4b d6 |gf!_..........K.| +00000300 07 b0 12 ca 98 9f 52 b8 14 c3 6e d4 3b f2 74 e4 |......R...n.;.t.| +00000310 f5 6f 51 40 04 cd 1a 5f 69 fb 3d 68 2b 4e 09 df |.oQ@..._i.=h+N..| +00000320 c8 c9 6f c2 87 ae b6 f9 14 6a 41 fa 59 08 0b b0 |..o......jA.Y...| +00000330 d9 0b d0 61 fd 64 c6 52 3e 40 f2 96 75 b0 82 7a |...a.d.R>@..u..z| +00000340 8e 68 11 d2 bc 22 a0 bc 30 d8 a6 1a 88 26 00 d5 |.h..."..0....&..| +00000350 b5 26 49 c2 5d f3 19 c5 c0 9d 75 c3 f4 3e 95 85 |.&I.].....u..>..| +00000360 d0 8b de 31 79 b5 5c 27 6e 99 ab 50 fe ef 3a 07 |...1y.\'n..P..:.| +00000370 a0 a9 ce b7 4b 29 6b 93 42 6d db 34 6b 14 03 a9 |....K)k.Bm.4k...| +00000380 a8 1f c2 57 65 64 c3 95 ff 2a f8 39 de c3 36 f4 |...Wed...*.9..6.| +00000390 dd 77 b0 cf 86 be c4 9c 1d d5 ea 88 3c 8c ed 81 |.w..........<...| +000003a0 51 fc a9 80 78 bc 59 7d d1 e4 48 d5 d6 07 88 e1 |Q...x.Y}..H.....| +000003b0 d7 85 80 81 3a 35 9c 57 21 16 03 03 00 14 d9 b1 |....:5.W!.......| +000003c0 fb 95 82 67 c4 35 92 cd 47 cb 7b 0f 63 1a e0 32 |...g.5..G.{.c..2| +000003d0 43 75 |Cu| >>> Flow 13 (client to server) -00000000 16 03 03 00 35 12 be 58 29 49 7c 4d 6c 24 a0 76 |....5..X)I|Ml$.v| -00000010 72 a5 f8 e2 2b 61 fc a6 e3 97 00 cc 3f 52 26 9b |r...+a......?R&.| -00000020 0e 1c 0b 05 2a f3 86 79 13 2b 33 5f 99 f0 91 5f |....*..y.+3_..._| -00000030 95 88 fe d1 0d 84 a7 5b f0 7b 14 03 03 00 11 82 |.......[.{......| -00000040 33 3a 3a d4 72 53 72 1a 90 d1 d1 14 18 c6 2d 03 |3::.rSr.......-.| -00000050 16 03 03 00 20 47 44 78 28 c6 68 5e 4e 7f ae 14 |.... GDx(.h^N...| -00000060 3c 37 64 45 6c 91 29 ff 19 b6 dd 09 6e 2e f8 b8 |<7dEl.).....n...| -00000070 91 ed 60 9f ec |..`..| +00000000 16 03 03 00 35 36 32 d0 64 c8 ba 33 1d 4f 31 73 |....562.d..3.O1s| +00000010 68 35 f2 76 0c b1 52 12 f5 4b 8a ea 74 0a 7f c2 |h5.v..R..K..t...| +00000020 a4 90 75 1f 24 0a 76 77 1f 01 15 9d 59 fa 16 56 |..u.$.vw....Y..V| +00000030 cc fd f9 08 74 76 31 cc f4 4c 14 03 03 00 11 c0 |....tv1..L......| +00000040 12 9b 35 78 94 a3 4e c3 b2 30 aa c7 fa 44 20 e6 |..5x..N..0...D .| +00000050 16 03 03 00 20 c6 a5 79 48 7b c3 2b 2d 6a 73 0a |.... ..yH{.+-js.| +00000060 83 a9 2b a7 ba 90 ea 6f b5 c2 c1 13 d7 7a 86 37 |..+....o.....z.7| +00000070 5a 24 8e f9 b3 |Z$...| >>> Flow 14 (server to client) -00000000 14 03 03 00 11 9b 5d c3 de 7d 32 e1 a2 2c d3 d7 |......]..}2..,..| -00000010 1b c9 cb bd d3 5b 16 03 03 00 20 21 50 5c ba c2 |.....[.... !P\..| -00000020 c3 d5 53 42 9c cf 93 86 e3 29 18 f0 4b 6c d9 a7 |..SB.....)..Kl..| -00000030 17 d6 dc b9 7c 82 9e 61 c1 dd ea 17 03 03 00 19 |....|..a........| -00000040 59 bd 70 5b d8 4e fd 09 1c 17 c1 82 6a 85 8b fc |Y.p[.N......j...| -00000050 2e 59 87 80 13 dc 3e 7a 01 |.Y....>z.| +00000000 14 03 03 00 11 c4 0e 59 d8 5e f6 5b 1d e6 20 7b |.......Y.^.[.. {| +00000010 45 4f 89 cd 2b a9 16 03 03 00 20 58 ff 80 6c f2 |EO..+..... X..l.| +00000020 fd 94 e7 66 b3 6d e3 37 57 8a 8c 35 98 4e bb c3 |...f.m.7W..5.N..| +00000030 42 87 32 b7 3b 6f ee 0f f1 7d 08 17 03 03 00 19 |B.2.;o...}......| +00000040 8a f6 02 17 4e 8a 1e 2b db 44 24 d4 aa c6 d4 af |....N..+.D$.....| +00000050 ef 5a a3 17 ba 77 f4 54 6e |.Z...w.Tn| >>> Flow 15 (client to server) -00000000 15 03 03 00 12 d9 80 6a 95 a6 37 81 5b d0 78 d3 |.......j..7.[.x.| -00000010 4a 02 cc a6 ba b8 96 |J......| +00000000 15 03 03 00 12 84 3f 11 0b 00 bd 12 5e be 74 4d |......?.....^.tM| +00000010 04 e4 44 b2 01 73 66 |..D..sf| diff --git a/src/crypto/tls/testdata/Client-TLSv12-RenegotiateTwiceRejected b/src/crypto/tls/testdata/Client-TLSv12-RenegotiateTwiceRejected index 3d57311bb2..62b6831a47 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-RenegotiateTwiceRejected +++ b/src/crypto/tls/testdata/Client-TLSv12-RenegotiateTwiceRejected @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 0c 17 84 76 1d |....]...Y.....v.| -00000010 f7 2f 64 9b 6a be 05 1b 7c 96 bf f1 d3 33 37 d2 |./d.j...|....37.| -00000020 4b 33 2d f9 16 12 0a 87 18 60 71 20 36 34 57 1e |K3-......`q 64W.| -00000030 53 7d 7c 52 c6 be a5 35 41 f6 72 65 3c 78 42 a5 |S}|R...5A.re..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 02 b5 bb |............ ...| -000002d0 3d 94 26 c2 04 4c 2d e6 e3 d0 e5 78 c1 00 eb de |=.&..L-....x....| -000002e0 df 23 8a f3 d7 67 0c d1 0b 5e 43 84 4f 08 04 00 |.#...g...^C.O...| -000002f0 80 3d b9 6b 00 6e e7 cf 4a 27 67 de a2 d4 a4 ad |.=.k.n..J'g.....| -00000300 37 19 a3 66 ab 1e 92 7f 99 74 6b 4a 5e 3d e6 3b |7..f.....tkJ^=.;| -00000310 1a 0a d1 fe 2a 3a c9 08 d9 0a 1a 7f c1 83 fa 9e |....*:..........| -00000320 9d 8a 5e 2b 52 3a ef 09 91 63 db 4e 19 9c 59 ef |..^+R:...c.N..Y.| -00000330 a9 1c 23 12 8b d5 67 74 05 b7 c4 12 bd 1d 63 9a |..#...gt......c.| -00000340 97 a7 9c fe 94 ed 81 96 a6 e6 30 02 11 c2 97 eb |..........0.....| -00000350 0a f6 14 e7 d4 d3 11 5d 8f ff 77 f1 19 03 a3 16 |.......]..w.....| -00000360 1e 0d 0e e1 9b f6 bd de 7e 40 d5 36 56 dd 85 44 |........~@.6V..D| -00000370 5a 16 03 03 00 04 0e 00 00 00 |Z.........| +000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 95 6f d7 |............ .o.| +000002d0 37 b9 49 ff 98 39 6f 25 c5 c0 e0 89 61 23 2d 22 |7.I..9o%....a#-"| +000002e0 5b 86 d6 7f a1 19 07 f7 12 4d 01 e6 1b 08 04 00 |[........M......| +000002f0 80 ca fd 6e 23 09 33 a7 0c 9b 4b 2b 38 37 a0 32 |...n#.3...K+87.2| +00000300 21 a4 e4 fe 56 b6 4e c6 d1 e6 86 fa d9 13 b4 f3 |!...V.N.........| +00000310 72 bf 31 ef c3 33 e9 99 a1 bf a4 e5 10 46 44 7d |r.1..3.......FD}| +00000320 cb ea 38 99 d0 bc 1f 16 81 fb ad 09 7e 9e 54 99 |..8.........~.T.| +00000330 40 c2 44 65 94 53 88 c3 28 db 7f 1b fa 52 f1 63 |@.De.S..(....R.c| +00000340 9a e9 f2 43 7f 19 2b 3e 02 3d 53 ed a1 f9 9a ff |...C..+>.=S.....| +00000350 aa af 8d 4c ab bf d2 7a b4 ea 1e f9 22 fe ee 7e |...L...z...."..~| +00000360 a1 3e dc d4 f1 76 d1 4e 7b 1b 84 f6 b3 a7 f7 a9 |.>...v.N{.......| +00000370 37 16 03 03 00 04 0e 00 00 00 |7.........| >>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| -00000030 16 03 03 00 20 c3 8e 95 b8 d7 c3 39 43 fd 47 5f |.... ......9C.G_| -00000040 b5 3f 9e a3 7a a2 82 d5 82 cf d7 b7 9e 95 9f ed |.?..z...........| -00000050 fc f5 76 25 96 |..v%.| +00000030 16 03 03 00 20 d0 64 37 7c 81 1c cd 86 e7 ab 97 |.... .d7|.......| +00000040 25 1d c5 ee bd 5a 49 44 69 c8 3e db 37 6a dc 9a |%....ZIDi.>.7j..| +00000050 fd e2 5e 82 16 |..^..| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 20 1e d5 ca 57 c6 |.......... ...W.| -00000010 43 4f d3 11 44 d1 f8 69 d3 9e 22 17 d6 c1 7f aa |CO..D..i..".....| -00000020 ad d6 1f 08 67 9c cd 4f 9f 53 c0 |....g..O.S.| +00000000 14 03 03 00 01 01 16 03 03 00 20 18 71 b3 67 a3 |.......... .q.g.| +00000010 98 36 20 8f e4 17 30 e4 73 de 91 88 ef f7 f3 8a |.6 ...0.s.......| +00000020 c6 0e 5e b2 1f e2 e6 5a 52 f6 72 |..^....ZR.r| >>> Flow 5 (client to server) -00000000 17 03 03 00 16 8d fa 48 d3 57 aa d7 8e 75 8b ff |.......H.W...u..| -00000010 bd 03 ea df 3e da d3 15 ec 12 67 |....>.....g| +00000000 17 03 03 00 16 20 c3 2a be 39 d2 7c 1c 83 30 cc |..... .*.9.|..0.| +00000010 7b cd 44 ae 2b e8 d4 19 50 69 81 |{.D.+...Pi.| >>> Flow 6 (server to client) -00000000 16 03 03 00 14 e9 4d ee 89 18 5f bd d8 15 dd 1f |......M..._.....| -00000010 a4 94 98 3b 96 75 3c 2b bc |...;.u<+.| +00000000 16 03 03 00 14 96 2f 3a b5 b5 56 c9 d5 38 c0 1a |....../:..V..8..| +00000010 eb 35 c5 b9 dd 1c 5b e6 50 |.5....[.P| >>> Flow 7 (client to server) -00000000 16 03 03 01 38 1c b1 26 7d 48 7e 75 46 3c 85 68 |....8..&}H~uF<.h| -00000010 1c ef 2b 61 c1 f1 c5 dc 38 61 a1 2f a1 f1 3d b8 |..+a....8a./..=.| -00000020 ab 39 ee c6 c1 2b ec fe ea a8 0d d3 81 de 73 87 |.9...+........s.| -00000030 d1 0b e7 cf d0 88 38 11 26 20 aa f4 39 4d 64 ea |......8.& ..9Md.| -00000040 97 b8 7c aa 4b b0 81 3d 2b 32 db 8c be 98 73 e2 |..|.K..=+2....s.| -00000050 e6 81 8b 23 f9 c2 a9 d7 dd 31 17 0f c2 37 b5 95 |...#.....1...7..| -00000060 31 3f 6b 62 0f 57 73 56 bd 94 d9 87 40 e4 43 46 |1?kb.WsV....@.CF| -00000070 fc ae cb b6 f9 7c 0a 8b 04 a6 d7 0f ca 66 42 93 |.....|.......fB.| -00000080 f6 0e 89 b1 b3 1c 6e 4a a2 d3 b3 1b 33 6c cd 83 |......nJ....3l..| -00000090 15 99 4f 3c 2c 27 b0 82 18 1a 0f ba e3 b1 55 aa |..O<,'........U.| -000000a0 5d 2b 92 24 c4 be 22 3e 07 c6 18 d6 5a 19 f7 5a |]+.$..">....Z..Z| -000000b0 f0 6e fe 2a 2c 61 6b cb 9b d3 ad ea 78 c1 9e a2 |.n.*,ak.....x...| -000000c0 fb 5a 9c e0 d7 0e fb 33 ca 9a ed 2b f9 b2 e8 bf |.Z.....3...+....| -000000d0 82 2c 28 09 fd 44 cd 30 b0 e4 a8 5c 8f 28 d1 f5 |.,(..D.0...\.(..| -000000e0 93 46 33 bd ba 18 ff e5 45 19 da 52 34 48 15 7f |.F3.....E..R4H..| -000000f0 39 bd 78 66 9d e4 fd af 58 59 44 8a 46 cc 2c 37 |9.xf....XYD.F.,7| -00000100 95 26 20 dd 14 65 73 d2 3c 25 e2 54 21 be c5 f6 |.& ..es.<%.T!...| -00000110 a1 9a 94 e8 41 aa 4b 75 b7 f8 03 78 a4 8a b8 28 |....A.Ku...x...(| -00000120 7f 72 17 60 37 07 a5 2a dd 65 34 97 9c ee 72 27 |.r.`7..*.e4...r'| -00000130 29 14 d8 b9 ed fc 4d fa df 8b a9 7f 7f |).....M......| +00000000 16 03 03 01 34 ae 4f 4c 78 20 df 3b 9e f3 c1 82 |....4.OLx .;....| +00000010 37 6b ca fc 48 2a 2c 9a 71 7e c3 20 a0 e8 f7 d5 |7k..H*,.q~. ....| +00000020 76 af 11 81 dd 69 e9 93 58 df 58 8c fb f1 82 ad |v....i..X.X.....| +00000030 35 0e fb 6c a9 58 7a 5d 79 38 cb d7 77 1f 93 34 |5..l.Xz]y8..w..4| +00000040 7e bb 88 61 9e 19 1a 98 bb 6f ad 78 2c a6 73 ab |~..a.....o.x,.s.| +00000050 a4 7e 4b d7 75 69 7b 92 47 68 3d 7b 40 03 60 59 |.~K.ui{.Gh={@.`Y| +00000060 2e 04 bc cd fc ca 45 2c 2c f7 e5 0a 66 49 0b 86 |......E,,...fI..| +00000070 c5 ec 86 e6 ae c9 39 4b 05 1f 21 db 78 8d 51 e6 |......9K..!.x.Q.| +00000080 5d fe be 6a 1d 85 e1 15 23 56 86 4c ba 09 bf 7b |]..j....#V.L...{| +00000090 9e 36 e9 7a 8f 06 af 10 7b 4a 4b af 58 db f9 4e |.6.z....{JK.X..N| +000000a0 13 36 61 f4 e3 a9 c6 37 11 d4 ed 9e 6a c7 bf 16 |.6a....7....j...| +000000b0 ea a4 ae 01 99 4a b5 3e 9c ca 6c ce e8 a2 3d b8 |.....J.>..l...=.| +000000c0 81 ef 60 7b 51 79 81 22 87 49 ad ab fb c6 f6 48 |..`{Qy.".I.....H| +000000d0 c0 ba e0 2b d7 90 42 f7 a8 0d f0 cf 2c 7a 55 7d |...+..B.....,zU}| +000000e0 be 65 a6 67 bd 96 7f 01 6f ce db f6 50 2f 45 b6 |.e.g....o...P/E.| +000000f0 6f cc 74 ba 6f 57 3b e3 a4 08 34 92 e6 ac e4 99 |o.t.oW;...4.....| +00000100 2e b6 9b 29 4d 26 dd 7f 5c f5 1b 7e 5e 5c fd f7 |...)M&..\..~^\..| +00000110 d4 da 81 47 51 8c 3f 94 e1 95 5b de b9 6e 4a 76 |...GQ.?...[..nJv| +00000120 bc 59 6a bb 1f 1c 79 02 93 2e 21 b3 6d be ae b4 |.Yj...y...!.m...| +00000130 95 6b 8a 48 cb 84 fb ab b3 |.k.H.....| >>> Flow 8 (server to client) -00000000 16 03 03 00 85 f4 88 c2 bb 0e c4 2f bc 16 6e 10 |.........../..n.| -00000010 80 16 34 b2 20 c8 8f 01 64 1a 78 f9 0b d4 b9 4d |..4. ...d.x....M| -00000020 97 52 5e 79 86 37 c1 db ae 6f 7a 41 d4 6f 44 0a |.R^y.7...ozA.oD.| -00000030 79 e6 56 02 03 e4 ff 65 cc 7f 95 08 c8 e7 bc 77 |y.V....e.......w| -00000040 7c 7a 3f 85 04 37 50 55 6c 5f 43 b2 28 9e b5 55 ||z?..7PUl_C.(..U| -00000050 f6 a7 3c 9a e3 ef 40 76 14 6e 22 1d 09 3f d1 7c |..<...@v.n"..?.|| -00000060 ba 89 7c 5f e7 91 c3 e8 22 c3 a4 77 e4 da e7 63 |..|_...."..w...c| -00000070 de ea 1b 1f a8 f2 27 a9 ec 95 03 ef b7 96 64 cf |......'.......d.| -00000080 56 56 58 a4 8f c0 f7 58 60 55 16 03 03 02 69 64 |VVX....X`U....id| -00000090 1f e8 68 47 de 6d 1f 7b ed 24 0d 7b b4 7e 45 fd |..hG.m.{.$.{.~E.| -000000a0 0e 76 9e b8 58 0e fb 00 b1 29 74 93 ce 54 29 e4 |.v..X....)t..T).| -000000b0 bb 72 1d ea b7 a0 5e d2 b6 31 de 0d c5 72 8c 75 |.r....^..1...r.u| -000000c0 13 17 41 b6 96 2b e7 f4 4f c4 3f 18 d9 3b 74 65 |..A..+..O.?..;te| -000000d0 dd 7a df 4f b6 5b 95 ff 24 13 a4 84 15 89 d7 cc |.z.O.[..$.......| -000000e0 fc 26 2f e9 8c e6 89 9d 9f d8 65 46 63 5e a0 1d |.&/.......eFc^..| -000000f0 2e 50 65 f6 6d df 65 3c a6 87 c5 65 e5 76 5d 31 |.Pe.m.e<...e.v]1| -00000100 0d f5 54 4a 05 ec 19 0a 25 54 54 7b ab 34 fb df |..TJ....%TT{.4..| -00000110 d2 91 f5 06 36 77 39 1a 67 ab d7 c9 41 a2 eb f4 |....6w9.g...A...| -00000120 ce c5 3e 0a 02 d8 c7 e0 48 99 2a 2b 2d 97 74 03 |..>.....H.*+-.t.| -00000130 64 9b 8c d3 fc 65 17 ce 5a 20 2d 66 e9 9a a6 bc |d....e..Z -f....| -00000140 48 3c 08 65 d3 6f 47 c7 76 b1 59 6a b0 1c 45 b4 |H<.e.oG.v.Yj..E.| -00000150 24 9d 71 83 fb 49 96 cb c4 b9 8a 52 9a 28 92 66 |$.q..I.....R.(.f| -00000160 6e ef 7c a9 a8 88 d5 16 de 96 8e 67 89 cf 62 12 |n.|........g..b.| -00000170 93 63 7f e1 b0 76 0b 49 1a 61 af 02 e7 a0 51 9f |.c...v.I.a....Q.| -00000180 70 41 45 6f b1 d3 f8 cd ce d5 d0 a7 e1 f3 1e 7c |pAEo...........|| -00000190 50 20 ab 03 13 de 4c 1e b4 f3 6b 21 3f 41 99 4d |P ....L...k!?A.M| -000001a0 d0 ca cd de 88 a1 bc 56 72 63 e8 55 c1 31 72 b2 |.......Vrc.U.1r.| -000001b0 b2 a3 ea cf 39 8b 7f 82 55 1a 05 fb 6b c3 b7 6d |....9...U...k..m| -000001c0 08 0f 2a 34 ad 74 10 e0 4a 53 80 f7 98 a4 d6 f1 |..*4.t..JS......| -000001d0 9c e5 9a 61 a0 f0 ca 30 54 f3 d9 a7 c4 54 08 3c |...a...0T....T.<| -000001e0 23 30 f5 3e c6 96 2c 97 84 7c 3d 13 0c 4a e6 0f |#0.>..,..|=..J..| -000001f0 ea 99 9c ba e5 34 a2 e6 74 e5 c0 86 d1 4e d4 ed |.....4..t....N..| -00000200 a1 e2 81 0a cc ec f8 d2 0a 0d 53 87 d7 d7 cc 75 |..........S....u| -00000210 6d a8 c0 25 de 31 f3 cb 08 71 f0 e3 5e 7f d0 5c |m..%.1...q..^..\| -00000220 fb 48 1a a4 f9 70 08 14 a3 3b 90 87 94 0c 70 df |.H...p...;....p.| -00000230 9d b6 db 94 55 99 ac 18 df d1 d5 8c 16 8c c9 25 |....U..........%| -00000240 2d 78 60 69 66 fb 0d 09 39 18 aa 77 b2 fb ed d1 |-x`if...9..w....| -00000250 58 d5 53 6a 32 05 6f cc 35 16 6f 19 98 31 f4 36 |X.Sj2.o.5.o..1.6| -00000260 af 1b 88 39 ad 3b a9 46 b5 49 b3 8e 26 76 ab 02 |...9.;.F.I..&v..| -00000270 a4 ba f3 29 e5 08 f9 47 a6 b4 f0 ad 4d 70 c6 80 |...)...G....Mp..| -00000280 ab 33 c7 5a 57 a7 40 37 6b 53 96 e9 35 88 78 bf |.3.ZW.@7kS..5.x.| -00000290 dd 81 f8 2f 9c 4d c1 d1 ce 45 16 a4 fb 57 bd ff |.../.M...E...W..| -000002a0 67 1c 3f 3f d2 49 89 a2 f3 b3 b9 4b 74 04 c4 e5 |g.??.I.....Kt...| -000002b0 83 7c ff 9f a0 6b d2 c3 6a 07 ab 91 65 40 ba 20 |.|...k..j...e@. | -000002c0 7a 59 f1 66 ba f8 47 b1 ab 03 96 c3 e2 57 8d f5 |zY.f..G......W..| -000002d0 a6 43 a3 6b 6b 9d 42 18 9b 6a 41 09 75 db 8b b7 |.C.kk.B..jA.u...| -000002e0 7a a6 0e 7e d4 ee da a8 eb 8b 0d 39 8a 1d 6e b5 |z..~.......9..n.| -000002f0 9b 6a b1 57 f9 9d ec 01 16 03 03 00 bc 5a c0 bc |.j.W.........Z..| -00000300 54 9d 60 e3 68 3c 67 38 46 de cb 1f f0 fb 11 90 |T.`.h..W"...l..| +00000040 0b 13 f3 9f 63 55 b9 49 61 2b dd 5e 2b e1 fd ec |....cU.Ia+.^+...| +00000050 1d 0d 94 06 42 dc 2c 6f 88 22 cb 30 4f 66 6f 16 |....B.,o.".0Ofo.| +00000060 3a a0 c0 23 12 82 46 38 70 68 e5 12 b9 16 12 e7 |:..#..F8ph......| +00000070 38 6b 50 64 55 f0 47 a9 e0 cd 19 01 8e d5 12 96 |8kPdU.G.........| +00000080 09 db 5c 52 4b db 9b 26 43 37 16 03 03 02 69 41 |..\RK..&C7....iA| +00000090 52 a8 ca e5 8f e0 33 4b 52 93 74 ef bb 42 20 d1 |R.....3KR.t..B .| +000000a0 cc 24 79 ce df 51 90 e0 19 b1 11 fb e9 ef b5 e4 |.$y..Q..........| +000000b0 ae da 72 e1 35 a8 41 88 a8 4b 68 d2 50 58 ba ef |..r.5.A..Kh.PX..| +000000c0 b0 1e 20 26 a3 c2 86 a7 68 60 84 2d 23 14 38 21 |.. &....h`.-#.8!| +000000d0 12 60 05 2f 79 9e c0 08 4c 87 a7 41 b3 d3 84 9a |.`./y...L..A....| +000000e0 f1 45 bd 2d ff 7c b5 bd c4 3a b1 48 10 9a d8 cf |.E.-.|...:.H....| +000000f0 ce 58 47 75 e1 6d 01 b6 18 bd 78 6b 86 a1 f2 1b |.XGu.m....xk....| +00000100 c8 03 4d 0a ce ce d4 68 8f 9a 54 1e 83 83 89 2c |..M....h..T....,| +00000110 36 a2 3a b5 95 09 de c5 8e 8c d0 a4 95 59 7e d6 |6.:..........Y~.| +00000120 f8 5f 96 e9 c5 cb 9b 6c c0 b7 55 15 b3 b4 d0 ea |._.....l..U.....| +00000130 bf 11 1c 89 1a 5c f2 09 74 9a 43 73 4f 6f 00 33 |.....\..t.CsOo.3| +00000140 b9 e0 6a 99 b9 e0 02 86 dd cd 07 68 72 63 0d 8b |..j........hrc..| +00000150 e0 e8 12 68 4d f6 3b dc 0a 93 82 48 ce f7 96 ba |...hM.;....H....| +00000160 7f c5 90 07 45 66 3d 47 b8 8d 5f 0d 41 8d 88 76 |....Ef=G.._.A..v| +00000170 bf ce 9c 2a 2e 25 7c 47 f6 96 73 0b 43 42 73 2c |...*.%|G..s.CBs,| +00000180 d5 b3 bc 82 c5 19 2f 5d c4 69 21 7d c8 7b 1b b8 |....../].i!}.{..| +00000190 b6 d1 37 89 92 a6 b7 44 cd e6 23 1f a1 03 08 05 |..7....D..#.....| +000001a0 1e cf 54 78 e9 af 04 bc e3 94 aa 12 ce 67 62 ce |..Tx.........gb.| +000001b0 f4 2f ef f7 2b 8d 65 06 08 07 2f c6 fa b2 d2 c8 |./..+.e.../.....| +000001c0 f1 d7 c4 1f cc 8b 0e b8 f2 b2 1d fb 09 19 5a b0 |..............Z.| +000001d0 a3 23 6e 05 20 9a 28 39 16 05 0e c4 7d d0 59 f5 |.#n. .(9....}.Y.| +000001e0 9a de 88 da a2 c0 fb 7b 84 19 05 7d 80 6f 9a 03 |.......{...}.o..| +000001f0 0a f8 5f 97 a2 b4 c0 d9 6d 79 f5 c0 51 d3 63 d2 |.._.....my..Q.c.| +00000200 b8 ee a6 b0 76 59 7f 92 6d ad 3c bb 96 34 ac 0c |....vY..m.<..4..| +00000210 81 61 c5 07 7e 65 f1 c3 dd 3e 69 ad ee 7f 56 8d |.a..~e...>i...V.| +00000220 d7 92 48 5c 23 be 94 44 2e 8a 13 76 ce a3 cb d2 |..H\#..D...v....| +00000230 86 d5 eb 2c 48 55 fd 31 c1 94 08 55 69 8c 20 cd |...,HU.1...Ui. .| +00000240 65 fa 47 5e 8e 7f 04 a4 a0 54 c3 cf 4e b5 a0 61 |e.G^.....T..N..a| +00000250 3a 66 fd 21 5d 42 ab b3 46 d8 2a 64 69 1a d3 da |:f.!]B..F.*di...| +00000260 41 65 2c 36 50 f1 79 c3 83 01 d2 87 41 d9 10 1d |Ae,6P.y.....A...| +00000270 75 a2 74 de 48 e3 9c 9e c8 96 58 45 43 82 dd d6 |u.t.H.....XEC...| +00000280 e1 46 66 2f 13 e4 1d fe 81 8f ea 3d 6d 83 d7 97 |.Ff/.......=m...| +00000290 4d ed c6 67 0e 4b e5 a1 ca 2b 24 c5 b1 24 af df |M..g.K...+$..$..| +000002a0 7a 0e 44 b9 c1 5f 07 43 c1 6f 94 d3 22 fb 14 df |z.D.._.C.o.."...| +000002b0 a3 23 38 c9 91 ff 12 41 fa 47 f7 83 fb b6 ca ea |.#8....A.G......| +000002c0 19 01 22 8a ba d7 86 c5 d2 82 2f ac f5 4c a4 e9 |.."......./..L..| +000002d0 90 f5 52 c7 88 96 ae f3 0a 91 53 1c db bf 4b a9 |..R.......S...K.| +000002e0 42 43 0d 2d cc f2 6a 79 1e 9a 3a bd 55 da 5d 6c |BC.-..jy..:.U.]l| +000002f0 a3 84 79 76 7d 96 62 5e 16 03 03 00 bc 51 62 b9 |..yv}.b^.....Qb.| +00000300 26 c9 f7 dd 55 83 aa cd 90 5d e9 9a 29 92 8c 6f |&...U....]..)..o| +00000310 b1 df 4c b7 be 75 89 2b dc b1 ad ae 01 38 27 0f |..L..u.+.....8'.| +00000320 36 43 0b 04 69 6b a4 3a 52 b5 4f df 50 1d 04 ee |6C..ik.:R.O.P...| +00000330 4a f1 a0 6c 06 6f 24 2a f3 dc 7c a4 96 12 e2 83 |J..l.o$*..|.....| +00000340 9c d8 2d 63 2e 3b 1c 73 e6 32 ce 15 76 01 9a a9 |..-c.;.s.2..v...| +00000350 3b a7 dc aa 40 82 4d 5a 68 24 78 4e fe 64 db a4 |;...@.MZh$xN.d..| +00000360 ff 87 6d 90 bc d9 ec 0d ed 8b 54 12 bd 74 16 1d |..m.......T..t..| +00000370 2c 30 57 8f 67 56 7c 09 e6 b1 12 f8 4a 9f e3 79 |,0W.gV|.....J..y| +00000380 c1 8b fa 91 f7 1a 29 bd a3 1f 59 59 16 26 04 10 |......)...YY.&..| +00000390 e4 19 c9 91 a6 b3 c5 b5 df a3 b0 11 a5 87 29 4e |..............)N| +000003a0 5b 9f 96 cf 88 19 9e ae b4 e6 63 19 6d c5 ee 7a |[.........c.m..z| +000003b0 c9 38 2d 0a fd f6 3b f8 f5 16 03 03 00 4a f5 3f |.8-...;......J.?| +000003c0 ef a3 f8 86 1b f5 ce 8e 48 f2 d0 cb 75 d6 80 b2 |........H...u...| +000003d0 78 ef bc 77 a6 aa 91 cd 88 39 62 f8 42 78 7c f3 |x..w.....9b.Bx|.| +000003e0 8b c7 86 71 9c a5 9f 1c 5f 40 25 e9 c6 69 82 a1 |...q...._@%..i..| +000003f0 45 ee d1 9d f7 9c a0 b9 34 b8 82 72 f9 f8 1d fb |E.......4..r....| +00000400 a5 74 b5 a5 68 04 82 c4 16 03 03 00 14 07 9c 37 |.t..h..........7| +00000410 77 ad 83 27 66 2c 3a ba 26 22 2f 72 b4 d1 c8 c1 |w..'f,:.&"/r....| +00000420 06 |.| >>> Flow 9 (client to server) -00000000 16 03 03 02 69 3d ff d3 96 89 9f 41 3d 64 0c 71 |....i=.....A=d.q| -00000010 e5 80 34 1f 5d 8a cb b4 47 08 c8 c0 7d 17 3b db |..4.]...G...}.;.| -00000020 d4 d1 9d 98 16 b9 84 73 c9 8a ff 76 bf 1e f0 bd |.......s...v....| -00000030 da 35 a8 2a d5 6a 28 cf 66 bf e0 dc 45 a9 8f 61 |.5.*.j(.f...E..a| -00000040 65 75 99 29 fe 5a c8 46 2e 14 10 79 a2 b9 c9 04 |eu.).Z.F...y....| -00000050 37 f8 01 8e 72 2b b7 c9 23 75 51 59 b9 8d 4a 87 |7...r+..#uQY..J.| -00000060 9d 54 5d 70 25 66 5b 70 a7 04 e4 c0 6a e9 25 8f |.T]p%f[p....j.%.| -00000070 1b e0 39 59 b4 f3 0a 3b 42 bd 25 f3 e3 38 45 d6 |..9Y...;B.%..8E.| -00000080 d9 22 b6 1f 40 72 19 2d c6 1d 22 66 c5 cb 10 2c |."..@r.-.."f...,| -00000090 1c 6a f8 fc ca f3 b4 f1 d2 e5 cf 7b ef 89 e6 9b |.j.........{....| -000000a0 c5 5e 4e 83 6b 55 2f 01 da ad d4 3c 91 d4 17 f2 |.^N.kU/....<....| -000000b0 8c ee ae e1 6c b4 c9 9d 33 b1 7c d3 e4 61 72 8f |....l...3.|..ar.| -000000c0 81 26 8f b9 c5 3f ca 42 00 16 57 1c 9a d2 37 80 |.&...?.B..W...7.| -000000d0 76 47 b7 59 3c 39 b6 d2 0b 83 45 d1 3e 4d c4 8d |vG.Y<9....E.>M..| -000000e0 24 8f 95 f6 44 2f 45 70 69 6f 82 13 f7 42 a2 de |$...D/Epio...B..| -000000f0 bb 86 af c3 b1 eb aa 34 ae 5d fb c2 e1 5c 87 d1 |.......4.]...\..| -00000100 2b f4 36 1f da cf 94 b7 fd 78 de 96 0a cd f5 80 |+.6......x......| -00000110 6d a5 7c fa a0 1a dd aa ef 0f 4c 7a cc 10 33 e0 |m.|.......Lz..3.| -00000120 be c1 1c 9e 3f e0 4c a8 93 95 da 5d 01 bd a8 84 |....?.L....]....| -00000130 8b e8 53 c2 69 04 92 fa 54 16 38 d7 82 17 07 da |..S.i...T.8.....| -00000140 71 af 5d 82 72 3d 6b 10 fd 46 b5 a2 8d 6e fe f8 |q.].r=k..F...n..| -00000150 65 4a 48 6f 2e e3 8d b9 97 23 7f 51 ec 32 07 3b |eJHo.....#.Q.2.;| -00000160 1c df 26 be 29 e7 95 77 ed 1e d0 b2 d9 68 e4 65 |..&.)..w.....h.e| -00000170 5b e7 97 58 ec 50 0c d1 e1 6e 76 73 d5 7b 37 41 |[..X.P...nvs.{7A| -00000180 03 03 dd 07 53 48 d6 8c d5 69 83 05 06 1e 59 54 |....SH...i....YT| -00000190 9a cb 50 c5 55 12 23 47 57 83 50 83 58 ec 97 95 |..P.U.#GW.P.X...| -000001a0 09 de e9 01 d7 62 43 eb 1d 80 82 08 c0 1e 7d d4 |.....bC.......}.| -000001b0 6b d5 dd b7 0c 8d 7f 7c 2d ed f9 b1 16 38 ec b7 |k......|-....8..| -000001c0 a0 1b 5a da a6 6f b2 59 ce ff d9 fc 9b 0c fc 16 |..Z..o.Y........| -000001d0 27 5e 79 68 f8 3d 0b dc bb 6d 9f 0d 4d 3b 19 d4 |'^yh.=...m..M;..| -000001e0 0f 36 59 5f 41 c4 f6 9c c1 47 f5 65 e0 d8 b1 06 |.6Y_A....G.e....| -000001f0 3b 05 6c 90 fd f2 e8 b1 33 a9 1c a7 84 f4 e6 02 |;.l.....3.......| -00000200 f3 80 2e 9f 81 13 01 ea 9f 09 f0 55 22 34 93 bf |...........U"4..| -00000210 b2 13 07 62 f0 fc 3e 08 b2 8d cb 62 64 33 a4 e6 |...b..>....bd3..| -00000220 1c 26 ff 4e fe 28 3e 82 58 ce 82 a1 ef a4 14 f3 |.&.N.(>.X.......| -00000230 81 59 e2 29 da 30 ef 1d 20 75 1a 7f 27 b5 90 be |.Y.).0.. u..'...| -00000240 40 fc 52 08 0a 62 c4 53 4f 6d e9 fb 96 81 8c 1e |@.R..b.SOm......| -00000250 3d 3f bc 87 fb fb 6c 8b 17 7a 14 38 53 df 0c ef |=?....l..z.8S...| -00000260 f4 12 24 fa 77 ce 0b 2a ea 1d 1e 0c 8e 50 16 03 |..$.w..*.....P..| -00000270 03 00 35 28 fe 49 cd b2 80 e8 65 78 83 02 1f 03 |..5(.I....ex....| -00000280 75 ab 8c f6 cb c0 fa 86 8f 5e b2 63 f8 a4 37 b9 |u........^.c..7.| -00000290 2b 82 9e 27 cb 82 97 c6 7c 90 cc de 19 d2 cc 7e |+..'....|......~| -000002a0 19 c1 5e da 99 87 05 31 16 03 03 00 98 09 f8 56 |..^....1.......V| -000002b0 7f 7d 66 c3 a3 e0 e2 68 48 b6 38 cb 6c ca b9 28 |.}f....hH.8.l..(| -000002c0 ff 5b 52 f9 7b 69 ba 92 a9 ba 25 7a 0a fe 97 3b |.[R.{i....%z...;| -000002d0 73 f2 b6 8b a7 cb d6 cf 9e da f1 ce d7 41 98 d3 |s............A..| -000002e0 3d 59 ef 9c 14 78 e2 d7 46 0b 63 b2 aa 4e 02 1e |=Y...x..F.c..N..| -000002f0 40 78 a2 e6 55 c2 20 88 ab 0e bd a8 78 76 4d fe |@x..U. .....xvM.| -00000300 68 c4 ad c0 7e 9d 2b 0c 08 e9 0f 65 1c 9e 38 df |h...~.+....e..8.| -00000310 f9 07 1f 8a 6b 2c af 94 89 35 75 61 e9 5f 2b 90 |....k,...5ua._+.| -00000320 b4 38 15 26 a1 ea 15 dc 76 09 0a 2b ff 2d 42 ab |.8.&....v..+.-B.| -00000330 b5 f7 37 ce ec 34 8e 9a 55 b5 01 56 98 46 b7 1e |..7..4..U..V.F..| -00000340 07 30 0d 25 8a 14 03 03 00 11 c7 b7 3a b1 86 25 |.0.%........:..%| -00000350 cf 3e a6 ce 37 36 65 11 b2 85 13 16 03 03 00 20 |.>..76e........ | -00000360 c8 69 c3 d3 63 3d 94 1c 78 e2 b7 dd 84 b5 f9 2d |.i..c=..x......-| -00000370 d6 ed 39 fe 23 48 ee 7a 75 17 21 70 eb b8 96 56 |..9.#H.zu.!p...V| +00000000 16 03 03 02 69 70 78 66 7a 28 3b 50 a6 21 b2 cc |....ipxfz(;P.!..| +00000010 52 a6 74 f7 29 8a dc fd c0 1c 79 d0 20 23 d0 74 |R.t.).....y. #.t| +00000020 d3 16 a6 4c 6d df 6e 32 2e 69 46 dd 8d 22 9e 8e |...Lm.n2.iF.."..| +00000030 cb 75 44 75 7e 24 69 ed ce cf 5c 4b a9 a2 b5 d0 |.uDu~$i...\K....| +00000040 48 bf 08 d8 1d 16 d9 9f 6d b4 24 ee f1 f3 58 79 |H.......m.$...Xy| +00000050 4c 19 4c 99 7f 01 a8 80 b1 3c 4e 55 d1 64 75 89 |L.L......?.Pjad*Q...| +00000120 01 2e 5a 1c 8b 12 58 c5 32 e1 3f ea 0b ac 4c 3b |..Z...X.2.?...L;| +00000130 1d 97 11 e9 92 6d 52 f0 1e f7 5a f8 71 5f f5 a6 |.....mR...Z.q_..| +00000140 6b aa 30 4f 85 41 c6 49 83 37 3a 72 86 1a be 7a |k.0O.A.I.7:r...z| +00000150 1d bc d6 ad 67 6c 95 42 5d 74 10 8e ac 4b 8d b3 |....gl.B]t...K..| +00000160 6e 3d 9c 8f 08 71 be ce ce aa 64 26 62 2a 58 8c |n=...q....d&b*X.| +00000170 e4 7b 75 e9 61 90 38 b2 c2 a0 8d c7 a9 11 cf 5b |.{u.a.8........[| +00000180 30 a7 33 3b 2b c2 fd 2a 6b db 3d cf 35 6c 23 28 |0.3;+..*k.=.5l#(| +00000190 14 e4 7b 10 50 e8 00 9f af 60 69 cf a9 d9 93 f3 |..{.P....`i.....| +000001a0 8f 7d 39 49 97 5b 92 4a 35 2a 6c 68 3b 48 25 77 |.}9I.[.J5*lh;H%w| +000001b0 6e d0 57 76 c4 94 83 10 e3 3d 00 e8 b9 fe da d9 |n.Wv.....=......| +000001c0 a5 56 22 61 e0 f4 33 dd c8 dd 4d 2f 39 51 35 12 |.V"a..3...M/9Q5.| +000001d0 9a cb dd e1 03 d3 27 9f 41 71 83 5c c7 6c a3 38 |......'.Aq.\.l.8| +000001e0 9f db 39 1c 2a f6 4b e0 48 44 61 1b 34 3c bc ed |..9.*.K.HDa.4<..| +000001f0 7a 31 c9 9f 8e 82 2d fb b6 bd 6e 4c 57 76 23 f5 |z1....-...nLWv#.| +00000200 7d 68 ff 02 75 42 10 e7 2d 24 83 4a 04 7a 78 d7 |}h..uB..-$.J.zx.| +00000210 60 b2 70 07 3f e4 bc 54 42 65 22 c3 2e aa 35 85 |`.p.?..TBe"...5.| +00000220 df fa e5 c9 c9 f5 ee 6a 50 82 7a bf 92 96 78 5e |.......jP.z...x^| +00000230 a8 ac 2a d1 5e e2 f0 20 6b 51 97 3d 74 71 eb d8 |..*.^.. kQ.=tq..| +00000240 40 5f 06 72 b6 8c 1c 2a 71 dd 53 38 fb de b6 31 |@_.r...*q.S8...1| +00000250 53 8d 8f 4e 0f c1 a5 ea bf 27 fa ed ff 0c 56 34 |S..N.....'....V4| +00000260 55 88 e1 d2 65 a7 e5 10 02 4d ba 8e ad fa 16 03 |U...e....M......| +00000270 03 00 35 94 36 93 c6 5e c8 ec 8e 63 86 7b 13 d6 |..5.6..^...c.{..| +00000280 78 b2 5d 2f 54 55 5a 41 1c 65 5e b2 69 ab c2 bd |x.]/TUZA.e^.i...| +00000290 d9 a3 55 42 d1 96 29 51 c4 38 c4 ec 1f d4 19 6c |..UB..)Q.8.....l| +000002a0 2b 82 75 81 37 07 79 35 16 03 03 00 98 d9 a2 ba |+.u.7.y5........| +000002b0 86 ca f4 24 e1 e0 72 0e 21 81 f6 c5 d7 0a 1c 17 |...$..r.!.......| +000002c0 05 1f ce b8 4d d3 d8 e6 13 c8 a6 4d f3 da 0f 4d |....M......M...M| +000002d0 e3 21 29 84 78 90 fa 11 a5 06 19 3a cd ca f2 1f |.!).x......:....| +000002e0 a2 39 4d b3 03 8d 22 27 eb bc f4 8b b8 61 c0 f3 |.9M..."'.....a..| +000002f0 70 34 56 80 28 a2 85 1e 21 7c 11 b8 c6 0c 0d bd |p4V.(...!|......| +00000300 02 56 8a b5 d5 7b 22 97 3e 70 20 31 00 a0 16 2d |.V...{".>p 1...-| +00000310 87 b5 c7 b0 5e 40 2d 08 82 97 38 64 c4 14 e3 16 |....^@-...8d....| +00000320 0d 6f d1 b1 6b 5f 7c 14 18 66 67 aa 8a b6 6b 66 |.o..k_|..fg...kf| +00000330 7d e3 68 ca 97 13 ad ca 0a 46 06 6b 4a a9 c0 ee |}.h......F.kJ...| +00000340 8b 61 6d 2d cc 14 03 03 00 11 93 6d 0b 63 c5 e2 |.am-.......m.c..| +00000350 3f 0f da dd f4 7c ae 95 2a e8 65 16 03 03 00 20 |?....|..*.e.... | +00000360 62 97 ee b8 34 aa be 0a 2c 24 30 6c 89 f2 80 08 |b...4...,$0l....| +00000370 05 69 bb ad a8 5c 90 21 04 77 96 44 ae 5f d4 d5 |.i...\.!.w.D._..| >>> Flow 10 (server to client) -00000000 14 03 03 00 11 ce 30 2f ce ec 08 18 13 0f 64 04 |......0/......d.| -00000010 6d a0 fb 38 04 17 16 03 03 00 20 03 cd 4e 30 0f |m..8...... ..N0.| -00000020 e3 c2 1c 52 7d 30 5f 57 e1 2f 50 7b 00 0b 8a 05 |...R}0_W./P{....| -00000030 2e 4b 15 23 fd e6 82 35 ac 96 5f 17 03 03 00 19 |.K.#...5.._.....| -00000040 d9 71 23 60 2a 72 ac 2e 43 66 a9 7a a9 71 5f f3 |.q#`*r..Cf.z.q_.| -00000050 c3 43 72 41 55 49 81 95 43 16 03 03 00 14 c0 af |.CrAUI..C.......| -00000060 63 ad 86 4c 8b 44 8d f1 e1 2c 4e b7 a5 54 b4 1d |c..L.D...,N..T..| -00000070 68 de |h.| +00000000 14 03 03 00 11 03 06 35 7b 36 e4 b2 df 80 68 80 |.......5{6....h.| +00000010 df e3 d6 3c bb b7 16 03 03 00 20 08 9b ed a0 ae |...<...... .....| +00000020 e7 f9 42 9a f5 10 21 7a 38 dc a2 6d 27 a8 bc 00 |..B...!z8..m'...| +00000030 58 85 6a 85 04 b9 3b 3f ca 26 68 17 03 03 00 19 |X.j...;?.&h.....| +00000040 d5 24 ff 37 e7 a2 5d eb f2 45 ca 73 60 3b c3 8c |.$.7..]..E.s`;..| +00000050 87 10 d8 31 c3 a2 e5 3d 0f 16 03 03 00 14 31 8a |...1...=......1.| +00000060 c9 a6 3a 3e 36 e0 4f d6 f1 f5 67 70 34 8a ab dc |..:>6.O...gp4...| +00000070 82 e2 |..| >>> Flow 11 (client to server) -00000000 15 03 03 00 12 6d 7f 8e 31 17 7d 45 96 a9 b0 6e |.....m..1.}E...n| -00000010 e1 73 b3 f3 f6 51 9a 15 03 03 00 12 ad 22 dc 06 |.s...Q......."..| -00000020 98 ee b2 2f 09 4b 40 25 84 65 60 88 2e db |.../.K@%.e`...| +00000000 15 03 03 00 12 be b2 bb cf 44 91 f3 b9 71 00 af |.........D...q..| +00000010 9e b6 f5 07 64 36 7b 15 03 03 00 12 ae b2 33 16 |....d6{.......3.| +00000020 de f1 45 31 a5 fd 07 97 6e 57 f8 22 cc b2 |..E1....nW."..| diff --git a/src/crypto/tls/testdata/Client-TLSv12-RenegotiationRejected b/src/crypto/tls/testdata/Client-TLSv12-RenegotiationRejected index f70978475e..c907c7cb2e 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-RenegotiationRejected +++ b/src/crypto/tls/testdata/Client-TLSv12-RenegotiationRejected @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 50 07 ee 50 d2 |....]...Y..P..P.| -00000010 77 fa a1 bb 19 fa ea 54 12 26 62 e7 0c 84 b9 2e |w......T.&b.....| -00000020 b2 b8 c8 19 59 34 b4 3c 60 21 d9 20 4f 36 b8 c7 |....Y4.<`!. O6..| -00000030 5c ae b8 11 14 0d 67 88 65 37 f1 a5 16 3a af 92 |\.....g.e7...:..| -00000040 4d 39 ed 9c 20 1c e7 c1 40 e6 ba b8 cc a8 00 00 |M9.. ...@.......| +00000000 16 03 03 00 5d 02 00 00 59 03 03 ea a3 8e 85 79 |....]...Y......y| +00000010 9f 41 1f 7e 05 76 70 3d bd f4 bb f4 dd 49 a6 fd |.A.~.vp=.....I..| +00000020 11 83 a9 70 89 86 87 36 2f 09 b9 20 1a 00 de fc |...p...6/.. ....| +00000030 6b e5 93 4e da 98 0b e1 a8 93 8d fc 4b c3 48 6b |k..N........K.Hk| +00000040 15 6d de fd e3 0f 36 67 61 1c 91 8e cc a8 00 00 |.m....6ga.......| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -63,36 +62,36 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 5d 84 3d |............ ].=| -000002d0 57 67 a5 0a 3d 25 81 c0 82 e0 b9 03 29 4e e1 87 |Wg..=%......)N..| -000002e0 37 88 c8 9a 6d 7c 4b c9 22 5a ab 5e 68 08 04 00 |7...m|K."Z.^h...| -000002f0 80 5d 80 99 26 5c 59 a0 7f f1 96 68 9e 02 11 1c |.]..&\Y....h....| -00000300 80 89 f1 50 d1 5c 7c 61 29 77 5e c1 4f 42 4b 03 |...P.\|a)w^.OBK.| -00000310 0d 92 0d 20 c4 f9 e3 60 a7 de 90 b7 5a b8 3b 06 |... ...`....Z.;.| -00000320 0a 21 4b 9b 5b e9 2f 85 dc 23 af 5a d0 76 0a 74 |.!K.[./..#.Z.v.t| -00000330 02 64 32 b6 9a 93 d3 b8 65 04 94 f5 c5 be c2 7f |.d2.....e.......| -00000340 9b 76 af cf 1f 77 e0 31 3f 63 0e 0e 78 cd f7 9c |.v...w.1?c..x...| -00000350 e3 d4 52 e2 80 53 7f 53 35 10 21 b9 9e 48 92 e3 |..R..S.S5.!..H..| -00000360 ba 7e 3c 13 0c 36 bc 56 3a 00 d3 13 c1 16 f8 33 |.~<..6.V:......3| -00000370 68 16 03 03 00 04 0e 00 00 00 |h.........| +000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 6a e1 91 |............ j..| +000002d0 5d 5d fe 77 50 be a5 52 f1 12 43 30 34 aa 46 87 |]].wP..R..C04.F.| +000002e0 f9 6a 80 37 eb 46 fb 92 d6 ce 18 c4 0b 08 04 00 |.j.7.F..........| +000002f0 80 46 10 ab ff 45 fe c5 88 5a da d0 07 b5 a1 30 |.F...E...Z.....0| +00000300 03 d8 b0 5f 88 37 45 75 ef b7 96 5c c9 1f 47 14 |..._.7Eu...\..G.| +00000310 24 28 de cf 1f c9 c6 a4 0c 41 1b 51 70 7a e6 e8 |$(.......A.Qpz..| +00000320 88 1b 35 ce 63 e7 4f 2b 02 c9 35 0a 56 b2 2a 59 |..5.c.O+..5.V.*Y| +00000330 e9 02 53 11 82 f2 f6 18 06 3a 3e 2e 8e 21 78 9d |..S......:>..!x.| +00000340 41 43 e2 ed 49 ce 87 cd 93 b7 13 6c 35 6e 4e 95 |AC..I......l5nN.| +00000350 68 1b 4b 75 de fa ed 48 53 56 54 40 5f 3f 36 cb |h.Ku...HSVT@_?6.| +00000360 6b 57 de 3c fc 51 f4 fb 9d 8d 55 2e e9 ce fc 79 |kW.<.Q....U....y| +00000370 08 16 03 03 00 04 0e 00 00 00 |..........| >>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| -00000030 16 03 03 00 20 72 e5 4c 81 fd 78 39 f0 bb 37 cd |.... r.L..x9..7.| -00000040 b4 47 cb 1b 52 25 08 9a ab ab 9b 28 d2 b4 72 eb |.G..R%.....(..r.| -00000050 b0 db 8f fe 29 |....)| +00000030 16 03 03 00 20 be b4 f9 49 91 3c c8 f8 7c da ef |.... ...I.<..|..| +00000040 06 bd d5 9e d3 b4 74 f6 22 2e b8 5c b6 e2 2d 01 |......t."..\..-.| +00000050 cb d5 3f 94 7f |..?..| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 20 68 26 ca 41 0e |.......... h&.A.| -00000010 ab 2f 28 5d 9e 94 17 4f 9f 25 cb 82 aa 3a e5 40 |./(]...O.%...:.@| -00000020 8a 35 6d a8 72 bf 25 2a 8a 6d 04 |.5m.r.%*.m.| +00000000 14 03 03 00 01 01 16 03 03 00 20 21 a2 e6 72 21 |.......... !..r!| +00000010 6d 45 36 87 6d 3f c9 70 89 1f b3 0a cc c2 5b 18 |mE6.m?.p......[.| +00000020 27 37 d8 1f 4e 55 f9 9d 07 96 2f |'7..NU..../| >>> Flow 5 (client to server) -00000000 17 03 03 00 16 73 e1 3b 86 fb 05 16 9e a9 af 73 |.....s.;.......s| -00000010 64 72 8b 02 a0 82 7d 70 16 5c d9 |dr....}p.\.| +00000000 17 03 03 00 16 81 33 71 a4 ec a6 67 b2 17 ba 80 |......3q...g....| +00000010 27 80 a1 62 fb 1e ab 3f cd b9 fe |'..b...?...| >>> Flow 6 (server to client) -00000000 16 03 03 00 14 9b 44 8d b3 1c 77 2c 12 e7 fe 76 |......D...w,...v| -00000010 31 c9 ab e7 f0 be 32 0a e3 |1.....2..| +00000000 16 03 03 00 14 b3 2b 93 6f bc d1 11 45 fa 9a d3 |......+.o...E...| +00000010 f3 82 75 6c ce 40 38 21 5e |..ul.@8!^| >>> Flow 7 (client to server) -00000000 15 03 03 00 12 00 54 e7 c6 54 b7 ec 24 d4 07 ad |......T..T..$...| -00000010 ff a7 39 d2 7b 62 ba 15 03 03 00 12 de ad f4 f7 |..9.{b..........| -00000020 0b 8b a3 a3 e5 19 b6 45 63 6f dc 7d f3 c4 |.......Eco.}..| +00000000 15 03 03 00 12 48 45 72 03 40 44 98 c6 db 40 d4 |.....HEr.@D...@.| +00000010 a6 9b 67 5d 8b c1 a9 15 03 03 00 12 21 d2 4b 7d |..g]........!.K}| +00000020 51 c7 3c 53 0b d9 67 90 aa e6 42 e2 8c 83 |Q.>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,23 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 01 ca 02 00 01 c6 03 03 9a 84 91 7d 3b |..............};| -00000010 31 f1 28 b9 57 a3 5c ea ac 1c 43 91 1a e3 1a 88 |1.(.W.\...C.....| -00000020 29 b8 46 87 18 0a 9d 9e f6 6a 94 20 45 98 c2 a1 |).F......j. E...| -00000030 3f 98 33 0f b7 d0 e8 53 70 a5 01 4e 0b a1 3b 3a |?.3....Sp..N..;:| -00000040 e1 cd 07 a3 b0 96 eb 05 54 26 de d8 cc a8 00 01 |........T&......| +00000000 16 03 03 01 ca 02 00 01 c6 03 03 28 44 55 f3 f5 |...........(DU..| +00000010 c1 63 ac 0b fd 1c 29 d3 90 a5 5c 96 2a d9 13 20 |.c....)...\.*.. | +00000020 fe 96 11 3f 30 0a e1 a9 8e d9 e6 20 ca 40 de 01 |...?0...... .@..| +00000030 4f 00 88 88 41 0f df af 85 0e 0e 22 9d a7 46 e8 |O...A......"..F.| +00000040 df 9c 8e 8c 47 5b 94 91 94 06 f4 14 cc a8 00 01 |....G[..........| 00000050 7e 00 12 01 69 01 67 00 75 00 a4 b9 09 90 b4 18 |~...i.g.u.......| 00000060 58 14 87 bb 13 a2 cc 67 70 0a 3c 35 98 04 f9 1b |X......gp.<5....| 00000070 df b8 e3 77 cd 0e c8 0d dc 10 00 00 01 47 97 99 |...w.........G..| @@ -86,31 +85,31 @@ 00000400 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 4c 72 2b |Cw.......@.a.Lr+| 00000410 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 bd 42 d4 |...F..M...>...B.| 00000420 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 16 03 03 |..=.`.\!.;......| -00000430 00 ac 0c 00 00 a8 03 00 1d 20 4e e0 4b c5 9b e7 |......... N.K...| -00000440 1c 85 3a 3f 64 df cb 87 18 94 c2 e2 cd e9 db 5e |..:?d..........^| -00000450 44 11 ee e0 89 4d 11 62 57 1a 08 04 00 80 7d 99 |D....M.bW.....}.| -00000460 22 49 98 12 7b 7c e7 73 99 dc c1 43 7d 6c ed 8d |"I..{|.s...C}l..| -00000470 7e f3 d5 66 76 0b cd 5e 5f cc 60 68 8e 8c 30 6f |~..fv..^_.`h..0o| -00000480 54 0d 46 ca da a0 82 44 30 fc f1 bc a4 54 a1 49 |T.F....D0....T.I| -00000490 d1 17 e6 c5 dc fd 08 41 19 5a e1 5b 9a 93 3c 3b |.......A.Z.[..<;| -000004a0 3b 0f be 35 51 55 0e 54 1e dc 03 28 0b fa 49 9f |;..5QU.T...(..I.| -000004b0 cf c8 d6 18 79 f7 84 92 0a 37 9f b3 88 3a 46 d9 |....y....7...:F.| -000004c0 dd 7b e5 2b 52 6c a8 06 ac b5 ba 29 32 82 fb eb |.{.+Rl.....)2...| -000004d0 62 78 c9 97 c7 5c 03 e9 26 2e 8d 23 db 35 16 03 |bx...\..&..#.5..| +00000430 00 ac 0c 00 00 a8 03 00 1d 20 26 24 4e d8 a6 cc |......... &$N...| +00000440 2f c9 0e 68 d8 20 e3 97 5b c1 08 72 1e 79 46 d9 |/..h. ..[..r.yF.| +00000450 a6 00 9c e9 f8 21 9b cd 29 17 08 04 00 80 aa 6d |.....!..)......m| +00000460 36 bb 06 e6 11 66 82 44 87 5d 81 53 e2 9a 95 11 |6....f.D.].S....| +00000470 54 a3 cc a7 c9 9c 19 f6 da 98 4f 91 a6 dd 9e 10 |T.........O.....| +00000480 14 83 04 55 2d 6c 9a af 26 7c 5d f0 aa ca 69 83 |...U-l..&|]...i.| +00000490 af fe a5 cb a4 1a d4 bd 86 91 52 11 03 4d 9a ca |..........R..M..| +000004a0 37 fd 01 48 e8 5d a8 ea ad a2 a5 08 cb ce 5f 52 |7..H.]........_R| +000004b0 92 30 83 de 77 2a 06 c2 f2 53 4d 47 40 b9 2f 61 |.0..w*...SMG@./a| +000004c0 9c 41 c4 05 45 42 5e 42 d5 5e 30 95 30 4e a1 77 |.A..EB^B.^0.0N.w| +000004d0 79 b5 50 5c df d6 e7 74 42 d8 2b 66 02 fa 16 03 |y.P\...tB.+f....| 000004e0 03 00 04 0e 00 00 00 |.......| >>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| -00000030 16 03 03 00 20 e4 20 73 0f 70 18 f9 ef a2 7a e3 |.... . s.p....z.| -00000040 73 d2 8d 38 45 61 89 b5 b0 77 1c 39 ba f8 56 ec |s..8Ea...w.9..V.| -00000050 04 0b c6 fb 02 |.....| +00000030 16 03 03 00 20 93 c8 47 ed fd 9b 41 69 97 58 97 |.... ..G...Ai.X.| +00000040 cc 31 9c 93 a6 77 41 36 7a 90 f0 73 13 4a 7d 85 |.1...wA6z..s.J}.| +00000050 12 20 7d 91 fa |. }..| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 20 a8 e6 38 02 7a |.......... ..8.z| -00000010 d2 1c ca b1 79 ae ba 10 b6 ab e2 5e 79 28 06 7f |....y......^y(..| -00000020 0c d4 17 fc e3 72 e2 bf 44 4b 5f |.....r..DK_| +00000000 14 03 03 00 01 01 16 03 03 00 20 16 00 35 d2 e0 |.......... ..5..| +00000010 ad f5 4c 10 98 fb 4f c7 81 1f 05 4b d6 7d 9c ac |..L...O....K.}..| +00000020 50 94 84 c8 35 80 ec 54 fc f3 ee |P...5..T...| >>> Flow 5 (client to server) -00000000 17 03 03 00 16 00 04 dd 86 fc e7 8c c5 67 e6 0f |.............g..| -00000010 32 0a 60 1b f8 b6 1c e7 e1 96 8c 15 03 03 00 12 |2.`.............| -00000020 35 71 48 37 fb f7 d1 3a 94 aa 3f ec c1 99 8a 7c |5qH7...:..?....|| -00000030 20 4a | J| +00000000 17 03 03 00 16 83 e6 0f 3a ad c2 28 6c 82 ee 4a |........:..(l..J| +00000010 38 47 cc 86 75 70 e2 94 77 e6 6e 15 03 03 00 12 |8G..up..w.n.....| +00000020 13 c0 a0 4f 02 5e 6f 33 f6 ae d3 52 7d 72 72 a0 |...O.^o3...R}rr.| +00000030 1e 8d |..| diff --git a/src/crypto/tls/testdata/Client-TLSv12-X25519-ECDHE b/src/crypto/tls/testdata/Client-TLSv12-X25519-ECDHE index a0d9a5eb1b..6f59dc6636 100644 --- a/src/crypto/tls/testdata/Client-TLSv12-X25519-ECDHE +++ b/src/crypto/tls/testdata/Client-TLSv12-X25519-ECDHE @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 16 01 00 01 12 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 12 01 00 01 0e 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,22 +7,22 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 97 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 93 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| -000000a0 00 0a 00 04 00 02 00 1d 00 0d 00 1a 00 18 08 04 |................| +000000a0 00 0a 00 04 00 02 00 1d 00 0d 00 16 00 14 08 04 |................| 000000b0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| -000000c0 06 03 02 01 02 03 00 32 00 1a 00 18 08 04 04 03 |.......2........| -000000d0 08 07 08 05 08 06 04 01 05 01 06 01 05 03 06 03 |................| -000000e0 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 02 03 |.....+..........| -000000f0 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d a3 47 |..3.&.$... /.}.G| -00000100 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af |.bC.(.._.).0....| -00000110 c4 cf c2 ed 90 99 5f 58 cb 3b 74 |......_X.;t| +000000c0 06 03 00 32 00 1a 00 18 08 04 04 03 08 07 08 05 |...2............| +000000d0 08 06 04 01 05 01 06 01 05 03 06 03 02 01 02 03 |................| +000000e0 00 2b 00 09 08 03 04 03 03 03 02 03 01 00 33 00 |.+............3.| +000000f0 26 00 24 00 1d 00 20 2f e5 7d a3 47 cd 62 43 15 |&.$... /.}.G.bC.| +00000100 28 da ac 5f bb 29 07 30 ff f6 84 af c4 cf c2 ed |(.._.).0........| +00000110 90 99 5f 58 cb 3b 74 |.._X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 5d 02 00 00 59 03 03 c1 cb c6 9e f2 |....]...Y.......| -00000010 92 cb ca eb 42 5a 30 c2 1a 3f d6 ca fc 69 b9 55 |....BZ0..?...i.U| -00000020 86 21 dd 3f 1d 33 5c 97 a1 1f b9 20 46 58 d4 b8 |.!.?.3\.... FX..| -00000030 c4 71 e6 30 97 a1 f3 fe 1c 7f ca cd bf c2 95 96 |.q.0............| -00000040 ef 5c df 54 60 51 f6 e2 47 7c c5 bd c0 2f 00 00 |.\.T`Q..G|.../..| +00000000 16 03 03 00 5d 02 00 00 59 03 03 64 5a cc e0 63 |....]...Y..dZ..c| +00000010 02 82 64 75 5e 2c b3 5f 23 c6 98 c8 95 07 40 00 |..du^,._#.....@.| +00000020 3e ef fd f6 00 af 81 0c 3a 47 a0 20 a1 fc 21 83 |>.......:G. ..!.| +00000030 cf 2b 34 5e b7 7b bd ec bb 8f 26 6a f2 26 7f 8f |.+4^.{....&j.&..| +00000040 51 13 6f ba 0d 1a f5 b7 1c 9d 6d 91 c0 2f 00 00 |Q.o.......m../..| 00000050 11 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 17 |................| 00000060 00 00 16 03 03 02 59 0b 00 02 55 00 02 52 00 02 |......Y...U..R..| 00000070 4f 30 82 02 4b 30 82 01 b4 a0 03 02 01 02 02 09 |O0..K0..........| @@ -62,33 +62,33 @@ 00000290 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 40 83 61 c9 |s..Cw.......@.a.| 000002a0 4c 72 2b 9d ae db 46 06 06 4d f4 c1 b3 3e c0 d1 |Lr+...F..M...>..| 000002b0 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 3b e9 fa e7 |.B...=.`.\!.;...| -000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 d5 3e d5 |............ .>.| -000002d0 c0 de 8f f1 12 8d 50 f2 97 d1 d6 1d b9 9f 7f 86 |......P.........| -000002e0 00 38 c7 77 7b 65 44 7d 97 e4 61 a3 77 08 04 00 |.8.w{eD}..a.w...| -000002f0 80 07 71 57 61 39 64 7c d0 1e 5d 57 23 5c 18 0c |..qWa9d|..]W#\..| -00000300 46 c8 62 e0 41 5a f9 4f 1b 17 d9 25 64 53 9c 41 |F.b.AZ.O...%dS.A| -00000310 ea 6a fc 01 69 92 4c d1 4e 98 4d c8 d2 7d 5a 8b |.j..i.L.N.M..}Z.| -00000320 19 46 9a 54 57 27 12 ba f2 91 cb 0b 24 08 06 91 |.F.TW'......$...| -00000330 c0 4d 5a 9e 45 e0 34 87 93 87 59 08 ae cb 5c 08 |.MZ.E.4...Y...\.| -00000340 05 bf 71 f7 0c 04 57 b9 d4 9c 00 ec bb 55 ee c3 |..q...W......U..| -00000350 56 ab f9 08 ab 14 f1 f9 27 85 f3 ea 85 26 db bc |V.......'....&..| -00000360 25 54 e8 ad 91 0e 07 f1 bc 48 ca c3 54 c2 da 3c |%T.......H..T..<| -00000370 26 16 03 03 00 04 0e 00 00 00 |&.........| +000002c0 16 03 03 00 ac 0c 00 00 a8 03 00 1d 20 15 d1 98 |............ ...| +000002d0 53 f4 98 b6 58 a5 cd 89 bb 32 21 83 4a e5 ad ba |S...X....2!.J...| +000002e0 1f ba db d0 4c c5 a3 89 0e 96 9f 59 60 08 04 00 |....L......Y`...| +000002f0 80 4e 14 a0 a7 33 e8 47 d5 7d 01 26 19 ff 1d 3c |.N...3.G.}.&...<| +00000300 2a f9 77 58 84 c0 07 b7 dc cc 82 85 a6 18 e9 33 |*.wX...........3| +00000310 70 15 04 75 bb 59 59 9c fa c0 cd b4 b7 f8 a3 0e |p..u.YY.........| +00000320 21 cd ac 7d 18 d2 34 e5 a9 c7 a1 5d 86 f3 74 2b |!..}..4....]..t+| +00000330 9b b0 21 5f cb 91 7f a0 d8 78 f0 7c 56 e3 69 ec |..!_.....x.|V.i.| +00000340 43 55 80 3f 02 d7 e0 10 52 15 4d 1b bc 2c 7f b7 |CU.?....R.M..,..| +00000350 86 cd 07 5d b9 f1 21 7e 18 da fc f8 45 45 cf 39 |...]..!~....EE.9| +00000360 62 3e c8 f1 6c 75 f4 fb fe f8 23 89 6a 0d b5 2e |b>..lu....#.j...| +00000370 4d 16 03 03 00 04 0e 00 00 00 |M.........| >>> Flow 3 (client to server) 00000000 16 03 03 00 25 10 00 00 21 20 2f e5 7d a3 47 cd |....%...! /.}.G.| 00000010 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 |bC.(.._.).0.....| 00000020 cf c2 ed 90 99 5f 58 cb 3b 74 14 03 03 00 01 01 |....._X.;t......| -00000030 16 03 03 00 28 00 00 00 00 00 00 00 00 1c bd 15 |....(...........| -00000040 e4 c0 92 d5 1d 85 17 46 b8 46 6b 71 ef b4 36 9f |.......F.Fkq..6.| -00000050 f4 0c ca a6 81 f8 da 28 63 29 29 d6 2c |.......(c)).,| +00000030 16 03 03 00 28 00 00 00 00 00 00 00 00 e3 a2 01 |....(...........| +00000040 72 d5 55 57 f7 1a da 10 9a 04 7d 33 f4 18 b1 9a |r.UW......}3....| +00000050 09 38 45 dd 74 13 21 70 52 9c cc c2 3f |.8E.t.!pR...?| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 28 b7 b5 af 79 b7 |..........(...y.| -00000010 68 6f d7 fa d6 0f 73 8a 51 ea 97 a4 2f b1 29 58 |ho....s.Q.../.)X| -00000020 73 fd f2 15 17 c6 cd 1b 2d 1a 39 32 17 78 37 fe |s.......-.92.x7.| -00000030 87 71 da |.q.| +00000000 14 03 03 00 01 01 16 03 03 00 28 86 a1 0b 2b ef |..........(...+.| +00000010 13 8d 20 82 ad 17 92 64 0b 44 21 0f f0 dd 20 43 |.. ....d.D!... C| +00000020 4c db 92 3c 25 3a 12 ca 27 56 86 16 ca 9f ba 46 |L..<%:..'V.....F| +00000030 dc 96 86 |...| >>> Flow 5 (client to server) -00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 a5 8f 5d |...............]| -00000010 59 44 d3 65 6c bd b1 68 3c d2 ee 1c 5d 8c 92 4c |YD.el..h<...]..L| -00000020 c2 89 f3 15 03 03 00 1a 00 00 00 00 00 00 00 02 |................| -00000030 33 c1 b3 d7 37 52 f7 57 3d 00 af 02 e0 e8 9b 6f |3...7R.W=......o| -00000040 ad 0f |..| +00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 20 7c 62 |............. |b| +00000010 05 52 7a 91 a7 13 96 96 29 11 1b 1a fe fa ad 7f |.Rz.....).......| +00000020 d2 3a 26 15 03 03 00 1a 00 00 00 00 00 00 00 02 |.:&.............| +00000030 c7 2b 60 1b 9c 6b cb 22 08 f1 e3 c0 44 ab 70 21 |.+`..k."....D.p!| +00000040 68 48 |hH| diff --git a/src/crypto/tls/testdata/Client-TLSv13-AES128-SHA256 b/src/crypto/tls/testdata/Client-TLSv13-AES128-SHA256 index c6e3f37d2d..3673b8da39 100644 --- a/src/crypto/tls/testdata/Client-TLSv13-AES128-SHA256 +++ b/src/crypto/tls/testdata/Client-TLSv13-AES128-SHA256 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,87 +7,86 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 75 19 d0 fb e3 |....z...v..u....| -00000010 11 c7 2a 09 40 fb 18 4b 17 f8 94 3f 54 2b 33 c9 |..*.@..K...?T+3.| -00000020 96 c6 46 72 a5 92 31 7d d3 40 d3 20 00 00 00 00 |..Fr..1}.@. ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 07 aa 6b aa b6 |....z...v....k..| +00000010 ef a5 5c 62 d7 05 bb f8 9d ea 03 34 13 bf 00 1f |..\b.......4....| +00000020 e6 95 7b ef a5 2b ad e8 20 2f 21 20 00 00 00 00 |..{..+.. /! ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 01 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 df |..+.....3.$... .| -00000060 bb 62 90 62 b0 0d ee a9 4f 2a 45 58 9b d4 1d 0b |.b.b....O*EX....| -00000070 b8 49 ee 69 3a e4 48 65 a8 5a 94 60 99 00 2e 14 |.I.i:.He.Z.`....| -00000080 03 03 00 01 01 17 03 03 00 17 5a fa 5d b7 3e 06 |..........Z.].>.| -00000090 4f 87 9d 8e f7 c6 9d 6c 9a f9 c8 c1 48 69 a0 1f |O......l....Hi..| -000000a0 67 17 03 03 02 6d 0f 4d e4 f2 24 16 18 d7 0f 1f |g....m.M..$.....| -000000b0 eb e4 ff f9 71 99 63 21 41 ff e2 65 96 90 07 88 |....q.c!A..e....| -000000c0 b4 3b 23 8e 28 01 df c7 f3 71 71 36 25 6c d5 fe |.;#.(....qq6%l..| -000000d0 e7 7b 94 f3 2f ba e0 b5 02 1a 24 15 66 2f 4b 2c |.{../.....$.f/K,| -000000e0 8e ae da 30 67 9b 33 fa 95 bc ea 80 2d 85 b4 93 |...0g.3.....-...| -000000f0 28 42 f3 af ab 06 b6 a2 20 4e 9a 9a 07 c4 ad 5a |(B...... N.....Z| -00000100 ab 91 b6 f4 b3 ae ba 08 19 4d 0b 5a c7 f8 c6 1c |.........M.Z....| -00000110 db b8 61 d1 55 5f 02 34 44 cf c4 f1 7b 25 b2 12 |..a.U_.4D...{%..| -00000120 a0 37 80 3a 3d 47 b0 cc 92 31 8c 41 d9 85 fa ac |.7.:=G...1.A....| -00000130 ea 81 49 4e 60 b9 1a dc 2a 61 fa 89 e3 b5 93 b5 |..IN`...*a......| -00000140 cf 22 65 46 54 56 bc 3c f9 62 75 bd 04 8f 39 fb |."eFTV.<.bu...9.| -00000150 a3 94 92 20 44 5b 74 51 b1 38 fe 48 a4 26 74 82 |... D[tQ.8.H.&t.| -00000160 ac 11 04 25 a4 76 06 ce 51 47 2f 56 e8 1d 4f 74 |...%.v..QG/V..Ot| -00000170 d5 5c 00 b7 22 a5 47 3c 17 d5 f3 13 37 8e b0 82 |.\..".G<....7...| -00000180 da 5f d9 85 05 e7 12 79 0a 22 97 b5 9b 03 2d 61 |._.....y."....-a| -00000190 ab 19 4c 40 8a 9d d2 08 77 1d cc f0 b7 c7 48 ba |..L@....w.....H.| -000001a0 70 c4 e9 7f 1a ba 5b 0a d2 1e 0c 95 58 e9 f0 56 |p.....[.....X..V| -000001b0 c2 a6 a3 58 b6 b2 ea 85 55 77 c8 09 be 1a 7e 2c |...X....Uw....~,| -000001c0 ac d3 a0 ce 4c 6d 5a 02 c8 d9 7e b8 3b 46 e9 48 |....LmZ...~.;F.H| -000001d0 73 9b 97 1c 32 fe e1 99 c4 2e ee 81 38 27 12 d0 |s...2.......8'..| -000001e0 99 4f dd 18 a3 df 93 24 f3 0d 53 11 fe bb ff b7 |.O.....$..S.....| -000001f0 cf 5e 18 41 01 d4 d3 06 6a f4 5b e3 26 1f 7c fa |.^.A....j.[.&.|.| -00000200 ad 9f 61 a3 b3 05 5e b4 bf 94 9c 94 4b c9 3c 63 |..a...^.....K............U| -00000260 75 01 95 fa 21 f2 5f df d2 38 88 87 99 b0 10 4d |u...!._..8.....M| -00000270 e3 c9 74 28 59 14 90 89 6c 54 83 0b 71 c2 7e 4b |..t(Y...lT..q.~K| -00000280 39 21 92 0f ec 0e 98 53 39 75 54 0b 8d 12 6d 57 |9!.....S9uT...mW| -00000290 4f bd 2a 02 9a 44 ac 45 47 c3 05 71 cc 7e 60 0e |O.*..D.EG..q.~`.| -000002a0 93 1b 70 5b 42 4b d6 7f 01 2d 2a 73 ed 52 b2 8d |..p[BK...-*s.R..| -000002b0 2f fb 6e 85 5e c6 70 2d 3b e8 3d f1 57 6e c5 f8 |/.n.^.p-;.=.Wn..| -000002c0 7b f5 85 af 3e c8 64 28 00 24 1e 8a c9 6c f8 e3 |{...>.d(.$...l..| -000002d0 24 83 50 39 d0 4d b4 23 62 80 7d 6b f8 ee 5a f0 |$.P9.M.#b.}k..Z.| -000002e0 c8 63 df 43 6e ce 58 b9 39 18 91 82 3c 84 d9 12 |.c.Cn.X.9...<...| -000002f0 4a 4b 76 67 2c 07 91 97 ac c9 16 9c b5 7a 84 54 |JKvg,........z.T| -00000300 fb 99 2a 16 0a 00 a3 d6 04 ac 28 f5 d0 34 a6 3c |..*.......(..4.<| -00000310 ac 54 50 17 03 03 00 99 5f ec 9a 27 57 7e 33 28 |.TP....._..'W~3(| -00000320 b3 06 a4 36 6d 4e 59 3e 9a 75 95 3a d2 72 c0 7c |...6mNY>.u.:.r.|| -00000330 61 54 a5 46 01 91 2d 11 ac 6e 25 15 62 c4 8f 8f |aT.F..-..n%.b...| -00000340 f9 a8 a0 2a d1 51 71 12 9b df 4f 6a 1b e9 b1 c2 |...*.Qq...Oj....| -00000350 eb 83 00 fd 32 53 b3 5d 3b 6c 34 59 e9 42 21 ff |....2S.];l4Y.B!.| -00000360 7a 10 c0 81 81 13 01 db bb ef 8f 29 a3 ca 07 67 |z..........)...g| -00000370 b8 8f 5d 27 07 9c ed 67 51 f9 35 a7 11 bf 10 f7 |..]'...gQ.5.....| -00000380 f4 36 d8 dc fd 14 a8 56 18 c8 4e fb be 27 91 5f |.6.....V..N..'._| -00000390 6a a4 da 13 32 3d 6c d9 fa 18 5b 13 26 68 e2 a9 |j...2=l...[.&h..| -000003a0 d2 b6 72 2e dd 7d 69 30 32 fd 24 35 35 a1 1d bd |..r..}i02.$55...| -000003b0 03 17 03 03 00 35 05 56 0b a7 86 2f 45 c1 18 c2 |.....5.V.../E...| -000003c0 ad c5 2f 54 f6 5b b3 eb 45 fc 76 ff c9 60 89 e1 |../T.[..E.v..`..| -000003d0 f1 e2 3a 28 60 8d e9 54 62 4d 7a 30 4f 8c 73 b7 |..:(`..TbMz0O.s.| -000003e0 45 10 27 0f e8 56 91 1f 7c 07 3a |E.'..V..|.:| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 53 |..+.....3.$... S| +00000060 3c 5e 7d 61 39 39 6c f7 ea 14 d3 f0 40 23 30 8b |<^}a99l.....@#0.| +00000070 7e 1f 41 86 f8 2e 12 0a f5 67 13 28 46 6f 14 14 |~.A......g.(Fo..| +00000080 03 03 00 01 01 17 03 03 00 17 a8 64 4a 9d f1 a0 |...........dJ...| +00000090 3c 1b e3 20 a2 66 80 7f 13 b5 a9 f0 8f ee 5b 4b |<.. .f........[K| +000000a0 af 17 03 03 02 6d 26 d2 8f df b4 d5 d3 9a c8 92 |.....m&.........| +000000b0 4c 32 63 80 6b 5f 99 11 0f 4b be 14 77 55 86 d1 |L2c.k_...K..wU..| +000000c0 27 94 18 50 27 1c 84 9c 38 03 fb 11 d3 5a ea 64 |'..P'...8....Z.d| +000000d0 d1 15 47 1d fc cc 6e bf 5e 4d 45 74 f2 ca 44 77 |..G...n.^MEt..Dw| +000000e0 32 6d 02 3a 9f 44 aa 5c 5d 62 64 ee 44 0d 45 05 |2m.:.D.\]bd.D.E.| +000000f0 de 40 d0 83 c9 b3 21 39 a0 8f 5b 5a e1 96 2f 0b |.@....!9..[Z../.| +00000100 4b 12 da a7 dc 7b 2a 73 14 7f cc 93 fd a8 47 1c |K....{*s......G.| +00000110 f7 88 76 5d 30 29 af 65 ac 52 25 04 13 be 96 92 |..v]0).e.R%.....| +00000120 bb e4 86 a0 b7 c8 67 63 ef cb 1f 78 7e bf 3c 5f |......gc...x~.<_| +00000130 7a a6 89 4a 94 f3 2e 01 8b b9 81 21 57 00 5e 26 |z..J.......!W.^&| +00000140 22 9b eb e0 73 87 cd 77 46 d4 c8 1d 0a 4f d8 83 |"...s..wF....O..| +00000150 0b 0a 43 3f 37 53 e2 0a 4b bb ef e8 8d 2a dc 51 |..C?7S..K....*.Q| +00000160 b0 b9 90 7e 1a c5 31 e0 1b 0f 0c 7e 96 7b aa 49 |...~..1....~.{.I| +00000170 ad 84 b0 0a 75 d6 37 58 bd 7f f6 ac 50 c5 d7 93 |....u.7X....P...| +00000180 70 ce b1 cd 00 7c 79 1a e5 ec 04 7b 12 8f fb 80 |p....|y....{....| +00000190 54 d0 2b a0 9e 83 0d 05 a7 f5 4b e8 b4 36 1c d0 |T.+.......K..6..| +000001a0 88 34 a6 71 51 d6 cf 59 c9 ad 03 d8 38 f2 15 f0 |.4.qQ..Y....8...| +000001b0 63 9d 34 a3 f4 bc de 8f ae 26 97 c0 98 8e 59 4e |c.4......&....YN| +000001c0 1f 74 a1 d4 2c 1a 18 20 ef e8 06 58 74 dd ed 40 |.t..,.. ...Xt..@| +000001d0 50 dd 8b a4 77 15 1b 9e 63 7e c7 11 63 1a a9 d5 |P...w...c~..c...| +000001e0 16 c2 8f f5 6c ce cd 03 e6 2d cc da 75 1a ce cb |....l....-..u...| +000001f0 ea 41 de dd 59 e5 68 90 98 69 76 a3 d0 d4 ed d1 |.A..Y.h..iv.....| +00000200 e9 9a cd b8 29 73 eb 9c e6 6f ee 8d 91 84 9e 2e |....)s...o......| +00000210 b9 23 2b 04 a0 f6 5f 0b 16 07 49 ae 6f 33 b0 ee |.#+..._...I.o3..| +00000220 be ff 75 52 da 7b 06 05 6c 8f 87 1f 48 2f fb 59 |..uR.{..l...H/.Y| +00000230 79 a6 99 cb a6 0b 73 fb 4c d0 cc eb ba 51 1a 6d |y.....s.L....Q.m| +00000240 9a 33 27 e3 f4 cf 16 bc c0 82 da 21 04 4a 7b e0 |.3'........!.J{.| +00000250 12 a5 5e de 22 d2 df b4 c4 c9 fa 11 97 7b 07 ea |..^."........{..| +00000260 11 c8 2c 55 b8 6d c2 64 6d fa e0 6f b8 5c 50 ae |..,U.m.dm..o.\P.| +00000270 a6 2e aa bf 2f 2a 74 2d 1c 11 c2 44 d7 28 b8 5e |..../*t-...D.(.^| +00000280 6a 2d bc 0d 2e a7 a2 b6 b6 ae 12 2c a2 c4 ba 5c |j-.........,...\| +00000290 0b 3f 17 2e 98 30 ce 6c 8e 88 3c f9 a8 e1 68 8d |.?...0.l..<...h.| +000002a0 52 c8 a1 b3 3f 12 e1 35 f0 eb ee 9f 0d bb 3c 90 |R...?..5......<.| +000002b0 2c e2 2c 95 2e f3 e2 f6 f2 f1 be b8 03 02 84 69 |,.,............i| +000002c0 56 8f 3b 1d 68 77 f1 52 eb 48 4f e8 c8 5b 0a df |V.;.hw.R.HO..[..| +000002d0 a1 74 1e e1 47 a2 9a 9a 83 6d c2 ea f3 1b fc 8f |.t..G....m......| +000002e0 b6 aa 18 7e 85 46 ff 33 0b 6e 1f 5b f1 70 c0 45 |...~.F.3.n.[.p.E| +000002f0 f6 bb a0 da 74 e0 9a 3c a7 e2 07 ef 0b e5 9a 5b |....t..<.......[| +00000300 6e 9b aa 6c a4 97 84 5d 77 f5 33 b8 e3 45 c0 00 |n..l...]w.3..E..| +00000310 21 c7 91 17 03 03 00 99 ee bf d2 9c 82 9f 68 b4 |!.............h.| +00000320 5e 15 09 1a 7a c1 f9 72 ff ca 0e d9 f1 9f 7f 8c |^...z..r........| +00000330 dc 4a 8d d3 37 7b 81 42 ef 9b 2b 5f 9a 4b 40 8e |.J..7{.B..+_.K@.| +00000340 6b 24 53 79 32 b0 d1 24 2a 6f c9 fb a8 82 c1 01 |k$Sy2..$*o......| +00000350 1e 0b 11 7f 85 c7 ee d4 29 12 08 99 8f 00 ef af |........).......| +00000360 2c 5d c5 b1 25 a3 a9 f0 f1 a3 2b f8 7f e6 31 1b |,]..%.....+...1.| +00000370 51 20 af 3f a7 4e 5c 3d 73 21 04 0f 2c 5c cd f3 |Q .?.N\=s!..,\..| +00000380 eb d1 01 ef b0 e3 64 f7 33 d3 05 82 9f a6 71 3b |......d.3.....q;| +00000390 b2 ab 08 61 57 ad 74 d1 e2 8f 2c c9 73 c3 e0 ac |...aW.t...,.s...| +000003a0 ed 18 4b 70 0d 9a bf ae b4 db 07 7d 25 3e 7f 3d |..Kp.......}%>.=| +000003b0 14 17 03 03 00 35 db be d2 61 e1 3f a3 0b fe 39 |.....5...a.?...9| +000003c0 b2 86 42 72 a6 ee 02 90 c2 d1 d1 5c 3d 61 c8 28 |..Br.......\=a.(| +000003d0 28 7c 01 40 26 f1 e1 f1 81 50 03 4c 6c 32 6d 8b |(|.@&....P.Ll2m.| +000003e0 dd 60 cf fc a9 3c fe e1 4d d0 d2 |.`...<..M..| >>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 00 35 f9 89 62 39 dc |..........5..b9.| -00000010 cb f6 be b1 6f db 4c 8e 44 3c 1e 13 ba 25 db dc |....o.L.D<...%..| -00000020 f1 64 00 ea f3 56 ba 69 00 5b bd 64 05 8d c7 27 |.d...V.i.[.d...'| -00000030 39 b6 9c 2f ce e4 74 f1 ab 32 59 f1 6d 27 88 58 |9../..t..2Y.m'.X| -00000040 17 03 03 00 17 90 42 5e b1 ae d2 d7 71 4e 8f 51 |......B^....qN.Q| -00000050 91 3b e4 b0 97 ef 35 27 4f 56 79 81 17 03 03 00 |.;....5'OVy.....| -00000060 13 7b 6b c7 ab bf f2 de 55 52 b0 ee 67 40 ad bd |.{k.....UR..g@..| -00000070 6e 4d 22 f8 |nM".| +00000000 14 03 03 00 01 01 17 03 03 00 35 bd 1e ca 07 84 |..........5.....| +00000010 c8 ba 87 6d d3 ed 53 20 79 76 34 af 30 e6 bf c5 |...m..S yv4.0...| +00000020 74 a0 d0 b3 13 17 a9 3c c7 b3 47 5b e7 b4 6d 18 |t......<..G[..m.| +00000030 e5 3f 12 5c ca c9 26 87 c4 96 c4 9b 45 23 7f f7 |.?.\..&.....E#..| +00000040 17 03 03 00 17 28 0b 72 a0 6e ac 55 ec c0 b7 21 |.....(.r.n.U...!| +00000050 3f 7a 16 98 40 76 7d 3c 95 24 98 3b 17 03 03 00 |?z..@v}<.$.;....| +00000060 13 8e 23 e0 33 31 dc 39 fb 54 a6 a2 63 36 e4 2a |..#.31.9.T..c6.*| +00000070 5a 1c bc 09 |Z...| diff --git a/src/crypto/tls/testdata/Client-TLSv13-AES256-SHA384 b/src/crypto/tls/testdata/Client-TLSv13-AES256-SHA384 index 02eb5092fc..5fcaba0d4f 100644 --- a/src/crypto/tls/testdata/Client-TLSv13-AES256-SHA384 +++ b/src/crypto/tls/testdata/Client-TLSv13-AES256-SHA384 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,89 +7,88 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 3e 8f 50 19 e5 |....z...v..>.P..| -00000010 1b d8 bf 48 bf c6 b3 38 d0 a4 9d 33 39 1f 36 72 |...H...8...39.6r| -00000020 9a a4 7d 9a e5 61 f1 9b da 0c a3 20 00 00 00 00 |..}..a..... ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 76 2d 81 0b a9 |....z...v..v-...| +00000010 70 b7 fe 52 ef d3 80 c4 1d bf f7 19 99 3c 4c aa |p..R.............j.+...| -00000070 78 13 e0 9b e1 41 60 7d bd 83 69 d5 dc 1b 6d 14 |x....A`}..i...m.| -00000080 03 03 00 01 01 17 03 03 00 17 cd 1f b4 38 20 00 |.............8 .| -00000090 f5 52 89 92 be 23 95 90 92 b4 2a 06 f9 af f7 6c |.R...#....*....l| -000000a0 82 17 03 03 02 6d 4d 51 05 22 11 94 f0 2e 66 9b |.....mMQ."....f.| -000000b0 d0 bd b8 01 3c 23 03 3a 28 a7 74 80 81 e6 5c 5e |....<#.:(.t...\^| -000000c0 48 fb 4d 29 ab b3 17 c6 25 d8 15 ed 63 ef 07 61 |H.M)....%...c..a| -000000d0 0e 14 44 da 9f 6c c1 57 37 18 34 16 e0 3a 8d ab |..D..l.W7.4..:..| -000000e0 98 45 84 79 e0 19 56 26 61 e1 70 c9 7d 7b 55 b0 |.E.y..V&a.p.}{U.| -000000f0 5c d5 90 60 87 3c 55 f7 5e 4f df fc 05 6e 90 bc |\..`....1..%M| -00000130 ae c0 0f de 5b 44 97 d1 bf f6 7a 84 88 fb 82 7b |....[D....z....{| -00000140 79 5d f0 d8 39 a3 21 5a 67 16 b9 68 55 06 bd 50 |y]..9.!Zg..hU..P| -00000150 f2 83 77 8e e6 60 f3 46 57 d3 96 e1 f7 02 9e 1d |..w..`.FW.......| -00000160 d3 f2 29 0b 8e 34 0d 40 0b 1a 06 c5 33 52 bd 78 |..)..4.@....3R.x| -00000170 4e ff a2 ec 31 a1 c3 57 0d 82 59 ab a7 46 81 94 |N...1..W..Y..F..| -00000180 4f 31 63 25 75 3f b1 c9 99 ae 8a 60 6f 4a 96 d2 |O1c%u?.....`oJ..| -00000190 ce 37 4c 7b f4 f9 83 56 7e 4c 0a 6d a1 0c 80 00 |.7L{...V~L.m....| -000001a0 46 5a a9 fa d6 7c 9a 18 c2 36 b6 19 fa 76 37 65 |FZ...|...6...v7e| -000001b0 d4 c0 33 37 c3 90 26 df 4e c7 89 65 26 f3 cb 9d |..37..&.N..e&...| -000001c0 a2 a0 ae 50 72 89 45 db fb a1 44 3a 12 9e e7 4e |...Pr.E...D:...N| -000001d0 7a b8 aa f8 87 d2 8d 6b 43 ff 66 b7 ad 06 d5 09 |z......kC.f.....| -000001e0 ac 4e 75 db b2 d1 4c 43 81 26 43 bf a3 af 0f 97 |.Nu...LC.&C.....| -000001f0 83 a4 37 e1 aa 50 da e7 6b 3f a1 6c 80 ea b2 06 |..7..P..k?.l....| -00000200 6b 51 b9 b9 b0 83 71 b1 56 fe c7 f6 9e e7 69 1c |kQ....q.V.....i.| -00000210 e7 6b ba 0e 46 b9 9d cb dd 7f 9f bf a3 06 1d ba |.k..F...........| -00000220 5f eb 5e 1f dd 76 5f 8c d7 4e d9 a0 c1 75 28 61 |_.^..v_..N...u(a| -00000230 ea ef 4a 79 fc a6 8f 87 98 b2 26 ce 4e ae b7 9c |..Jy......&.N...| -00000240 ed 73 f3 98 a4 83 56 55 af d7 6d c3 90 fc ec 8d |.s....VU..m.....| -00000250 09 b4 a0 80 ac ff bc 1b 0b f9 70 4d 70 2b 19 ab |..........pMp+..| -00000260 d0 14 de 7c d2 ca b7 56 7f 19 d6 1a 11 04 50 3d |...|...V......P=| -00000270 12 dc 35 c1 ce b9 b0 e4 70 b3 27 4b 26 98 e3 af |..5.....p.'K&...| -00000280 7f 42 62 4b 75 33 61 54 2c 0f 03 bd b6 51 e9 5a |.BbKu3aT,....Q.Z| -00000290 bd 90 f9 af 8e 5f c2 ed aa 63 a4 3b c7 e1 cb cc |....._...c.;....| -000002a0 8b 0f 48 39 9b 6c 49 08 9b f4 27 d8 d8 92 56 a3 |..H9.lI...'...V.| -000002b0 ae a9 60 a9 ab 25 3d 3d ba 36 60 00 39 bd 60 ab |..`..%==.6`.9.`.| -000002c0 58 bd 4d c2 ab 13 2d 70 2d ef 0c a3 65 17 45 ad |X.M...-p-...e.E.| -000002d0 b2 fc 92 ce cb 74 e9 b1 59 cb b2 f1 c7 06 6b 9d |.....t..Y.....k.| -000002e0 12 7a c1 51 3d c8 81 91 88 02 fa be 18 f2 9d 4d |.z.Q=..........M| -000002f0 04 53 3f 39 e9 49 1f fb 99 1b 71 94 44 dd 09 c5 |.S?9.I....q.D...| -00000300 4a c4 71 45 2a d7 8f b9 a3 7d 2f df 23 d0 2c 83 |J.qE*....}/.#.,.| -00000310 1a 90 0e 17 03 03 00 99 60 fb bc b6 8b 4a 50 fb |........`....JP.| -00000320 88 0e 23 81 34 07 98 f8 07 35 5f 12 98 4d a3 63 |..#.4....5_..M.c| -00000330 c3 05 e7 99 eb 22 fe a9 da 60 25 70 e6 53 40 18 |....."...`%p.S@.| -00000340 f9 66 c4 3c 0f 3c 9b 7b 3e 86 5f e9 0f 91 4e ea |.f.<.<.{>._...N.| -00000350 4f 38 dd ef 1c a8 80 16 ae 59 50 70 23 92 40 22 |O8.......YPp#.@"| -00000360 01 d6 72 d4 e5 ee e7 b2 aa 07 d0 ac ee 63 8f dc |..r..........c..| -00000370 55 29 5e e5 6f be 28 1e b5 ad ca 9a 30 94 57 16 |U)^.o.(.....0.W.| -00000380 de 2b ba 7b 4a 50 a8 7a fa 9d 45 89 d1 3c 97 d3 |.+.{JP.z..E..<..| -00000390 9d c5 1d de cd d6 80 9b bd 68 1c e2 8b e3 bb dc |.........h......| -000003a0 c5 2a 4d 38 ae d6 b3 1d 2e 35 52 d0 c0 b4 ae fd |.*M8.....5R.....| -000003b0 68 17 03 03 00 45 ac f9 bb 95 b5 c3 fb dc e9 21 |h....E.........!| -000003c0 65 ef a9 2d 9c 6a 6b 51 35 9b 2b a9 6b f4 2f 66 |e..-.jkQ5.+.k./f| -000003d0 14 9d e0 30 fc eb 43 bb 4f 1b 50 13 65 72 35 74 |...0..C.O.P.er5t| -000003e0 dd 20 dc 88 54 e4 05 18 d7 02 ca 5b 27 dd 32 e9 |. ..T......['.2.| -000003f0 a2 68 68 cc 55 ff 25 21 87 13 9b |.hh.U.%!...| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 f7 |..+.....3.$... .| +00000060 88 ec 33 9c 98 e7 6d 31 3f de eb 97 df 15 ad 66 |..3...m1?......f| +00000070 4c e1 d0 00 45 75 f7 a2 3c 75 11 db 11 12 0e 14 |L...Eu......|.I+NU.t..| +00000130 23 32 9d aa b1 17 15 3d 37 85 42 0e 5f 7c fa 5b |#2.....=7.B._|.[| +00000140 b8 ae f3 b9 4d b2 40 b5 e2 de e2 b3 f0 27 a6 f2 |....M.@......'..| +00000150 0c 28 4b 77 ee 38 dc ec 17 28 18 03 13 85 60 2c |.(Kw.8...(....`,| +00000160 ab 16 e1 1c c6 e1 91 e0 5f f3 b6 f7 1c 3b 5f 03 |........_....;_.| +00000170 6a d5 b0 a0 5b ab 6d 9c b2 ee 8e 50 49 94 7d db |j...[.m....PI.}.| +00000180 3b fe 68 e2 79 3e 2d 33 06 a6 b2 9c 8b 7d 93 04 |;.h.y>-3.....}..| +00000190 b4 9e 07 6d 15 80 63 38 8e 4b c5 e6 88 a0 6a f2 |...m..c8.K....j.| +000001a0 11 60 11 7a f7 6e 7e 47 9f fd 77 12 c9 d5 8e 58 |.`.z.n~G..w....X| +000001b0 84 51 2c f6 fd 2b d1 dc a6 51 d8 20 3f 06 76 ad |.Q,..+...Q. ?.v.| +000001c0 dd 37 b6 e9 86 4e cb 31 76 79 60 26 c7 b4 d5 67 |.7...N.1vy`&...g| +000001d0 2c 70 22 f4 4d b5 60 61 41 48 65 a8 d0 b5 d8 47 |,p".M.`aAHe....G| +000001e0 08 bf 5b 67 e8 99 c4 a5 91 1e 36 6b 37 53 7b 65 |..[g......6k7S{e| +000001f0 ac af 2d df 8e 77 e2 46 1a 65 45 0a 00 f2 8f 9d |..-..w.F.eE.....| +00000200 47 1c 93 64 52 c3 d9 91 47 41 88 7f 81 ea 8f 2b |G..dR...GA.....+| +00000210 a9 fa 4b d5 9d 6f 30 36 dc af e0 96 b3 f0 e4 6a |..K..o06.......j| +00000220 a3 10 cf 0e 53 64 e3 18 52 08 a9 16 e3 6d e9 0a |....Sd..R....m..| +00000230 ec 4d a4 f7 f1 ee 38 28 88 31 aa 38 a7 14 09 f4 |.M....8(.1.8....| +00000240 1a 31 ac 40 46 dd f2 4f 7f ff f4 fc 71 42 61 73 |.1.@F..O....qBas| +00000250 03 47 9f ec 69 7f 77 e3 91 29 cd 89 7f 45 6b 9d |.G..i.w..)...Ek.| +00000260 f5 33 66 8b 74 bc 53 ff 54 c3 af 48 8e d8 25 0a |.3f.t.S.T..H..%.| +00000270 99 49 08 29 f3 b2 a5 d0 5b ca 89 e2 d7 f5 5f 40 |.I.)....[....._@| +00000280 72 6f b4 d6 20 39 79 4a 0e 7c 00 60 68 eb 1e ab |ro.. 9yJ.|.`h...| +00000290 ee 38 35 f2 db 83 9c 0b 52 80 15 14 ae 6b dc f5 |.85.....R....k..| +000002a0 d5 f3 83 cb e7 5f 5c 98 e2 f2 d0 52 68 92 ff f6 |....._\....Rh...| +000002b0 7a ce ff ae 96 6e ad 11 d2 5e bc 60 16 55 cd 81 |z....n...^.`.U..| +000002c0 25 67 5b db 76 59 36 a8 48 d6 91 86 4f cb 87 5f |%g[.vY6.H...O.._| +000002d0 ea 96 e4 71 df ac 54 5a a0 e1 0a bd 88 68 ff 0a |...q..TZ.....h..| +000002e0 97 be 9b da cf aa e1 b1 74 c9 8d 5f 19 f5 df 53 |........t.._...S| +000002f0 a0 57 93 7d c3 fe 37 78 2a ba 6b c2 a1 51 41 f4 |.W.}..7x*.k..QA.| +00000300 ee 57 ed d2 7d 48 14 31 4a f7 14 d4 0e 42 9e fb |.W..}H.1J....B..| +00000310 fb f4 cd 17 03 03 00 99 6b 70 ae fc d3 07 5e 7f |........kp....^.| +00000320 39 2a 27 34 54 8a b6 4d 39 36 d4 38 0c ed 8c 24 |9*'4T..M96.8...$| +00000330 fc 29 1d 59 74 99 f1 e1 a1 23 4b 6d 27 31 f4 2d |.).Yt....#Km'1.-| +00000340 8b b3 23 aa 92 5f 01 3d a1 f6 b5 24 8e 56 ea eb |..#.._.=...$.V..| +00000350 4e 0a dc 23 ae 32 1b 0d cb bc 60 87 b7 35 32 5f |N..#.2....`..52_| +00000360 10 32 fb 89 32 3f 99 0e 30 0d 65 28 69 c4 3b f8 |.2..2?..0.e(i.;.| +00000370 6c 04 a5 bf ec e9 aa c4 bc b4 55 e2 d0 09 a1 4b |l.........U....K| +00000380 82 f8 a5 37 ab ca 69 f4 bc 24 69 c4 ce 07 6c ee |...7..i..$i...l.| +00000390 d6 08 92 14 41 ca 8f c8 c9 37 ae b5 f3 29 ff 69 |....A....7...).i| +000003a0 7a 18 4e 93 dd eb 52 58 d2 6b 22 6d b6 29 70 b3 |z.N...RX.k"m.)p.| +000003b0 ea 17 03 03 00 45 10 35 86 2e d4 e3 92 35 a3 0e |.....E.5.....5..| +000003c0 a1 cd 79 11 05 cd 77 c4 93 f4 6a ba f8 fc 4b bd |..y...w...j...K.| +000003d0 63 5d c0 2d a0 c9 c2 2a 10 79 e9 0c bc 0b 18 c1 |c].-...*.y......| +000003e0 15 18 c0 8a d7 05 39 f1 de 6e 8e cb dd 73 5f ee |......9..n...s_.| +000003f0 28 93 f9 92 35 56 1f c1 e4 8d 89 |(...5V.....| >>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 00 45 87 09 9a a9 a0 |..........E.....| -00000010 6a 25 7e 7f ef f2 95 97 45 9f 25 b3 fc 70 1d a5 |j%~.....E.%..p..| -00000020 c5 e3 bc 95 95 c2 2e 9b 46 d9 cd 5e 04 29 33 9f |........F..^.)3.| -00000030 8c 35 d5 b0 4c 35 e7 f4 02 1a 1a 9f 07 e5 e4 9d |.5..L5..........| -00000040 6f 63 35 d5 c9 21 9f 90 95 a5 14 14 fc 8a bb 41 |oc5..!.........A| -00000050 17 03 03 00 17 3d e1 e9 33 73 b4 29 68 d2 50 d2 |.....=..3s.)h.P.| -00000060 58 9b 85 21 07 3a a8 87 92 37 53 90 17 03 03 00 |X..!.:...7S.....| -00000070 13 24 0a cf 8a 3e 88 9d 9f 57 81 26 10 06 fc 70 |.$...>...W.&...p| -00000080 1d fa da 81 |....| +00000000 14 03 03 00 01 01 17 03 03 00 45 2f 08 54 f6 2b |..........E/.T.+| +00000010 fd 13 5d 87 d3 b6 73 5e 20 88 af 53 db 7e 3c 37 |..]...s^ ..S.~<7| +00000020 1d 52 a4 ae 91 3f 24 a7 30 26 02 da 13 f3 c5 60 |.R...?$.0&.....`| +00000030 28 e6 eb 8f e1 1b 58 2d bb d0 06 c4 67 33 1c a1 |(.....X-....g3..| +00000040 03 cb 16 56 1b 91 06 08 b6 34 c5 de 97 04 ee f0 |...V.....4......| +00000050 17 03 03 00 17 6c 7e 3d 5d 98 4e 42 81 42 c5 2c |.....l~=].NB.B.,| +00000060 b2 c2 d3 c9 58 bc 13 bc 61 cd 63 f2 17 03 03 00 |....X...a.c.....| +00000070 13 83 c7 4a b6 10 69 b4 16 be 25 a1 db cb c9 94 |...J..i...%.....| +00000080 8f a2 27 22 |..'"| diff --git a/src/crypto/tls/testdata/Client-TLSv13-ALPN b/src/crypto/tls/testdata/Client-TLSv13-ALPN index d83b270019..ff0989c567 100644 --- a/src/crypto/tls/testdata/Client-TLSv13-ALPN +++ b/src/crypto/tls/testdata/Client-TLSv13-ALPN @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 30 01 00 01 2c 03 03 00 00 00 00 00 |....0...,.......| +00000000 16 03 01 01 2c 01 00 01 28 03 03 00 00 00 00 00 |....,...(.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,89 +7,89 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 b1 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 ad 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 10 00 10 00 0e |................| -000000f0 06 70 72 6f 74 6f 32 06 70 72 6f 74 6f 31 00 2b |.proto2.proto1.+| -00000100 00 09 08 03 04 03 03 03 02 03 01 00 33 00 26 00 |............3.&.| -00000110 24 00 1d 00 20 2f e5 7d a3 47 cd 62 43 15 28 da |$... /.}.G.bC.(.| -00000120 ac 5f bb 29 07 30 ff f6 84 af c4 cf c2 ed 90 99 |._.).0..........| -00000130 5f 58 cb 3b 74 |_X.;t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 10 00 10 00 0e 06 70 72 6f |.............pro| +000000f0 74 6f 32 06 70 72 6f 74 6f 31 00 2b 00 09 08 03 |to2.proto1.+....| +00000100 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| +00000110 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| +00000120 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| +00000130 74 |t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 cb f0 b7 02 94 |....z...v.......| -00000010 1a 0a b2 1d 4b 7c 43 99 cb 50 bd aa 72 80 91 98 |....K|C..P..r...| -00000020 bc 29 68 eb bd 81 b5 32 7c fe 9b 20 00 00 00 00 |.)h....2|.. ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 bb 72 d9 b8 e5 |....z...v...r...| +00000010 0b 80 14 4c 16 9b 86 ec 26 62 f2 f9 00 85 a6 ae |...L....&b......| +00000020 44 f4 27 c4 13 67 4a 2e 96 e6 33 20 00 00 00 00 |D.'..gJ...3 ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 03 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 78 |..+.....3.$... x| -00000060 05 c7 69 04 93 8d 93 d7 d3 eb 0b 00 70 98 99 c1 |..i.........p...| -00000070 2a a9 84 7f e5 6c 4c d0 b1 f3 10 71 11 c6 78 14 |*....lL....q..x.| -00000080 03 03 00 01 01 17 03 03 00 24 6d 09 77 65 0f 29 |.........$m.we.)| -00000090 b9 e5 1d df a9 e7 98 f6 f3 37 70 4b 8f cf 49 db |.........7pK..I.| -000000a0 fb 8f 73 fc 7f 9e ea e0 a0 35 ee 93 a0 34 17 03 |..s......5...4..| -000000b0 03 02 6d 90 a9 c1 79 ef b1 e3 7a 7d 3d f6 8e bd |..m...y...z}=...| -000000c0 18 04 6a 1c d4 72 52 ad 36 fc 21 c6 0b 94 8b 98 |..j..rR.6.!.....| -000000d0 0e 98 54 c5 ff 3c 6d d2 15 c4 63 51 a6 00 4b 28 |..T.. .|P...CJ .| -00000210 68 1c 2f bf 4e 72 a0 51 9f 22 d1 51 bf b4 b0 b1 |h./.Nr.Q.".Q....| -00000220 fe 78 2b 0e a9 6d f1 27 82 46 a9 2d 43 73 29 0c |.x+..m.'.F.-Cs).| -00000230 c2 6d f8 0c c9 78 d3 ba 5d 5f 96 13 fd 2f 1f e9 |.m...x..]_.../..| -00000240 8f 93 e6 61 7e 0e 07 49 cb 5c af 51 72 85 67 b8 |...a~..I.\.Qr.g.| -00000250 63 e8 f9 4f 7c d7 e4 d1 25 c0 ed 26 de 1f 65 d4 |c..O|...%..&..e.| -00000260 2a 3b 23 30 38 12 56 97 01 f1 bd 3f 96 23 72 89 |*;#08.V....?.#r.| -00000270 2e 88 d6 6a 9f 52 a7 3e 42 72 dc c4 e0 05 81 42 |...j.R.>Br.....B| -00000280 45 e1 c5 6f 32 82 bf 4e 38 a0 06 eb 99 2c 8b 79 |E..o2..N8....,.y| -00000290 f9 2e a7 26 3a 78 fd 90 66 7c 0f 53 4c 4a 00 c2 |...&:x..f|.SLJ..| -000002a0 9d 48 2c a5 37 02 e0 cd 5d 16 1c d4 ee 03 79 71 |.H,.7...].....yq| -000002b0 c6 c2 e4 15 98 6b 40 bb e9 b6 21 a1 e7 fc 68 b2 |.....k@...!...h.| -000002c0 70 cb d5 e1 5b 2d f7 b7 6b d5 2c 50 19 8a 6a 50 |p...[-..k.,P..jP| -000002d0 54 97 bc 90 2b b2 20 6a 9c 96 5d cf d0 5f 9a 6d |T...+. j..].._.m| -000002e0 b4 70 33 ba 83 2d f7 86 41 8b 88 20 51 ae a8 02 |.p3..-..A.. Q...| -000002f0 af 63 ea 1c 0c b0 99 19 73 56 02 68 a9 50 b2 43 |.c......sV.h.P.C| -00000300 6b 9c 5d c2 f3 48 dd fe a3 7c 2b 28 a5 e5 25 ed |k.]..H...|+(..%.| -00000310 05 14 a3 d6 63 25 2e 44 4e f9 fd 6d 9e 16 ae e6 |....c%.DN..m....| -00000320 17 03 03 00 99 b8 3d db c6 ee 13 dd 97 29 32 71 |......=......)2q| -00000330 67 28 89 90 cf c5 23 4a 9e 94 31 7c 5d 6c b3 7c |g(....#J..1|]l.|| -00000340 46 a6 b2 98 c2 e2 b9 a6 c1 7d fd 22 5c 7b 88 67 |F........}."\{.g| -00000350 cc c6 4a 82 83 f9 8a 09 8b 2c d5 9f 0f c3 1d 23 |..J......,.....#| -00000360 b5 27 89 ba 5e 0f 74 96 58 da 5e 3f 63 b2 f3 44 |.'..^.t.X.^?c..D| -00000370 31 86 d0 da 18 54 eb 34 89 fc 11 ee 8e af c1 42 |1....T.4.......B| -00000380 bd 6b 31 c3 f1 54 96 fd 86 37 0d 20 b9 70 3b 88 |.k1..T...7. .p;.| -00000390 20 87 c3 9f 1a 6b 90 7d 84 1d 69 42 01 bc 3d 81 | ....k.}..iB..=.| -000003a0 c9 ea 82 a3 d1 18 bf 4c 3a dc d4 db 92 cc 5d b2 |.......L:.....].| -000003b0 f2 dd b4 17 39 13 ef 45 cc 66 4d d1 f2 a4 17 03 |....9..E.fM.....| -000003c0 03 00 35 3f 02 3e 15 06 ad 50 e9 14 30 be 33 d9 |..5?.>...P..0.3.| -000003d0 18 1c 44 df 42 fa 3f aa 84 31 a7 b3 d8 3c 8e 04 |..D.B.?..1...<..| -000003e0 b3 fc 41 66 4a f0 71 03 0d 0b b5 46 f1 34 f5 37 |..AfJ.q....F.4.7| -000003f0 4c 1c 1a 05 75 98 58 f3 |L...u.X.| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 69 |..+.....3.$... i| +00000060 d7 31 51 9b e6 1d 98 09 9f 5f 6c 05 10 ba 64 b5 |.1Q......_l...d.| +00000070 b9 8f b8 c0 2a c1 7f 89 13 ed 04 38 e9 78 43 14 |....*......8.xC.| +00000080 03 03 00 01 01 17 03 03 00 24 99 f3 d5 db e2 35 |.........$.....5| +00000090 4b fb b2 05 e6 03 c2 f2 c4 ea 64 d2 e4 d3 17 e7 |K.........d.....| +000000a0 72 34 e8 b2 d6 61 91 3b b3 03 ea 1c 33 57 17 03 |r4...a.;....3W..| +000000b0 03 02 6d 22 da 71 90 42 da 0a 03 52 98 42 e3 71 |..m".q.B...R.B.q| +000000c0 db 57 e0 9d 70 89 4b 4c a9 a5 4d 39 02 19 f1 09 |.W..p.KL..M9....| +000000d0 5a 9c 33 c9 f2 8d 7e 78 c3 b3 ae 1b 2c 7b 73 ef |Z.3...~x....,{s.| +000000e0 3a ad d8 51 82 90 bc 6b 0d 6f a6 f0 46 8d 72 29 |:..Q...k.o..F.r)| +000000f0 ca 84 d8 b1 27 e3 8d 8f f5 ce f0 f0 d9 2f 9c 71 |....'......../.q| +00000100 b9 bc 89 af 92 18 d2 c9 07 b2 eb 94 40 42 d2 7a |............@B.z| +00000110 c8 be 49 35 b6 b7 f3 b9 64 c1 56 fe fc d8 11 04 |..I5....d.V.....| +00000120 6c d7 e9 18 98 29 eb d5 6f 59 0d fa 25 85 f7 3c |l....)..oY..%..<| +00000130 df 76 d9 52 10 72 59 d6 36 5b b0 54 01 1d ac 9e |.v.R.rY.6[.T....| +00000140 9b 86 5f 5b ee 18 74 ec 8e 8b da 0f df 71 50 e2 |.._[..t......qP.| +00000150 cd 58 98 23 a0 21 94 ac eb db 3a fe f6 8d aa cc |.X.#.!....:.....| +00000160 21 23 e6 35 f7 0e 42 0e 50 48 14 22 f3 83 91 3d |!#.5..B.PH."...=| +00000170 73 22 5b 74 e7 e8 d1 b5 ee cd 7e c3 ee 0d 13 a9 |s"[t......~.....| +00000180 aa ae 0b 12 b0 3a 9d 6f 01 68 27 e4 62 e0 0e 67 |.....:.o.h'.b..g| +00000190 e4 de 69 74 8d f1 7a 3b 16 bb 1d a0 ad bf c5 4b |..it..z;.......K| +000001a0 50 9e b0 dc 08 73 14 99 c9 ad de 04 df 75 09 de |P....s.......u..| +000001b0 e4 27 ec 2b 75 79 db 82 8c aa 42 af 40 df 32 0e |.'.+uy....B.@.2.| +000001c0 e6 1d 93 d1 00 f7 18 59 43 9c 03 6c f7 bf ac a2 |.......YC..l....| +000001d0 8b 10 be b1 a8 b6 4e 84 2b c0 ff 87 4d 26 c2 8f |......N.+...M&..| +000001e0 63 64 7a 66 a6 12 0b e4 06 9e ff af fe 03 55 c7 |cdzf..........U.| +000001f0 13 92 22 ec ed 89 76 2d 36 8a 4a 92 f1 a5 b6 ac |.."...v-6.J.....| +00000200 d4 19 46 9d f3 e0 52 6d 01 ee bf ab d5 17 c0 33 |..F...Rm.......3| +00000210 b5 81 e1 81 a2 e9 44 b7 20 0e f4 f0 35 bb d4 8d |......D. ...5...| +00000220 bc 83 fc 59 fb 1d 5e e0 c4 4c 9e cc c3 72 b7 3d |...Y..^..L...r.=| +00000230 01 a4 f2 df e2 a7 44 d1 f1 20 90 31 53 09 50 eb |......D.. .1S.P.| +00000240 80 85 23 52 68 7d b2 51 60 0c 00 87 c3 42 88 07 |..#Rh}.Q`....B..| +00000250 de 59 fd 3d 68 a3 22 50 cb 67 43 94 02 77 24 6a |.Y.=h."P.gC..w$j| +00000260 8d a4 4f 85 7f 19 a0 b5 10 76 2a 85 4c 84 12 e3 |..O......v*.L...| +00000270 f7 ce b8 30 9f d0 9f 8a 26 42 28 f4 cb f7 c4 c2 |...0....&B(.....| +00000280 aa 34 c2 72 64 dc 6d 9d d4 26 2f 14 4d 97 2c 00 |.4.rd.m..&/.M.,.| +00000290 2d 46 0f 07 9c 3d 76 d4 55 a7 15 13 b2 41 e3 f4 |-F...=v.U....A..| +000002a0 33 ae 1b 26 68 43 62 de c1 c2 61 26 08 1b 20 13 |3..&hCb...a&.. .| +000002b0 bc 58 72 c2 16 fe 4d 2e 68 8b 31 61 ac c9 55 c5 |.Xr...M.h.1a..U.| +000002c0 3c 5a 77 c2 61 47 4a d6 0d c4 8a bc bb 63 ca ea |0....8bA.L94..| +000003e0 ee 48 70 3c 23 65 90 cb f9 4f 76 72 dd f3 64 83 |.Hp<#e...Ovr..d.| +000003f0 23 38 79 13 d2 93 57 fb |#8y...W.| >>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 00 35 61 48 9d d3 32 |..........5aH..2| -00000010 7b ac 9d 5a c5 29 b2 4f 74 ef b8 8e f0 1e b9 33 |{..Z.).Ot......3| -00000020 4f cb db 0b 3e 49 47 44 64 ce 16 6b e4 a2 7c 8a |O...>IGDd..k..|.| -00000030 cc e4 01 9e bd 3d a7 30 cd a1 ff 23 d2 fc 7f fc |.....=.0...#....| -00000040 17 03 03 00 17 6b a9 a0 55 b2 53 19 0f 58 7c 79 |.....k..U.S..X|y| -00000050 5a 19 9a 4a 9b 1b 77 8d 78 9c 9c b6 17 03 03 00 |Z..J..w.x.......| -00000060 13 f0 e9 91 46 e4 0a a1 0f e9 43 8e 10 d7 61 80 |....F.....C...a.| -00000070 95 4b db 96 |.K..| +00000000 14 03 03 00 01 01 17 03 03 00 35 f1 1a 54 a4 02 |..........5..T..| +00000010 59 df 81 64 1d 06 93 27 55 41 83 40 9c a0 fa 44 |Y..d...'UA.@...D| +00000020 dd 80 16 6b ed fb 36 ec 0d 49 ee 93 99 84 55 30 |...k..6..I....U0| +00000030 94 4c 46 7a b9 ba db f0 6a e5 90 ce 58 b1 95 2e |.LFz....j...X...| +00000040 17 03 03 00 17 ed 07 24 e5 f8 f3 91 4c f1 05 dc |.......$....L...| +00000050 d0 ea a5 c2 cd fb bf 14 45 99 69 53 17 03 03 00 |........E.iS....| +00000060 13 d7 bf a6 c1 66 5d 7b 00 fb 5a 6e b8 81 99 3a |.....f]{..Zn...:| +00000070 30 08 a2 3c |0..<| diff --git a/src/crypto/tls/testdata/Client-TLSv13-CHACHA20-SHA256 b/src/crypto/tls/testdata/Client-TLSv13-CHACHA20-SHA256 index 6becede60f..f2c1cb499a 100644 --- a/src/crypto/tls/testdata/Client-TLSv13-CHACHA20-SHA256 +++ b/src/crypto/tls/testdata/Client-TLSv13-CHACHA20-SHA256 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,87 +7,86 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 37 bf a4 0d 23 |....z...v..7...#| -00000010 be 83 2a 9d 84 f6 de 1c 53 be 13 92 f3 de 35 a9 |..*.....S.....5.| -00000020 cc 95 6d e1 c6 05 2f 53 a6 ce 9f 20 00 00 00 00 |..m.../S... ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 f9 23 d9 5d 6c |....z...v...#.]l| +00000010 ae 6b 63 2a d8 2c a0 27 8e 7b 39 29 35 04 0e a9 |.kc*.,.'.{9)5...| +00000020 31 f7 a0 c5 77 a7 f3 c5 25 ca 2f 20 00 00 00 00 |1...w...%./ ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 03 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 3d |..+.....3.$... =| -00000060 1c 09 5d 44 bc 3f 39 2d 9a dd c1 15 0f dc 5d 7c |..]D.?9-......]|| -00000070 93 06 89 42 27 f0 cd 63 55 3e 74 3f 87 10 7a 14 |...B'..cU>t?..z.| -00000080 03 03 00 01 01 17 03 03 00 17 bd 92 4d 21 8d dc |............M!..| -00000090 7b 19 1b f9 44 64 38 5c 61 c3 19 70 75 29 05 e8 |{...Dd8\a..pu)..| -000000a0 ef 17 03 03 02 6d a4 a0 79 ad 41 c1 d2 6b 78 fd |.....m..y.A..kx.| -000000b0 4b 1f 6f 72 c4 92 94 17 dd 40 80 b6 f2 a0 85 4d |K.or.....@.....M| -000000c0 ba 4c 3a 34 80 67 21 2f 6d 2e fc 4e a8 2b ab 86 |.L:4.g!/m..N.+..| -000000d0 18 6c 03 2d e6 ac 2c 3c ce 4c 2d ff 7d fd 44 fc |.l.-..,<.L-.}.D.| -000000e0 4e 1d 62 c5 b1 22 60 6c 56 1e 6d bf d8 90 02 cb |N.b.."`lV.m.....| -000000f0 d2 6c 52 7c f3 51 11 49 62 7a f0 f3 8f 51 bf 0e |.lR|.Q.Ibz...Q..| -00000100 bc 07 9b 1f d9 32 26 d8 c5 01 4d 84 31 3f 4b 33 |.....2&...M.1?K3| -00000110 d0 c7 0c 86 89 bc 88 7d 70 6d 70 38 89 5b 8c d0 |.......}pmp8.[..| -00000120 4d c0 9d 35 20 50 52 c7 5d 9c b3 51 30 46 6a 12 |M..5 PR.]..Q0Fj.| -00000130 54 36 34 55 9a 25 43 39 28 40 13 9a 56 fa a7 f9 |T64U.%C9(@..V...| -00000140 1f 3c 0f da fb ce c2 ed da 9f 6c 99 53 76 74 a8 |.<........l.Svt.| -00000150 4b 62 8a 55 cf a1 bc 5f 10 bb 8e 77 c8 4f bd 1b |Kb.U..._...w.O..| -00000160 d4 72 07 00 4c 8b b6 d7 3a 1a 43 93 34 b4 0a 2d |.r..L...:.C.4..-| -00000170 62 62 a1 e6 96 1a 71 38 a9 06 ae 6f ca 08 6f 52 |bb....q8...o..oR| -00000180 09 c7 c8 37 13 4c 3b be 7b 60 29 7b d4 28 3e 71 |...7.L;.{`){.(>q| -00000190 55 29 bd ab 62 3c 90 1f 8c ed 55 5d 81 85 0b 63 |U)..b<....U]...c| -000001a0 57 8e f9 50 eb b8 3e c6 e0 b0 fa cc 68 42 41 0c |W..P..>.....hBA.| -000001b0 b0 34 f7 5d 39 f4 cd fe 9c ac 42 78 60 b2 27 55 |.4.]9.....Bx`.'U| -000001c0 c2 2e e0 aa 84 00 8f 80 11 d2 52 92 78 2d b7 f6 |..........R.x-..| -000001d0 70 37 e8 87 0b 13 04 29 5b a2 50 fb 4d ad 5e 98 |p7.....)[.P.M.^.| -000001e0 59 a1 f7 7a 80 30 42 c2 59 96 97 f8 47 88 25 f3 |Y..z.0B.Y...G.%.| -000001f0 25 02 ec 9c f3 93 97 63 b1 b2 90 0a 96 66 17 68 |%......c.....f.h| -00000200 3d f0 32 5b d2 4a 3b 97 95 30 f1 22 be f9 04 87 |=.2[.J;..0."....| -00000210 8d 58 d6 81 62 00 85 6c 76 07 c4 7d 05 42 0e 25 |.X..b..lv..}.B.%| -00000220 7b 0d 92 42 bb 8a 36 47 11 2f f1 59 aa 01 44 28 |{..B..6G./.Y..D(| -00000230 96 f0 f6 22 c4 74 c7 1b 3f 9d 67 30 f5 72 f8 24 |...".t..?.g0.r.$| -00000240 b7 5c 9f d5 cb 51 a8 e5 6c b3 f6 0b 00 86 fc bb |.\...Q..l.......| -00000250 ab 1f d8 89 07 e9 a6 0b 48 93 e6 6e ca a3 b4 9a |........H..n....| -00000260 bc 5c 9c 4e ae 64 17 9d 4d 1f b7 c9 fa 8e a3 94 |.\.N.d..M.......| -00000270 a0 da 4e 17 1a b8 f8 1a a7 df dd cb 29 3b bb cf |..N.........);..| -00000280 1a 26 a2 74 d6 b2 80 63 f4 fb 28 10 ea 27 fa 48 |.&.t...c..(..'.H| -00000290 d8 e6 68 34 0f 5f ca 20 e9 3e 01 77 f2 e8 23 70 |..h4._. .>.w..#p| -000002a0 29 67 60 96 81 63 2e 7f 7d d3 30 fa 4c e1 fc bd |)g`..c..}.0.L...| -000002b0 a2 94 e5 1a 0c f3 bc 68 19 aa 20 09 7c 37 68 ac |.......h.. .|7h.| -000002c0 d2 3e 08 1c e5 fb e6 ef b4 1b 8b 58 9c 32 ef 66 |.>.........X.2.f| -000002d0 a0 a3 32 4f ce 37 5b 2f 99 d0 65 1a 26 2c 69 ca |..2O.7[/..e.&,i.| -000002e0 53 2a a2 cb 95 b6 a4 aa bf 51 53 ab 56 73 22 ad |S*.......QS.Vs".| -000002f0 b0 26 18 dd 9c 34 f4 01 bc 10 7c fb b0 b4 97 55 |.&...4....|....U| -00000300 93 fb 94 b1 16 2f 31 50 a5 fa d4 1d 7c b1 a3 3a |...../1P....|..:| -00000310 28 c1 ab 17 03 03 00 99 37 2c 7e fb bc 61 42 37 |(.......7,~..aB7| -00000320 b4 d1 ab 9c e2 45 25 1f dd 2a d3 f2 90 a1 25 01 |.....E%..*....%.| -00000330 26 44 18 6b f3 ba c5 a1 e2 d2 71 c8 00 81 97 2d |&D.k......q....-| -00000340 08 a7 f3 4e 9e 8c b4 d2 a4 22 77 89 65 23 82 56 |...N....."w.e#.V| -00000350 f6 21 f3 5f 06 0c 50 9b 5b 09 b5 b9 a4 d8 d5 dd |.!._..P.[.......| -00000360 e6 2b 98 8b 7d c7 0e 5c 00 1d 2b ab 52 d0 1a 57 |.+..}..\..+.R..W| -00000370 9f d2 ee 5c c8 5c 9e da df 36 f5 29 2c 31 ec 93 |...\.\...6.),1..| -00000380 36 61 2c a6 a2 09 04 f5 58 ed ac e8 cc b9 20 11 |6a,.....X..... .| -00000390 94 73 f7 98 0b 88 46 7d 37 f2 2d 67 57 e5 66 cb |.s....F}7.-gW.f.| -000003a0 69 03 3b 1d ec 98 e8 98 d0 48 d1 15 34 22 f1 d5 |i.;......H..4"..| -000003b0 2e 17 03 03 00 35 50 7a 9f 59 68 a8 06 55 35 93 |.....5Pz.Yh..U5.| -000003c0 ae 92 9d e6 1a 9b 33 c6 bb ee 1a 4a 87 29 89 e6 |......3....J.)..| -000003d0 69 0c b7 c9 b5 1d 73 9d 70 4c 4e 35 e2 a6 b3 9e |i.....s.pLN5....| -000003e0 0e 51 06 42 dd bf b0 6b 32 b3 8b |.Q.B...k2..| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 ba |..+.....3.$... .| +00000060 2b 6b 27 27 14 c0 42 b6 1f bc ad 77 f1 1f 4a b3 |+k''..B....w..J.| +00000070 42 94 a6 3a 2c 7f e6 aa 72 8e d0 70 e8 0e 53 14 |B..:,...r..p..S.| +00000080 03 03 00 01 01 17 03 03 00 17 33 bb 8a 47 b0 a9 |..........3..G..| +00000090 29 d7 bf e4 94 7d 42 8a 19 95 4e d9 7c b7 9a 87 |)....}B...N.|...| +000000a0 83 17 03 03 02 6d 86 a7 6c 3c 4e 45 95 f6 f6 66 |.....m..l.`.`~.....r| +000001d0 a4 bc 66 a7 bd 46 83 88 6e 9f b3 db de e7 b3 04 |..f..F..n.......| +000001e0 62 4c 61 d6 d0 89 84 e4 30 d7 4d a0 61 4f 56 ad |bLa.....0.M.aOV.| +000001f0 51 c6 1f 10 01 9e 8d 75 55 fb 89 b8 d0 57 e3 ce |Q......uU....W..| +00000200 40 72 41 27 96 e0 5b f4 cc ba d0 ec 8c d4 91 ca |@rA'..[.........| +00000210 8f f0 db 11 86 d5 8e 02 6a 1f 29 00 f6 ff 42 a2 |........j.)...B.| +00000220 7c c9 e7 18 38 39 c9 e4 2b 0e e9 36 40 d3 dd bc ||...89..+..6@...| +00000230 f7 e3 7c 2d e9 f0 52 31 16 85 b4 e2 a8 54 cd d0 |..|-..R1.....T..| +00000240 d6 e2 ed f4 fc 91 9f 50 68 a0 74 af 37 c7 4c bd |.......Ph.t.7.L.| +00000250 de 9e c7 78 06 41 6b 62 07 8c 8b f4 f5 ea ab 16 |...x.Akb........| +00000260 b0 16 b9 ea 06 2c ee 66 d5 da b3 2c 0f 03 d2 f6 |.....,.f...,....| +00000270 ae f7 11 85 d8 b6 b8 bf 7e a5 c8 ff 0d 41 29 86 |........~....A).| +00000280 94 e4 32 58 6c 0e 05 47 b8 c5 77 de d1 81 8d 72 |..2Xl..G..w....r| +00000290 d4 e0 64 66 f7 17 8a 96 88 bf 1c 04 22 40 e0 cf |..df........"@..| +000002a0 28 6d f5 4f 89 e2 4a 23 4b 71 e1 15 3b da 45 0b |(m.O..J#Kq..;.E.| +000002b0 13 ee 1f 7f 4e 45 3d 8e d2 f3 bd 23 e7 4c f3 d2 |....NE=....#.L..| +000002c0 0f 4b 6e 6a 3d 6a f1 26 b7 ae f6 1d 39 73 cd fd |.Knj=j.&....9s..| +000002d0 1c c8 c7 45 fa e0 67 d5 2c eb e9 2b 32 8e 65 7b |...E..g.,..+2.e{| +000002e0 c5 32 cc e6 01 91 fc fd 92 6e ab 9a 13 f6 63 81 |.2.......n....c.| +000002f0 e5 b9 25 6d ce 73 39 9e 82 ae 18 89 a5 32 cb d3 |..%m.s9......2..| +00000300 a3 85 55 f5 cd 26 96 18 91 1c 41 36 69 49 93 f2 |..U..&....A6iI..| +00000310 aa 05 ab 17 03 03 00 99 9c 1d 79 c5 7b 73 b9 f9 |..........y.{s..| +00000320 00 2d ea ff c2 8d f6 57 65 7c 92 fa ba 22 18 03 |.-.....We|..."..| +00000330 69 69 e9 05 e0 74 1a e5 9d f9 30 9f 1c 39 86 30 |ii...t....0..9.0| +00000340 aa 1b 86 fa 20 26 20 13 ea 8d eb 8b 4e 8b c1 50 |.... & .....N..P| +00000350 86 ef a3 c5 8e 48 b2 a1 5a ac 05 e7 8f 23 8a 34 |.....H..Z....#.4| +00000360 ab 1f 8e 90 b1 e5 9a d3 d7 28 90 b6 12 35 dc cb |.........(...5..| +00000370 c5 3c 8d 3d fc e2 99 2a 8b f0 6a f4 8b a9 62 3f |.<.=...*..j...b?| +00000380 b6 19 29 fd 79 b9 35 72 b0 89 59 ab 78 c6 c9 f0 |..).y.5r..Y.x...| +00000390 68 bc 0d f5 9a 45 dd 4f d2 40 75 19 47 af e9 6f |h....E.O.@u.G..o| +000003a0 56 ec 73 ce cd 19 31 c0 39 08 b1 63 e0 ac d4 49 |V.s...1.9..c...I| +000003b0 e5 17 03 03 00 35 0d 34 de e9 22 e4 56 18 4a 33 |.....5.4..".V.J3| +000003c0 d1 05 c4 d4 f2 64 24 62 d7 da 6a 8e 34 3b 51 13 |.....d$b..j.4;Q.| +000003d0 27 69 88 37 4b ba 29 9d c5 78 af 62 2b 62 6e 5a |'i.7K.)..x.b+bnZ| +000003e0 28 7a 93 c5 9a f3 84 1d 50 9a 94 |(z......P..| >>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 00 35 6a 64 a5 70 df |..........5jd.p.| -00000010 c8 89 29 86 27 8e 2f 03 f0 a3 26 0b f4 d2 99 73 |..).'./...&....s| -00000020 0d 52 8b 49 ac 3a 61 0c 30 0f 89 8b 29 91 8c 30 |.R.I.:a.0...)..0| -00000030 1d 82 4d c2 92 9f 47 33 9a 59 b9 a0 da 8b a9 0e |..M...G3.Y......| -00000040 17 03 03 00 17 e2 b8 0e b0 8d eb a1 b2 1f 07 70 |...............p| -00000050 fc 0e 0f 06 c7 fa b3 cc 9e 95 d8 bc 17 03 03 00 |................| -00000060 13 04 92 08 57 71 45 d0 65 d9 c9 27 05 49 e1 7e |....WqE.e..'.I.~| -00000070 12 c9 77 07 |..w.| +00000000 14 03 03 00 01 01 17 03 03 00 35 4f 9c 2d 01 8b |..........5O.-..| +00000010 4a 31 16 77 b4 f2 2b 40 cb 8e d5 7d 93 bd 66 59 |J1.w..+@...}..fY| +00000020 f8 f1 f4 45 69 fd f7 9b 88 5a e5 0a 40 67 e2 17 |...Ei....Z..@g..| +00000030 72 de b0 1d 02 ba b5 a7 58 35 4a 3e b6 2a 0c e8 |r.......X5J>.*..| +00000040 17 03 03 00 17 4a 50 b7 f1 94 a4 64 9e a2 95 0a |.....JP....d....| +00000050 6c f6 93 7f d6 6d 12 10 7a 69 8a d2 17 03 03 00 |l....m..zi......| +00000060 13 10 60 24 3f 6e c9 ee c6 27 50 72 5e 19 22 e0 |..`$?n...'Pr^.".| +00000070 76 12 45 e5 |v.E.| diff --git a/src/crypto/tls/testdata/Client-TLSv13-ClientCert-ECDSA-RSA b/src/crypto/tls/testdata/Client-TLSv13-ClientCert-ECDSA-RSA index 9aa65c6754..6611cdfed2 100644 --- a/src/crypto/tls/testdata/Client-TLSv13-ClientCert-ECDSA-RSA +++ b/src/crypto/tls/testdata/Client-TLSv13-ClientCert-ECDSA-RSA @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,136 +7,135 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 71 fd 9f ba 42 |....z...v..q...B| -00000010 4c 98 22 8e 16 d3 63 6c a6 34 c2 41 37 f9 98 ad |L."...cl.4.A7...| -00000020 7a a6 c5 61 12 df 37 32 a2 95 a3 20 00 00 00 00 |z..a..72... ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 ea 4e 78 a5 f4 |....z...v...Nx..| +00000010 71 78 37 5b 2c e4 69 b2 00 4d 49 8c 8b 86 4c 80 |qx7[,.i..MI...L.| +00000020 f9 db 03 3f cc 1e 42 f9 87 ff 7b 20 00 00 00 00 |...?..B...{ ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 03 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 50 |..+.....3.$... P| -00000060 f1 4d 28 5f 81 28 a7 d7 cb 82 20 48 91 0b 86 94 |.M(_.(.... H....| -00000070 ae d8 b0 1c d0 84 55 5a 93 4c ee 65 9d 19 68 14 |......UZ.L.e..h.| -00000080 03 03 00 01 01 17 03 03 00 17 7d af 66 34 6e f8 |..........}.f4n.| -00000090 38 18 0a 6a 24 91 d8 6c 4d 7f e6 4c fc 40 8a a7 |8..j$..lM..L.@..| -000000a0 bc 17 03 03 00 42 77 e7 1c fd d3 a9 f5 86 8e 92 |.....Bw.........| -000000b0 f0 28 92 e5 e7 aa 8c 13 00 cb 07 0c b4 3d 13 7c |.(...........=.|| -000000c0 2d 58 a0 94 0c 8f 4b 45 8d aa 97 7a 30 0e 78 d7 |-X....KE...z0.x.| -000000d0 22 89 e0 8b 53 31 1b 9b 2d 7f f7 ff e0 b3 13 d5 |"...S1..-.......| -000000e0 49 12 9e 50 31 38 eb d5 17 03 03 02 6d 65 2e 6f |I..P18......me.o| -000000f0 91 62 81 e9 8c fc 11 34 c1 59 58 44 3d 4f 74 6d |.b.....4.YXD=Otm| -00000100 ae 5a 47 29 56 6d 43 08 43 aa 69 d8 20 6c 02 99 |.ZG)VmC.C.i. l..| -00000110 68 eb fa 47 c6 b0 7d 5b 70 2a a1 f9 f6 4f 70 02 |h..G..}[p*...Op.| -00000120 88 f5 d1 b6 74 6e e2 54 7f fe 04 ce b2 03 9e e4 |....tn.T........| -00000130 6e 3e 5d cf 27 49 de 90 7f 0a 2e 51 87 97 38 0e |n>].'I.....Q..8.| -00000140 cc f9 31 56 c5 bd b2 17 4c a4 a3 95 d7 c4 47 43 |..1V....L.....GC| -00000150 58 cb 60 4f 73 65 71 e3 83 3d 60 04 d4 4d 6b a4 |X.`Oseq..=`..Mk.| -00000160 96 c1 51 ec c5 48 29 13 ae 6d 7c 4c 0c 47 40 26 |..Q..H)..m|L.G@&| -00000170 50 13 71 a9 55 3e bc 7b ce a6 a5 8a 23 3e 41 d5 |P.q.U>.{....#>A.| -00000180 2c 22 3e 3e 65 3e 53 0b 13 fb b9 36 25 77 bd 89 |,">>e>S....6%w..| -00000190 f1 4e c2 99 5c 0a 14 c4 f8 9b da 01 a9 61 f5 a9 |.N..\........a..| -000001a0 f5 a7 04 17 cc e5 a9 8b b7 e8 ce 13 6c 87 75 99 |............l.u.| -000001b0 cb 05 a5 2d c6 8d 03 73 b0 1c ba e3 64 66 d7 a9 |...-...s....df..| -000001c0 b9 3c 16 41 ce ca 7a 9d 67 84 81 78 57 22 24 6e |.<.A..z.g..xW"$n| -000001d0 80 55 10 87 e4 6a b7 3e 62 23 84 ea a6 9b ee 1d |.U...j.>b#......| -000001e0 d0 32 96 74 7a b0 ed 05 a9 ca 53 8c 8c 66 bf ee |.2.tz.....S..f..| -000001f0 2d b4 5f 78 4a 7e 88 6a bf e4 44 fc fb 71 df 9c |-._xJ~.j..D..q..| -00000200 34 a6 f0 4c 5b b9 0f a2 72 b4 28 0a 67 a2 99 be |4..L[...r.(.g...| -00000210 97 da 1d 64 24 c3 99 e6 cb 43 9a eb 28 6e 54 e9 |...d$....C..(nT.| -00000220 34 5a 3c a1 1c 2f 07 27 a1 bf 1b fb a5 2f 61 8d |4Z<../.'...../a.| -00000230 26 ab f4 9f 7e ec 22 dc 4f 34 3d c9 6f 5d 6a 18 |&...~.".O4=.o]j.| -00000240 30 09 bc f0 06 6d 3e bc f7 96 9f 90 4b d8 e3 ac |0....m>.....K...| -00000250 96 3c f4 e2 3e 26 4a 43 07 1f 7e 79 08 f8 12 14 |.<..>&JC..~y....| -00000260 82 1d 27 a5 16 d6 88 c2 31 26 8d 60 40 04 30 7b |..'.....1&.`@.0{| -00000270 49 7b 6d 11 d4 80 c5 09 9f 6a 85 f4 d3 41 ce c4 |I{m......j...A..| -00000280 f6 bc 49 38 05 19 86 55 fa 9a 73 d7 5d 61 97 42 |..I8...U..s.]a.B| -00000290 39 f2 6e 26 c7 11 ca b8 bf 85 2d 25 c2 83 30 6d |9.n&......-%..0m| -000002a0 17 07 af da 39 e9 c5 e4 88 f6 5f 58 e7 00 72 38 |....9....._X..r8| -000002b0 e1 ac f4 75 eb 7f e2 00 d7 d9 e8 aa 77 8b 63 5e |...u........w.c^| -000002c0 85 4c c5 2a dd 8d 89 f4 ea ff 14 9d bb d7 b1 9a |.L.*............| -000002d0 7b d0 38 e9 9d 26 a9 79 f4 de 10 63 1f 09 67 bc |{.8..&.y...c..g.| -000002e0 51 ca 12 51 05 93 29 fe 5f 17 79 7f 84 e2 87 39 |Q..Q..)._.y....9| -000002f0 d4 80 ac 76 fe c4 ab bb 63 06 64 b0 ba 5f 2f 8b |...v....c.d.._/.| -00000300 d9 b5 39 b5 80 69 0d 97 c6 f4 ce e1 2c cf 29 1c |..9..i......,.).| -00000310 e7 f4 b7 02 f5 da b4 63 26 d9 a9 4a 4e 34 66 56 |.......c&..JN4fV| -00000320 c2 89 6a 12 95 16 9c 8b b3 95 fb 8d 1f 4b 67 53 |..j..........KgS| -00000330 5e 1f 68 70 ed 9b aa 89 78 16 88 d2 39 31 d9 59 |^.hp....x...91.Y| -00000340 b5 bd 01 64 59 61 11 22 ab 73 f8 00 c3 7a 8c 45 |...dYa.".s...z.E| -00000350 54 32 4f 5c 24 6a 0b 87 6c dc 17 03 03 00 99 4b |T2O\$j..l......K| -00000360 2d c9 21 11 87 71 41 cf 67 23 4e cd c8 7f e4 73 |-.!..qA.g#N....s| -00000370 97 46 dd ff 0e 13 b4 4a 0e 81 4d fe 6c 0a 1d a0 |.F.....J..M.l...| -00000380 b4 57 e5 4d e0 8d 82 e5 33 71 26 4a ef 72 8d 1f |.W.M....3q&J.r..| -00000390 a2 7b 43 e7 6c 99 19 24 18 7f 53 4a 16 c1 51 0c |.{C.l..$..SJ..Q.| -000003a0 3c 7d 3d c6 64 14 74 65 51 0b 04 09 dc c5 c0 ef |<}=.d.teQ.......| -000003b0 a1 a9 b3 d3 1d 16 2d 9a 5d 40 ec 13 9a 16 7c 9b |......-.]@....|.| -000003c0 6c 18 ba ec e3 e6 25 99 c3 1a 16 44 05 a3 85 ac |l.....%....D....| -000003d0 6a 49 e0 30 af 1c d1 5d f5 6e e6 4b dc f3 71 49 |jI.0...].n.K..qI| -000003e0 b0 5e 1d 7a e2 8b ba 13 7d a2 4a 12 cb 69 5a fe |.^.z....}.J..iZ.| -000003f0 7d cf e5 cf 0a d0 6e 26 17 03 03 00 35 cd 5a 61 |}.....n&....5.Za| -00000400 28 1f 69 d8 c0 48 8a 10 4e 46 3a 51 06 87 28 8d |(.i..H..NF:Q..(.| -00000410 9d 68 60 bc e1 6e a4 a2 21 81 2a 17 57 b9 6a 7a |.h`..n..!.*.W.jz| -00000420 47 ae fb e0 a8 fc 7a 72 0f 9f 52 46 18 a8 b1 01 |G.....zr..RF....| -00000430 0d 9b |..| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 f1 |..+.....3.$... .| +00000060 bf 65 1e fd e0 5d 1b ca 02 b5 9e 3f a8 82 e0 5a |.e...].....?...Z| +00000070 97 eb af b5 f1 f7 77 3f 46 a8 66 93 de a8 39 14 |......w?F.f...9.| +00000080 03 03 00 01 01 17 03 03 00 17 16 a7 f6 48 b9 11 |.............H..| +00000090 59 75 3d d8 cf eb ba 72 6c f7 0d 26 50 ab 2d 2a |Yu=....rl..&P.-*| +000000a0 61 17 03 03 00 42 00 0f 78 f4 5a 62 c5 56 bd f5 |a....B..x.Zb.V..| +000000b0 4a df d3 78 76 bd 90 71 49 69 8a b3 60 5b 24 8b |J..xv..qIi..`[$.| +000000c0 45 fb c7 e0 ff 04 d8 7b c6 1f 93 c9 f9 b8 0d 38 |E......{.......8| +000000d0 53 d1 2e 95 99 32 52 2e 45 b2 11 08 45 c7 bc 64 |S....2R.E...E..d| +000000e0 6a c2 32 db 70 96 77 6f 17 03 03 02 6d ba 3e 97 |j.2.p.wo....m.>.| +000000f0 ea d7 dd c1 c5 39 9a c4 b1 eb 8b df 35 57 43 35 |.....9......5WC5| +00000100 31 7a 4c 71 ab 57 79 80 f9 48 96 67 5f 3b fe 98 |1zLq.Wy..H.g_;..| +00000110 0b 5d d0 ce 8c 0c 5a 03 28 8f 64 b4 3e 74 75 51 |.]....Z.(.d.>tuQ| +00000120 81 b3 09 a7 8e 33 45 92 49 72 91 b7 2c 45 68 5c |.....3E.Ir..,Eh\| +00000130 ee 27 e8 5b fd b0 80 e3 43 35 2f a2 bd e5 cf d6 |.'.[....C5/.....| +00000140 c3 fc 43 03 1e aa c9 c4 67 db ef 0c c3 aa 46 18 |..C.....g.....F.| +00000150 39 69 31 26 7f 0a 7a b2 e7 c4 cb 09 3a f1 8e a0 |9i1&..z.....:...| +00000160 05 70 87 a9 12 c6 f2 a1 25 87 72 0a 2d fb d5 51 |.p......%.r.-..Q| +00000170 ce 93 8e f8 08 0e 86 90 04 00 9b 76 fd 57 23 cb |...........v.W#.| +00000180 bc 78 23 07 8a 35 92 6e d6 cd f5 b5 2e e1 8f 33 |.x#..5.n.......3| +00000190 7a bb 61 54 65 4f 4d 12 4b ca db 19 4b 30 6e 2c |z.aTeOM.K...K0n,| +000001a0 56 62 b5 32 7a 98 b6 a4 10 98 5a 16 6b 26 8e 7c |Vb.2z.....Z.k&.|| +000001b0 e0 88 77 a6 20 60 c9 fb c5 e2 66 c3 6d 0d df dd |..w. `....f.m...| +000001c0 21 22 10 da 88 24 21 92 74 3b d8 92 c0 ec 2f 57 |!"...$!.t;..../W| +000001d0 79 d7 42 bd d7 b0 e0 23 d2 a0 45 7f 2a 2a ff df |y.B....#..E.**..| +000001e0 a4 61 53 ec 44 e2 3a 7a 06 15 8a ce 02 84 e7 78 |.aS.D.:z.......x| +000001f0 9b ef 15 0e 84 16 fe 0f dd 36 de 0f 69 14 e4 35 |.........6..i..5| +00000200 90 e4 a0 15 a6 97 e5 c9 a1 3c ed 79 c6 03 ae 39 |.........<.y...9| +00000210 f2 36 1e ca 20 4f 20 59 e6 6f c7 15 ba 90 ac 4a |.6.. O Y.o.....J| +00000220 11 ad 3e f5 48 df 94 fe f8 48 2f 12 25 01 6c 9a |..>.H....H/.%.l.| +00000230 e6 ee 41 7b 13 4c 2f cc 3a 2d 8d b8 e7 d5 62 88 |..A{.L/.:-....b.| +00000240 88 5d d4 6e c4 64 c5 32 0a e7 86 08 64 2c 0a 11 |.].n.d.2....d,..| +00000250 8e 51 63 f9 81 30 00 b1 29 fa b8 1c ab 87 88 22 |.Qc..0..)......"| +00000260 f0 ef 79 04 8c 85 78 df 72 6c 99 d6 c7 3a 9f 2a |..y...x.rl...:.*| +00000270 6d c6 24 05 e7 e5 d7 d0 c7 e5 7c 87 50 f9 b7 69 |m.$.......|.P..i| +00000280 6d 1f 39 77 5d 4c f2 98 35 f7 07 b6 30 0d d6 25 |m.9w]L..5...0..%| +00000290 40 cb a4 2d b2 f1 22 ca 26 5d 92 22 97 0a 65 a9 |@..-..".&]."..e.| +000002a0 a0 46 58 be 0d af a1 1c da c8 bf 98 28 72 ea ee |.FX.........(r..| +000002b0 46 f9 c0 0d b3 f1 11 12 5f b7 69 75 ea dd 60 d0 |F......._.iu..`.| +000002c0 53 51 01 ec 7c ff ef 41 68 04 ec a4 6b 51 bb 89 |SQ..|..Ah...kQ..| +000002d0 8b 8d a2 89 05 6f 78 81 16 f8 7a c2 f6 c3 0d ef |.....ox...z.....| +000002e0 b3 12 e2 57 54 95 a6 cd 5d 04 32 88 70 f9 db db |...WT...].2.p...| +000002f0 b3 45 75 32 6f ac 9a fa ad 54 e5 a5 82 ae 3e 73 |.Eu2o....T....>s| +00000300 2d 07 f4 48 83 e2 10 7d cb 2f 4c 18 94 75 37 24 |-..H...}./L..u7$| +00000310 cd 13 dc 3a 56 93 e8 80 a3 ba de b1 0d 14 79 48 |...:V.........yH| +00000320 08 69 a6 f3 2e 9f 7a 78 6e 9c de 16 ba 73 0b a6 |.i....zxn....s..| +00000330 f2 6c 04 e6 e6 89 3d 46 7d db a4 8f 9a e7 5d 0e |.l....=F}.....].| +00000340 b9 6b 05 59 4d 4d e9 48 1a 18 e9 59 7b 56 70 d6 |.k.YMM.H...Y{Vp.| +00000350 0f fc c2 93 31 03 fa ad b4 c9 17 03 03 00 99 62 |....1..........b| +00000360 c5 b8 11 10 72 af 5b 36 7b 4b 86 83 05 1f 5a c5 |....r.[6{K....Z.| +00000370 66 7b b6 ac 30 8d c0 03 64 ec 29 5d 60 e9 e9 9d |f{..0...d.)]`...| +00000380 6d 58 3e 55 7e 19 a3 59 f5 8b ca 1a f0 c8 ca 1b |mX>U~..Y........| +00000390 c6 ed 7f d7 70 fb 4b a5 6a 96 66 ce 4c 96 d1 b4 |....p.K.j.f.L...| +000003a0 de 99 e2 31 4a 88 64 51 7b 73 60 bb 5c 46 9b b7 |...1J.dQ{s`.\F..| +000003b0 9f d8 97 de 03 06 f3 3e 34 8b 75 43 ce cd 9a 12 |.......>4.uC....| +000003c0 1e 27 b5 28 5e 8f b6 04 d2 02 19 02 02 72 85 46 |.'.(^........r.F| +000003d0 1c cb 5e 63 09 e6 ba 81 69 29 97 5f 31 1e 8f f5 |..^c....i)._1...| +000003e0 1a ed 3b 1e 97 83 bf ee 1f 09 f4 f7 be 32 c7 bc |..;..........2..| +000003f0 b6 7e 70 b9 32 4b 07 99 17 03 03 00 35 67 1c 72 |.~p.2K......5g.r| +00000400 de 27 25 26 1b 12 b2 9a a3 38 5c a7 f7 13 a4 1e |.'%&.....8\.....| +00000410 bf f9 7f 1d 57 af ff 2f 89 4b 75 fc 23 c5 47 00 |....W../.Ku.#.G.| +00000420 cd b7 b6 89 af 4e f0 17 e9 e6 31 cd fb b0 31 19 |.....N....1...1.| +00000430 73 61 |sa| >>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 02 1e ab 60 cd 30 a1 |............`.0.| -00000010 d1 e0 a1 d4 77 15 50 bf aa c7 bf 1a c0 e1 cd dd |....w.P.........| -00000020 6a 64 0b 5e f0 83 24 77 1d 7a ff 97 5b ab 5b 15 |jd.^..$w.z..[.[.| -00000030 eb 9e af 09 c9 38 e1 8a 7d c1 c9 04 40 b9 ca 6e |.....8..}...@..n| -00000040 01 8d cb 1e 66 52 a4 c2 20 44 68 bf d0 0d ec c0 |....fR.. Dh.....| -00000050 0b d2 9e ae 60 e4 5e 19 cf 92 96 22 88 b1 35 e3 |....`.^...."..5.| -00000060 c9 89 c8 67 6d 14 83 e1 ad 76 ca e6 9a d0 34 e0 |...gm....v....4.| -00000070 de 9d 46 44 85 97 b0 cc 4e ef 72 d9 85 47 13 fb |..FD....N.r..G..| -00000080 86 9f 3c 26 20 fa fd 15 f7 83 1f c2 1f 51 3f 4a |..<& ........Q?J| -00000090 b4 3c 3b 09 2b 16 22 d1 30 f2 16 ae b9 28 f7 8e |.<;.+.".0....(..| -000000a0 a2 84 15 c8 42 58 a5 6d 8a 86 a9 7f 23 18 ed ee |....BX.m....#...| -000000b0 18 d7 2d 47 4f b8 f2 44 60 cb 2f 1d 1a ad 7b e7 |..-GO..D`./...{.| -000000c0 15 d3 d8 55 9e fb 0b 0e b8 e3 1f 4e a4 8c 14 ec |...U.......N....| -000000d0 4b 3a c4 d1 66 16 9d 7a 72 20 8a fb 41 33 bc 04 |K:..f..zr ..A3..| -000000e0 4e b7 e4 65 2e 21 d2 3b 5f 07 00 cd 38 b3 9d 78 |N..e.!.;_...8..x| -000000f0 eb 36 00 db d1 e0 8a 3f 50 84 3f d9 4b 2d 85 41 |.6.....?P.?.K-.A| -00000100 bc cc ec 9b 15 2c f9 95 02 18 41 08 13 f3 d5 ec |.....,....A.....| -00000110 e7 32 8c ca 7e 0a e6 81 ed db 8a 49 46 ac a9 42 |.2..~......IF..B| -00000120 27 13 85 f1 16 9b 15 bd ec eb 1c 25 24 9a 7f 0e |'..........%$...| -00000130 a4 67 e1 32 3f cf 8b 61 49 9b 43 a4 57 79 48 14 |.g.2?..aI.C.WyH.| -00000140 90 00 b1 2d 6f 82 9f ef f3 a0 c6 e8 9f fd d4 08 |...-o...........| -00000150 1f 16 5e 7f be 73 7e a6 5b d2 02 12 c9 76 c3 f3 |..^..s~.[....v..| -00000160 13 4c 44 7f e9 8e 5b ce d8 56 d6 2f 76 ff 5a 8e |.LD...[..V./v.Z.| -00000170 6d cb 5b 8e c6 62 29 4e c6 34 a9 74 44 84 b7 28 |m.[..b)N.4.tD..(| -00000180 96 cd fa 6d 2e ac 75 3e 86 73 c3 a9 50 ef e9 e4 |...m..u>.s..P...| -00000190 70 a5 ba bc 1f 9c c3 05 17 30 2c 1b ba c0 15 bf |p........0,.....| -000001a0 f4 47 45 b1 42 d9 6c 6d 57 b0 7a 94 61 ee 78 0e |.GE.B.lmW.z.a.x.| -000001b0 32 4f 01 da df d8 29 51 91 1c 3f f6 40 a7 15 76 |2O....)Q..?.@..v| -000001c0 99 d7 e0 45 af 04 5a 69 f0 65 bf 40 e9 5c 4b e5 |...E..Zi.e.@.\K.| -000001d0 eb e6 2e 79 f7 c8 4a e4 0b 71 e3 d5 dd 7e 25 d4 |...y..J..q...~%.| -000001e0 d9 7f 1b 9b 8b 3f b6 9c 35 59 2e 40 34 e3 c8 2a |.....?..5Y.@4..*| -000001f0 3c 74 0b d6 35 d3 12 e8 93 7e 44 61 b4 3d da 19 |.d.Q..K....| +00000000 14 03 03 00 01 01 17 03 03 02 1e e9 c3 0a e9 35 |...............5| +00000010 c0 d7 d8 1e 01 13 31 2c 39 0c 31 57 df f2 8d 7f |......1,9.1W....| +00000020 ca 2e 8c a0 63 60 e2 61 c6 37 8f cf 66 62 e7 d6 |....c`.a.7..fb..| +00000030 3d 89 6b 3b bd 1c 45 ec 62 a5 1c b3 86 16 bc 03 |=.k;..E.b.......| +00000040 57 9e 2b cd 31 d4 4d ad 57 96 12 12 19 ce 61 14 |W.+.1.M.W.....a.| +00000050 d6 1f 7a d1 c8 9b d4 9e 18 cf 1c f7 d0 ca 84 bb |..z.............| +00000060 8e 93 85 97 4b 53 68 3d f6 45 76 e0 a7 42 df 6a |....KSh=.Ev..B.j| +00000070 96 04 b9 9e 03 97 bb 57 bf 7f 9c 27 68 ba 04 49 |.......W...'h..I| +00000080 a7 c9 a3 f3 77 83 1f 15 0e 02 05 b5 8c e4 a6 ed |....w...........| +00000090 f8 65 5b bb a4 65 08 a1 a3 34 2a 71 66 6c 2e c8 |.e[..e...4*qfl..| +000000a0 e2 5b 08 ca 59 91 da 07 14 61 17 b7 19 28 00 33 |.[..Y....a...(.3| +000000b0 d9 0c 45 df d8 74 83 2e 9b 99 c7 35 cd f4 de 53 |..E..t.....5...S| +000000c0 b0 df 5c 8b 15 b0 e0 81 77 a5 5d d5 33 40 51 60 |..\.....w.].3@Q`| +000000d0 09 36 4f b6 6f ce 95 2b d1 38 88 33 e0 13 a0 c1 |.6O.o..+.8.3....| +000000e0 5f 2c 15 77 56 d1 16 09 9a 78 5c 6f 8c 93 c3 44 |_,.wV....x\o...D| +000000f0 54 04 b4 d3 23 31 ff 61 74 e5 09 3a d3 9b f1 2f |T...#1.at..:.../| +00000100 de f4 a9 0b b8 9d ca 17 2c 3f d5 2b dd c0 9e 07 |........,?.+....| +00000110 48 50 6a 51 72 be 92 10 1a 91 b5 2d 39 76 10 a4 |HPjQr......-9v..| +00000120 42 63 31 df ce 31 9a 5c 0d ee 6e 55 c0 ba 44 9f |Bc1..1.\..nU..D.| +00000130 e4 75 77 0f 88 6d 1d 24 9f 1c a0 12 14 4c ce 68 |.uw..m.$.....L.h| +00000140 24 a5 aa f2 f2 c5 f4 4f a9 c7 e0 dd 5c 6b 4c 53 |$......O....\kLS| +00000150 b5 26 8b e2 a4 af e3 13 77 0a fc dd 2b 56 fa a2 |.&......w...+V..| +00000160 46 7f 9a 11 c6 a0 4c b6 36 29 93 9f 83 99 13 ad |F.....L.6)......| +00000170 a0 62 9a ef 42 d0 dd 49 fe ba e4 fd fd 09 4b d4 |.b..B..I......K.| +00000180 31 6e d9 a5 0e 4d ac 8c 90 7c 26 2b 6b 1a cb 55 |1n...M...|&+k..U| +00000190 47 53 47 e2 d4 a1 d8 2e 5d 9b 36 75 f0 a4 8a 39 |GSG.....].6u...9| +000001a0 88 07 c8 ed 75 40 fd 72 0e 57 02 a6 bf 8a 64 0a |....u@.r.W....d.| +000001b0 98 8a 1c f4 d3 3d c4 af 7d 97 6e b7 e0 f6 d8 10 |.....=..}.n.....| +000001c0 17 0b d1 5c f9 41 c9 5e 5c 8a 38 dd 66 b3 e9 74 |...\.A.^\.8.f..t| +000001d0 41 2a bd 2d f8 6a 27 57 da ef d6 ca 70 49 c6 e2 |A*.-.j'W....pI..| +000001e0 94 ef 1e c6 57 a0 c8 fc d1 05 4f 65 c1 71 e4 ab |....W.....Oe.q..| +000001f0 44 49 f3 e3 6d b1 f4 5a 69 e7 70 30 b5 81 19 3a |DI..m..Zi.p0...:| +00000200 06 33 ef a5 bd 81 8c 3c 7b 2f 9f 41 a5 7d a8 5f |.3.....<{/.A.}._| +00000210 3b 3d 95 6e 04 a8 5f 2a c1 de 6e e4 14 17 91 36 |;=.n.._*..n....6| +00000220 9d 57 9c 34 1a 7d c8 c3 42 17 03 03 00 a3 a0 20 |.W.4.}..B...... | +00000230 06 7e 90 c8 0a b2 db 90 28 38 8f 42 12 89 1d 21 |.~......(8.B...!| +00000240 04 b3 a6 7b 8c 63 60 49 33 4a 70 4b 1a 97 90 51 |...{.c`I3JpK...Q| +00000250 d2 13 6e 56 9a 1d 41 9c 65 19 31 43 56 96 e2 50 |..nV..A.e.1CV..P| +00000260 77 17 67 6e df 3b e1 43 22 fe 0c 49 74 ff b0 e9 |w.gn.;.C"..It...| +00000270 5c f2 66 4e a3 e5 ac 02 1c 69 11 ce de a1 d4 6b |\.fN.....i.....k| +00000280 1c 46 97 02 7e 81 d8 29 78 42 82 5e b7 e2 31 02 |.F..~..)xB.^..1.| +00000290 fb 74 e2 a6 5e 29 f1 28 cf 8a 9c bd f8 a0 09 45 |.t..^).(.......E| +000002a0 67 7e d7 7d 91 8d fe 43 03 92 16 b1 67 cc 7a 32 |g~.}...C....g.z2| +000002b0 7e 3a 88 fc 77 36 b5 69 07 09 a0 1c 5c 76 a7 68 |~:..w6.i....\v.h| +000002c0 93 1a 35 20 f6 c1 20 c7 8f de c9 da 81 25 7a 08 |..5 .. ......%z.| +000002d0 e0 17 03 03 00 35 fa 5b 68 55 45 ee dd d6 a2 cb |.....5.[hUE.....| +000002e0 09 a7 21 23 43 9c c4 ff 1c d6 66 4c ce e1 bd a9 |..!#C.....fL....| +000002f0 77 22 0b b0 d4 ad f9 23 a7 1c 0e 63 27 36 16 c6 |w".....#...c'6..| +00000300 a2 f8 00 ef 36 22 89 a7 d6 76 da 17 03 03 00 17 |....6"...v......| +00000310 ca d3 97 3a 7d cc a0 95 02 4a a8 d8 dd 6d 26 64 |...:}....J...m&d| +00000320 92 be 64 86 00 d9 bf 17 03 03 00 13 18 1e 4f 7b |..d...........O{| +00000330 f9 1a 63 8a 50 6a ee 81 07 76 53 a9 95 ea df |..c.Pj...vS....| diff --git a/src/crypto/tls/testdata/Client-TLSv13-ClientCert-Ed25519 b/src/crypto/tls/testdata/Client-TLSv13-ClientCert-Ed25519 index c174bd9f6d..38382edbea 100644 --- a/src/crypto/tls/testdata/Client-TLSv13-ClientCert-Ed25519 +++ b/src/crypto/tls/testdata/Client-TLSv13-ClientCert-Ed25519 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,119 +7,118 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 94 b3 83 34 fd |....z...v.....4.| -00000010 0f d0 16 30 14 0e 57 a1 d3 29 cd 81 c7 a2 59 c9 |...0..W..)....Y.| -00000020 fb 8f 54 d4 9b 69 a8 47 7d c3 63 20 00 00 00 00 |..T..i.G}.c ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 72 63 6c 83 50 |....z...v..rcl.P| +00000010 e9 4c 88 85 70 4f e3 cb c7 0e 0c c5 e5 44 b9 7e |.L..pO.......D.~| +00000020 4a 88 d3 32 d2 37 5c 16 d4 a1 e5 20 00 00 00 00 |J..2.7\.... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 03 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 38 |..+.....3.$... 8| -00000060 5e 40 05 c2 91 46 5b e0 c6 c4 8f b6 eb 91 98 b1 |^@...F[.........| -00000070 b0 41 8e 34 14 8f 2a b1 5e e6 80 78 f6 0c 3e 14 |.A.4..*.^..x..>.| -00000080 03 03 00 01 01 17 03 03 00 17 30 61 18 ba 71 15 |..........0a..q.| -00000090 e0 75 5d 55 f2 1a d1 7e 69 fa 58 41 97 cd c1 9a |.u]U...~i.XA....| -000000a0 92 17 03 03 00 42 af 88 92 3e 98 ef 74 a5 06 90 |.....B...>..t...| -000000b0 fd c0 21 20 01 ec 1d 68 93 8d dc 36 dc 2c 43 77 |..! ...h...6.,Cw| -000000c0 02 18 47 cf 66 b3 61 88 85 be f1 04 1b da c1 03 |..G.f.a.........| -000000d0 31 68 2c 1c fc dc ed 6b f3 a5 e8 52 fd a7 dc c8 |1h,....k...R....| -000000e0 e1 6a 91 67 83 ce 5c 08 17 03 03 02 6d 55 55 72 |.j.g..\.....mUUr| -000000f0 6e cc c5 4c f0 10 d7 0d 57 5d 4d f4 61 8d 5d 78 |n..L....W]M.a.]x| -00000100 c3 cd df 49 4a 1a 4b c6 fe 70 0a 4a 1c 1d 12 25 |...IJ.K..p.J...%| -00000110 36 1a 68 70 7d 02 e9 cc 4b 92 f9 b8 86 d0 e8 68 |6.hp}...K......h| -00000120 56 be 25 b3 67 3d c0 92 5a 9f 57 8e 22 63 97 78 |V.%.g=..Z.W."c.x| -00000130 1a 7e 70 76 87 f7 3a ef 45 1f 38 d3 95 12 72 98 |.~pv..:.E.8...r.| -00000140 d0 89 e5 bd a7 eb fe b6 89 59 27 07 51 fd 2c 71 |.........Y'.Q.,q| -00000150 8a 99 ca b2 75 bc ae b9 39 c6 15 bf 4e a7 3d 73 |....u...9...N.=s| -00000160 f4 2c 7d 4c 88 3b b1 b6 3a 3d 49 c7 d0 91 57 6a |.,}L.;..:=I...Wj| -00000170 cc 25 c7 07 dc 08 0c ac f4 9a 1d 58 17 3b 44 84 |.%.........X.;D.| -00000180 e4 72 eb d5 11 16 09 f5 1b fb 60 23 63 46 51 10 |.r........`#cFQ.| -00000190 4e 94 7b 5a 31 81 db 9e bb 82 28 4a 08 32 88 fa |N.{Z1.....(J.2..| -000001a0 d2 e3 c4 6e 28 7d 47 66 a1 66 05 39 9e 20 52 fe |...n(}Gf.f.9. R.| -000001b0 3d 4d 2e b4 b8 a6 97 dd 12 8d db 9b 74 71 96 be |=M..........tq..| -000001c0 38 07 62 fc 81 97 3f 85 a2 b8 eb 29 0f e6 95 ca |8.b...?....)....| -000001d0 7b a1 f3 94 7e a4 3c 14 71 55 eb c6 c2 15 09 35 |{...~.<.qU.....5| -000001e0 18 22 5b 9a 2c 19 f1 d3 60 f0 ff c2 09 9f 81 93 |."[.,...`.......| -000001f0 e0 37 6e d0 73 40 c2 66 60 b7 54 85 b4 15 83 fe |.7n.s@.f`.T.....| -00000200 d4 de f4 a2 1f 7d 88 7d 6d 7d 30 ab 4a 25 3a a1 |.....}.}m}0.J%:.| -00000210 2c fa 27 f4 94 35 0d 01 b0 9d fb 58 5b 03 86 9f |,.'..5.....X[...| -00000220 24 d8 57 dc e2 2e bf 1a 28 78 62 f5 29 e0 20 06 |$.W.....(xb.). .| -00000230 38 47 98 b7 44 ce d3 66 92 32 4b 68 3d 45 b9 22 |8G..D..f.2Kh=E."| -00000240 b9 94 32 1b 93 3f c1 88 a5 91 0f 06 8a 1e e6 a1 |..2..?..........| -00000250 62 7e 1e 50 7a 2a be 18 cc 62 93 51 e0 c1 87 21 |b~.Pz*...b.Q...!| -00000260 b3 c3 6b 1a ce f9 95 9e 6f 98 2a 25 43 10 6e 10 |..k.....o.*%C.n.| -00000270 97 5c 09 33 e9 06 b6 6a a8 8b fe 11 d7 b3 38 d6 |.\.3...j......8.| -00000280 67 3f f9 50 37 f5 d2 f0 0d d8 6f 0a 8d 58 ee bc |g?.P7.....o..X..| -00000290 18 c2 68 17 c7 d9 05 c4 d1 e6 a9 f3 c4 63 f5 d4 |..h..........c..| -000002a0 f2 fb 16 05 f3 fb 45 56 c7 ec 2b af fe 26 4c c0 |......EV..+..&L.| -000002b0 85 86 de c3 f5 81 32 b2 bd a9 6c fd 33 25 8e ad |......2...l.3%..| -000002c0 6a 44 3e f0 67 be c8 dc e1 40 9e 40 88 4d e7 c8 |jD>.g....@.@.M..| -000002d0 0b 55 18 e6 2b 10 50 84 ff 93 63 f6 93 4a d2 39 |.U..+.P...c..J.9| -000002e0 62 45 ed 31 1d b5 5a 14 53 6f 0f d1 45 e6 6f 66 |bE.1..Z.So..E.of| -000002f0 a3 cd ff 28 b4 34 4c 54 67 8c 1b b6 a0 b4 01 6c |...(.4LTg......l| -00000300 41 24 ab 5c a0 22 82 8c fa cd 1e 4d e1 8b 7a 04 |A$.\.".....M..z.| -00000310 00 62 e3 44 19 59 c8 e2 04 45 ac e6 46 e2 6a df |.b.D.Y...E..F.j.| -00000320 ce e1 d2 3b 3f 22 b9 17 f2 eb 75 ea 96 cc af f6 |...;?"....u.....| -00000330 6b 77 29 e5 5c 96 13 19 b5 e6 0a 5d 31 9d 6e 28 |kw).\......]1.n(| -00000340 3e ec 58 cc 76 b2 93 1e d0 e4 c3 b7 44 fd 0e 19 |>.X.v.......D...| -00000350 91 e5 21 91 06 56 19 80 cf 25 17 03 03 00 99 22 |..!..V...%....."| -00000360 b0 98 6e 68 69 5c 4d 7e 81 2c dc 0f 68 3e 6c 8a |..nhi\M~.,..h>l.| -00000370 02 4a 56 1b f2 b4 a2 04 31 64 b4 07 2c 37 47 a3 |.JV.....1d..,7G.| -00000380 4c b6 5a 64 94 a8 c2 b6 d8 d2 6f 2e b6 4e ce 46 |L.Zd......o..N.F| -00000390 72 ce 87 73 c4 ce 32 8e 0e e3 6a d2 62 19 56 33 |r..s..2...j.b.V3| -000003a0 95 94 e2 8f 1b 20 db 2a cc c7 61 f8 bc 47 18 11 |..... .*..a..G..| -000003b0 4e d5 d1 66 7a 33 27 e7 38 2b 4b de 01 4c df f7 |N..fz3'.8+K..L..| -000003c0 a9 c3 e9 50 0e e2 8b 94 16 30 fa 82 51 98 b4 2b |...P.....0..Q..+| -000003d0 b6 e6 83 a3 49 13 a5 95 1d 37 38 86 51 08 68 0a |....I....78.Q.h.| -000003e0 73 5e 91 e8 24 57 41 f2 15 5f 28 ca a7 f8 9a db |s^..$WA.._(.....| -000003f0 e9 fc ba 22 dc e7 25 5f 17 03 03 00 35 b3 81 2b |..."..%_....5..+| -00000400 ca e3 9c 5c db 80 ae 0b 41 f7 8c 26 af 9f 68 0a |...\....A..&..h.| -00000410 33 24 6a ea 22 b6 fc 57 37 0d 4e ab 48 29 03 d6 |3$j."..W7.N.H)..| -00000420 d4 25 5f 14 b8 74 2b 80 84 9c 99 3c 18 6c 95 0d |.%_..t+....<.l..| -00000430 7d e0 |}.| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 d7 |..+.....3.$... .| +00000060 fa 97 47 72 9a 7e 63 47 d6 62 2d dc 5d 4f 7f 9b |..Gr.~cG.b-.]O..| +00000070 aa 86 c9 ba 65 4c ae 91 82 40 38 ad 4b 46 73 14 |....eL...@8.KFs.| +00000080 03 03 00 01 01 17 03 03 00 17 27 2e 49 01 db 5e |..........'.I..^| +00000090 e1 45 48 97 54 02 31 9f ad 62 74 58 70 77 21 5b |.EH.T.1..btXpw![| +000000a0 81 17 03 03 00 42 2c 0a 8a a0 e0 40 32 b1 2f 9f |.....B,....@2./.| +000000b0 e6 13 9f fd 62 88 a7 34 bd 9a bc 64 5d 9d 17 b9 |....b..4...d]...| +000000c0 b0 f6 fc 84 ca 3f 80 0b 97 4f 7a d9 67 42 c5 0a |.....?...Oz.gB..| +000000d0 e5 18 21 e8 08 42 b4 e6 f5 7e c3 70 2c 0e d3 d8 |..!..B...~.p,...| +000000e0 15 36 37 57 1a d5 58 64 17 03 03 02 6d 07 11 32 |.67W..Xd....m..2| +000000f0 d3 1e 03 02 fb 04 35 f2 64 a8 78 c2 b2 f7 7d 5c |......5.d.x...}\| +00000100 7c 94 0c 7b 16 9a 87 7d 2f 96 de 01 74 d6 6c 6f ||..{...}/...t.lo| +00000110 ce 95 eb f0 df 6d 52 89 3a 19 ff 5b b5 f2 d8 6d |.....mR.:..[...m| +00000120 e6 10 94 f7 d9 c4 58 e8 80 db f5 30 22 b1 82 b1 |......X....0"...| +00000130 66 05 b5 d0 71 40 0f 68 83 ec 43 b5 51 c3 f8 ce |f...q@.h..C.Q...| +00000140 e9 71 4a c7 cf 57 b5 53 3f 60 99 ae 84 df 98 cc |.qJ..W.S?`......| +00000150 9f 90 d0 fc 1d 03 e9 80 72 7c 60 51 a1 89 93 6d |........r|`Q...m| +00000160 0a 57 18 c6 dc 22 82 71 be 66 87 93 dd 16 41 c8 |.W...".q.f....A.| +00000170 84 38 33 63 fc 82 db 38 63 f8 84 f7 12 08 3b 82 |.83c...8c.....;.| +00000180 18 cb c0 50 0d dd 19 25 16 88 23 97 35 56 6d 46 |...P...%..#.5VmF| +00000190 3d 75 e1 83 c3 62 e4 19 70 6c 03 f0 33 5d 94 ad |=u...b..pl..3]..| +000001a0 6d be d2 db c4 b8 ad d8 78 78 53 76 62 91 f7 cf |m.......xxSvb...| +000001b0 83 5b 1e 44 11 2f 27 6a 29 d4 ea 96 fb 40 1c 94 |.[.D./'j)....@..| +000001c0 69 c2 cc c7 90 2c 60 14 c7 d4 f2 9c f9 0e 66 1c |i....,`.......f.| +000001d0 08 76 6e 9f 3b 3a 47 8a 40 0a de 00 e4 6f 45 ca |.vn.;:G.@....oE.| +000001e0 1d 41 cc 34 5a 2c 67 78 58 34 eb 19 0c a5 0e a2 |.A.4Z,gxX4......| +000001f0 fb c1 0a 25 74 f5 ec 55 f8 c3 97 00 d0 a5 90 c5 |...%t..U........| +00000200 a1 9c aa 19 2b e6 ee c1 9d 73 a1 3c 1f fa 6a 91 |....+....s.<..j.| +00000210 2b 2d 27 be 06 f3 85 54 63 a5 d9 ac 55 73 0a e4 |+-'....Tc...Us..| +00000220 4f dc 25 a0 9f 39 c0 0e 1a 9d a7 4c bd c9 3c 64 |O.%..9.....L..>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 01 50 85 7f 0a 8b bc |..........P.....| -00000010 d1 2a 9f 69 55 c4 37 16 81 a5 46 23 cd af 5a 89 |.*.iU.7...F#..Z.| -00000020 ad a6 c0 c3 5b 7a dc e5 29 c7 47 13 01 e9 64 4b |....[z..).G...dK| -00000030 86 83 50 72 0a bc 45 72 d1 66 47 04 ad 69 01 a7 |..Pr..Er.fG..i..| -00000040 8c 49 4e 38 00 d7 d1 68 48 bd ff 2f a3 72 de 29 |.IN8...hH../.r.)| -00000050 86 56 52 7b f1 2f c4 d3 93 3a c9 bc b8 e7 c2 c0 |.VR{./...:......| -00000060 07 d8 46 81 a2 bd 36 54 79 28 91 1a 85 ab a3 64 |..F...6Ty(.....d| -00000070 6b 33 e4 15 4c 07 c9 f0 45 49 e5 4c 9e b9 48 12 |k3..L...EI.L..H.| -00000080 3b 31 12 51 72 89 7b 0f 79 07 6b 35 11 42 af a8 |;1.Qr.{.y.k5.B..| -00000090 21 40 bd 9b e9 0f 98 80 70 6e e0 b1 99 58 9e 42 |!@......pn...X.B| -000000a0 ca 0c 6f 87 2f 9b 91 10 7d fc c4 4e 57 1d 2f 79 |..o./...}..NW./y| -000000b0 18 ba 6f 6f 61 f2 e4 c0 5e 4f fd 6c 58 06 83 6e |..ooa...^O.lX..n| -000000c0 52 b1 88 69 74 e1 12 3a 81 d6 32 b3 ac 06 4e 79 |R..it..:..2...Ny| -000000d0 7a 50 1c 70 1e 63 6f 46 fa 17 b8 e2 1b b9 31 e2 |zP.p.coF......1.| -000000e0 b0 f6 2f f3 ca 39 95 57 e2 51 82 d1 bf f0 f0 a2 |../..9.W.Q......| -000000f0 3c 1b 28 cc e2 88 83 1d db f7 56 b3 dd 39 d5 cb |<.(.......V..9..| -00000100 80 28 dc d4 2e e7 c6 a1 3a be 1f 8d 9f 53 5e 31 |.(......:....S^1| -00000110 24 f1 25 36 2f f9 b1 f1 56 91 74 c8 44 6e bc c1 |$.%6/...V.t.Dn..| -00000120 a3 cf 35 03 aa cf 87 66 9f 30 e7 eb f6 ff fd b9 |..5....f.0......| -00000130 de 41 d4 b9 ef ce 99 d6 f3 e2 a6 ae 05 39 83 56 |.A...........9.V| -00000140 5b 18 b6 52 8d a0 24 5e 34 4a 12 a6 8a 66 e3 c5 |[..R..$^4J...f..| -00000150 70 92 3c f9 95 0c 59 58 65 b0 dc 17 03 03 00 59 |p.<...YXe......Y| -00000160 56 82 fd bc ab b7 55 ee 45 23 0a cc 55 f7 fb d3 |V.....U.E#..U...| -00000170 9f 75 0c 1f a1 f9 bc 3b 4f d5 4a 6b 47 14 6f 34 |.u.....;O.JkG.o4| -00000180 61 85 c4 e5 3f fb 6d 0e 49 c8 f5 66 81 6b 3a b5 |a...?.m.I..f.k:.| -00000190 14 f2 74 52 bf 8e d7 40 63 a0 45 ce 0b 69 e5 d6 |..tR...@c.E..i..| -000001a0 43 6e 01 8b fd 54 6f ab ce 03 57 c5 3f 6a 00 c1 |Cn...To...W.?j..| -000001b0 bb 79 01 ee 90 7d 50 e7 de 17 03 03 00 35 cc 30 |.y...}P......5.0| -000001c0 81 af c1 0c 4a e7 c9 d4 d2 fc 8f 0f a4 54 1c 41 |....J........T.A| -000001d0 86 c9 a9 81 64 ce 4c 56 1a 94 fc 4b f7 e8 9d 50 |....d.LV...K...P| -000001e0 33 4b b2 92 99 ee 79 43 ce 1f ea e2 14 5e 24 f1 |3K....yC.....^$.| -000001f0 72 be c8 17 03 03 00 17 45 29 9b e2 ea a1 d3 16 |r.......E)......| -00000200 8e 0c ce 85 30 a6 cd 37 b7 5a 42 0f dd 55 4d 17 |....0..7.ZB..UM.| -00000210 03 03 00 13 ef e7 22 eb 4a e8 2a b4 88 da 2e 08 |......".J.*.....| -00000220 01 95 77 ad 88 2e 53 |..w...S| +00000000 14 03 03 00 01 01 17 03 03 01 50 90 77 22 64 76 |..........P.w"dv| +00000010 a1 cd 65 49 53 cb f0 2e 21 6c 12 7c 63 e5 ff 49 |..eIS...!l.|c..I| +00000020 6c be e6 ba 70 2d 22 49 6e 5c 5b 65 46 4b 64 01 |l...p-"In\[eFKd.| +00000030 f7 1d 57 a3 5f d5 a3 39 b6 b9 79 62 b3 e2 52 35 |..W._..9..yb..R5| +00000040 95 26 d9 2b 72 39 60 23 c4 5f 7e 88 66 d4 c8 2b |.&.+r9`#._~.f..+| +00000050 2d 89 38 c8 b8 bd 73 0a 02 27 92 ab 89 8a ee 9b |-.8...s..'......| +00000060 a2 bc 9e 55 fd a0 d4 f3 02 d7 d6 4c 6c 49 ef 7e |...U.......LlI.~| +00000070 35 56 90 41 90 53 24 f5 c1 19 f0 ff a0 c8 7c 82 |5V.A.S$.......|.| +00000080 52 01 98 8c ef 87 69 09 d2 17 35 af 9c 4b 3b b3 |R.....i...5..K;.| +00000090 6c 36 70 63 48 a2 88 df cb 87 f3 40 03 a8 b0 64 |l6pcH......@...d| +000000a0 cc 66 fb cf ba b9 be 8c 67 2d 3c 99 ac 7f 93 c1 |.f......g-<.....| +000000b0 15 2e 05 ae 95 51 3d 71 d9 43 09 d7 44 cb df 67 |.....Q=q.C..D..g| +000000c0 b8 b3 33 62 c5 60 cf 22 20 e5 45 17 7c d6 74 12 |..3b.`." .E.|.t.| +000000d0 0f 6d af d0 db dd 91 ad 20 ea 4d 26 fc c4 2b bd |.m...... .M&..+.| +000000e0 ec 3d 75 c8 87 36 b2 d0 1e cc 1d 92 fd 58 5e d5 |.=u..6.......X^.| +000000f0 f7 ad c2 ed 0c b6 c6 bc 25 ff 39 75 ee cf fc 76 |........%.9u...v| +00000100 77 e0 15 2e 22 82 3b 6f 93 e4 e9 a1 5a bb 9d 78 |w...".;o....Z..x| +00000110 e2 3d 18 c8 e5 ea e3 82 52 de bf ca 32 c9 56 21 |.=......R...2.V!| +00000120 ba c9 2b 12 7d 7b f5 18 73 e5 5e 9c 1e e1 23 92 |..+.}{..s.^...#.| +00000130 ec 58 56 e5 a4 aa dc 2b 59 75 71 19 06 77 83 d7 |.XV....+Yuq..w..| +00000140 0b 28 03 e9 fa 2c 89 1a 8c 64 f0 84 b6 13 f0 02 |.(...,...d......| +00000150 22 02 33 cf c4 22 dd fb b0 76 8a 17 03 03 00 59 |".3.."...v.....Y| +00000160 9b 4c 67 95 f4 37 c9 2c b7 33 c7 78 1c e0 1b 49 |.Lg..7.,.3.x...I| +00000170 41 6f 88 2d 99 a7 e3 d3 d1 d1 f6 36 b1 2a 8e df |Ao.-.......6.*..| +00000180 11 b6 8d 04 63 c7 11 49 e2 8c 79 03 6b b8 a4 8b |....c..I..y.k...| +00000190 2a 2c 04 ab b3 e2 50 03 51 77 65 eb 3a 45 f1 ce |*,....P.Qwe.:E..| +000001a0 65 9f 9c be d6 be 7f 28 14 6a 61 37 55 94 8f a7 |e......(.ja7U...| +000001b0 23 2f bc fc bb aa 89 47 76 17 03 03 00 35 f5 be |#/.....Gv....5..| +000001c0 e6 33 9b 48 97 74 b0 ad a4 fc 78 fe 20 ab cd fa |.3.H.t....x. ...| +000001d0 48 ad 8c 55 c3 46 b8 2e d6 ea f0 79 e3 a5 cf 29 |H..U.F.....y...)| +000001e0 56 19 ab 95 c4 7f fd 89 41 f7 a3 6f e4 19 2f 83 |V.......A..o../.| +000001f0 8c 3e 5d 17 03 03 00 17 74 24 c5 8d 30 40 0a 12 |.>].....t$..0@..| +00000200 57 37 d0 27 30 3e 24 ea 81 ca c7 0a f5 12 cf 17 |W7.'0>$.........| +00000210 03 03 00 13 ff 20 1a 76 60 da a1 15 22 16 10 8a |..... .v`..."...| +00000220 9f e1 ee 5d 62 a2 cc |...]b..| diff --git a/src/crypto/tls/testdata/Client-TLSv13-ClientCert-RSA-ECDSA b/src/crypto/tls/testdata/Client-TLSv13-ClientCert-RSA-ECDSA index e159d3e537..10c83c4828 100644 --- a/src/crypto/tls/testdata/Client-TLSv13-ClientCert-RSA-ECDSA +++ b/src/crypto/tls/testdata/Client-TLSv13-ClientCert-RSA-ECDSA @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,131 +7,130 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 12 8c 45 11 2d |....z...v....E.-| -00000010 22 19 db e3 07 f4 31 70 a6 9d f5 b2 6a df 8f b5 |".....1p....j...| -00000020 57 6e a1 80 75 6b 6b 77 53 cd b4 20 00 00 00 00 |Wn..ukkwS.. ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 af 7e fd 3d 23 |....z...v...~.=#| +00000010 96 b6 46 26 9c 09 13 f6 80 4f c9 d2 52 d9 df 52 |..F&.....O..R..R| +00000020 0b 7c da 61 52 ba 99 1b 32 5a 0c 20 00 00 00 00 |.|.aR...2Z. ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 03 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 d9 |..+.....3.$... .| -00000060 7a 4f 73 11 d0 32 a9 32 96 d4 d6 5d 93 25 4a 83 |zOs..2.2...].%J.| -00000070 26 6d 4d 30 02 8e ed 8e 65 0a 13 27 f3 53 5b 14 |&mM0....e..'.S[.| -00000080 03 03 00 01 01 17 03 03 00 17 85 46 a7 e1 6f a9 |...........F..o.| -00000090 d5 ea 00 e8 d2 7c 10 b9 e2 b1 98 9c eb a3 54 02 |.....|........T.| -000000a0 61 17 03 03 00 42 ca 37 9a 89 50 e8 5d b2 6d 21 |a....B.7..P.].m!| -000000b0 56 68 10 a1 47 76 16 87 f3 50 f0 5f d1 50 3a 03 |Vh..Gv...P._.P:.| -000000c0 1e c7 27 84 d6 82 94 35 92 34 d7 54 f4 9b 30 8d |..'....5.4.T..0.| -000000d0 e9 9b 5a 04 88 4c 27 b3 3a 32 37 9e c2 a5 8a 19 |..Z..L'.:27.....| -000000e0 d3 71 30 7b ba 9f d3 7f 17 03 03 02 22 4e e7 88 |.q0{........"N..| -000000f0 d6 55 13 2b c9 db 93 db 9f 6b ca 4e a7 91 a1 30 |.U.+.....k.N...0| -00000100 04 c7 e7 fc 5d f8 28 0d b0 cd 73 b2 4b 59 e5 89 |....].(...s.KY..| -00000110 68 f8 bb 47 1f 73 a2 d7 fe 75 73 8d a4 02 e7 22 |h..G.s...us...."| -00000120 80 c0 aa d1 4c de f8 89 1a d2 12 86 35 7f cf 40 |....L.......5..@| -00000130 e1 4f 47 f2 69 51 7c a7 7c 23 32 ed a6 53 8a 4a |.OG.iQ|.|#2..S.J| -00000140 47 86 e7 0c c5 5f 34 9f 91 eb d2 c1 bd 65 1e 7c |G...._4......e.|| -00000150 6e ec 18 70 21 d9 95 dc fe 44 cf d7 3f 58 fa e1 |n..p!....D..?X..| -00000160 43 df 2e 44 7f a0 5f 48 e3 02 2c fd 18 f2 23 25 |C..D.._H..,...#%| -00000170 a5 fc d1 23 2c 81 16 c3 8e 58 47 51 bf 0e c3 57 |...#,....XGQ...W| -00000180 54 bf d1 8e f6 82 91 ce 5f 24 2d fd e5 80 52 c6 |T......._$-...R.| -00000190 db b9 a1 3a 0d 80 25 98 17 ed cc 81 36 9f 85 31 |...:..%.....6..1| -000001a0 11 25 65 36 50 ed 8e c7 6f b5 28 22 4c f3 93 94 |.%e6P...o.("L...| -000001b0 61 0d c1 10 19 37 b2 3b ec 41 3c 95 bc ae b5 8d |a....7.;.A<.....| -000001c0 95 87 39 bd 41 a7 cf 3e b2 83 7c 12 fd 37 e4 6b |..9.A..>..|..7.k| -000001d0 0d c7 f9 7f f5 02 74 e0 37 c2 45 68 ab 84 f5 65 |......t.7.Eh...e| -000001e0 78 4f 64 c5 d2 de 15 2b 1b d9 06 7a d5 f8 34 13 |xOd....+...z..4.| -000001f0 19 54 2e 7a 85 04 d0 90 51 78 2a e2 4b ca 11 b9 |.T.z....Qx*.K...| -00000200 7d 38 bd 5f be 5d d5 da 36 41 49 95 39 8e 1e df |}8._.]..6AI.9...| -00000210 a9 3b cc 18 8f 26 bd 37 97 f1 49 42 d4 e9 48 91 |.;...&.7..IB..H.| -00000220 21 dc 70 9b 21 7a 24 13 8d 8e 7a d6 5f 11 2a ab |!.p.!z$...z._.*.| -00000230 73 9a cf cb af bf 3e 19 46 81 48 0a 17 b1 f1 24 |s.....>.F.H....$| -00000240 a5 aa 60 91 fa d0 9b e4 95 28 7a a2 bf 2b ac 18 |..`......(z..+..| -00000250 5f 1d 98 b8 e8 1a b4 58 fe 66 25 d2 0a 8d ad 7f |_......X.f%.....| -00000260 d2 46 95 8d d8 42 de 94 12 88 a6 30 80 14 ce 7c |.F...B.....0...|| -00000270 ef 20 31 cd a3 e7 6b 29 b7 74 aa 62 c4 4c d5 52 |. 1...k).t.b.L.R| -00000280 15 8e 7b da 51 60 24 ca 8d 65 9b 9b d8 2a df 1c |..{.Q`$..e...*..| -00000290 28 63 28 e7 20 07 f2 b4 99 d8 d6 2a d2 d3 ae 28 |(c(. ......*...(| -000002a0 5e c5 12 25 fa b5 1c 31 1c 6d eb 1f d9 92 2b cf |^..%...1.m....+.| -000002b0 de fa d9 7c 39 69 0b a3 a3 05 aa 11 7d 41 3f d7 |...|9i......}A?.| -000002c0 17 48 41 a7 3c 4b 42 93 46 26 da de 47 fe f8 76 |.HA.B ]^..| +000003f0 a3 91 |..| >>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 02 11 67 1a 6d 9c e6 |...........g.m..| -00000010 fd 73 aa 96 0b 7a 9b 1a 28 fd e8 5c 7b a2 65 91 |.s...z..(..\{.e.| -00000020 e8 6a 96 48 6e 56 da 2d 8f 79 d3 d9 bb db f1 26 |.j.HnV.-.y.....&| -00000030 27 99 e5 d2 2e b2 20 ee af e5 b5 8b 6d a3 ea a3 |'..... .....m...| -00000040 2a 6a a5 5e 28 61 04 10 d3 01 62 bd 16 f3 2b 84 |*j.^(a....b...+.| -00000050 1b ca 26 67 62 4b b6 24 df 20 9a 06 57 ed 21 37 |..&gbK.$. ..W.!7| -00000060 a1 0c e4 e1 cd c8 39 e6 5c bc 78 46 8c fb ad f1 |......9.\.xF....| -00000070 55 15 bc d5 f5 21 2b b1 b6 03 5c 14 0f cf 8d 79 |U....!+...\....y| -00000080 ad 64 b6 fd de 92 a9 51 f5 29 f3 d3 14 22 9a d5 |.d.....Q.)..."..| -00000090 70 37 87 19 dd c3 d3 7b 79 ce 80 c3 f8 02 ea dc |p7.....{y.......| -000000a0 86 f8 af d2 fe 0d 49 a5 ba 6d ec 42 cf 28 21 ed |......I..m.B.(!.| -000000b0 5f 23 90 3b 83 d8 c4 73 fd 18 57 7f b1 81 9f 88 |_#.;...s..W.....| -000000c0 19 3c bc 4b 24 4c 22 2f 07 f3 07 29 e8 6c 30 8e |.<.K$L"/...).l0.| -000000d0 12 b5 bc 2f 2f c0 80 fb a1 f0 73 0c 22 ea 4f 24 |...//.....s.".O$| -000000e0 3b 37 a5 68 65 12 42 0b 6b 7f eb ff 59 eb 92 de |;7.he.B.k...Y...| -000000f0 96 d9 f7 23 95 b1 b5 93 61 8b a5 bd c2 bf b0 86 |...#....a.......| -00000100 af 54 91 21 38 b1 7e 4c 05 82 71 70 30 a0 19 ac |.T.!8.~L..qp0...| -00000110 10 63 fa 6a 05 95 14 18 27 cc f3 2e 2d 78 93 35 |.c.j....'...-x.5| -00000120 65 c9 4e ec 3a 10 9e 75 60 21 18 71 f9 b5 95 37 |e.N.:..u`!.q...7| -00000130 af 29 a1 51 a9 e5 a9 b5 5b a5 81 72 65 6c eb f2 |.).Q....[..rel..| -00000140 2e 78 85 04 b8 c0 3c e6 3a 49 0e 28 fa 0a f8 73 |.x....<.:I.(...s| -00000150 16 da ba 60 db ed ad de 7d 5b 10 15 03 5b 79 d0 |...`....}[...[y.| -00000160 d7 da 91 ff 12 76 37 94 43 ad f4 f8 b9 39 23 e6 |.....v7.C....9#.| -00000170 7c ed 92 d9 92 c4 2b bd 8c 7a fd ab 0d 17 0b b5 ||.....+..z......| -00000180 5b 8a 5f a6 9b 19 04 88 37 75 54 a9 35 15 ff df |[._.....7uT.5...| -00000190 42 8b aa fb 9f 30 28 ef bb 74 95 a5 af 44 c2 70 |B....0(..t...D.p| -000001a0 55 c7 cc f5 37 b9 34 c6 dd fb 9b c5 70 fa 0f ed |U...7.4.....p...| -000001b0 45 54 38 02 34 0a 09 df 4c bd 07 78 ce 66 c7 0d |ET8.4...L..x.f..| -000001c0 57 94 06 97 6d b3 ec 90 70 81 37 23 77 b7 2f cb |W...m...p.7#w./.| -000001d0 c5 af 12 bd a7 c5 81 87 92 9e 9b ed 78 6d bf 63 |............xm.c| -000001e0 01 aa d7 f3 50 f2 f7 c6 af a9 7f 73 d8 fb 17 27 |....P......s...'| -000001f0 c3 33 8d 2b 2c ad 10 4d 36 5c 49 e8 19 06 34 45 |.3.+,..M6\I...4E| -00000200 00 eb 1f c1 09 c8 19 06 55 91 52 df cd db f2 d5 |........U.R.....| -00000210 22 2a af 92 cb 18 9f 96 2a 12 d5 ea 17 03 03 00 |"*......*.......| -00000220 99 01 94 eb cc e4 e7 4f 90 c1 9b 85 c8 1f 73 f0 |.......O......s.| -00000230 50 52 7d 62 50 f9 90 49 59 e8 31 a0 ea 3b 42 2c |PR}bP..IY.1..;B,| -00000240 2c dd e8 9c 42 d5 5f 50 84 b9 78 0a 5e 73 55 d9 |,...B._P..x.^sU.| -00000250 21 39 e5 bc c7 88 04 1d b8 d3 46 b3 a0 b6 07 60 |!9........F....`| -00000260 4a 39 1a 39 cc e3 22 2f de 30 16 71 54 1d c0 69 |J9.9.."/.0.qT..i| -00000270 ea 73 81 bf 17 7d 82 dc 33 cd 1f c2 e8 eb 67 61 |.s...}..3.....ga| -00000280 60 1e dd 2c 56 45 d4 49 fb 7f 21 dd a8 23 8c 13 |`..,VE.I..!..#..| -00000290 d3 1b c5 c1 3b 08 e4 21 ac 35 eb d6 44 a6 48 c9 |....;..!.5..D.H.| -000002a0 e2 ae 04 a8 36 fb e8 f6 2e 91 90 da 5a ae 18 3b |....6.......Z..;| -000002b0 a7 14 94 ed b7 f4 8a cc 74 be 17 03 03 00 35 a2 |........t.....5.| -000002c0 9f 3f bd d0 7c 1e ac 4e c9 7e 9d ee 9a 89 61 55 |.?..|..N.~....aU| -000002d0 38 41 8c d9 e1 56 35 bd 0b 6e ad 77 0e 0d 08 df |8A...V5..n.w....| -000002e0 73 67 36 28 e0 9b 96 ba c0 38 de 95 31 53 49 9c |sg6(.....8..1SI.| -000002f0 db 16 c2 90 17 03 03 00 17 6f cc cb 4e ac ef a0 |.........o..N...| -00000300 48 75 94 28 c5 8d 06 33 28 94 11 84 25 9f 26 a6 |Hu.(...3(...%.&.| -00000310 17 03 03 00 13 d2 ce 1b 90 04 b1 32 38 db 0d b5 |...........28...| -00000320 3c e8 e3 34 bc c3 d1 33 |<..4...3| +00000000 14 03 03 00 01 01 17 03 03 02 11 e0 62 97 8a 4d |............b..M| +00000010 01 cf 8f e2 d2 a8 0d d4 9a fc f5 b2 d7 82 2b 7a |..............+z| +00000020 8c e7 ce 2a 99 3b 41 a2 a3 ca c4 9d 15 79 7f 2f |...*.;A......y./| +00000030 04 7a 18 e4 5b b6 01 d6 b5 03 d2 08 15 41 c7 18 |.z..[........A..| +00000040 8a 66 78 05 ed 33 19 8e 93 9e c3 ff 4a 92 bb 7b |.fx..3......J..{| +00000050 72 e5 81 a6 2a 7f b3 e1 72 67 01 7a 95 f4 3f bc |r...*...rg.z..?.| +00000060 cd e4 bc 45 74 9b 4c 1c 69 68 d0 75 89 9f d5 d0 |...Et.L.ih.u....| +00000070 de 59 d4 1c 47 cc 5e 2e dd bd f9 1f e4 16 c9 c8 |.Y..G.^.........| +00000080 9b 4e 07 6b 7a 12 e7 13 71 ae c1 26 48 32 d6 4e |.N.kz...q..&H2.N| +00000090 8a 15 c2 a0 91 59 9d 21 0d 28 d2 94 3f e9 fc 74 |.....Y.!.(..?..t| +000000a0 98 5b e5 be 50 ad 10 7d d9 a1 da 41 59 15 b3 85 |.[..P..}...AY...| +000000b0 2d 7b 81 b3 ae fb db 4c 00 24 31 57 f2 54 b7 f7 |-{.....L.$1W.T..| +000000c0 64 cc 73 23 bc 6a 93 e0 91 a7 5e 1b 63 f1 59 89 |d.s#.j....^.c.Y.| +000000d0 a9 d9 7b 88 35 17 7a 4d b9 66 d0 a5 f2 d6 79 ed |..{.5.zM.f....y.| +000000e0 c1 3a e7 98 88 96 e7 2f 31 66 bf 16 34 e2 fd 5f |.:...../1f..4.._| +000000f0 fb 0f fb 9a aa ba 78 d8 6a c9 72 d6 39 32 3a 99 |......x.j.r.92:.| +00000100 a2 11 8a 32 79 cf 18 d9 22 da 40 31 3e d3 c8 17 |...2y...".@1>...| +00000110 c4 1f e2 4f c8 7f b9 2f 83 d7 5e 59 48 d3 9b b9 |...O.../..^YH...| +00000120 68 9c c2 e4 45 c2 a3 26 91 cd 3a 26 47 c4 b8 7f |h...E..&..:&G...| +00000130 8f 91 c0 06 b5 6e 5e b4 65 05 42 ea 48 9e 40 bc |.....n^.e.B.H.@.| +00000140 0c 04 22 86 6a 54 6c 27 c3 77 b4 b9 22 99 6a f0 |..".jTl'.w..".j.| +00000150 91 bc 41 ca 24 41 52 fd e2 18 0f 64 13 7e a3 6b |..A.$AR....d.~.k| +00000160 ab 27 1e 15 87 0d 7f 71 1e 29 16 f9 af 81 ec bc |.'.....q.)......| +00000170 28 0b 45 bd 76 fd ff 0e fb 8d c5 0c aa ef a5 17 |(.E.v...........| +00000180 55 49 a6 3d 74 5c 8d 77 60 99 a1 8f aa a9 eb 0f |UI.=t\.w`.......| +00000190 75 1a 55 21 3a 96 da 08 a2 cd ad 11 78 15 6a ce |u.U!:.......x.j.| +000001a0 ef f6 fb 8b a3 dd fd ad 2d a5 2d 59 25 37 fe 53 |........-.-Y%7.S| +000001b0 48 90 fa 9a d3 3c 09 69 47 d3 d1 e4 48 30 fd df |H....<.iG...H0..| +000001c0 15 d7 64 ff ca 91 46 c2 36 82 30 ae 4e 75 12 be |..d...F.6.0.Nu..| +000001d0 58 5d da 63 da bd dc be 81 be ad 37 87 ea 0a 26 |X].c.......7...&| +000001e0 31 cf 1b 1e 7d de a8 04 e3 b8 e5 65 5a 21 db b6 |1...}......eZ!..| +000001f0 2b 7c e7 23 7c 2b e1 89 3f 28 27 97 dd 1c c6 00 |+|.#|+..?('.....| +00000200 0e e4 05 68 0f 9a 8a 1d e6 bd bd aa 1f 46 6e a2 |...h.........Fn.| +00000210 d9 69 91 9b e7 e3 6c 39 33 77 b8 76 17 03 03 00 |.i....l93w.v....| +00000220 99 c9 3e 7e 78 3b 91 65 35 cb 19 44 92 f7 77 f5 |..>~x;.e5..D..w.| +00000230 60 3c 19 2a 97 c5 a0 92 b2 28 e2 44 94 ec 1b 3d |`<.*.....(.D...=| +00000240 f8 1a c1 65 eb 41 3f 61 f1 db 42 1a 0d b8 32 12 |...e.A?a..B...2.| +00000250 f6 1b 83 be 37 d8 fe 78 bd 5b 66 d1 f2 6c 3e e3 |....7..x.[f..l>.| +00000260 8a 0f 3a 28 57 71 1a 78 ab 2a b5 5f ad a3 6e 2c |..:(Wq.x.*._..n,| +00000270 a3 d9 3a 0b d0 99 95 d6 dc 8e 7a f0 b6 e4 cb 46 |..:.......z....F| +00000280 ab cb eb cf ec 86 b3 fe e6 e6 73 2c a2 64 d2 d5 |..........s,.d..| +00000290 9c 8c 25 39 62 07 51 93 12 92 2b e3 4b 2e 3d f5 |..%9b.Q...+.K.=.| +000002a0 f1 d4 22 69 c3 90 cf 91 35 2f e4 60 35 44 6f bf |.."i....5/.`5Do.| +000002b0 7a 75 3d fb 70 bd 20 05 a8 f8 17 03 03 00 35 6e |zu=.p. .......5n| +000002c0 09 00 fa 13 8f d4 17 40 ee 9e 5f 8a 56 ba 7c 69 |.......@.._.V.|i| +000002d0 05 ee 65 8e fd 9c 62 7f f9 af 04 c7 46 20 07 da |..e...b.....F ..| +000002e0 bc 79 f8 cc 53 c6 fc 47 b5 54 9c fb 4d a3 cf 56 |.y..S..G.T..M..V| +000002f0 a4 57 c5 aa 17 03 03 00 17 d6 ea 39 50 a5 8e 67 |.W.........9P..g| +00000300 b9 79 76 17 77 86 a8 58 fb 86 03 74 1a e4 12 37 |.yv.w..X...t...7| +00000310 17 03 03 00 13 e7 07 59 c3 d0 27 b3 d8 e8 a3 7b |.......Y..'....{| +00000320 df e8 17 08 78 4e 9a 6b |....xN.k| diff --git a/src/crypto/tls/testdata/Client-TLSv13-ClientCert-RSA-RSAPSS b/src/crypto/tls/testdata/Client-TLSv13-ClientCert-RSA-RSAPSS index a306d4bb53..4892e2b555 100644 --- a/src/crypto/tls/testdata/Client-TLSv13-ClientCert-RSA-RSAPSS +++ b/src/crypto/tls/testdata/Client-TLSv13-ClientCert-RSA-RSAPSS @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,140 +7,139 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 59 1d 08 4c 9a |....z...v..Y..L.| -00000010 08 52 d3 3b 7b 4c 3e d3 23 53 e3 17 09 07 52 8b |.R.;{L>.#S....R.| -00000020 e5 c9 55 c3 c1 0d db 83 aa ba 4e 20 00 00 00 00 |..U.......N ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 56 a4 21 f9 b3 |....z...v..V.!..| +00000010 ff ed 23 dc a7 eb cd 4b f3 0a a9 12 a4 52 84 04 |..#....K.....R..| +00000020 77 59 23 09 26 6c 49 42 9f 68 b2 20 00 00 00 00 |wY#.&lIB.h. ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 03 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 d8 |..+.....3.$... .| -00000060 b2 05 15 9a 39 db 4f d6 d1 d1 e5 6c f0 8d 6f b1 |....9.O....l..o.| -00000070 54 d6 ff f2 48 2b a7 14 2a f6 4e cd 28 41 61 14 |T...H+..*.N.(Aa.| -00000080 03 03 00 01 01 17 03 03 00 17 c9 09 91 34 14 6c |.............4.l| -00000090 de cb 9f d5 0d 03 5e 58 69 4e 61 75 8a 4b a9 35 |......^XiNau.K.5| -000000a0 51 17 03 03 00 20 4f 41 5c 1d f6 73 a0 ca a7 a9 |Q.... OA\..s....| -000000b0 4c b9 34 ee 7c c0 68 eb e6 28 9f 1f 7f bf 6e 17 |L.4.|.h..(....n.| -000000c0 17 cf 6c cb ad 72 17 03 03 02 7a 1f d1 c8 b3 7a |..l..r....z....z| -000000d0 7b 7b c9 fa c0 5a cb e9 18 64 b9 ef 49 8f 2d da |{{...Z...d..I.-.| -000000e0 cd 97 44 ec dc 2e 32 d8 39 e3 40 78 97 ef 01 69 |..D...2.9.@x...i| -000000f0 0a b6 fc 31 d4 53 85 0c c1 51 3a a7 02 e3 af ae |...1.S...Q:.....| -00000100 20 4b 44 13 c2 d1 4d de b3 5d 24 3e 64 36 78 fd | KD...M..]$>d6x.| -00000110 6f 36 79 3e c2 ef 48 27 e0 e2 a3 86 61 22 14 61 |o6y>..H'....a".a| -00000120 88 df 08 86 ed af 2a d6 2f b6 9d 30 f7 6e 28 7a |......*./..0.n(z| -00000130 44 2c b1 32 cc 4b 9b 6f 67 69 83 cc 7b 59 64 16 |D,.2.K.ogi..{Yd.| -00000140 76 43 b5 0c 6f 5e 5c f0 17 e6 b4 32 0d 2d 01 91 |vC..o^\....2.-..| -00000150 7c 00 af bf 99 fb 0b 97 8e fa 1f cc 10 4c cb 73 ||............L.s| -00000160 81 f8 b3 7c 2e 8d ba c5 95 f1 7b 19 f2 19 48 c5 |...|......{...H.| -00000170 ba a0 ba fd b3 29 42 1d 3a e2 f1 8f 13 c5 38 66 |.....)B.:.....8f| -00000180 be 60 e9 a3 e4 b7 c3 e1 3d cf c3 62 85 4f f3 29 |.`......=..b.O.)| -00000190 11 e4 72 cd c5 90 9c 45 36 11 67 8a 09 a2 f8 b1 |..r....E6.g.....| -000001a0 48 e3 26 c5 d8 5d 8e b4 c0 af a6 e8 93 2f e8 99 |H.&..]......./..| -000001b0 75 07 56 82 ed 58 21 2a d8 4f dc 60 41 2f a9 49 |u.V..X!*.O.`A/.I| -000001c0 aa 73 68 22 b7 73 5c 14 a4 46 b2 de 68 a8 f1 4a |.sh".s\..F..h..J| -000001d0 97 db 0d cd 29 26 d7 28 d2 d0 0c 81 43 c7 ae 0a |....)&.(....C...| -000001e0 c5 35 fe 55 da 7a ea 0f 78 95 f8 ed 02 84 de 5b |.5.U.z..x......[| -000001f0 3e ed e2 d2 25 75 a8 ec 7a 5a a9 35 eb d5 b9 08 |>...%u..zZ.5....| -00000200 36 f9 fd 1a 18 27 d0 bf 07 46 bb 8b a8 52 bf 8b |6....'...F...R..| -00000210 d6 c5 3f 16 11 f9 ea 85 e9 f9 5a 68 17 20 2b 92 |..?.......Zh. +.| -00000220 0c 58 55 b8 9a 66 6b 80 bb be 24 41 b4 2f 76 9a |.XU..fk...$A./v.| -00000230 c5 29 c5 86 e0 d3 1f 63 96 95 3f f2 67 7b 66 d5 |.).....c..?.g{f.| -00000240 79 cc 47 80 8e 13 1a 29 ee 9a 97 3f 79 e0 be 20 |y.G....)...?y.. | -00000250 c8 a1 6e 4a 85 91 7d 93 86 f4 0d 4d 5e e4 52 a9 |..nJ..}....M^.R.| -00000260 a9 17 8b ab fd aa dc fd a2 4b d3 d9 db 41 95 f9 |.........K...A..| -00000270 e3 31 a4 2d 53 43 a2 b9 6a 1e f8 5b f4 0d 55 70 |.1.-SC..j..[..Up| -00000280 f0 18 70 82 8e f3 53 3c 81 ac 13 2a b9 d0 33 dc |..p...S<...*..3.| -00000290 b9 8d b9 41 6a 4d 87 c6 70 f2 04 2c 60 01 5b 5d |...AjM..p..,`.[]| -000002a0 76 91 19 af 2d 48 82 69 59 15 c4 42 40 6a 38 3a |v...-H.iY..B@j8:| -000002b0 a2 db 21 b6 6d b3 e7 50 91 7c 8f f0 97 8f 7c 56 |..!.m..P.|....|V| -000002c0 8b 4d f5 d3 7a 81 b5 4d c5 33 ba 14 36 6f be ea |.M..z..M.3..6o..| -000002d0 95 1d d2 3d 29 a8 72 34 35 38 56 4c 65 47 b5 8b |...=).r458VLeG..| -000002e0 cb 43 9e 8d bd 1b 6b c3 2e 5b 9f f5 5a 60 e6 c9 |.C....k..[..Z`..| -000002f0 6b c4 85 5c ac 55 fa 67 47 15 45 b4 e9 49 dd 0a |k..\.U.gG.E..I..| -00000300 aa be 5f d3 ec c9 88 71 52 eb 91 e9 38 e4 14 15 |.._....qR...8...| -00000310 f3 ef 37 27 9c b1 c1 66 bb 40 c7 01 b5 8e f2 45 |..7'...f.@.....E| -00000320 fb be c1 6a 73 a4 48 cf e6 59 00 0b 37 56 a2 07 |...js.H..Y..7V..| -00000330 41 29 56 2e 11 28 88 6a 37 df 46 33 a8 3d 14 3a |A)V..(.j7.F3.=.:| -00000340 c7 5a be 5e dc 17 03 03 00 99 15 b7 d6 a9 5d ae |.Z.^..........].| -00000350 e0 61 a0 09 69 01 c3 61 63 eb 94 9c e3 e3 78 e4 |.a..i..ac.....x.| -00000360 b9 00 c3 db df cd 72 1b 86 2f 34 4f d0 da 63 c6 |......r../4O..c.| -00000370 a9 b3 55 57 81 76 f1 fe 2b c0 85 6e 9b 6a c7 14 |..UW.v..+..n.j..| -00000380 4c b0 48 fb a9 6d 14 f3 44 d1 30 9d ec c4 fc ac |L.H..m..D.0.....| -00000390 0a 79 c3 89 55 c8 92 9f b6 bd 0b aa 85 bd 81 9b |.y..U...........| -000003a0 8e 94 b4 27 32 6f 26 da 40 27 6e 1f d9 7e 5e 16 |...'2o&.@'n..~^.| -000003b0 b1 10 be 7a 9e 3a 80 ed 89 2e b9 9b b4 a9 70 11 |...z.:........p.| -000003c0 61 46 c3 e9 b3 5e c0 b4 17 71 4a 28 44 1a 27 a4 |aF...^...qJ(D.'.| -000003d0 20 19 47 70 2c 06 66 6a 19 a4 cb 67 2a 28 3d 4b | .Gp,.fj...g*(=K| -000003e0 50 02 c5 17 03 03 00 35 5b 49 ab 32 a4 7e 3c 35 |P......5[I.2.~<5| -000003f0 a3 47 b6 57 da 5e 4a c8 5b cc 5e 71 35 32 63 7f |.G.W.^J.[.^q52c.| -00000400 13 ff c2 d2 db 31 d5 22 3f 6d 26 c3 d3 70 40 4d |.....1."?m&..p@M| -00000410 e5 2a cc 0b 51 a6 61 9e a9 69 22 bf fb |.*..Q.a..i"..| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 e0 |..+.....3.$... .| +00000060 70 9a 3d 69 69 1f 8f de d4 c8 7c dc 65 53 9a c6 |p.=ii.....|.eS..| +00000070 77 c2 c4 21 1b 06 2d c4 4f 24 61 52 5b 00 69 14 |w..!..-.O$aR[.i.| +00000080 03 03 00 01 01 17 03 03 00 17 96 99 40 9f d8 9d |............@...| +00000090 70 f0 cf f0 86 3e 7f 4a 3a 8a a4 63 6e e1 7f 24 |p....>.J:..cn..$| +000000a0 f4 17 03 03 00 20 72 bb 5a aa 0e 2e d9 cc 38 0c |..... r.Z.....8.| +000000b0 c8 b9 88 08 6f 19 d8 38 14 14 d7 97 42 6c 45 43 |....o..8....BlEC| +000000c0 51 dc 2b f6 02 e2 17 03 03 02 7a 8d 04 2f 64 c0 |Q.+.......z../d.| +000000d0 e2 7b b5 20 9d 04 69 5e 88 82 aa f3 c6 b2 8d 6c |.{. ..i^.......l| +000000e0 41 08 c3 b1 0c 7d d1 5f d6 e6 b7 1d c0 ad 2b 0d |A....}._......+.| +000000f0 02 c5 f7 6d a0 87 91 07 20 d3 d4 2e 5a 7d 5e 29 |...m.... ...Z}^)| +00000100 37 2b ac 5f d6 cb eb e9 99 a7 05 f7 e7 ea 9c 99 |7+._............| +00000110 cd 33 25 f8 45 95 43 f4 7a 59 2a 91 8c e2 ac 84 |.3%.E.C.zY*.....| +00000120 ba 99 ef d0 d7 ea 9b db 31 b0 27 0c 81 3b b2 83 |........1.'..;..| +00000130 20 c4 8b 7e 05 ac c6 82 e9 56 5a a2 b6 7c c7 33 | ..~.....VZ..|.3| +00000140 a8 31 2f ad 60 be ec c3 2d c0 a8 b4 40 50 98 ea |.1/.`...-...@P..| +00000150 83 d1 cc a8 34 20 11 7c 2e f7 7c ca d8 27 03 a2 |....4 .|..|..'..| +00000160 58 86 e8 e6 41 46 07 18 c7 a7 61 f9 cc 2f 7d 1e |X...AF....a../}.| +00000170 bb 34 7c 6e cb b3 9c 03 2f b0 dd e9 a1 32 13 10 |.4|n..../....2..| +00000180 85 1d fa a6 bf c7 4d ec 94 8f 26 07 94 34 b3 5f |......M...&..4._| +00000190 b8 e4 da 6f 3d 5b 0a 61 8f 44 58 10 1a 4c f3 bc |...o=[.a.DX..L..| +000001a0 ff c7 8f 09 0a e4 1b 35 e8 a9 dc 9c 14 86 e5 67 |.......5.......g| +000001b0 7e 96 e9 79 8d b2 d7 34 a0 7f 43 07 11 f1 03 68 |~..y...4..C....h| +000001c0 95 5e f5 fa e7 8f c8 d6 5b 23 c4 84 e4 c5 40 58 |.^......[#....@X| +000001d0 80 4a ac b7 a7 07 21 93 c1 a9 ad 9a 89 f7 f3 9e |.J....!.........| +000001e0 bb 7d 2a 00 d0 e0 66 9d f7 86 4a ba b1 c9 1e 3b |.}*...f...J....;| +000001f0 f1 c6 6e c1 9c 09 85 38 9d fa 5a b9 ca bb a4 f5 |..n....8..Z.....| +00000200 9e 3f ba d4 31 7d aa d7 f9 bf 83 05 5c 1f 61 18 |.?..1}......\.a.| +00000210 d4 5e 16 98 c6 92 7b bd 12 96 18 c7 33 75 ad 08 |.^....{.....3u..| +00000220 d1 0b 47 4c c8 73 3e 68 fb 53 ff e0 1a 10 6c 5a |..GL.s>h.S....lZ| +00000230 7f 9d 92 32 2f c2 2d 95 7d c6 ef 18 9b 44 a1 bc |...2/.-.}....D..| +00000240 6a f5 88 79 e1 00 a3 14 8f 66 07 03 16 2a 53 80 |j..y.....f...*S.| +00000250 9b 26 80 0d 0b 5e 0c c6 c9 fa a1 3b c9 a6 91 1f |.&...^.....;....| +00000260 bd fb 79 24 ab 93 e4 25 d1 a6 41 8b 9e a9 06 0f |..y$...%..A.....| +00000270 80 2e 4e 8c 20 2c 1e a8 7e 63 7a 4f b8 90 c3 56 |..N. ,..~czO...V| +00000280 a3 9e 63 2a 8b 85 9e ef 66 f5 16 be 79 c3 9b 47 |..c*....f...y..G| +00000290 dc 1c 75 0b 30 3c db 32 e8 ec 33 f9 9f 26 3d 56 |..u.0<.2..3..&=V| +000002a0 36 e9 ea 83 57 c4 59 ac 73 db 04 5a 1d 38 9b e4 |6...W.Y.s..Z.8..| +000002b0 47 50 f8 92 92 7f c9 09 4f f4 9c ab 3e 03 df 80 |GP......O...>...| +000002c0 cc 5b 50 0b 06 ef 8c 59 d2 f6 f3 a4 16 e7 0f 90 |.[P....Y........| +000002d0 c8 79 95 0a 39 0f 33 69 31 29 1c 30 77 72 58 b5 |.y..9.3i1).0wrX.| +000002e0 cf 0e 4c 30 fc 0a 01 93 b1 20 21 34 2a ce 28 8d |..L0..... !4*.(.| +000002f0 57 71 3e c9 b1 51 c9 4f e5 e4 09 0b 1e 32 52 4e |Wq>..Q.O.....2RN| +00000300 d0 be f2 a2 90 75 f4 a8 61 66 43 84 74 4e bb 28 |.....u..afC.tN.(| +00000310 7b ea 68 96 92 6d 4b 8c af 50 13 84 92 b9 6b 48 |{.h..mK..P....kH| +00000320 60 1c 60 62 28 a2 37 d1 1c 86 d4 60 27 a6 5b 6d |`.`b(.7....`'.[m| +00000330 88 d7 56 21 b7 86 f5 b6 34 f9 55 cf 47 f8 4f 90 |..V!....4.U.G.O.| +00000340 78 5c 56 52 97 17 03 03 00 99 35 71 51 6f 73 ba |x\VR......5qQos.| +00000350 76 60 e1 4a 5f ec ce 52 b6 91 58 3d 0c ea e6 58 |v`.J_..R..X=...X| +00000360 7e ee da 1e aa df bb 8e c9 89 ce 43 bd e7 34 9b |~..........C..4.| +00000370 b8 4b dd 50 73 0c f7 e5 15 e0 a1 c3 bd 07 08 62 |.K.Ps..........b| +00000380 a2 d5 2e 9f 46 f7 4d 9c ae ad be 22 89 0f b0 3e |....F.M...."...>| +00000390 82 1c 80 60 38 39 4f 06 f9 fc 4c f8 02 bf b3 5a |...`89O...L....Z| +000003a0 25 22 f4 62 61 ba eb 78 b2 40 68 ea 99 ef 95 90 |%".ba..x.@h.....| +000003b0 b1 b5 25 17 81 43 5c 15 bd a9 1f e8 0f b9 91 be |..%..C\.........| +000003c0 f1 47 91 99 ec 50 3b fa c2 06 fc 89 09 a3 d7 b3 |.G...P;.........| +000003d0 ed e3 3d 41 57 07 4b b0 3d 02 51 7e 13 bb d3 68 |..=AW.K.=.Q~...h| +000003e0 49 4c 6a 17 03 03 00 35 63 f7 b5 68 31 22 c7 f5 |ILj....5c..h1"..| +000003f0 50 ae c0 81 0f 50 fb ba 50 72 8a d7 e0 c0 73 07 |P....P..Pr....s.| +00000400 d0 88 ed 6d 7b e7 66 b3 8d e3 10 ca 2f 68 c3 39 |...m{.f...../h.9| +00000410 d9 b9 09 44 78 4a 11 91 fb 51 ea 9f 9a |...DxJ...Q...| >>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 02 7a 5c ca 9a 42 8c |..........z\..B.| -00000010 89 80 5e f5 67 03 ec e8 79 ac 9e 95 3b 12 bf 9c |..^.g...y...;...| -00000020 e8 c6 85 54 36 f3 7e ad 5e b8 0e 78 f7 f2 9f 73 |...T6.~.^..x...s| -00000030 da 8a 1e f3 0f 0c be 7d ef 3d ec d8 51 91 55 3d |.......}.=..Q.U=| -00000040 21 ba 3d 10 32 94 7b 1c 6b 5e 5a 18 0e 79 9c f9 |!.=.2.{.k^Z..y..| -00000050 7c 48 73 21 ae ed 2d b7 fe 34 9c 70 10 fb 67 9f ||Hs!..-..4.p..g.| -00000060 c6 28 56 2e cb 42 e3 be c5 b8 7d cf 4d 54 22 a0 |.(V..B....}.MT".| -00000070 8f 7c ce 49 96 d2 ad 88 80 6b 06 be 36 0d c8 24 |.|.I.....k..6..$| -00000080 c1 bd 09 e8 36 a4 a9 e7 cc 4c de ed bb d6 cf 5b |....6....L.....[| -00000090 da 21 75 f1 f5 6d ed 75 d2 a5 13 11 4d 4e 62 e9 |.!u..m.u....MNb.| -000000a0 92 23 49 37 57 f4 56 a4 54 1b 59 c0 ed cf 43 d1 |.#I7W.V.T.Y...C.| -000000b0 c3 d1 18 4d 47 5f e1 f8 13 ed f2 7d 1e 97 9d ba |...MG_.....}....| -000000c0 c5 49 e9 2c 76 ca 02 60 89 01 7a 47 b7 1d 07 54 |.I.,v..`..zG...T| -000000d0 01 17 52 39 10 59 c1 58 66 3e 24 24 7d a7 94 5f |..R9.Y.Xf>$$}.._| -000000e0 3b df 0c 47 fc 96 bc 4a fc 82 55 cf d3 33 b1 da |;..G...J..U..3..| -000000f0 37 7b b4 f3 b2 03 31 cc 2b 60 a2 e4 76 28 d5 fd |7{....1.+`..v(..| -00000100 4a 5f 47 e3 97 21 11 6a 5d 51 a5 43 9e bb b0 50 |J_G..!.j]Q.C...P| -00000110 21 09 7c c8 e5 ca f9 7a 69 2c 0b 83 37 7a 8b 35 |!.|....zi,..7z.5| -00000120 ff 63 cf df aa 18 0c 75 39 14 e7 90 0b 67 5f b6 |.c.....u9....g_.| -00000130 94 cd 1a 49 ce 4f 46 dd 2b 61 7d 07 72 11 6e 69 |...I.OF.+a}.r.ni| -00000140 3b 6f 0c 1c 6c 8c 10 ef ef a1 bc 05 2f c9 20 8b |;o..l......./. .| -00000150 e2 fa 94 89 48 49 5d 1c 73 85 d7 e3 25 27 de a9 |....HI].s...%'..| -00000160 1a fb 2e e0 74 c8 aa 52 4c e7 48 ec ca 99 48 ba |....t..RL.H...H.| -00000170 03 9b f7 75 de 01 0b 2e 9e 14 2f 1b 82 13 01 7c |...u....../....|| -00000180 55 7e 24 06 55 59 62 f4 b6 33 69 7e c9 c1 07 07 |U~$.UYb..3i~....| -00000190 6d 61 e0 18 d3 2b 46 4f ff 14 01 31 06 d6 b2 d2 |ma...+FO...1....| -000001a0 56 40 1e 69 70 21 a1 33 98 ef 23 79 6c b1 ed f6 |V@.ip!.3..#yl...| -000001b0 15 b9 8f fc 69 7a f4 4d 3b f8 bd 50 ee 6a 15 15 |....iz.M;..P.j..| -000001c0 0a 81 b6 4b 40 6c 15 e6 55 92 cf 8f a1 00 bf d5 |...K@l..U.......| -000001d0 f7 74 13 30 ba ab eb 9d 82 bb 76 14 17 7e ab 30 |.t.0......v..~.0| -000001e0 36 62 61 0a d3 2c 92 ca 95 b0 8b 41 54 b3 fa 0a |6ba..,.....AT...| -000001f0 82 8c aa bd 89 e2 fa 1a 87 9d 9a 1e 21 78 a4 27 |............!x.'| -00000200 5d 16 4d e6 a7 43 a5 11 0d db 35 08 9c 23 96 8b |].M..C....5..#..| -00000210 80 46 5d 9f 1d 4e a2 04 17 8e 4d 57 c6 55 35 b4 |.F]..N....MW.U5.| -00000220 ac 0b c2 44 60 f6 08 1c cc c7 ba 7c e1 14 fb c2 |...D`......|....| -00000230 1d 67 67 ed 20 99 14 34 5a 97 85 0b ca 36 34 8e |.gg. ..4Z....64.| -00000240 18 de ab 4d c6 32 6c 4f 44 eb b6 05 7b a6 37 db |...M.2lOD...{.7.| -00000250 57 65 8a 62 5e c4 8c 14 13 6c 41 b4 7a 0d a8 75 |We.b^....lA.z..u| -00000260 42 a7 1b 92 34 16 2a 77 e3 63 bf 23 cc 42 9b 9d |B...4.*w.c.#.B..| -00000270 bd c9 ba b3 20 77 6a 56 c2 2c dc 72 9f ec b2 a8 |.... wjV.,.r....| -00000280 57 cc 00 17 a1 17 03 03 00 99 0a d6 46 7f 5a 00 |W...........F.Z.| -00000290 7e c4 1b 10 c4 d6 ae 8a 37 cb 47 3d bd f0 17 f3 |~.......7.G=....| -000002a0 9b 25 fa 31 cb 75 10 1c 95 4b 80 9e ff 78 ae b4 |.%.1.u...K...x..| -000002b0 65 b7 2f 00 3f 94 79 1d 66 52 f7 48 03 df 35 6b |e./.?.y.fR.H..5k| -000002c0 06 42 55 1a bd 0d f0 e0 6f 8e 8e b7 60 dc e2 ec |.BU.....o...`...| -000002d0 8b 9b 2e de 1a 08 65 b1 ad 9d 41 a5 32 6f bd f2 |......e...A.2o..| -000002e0 02 47 79 4a 02 03 45 e0 2e 0e 9c e4 05 ae 8a 47 |.GyJ..E........G| -000002f0 20 61 5a a3 da ab 84 33 11 76 81 a3 93 6b b0 9a | aZ....3.v...k..| -00000300 9d 64 6e f3 ba a0 ab 17 c5 3e 95 8a 1e 95 62 99 |.dn......>....b.| -00000310 5a 12 68 96 49 05 33 b6 6e 95 46 11 9b af de 62 |Z.h.I.3.n.F....b| -00000320 0c 5e e1 17 03 03 00 35 78 f6 24 17 fb 8f 65 3f |.^.....5x.$...e?| -00000330 5b 1d dd 3d 3d 73 c5 fb 1f 37 fb 54 a5 d3 58 49 |[..==s...7.T..XI| -00000340 ed 63 22 f9 b6 fb a2 68 59 9b 04 55 03 f1 38 af |.c"....hY..U..8.| -00000350 2e ee 85 0c c8 95 2f f9 a9 e7 de d9 14 17 03 03 |....../.........| -00000360 00 17 8b 72 27 df c9 0d 69 d1 95 e2 5a ea 3e dd |...r'...i...Z.>.| -00000370 be df 0b 72 de 0c e5 4a 19 17 03 03 00 13 0d b2 |...r...J........| -00000380 7c 8d b1 44 32 9d 63 b1 8b 90 e1 2d 92 9c c4 b9 ||..D2.c....-....| -00000390 cd |.| +00000000 14 03 03 00 01 01 17 03 03 02 7a 63 6c 83 c6 db |..........zcl...| +00000010 85 98 08 0a da be 96 d7 7a 2e 61 7b 7e d1 4f d4 |........z.a{~.O.| +00000020 45 03 25 05 50 fc 20 ee 8f ae 56 39 15 0b c3 44 |E.%.P. ...V9...D| +00000030 80 5c 81 45 55 df 1d cd 30 92 7c 5e 43 16 e1 29 |.\.EU...0.|^C..)| +00000040 46 77 d3 03 6d 36 11 d0 91 76 a8 34 f0 98 67 f6 |Fw..m6...v.4..g.| +00000050 88 f8 f7 d0 a3 ee e0 d1 30 9f 6f e9 75 ad d6 e9 |........0.o.u...| +00000060 e8 e9 6f 11 55 7e 66 87 9a 7e 9d a5 31 b2 67 fd |..o.U~f..~..1.g.| +00000070 a2 a7 c8 c8 4d d8 2b f1 5b a9 b5 df 03 42 55 96 |....M.+.[....BU.| +00000080 9e 73 9c 9a 6a b9 9f 2e a5 ec ba 0b a3 5b 99 b4 |.s..j........[..| +00000090 7c 57 96 fb f5 96 20 ac 71 90 bb 4b 76 dd 2e 01 ||W.... .q..Kv...| +000000a0 17 d0 63 76 c9 4a e5 ae 58 bd 59 b5 e1 85 6d 46 |..cv.J..X.Y...mF| +000000b0 9f d5 3e 9d a7 f0 92 96 ec 4e 90 c3 5a 52 ba e5 |..>......N..ZR..| +000000c0 bd fa f0 a7 88 d5 9e 76 9b 2b 23 fb 37 c0 f1 0a |.......v.+#.7...| +000000d0 d2 df d4 2c 5d 8c 64 f0 98 3c 85 3f bb ed 30 44 |...,].d..<.?..0D| +000000e0 eb cb fc 47 e5 8a 57 ff 37 23 6d e2 75 a7 15 e4 |...G..W.7#m.u...| +000000f0 dc f9 02 8f c4 af d8 e8 bb 07 43 90 5b c2 86 f3 |..........C.[...| +00000100 40 22 a7 bb b6 f1 f6 4c 2e d6 fd d8 02 f0 3d 27 |@".....L......='| +00000110 89 38 97 7d 6e d3 6c b1 4c 87 ca 30 e9 ec fe b3 |.8.}n.l.L..0....| +00000120 db 62 ea 2f 3a 83 95 18 4e 44 4f 97 c4 ff f6 bb |.b./:...NDO.....| +00000130 0b b0 98 c7 c6 c7 94 0a 8b c9 c0 d9 51 d3 6a e1 |............Q.j.| +00000140 36 55 79 c4 37 75 6f e7 14 53 60 9e 22 00 fe d7 |6Uy.7uo..S`."...| +00000150 ef e4 ca 60 38 12 25 8c c6 c9 7e 5f 1a 7c f1 c1 |...`8.%...~_.|..| +00000160 a7 15 b2 f4 32 31 de c8 a2 d4 59 46 1e 68 a6 94 |....21....YF.h..| +00000170 b8 18 52 df 44 01 0b a0 a0 02 60 83 84 fc ad 99 |..R.D.....`.....| +00000180 fc 60 0b 23 0a 7a f9 73 bf d8 a5 af 9b ea dd a3 |.`.#.z.s........| +00000190 fb 5b 41 17 95 0a 57 4a 94 7e 24 9f 31 74 06 65 |.[A...WJ.~$.1t.e| +000001a0 95 90 40 20 17 0b 95 22 b8 49 4e a6 a4 be e1 74 |..@ ...".IN....t| +000001b0 01 a2 7e cd 60 50 46 5c fd 2a 88 90 ef 7f 6c b8 |..~.`PF\.*....l.| +000001c0 3e a1 40 8e 91 cd 8d db ad 81 d0 08 b0 d0 d7 ae |>.@.............| +000001d0 18 4f 47 9b 1a 66 8b a5 d2 fb 01 d3 67 79 46 71 |.OG..f......gyFq| +000001e0 5a 49 dd df 06 c6 57 c7 e0 b1 60 39 d4 a9 37 88 |ZI....W...`9..7.| +000001f0 31 0d c0 92 4e c7 2a 25 c4 df b0 d8 df bb 31 1b |1...N.*%......1.| +00000200 ff 0a 34 46 46 88 0b 11 7d 20 32 cd 01 d0 3f 11 |..4FF...} 2...?.| +00000210 e1 6e 63 42 d7 4a 83 ab ad f7 51 bd c3 37 2b 76 |.ncB.J....Q..7+v| +00000220 9e bb 45 3b 81 d8 47 71 02 b9 fe 7c 56 46 78 3e |..E;..Gq...|VFx>| +00000230 9e 94 00 1b 98 17 72 37 c0 e5 36 a9 f0 02 b7 cf |......r7..6.....| +00000240 f0 b4 66 10 1b 91 07 5f bb 22 e8 12 d9 e3 33 dd |..f...._."....3.| +00000250 87 66 e4 f6 00 f6 3a dc 19 59 af ce 8e ae c4 d3 |.f....:..Y......| +00000260 03 d8 25 02 40 7e 95 70 31 85 53 bc 9e 96 11 69 |..%.@~.p1.S....i| +00000270 5b 2f b9 17 48 f4 ae c5 a1 c5 d1 7f 4a 10 06 b6 |[/..H.......J...| +00000280 2e 34 6c 09 12 17 03 03 00 99 16 4c 04 64 97 e0 |.4l........L.d..| +00000290 26 e1 66 e9 34 05 d7 d3 75 e3 b9 de 56 15 51 67 |&.f.4...u...V.Qg| +000002a0 fb fe 9a c6 9a 3c 38 08 2c c8 8c dd fe 49 c5 ed |.....<8.,....I..| +000002b0 a8 54 86 90 2c f6 7c d1 12 02 99 94 5e 2e 4b 4e |.T..,.|.....^.KN| +000002c0 84 e9 b4 96 5c dc 56 28 3d ea a9 4f 8f ad 51 ff |....\.V(=..O..Q.| +000002d0 02 b1 b9 7a 29 e5 32 7c 2a 8b 60 5d e2 fc b4 8f |...z).2|*.`]....| +000002e0 06 32 4a ea 37 ed 03 f0 68 72 b7 83 1f 04 10 2b |.2J.7...hr.....+| +000002f0 24 db 5b 10 6c 41 55 40 54 69 07 39 d4 db ac 10 |$.[.lAU@Ti.9....| +00000300 77 9f 04 f4 b9 3f 35 7e 04 af ab 7a a0 47 b9 d9 |w....?5~...z.G..| +00000310 4c 6e 25 00 ce ef 93 3f 28 2c 2d f6 42 e4 5f 3e |Ln%....?(,-.B._>| +00000320 26 92 13 17 03 03 00 35 fb 14 eb 5f 18 61 75 ba |&......5..._.au.| +00000330 e4 dc d2 95 fe 93 bb 54 29 e3 38 e3 59 54 81 9f |.......T).8.YT..| +00000340 4e 29 be c6 e6 cd ad 8c 9d 6a ad 28 ec d3 a6 e4 |N).......j.(....| +00000350 bc 5e 8c df a8 7e 14 d8 69 3c 30 7c 0a 17 03 03 |.^...~..i<0|....| +00000360 00 17 10 73 c0 75 88 af 51 90 ff 3f b2 83 47 27 |...s.u..Q..?..G'| +00000370 19 c0 e6 cd 14 a4 c7 8d a0 17 03 03 00 13 fb 1f |................| +00000380 ed 8e 47 c8 79 f9 53 df 6d 97 a7 1d 53 8d 80 85 |..G.y.S.m...S...| +00000390 dd |.| diff --git a/src/crypto/tls/testdata/Client-TLSv13-ECDSA b/src/crypto/tls/testdata/Client-TLSv13-ECDSA index 53624650c7..eeab871172 100644 --- a/src/crypto/tls/testdata/Client-TLSv13-ECDSA +++ b/src/crypto/tls/testdata/Client-TLSv13-ECDSA @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,83 +7,82 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 cd 84 c1 22 3c |....z...v....."<| -00000010 2e 71 03 57 5f c1 27 88 ae 0e 7f 1a e7 aa 82 6d |.q.W_.'........m| -00000020 8d f1 18 78 8d b2 4c d6 11 c3 b0 20 00 00 00 00 |...x..L.... ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 a5 7b 07 50 bc |....z...v...{.P.| +00000010 01 11 74 76 99 fb 85 e5 40 6b 02 14 d9 64 b1 8a |..tv....@k...d..| +00000020 8b 78 a3 ee 2e 4d b0 96 14 3a fb 20 00 00 00 00 |.x...M...:. ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 03 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 1a |..+.....3.$... .| -00000060 28 ce a9 6b 7d 26 24 78 52 fe e1 65 34 6b 12 50 |(..k}&$xR..e4k.P| -00000070 5c 4b b0 10 2e 94 3f b3 a0 b7 45 fc 3b 4d 31 14 |\K....?...E.;M1.| -00000080 03 03 00 01 01 17 03 03 00 17 21 d8 25 9d 8a 8a |..........!.%...| -00000090 84 70 10 37 95 29 4e 00 da eb c1 e7 20 a3 09 a3 |.p.7.)N..... ...| -000000a0 63 17 03 03 02 22 51 4c 48 48 ce 06 1d 4d 42 fa |c...."QLHH...MB.| -000000b0 54 16 a0 fe 66 f2 62 56 55 8e 71 0a 8a 75 8f ff |T...f.bVU.q..u..| -000000c0 71 72 29 09 54 f2 74 a8 0a 8c f3 62 84 2d 4c 11 |qr).T.t....b.-L.| -000000d0 02 f1 c5 6f 2c f0 39 91 3e 58 98 e2 3d 87 0d 8b |...o,.9.>X..=...| -000000e0 5a 77 8f 2d 38 fb 3a b8 63 4f 79 24 bb 40 6f 09 |Zw.-8.:.cOy$.@o.| -000000f0 28 01 bd 03 53 f0 63 fc 49 92 ba 9b 3b fd a1 75 |(...S.c.I...;..u| -00000100 cf be 2c 5a da 3d 53 b2 11 5c f8 66 26 d0 78 6c |..,Z.=S..\.f&.xl| -00000110 3e a0 34 16 2b 28 6b 73 95 08 d7 e6 2f f4 f3 74 |>.4.+(ks..../..t| -00000120 3f 1d e1 a5 e4 0e 82 af 52 58 09 b0 90 f8 ee ea |?.......RX......| -00000130 5a 34 b7 29 7a a6 bb 0a 2f 64 f7 51 80 71 90 82 |Z4.)z.../d.Q.q..| -00000140 d2 1a fa c9 43 de 31 eb a1 f6 b0 31 99 5e 8b 84 |....C.1....1.^..| -00000150 6b f1 66 6e 49 6d 2e 52 e1 c4 21 76 7b 1e bf d4 |k.fnIm.R..!v{...| -00000160 c1 8f 7c 1b a9 6f 4d 1b 03 86 63 8b d4 64 24 79 |..|..oM...c..d$y| -00000170 73 00 1e cc 2b 5c a6 65 db 35 74 95 9b 04 5d ce |s...+\.e.5t...].| -00000180 ef 54 eb be 6a 6a 04 5d e2 ba cb 4f c7 3f 33 8f |.T..jj.]...O.?3.| -00000190 20 51 6c 03 0a 1a 90 e3 74 e4 e3 2f 78 00 1b 4a | Ql.....t../x..J| -000001a0 17 9a 6f 35 0b b8 0e 30 cc 51 87 fa 17 d9 95 39 |..o5...0.Q.....9| -000001b0 b5 51 c6 3f 6f 9b 39 74 c6 3e a3 8e 10 2f fc eb |.Q.?o.9t.>.../..| -000001c0 85 b3 a3 6e 21 5d 9f dc fb 6a 5f 4b 42 5c a1 f5 |...n!]...j_KB\..| -000001d0 c3 b7 5c ef 86 22 e9 bb ae 97 96 ff 06 b1 d8 19 |..\.."..........| -000001e0 38 6b 23 03 30 ea 1c 6f c3 4a 94 74 35 16 61 2e |8k#.0..o.J.t5.a.| -000001f0 c6 9d a7 db b0 50 63 f7 e2 7c 00 2b 12 05 89 f2 |.....Pc..|.+....| -00000200 e9 06 98 12 3c 77 6e d3 09 7f 6f 93 28 1e ce 1f |....D...@.|M.....| +000000d0 40 af 68 81 69 dd 7c 77 24 26 87 73 73 5e d2 0c |@.h.i.|w$&.ss^..| +000000e0 2a 32 c5 34 50 ef a8 0f 63 12 3a 47 34 8f f2 c6 |*2.4P...c.:G4...| +000000f0 9f bd 81 bf ea 69 47 04 8b 87 64 4e 67 81 10 a5 |.....iG...dNg...| +00000100 f1 76 92 5e d6 11 a5 48 5b cc ef a8 43 dd cf f5 |.v.^...H[...C...| +00000110 20 9d b8 2f f4 0d 92 10 55 af d1 fa ab 64 5f 99 | ../....U....d_.| +00000120 3e 6b e9 70 70 f1 22 d9 05 04 89 3a fa 65 ae 91 |>k.pp."....:.e..| +00000130 9d 07 ea 54 93 2d 02 0c c0 70 d9 e9 f0 9a 5a 81 |...T.-...p....Z.| +00000140 c6 c6 79 e0 e1 90 ad 34 78 bf d3 c8 9c 68 2e ac |..y....4x....h..| +00000150 e6 2d c0 e5 c8 3c 77 80 d7 dd e5 a4 ac b8 36 4f |.-...@..I<..FW.Ye.| +00000170 4e db 21 ea ab 72 47 79 e6 c1 4f ea 17 e3 b4 73 |N.!..rGy..O....s| +00000180 9d e2 e5 72 be 88 0a 60 1e 35 02 67 33 a0 7a 05 |...r...`.5.g3.z.| +00000190 b8 ae 05 b2 53 6c cd c5 e3 a5 16 56 2b b0 0e 8e |....Sl.....V+...| +000001a0 a0 ca 54 c0 34 6b 00 22 69 de e1 57 81 48 c6 1a |..T.4k."i..W.H..| +000001b0 cc 88 f6 15 1c 7e b6 1f b0 48 82 75 6b ff 42 78 |.....~...H.uk.Bx| +000001c0 f9 85 10 86 5b af 31 62 f6 7b d4 8a a6 86 3f 99 |....[.1b.{....?.| +000001d0 9b ce 91 c0 4d 44 5b 3f 16 81 d0 a9 4a e0 2d 85 |....MD[?....J.-.| +000001e0 a4 80 91 64 13 20 33 dc 84 48 da 79 2e 73 cb 78 |...d. 3..H.y.s.x| +000001f0 9c 05 8a 6c 42 ce b0 b0 45 3c 05 47 47 f7 92 3b |...lB...E<.GG..;| +00000200 d2 fb 65 f0 40 a3 52 b7 aa 04 ae 71 84 35 12 7a |..e.@.R....q.5.z| +00000210 33 f8 8b 0d 21 a3 29 ad 78 de df 7f 53 71 fb 5f |3...!.).x...Sq._| +00000220 a5 ab 07 89 3a 1f e9 ca 6d 8d bb 04 39 8d b3 50 |....:...m...9..P| +00000230 7e 2e bd 0f b8 ff 4f 3f d1 a5 23 b9 80 33 da b0 |~.....O?..#..3..| +00000240 2c dc 0f c2 26 b2 cf 59 d9 10 ef 66 52 40 e4 54 |,...&..Y...fR@.T| +00000250 28 5e 7f c1 94 62 8f 4f 9b 94 fc c9 32 af f5 17 |(^...b.O....2...| +00000260 5d 04 32 08 83 f4 90 68 68 01 d3 00 ed 82 f3 da |].2....hh.......| +00000270 81 2e d5 df 1e 13 c3 c3 76 83 c4 67 23 c4 32 c0 |........v..g#.2.| +00000280 59 5d dd 56 78 d9 74 ef 7b d5 c9 13 4d 62 29 85 |Y].Vx.t.{...Mb).| +00000290 ca 24 53 1a b1 2b 09 a1 a6 26 db 13 cf 2a 2b 92 |.$S..+...&...*+.| +000002a0 85 a3 51 2b 24 e1 90 2a fe 0c 74 ee 86 cc 3b 6a |..Q+$..*..t...;j| +000002b0 07 21 a6 b6 97 a4 e0 9f 3d 75 9a 2b 9e 91 ef d8 |.!......=u.+....| +000002c0 c9 94 28 ba 40 e4 cc 6a 17 03 03 00 a4 ab c3 c1 |..(.@..j........| +000002d0 32 1d 44 0d f7 85 e3 85 df 9e bb 0c 82 18 a2 9f |2.D.............| +000002e0 27 de 78 4f 06 9b 43 59 27 b5 8e 34 4d 96 b3 96 |'.xO..CY'..4M...| +000002f0 af 8b 98 d0 36 91 52 df 9c aa c2 fe e7 0f ed ca |....6.R.........| +00000300 ef 57 73 97 cc c8 dc 7c c8 15 73 ad a6 3e 54 93 |.Ws....|..s..>T.| +00000310 1a ab 72 f6 e0 e3 cb bb fe a5 d1 45 47 f3 1a 89 |..r........EG...| +00000320 40 f7 9d f5 e4 61 16 fa 12 0a 62 24 a7 34 ab 6f |@....a....b$.4.o| +00000330 08 85 b2 fe b2 5c 49 59 7b cb 05 b2 e3 1a 37 79 |.....\IY{.....7y| +00000340 b1 27 28 a5 ab ee ae 72 11 19 61 c0 3b ed 32 ec |.'(....r..a.;.2.| +00000350 57 26 76 8e 42 3c 98 4a ec 10 4e e0 eb e2 19 3d |W&v.B<.J..N....=| +00000360 67 47 99 9c e5 97 a4 07 ff 7a b5 15 65 0e b9 e4 |gG.......z..e...| +00000370 e3 17 03 03 00 35 61 d9 d8 36 a0 1e 83 b0 f8 1f |.....5a..6......| +00000380 74 61 a0 4b 93 7f 98 8b 63 1c 63 82 f4 cd 57 8d |ta.K....c.c...W.| +00000390 1f 75 7a 6d a9 1d e2 35 0b 2b 9a 5f 5f 71 cd 46 |.uzm...5.+.__q.F| +000003a0 48 7f 27 af a5 da 8b 35 b1 18 39 |H.'....5..9| >>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 00 35 c8 b8 4f 16 71 |..........5..O.q| -00000010 03 a4 39 02 a9 6e 62 a5 62 8e 64 7d 13 8c 11 66 |..9..nb.b.d}...f| -00000020 f2 6c 24 36 5b 9c 95 6b 5b ea fc 66 a2 ef 7c 97 |.l$6[..k[..f..|.| -00000030 0c 75 7a 05 99 21 ff af fc 91 b3 64 74 64 89 76 |.uz..!.....dtd.v| -00000040 17 03 03 00 17 3f b3 8e 94 d5 bd e2 79 9c e5 d3 |.....?......y...| -00000050 f7 3d bd aa 6a 35 5a 1a 0b 96 69 3d 17 03 03 00 |.=..j5Z...i=....| -00000060 13 d7 34 66 9d 25 f2 de 49 40 34 20 a5 0c 88 b5 |..4f.%..I@4 ....| -00000070 00 e8 ac ee |....| +00000000 14 03 03 00 01 01 17 03 03 00 35 3d 13 d4 8c 88 |..........5=....| +00000010 73 62 97 8b 18 04 f7 05 8d c8 56 d2 f4 0a 86 93 |sb........V.....| +00000020 d4 6f 08 1c d8 7f 57 be 50 03 a7 4a c8 37 80 04 |.o....W.P..J.7..| +00000030 43 1b 2a 86 21 25 ae 84 53 80 0c f6 4f 2e 73 67 |C.*.!%..S...O.sg| +00000040 17 03 03 00 17 43 99 86 f2 2f a2 22 05 36 d8 47 |.....C.../.".6.G| +00000050 c5 57 92 93 c7 79 d9 fd 13 70 8f 75 17 03 03 00 |.W...y...p.u....| +00000060 13 15 90 47 ea af 57 89 d4 19 70 e7 e1 ce 68 8a |...G..W...p...h.| +00000070 7b 83 8c a5 |{...| diff --git a/src/crypto/tls/testdata/Client-TLSv13-Ed25519 b/src/crypto/tls/testdata/Client-TLSv13-Ed25519 index 04c26cb654..274620a257 100644 --- a/src/crypto/tls/testdata/Client-TLSv13-Ed25519 +++ b/src/crypto/tls/testdata/Client-TLSv13-Ed25519 @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,65 +7,64 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 41 2a 70 9e fa |....z...v..A*p..| -00000010 49 ab 26 ea 07 12 90 9f e9 be 67 21 3a 0f e8 c9 |I.&.......g!:...| -00000020 54 97 77 ce d4 54 04 0d 2d b6 1a 20 00 00 00 00 |T.w..T..-.. ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 5a e2 b6 f0 cf |....z...v..Z....| +00000010 f2 85 49 e0 28 8c d7 89 41 39 5f a4 e8 41 9b f6 |..I.(...A9_..A..| +00000020 1d 2b 3a 8a 3e a3 40 29 76 17 22 20 00 00 00 00 |.+:.>.@)v." ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 03 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 28 |..+.....3.$... (| -00000060 42 18 1f f9 3f 73 01 41 63 08 8d a1 1a a5 8b 5f |B...?s.Ac......_| -00000070 d0 63 44 21 d2 fc d8 7e 46 9f 66 62 0d c0 19 14 |.cD!...~F.fb....| -00000080 03 03 00 01 01 17 03 03 00 17 66 d5 4f 1f 0b 85 |..........f.O...| -00000090 65 0a 81 21 55 2f 17 bc ad e1 83 69 29 51 6b 7f |e..!U/.....i)Qk.| -000000a0 15 17 03 03 01 50 b2 f9 51 18 c9 23 24 91 b8 b0 |.....P..Q..#$...| -000000b0 32 8d 3c 81 8a ca c3 25 8a 1f cc 17 d1 67 07 42 |2.<....%.....g.B| -000000c0 7b 82 ae 1f b8 65 55 e2 ce 2e ad d3 90 bf 3f 2d |{....eU.......?-| -000000d0 85 dc 68 3a 4c 1a 79 9e cc 86 d3 20 7b 7e ba b4 |..h:L.y.... {~..| -000000e0 cf 8b 4b f8 9b 58 0f 7f 24 cc aa 80 4b be 8f 3e |..K..X..$...K..>| -000000f0 88 1e b1 10 0b 8c 74 6b 2e ad 8d c9 40 e1 3f 4a |......tk....@.?J| -00000100 90 5c 97 79 f4 aa 62 e1 e1 2e e4 f4 22 ce ab 85 |.\.y..b....."...| -00000110 d6 ac e1 d8 21 f8 ed 70 3e 92 0d 2c b2 39 f9 a5 |....!..p>..,.9..| -00000120 da ce 3e ff 76 09 54 10 35 86 80 f8 fa 86 44 a1 |..>.v.T.5.....D.| -00000130 78 7c 9c a8 15 c9 55 92 e8 14 0d 99 c8 40 7c f7 |x|....U......@|.| -00000140 d9 d6 cd ae bf 05 f9 da 0f 33 b1 ee ae 39 bb 30 |.........3...9.0| -00000150 3c f2 3d e4 0a b7 e1 e7 6a 5f 48 65 a6 28 37 26 |<.=.....j_He.(7&| -00000160 c1 18 0b 31 f2 79 00 fd 25 d6 76 8f 7b bc 7e 2e |...1.y..%.v.{.~.| -00000170 3d f2 bb b2 1a 5f 1b 7d df b5 f5 bb b2 e7 1b 51 |=...._.}.......Q| -00000180 de cc 4d 2b 32 c6 cd 33 97 32 d3 c8 02 89 a2 0a |..M+2..3.2......| -00000190 a2 6a 2c d4 6f b8 97 3b 7d bf 42 18 97 a3 2d 51 |.j,.o..;}.B...-Q| -000001a0 70 a7 f0 9f 04 2a a0 6f 2f 30 7c fe b6 fc dd c5 |p....*.o/0|.....| -000001b0 6a 65 e3 a2 7a c0 d8 31 37 3f c0 36 79 d2 a0 20 |je..z..17?.6y.. | -000001c0 7d 4e ea 8c 44 77 53 e9 db 90 ef 24 26 05 ce b0 |}N..DwS....$&...| -000001d0 9e 18 a9 8f 21 55 b6 40 63 b5 4c f6 74 2d 4a c5 |....!U.@c.L.t-J.| -000001e0 7f 67 ee 95 35 21 e0 22 61 c5 68 5f e7 b3 ac 4d |.g..5!."a.h_...M| -000001f0 4e e5 31 bb 10 22 17 03 03 00 59 ab 04 24 cb f7 |N.1.."....Y..$..| -00000200 33 03 08 97 0b d5 9e a7 23 18 ec b6 f6 e8 ee 1f |3.......#.......| -00000210 2d 5f 6b 73 92 ce ac 3b 59 50 27 77 ac 73 ac fe |-_ks...;YP'w.s..| -00000220 b1 5a 8e 9e 81 50 54 4d 3b f7 7b 1e f9 f9 c1 d5 |.Z...PTM;.{.....| -00000230 c6 08 b5 88 55 96 13 c6 d4 f6 cd b5 5d 5a 27 ae |....U.......]Z'.| -00000240 27 95 e0 55 0e c5 fe 6b 9a ae 3d f8 3a b9 05 f6 |'..U...k..=.:...| -00000250 ef 90 99 30 17 03 03 00 35 54 af 85 8b 06 b2 ee |...0....5T......| -00000260 a8 6f 18 76 9b 9a ea 2e 57 b9 2c 9e a7 56 6c 49 |.o.v....W.,..VlI| -00000270 ab 6e 10 4e fc c8 9c 37 b3 dc 95 8b 74 07 e9 90 |.n.N...7....t...| -00000280 a3 35 72 b4 60 9a ea 87 a7 76 72 42 7d b7 |.5r.`....vrB}.| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 d1 |..+.....3.$... .| +00000060 41 fa 43 c4 c8 0a 98 e0 da 88 c8 58 36 ab 12 61 |A.C........X6..a| +00000070 d5 2d 9a 5b 10 fd 1f 10 bf d4 df 23 d0 de 2c 14 |.-.[.......#..,.| +00000080 03 03 00 01 01 17 03 03 00 17 bf 64 74 65 06 48 |...........dte.H| +00000090 41 72 b9 9f 41 24 a9 d0 05 00 4e 8c 93 a8 bd 91 |Ar..A$....N.....| +000000a0 ce 17 03 03 01 50 20 58 c1 4f 42 ed e9 e6 50 86 |.....P X.OB...P.| +000000b0 5f 49 88 ac 8b b8 3d 25 1d 87 b5 7f 9f 1a a2 cd |_I....=%........| +000000c0 f2 90 d0 6d 13 ed a6 6c f9 1e af c8 73 dd 68 d4 |...m...l....s.h.| +000000d0 46 1f ce d4 74 87 57 0f c1 b7 dd bd 5a 44 7c 08 |F...t.W.....ZD|.| +000000e0 2d 60 ca 34 1f 94 ee 4a cd e7 4a 69 1c 8d 4c 64 |-`.4...J..Ji..Ld| +000000f0 e8 a1 90 89 75 e2 3b 5b 0e 58 f8 7a 0a fe 2d 6d |....u.;[.X.z..-m| +00000100 ee 82 ab 07 e3 09 ae 37 d5 d6 31 9f 47 a5 eb ca |.......7..1.G...| +00000110 fd d9 5e b3 f1 ab 8a 64 8f 66 7d e7 a5 66 b4 46 |..^....d.f}..f.F| +00000120 3c 3c 2c 2f f7 5a 46 b3 e7 8b a4 3e 5f 21 ab 66 |<<,/.ZF....>_!.f| +00000130 60 4d ca 20 4b 7b 75 5a 88 a5 65 97 1b 70 5b 69 |`M. K{uZ..e..p[i| +00000140 7b 22 87 48 e4 a2 a8 32 06 65 00 91 e6 ac 6c 9b |{".H...2.e....l.| +00000150 42 04 53 f5 e5 46 72 d6 3a 7d d8 c1 e4 f1 79 dc |B.S..Fr.:}....y.| +00000160 de 7b 21 83 d0 98 90 99 2d 9d 78 67 89 31 2a 7d |.{!.....-.xg.1*}| +00000170 6a 97 c7 80 a9 2a 91 4e e2 30 29 96 25 97 e9 94 |j....*.N.0).%...| +00000180 2d 0a e0 30 8c e3 54 00 2a 29 e9 60 ef 4c 60 1c |-..0..T.*).`.L`.| +00000190 76 51 db 5d d7 7c 0c ae f3 a8 9e 3b 49 c6 a7 ce |vQ.].|.....;I...| +000001a0 a3 e8 e6 8c 13 ea fa bd 7f 59 36 06 1e 0c 54 2d |.........Y6...T-| +000001b0 d2 75 8a 75 94 f3 5c 77 0a 8e a0 23 9f 21 d8 ed |.u.u..\w...#.!..| +000001c0 65 87 fa f0 65 e1 81 2b 45 50 91 9e 48 8f 4c 80 |e...e..+EP..H.L.| +000001d0 7a c7 32 07 9a d9 d4 59 7a 7c 11 01 c2 75 fd 25 |z.2....Yz|...u.%| +000001e0 15 7b de b1 72 54 42 9e 02 41 a8 1a 04 6a 64 ba |.{..rTB..A...jd.| +000001f0 97 48 48 48 24 3d 17 03 03 00 59 d7 53 12 64 01 |.HHH$=....Y.S.d.| +00000200 d4 b7 e4 bf e1 33 f6 49 24 cf e8 6f 48 56 d6 1b |.....3.I$..oHV..| +00000210 e3 11 e9 a5 fb 7d f7 f5 b7 06 6c ce 4d e7 3c ca |.....}....l.M.<.| +00000220 bc 30 27 2e 02 4a 50 ec 7e 8c d4 cd 7a 78 43 3f |.0'..JP.~...zxC?| +00000230 5d 17 d7 bd 3e 78 68 21 ad 98 93 ad 90 de f7 c9 |]...>xh!........| +00000240 ab 7d 36 59 7e 7b e8 10 92 de ee 44 a2 e3 df 41 |.}6Y~{.....D...A| +00000250 6c a8 6c 9b 17 03 03 00 35 3a 9b 88 fc 4d 78 aa |l.l.....5:...Mx.| +00000260 a3 96 c7 f9 80 87 75 88 41 e6 58 9c f7 f6 88 0c |......u.A.X.....| +00000270 8f 57 8f 41 b7 49 a9 c2 db d6 44 51 a6 cb eb c3 |.W.A.I....DQ....| +00000280 8d e5 32 19 4b e5 dd 4e 19 6b f4 38 cd 3d |..2.K..N.k.8.=| >>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 00 35 70 04 7a 93 3e |..........5p.z.>| -00000010 de c0 df 1d 2b 25 ea c4 7d 57 eb 94 59 80 2c d6 |....+%..}W..Y.,.| -00000020 80 0e 5e 9f 22 00 82 1c e0 2e 15 1e 5d b6 16 84 |..^.".......]...| -00000030 83 83 79 29 54 49 dc bb b8 f0 f8 71 13 09 7d e9 |..y)TI.....q..}.| -00000040 17 03 03 00 17 93 e8 8f 30 24 3b e7 5e a4 15 b3 |........0$;.^...| -00000050 f6 53 15 d6 f8 4c ab 0c 32 d6 28 ef 17 03 03 00 |.S...L..2.(.....| -00000060 13 2b ea 8e 10 9d 46 08 d9 43 04 da d8 5a 78 f8 |.+....F..C...Zx.| -00000070 33 c0 62 33 |3.b3| +00000000 14 03 03 00 01 01 17 03 03 00 35 64 73 84 51 69 |..........5ds.Qi| +00000010 81 4c a7 ce 8b 39 08 0e 0f 25 d2 24 49 3c 9d 98 |.L...9...%.$I<..| +00000020 c7 46 f5 7e ba bd d1 9d 79 d3 f6 cb 29 00 95 90 |.F.~....y...)...| +00000030 c2 fa c6 65 01 f2 9d 12 a7 db 14 49 e6 0b 40 c9 |...e.......I..@.| +00000040 17 03 03 00 17 df ad 2a 5f f7 bd 94 90 dd 11 24 |.......*_......$| +00000050 b8 97 6e fc d3 93 91 47 36 26 2d e1 17 03 03 00 |..n....G6&-.....| +00000060 13 40 ad 3c c3 49 76 47 c0 02 f0 bc 80 66 3c e4 |.@.<.IvG.....f<.| +00000070 35 28 eb b5 |5(..| diff --git a/src/crypto/tls/testdata/Client-TLSv13-ExportKeyingMaterial b/src/crypto/tls/testdata/Client-TLSv13-ExportKeyingMaterial index ef0029ff07..13fb604874 100644 --- a/src/crypto/tls/testdata/Client-TLSv13-ExportKeyingMaterial +++ b/src/crypto/tls/testdata/Client-TLSv13-ExportKeyingMaterial @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,87 +7,86 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 3e 1e de 6b d3 |....z...v..>..k.| -00000010 83 f0 87 bd 4c 26 fe 68 40 01 f3 c6 c8 39 b4 b3 |....L&.h@....9..| -00000020 46 c7 ae 97 1a b2 67 a0 6a 7f 93 20 00 00 00 00 |F.....g.j.. ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 67 c5 21 e2 8b |....z...v..g.!..| +00000010 b6 6a cc 42 40 24 b2 4f 55 61 d9 20 78 e2 e3 40 |.j.B@$.OUa. x..@| +00000020 83 62 3d 08 e3 0a 31 0b 55 f5 b6 20 00 00 00 00 |.b=...1.U.. ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 03 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 6a |..+.....3.$... j| -00000060 bc 9c e7 36 da f4 e7 90 ca e8 12 65 27 0c f0 b4 |...6.......e'...| -00000070 e9 e4 e8 b9 6e 4c 2c 56 29 7d 97 e5 89 d6 71 14 |....nL,V)}....q.| -00000080 03 03 00 01 01 17 03 03 00 17 14 a3 91 83 8e 8b |................| -00000090 cb 7b 17 d0 1d 4b 37 bb 94 3f c1 18 44 7f ac 57 |.{...K7..?..D..W| -000000a0 0d 17 03 03 02 6d 60 0a 40 97 d6 cb 85 46 8c 9b |.....m`.@....F..| -000000b0 fd c6 3b 03 02 e4 57 84 00 f8 b4 8e 25 0c 85 21 |..;...W.....%..!| -000000c0 70 bc 17 c2 32 57 46 63 a9 42 32 c6 fb 6c b1 7c |p...2WFc.B2..l.|| -000000d0 be 7d 4d 37 9c 72 42 ca 02 39 43 9e 70 4c 73 f6 |.}M7.rB..9C.pLs.| -000000e0 72 45 91 f4 72 8b dc cd c4 25 68 77 d6 91 62 8f |rE..r....%hw..b.| -000000f0 f1 88 ee 92 f8 ce 4c dd 86 d0 eb c7 c7 75 48 fe |......L......uH.| -00000100 3c 27 48 f7 6c 3e 2e 18 64 02 82 0f 08 6f 93 1c |<'H.l>..d....o..| -00000110 15 bb d0 06 36 1c a9 ab 5e 76 b5 7b f1 fa 0b 27 |....6...^v.{...'| -00000120 09 01 23 58 1d 5e 8e 7c a9 ba 87 de c2 05 31 a5 |..#X.^.|......1.| -00000130 7a 20 cc 4c 4a 72 65 3b 8a a5 66 b6 d3 49 10 49 |z .LJre;..f..I.I| -00000140 7c 3d 27 13 88 01 48 65 41 5d 25 b7 6a 96 78 86 ||='...HeA]%.j.x.| -00000150 03 d7 53 7b 9c fb db db c8 d7 5e 71 f4 6c 03 49 |..S{......^q.l.I| -00000160 6b e3 0d a4 07 ac 7c 45 b7 98 d1 0d 24 72 93 1d |k.....|E....$r..| -00000170 f3 f6 51 3b 5f 08 43 fe 5b db 1a ad 84 10 bd d1 |..Q;_.C.[.......| -00000180 88 fe 24 83 e3 46 d1 40 a0 c0 e9 dc 19 75 b2 8f |..$..F.@.....u..| -00000190 5e ea 67 2e 0e a3 79 bd 9f 92 f4 0a d0 fd f0 26 |^.g...y........&| -000001a0 f9 40 d1 3c 76 03 61 ab 11 d1 c6 22 e2 62 ea 35 |.@...@| -000001c0 79 1f 3b 1f 56 6f b7 98 e1 6e bb 4c 0a 11 cf 1c |y.;.Vo...n.L....| -000001d0 68 a2 87 a6 83 72 ab d1 a8 4f 39 48 fc d0 54 bf |h....r...O9H..T.| -000001e0 47 7f 7c 8f 91 7d 40 96 01 b0 ec 62 b0 16 b8 d3 |G.|..}@....b....| -000001f0 02 15 68 e0 7e d7 40 0a 9f 5e cf 21 75 40 d6 4c |..h.~.@..^.!u@.L| -00000200 50 c0 05 8f 8e db b5 44 d3 50 24 be c3 7b 5d 39 |P......D.P$..{]9| -00000210 a5 cb 92 d5 dd 4b 16 c2 6a ec e5 f6 79 6d 04 6f |.....K..j...ym.o| -00000220 26 fd 55 ba 8a 38 db ab dd 78 13 a7 de 23 e7 c0 |&.U..8...x...#..| -00000230 c6 97 34 18 26 2e d0 ef b0 d7 1a 3c af cc 2f 79 |..4.&......<../y| -00000240 ea cd d3 b2 02 99 5a ca c8 49 39 f7 df 64 5d 1a |......Z..I9..d].| -00000250 89 59 92 33 e8 ae 19 ca 42 53 c0 1a 18 6b 9e 8f |.Y.3....BS...k..| -00000260 65 64 b3 b3 6f 4c c8 7c 46 fb 2f 0a ad ed ef 15 |ed..oL.|F./.....| -00000270 14 dd dd ae b0 09 d4 5a ba 2e 78 a2 3e 8e d4 35 |.......Z..x.>..5| -00000280 a2 96 a1 a2 08 f8 0c c6 a3 13 be 09 b8 5f 00 04 |............._..| -00000290 22 78 98 cf 41 24 40 e9 93 4e b0 86 15 e1 5e c2 |"x..A$@..N....^.| -000002a0 cf c3 49 51 1a d8 a1 e6 c0 a9 ea 35 b2 56 ee 2d |..IQ.......5.V.-| -000002b0 08 4e 3b 3d 03 cb f1 54 94 a0 d5 6a 9c bc d8 7c |.N;=...T...j...|| -000002c0 f1 22 10 0a 5c d9 66 87 fa e2 8e e8 41 cc ce cd |."..\.f.....A...| -000002d0 a9 c2 c7 11 4c e2 e4 20 70 ae aa d1 1e 47 b7 ee |....L.. p....G..| -000002e0 b3 45 18 3a a9 31 44 bb b0 7f 73 6a df 2a 67 00 |.E.:.1D...sj.*g.| -000002f0 81 c6 da 9d 8b 65 98 f8 b8 e5 fb da 85 cc 68 c2 |.....e........h.| -00000300 77 ed d5 14 a8 32 74 b1 d1 9c 89 1c 3e b8 d9 d4 |w....2t.....>...| -00000310 89 8d d5 17 03 03 00 99 1c 42 3c cc 38 4d ed 1e |.........B<.8M..| -00000320 14 2e cb e7 a4 43 64 95 a5 8f c6 ff 81 a1 4f d8 |.....Cd.......O.| -00000330 2a 1e 82 cf 4c 6a a2 32 ee 3b 8e f9 d5 63 99 2b |*...Lj.2.;...c.+| -00000340 7a 7e 4c 9b 1a c8 48 78 4f 8e ad af ea 3a 60 65 |z~L...HxO....:`e| -00000350 b6 05 62 78 36 5f c1 40 e3 16 f2 be 48 41 ca a6 |..bx6_.@....HA..| -00000360 e1 10 e4 fe 14 0b 59 6d da fc 35 1e f5 eb fc 71 |......Ym..5....q| -00000370 08 49 a4 04 55 df 5e 09 cc 48 79 ba 3b e6 12 20 |.I..U.^..Hy.;.. | -00000380 4e 57 b3 22 a0 4f 62 b9 30 e3 1c 3e ed 95 6c c7 |NW.".Ob.0..>..l.| -00000390 49 a3 b4 c5 2d 25 11 18 94 7b 10 43 d3 fe de 98 |I...-%...{.C....| -000003a0 74 65 c1 cd d2 d1 67 a1 86 03 a4 7e 12 88 0e 6e |te....g....~...n| -000003b0 49 17 03 03 00 35 d3 c7 fa 89 82 0d 80 29 53 f8 |I....5.......)S.| -000003c0 49 ba 86 1f aa dd ec d4 4c 8d cc a4 88 95 27 a8 |I.......L.....'.| -000003d0 23 dc b2 09 e6 d3 47 34 fa e1 0c 5c 01 ae 95 a0 |#.....G4...\....| -000003e0 4d 1c 42 fe e7 d6 ed cb a7 83 fd |M.B........| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 ba |..+.....3.$... .| +00000060 d1 5b 5d b4 ca a0 c2 a8 20 f2 d4 12 03 c1 95 ba |.[]..... .......| +00000070 f0 ca 33 f0 22 56 f6 15 2c 15 b9 7b c6 78 6a 14 |..3."V..,..{.xj.| +00000080 03 03 00 01 01 17 03 03 00 17 da b1 6a 79 21 51 |............jy!Q| +00000090 6b 2a 57 47 22 f1 be 5d 24 36 ec 0f 82 fd bf b8 |k*WG"..]$6......| +000000a0 5e 17 03 03 02 6d e7 ed 1e c2 be f9 15 80 5e 01 |^....m........^.| +000000b0 73 b7 57 07 40 68 ae 88 d6 43 eb 6b fb 0c a3 4e |s.W.@h...C.k...N| +000000c0 b3 86 9d 5b 92 8a 1c da a2 9b a5 11 a3 e4 4e 2c |...[..........N,| +000000d0 8d 3f 96 20 ec 13 e8 ea 10 47 4a 4a cd 64 ad f9 |.?. .....GJJ.d..| +000000e0 48 af 11 58 ff 2f cd 29 6e 8e 0f fc 31 96 29 b4 |H..X./.)n...1.).| +000000f0 df 57 e4 e9 65 62 b5 35 8e 7f a0 36 1d b1 fd 19 |.W..eb.5...6....| +00000100 c1 b8 7e d9 59 44 a8 3c 97 15 57 fa 64 95 c8 ff |..~.YD.<..W.d...| +00000110 db a5 12 85 86 2c aa bc 87 f1 7e f3 2c 08 64 05 |.....,....~.,.d.| +00000120 4a b1 8e a3 6a 26 e3 e8 fd 80 47 3c 9c a3 4a bb |J...j&....G<..J.| +00000130 73 9b 5d 6e 18 06 ac e5 63 de a8 53 e4 a1 b0 41 |s.]n....c..S...A| +00000140 6a 88 ab 91 94 df 77 55 11 eb 29 97 69 59 67 19 |j.....wU..).iYg.| +00000150 b3 23 df bf 2c ac 15 03 77 88 ad bf df 8d 4e 96 |.#..,...w.....N.| +00000160 59 86 9b 77 e9 74 fc 29 c6 cd 65 c9 aa 7a 36 9b |Y..w.t.)..e..z6.| +00000170 11 f8 47 fd 8b 59 8b 26 8c f4 f1 f1 38 12 0e 02 |..G..Y.&....8...| +00000180 e8 27 f2 ce bc 4a be c3 22 ff ae ce ef 31 d0 4c |.'...J.."....1.L| +00000190 d2 13 b3 1b 40 fd a0 c0 e9 f3 00 54 cf b8 9c 9d |....@......T....| +000001a0 2c 4b de 9a f8 82 11 e7 ea eb cf 45 99 a2 f8 ff |,K.........E....| +000001b0 53 71 e5 e0 bd f1 bb 4e eb 39 7f 85 c4 e9 0d c0 |Sq.....N.9......| +000001c0 46 de b4 1b 0e 1f 18 8c 5b cf 12 03 8a 91 06 23 |F.......[......#| +000001d0 3f f3 54 3e e9 e6 e1 2c 84 d3 4e cc 16 f6 aa 92 |?.T>...,..N.....| +000001e0 6b 24 30 5d f8 a0 52 ca 02 9a 50 58 43 b6 22 04 |k$0]..R...PXC.".| +000001f0 47 c6 ba 1c e1 aa c2 2c ca 50 13 de 2b 2b 34 ec |G......,.P..++4.| +00000200 80 8c 34 77 20 ab f3 f3 42 d2 9a 2b 9d 38 32 f9 |..4w ...B..+.82.| +00000210 de 9c 7b ee 22 4f 41 9e ea 35 88 8c e7 74 f6 ac |..{."OA..5...t..| +00000220 a5 fe af d9 c4 b1 a4 87 aa 9f d9 02 3b 4b 92 2b |............;K.+| +00000230 f4 ea 6f 81 b8 54 ca 77 3d a2 37 f0 60 d8 26 e4 |..o..T.w=.7.`.&.| +00000240 27 04 c8 5b bf bc 5e 9c 8b a9 f6 c1 58 31 de 48 |'..[..^.....X1.H| +00000250 67 5b c5 d7 ae 35 cc d8 8d 01 9b e0 d0 c7 33 f8 |g[...5........3.| +00000260 36 c1 e8 50 32 27 87 6c 64 71 27 3f 66 82 fa 92 |6..P2'.ldq'?f...| +00000270 d3 fe b9 9e d3 e2 63 43 64 13 73 4b e9 34 d9 ae |......cCd.sK.4..| +00000280 49 dd 9c 17 f3 a6 34 27 3e 07 68 ed 6b 98 0a 69 |I.....4'>.h.k..i| +00000290 9c f5 4f 1e fc ac 72 08 7e bb bd 97 fe f9 c1 09 |..O...r.~.......| +000002a0 a2 69 75 c4 e7 a1 83 df 03 0f 74 21 e8 4c 4c d7 |.iu.......t!.LL.| +000002b0 a2 90 5a 4d d9 a2 fa f1 e4 dc ff 75 e8 fe a1 91 |..ZM.......u....| +000002c0 46 a4 c2 0b c3 9e 83 45 40 b4 ba fe ed 9e 3a 81 |F......E@.....:.| +000002d0 a9 27 b9 fa 6f 9e 38 10 2f e6 05 9a 00 43 e9 fb |.'..o.8./....C..| +000002e0 60 b8 26 2e 18 4a 0c 14 6a 9f aa 26 1d 53 9e 4f |`.&..J..j..&.S.O| +000002f0 fc 7e e1 90 60 28 b1 89 db b6 68 58 5d 2a fa 43 |.~..`(....hX]*.C| +00000300 91 99 c1 94 74 77 a9 30 cf 1e 9d 49 fc cd be 6c |....tw.0...I...l| +00000310 5a 72 90 17 03 03 00 99 1b 1f 16 9b 8e 85 5a 8a |Zr............Z.| +00000320 3c c7 d8 e5 86 20 eb 71 83 12 e7 3b 02 ca a1 18 |<.... .q...;....| +00000330 aa b7 ef 67 9d bf 57 46 14 3b ed b2 9b 2e f1 96 |...g..WF.;......| +00000340 67 b0 cc 20 ab 67 63 5c a9 96 d8 22 8e fa f0 94 |g.. .gc\..."....| +00000350 1e 83 6c 53 8a 75 a5 37 1d f1 de 1f a7 22 13 08 |..lS.u.7....."..| +00000360 b7 13 dd 25 26 eb 7a 85 72 33 ed a8 27 be cc ff |...%&.z.r3..'...| +00000370 8d 42 fa 6a f8 0a 59 44 6f 48 4d 58 27 d5 28 fb |.B.j..YDoHMX'.(.| +00000380 37 b0 85 25 49 d0 32 7c dd b8 46 1a aa dc 16 b7 |7..%I.2|..F.....| +00000390 f2 fd 99 17 67 41 c0 2d 75 0d 66 ef 65 e2 5f af |....gA.-u.f.e._.| +000003a0 d8 b4 aa 15 1c 24 40 0d 0d 4f a8 bc c9 92 1c ab |.....$@..O......| +000003b0 91 17 03 03 00 35 f9 69 7e 2a d6 fa 6e 42 25 6c |.....5.i~*..nB%l| +000003c0 da 96 f7 79 5f 02 44 1f d8 1c a2 41 fc eb a5 12 |...y_.D....A....| +000003d0 bf 37 ab b0 40 92 55 50 64 8e 7b e9 e5 f3 04 b5 |.7..@.UPd.{.....| +000003e0 0f 04 93 98 fa ca 24 69 a1 73 26 |......$i.s&| >>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 00 35 b4 e6 ba 4c 98 |..........5...L.| -00000010 46 1c 04 eb 9a 06 4a ef 8c 2a 6e 9a 69 35 78 4c |F.....J..*n.i5xL| -00000020 9a 5e 43 93 11 d8 8d a5 c9 d0 1a db b6 ef 65 ec |.^C...........e.| -00000030 a9 21 e4 0f a6 3e 0a c1 a0 a1 49 35 c3 e7 d9 20 |.!...>....I5... | -00000040 17 03 03 00 17 d7 8d d4 53 d5 40 dc ae d6 73 24 |........S.@...s$| -00000050 f8 f5 65 4e 0f 8d a6 f0 9d 4a e1 5b 17 03 03 00 |..eN.....J.[....| -00000060 13 fd e0 76 85 ee 46 e9 d4 3c 0d 05 56 9b b3 5b |...v..F..<..V..[| -00000070 9c 42 de d4 |.B..| +00000000 14 03 03 00 01 01 17 03 03 00 35 80 f8 9b f1 1d |..........5.....| +00000010 89 31 a8 ea b8 cc 44 a7 6c c3 f7 ea 0f fd f4 a3 |.1....D.l.......| +00000020 4c c2 15 06 bd 79 16 90 a1 bf 44 df e5 21 03 ff |L....y....D..!..| +00000030 e5 83 08 67 70 09 11 21 8e 96 47 e6 f4 e3 36 6e |...gp..!..G...6n| +00000040 17 03 03 00 17 7b 87 be 4e f8 ce 6f 30 b8 5b 95 |.....{..N..o0.[.| +00000050 20 79 23 f7 50 6b 17 b8 13 a2 38 6a 17 03 03 00 | y#.Pk....8j....| +00000060 13 2a d5 e0 a4 17 7d 4f 3b 5a 6c bc 9d 5a 79 5b |.*....}O;Zl..Zy[| +00000070 a8 f6 b2 4a |...J| diff --git a/src/crypto/tls/testdata/Client-TLSv13-HelloRetryRequest b/src/crypto/tls/testdata/Client-TLSv13-HelloRetryRequest index 2ef8e40657..4d58f8d440 100644 --- a/src/crypto/tls/testdata/Client-TLSv13-HelloRetryRequest +++ b/src/crypto/tls/testdata/Client-TLSv13-HelloRetryRequest @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 14 01 00 01 10 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,16 +7,16 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 95 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| -000000a0 00 0a 00 06 00 04 00 1d 00 17 00 0d 00 1a 00 18 |................| +000000a0 00 0a 00 06 00 04 00 1d 00 17 00 0d 00 16 00 14 |................| 000000b0 08 04 04 03 08 07 08 05 08 06 04 01 05 01 06 01 |................| -000000c0 05 03 06 03 02 01 02 03 00 32 00 1a 00 18 08 04 |.........2......| -000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| -000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| -000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| -00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| -00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| +000000c0 05 03 06 03 00 32 00 1a 00 18 08 04 04 03 08 07 |.....2..........| +000000d0 08 05 08 06 04 01 05 01 06 01 05 03 06 03 02 01 |................| +000000e0 02 03 00 2b 00 09 08 03 04 03 03 03 02 03 01 00 |...+............| +000000f0 33 00 26 00 24 00 1d 00 20 2f e5 7d a3 47 cd 62 |3.&.$... /.}.G.b| +00000100 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af c4 cf |C.(.._.).0......| +00000110 c2 ed 90 99 5f 58 cb 3b 74 |...._X.;t| >>> Flow 2 (server to client) 00000000 16 03 03 00 58 02 00 00 54 03 03 cf 21 ad 74 e5 |....X...T...!.t.| 00000010 9a 61 11 be 1d 8c 02 1e 65 b8 91 c2 a2 11 16 7a |.a......e......z| @@ -26,7 +26,7 @@ 00000050 0c 00 2b 00 02 03 04 00 33 00 02 00 17 14 03 03 |..+.....3.......| 00000060 00 01 01 |...| >>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 16 03 03 01 39 01 00 01 35 03 |..........9...5.| +00000000 14 03 03 00 01 01 16 03 03 01 35 01 00 01 31 03 |..........5...1.| 00000010 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000030 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |. ..............| @@ -34,90 +34,89 @@ 00000050 00 00 00 32 cc a9 cc a8 c0 2b c0 2f c0 2c c0 30 |...2.....+./.,.0| 00000060 c0 09 c0 13 c0 0a c0 14 00 9c 00 9d 00 2f 00 35 |............./.5| 00000070 c0 12 00 0a c0 23 c0 27 00 3c c0 07 c0 11 00 05 |.....#.'.<......| -00000080 13 03 13 01 13 02 01 00 00 ba 00 0b 00 02 01 00 |................| +00000080 13 03 13 01 13 02 01 00 00 b6 00 0b 00 02 01 00 |................| 00000090 ff 01 00 01 00 00 17 00 00 00 12 00 00 00 05 00 |................| 000000a0 05 01 00 00 00 00 00 0a 00 06 00 04 00 1d 00 17 |................| -000000b0 00 0d 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 |................| -000000c0 04 01 05 01 06 01 05 03 06 03 02 01 02 03 00 32 |...............2| -000000d0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000e0 05 01 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 |.............+..| -000000f0 08 03 04 03 03 03 02 03 01 00 33 00 47 00 45 00 |..........3.G.E.| -00000100 17 00 41 04 1e 18 37 ef 0d 19 51 88 35 75 71 b5 |..A...7...Q.5uq.| -00000110 e5 54 5b 12 2e 8f 09 67 fd a7 24 20 3e b2 56 1c |.T[....g..$ >.V.| -00000120 ce 97 28 5e f8 2b 2d 4f 9e f1 07 9f 6c 4b 5b 83 |..(^.+-O....lK[.| -00000130 56 e2 32 42 e9 58 b6 d7 49 a6 b5 68 1a 41 03 56 |V.2B.X..I..h.A.V| -00000140 6b dc 5a 89 |k.Z.| +000000b0 00 0d 00 16 00 14 08 04 04 03 08 07 08 05 08 06 |................| +000000c0 04 01 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 |...........2....| +000000d0 08 04 04 03 08 07 08 05 08 06 04 01 05 01 06 01 |................| +000000e0 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 |.........+......| +000000f0 03 03 02 03 01 00 33 00 47 00 45 00 17 00 41 04 |......3.G.E...A.| +00000100 1e 18 37 ef 0d 19 51 88 35 75 71 b5 e5 54 5b 12 |..7...Q.5uq..T[.| +00000110 2e 8f 09 67 fd a7 24 20 3e b2 56 1c ce 97 28 5e |...g..$ >.V...(^| +00000120 f8 2b 2d 4f 9e f1 07 9f 6c 4b 5b 83 56 e2 32 42 |.+-O....lK[.V.2B| +00000130 e9 58 b6 d7 49 a6 b5 68 1a 41 03 56 6b dc 5a 89 |.X..I..h.A.Vk.Z.| >>> Flow 4 (server to client) -00000000 16 03 03 00 9b 02 00 00 97 03 03 fe 4a 7b 8f ac |............J{..| -00000010 ff 16 9d af dc a9 3a c4 e6 91 99 1f 20 62 3d 0b |......:..... b=.| -00000020 1f 75 28 88 56 eb 36 d1 84 e5 58 20 00 00 00 00 |.u(.V.6...X ....| +00000000 16 03 03 00 9b 02 00 00 97 03 03 3e b5 60 d1 cd |...........>.`..| +00000010 f5 a6 76 2c bd 49 f6 0f c2 ff ff 6b c9 f6 45 19 |..v,.I.....k..E.| +00000020 f6 e3 e7 fc 31 8b 49 4e 88 29 55 20 00 00 00 00 |....1.IN.)U ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 03 00 00 |................| 00000050 4f 00 2b 00 02 03 04 00 33 00 45 00 17 00 41 04 |O.+.....3.E...A.| -00000060 22 29 04 60 1f aa 8e 3f bd 63 99 c0 66 e1 e1 d7 |").`...?.c..f...| -00000070 c1 59 57 1d db 9d ba 28 a7 d4 fc fd bd 15 64 14 |.YW....(......d.| -00000080 ec 78 e3 dc e1 c7 3e 07 c3 c5 c4 4e 43 51 10 e2 |.x....>....NCQ..| -00000090 f0 ac 57 6b 56 4b b1 6a 46 e9 70 81 28 68 62 dc |..WkVK.jF.p.(hb.| -000000a0 17 03 03 00 17 2d a3 1d ea 4e f0 8b 4b 19 3f 2d |.....-...N..K.?-| -000000b0 18 ef 9d b1 65 b4 e8 93 b2 80 fe 28 17 03 03 02 |....e......(....| -000000c0 6d 3b 1b 01 88 15 65 6a 66 4a 91 e2 0a c2 c4 64 |m;....ejfJ.....d| -000000d0 c1 f5 d0 c2 fd 1d 18 4a e2 32 e2 d2 6f 25 04 78 |.......J.2..o%.x| -000000e0 96 66 48 53 0b bc 24 0a 6c 46 54 28 bb 63 ed 4e |.fHS..$.lFT(.c.N| -000000f0 ab c3 15 bb ae 1e ea c9 63 2a f1 4b fc 55 60 b2 |........c*.K.U`.| -00000100 8b 46 e3 09 f8 b4 72 87 3c ec 98 e2 21 53 c8 4d |.F....r.<...!S.M| -00000110 9b 07 4a 88 fc 0f c6 42 40 e5 74 5e 3e cf 88 3a |..J....B@.t^>..:| -00000120 f1 d9 ef 88 e8 eb 0a 4b f4 64 12 d1 3f 36 25 f8 |.......K.d..?6%.| -00000130 6d 91 49 a6 c1 ac 9e b7 e7 36 7f a0 0c af 11 48 |m.I......6.....H| -00000140 83 e6 5c ee 23 d9 18 9a 0b 73 76 8f 0e f0 2c 4d |..\.#....sv...,M| -00000150 a8 07 15 da 33 b8 57 de c4 a2 c2 97 ae d2 0b a0 |....3.W.........| -00000160 96 da 1c c5 d6 6d 7f 66 c9 a6 ee ab 91 53 fc d4 |.....m.f.....S..| -00000170 c1 e9 1b 7e e8 be 3e 44 65 8d 91 de 49 86 1c de |...~..>De...I...| -00000180 55 a1 42 5c 4c b5 24 30 67 23 d8 fe ad 54 6f e5 |U.B\L.$0g#...To.| -00000190 e9 ae 78 46 4a f7 cc ed d0 8d d3 65 95 76 ac fb |..xFJ......e.v..| -000001a0 f1 91 d2 90 35 17 5e c4 72 6c 16 2a 52 08 7b 16 |....5.^.rl.*R.{.| -000001b0 10 e4 c4 08 28 86 f7 dd 17 50 6c d0 ea 06 f3 8a |....(....Pl.....| -000001c0 b9 c7 0e fd 67 9d 14 75 13 5b 85 a2 8e 1f 7a be |....g..u.[....z.| -000001d0 17 17 ad 72 a1 40 9d 02 5e 80 16 df e7 30 8a eb |...r.@..^....0..| -000001e0 2d 62 f5 63 e6 c2 96 f3 1c 19 c4 bf 14 50 73 b6 |-b.c.........Ps.| -000001f0 6d 02 0e 7f 70 8f 6f f8 3d 6c 36 60 b5 41 3f 09 |m...p.o.=l6`.A?.| -00000200 f9 72 26 59 fc d3 b2 70 84 2c 9b 7d 7b ab 14 a1 |.r&Y...p.,.}{...| -00000210 43 65 89 51 75 9e 3b 4c 8c 01 8d a9 38 0a e3 fe |Ce.Qu.;L....8...| -00000220 0f f1 58 c5 9e b2 42 28 1e 7c 4a e0 6f fe 53 69 |..X...B(.|J.o.Si| -00000230 e0 bc 8c c2 d5 00 c4 00 c6 f6 47 fe 70 cc a5 c0 |..........G.p...| -00000240 cb 21 d8 89 37 8a ef bc c6 9b 9d 5d 74 a7 22 6b |.!..7......]t."k| -00000250 5c e0 24 89 8d 88 a1 19 8a bf e6 bb d3 43 e3 71 |\.$..........C.q| -00000260 38 99 60 20 2c d5 6e 93 83 20 be 0f ce 35 3d 02 |8.` ,.n.. ...5=.| -00000270 2f 39 5e bb 06 68 b2 c7 fc 42 be a7 81 f5 40 dd |/9^..h...B....@.| -00000280 49 6f 4b 1b 3f a9 6c 5b dd b9 38 29 01 be f7 76 |IoK.?.l[..8)...v| -00000290 cc 7b 8e 34 25 72 64 2a 4b bc 38 f7 07 4e cd 16 |.{.4%rd*K.8..N..| -000002a0 0b 9a 1f c5 5f 3e 5d 6e fe 2c d6 fd 7c cc af 97 |...._>]n.,..|...| -000002b0 89 04 75 20 83 c8 a9 4a d8 65 08 a0 4f 6a f7 71 |..u ...J.e..Oj.q| -000002c0 4a f0 34 b9 49 29 f1 44 d7 95 86 c1 cf fd 3a 46 |J.4.I).D......:F| -000002d0 fb 0a 7a 13 ee ca 0d ce bd 1e 62 63 cd 63 7a 75 |..z.......bc.czu| -000002e0 26 a6 0c 6e d6 77 06 df f7 1b e1 6c 96 e8 55 20 |&..n.w.....l..U | -000002f0 62 f0 98 2d 22 28 3b 95 9b ec dc d7 cb 6c 1d b5 |b..-"(;......l..| -00000300 3a de fd 2d a7 23 59 4b 69 85 20 13 8c e0 a4 b5 |:..-.#YKi. .....| -00000310 c1 e0 72 08 e7 c2 c9 c6 c2 5c 23 e7 d3 15 dd de |..r......\#.....| -00000320 6a 9b d2 0c 47 4d d1 e7 d8 a9 4d 5f 60 03 17 03 |j...GM....M_`...| -00000330 03 00 99 e8 da 65 12 48 68 fa d8 9c ee bf c8 3d |.....e.Hh......=| -00000340 a4 5d e1 bc 8a e3 18 46 a8 89 c9 7b 3e a2 b0 fb |.].....F...{>...| -00000350 1c 7e 64 69 4a 06 aa 0a ce 79 b6 e0 8b 57 a7 7b |.~diJ....y...W.{| -00000360 7f b7 80 3f cf 1b f2 00 2f 22 63 00 97 60 e8 bf |...?..../"c..`..| -00000370 16 c1 37 fd e0 40 96 24 e1 48 c8 c5 7d a4 50 ed |..7..@.$.H..}.P.| -00000380 04 c4 17 88 84 e6 d3 8c b9 8b bf 81 f8 3b 19 32 |.............;.2| -00000390 27 d2 f6 41 2f d1 fb f3 49 79 c9 99 6d db c8 25 |'..A/...Iy..m..%| -000003a0 36 fa 72 d1 c3 2c 1f 01 90 e0 a4 45 2b 3f 24 59 |6.r..,.....E+?$Y| -000003b0 4c 87 04 af 4c 8b 48 04 b3 f6 e5 19 ab cd 57 f1 |L...L.H.......W.| -000003c0 1c 4f a8 ec 48 23 20 65 df 7b cc 01 17 03 03 00 |.O..H# e.{......| -000003d0 35 64 87 14 09 0b dd 3e b1 58 d7 b5 46 e7 e3 c4 |5d.....>.X..F...| -000003e0 76 fa 86 c4 6d 53 97 fd 4f c8 29 77 a7 f8 4f 70 |v...mS..O.)w..Op| -000003f0 0d 91 e9 ba 06 a7 83 df fb 6f 8e c9 fb fb 8f 88 |.........o......| -00000400 1d 2b f9 ce cc 5c |.+...\| +00000060 f8 a5 4d 81 0a 05 43 42 0b d6 ca 3b 3e 02 44 20 |..M...CB...;>.D | +00000070 56 89 80 d3 03 50 1a b4 70 50 78 aa 81 2b 5b 03 |V....P..pPx..+[.| +00000080 6c 38 22 c1 17 4f e5 b9 57 ab 58 33 76 8e ae c9 |l8"..O..W.X3v...| +00000090 a0 74 47 a0 10 c0 5c a7 8c 77 24 c8 90 bb f4 2a |.tG...\..w$....*| +000000a0 17 03 03 00 17 0c 2a 67 cb 9f a8 e8 5b 97 4a 75 |......*g....[.Ju| +000000b0 24 80 65 28 15 a7 d4 71 eb 24 74 7e 17 03 03 02 |$.e(...q.$t~....| +000000c0 6d 89 a3 fa 0f a6 dd dc b5 5a f9 03 93 5a 2a a6 |m........Z...Z*.| +000000d0 2f 65 81 9e 0d 2c 21 25 0b 7c 04 41 40 3e 95 a4 |/e...,!%.|.A@>..| +000000e0 31 21 2a 08 db 35 bc 5a 93 aa b4 8f 30 28 0c e5 |1!*..5.Z....0(..| +000000f0 11 f6 31 d6 7a b0 df 9c f3 76 30 72 e2 27 1c d3 |..1.z....v0r.'..| +00000100 75 68 3d 63 71 27 da 72 7a 18 19 da 25 94 ee e3 |uh=cq'.rz...%...| +00000110 62 6f 45 c5 38 67 ba 4a 1f 6f f3 ea 46 c6 09 ad |boE.8g.J.o..F...| +00000120 db 3c 42 3c d7 8d 9c 49 8d 2c 22 15 74 98 60 5b |...| +00000190 c6 b2 c3 eb ec 03 7d d2 85 2b c3 7f e7 07 c1 50 |......}..+.....P| +000001a0 c9 b6 6f ab 7a 86 7b b3 fd 8b 9a 6a 3c ea 18 06 |..o.z.{....j<...| +000001b0 13 e4 a4 9b d0 2c ef 8c 3f ea 8e d8 c4 d4 54 33 |.....,..?.....T3| +000001c0 2e e5 b6 40 85 a8 4b 5d 9b 3c f2 9e 70 5a 23 d7 |...@..K].<..pZ#.| +000001d0 c1 e1 b4 7a 42 69 fb b1 49 99 cf 60 5c 8a c0 7f |...zBi..I..`\...| +000001e0 c2 8c 8c 26 4f 0f 6c 10 bd e4 51 ab 19 4d 2a 63 |...&O.l...Q..M*c| +000001f0 b3 39 1e d6 55 00 c9 89 3a c0 5a 2b 5b 0a e9 10 |.9..U...:.Z+[...| +00000200 56 4c 8a 88 2d 37 27 50 07 2a 77 19 92 6a a0 67 |VL..-7'P.*w..j.g| +00000210 c9 34 e7 b2 e4 f8 f8 fc e0 24 c1 8e 6a 04 b0 6a |.4.......$..j..j| +00000220 35 1b 5a 74 78 34 81 09 d5 ed bc 61 55 bd bf 6f |5.Ztx4.....aU..o| +00000230 e4 a1 13 e9 b1 9a de de 54 3b 99 19 f7 90 74 be |........T;....t.| +00000240 48 b0 80 92 e7 19 91 17 12 12 9a 08 77 bf 2c 21 |H...........w.,!| +00000250 33 51 9a 02 fc 8c c5 7b 90 52 89 61 df 64 1f af |3Q.....{.R.a.d..| +00000260 1e 49 2a 7b 33 1b 47 df 34 7f aa ca e3 16 2d 28 |.I*{3.G.4.....-(| +00000270 94 cc 07 d1 0d 1a 07 80 a4 c6 cc 10 a7 72 58 bc |.............rX.| +00000280 65 92 de a1 c7 8b e5 63 9a 83 85 eb ee e8 8d e9 |e......c........| +00000290 63 06 f0 6d 14 81 5a d5 a6 1b 84 d3 a2 5d f1 94 |c..m..Z......]..| +000002a0 a4 af f7 eb 85 d3 00 41 12 b3 bc bf 4a 1a c1 c0 |.......A....J...| +000002b0 b0 46 38 63 f4 05 de e0 c2 b7 ee 5b f8 c8 6c e7 |.F8c.......[..l.| +000002c0 fe a4 3d a2 52 e8 25 4c d0 b4 dd 1a aa e4 9c 5b |..=.R.%L.......[| +000002d0 3c 5c 9b 0f e2 ca 18 a8 59 1d 22 d8 2d cb ca 0d |<\......Y.".-...| +000002e0 61 f0 8e be 55 5e 0b b4 72 2f 32 f1 47 fe b8 94 |a...U^..r/2.G...| +000002f0 ec 14 af c4 59 dd f9 b1 1b 18 84 44 54 c0 16 f0 |....Y......DT...| +00000300 f4 e6 19 82 fb 00 84 6e c0 87 05 82 33 7b 62 d8 |.......n....3{b.| +00000310 e3 83 86 55 d6 06 bd e5 a3 1c c0 f1 ef b3 ae 2c |...U...........,| +00000320 f7 6e fa 9a 3d 6c cf de 5d 77 54 08 03 0c 17 03 |.n..=l..]wT.....| +00000330 03 00 99 03 00 b3 cc ca 76 27 18 16 0a 8e d0 81 |........v'......| +00000340 32 5d 9e 32 75 5e bb b4 c5 5c 6b 61 62 38 3d 2e |2].2u^...\kab8=.| +00000350 21 1a 93 c9 fc b7 90 74 17 78 ae 18 78 86 fc 6d |!......t.x..x..m| +00000360 0b 0c 50 d3 a6 5a 98 a8 76 6f ff 3b 98 f5 2f 11 |..P..Z..vo.;../.| +00000370 3d af 84 92 04 42 93 33 33 5c 9a f2 fc 5f 05 dd |=....B.33\..._..| +00000380 89 a8 c3 c1 e7 92 0f 76 3a ed da 7c 25 e0 96 89 |.......v:..|%...| +00000390 27 97 c1 3e 27 70 3f a4 15 f3 24 6a 47 43 7f d7 |'..>'p?...$jGC..| +000003a0 70 b9 7b 2d 3d 53 c0 f6 53 85 fb f7 62 4a 01 8e |p.{-=S..S...bJ..| +000003b0 3e 30 3b b4 79 17 af 2e 73 56 e5 de ba 48 0e 0c |>0;.y...sV...H..| +000003c0 e0 d3 0a 80 07 b9 53 f1 1d a6 cf 29 17 03 03 00 |......S....)....| +000003d0 35 f8 8f 94 ec 0a b9 d9 b1 2c d3 02 c9 0b ef 19 |5........,......| +000003e0 89 ee a9 c0 b1 f3 9c 87 09 0e fb 9a e2 ad 4a 1e |..............J.| +000003f0 16 6d 84 af b3 fa b9 af 98 79 54 7d 45 29 99 85 |.m.......yT}E)..| +00000400 8c a9 69 b6 ee 4e |..i..N| >>> Flow 5 (client to server) -00000000 17 03 03 00 35 44 f5 f8 bb f8 ef a5 7e c7 6f 34 |....5D......~.o4| -00000010 88 d9 96 2e 59 11 6e 08 0d 17 20 fb 45 c6 86 7c |....Y.n... .E..|| -00000020 d3 ac 29 0f 50 89 d3 e9 b8 eb 42 63 bc 18 49 99 |..).P.....Bc..I.| -00000030 75 d5 08 2a 72 57 ea a2 a2 21 17 03 03 00 17 38 |u..*rW...!.....8| -00000040 12 6b 56 f1 33 2a 3d 42 94 42 85 e5 3b 49 10 52 |.kV.3*=B.B..;I.R| -00000050 13 82 59 6d 28 fa 17 03 03 00 13 ab 4c ec 58 94 |..Ym(.......L.X.| -00000060 13 b6 f6 91 ce b5 91 f7 34 7f c5 98 38 f2 |........4...8.| +00000000 17 03 03 00 35 4c c3 af 0b 49 46 e0 51 3a 73 a8 |....5L...IF.Q:s.| +00000010 28 46 95 22 ef d7 05 8a fc 4f 12 98 2f 09 ca a9 |(F.".....O../...| +00000020 4d b8 17 e4 15 15 b5 13 3f 1a cb 8e 3d 19 00 d6 |M.......?...=...| +00000030 19 af 90 66 0e 93 d4 22 4d 54 17 03 03 00 17 56 |...f..."MT.....V| +00000040 31 7c 05 02 1d 84 64 d0 32 21 8d c1 61 7e 7f ce |1|....d.2!..a~..| +00000050 d3 45 b2 df ba df 17 03 03 00 13 3a 57 b6 2e 79 |.E.........:W..y| +00000060 96 09 e9 66 f2 85 7a 21 88 45 cc b4 ff 12 |...f..z!.E....| diff --git a/src/crypto/tls/testdata/Client-TLSv13-KeyUpdate b/src/crypto/tls/testdata/Client-TLSv13-KeyUpdate index 18d547b9ae..7d04d95a27 100644 --- a/src/crypto/tls/testdata/Client-TLSv13-KeyUpdate +++ b/src/crypto/tls/testdata/Client-TLSv13-KeyUpdate @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 1c 01 00 01 18 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 18 01 00 01 14 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,99 +7,98 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 9d 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 99 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| 000000a0 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 00 0d |................| -000000b0 00 1a 00 18 08 04 04 03 08 07 08 05 08 06 04 01 |................| -000000c0 05 01 06 01 05 03 06 03 02 01 02 03 00 32 00 1a |.............2..| -000000d0 00 18 08 04 04 03 08 07 08 05 08 06 04 01 05 01 |................| -000000e0 06 01 05 03 06 03 02 01 02 03 00 2b 00 09 08 03 |...........+....| -000000f0 04 03 03 03 02 03 01 00 33 00 26 00 24 00 1d 00 |........3.&.$...| -00000100 20 2f e5 7d a3 47 cd 62 43 15 28 da ac 5f bb 29 | /.}.G.bC.(.._.)| -00000110 07 30 ff f6 84 af c4 cf c2 ed 90 99 5f 58 cb 3b |.0.........._X.;| -00000120 74 |t| +000000b0 00 16 00 14 08 04 04 03 08 07 08 05 08 06 04 01 |................| +000000c0 05 01 06 01 05 03 06 03 00 32 00 1a 00 18 08 04 |.........2......| +000000d0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| +000000e0 06 03 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 |.......+........| +000000f0 02 03 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d |....3.&.$... /.}| +00000100 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..| +00000110 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 84 8c be 3d 27 |....z...v.....='| -00000010 0b ef 9d b0 8b bd 21 91 9d 12 b8 4c f2 0f bb 29 |......!....L...)| -00000020 6a f4 1c 56 09 bb 85 c6 9b b7 7b 20 00 00 00 00 |j..V......{ ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 b2 4e f2 da 8b |....z...v...N...| +00000010 79 31 33 74 d5 37 8e 44 9d ad 6f 91 c4 bb 5d d4 |y13t.7.D..o...].| +00000020 fd f1 e2 42 50 43 f5 3c 7f cf 92 20 00 00 00 00 |...BPC.<... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 03 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 32 |..+.....3.$... 2| -00000060 ef 3c 13 61 12 2a 28 1c 73 77 7e 6f 7a 43 38 d3 |.<.a.*(.sw~ozC8.| -00000070 6f f1 a6 87 34 92 b5 ad 55 7a a0 db 1c 5b 1e 14 |o...4...Uz...[..| -00000080 03 03 00 01 01 17 03 03 00 17 18 cf a9 9c 7d 12 |..............}.| -00000090 7e f7 a7 44 09 34 a6 40 22 8b 73 f8 87 69 35 ba |~..D.4.@".s..i5.| -000000a0 5a 17 03 03 02 6d 49 c5 1d 7e 9c f9 d7 5d 9f 3f |Z....mI..~...].?| -000000b0 41 5d a7 14 68 12 0b 3f 00 38 25 30 d9 9f 84 09 |A]..h..?.8%0....| -000000c0 dd c9 9c 76 8a 73 40 5f 63 83 a9 4a b6 f1 4c 36 |...v.s@_c..J..L6| -000000d0 74 13 bc 4b a6 47 9d 5b 50 3a 56 c7 6e 65 46 5d |t..K.G.[P:V.neF]| -000000e0 6a 1a 33 1d 9a 67 76 a2 7d 98 05 f3 3b 8b 62 3e |j.3..gv.}...;.b>| -000000f0 b0 72 f8 16 18 eb 47 ca fe bc 83 ca 0a b6 df 6f |.r....G........o| -00000100 1c dd 95 6e 27 60 a3 88 40 0f a0 3f 6e f8 a8 9c |...n'`..@..?n...| -00000110 20 ee 43 60 66 e7 97 8c c2 03 a8 e6 3d 87 6f cd | .C`f.......=.o.| -00000120 e9 3a 69 de 10 1f 49 ea 9d 9b 4d c9 e9 58 55 b2 |.:i...I...M..XU.| -00000130 44 b7 09 f2 29 65 d1 fa c1 00 b8 c0 0c 4d a1 89 |D...)e.......M..| -00000140 1c 03 c5 0a 20 d9 88 b2 8e c6 b6 19 e1 a4 10 92 |.... ...........| -00000150 2b 86 20 f8 0e 7c ed a5 37 03 9e 36 7a bd 0b de |+. ..|..7..6z...| -00000160 13 ef 6e e8 6d 1c 94 4d 6a 3f 17 db c8 44 84 47 |..n.m..Mj?...D.G| -00000170 8b 23 d1 64 c8 90 7a da ac 11 a0 51 c0 f2 76 10 |.#.d..z....Q..v.| -00000180 57 1e bd a5 37 25 a9 a0 1d 3f cf 71 b1 d4 80 ed |W...7%...?.q....| -00000190 b9 eb 28 ec df 36 c4 f0 d1 2b fa 5b 13 fd b4 1a |..(..6...+.[....| -000001a0 82 3a e2 53 53 90 9a 42 0f 4b 3f 62 0e d5 e3 ab |.:.SS..B.K?b....| -000001b0 c2 93 b6 ab e2 db f5 43 fd f3 70 6d 44 68 c4 56 |.......C..pmDh.V| -000001c0 4c 37 5a 9e 50 06 94 b6 d8 e1 f7 0c 97 f9 0f d1 |L7Z.P...........| -000001d0 4f 5a 47 b4 1c 0a 1b 0a ff bc 5d 08 7d ef b7 e6 |OZG.......].}...| -000001e0 72 35 40 12 02 cc ed 48 19 ff e6 c8 e2 90 30 42 |r5@....H......0B| -000001f0 04 bc 3a d0 a1 27 c6 c2 c8 b1 ab 48 a8 ff b2 c4 |..:..'.....H....| -00000200 2e 1b 3b 9d 14 01 01 2e 53 1d 0c f7 6a 8d 49 64 |..;.....S...j.Id| -00000210 5a bf 6e de 66 91 a8 97 2a 9f 2f 36 01 2e 33 2d |Z.n.f...*./6..3-| -00000220 de 5e a8 ba a1 66 fa 8a 18 c3 6e 33 a2 ab 3e 02 |.^...f....n3..>.| -00000230 8b 25 21 dd 8b 9f de 4e 91 c9 14 dd 92 f0 4d b2 |.%!....N......M.| -00000240 15 bf 44 89 8d 00 67 5e 01 c8 6d e7 44 3f 2b c6 |..D...g^..m.D?+.| -00000250 cf 7a c1 4d fc b3 c1 81 f3 07 eb 6c 64 14 19 f1 |.z.M.......ld...| -00000260 94 86 c0 c6 ea 95 35 c2 52 0e 67 37 74 df 27 c7 |......5.R.g7t.'.| -00000270 76 1c 8e 2c 36 7d ef 71 c3 61 dd cb 8e 82 7b a1 |v..,6}.q.a....{.| -00000280 78 c8 88 3c 90 31 17 7c d6 f5 7c ed 67 64 ed 16 |x..<.1.|..|.gd..| -00000290 bf 59 78 ee ee 6c 3e 3c bd ba 29 21 23 15 50 68 |.Yx..l><..)!#.Ph| -000002a0 40 23 ea b7 0f 03 9d 84 52 23 57 c1 dd 03 26 55 |@#......R#W...&U| -000002b0 01 3d 46 ff 15 d0 08 fb e1 a5 90 ac c2 e8 c8 18 |.=F.............| -000002c0 96 e4 79 9a 0f 09 25 71 9a a0 fa 43 08 9a ca a4 |..y...%q...C....| -000002d0 f8 8d cd f9 4f d4 d3 50 4e d2 5e 41 3a e0 e7 2e |....O..PN.^A:...| -000002e0 60 c6 70 8e 10 20 68 a3 8f ac 68 22 14 a2 54 5c |`.p.. h...h"..T\| -000002f0 ee 37 94 68 ff 93 cb 21 6b 2d 61 a3 ba 95 08 15 |.7.h...!k-a.....| -00000300 cc 2d f1 be 22 3d 7b 02 63 01 c2 9a 88 37 aa 76 |.-.."={.c....7.v| -00000310 2c 98 d1 17 03 03 00 99 21 4e 58 2e 4f 2b 3c c6 |,.......!NX.O+<.| -00000320 2e ad 3b 8b d2 bf 54 81 ca 81 c6 7d 8c 40 62 cd |..;...T....}.@b.| -00000330 6a 42 6b 4a 81 b9 81 ce dc c2 e8 3e 63 79 c8 2c |jBkJ.......>cy.,| -00000340 2c 8c 06 eb 70 2c 04 e1 62 6a 56 6e 72 c4 c8 69 |,...p,..bjVnr..i| -00000350 39 39 c3 c2 94 3c bd 6f cf 47 50 bb 8f d7 8e ac |99...<.o.GP.....| -00000360 68 4b 0b 06 e9 6a 44 68 fa 0e 0e 42 82 37 2a 1f |hK...jDh...B.7*.| -00000370 7d 0a 29 0a 18 f4 4f 5b 39 7f 40 9d 63 fe 20 b8 |}.)...O[9.@.c. .| -00000380 6e 4a 64 9d 5f 18 68 16 6e 26 e1 5c 42 c8 0b 74 |nJd._.h.n&.\B..t| -00000390 43 66 5a 9f 1e 32 2d bd f3 2f 45 86 c4 e3 d2 c3 |CfZ..2-../E.....| -000003a0 85 2e 7e ad 29 26 f8 f5 de f6 5c b2 c2 3f d1 61 |..~.)&....\..?.a| -000003b0 6a 17 03 03 00 35 59 e1 a3 78 46 e2 7f db 1e a6 |j....5Y..xF.....| -000003c0 28 ea 50 8a f5 33 1d eb 49 ef b3 34 ea 6a f8 76 |(.P..3..I..4.j.v| -000003d0 69 70 ac d1 49 77 79 19 2c 2d 7c 95 9c e0 b7 c0 |ip..Iwy.,-|.....| -000003e0 d2 6c d6 dd 3d ee 5a 89 0c 7b 66 |.l..=.Z..{f| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 74 |..+.....3.$... t| +00000060 4e d7 36 eb 1f e1 51 c6 8e 48 2d c4 67 e8 c1 d5 |N.6...Q..H-.g...| +00000070 32 2b 4b 64 77 43 ee 04 eb 9c 07 03 45 4f 25 14 |2+KdwC......EO%.| +00000080 03 03 00 01 01 17 03 03 00 17 c5 a9 04 f5 f0 9c |................| +00000090 db 59 34 64 cb 01 0d 41 fe c9 75 76 f5 0c 43 f0 |.Y4d...A..uv..C.| +000000a0 af 17 03 03 02 6d 85 7c c1 3f 80 ae 73 7a 81 6a |.....m.|.?..sz.j| +000000b0 cc ec 35 79 a9 6c b4 81 4b 11 2e a1 4b 59 23 9b |..5y.l..K...KY#.| +000000c0 fc ad 8a e6 ec 39 f8 db cc f9 36 c7 93 25 47 38 |.....9....6..%G8| +000000d0 9e 1c f9 9e 88 25 96 e4 bc cf 9c 8e c7 d3 e3 e4 |.....%..........| +000000e0 4b 9a 75 f1 fa d0 2b 46 a6 56 ff c2 59 16 77 8a |K.u...+F.V..Y.w.| +000000f0 f3 1f 31 14 0f cf b9 88 4b 21 7b d3 39 e5 96 82 |..1.....K!{.9...| +00000100 bd 16 fb 6a af 12 29 b2 7a 0a 11 ae 90 9b 3c 34 |...j..).z.....<4| +00000110 52 89 2d 4a b5 81 68 18 18 e4 c4 56 b7 76 c9 23 |R.-J..h....V.v.#| +00000120 5d 0e 8e f4 a5 a4 63 a2 76 06 66 67 a8 96 cd d8 |].....c.v.fg....| +00000130 3f cf bc 0d e5 c6 5c 27 7f 43 bf a8 b7 02 f9 24 |?.....\'.C.....$| +00000140 ee b5 a1 09 63 d6 7c 5a 9b e0 f4 3b 99 f9 03 42 |....c.|Z...;...B| +00000150 0a eb 55 f5 77 ee 38 70 6b de 27 63 47 2f ed 78 |..U.w.8pk.'cG/.x| +00000160 f7 a1 39 d8 c4 4a 9c a8 2b 38 8c 3c c4 3c 8a 24 |..9..J..+8.<.<.$| +00000170 63 7e df bc 9f 21 8e 04 9e 53 ce 0a 46 99 87 3d |c~...!...S..F..=| +00000180 80 70 cc 27 05 82 2a dc 7b bb 03 e9 84 6f 18 ca |.p.'..*.{....o..| +00000190 4d be b1 73 06 72 27 1e 80 c0 84 73 69 39 07 b3 |M..s.r'....si9..| +000001a0 72 81 09 9b 03 8d 97 36 a7 04 a7 08 01 94 d0 17 |r......6........| +000001b0 6c 13 cd 9d 47 a9 81 b1 59 fd 90 1b 47 04 b5 30 |l...G...Y...G..0| +000001c0 64 6a b6 f5 52 0f f8 41 83 0e e7 ee fc ac 7e f5 |dj..R..A......~.| +000001d0 02 65 eb 12 1d 9a 0e cc f1 4c 12 f9 17 98 4e 32 |.e.......L....N2| +000001e0 27 24 41 15 bf 17 c2 ae 73 1c 45 19 7b 68 e5 74 |'$A.....s.E.{h.t| +000001f0 07 6b 59 92 f3 a7 cc c0 c7 bb a4 60 d9 2d 17 e9 |.kY........`.-..| +00000200 4f e0 90 0c 70 00 0e 75 55 78 37 0c 4b 16 06 78 |O...p..uUx7.K..x| +00000210 bf cb 77 1c 8c 4b b3 f5 68 99 06 2d b7 50 a8 03 |..w..K..h..-.P..| +00000220 54 36 85 33 41 1c 1a 16 16 bc f3 76 9f d9 65 c8 |T6.3A......v..e.| +00000230 31 a5 f4 1f e1 ab 36 ac 33 54 bb fb f2 57 ec 46 |1.....6.3T...W.F| +00000240 85 79 15 35 30 84 cc 8b a6 bb d8 cf 6c 88 8b ab |.y.50.......l...| +00000250 d1 36 bd 2d 9a 11 6e 4d 09 5c 10 06 7e 26 23 b6 |.6.-..nM.\..~&#.| +00000260 57 4a 18 dd 5b 0c 45 1c 4c 60 27 6d cf 77 1c 70 |WJ..[.E.L`'m.w.p| +00000270 ef b9 81 af 02 fc 7b ca 80 0e 1f 48 ad 22 ce 33 |......{....H.".3| +00000280 44 2f 28 47 a8 cd a3 98 e6 28 8e dc ac df b5 1c |D/(G.....(......| +00000290 34 47 8a 7a 98 c5 79 c9 38 ba 34 7e 76 63 51 3d |4G.z..y.8.4~vcQ=| +000002a0 ae 9b eb 2c bb 89 6d 01 cd 81 ab a4 b8 4f 27 82 |...,..m......O'.| +000002b0 23 09 fb 9f b2 56 0f 7a a3 f6 13 70 c3 6d 13 61 |#....V.z...p.m.a| +000002c0 eb dd 39 da 99 8e a3 00 9e 7a 48 fe d8 78 c2 ff |..9......zH..x..| +000002d0 c9 ce 14 3f 37 8d 4d fb 80 6b 39 e6 cc f1 23 a0 |...?7.M..k9...#.| +000002e0 e2 e5 cd 3d ed 07 80 85 ea 60 9d 6b e0 93 7f 53 |...=.....`.k...S| +000002f0 89 94 32 b8 a1 4e f0 d7 33 f6 9c 07 48 f6 43 89 |..2..N..3...H.C.| +00000300 3b 52 89 0f 31 98 a8 86 5b 2b c5 6c 0d 0c 26 04 |;R..1...[+.l..&.| +00000310 9f 90 29 17 03 03 00 99 62 df 1f c6 0c 83 e0 8e |..).....b.......| +00000320 9e 30 43 4b 9b 63 c7 b7 96 bf 79 35 14 89 43 f6 |.0CK.c....y5..C.| +00000330 5e e6 fb ec 28 6a 62 cc 64 4a e8 86 07 da 38 f3 |^...(jb.dJ....8.| +00000340 30 c7 5a 98 78 fc e8 ee ab 53 81 72 15 92 e1 1b |0.Z.x....S.r....| +00000350 d1 78 1d d3 7a 5b 7a c6 78 82 6e 8e ec a6 bd d7 |.x..z[z.x.n.....| +00000360 8a da 12 68 64 65 2b ec 46 c4 b4 01 a8 e9 b6 00 |...hde+.F.......| +00000370 67 b1 bf ac 26 7e 11 64 3d de 40 ae 57 8d 7d 07 |g...&~.d=.@.W.}.| +00000380 3f 06 65 6c 92 10 42 b9 be 30 ef bd 26 a2 87 96 |?.el..B..0..&...| +00000390 12 61 4a 56 3b 26 c1 d2 81 d3 71 d0 4c 6d 01 c3 |.aJV;&....q.Lm..| +000003a0 a0 ec 55 96 0c 10 2a f6 9e 6c 99 78 5a 49 a8 50 |..U...*..l.xZI.P| +000003b0 af 17 03 03 00 35 5e 78 9a 3e c9 92 b6 2d 32 1d |.....5^x.>...-2.| +000003c0 cd 16 ab da cd e7 93 0d c2 90 a2 62 7b 3c 54 bb |...........b{>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 00 35 38 8f 9d c3 39 |..........58...9| -00000010 03 62 38 be b8 03 22 be 53 0a 0e ff 33 82 29 2a |.b8...".S...3.)*| -00000020 3e a5 4b d0 0e fe 6b c8 bc d8 07 71 77 ca 0f aa |>.K...k....qw...| -00000030 a9 8f 3e 6e 69 5d fc 37 0c 5a f6 1d 8b fc 46 8d |..>ni].7.Z....F.| -00000040 17 03 03 00 17 ac 0d 5d 2a 0b dd 2e 62 ab ac cc |.......]*...b...| -00000050 d6 43 d4 76 ea 52 62 7f 5b 10 93 63 |.C.v.Rb.[..c| +00000000 14 03 03 00 01 01 17 03 03 00 35 a8 d6 93 8f 7e |..........5....~| +00000010 65 3a ee 6f c8 37 2a 27 14 dc b7 19 0e aa 14 b6 |e:.o.7*'........| +00000020 22 21 2d ea f4 00 d1 60 55 c0 f1 56 db 43 7a f0 |"!-....`U..V.Cz.| +00000030 1a 47 ce 93 d9 07 7e 61 43 92 3a 95 a9 54 7b c6 |.G....~aC.:..T{.| +00000040 17 03 03 00 17 e6 e4 52 74 15 e2 18 d7 14 59 29 |.......Rt.....Y)| +00000050 59 d8 ce 49 68 3a a8 79 9e f4 ee f1 |Y..Ih:.y....| >>> Flow 4 (server to client) -00000000 17 03 03 00 16 e0 09 97 59 52 91 65 5a cd 3b d5 |........YR.eZ.;.| -00000010 95 c6 be 7a c7 a8 48 a6 39 73 44 |...z..H.9sD| +00000000 17 03 03 00 16 e6 cd 54 e3 31 d9 70 20 25 f4 aa |.......T.1.p %..| +00000010 cd 8f fe e7 88 6b 7f 62 9b 7b de |.....k.b.{.| >>> Flow 5 (client to server) -00000000 17 03 03 00 16 12 d4 4b bd d2 98 10 6a 72 29 bc |.......K....jr).| -00000010 6d c1 23 38 88 c3 7b d8 32 b6 7f |m.#8..{.2..| +00000000 17 03 03 00 16 bd e9 c4 24 4a 6d 76 aa 83 bb da |........$Jmv....| +00000010 ec 9e d0 c9 38 cc 6b 3c 65 38 91 |....8.k>> Flow 6 (server to client) -00000000 17 03 03 00 1a 0c 7b fb 83 bb 87 60 52 4d fb b8 |......{....`RM..| -00000010 c8 cf 95 98 80 60 87 f4 04 ee d1 0a 5d 57 51 |.....`......]WQ| +00000000 17 03 03 00 1a 6a e1 ea df 76 a9 fc 4a 80 7b 49 |.....j...v..J.{I| +00000010 dd fa c3 87 e9 e7 c9 b3 ab bf bc a7 d8 cd 36 |..............6| >>> Flow 7 (client to server) -00000000 17 03 03 00 1d b1 21 2b 13 dc 27 c2 50 07 61 8d |......!+..'.P.a.| -00000010 63 fa c3 1f 1b ab 19 77 a0 8b 97 5f 03 26 80 54 |c......w..._.&.T| -00000020 04 00 17 03 03 00 13 91 28 90 11 9b f8 75 52 b8 |........(....uR.| -00000030 de 14 32 09 9d 2b 77 bb 3c 5a |..2..+w.>> Flow 1 (client to server) -00000000 16 03 01 01 37 01 00 01 33 03 03 00 00 00 00 00 |....7...3.......| +00000000 16 03 01 01 33 01 00 01 2f 03 03 00 00 00 00 00 |....3.../.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,90 +7,90 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 b8 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 b4 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| -000000a0 00 0a 00 04 00 02 00 17 00 0d 00 1a 00 18 08 04 |................| +000000a0 00 0a 00 04 00 02 00 17 00 0d 00 16 00 14 08 04 |................| 000000b0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| -000000c0 06 03 02 01 02 03 00 32 00 1a 00 18 08 04 04 03 |.......2........| -000000d0 08 07 08 05 08 06 04 01 05 01 06 01 05 03 06 03 |................| -000000e0 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 02 03 |.....+..........| -000000f0 01 00 33 00 47 00 45 00 17 00 41 04 1e 18 37 ef |..3.G.E...A...7.| -00000100 0d 19 51 88 35 75 71 b5 e5 54 5b 12 2e 8f 09 67 |..Q.5uq..T[....g| -00000110 fd a7 24 20 3e b2 56 1c ce 97 28 5e f8 2b 2d 4f |..$ >.V...(^.+-O| -00000120 9e f1 07 9f 6c 4b 5b 83 56 e2 32 42 e9 58 b6 d7 |....lK[.V.2B.X..| -00000130 49 a6 b5 68 1a 41 03 56 6b dc 5a 89 |I..h.A.Vk.Z.| +000000c0 06 03 00 32 00 1a 00 18 08 04 04 03 08 07 08 05 |...2............| +000000d0 08 06 04 01 05 01 06 01 05 03 06 03 02 01 02 03 |................| +000000e0 00 2b 00 09 08 03 04 03 03 03 02 03 01 00 33 00 |.+............3.| +000000f0 47 00 45 00 17 00 41 04 1e 18 37 ef 0d 19 51 88 |G.E...A...7...Q.| +00000100 35 75 71 b5 e5 54 5b 12 2e 8f 09 67 fd a7 24 20 |5uq..T[....g..$ | +00000110 3e b2 56 1c ce 97 28 5e f8 2b 2d 4f 9e f1 07 9f |>.V...(^.+-O....| +00000120 6c 4b 5b 83 56 e2 32 42 e9 58 b6 d7 49 a6 b5 68 |lK[.V.2B.X..I..h| +00000130 1a 41 03 56 6b dc 5a 89 |.A.Vk.Z.| >>> Flow 2 (server to client) -00000000 16 03 03 00 9b 02 00 00 97 03 03 b4 cc 04 30 25 |..............0%| -00000010 f5 36 2e 22 d7 f5 f2 46 5b 01 09 94 ec 5e 48 df |.6."...F[....^H.| -00000020 60 d5 70 b6 db 62 00 36 dc 66 cb 20 00 00 00 00 |`.p..b.6.f. ....| +00000000 16 03 03 00 9b 02 00 00 97 03 03 1f 9f 7f 3f 27 |..............?'| +00000010 c5 5c f2 f1 bb cc a2 89 0d 7f 66 6a ff 85 7e 55 |.\........fj..~U| +00000020 ec 47 a6 5e 9c 09 00 ec 96 e2 a7 20 00 00 00 00 |.G.^....... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 03 00 00 |................| 00000050 4f 00 2b 00 02 03 04 00 33 00 45 00 17 00 41 04 |O.+.....3.E...A.| -00000060 a4 00 4f 38 9f 17 cc 91 60 06 78 48 40 f3 be ac |..O8....`.xH@...| -00000070 f4 09 3f b1 41 0d 60 66 50 d5 a8 2c bf a6 c6 c8 |..?.A.`fP..,....| -00000080 ca fe ed 4b 3f 5f 51 eb fb da 45 b2 ad d3 70 d4 |...K?_Q...E...p.| -00000090 59 e5 ad 07 5a 02 2e f4 6b 01 7e 57 c5 b7 71 02 |Y...Z...k.~W..q.| -000000a0 14 03 03 00 01 01 17 03 03 00 17 3c 06 c9 4d 5a |...........<..MZ| -000000b0 51 b5 51 d9 dc ae 31 6d 75 9b f8 6e c1 9f e1 48 |Q.Q...1mu..n...H| -000000c0 d6 c4 17 03 03 02 6d 9c e1 d2 b9 0e da 85 ab 4e |......m........N| -000000d0 48 10 60 40 e4 1e 47 22 6f 26 2c fc f8 39 70 0f |H.`@..G"o&,..9p.| -000000e0 34 c8 40 80 dd c4 2b 39 50 d2 9c 9c 13 88 61 9e |4.@...+9P.....a.| -000000f0 62 14 01 ac be 34 95 dd 46 b6 e9 13 36 8f 54 00 |b....4..F...6.T.| -00000100 43 5f 34 61 88 df 09 85 c7 0f 36 f3 0d 22 ef 25 |C_4a......6..".%| -00000110 71 01 a7 ba fa 8d 24 7d 03 34 cf 92 d4 37 be b3 |q.....$}.4...7..| -00000120 8b 79 e4 12 6d 19 32 28 47 51 d4 ec 85 b9 e2 88 |.y..m.2(GQ......| -00000130 60 54 9d b5 75 56 27 fe db bb 2d c9 38 49 f9 dc |`T..uV'...-.8I..| -00000140 cf 3e 71 af 65 b7 c4 72 7a f9 69 d5 a3 d6 be aa |.>q.e..rz.i.....| -00000150 e9 79 fa ec e0 55 33 78 21 2f 2d 54 62 83 6c 77 |.y...U3x!/-Tb.lw| -00000160 2d 1e c9 5a 97 b4 11 46 ca 0e ba 75 58 d4 c4 a0 |-..Z...F...uX...| -00000170 49 d8 76 f1 f0 37 0c 30 c2 a8 86 78 a7 c5 24 00 |I.v..7.0...x..$.| -00000180 6e bd 89 fb 6a e6 73 1e 11 b9 21 29 92 c2 fd 44 |n...j.s...!)...D| -00000190 cd 84 25 e0 19 09 56 a8 65 73 01 f9 1d 26 ed 02 |..%...V.es...&..| -000001a0 67 3c 8a 1d 53 d7 c2 ea a4 0d dd 03 26 85 eb b8 |g<..S.......&...| -000001b0 20 c9 06 64 76 24 9a 4a 96 44 48 78 2e 86 01 9c | ..dv$.J.DHx....| -000001c0 be a3 60 7e 6e 5b 56 30 c7 b4 2d ff 71 db 58 15 |..`~n[V0..-.q.X.| -000001d0 86 22 84 fb 00 d3 96 1d f5 5f e5 39 3a 51 cc 04 |."......._.9:Q..| -000001e0 95 fd 49 f0 c2 cc 34 e1 0b 1d ba bb 62 f8 14 4d |..I...4.....b..M| -000001f0 aa 94 f0 09 b5 04 d3 b7 52 10 d2 ee 01 0c a0 68 |........R......h| -00000200 62 83 4f 11 33 b9 1c b1 4e 23 09 e7 d1 c2 c9 a4 |b.O.3...N#......| -00000210 de 63 c3 48 3f c7 51 9a 78 4c 2e e7 fa 2c bd 06 |.c.H?.Q.xL...,..| -00000220 82 e8 2f 61 35 83 aa 92 8b de 76 fb 0b 5a a7 44 |../a5.....v..Z.D| -00000230 07 6b 8f d9 de d6 dd 35 ec 08 44 31 97 15 9c 70 |.k.....5..D1...p| -00000240 38 89 2d 06 5d 01 39 23 45 ce c1 98 ca 90 f6 4a |8.-.].9#E......J| -00000250 47 a2 d4 6a ea 9f bc 7e ab 42 f5 b9 bd 54 44 0c |G..j...~.B...TD.| -00000260 b8 1c 34 10 53 80 ae fb 97 b5 64 75 2e c0 72 30 |..4.S.....du..r0| -00000270 dc 4a 3d aa 73 25 42 be 18 da 7c ae 0b 31 b0 f9 |.J=.s%B...|..1..| -00000280 55 d6 15 42 da bb e0 91 c9 ee bb b8 e3 6a ea f7 |U..B.........j..| -00000290 bf ae 2d 29 c0 58 4f 61 0c 55 e5 07 78 aa d1 45 |..-).XOa.U..x..E| -000002a0 76 8e e4 a9 d0 dd 49 29 7d f1 ab b8 82 39 31 23 |v.....I)}....91#| -000002b0 4c d4 5f f4 18 e7 b0 70 5f 78 e3 22 65 3b 84 e7 |L._....p_x."e;..| -000002c0 40 d7 cb b5 e3 8c 5d fa 77 cb 45 fa 57 c0 4c fd |@.....].w.E.W.L.| -000002d0 11 7c f1 80 fa 4c 51 d9 78 5d b6 cc 08 90 91 9a |.|...LQ.x]......| -000002e0 71 20 e3 50 ec 21 7e 0d 2d e5 97 12 4a 18 17 ab |q .P.!~.-...J...| -000002f0 a0 1f 74 75 71 6b 8b 81 ac 85 18 99 ad 75 88 4c |..tuqk.......u.L| -00000300 15 87 04 57 1e 78 10 13 4b 51 f2 e9 8a 76 17 77 |...W.x..KQ...v.w| -00000310 32 92 6c 12 6c db 2e ef c1 2d 18 64 e8 b1 62 79 |2.l.l....-.d..by| -00000320 4c 8a d0 23 9a ac 14 ab c3 9f d7 37 0c cb 57 29 |L..#.......7..W)| -00000330 bd 89 d8 32 17 03 03 00 99 40 69 b7 6b 35 af 37 |...2.....@i.k5.7| -00000340 fd 28 d7 52 34 fa 65 84 83 41 a8 cd d9 5d e7 68 |.(.R4.e..A...].h| -00000350 41 9b 39 7c f8 ef cf d8 8d 50 b9 2a 11 13 df f2 |A.9|.....P.*....| -00000360 3c b3 4c 4b 7d c5 a5 d6 cf f2 72 c8 ea 26 0b 90 |<.LK}.....r..&..| -00000370 42 5e b3 44 da a6 7d 81 13 0f f6 eb 4d c4 98 65 |B^.D..}.....M..e| -00000380 84 aa 47 bf ba b3 f5 57 3c 18 cd 8c b2 9d 3f eb |..G....W<.....?.| -00000390 0e 13 aa b2 ed 42 97 cd 3f f9 d0 b7 8c 1a 94 5c |.....B..?......\| -000003a0 63 c3 f8 45 be 91 61 c6 d9 01 bd 88 d7 fa 15 6d |c..E..a........m| -000003b0 8c 48 87 6a 10 eb 43 39 66 a2 a4 cd ef 15 db 4f |.H.j..C9f......O| -000003c0 0d da 85 48 81 af d1 60 4b bc b9 03 a9 c5 c0 7b |...H...`K......{| -000003d0 9a 60 17 03 03 00 35 9a 10 8d b7 6a 5c 8e 16 96 |.`....5....j\...| -000003e0 0a d3 2d 81 4f 3c 47 f5 bc f8 cd 92 c0 17 07 89 |..-.O.W| +00000220 a3 02 3f cf b2 88 d8 3d 25 c5 e1 0e 2b a2 b7 5f |..?....=%...+.._| +00000230 57 18 5c eb 8e ae 5f d6 5f 11 1b 5c 48 3b f5 84 |W.\..._._..\H;..| +00000240 b0 6e 29 3e 58 71 36 6e 66 6e e0 d0 98 b0 1b 84 |.n)>Xq6nfn......| +00000250 ca 8c 53 83 86 ca 26 7a 15 6b 6a 7c 61 91 55 45 |..S...&z.kj|a.UE| +00000260 58 cb bd b2 df df 78 22 83 36 8e 4f b6 40 70 ea |X.....x".6.O.@p.| +00000270 d1 72 33 7d 85 00 01 48 f1 75 73 db b3 aa 1d da |.r3}...H.us.....| +00000280 78 c9 e3 37 7c 1c 52 74 62 6c f6 eb af af 0b 2d |x..7|.Rtbl.....-| +00000290 ef d4 85 3d 9f 48 de 5c 4a 6e 24 69 b9 7b 87 e7 |...=.H.\Jn$i.{..| +000002a0 62 3c 26 67 8a 52 b2 73 66 90 56 07 6f ec 14 62 |b<&g.R.sf.V.o..b| +000002b0 88 15 20 e6 27 59 d4 cf 0e f0 59 cd cb 8e bd e5 |.. .'Y....Y.....| +000002c0 ca 10 39 40 54 a5 57 4e 99 70 93 b4 86 60 5f f1 |..9@T.WN.p...`_.| +000002d0 70 f5 d7 21 ef f2 11 b2 da 7a 7f 27 a8 6b fe 7f |p..!.....z.'.k..| +000002e0 e4 eb 35 9c d5 24 ef 70 4b 3c ed bd 9b b9 b9 f3 |..5..$.pK<......| +000002f0 50 a4 61 7f 24 d0 8c 7f 4f 48 09 4f 1e 26 fb 46 |P.a.$...OH.O.&.F| +00000300 ec c2 84 12 a5 6a 5f 19 f0 03 cc 50 cc 07 26 23 |.....j_....P..&#| +00000310 58 6e 68 d8 20 ae eb db 2f be a6 7b a8 ed 86 20 |Xnh. .../..{... | +00000320 61 07 03 47 e5 19 9b a7 0d 27 e0 56 9f 2a d5 19 |a..G.....'.V.*..| +00000330 e7 b3 39 07 17 03 03 00 99 3a 9b b2 61 6a 40 3a |..9......:..aj@:| +00000340 46 a8 0b 50 e3 95 d2 80 5f 5a 08 c3 54 2e 47 ac |F..P...._Z..T.G.| +00000350 f1 83 07 13 21 7f 5e 4e 1b 67 66 cc 38 a7 f3 91 |....!.^N.gf.8...| +00000360 f0 5f ac 9a 39 55 de bf 02 30 2a 87 35 85 f8 1d |._..9U...0*.5...| +00000370 32 3a 8c f8 90 6a 22 21 b2 e8 87 5e 54 6a 45 de |2:...j"!...^TjE.| +00000380 74 ff 6d 37 00 92 07 6c 09 13 c1 5e 68 bc 28 80 |t.m7...l...^h.(.| +00000390 d6 24 e5 32 fc 13 ee 68 68 91 9a e6 15 74 21 7d |.$.2...hh....t!}| +000003a0 2d b2 c8 f5 1d 05 69 5c 80 ee 8b 7c 3e 23 be 35 |-.....i\...|>#.5| +000003b0 d4 54 3c 52 66 2a f1 12 98 5d 3a 3f 44 26 84 d8 |.T>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 00 35 5e d8 a7 91 d2 |..........5^....| -00000010 39 b1 74 e8 a4 a2 02 97 c9 23 be a2 40 f8 94 39 |9.t......#..@..9| -00000020 4b e8 ed 35 6c 8e 23 ce da 32 90 93 50 f6 80 75 |K..5l.#..2..P..u| -00000030 43 91 9c 90 09 b5 bb 7d ab 56 53 0c a8 95 a5 c3 |C......}.VS.....| -00000040 17 03 03 00 17 7e 95 f6 cc 40 0f 64 9f 6b d6 63 |.....~...@.d.k.c| -00000050 29 28 6d 21 12 c4 70 6f dd 69 ad d1 17 03 03 00 |)(m!..po.i......| -00000060 13 8a b3 a5 7b 42 fe 41 be 86 57 03 16 d4 f1 25 |....{B.A..W....%| -00000070 95 8d 2b f7 |..+.| +00000000 14 03 03 00 01 01 17 03 03 00 35 70 3d 2c 7e 6a |..........5p=,~j| +00000010 d9 c5 58 7b 1d b5 d8 af 9e ca b8 30 2a 9b c3 c8 |..X{.......0*...| +00000020 fa 1c 76 f0 64 f8 4c 01 24 19 18 b2 2e 70 b9 e1 |..v.d.L.$....p..| +00000030 d3 45 96 e7 08 7e 7b c8 7d 1a c8 b7 87 13 9d 1d |.E...~{.}.......| +00000040 17 03 03 00 17 3f 62 68 a3 27 6c c3 12 33 ed e6 |.....?bh.'l..3..| +00000050 0e 87 e6 c4 3e 63 55 2a 15 11 aa 35 17 03 03 00 |....>cU*...5....| +00000060 13 f8 81 0f 72 73 8b d0 14 af fe f2 9d b7 c7 fd |....rs..........| +00000070 16 17 b9 60 |...`| diff --git a/src/crypto/tls/testdata/Client-TLSv13-X25519-ECDHE b/src/crypto/tls/testdata/Client-TLSv13-X25519-ECDHE index c10e6c9182..9e53626d5d 100644 --- a/src/crypto/tls/testdata/Client-TLSv13-X25519-ECDHE +++ b/src/crypto/tls/testdata/Client-TLSv13-X25519-ECDHE @@ -1,5 +1,5 @@ >>> Flow 1 (client to server) -00000000 16 03 01 01 16 01 00 01 12 03 03 00 00 00 00 00 |................| +00000000 16 03 01 01 12 01 00 01 0e 03 03 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 |........... ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -7,86 +7,86 @@ 00000050 cc a8 c0 2b c0 2f c0 2c c0 30 c0 09 c0 13 c0 0a |...+./.,.0......| 00000060 c0 14 00 9c 00 9d 00 2f 00 35 c0 12 00 0a c0 23 |......./.5.....#| 00000070 c0 27 00 3c c0 07 c0 11 00 05 13 03 13 01 13 02 |.'.<............| -00000080 01 00 00 97 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| +00000080 01 00 00 93 00 0b 00 02 01 00 ff 01 00 01 00 00 |................| 00000090 17 00 00 00 12 00 00 00 05 00 05 01 00 00 00 00 |................| -000000a0 00 0a 00 04 00 02 00 1d 00 0d 00 1a 00 18 08 04 |................| +000000a0 00 0a 00 04 00 02 00 1d 00 0d 00 16 00 14 08 04 |................| 000000b0 04 03 08 07 08 05 08 06 04 01 05 01 06 01 05 03 |................| -000000c0 06 03 02 01 02 03 00 32 00 1a 00 18 08 04 04 03 |.......2........| -000000d0 08 07 08 05 08 06 04 01 05 01 06 01 05 03 06 03 |................| -000000e0 02 01 02 03 00 2b 00 09 08 03 04 03 03 03 02 03 |.....+..........| -000000f0 01 00 33 00 26 00 24 00 1d 00 20 2f e5 7d a3 47 |..3.&.$... /.}.G| -00000100 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 84 af |.bC.(.._.).0....| -00000110 c4 cf c2 ed 90 99 5f 58 cb 3b 74 |......_X.;t| +000000c0 06 03 00 32 00 1a 00 18 08 04 04 03 08 07 08 05 |...2............| +000000d0 08 06 04 01 05 01 06 01 05 03 06 03 02 01 02 03 |................| +000000e0 00 2b 00 09 08 03 04 03 03 03 02 03 01 00 33 00 |.+............3.| +000000f0 26 00 24 00 1d 00 20 2f e5 7d a3 47 cd 62 43 15 |&.$... /.}.G.bC.| +00000100 28 da ac 5f bb 29 07 30 ff f6 84 af c4 cf c2 ed |(.._.).0........| +00000110 90 99 5f 58 cb 3b 74 |.._X.;t| >>> Flow 2 (server to client) -00000000 16 03 03 00 7a 02 00 00 76 03 03 97 02 8a b6 20 |....z...v...... | -00000010 f7 b6 e4 eb 5b eb f8 c0 ea 29 ad 6a cb 1a 0a d7 |....[....).j....| -00000020 40 a5 e7 dd 1d 75 88 61 b4 92 2b 20 00 00 00 00 |@....u.a..+ ....| +00000000 16 03 03 00 7a 02 00 00 76 03 03 5a 42 7b 30 69 |....z...v..ZB{0i| +00000010 87 6c 87 6a 9c c4 4f 41 b5 18 58 d5 7a 1d 7d da |.l.j..OA..X.z.}.| +00000020 92 29 4c dd 57 6b 4d 0c f9 7c 74 20 00 00 00 00 |.)L.WkM..|t ....| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 03 00 00 |................| -00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 b3 |..+.....3.$... .| -00000060 73 c5 08 81 cd 33 2e 44 42 46 70 03 40 b1 cf 44 |s....3.DBFp.@..D| -00000070 39 17 fa 84 e2 44 0e 37 f5 d1 3a a7 3c ca 5d 14 |9....D.7..:.<.].| -00000080 03 03 00 01 01 17 03 03 00 17 29 94 4c 54 36 71 |..........).LT6q| -00000090 24 9c 5c 24 f2 e7 85 50 b7 fd cb 8c db 28 14 f7 |$.\$...P.....(..| -000000a0 f9 17 03 03 02 6d c7 4c 08 32 d5 0f 28 ec e9 4f |.....m.L.2..(..O| -000000b0 08 45 1d cb 93 c8 61 47 1d 6b c9 ef 33 25 e0 07 |.E....aG.k..3%..| -000000c0 14 18 d9 ec 1b 6f 5a e1 d1 8c 9d ad 2d 46 0f b8 |.....oZ.....-F..| -000000d0 c7 f7 0d f8 e7 86 3d 70 8d e1 ce 78 a0 3a cc 36 |......=p...x.:.6| -000000e0 26 f0 e2 49 99 24 dd 61 c7 ae cd 10 4c 59 09 8a |&..I.$.a....LY..| -000000f0 43 26 35 2a b7 64 45 53 60 13 17 e6 7d 59 b7 4b |C&5*.dES`...}Y.K| -00000100 90 57 88 d9 21 8b d8 7d bc 00 9e f7 bf 89 a9 d0 |.W..!..}........| -00000110 5e 2d 17 2c cd ff cb cd 93 e8 a1 55 b7 11 fe b5 |^-.,.......U....| -00000120 29 62 3f 6a 4c 41 ba 31 a9 ba 7a 54 7b 16 be 73 |)b?jLA.1..zT{..s| -00000130 d4 17 35 e3 35 f2 41 a0 af d5 c7 b8 0b ea 79 bc |..5.5.A.......y.| -00000140 ff 2c 48 d4 2a 8b 86 e8 42 f5 75 50 31 09 4c f4 |.,H.*...B.uP1.L.| -00000150 b8 c4 6c f4 24 9b 53 06 5c 2e c1 f0 37 22 51 9f |..l.$.S.\...7"Q.| -00000160 12 a1 4d 06 c8 0d 11 e4 5b 5d 72 ed f1 c2 8d 64 |..M.....[]r....d| -00000170 74 63 0f 4e d3 9a 92 f6 68 47 36 53 5a 19 90 bc |tc.N....hG6SZ...| -00000180 7e de e9 05 73 5b 13 80 92 bb f4 ff 6d 4e e5 1c |~...s[......mN..| -00000190 40 b6 29 f3 34 0f 3c 7b 06 af 54 14 67 cb 43 43 |@.).4.<{..T.g.CC| -000001a0 ad 30 68 a9 d1 09 29 43 02 01 ba 6e 87 e5 7a 75 |.0h...)C...n..zu| -000001b0 67 53 54 cf bf 33 d9 f1 ca fa 63 cf 04 87 00 c6 |gST..3....c.....| -000001c0 82 ab 0e a7 4e 8f 00 ad 0b 64 2e 87 3c 07 d7 a1 |....N....d..<...| -000001d0 1d 4c 68 b5 78 e0 83 1f 5e d3 21 35 ed bb ca 8a |.Lh.x...^.!5....| -000001e0 91 cf 39 ec 74 c5 e4 51 2b 00 cf 3b 71 e1 ba af |..9.t..Q+..;q...| -000001f0 e6 c6 29 cc cf 8f a3 23 89 ae 3c 0f d0 47 e7 29 |..)....#..<..G.)| -00000200 d4 11 7e 62 57 3a ee 7a 42 98 0d 53 1b 14 a7 45 |..~bW:.zB..S...E| -00000210 12 15 8c 0b 9d 32 1d 9e f3 a1 31 b5 34 c5 d8 03 |.....2....1.4...| -00000220 69 df 1f ab a4 4e 01 d7 35 f7 3e 83 3d 7b 7e cc |i....N..5.>.={~.| -00000230 30 cd 8a 3b 9e 80 1b 5c cc 48 2d 92 37 b8 5d 23 |0..;...\.H-.7.]#| -00000240 8b 43 9e 1e 6d 60 04 7f 91 b1 7f 7d 4a ff 3f 5f |.C..m`.....}J.?_| -00000250 e8 e4 49 9e 48 04 69 20 5d e9 13 3a 61 23 fa 4e |..I.H.i ]..:a#.N| -00000260 31 f9 d6 3e cd fc 20 e2 14 d7 2d 47 63 7b e5 fd |1..>.. ...-Gc{..| -00000270 20 01 9c f4 b3 82 1f 56 60 f5 7c e2 2a 70 64 91 | ......V`.|.*pd.| -00000280 75 75 68 fb 61 08 72 83 fc 4f a0 75 3a 2d ff f8 |uuh.a.r..O.u:-..| -00000290 c9 1b 02 bf cf 84 fd 5e ab dd 01 28 de d9 d8 1c |.......^...(....| -000002a0 78 7e a0 66 35 43 d5 54 08 66 41 74 df 43 b1 23 |x~.f5C.T.fAt.C.#| -000002b0 f4 f1 3d 78 d0 d2 99 0d 99 c5 c1 f2 cf 86 74 29 |..=x..........t)| -000002c0 10 31 10 4e 56 aa 90 0b 39 1f 7c 7d 6f f7 39 6b |.1.NV...9.|}o.9k| -000002d0 9b 4e 3c 3e 52 2f 7e 6f 6e 55 b5 64 58 08 7d dd |.N<>R/~onU.dX.}.| -000002e0 3b 79 08 b3 30 49 17 28 a0 6e 76 b3 38 54 56 19 |;y..0I.(.nv.8TV.| -000002f0 f7 67 11 5f d5 54 c3 22 07 e8 83 c8 22 19 37 ab |.g._.T."....".7.| -00000300 8e 3a ed 07 47 02 b8 4f 03 6c ca e1 16 20 a0 b6 |.:..G..O.l... ..| -00000310 43 d9 39 17 03 03 00 99 26 fb 79 ee 89 6d e8 ce |C.9.....&.y..m..| -00000320 89 95 ec 7d a2 19 ab 24 b7 b5 49 00 de ae a3 29 |...}...$..I....)| -00000330 00 ce bf 8d 71 42 c2 dc ae 65 ed 84 a3 af 1b d9 |....qB...e......| -00000340 64 0a fa 49 b6 5e a9 64 bb 91 43 25 65 df 06 ee |d..I.^.d..C%e...| -00000350 90 a9 c9 48 99 c2 b6 0d 91 91 77 70 3b ca 58 a4 |...H......wp;.X.| -00000360 c7 e8 fd 01 67 7c b3 ea 8e b9 9d c5 4c cf 55 67 |....g|......L.Ug| -00000370 09 23 99 e7 2d ff 54 4b e4 56 d5 24 72 a9 1b 03 |.#..-.TK.V.$r...| -00000380 bc 4c d9 c8 37 f2 0b 62 88 4e 89 05 db 11 0f 3a |.L..7..b.N.....:| -00000390 9f 8b a7 4f a4 0a 89 d5 c8 df 11 06 af 73 71 38 |...O.........sq8| -000003a0 bd 2f 97 15 24 b6 54 ca bb 1c 3c e1 16 ad eb c6 |./..$.T...<.....| -000003b0 64 17 03 03 00 35 b8 1c a1 16 59 5c 46 6e 4c 3f |d....5....Y\FnL?| -000003c0 3c 79 d0 1f 4f 8a c8 49 49 6e 7e 53 de fb 43 99 |3-| -000003e0 3b 78 12 70 cc 3e cf f6 36 47 23 |;x.p.>..6G#| +00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 f5 |..+.....3.$... .| +00000060 7b aa 52 58 70 5a dd 9b db b3 b8 17 02 fc db e4 |{.RXpZ..........| +00000070 b2 9d a2 e7 77 aa c1 d9 f9 a8 87 65 b8 c2 38 14 |....w......e..8.| +00000080 03 03 00 01 01 17 03 03 00 17 cf 0f a3 89 ff 85 |................| +00000090 ce 6f aa 9e 41 c6 cc e0 bb 9c dd f2 6c 2b f6 4f |.o..A.......l+.O| +000000a0 e5 17 03 03 02 6d eb 5d f8 b5 8a 60 c3 af a8 03 |.....m.]...`....| +000000b0 a7 55 8c 85 ee 94 9c 31 d5 2e de 80 71 70 c0 9d |.U.....1....qp..| +000000c0 9a b2 c6 fd 82 1f 72 09 3c eb 2d 38 3f 3a cd fd |......r.<.-8?:..| +000000d0 c2 6d b5 0a 30 20 4b 6c 64 26 e9 e2 f2 1f 27 da |.m..0 Kld&....'.| +000000e0 ed 81 98 fe 58 3e 27 f9 af 91 cf 90 b8 c2 a8 f0 |....X>'.........| +000000f0 14 3c a1 5b 2e 60 55 34 73 f2 1d c2 24 df 09 55 |.<.[.`U4s...$..U| +00000100 e5 5b b6 43 de d7 48 6b cd 15 da 06 f1 b6 56 0b |.[.C..Hk......V.| +00000110 fb 7e 97 f4 40 2f 6b c9 5b 4d 0c 70 8d d5 1c 21 |.~..@/k.[M.p...!| +00000120 d6 a2 4f ab e9 c7 cb 69 0e d0 86 d0 b8 1e c5 6b |..O....i.......k| +00000130 3d 2f 78 f7 ab fd db 06 5c 59 69 fe 74 69 2f c9 |=/x.....\Yi.ti/.| +00000140 a0 36 e2 08 2e 42 23 05 da 89 33 e7 b5 c3 b2 5a |.6...B#...3....Z| +00000150 d4 7e 4c 99 1c 24 a8 62 9b 92 7d bb c0 e1 4a 90 |.~L..$.b..}...J.| +00000160 72 83 4d b2 74 13 45 3f ef 91 7c b0 c4 6b 4e f5 |r.M.t.E?..|..kN.| +00000170 5c 3d 56 6f fe 96 63 c2 fe 2c 88 23 ab 92 08 bf |\=Vo..c..,.#....| +00000180 c5 08 25 81 a5 49 a6 5c 95 da 09 b2 c9 4b e0 f2 |..%..I.\.....K..| +00000190 59 4e 5a 67 6b 71 c7 ba 69 ff a8 f5 6d 21 52 68 |YNZgkq..i...m!Rh| +000001a0 05 d6 61 0e d6 67 d9 64 3d 26 a3 65 3c 55 11 42 |..a..g.d=&.e.}..E0L-rC.| +00000260 4f a3 08 d2 7f 70 e9 31 7b c8 cd 77 fc 3e 82 70 |O....p.1{..w.>.p| +00000270 48 ed 83 55 79 16 c1 8c 69 50 60 53 48 08 5b 66 |H..Uy...iP`SH.[f| +00000280 fe 78 02 06 16 ba 02 90 85 11 7b 49 36 71 58 35 |.x........{I6qX5| +00000290 46 7f fd 0f de dc 11 ae 3a bd df 79 93 f9 e3 8d |F.......:..y....| +000002a0 4c d8 c5 55 74 34 7f 01 dd 4d d5 ef ef 4e 3d d3 |L..Ut4...M...N=.| +000002b0 31 94 3f 1c 9b 6c 44 d0 3b 73 d1 5f b4 b6 48 5d |1.?..lD.;s._..H]| +000002c0 16 ba 17 0b d0 f5 b4 16 18 1f 85 be dc f1 75 71 |..............uq| +000002d0 17 f8 b0 8a f3 d2 80 24 d5 3b cd 58 f4 9b 03 e5 |.......$.;.X....| +000002e0 64 c5 ae 5e 9a 25 d2 bb a2 28 91 4b 2e 81 4d e4 |d..^.%...(.K..M.| +000002f0 4e 25 57 12 fc 7a 87 36 66 0b 76 21 66 17 a0 e5 |N%W..z.6f.v!f...| +00000300 0a f7 00 31 48 62 a9 70 f1 75 1b e0 78 c9 fa de |...1Hb.p.u..x...| +00000310 11 6f 3d 17 03 03 00 99 72 f9 ad 67 80 2a 9f 04 |.o=.....r..g.*..| +00000320 a9 0a fb 6f 03 90 88 35 7f cb 97 5f 4e a2 1e a8 |...o...5..._N...| +00000330 34 80 96 d1 60 b4 b4 12 ec c3 2b 15 c9 a0 f9 28 |4...`.....+....(| +00000340 50 1c 53 1d fc 32 a2 c7 c0 03 58 1b 83 a6 ee 94 |P.S..2....X.....| +00000350 2d 98 99 83 62 6a 52 a0 c5 42 94 4f 3a 26 2e 44 |-...bjR..B.O:&.D| +00000360 7b 03 f5 2a 0e 9e 48 e4 2a 18 2e 9b 42 7f 34 d2 |{..*..H.*...B.4.| +00000370 3c b2 92 52 cc 51 0e f0 fd c7 4d e6 d7 1b b2 44 |<..R.Q....M....D| +00000380 99 48 e7 da 1e 43 37 d1 ac 80 c5 34 21 1b d8 0c |.H...C7....4!...| +00000390 9c 92 0d b4 27 b0 78 43 06 a2 90 42 c4 99 5e 5f |....'.xC...B..^_| +000003a0 a4 36 69 a5 a1 92 12 5e 51 47 7f ff 50 07 ac 8a |.6i....^QG..P...| +000003b0 35 17 03 03 00 35 86 65 34 2f d0 12 2a 0b 7c 50 |5....5.e4/..*.|P| +000003c0 b4 c5 67 30 cc 4d cf 4f f7 be a5 0d 2c b2 96 ae |..g0.M.O....,...| +000003d0 da 70 a3 74 c2 e7 9a 18 61 17 95 da 00 ac cc 89 |.p.t....a.......| +000003e0 66 a1 e8 aa ca 8f 02 3c b5 16 3d |f......<..=| >>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 00 35 59 5c b8 42 f1 |..........5Y\.B.| -00000010 bb fc 65 3e 0a 8b 1c 70 be 4b 39 8c ae 0d 91 e1 |..e>...p.K9.....| -00000020 82 b8 ad 51 1f f3 d4 06 13 33 96 71 27 96 1f f2 |...Q.....3.q'...| -00000030 dd 6f ef 94 9b bb 56 bf 8a 59 2b 92 c9 01 b7 72 |.o....V..Y+....r| -00000040 17 03 03 00 17 3a b4 c3 77 5b e6 98 a2 b4 3d f6 |.....:..w[....=.| -00000050 83 fb f4 f5 6e f5 5f 5a 1e 5b 96 4c 17 03 03 00 |....n._Z.[.L....| -00000060 13 3b 5f a0 57 f0 27 8d dd 6a 36 fc 4c 33 86 f6 |.;_.W.'..j6.L3..| -00000070 fe 8b 6f 5a |..oZ| +00000000 14 03 03 00 01 01 17 03 03 00 35 a0 a0 1c ae a9 |..........5.....| +00000010 1a 1f 74 01 92 fe bf 91 c4 aa 8b f2 84 7e 39 c1 |..t..........~9.| +00000020 cb f4 ae a8 76 0c de 9e 54 7f ca 4a a2 d3 07 ef |....v...T..J....| +00000030 8e ed 8a be 54 ad 76 fe b6 62 24 4d a7 88 d5 7a |....T.v..b$M...z| +00000040 17 03 03 00 17 a2 d4 e7 78 ef 4a 2e 66 52 6f 2a |........x.J.fRo*| +00000050 e3 07 e0 9c fc 19 f6 f8 96 88 bb be 17 03 03 00 |................| +00000060 13 43 01 14 16 42 27 8a b9 a9 98 5f c7 06 4d 20 |.C...B'...._..M | +00000070 8b c3 cb 33 |...3| diff --git a/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndECDSAGiven b/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndECDSAGiven index 41ed6c4e1b..73d54e6579 100644 --- a/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndECDSAGiven +++ b/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndECDSAGiven @@ -1,7 +1,7 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 6d 01 00 00 69 03 03 5e 92 9d 30 27 |....m...i..^..0'| -00000010 23 da fa a0 07 30 03 c8 bd 60 f2 db e9 5e b3 fc |#....0...`...^..| -00000020 65 d3 c5 e1 49 35 63 86 53 ec 87 00 00 04 00 2f |e...I5c.S....../| +00000000 16 03 01 00 6d 01 00 00 69 03 03 5e 1c 8d af f1 |....m...i..^....| +00000010 4a ab 9d e1 c7 9c 85 c3 ab b8 84 84 ee 39 66 0b |J............9f.| +00000020 6d d7 b2 3b 7b bf 4e d1 90 a4 92 00 00 04 00 2f |m..;{.N......../| 00000030 00 ff 01 00 00 3c 00 16 00 00 00 17 00 00 00 0d |.....<..........| 00000040 00 30 00 2e 04 03 05 03 06 03 08 07 08 08 08 09 |.0..............| 00000050 08 0a 08 0b 08 04 08 05 08 06 04 01 05 01 06 01 |................| @@ -49,10 +49,10 @@ 00000260 ee b1 87 82 f1 6c 04 ed 73 bb b3 43 77 8d 0c 1c |.....l..s..Cw...| 00000270 f1 0f a1 d8 40 83 61 c9 4c 72 2b 9d ae db 46 06 |....@.a.Lr+...F.| 00000280 06 4d f4 c1 b3 3e c0 d1 bd 42 d4 db fe 3d 13 60 |.M...>...B...=.`| -00000290 84 5c 21 d3 3b e9 fa e7 16 03 03 00 23 0d 00 00 |.\!.;.......#...| -000002a0 1f 02 01 40 00 18 08 04 04 03 08 07 08 05 08 06 |...@............| -000002b0 04 01 05 01 06 01 05 03 06 03 02 01 02 03 00 00 |................| -000002c0 16 03 03 00 04 0e 00 00 00 |.........| +00000290 84 5c 21 d3 3b e9 fa e7 16 03 03 00 1f 0d 00 00 |.\!.;...........| +000002a0 1b 02 01 40 00 14 08 04 04 03 08 07 08 05 08 06 |...@............| +000002b0 04 01 05 01 06 01 05 03 06 03 00 00 16 03 03 00 |................| +000002c0 04 0e 00 00 00 |.....| >>> Flow 3 (client to server) 00000000 16 03 03 02 0a 0b 00 02 06 00 02 03 00 02 00 30 |...............0| 00000010 82 01 fc 30 82 01 5e 02 09 00 9a 30 84 6c 26 35 |...0..^....0.l&5| @@ -87,40 +87,40 @@ 000001e0 be e8 91 b3 da 1a f5 5d a3 23 f5 26 8b 45 70 8d |.......].#.&.Ep.| 000001f0 65 62 9b 7e 01 99 3d 18 f6 10 9a 38 61 9b 2e 57 |eb.~..=....8a..W| 00000200 e4 fa cc b1 8a ce e2 23 a0 87 f0 e1 67 51 eb 16 |.......#....gQ..| -00000210 03 03 00 86 10 00 00 82 00 80 02 50 e4 cc a3 ad |...........P....| -00000220 fb 33 24 a1 b3 0a 7c 0f 00 e6 1a 06 2b 9f 1e 1f |.3$...|.....+...| -00000230 cc b8 b2 80 90 e7 86 20 32 40 06 ac 1b b0 41 b7 |....... 2@....A.| -00000240 0d 9c 4c 41 90 01 0b 7a 7e b2 b2 46 39 dc 51 25 |..LA...z~..F9.Q%| -00000250 98 e0 b9 ec 36 fc 08 64 f0 51 2a 41 e1 e5 61 3d |....6..d.Q*A..a=| -00000260 fc 07 c1 9b 1f 6f 48 d4 1f 46 bf 14 e6 92 61 1a |.....oH..F....a.| -00000270 bd 5f 25 1f 5e b1 3c ac c7 58 63 02 0d 3a e0 d6 |._%.^.<..Xc..:..| -00000280 e9 39 fc ec 59 66 2e 91 b2 65 37 eb a8 b5 60 d9 |.9..Yf...e7...`.| -00000290 49 05 9f 6f cc 71 79 bb f7 68 16 03 03 00 93 0f |I..o.qy..h......| -000002a0 00 00 8f 04 03 00 8b 30 81 88 02 42 00 bd 6a 29 |.......0...B..j)| -000002b0 21 06 1a e2 67 a1 7f 10 ab ca 3f 74 5a bc 2f 5d |!...g.....?tZ./]| -000002c0 53 d0 59 90 f2 d0 b4 2d 75 47 67 0b 67 55 b6 4f |S.Y....-uGg.gU.O| -000002d0 75 7d 32 d8 a7 25 c8 4c 90 0b 56 65 be 60 5d ee |u}2..%.L..Ve.`].| -000002e0 f7 b3 80 79 26 e5 25 1d 17 cc d8 36 fc 39 02 42 |...y&.%....6.9.B| -000002f0 01 c3 32 d6 f2 59 9e 10 c8 bf 7f 74 27 a1 00 df |..2..Y.....t'...| -00000300 55 05 f0 b3 81 a1 6e 10 a6 fb 0b e4 1c 3f 62 02 |U.....n......?b.| -00000310 c9 cc c2 4b 97 ad 0c 88 98 07 6c 98 6d db 9d 9f |...K......l.m...| -00000320 68 a0 56 ab 5f f9 a2 21 33 86 64 53 de 37 ff 68 |h.V._..!3.dS.7.h| -00000330 04 9d 14 03 03 00 01 01 16 03 03 00 40 85 14 34 |............@..4| -00000340 d6 74 a9 d0 0b e9 1f 34 a9 e9 6c cf 5a ac 88 22 |.t.....4..l.Z.."| -00000350 51 4d ae 16 05 dd 9e c1 36 5e e3 cf b1 5a b5 48 |QM......6^...Z.H| -00000360 6c 24 b1 d6 fb 7f 03 6a 98 41 90 de 6d c7 b2 49 |l$.....j.A..m..I| -00000370 d9 a3 c7 45 ff 18 7c f7 a4 cf 05 59 87 |...E..|....Y.| +00000210 03 03 00 86 10 00 00 82 00 80 b1 e6 1d 71 51 c1 |.............qQ.| +00000220 3a bd 0a 32 95 14 0c 83 7a 2b ec 89 24 f2 29 d8 |:..2....z+..$.).| +00000230 72 84 ae 13 33 90 58 93 b6 46 6c 54 11 54 5b d3 |r...3.X..FlT.T[.| +00000240 59 da 02 4a de 2a 56 67 04 32 3b 44 6b ac 6d 6c |Y..J.*Vg.2;Dk.ml| +00000250 c5 de 9d b2 9e 7b ec 27 05 9d 47 6d a1 0b 50 71 |.....{.'..Gm..Pq| +00000260 ea 19 cc 60 5e db 6c 2f 06 b7 6e ce 51 bf 93 a9 |...`^.l/..n.Q...| +00000270 0e c7 85 c1 83 d2 ac fe 6a d2 a9 bd b3 54 4f 45 |........j....TOE| +00000280 4b e4 40 68 fb 30 21 ec 1c fc 76 a6 db 8b e1 46 |K.@h.0!...v....F| +00000290 8c 0c 56 1f c0 e5 9b 2c 54 eb 16 03 03 00 93 0f |..V....,T.......| +000002a0 00 00 8f 04 03 00 8b 30 81 88 02 42 01 11 9a de |.......0...B....| +000002b0 07 19 df 8b d0 56 e7 b5 b0 d2 d4 c1 32 58 93 88 |.....V......2X..| +000002c0 ea a6 73 86 f9 e6 be b5 c5 1f d6 0d da 28 59 89 |..s..........(Y.| +000002d0 21 73 fe e8 30 b9 f0 d1 01 d3 e0 54 79 a6 67 0d |!s..0......Ty.g.| +000002e0 84 88 94 2c b9 b6 0e 19 06 34 cc f1 5f 01 02 42 |...,.....4.._..B| +000002f0 00 fe 02 83 e8 46 a8 5f ef 5a f0 e1 6f 3f 73 b9 |.....F._.Z..o?s.| +00000300 0f a1 64 db a7 c4 fb 1e 9f ac da 33 ac a2 7f ff |..d........3....| +00000310 64 c1 26 37 17 41 c0 5e f4 37 5c 76 23 7d 92 3a |d.&7.A.^.7\v#}.:| +00000320 ea 35 7f 83 03 7b a4 65 44 5d fb 84 08 39 c7 90 |.5...{.eD]...9..| +00000330 cc 4a 14 03 03 00 01 01 16 03 03 00 40 7b 06 98 |.J..........@{..| +00000340 ff f7 d5 a1 68 60 23 25 bc df 12 27 7f 64 1e c8 |....h`#%...'.d..| +00000350 bc 6d 26 28 29 d0 9f 56 6a f1 5b cd 4e 17 6c 32 |.m&()..Vj.[.N.l2| +00000360 15 b9 7a 55 02 9b 66 1c e3 97 40 26 69 7b e7 02 |..zU..f...@&i{..| +00000370 b0 37 d1 ec ed 96 2e 92 5a 5f 90 c1 be |.7......Z_...| >>> Flow 4 (server to client) 00000000 14 03 03 00 01 01 16 03 03 00 40 00 00 00 00 00 |..........@.....| -00000010 00 00 00 00 00 00 00 00 00 00 00 63 1a 77 66 2a |...........c.wf*| -00000020 49 3a b2 17 83 74 e1 d9 70 96 de 01 84 09 f4 88 |I:...t..p.......| -00000030 c3 e7 3b 65 11 6f 13 32 b8 b4 f4 41 ca 6a d6 d7 |..;e.o.2...A.j..| -00000040 51 a3 a1 f0 2d 5b b4 55 29 f9 d3 17 03 03 00 40 |Q...-[.U)......@| +00000010 00 00 00 00 00 00 00 00 00 00 00 0f e2 df ef c7 |................| +00000020 0e 11 83 70 ba a8 fa 90 e3 d5 df 76 dd 7a f1 63 |...p.......v.z.c| +00000030 ca a3 12 c7 42 45 ae 1a a3 0f 3b 4c 46 52 91 8e |....BE....;LFR..| +00000040 bf df 21 be cb ed 93 12 8a ba 88 17 03 03 00 40 |..!............@| 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| -00000060 d7 30 0f 03 89 22 4c 19 5f 06 a7 4b 95 59 91 52 |.0..."L._..K.Y.R| -00000070 2a 65 ab 99 cb 71 99 8b 13 82 44 92 6b ff 59 07 |*e...q....D.k.Y.| -00000080 28 ca 01 68 ab ad ba ee 6c 6a 19 0b e5 6d 82 24 |(..h....lj...m.$| +00000060 12 fd 68 02 2d 6e aa 2f df e4 0b a1 2c 13 e1 23 |..h.-n./....,..#| +00000070 f9 78 4b 18 a3 1f 28 78 4d f6 25 83 4c 0c 8c df |.xK...(xM.%.L...| +00000080 8b ed a9 b2 87 8c 95 e3 87 8e 71 ad d9 23 05 91 |..........q..#..| 00000090 15 03 03 00 30 00 00 00 00 00 00 00 00 00 00 00 |....0...........| -000000a0 00 00 00 00 00 fc 07 f4 d4 bb 24 a3 f1 cf dc 3c |..........$....<| -000000b0 ac 14 63 50 32 34 fd 73 c0 eb f2 78 7b 3b ea 58 |..cP24.s...x{;.X| -000000c0 cc 3e ff 7f e5 |.>...| +000000a0 00 00 00 00 00 80 9a 8c 0e 27 b9 7a f9 61 a4 a6 |.........'.z.a..| +000000b0 4e c9 24 02 ce 1c 93 5c 5a 7a c9 1e 5f b2 a1 9b |N.$....\Zz.._...| +000000c0 e3 0d 47 85 ab |..G..| diff --git a/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndEd25519Given b/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndEd25519Given index f8cc96058d..4ca8a034ed 100644 --- a/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndEd25519Given +++ b/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndEd25519Given @@ -1,7 +1,7 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 6d 01 00 00 69 03 03 8a fe ad ad 75 |....m...i......u| -00000010 e4 8c bf bf b7 b6 66 14 92 eb 84 85 9c c8 a7 66 |......f........f| -00000020 04 2a d0 63 5e a6 bf 85 e9 4f 49 00 00 04 00 2f |.*.c^....OI..../| +00000000 16 03 01 00 6d 01 00 00 69 03 03 73 b2 f2 a9 ed |....m...i..s....| +00000010 88 e0 79 65 b4 3b 58 0d b2 d8 ab cf d7 12 12 c6 |..ye.;X.........| +00000020 99 f9 36 75 d3 f8 3e 94 cf 39 25 00 00 04 00 2f |..6u..>..9%..../| 00000030 00 ff 01 00 00 3c 00 16 00 00 00 17 00 00 00 0d |.....<..........| 00000040 00 30 00 2e 04 03 05 03 06 03 08 07 08 08 08 09 |.0..............| 00000050 08 0a 08 0b 08 04 08 05 08 06 04 01 05 01 06 01 |................| @@ -49,10 +49,10 @@ 00000260 ee b1 87 82 f1 6c 04 ed 73 bb b3 43 77 8d 0c 1c |.....l..s..Cw...| 00000270 f1 0f a1 d8 40 83 61 c9 4c 72 2b 9d ae db 46 06 |....@.a.Lr+...F.| 00000280 06 4d f4 c1 b3 3e c0 d1 bd 42 d4 db fe 3d 13 60 |.M...>...B...=.`| -00000290 84 5c 21 d3 3b e9 fa e7 16 03 03 00 23 0d 00 00 |.\!.;.......#...| -000002a0 1f 02 01 40 00 18 08 04 04 03 08 07 08 05 08 06 |...@............| -000002b0 04 01 05 01 06 01 05 03 06 03 02 01 02 03 00 00 |................| -000002c0 16 03 03 00 04 0e 00 00 00 |.........| +00000290 84 5c 21 d3 3b e9 fa e7 16 03 03 00 1f 0d 00 00 |.\!.;...........| +000002a0 1b 02 01 40 00 14 08 04 04 03 08 07 08 05 08 06 |...@............| +000002b0 04 01 05 01 06 01 05 03 06 03 00 00 16 03 03 00 |................| +000002c0 04 0e 00 00 00 |.....| >>> Flow 3 (client to server) 00000000 16 03 03 01 3c 0b 00 01 38 00 01 35 00 01 32 30 |....<...8..5..20| 00000010 82 01 2e 30 81 e1 a0 03 02 01 02 02 10 17 d1 81 |...0............| @@ -74,36 +74,36 @@ 00000110 8a 4e 34 40 39 d6 b3 10 dc 19 fe a0 22 71 b3 f5 |.N4@9......."q..| 00000120 8f a1 58 0d cd f4 f1 85 24 bf e6 3d 14 df df ed |..X.....$..=....| 00000130 0e e1 17 d8 11 a2 60 d0 8a 37 23 2a c2 46 aa 3a |......`..7#*.F.:| -00000140 08 16 03 03 00 86 10 00 00 82 00 80 77 8b 9f 34 |............w..4| -00000150 b4 db a7 0d 5b ed 1b 2f 4a 41 64 f5 ce 4a 00 7c |....[../JAd..J.|| -00000160 91 32 b3 cf 61 18 41 04 ae fa 3b 14 de 19 0e 64 |.2..a.A...;....d| -00000170 f9 ec 75 a6 48 7e 28 57 26 f5 1c 75 1d 42 73 fc |..u.H~(W&..u.Bs.| -00000180 11 51 2b ef e5 08 83 ac 17 ec 78 b8 5b 14 84 c9 |.Q+.......x.[...| -00000190 bc 7f 22 fd 54 69 7a 82 36 c7 21 bc d6 04 c4 e7 |..".Tiz.6.!.....| -000001a0 bc 48 c8 72 56 5d 1e 65 41 21 0a 26 85 a0 d8 c3 |.H.rV].eA!.&....| -000001b0 50 f0 b6 07 25 ee 79 b8 f5 e6 17 85 d4 09 e7 d7 |P...%.y.........| -000001c0 ab 8f 17 cb c2 13 a0 5a 50 cb e4 a7 16 03 03 00 |.......ZP.......| -000001d0 48 0f 00 00 44 08 07 00 40 b7 24 50 46 db d4 8c |H...D...@.$PF...| -000001e0 68 17 f5 5e 79 a9 80 8c 40 23 92 33 4e 1e cc ee |h..^y...@#.3N...| -000001f0 d5 35 4d b8 2a 52 f0 7f 50 8e c6 d5 5f bc 08 35 |.5M.*R..P..._..5| -00000200 a2 6d db cb 96 52 ec 92 c7 62 c7 59 ab d8 6f 9d |.m...R...b.Y..o.| -00000210 d7 46 35 71 28 41 89 59 02 14 03 03 00 01 01 16 |.F5q(A.Y........| -00000220 03 03 00 40 3e 12 44 bc c6 3d 88 71 ba d3 0c 26 |...@>.D..=.q...&| -00000230 20 72 b0 7f 25 83 9f fd 77 c1 f5 1e 47 28 2e 60 | r..%...w...G(.`| -00000240 53 e0 ac 52 e8 94 e4 87 90 3f af f3 a4 c0 d3 ba |S..R.....?......| -00000250 fe b7 06 54 f7 13 33 36 47 8f 5e 45 22 84 18 3a |...T..36G.^E"..:| -00000260 1f 14 21 85 |..!.| +00000140 08 16 03 03 00 86 10 00 00 82 00 80 1c aa 0a c6 |................| +00000150 76 22 2b bc 67 c7 db 5a 59 0c 2b 1d 1a 66 9b c5 |v"+.g..ZY.+..f..| +00000160 55 ac 80 bf 23 11 68 96 82 df 44 cf bc 44 4f 54 |U...#.h...D..DOT| +00000170 ce 0c 32 01 59 5e 3e a8 28 e1 33 7d 7d fb 2a 87 |..2.Y^>.(.3}}.*.| +00000180 53 d1 32 25 b8 29 5a 5e 45 24 4d a8 47 58 bc 9c |S.2%.)Z^E$M.GX..| +00000190 6f f3 61 a9 ca e0 ad 32 88 04 1a da 83 ff fd 31 |o.a....2.......1| +000001a0 84 65 9e 33 bb 79 d4 71 55 52 bc 57 fd 2e d5 98 |.e.3.y.qUR.W....| +000001b0 46 b9 dc 74 58 7c c9 25 44 3c 07 97 5d bc 65 b5 |F..tX|.%D<..].e.| +000001c0 b5 46 50 fa 52 f9 45 d7 0f f5 d2 4e 16 03 03 00 |.FP.R.E....N....| +000001d0 48 0f 00 00 44 08 07 00 40 e2 1c ab 11 6c 52 e6 |H...D...@....lR.| +000001e0 e8 7f 67 f0 6e 6a e4 a8 4f 25 89 31 d7 f8 dd 6f |..g.nj..O%.1...o| +000001f0 fd c7 84 e9 59 6b 77 b6 3b fb bc b3 d6 a7 96 4c |....Ykw.;......L| +00000200 2f 54 d2 cf 6b 06 5f a5 69 b6 85 0e a9 a2 90 aa |/T..k._.i.......| +00000210 c4 b2 89 17 b3 c7 b9 73 00 14 03 03 00 01 01 16 |.......s........| +00000220 03 03 00 40 45 8d 48 5b 23 74 21 05 ae 22 ce c0 |...@E.H[#t!.."..| +00000230 8a 05 9a 15 7e fb 61 73 dd 45 fd d0 97 a4 ca f5 |....~.as.E......| +00000240 84 f0 01 c4 e4 44 78 c2 14 4f b6 27 0f e8 5a 9d |.....Dx..O.'..Z.| +00000250 69 7c 9b c4 c5 a3 4d 42 bf 2b 89 c6 a3 c2 ca 7a |i|....MB.+.....z| +00000260 d3 6c 5e 51 |.l^Q| >>> Flow 4 (server to client) 00000000 14 03 03 00 01 01 16 03 03 00 40 00 00 00 00 00 |..........@.....| -00000010 00 00 00 00 00 00 00 00 00 00 00 d4 e6 b8 6f 53 |..............oS| -00000020 6a d9 37 2b a4 95 9f 04 e5 99 2f f9 9a 16 fd a7 |j.7+....../.....| -00000030 2d 39 d9 aa 7c 26 9e 44 4b 7f 8f d5 c6 24 4d ac |-9..|&.DK....$M.| -00000040 13 ca 8a 45 1e 66 dc 9a bf 76 22 17 03 03 00 40 |...E.f...v"....@| +00000010 00 00 00 00 00 00 00 00 00 00 00 d0 d7 ea c0 57 |...............W| +00000020 b8 c4 0e ad 2b ba 7e f7 40 0e 92 42 0b c1 55 38 |....+.~.@..B..U8| +00000030 89 ac d8 9f 46 96 89 c8 a0 06 e7 84 ac 42 6f a8 |....F........Bo.| +00000040 e2 67 49 fe 5b 2f 66 3e 47 c3 14 17 03 03 00 40 |.gI.[/f>G......@| 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| -00000060 3f 5c 60 f8 22 7b aa 82 38 c4 4a 2e 07 50 cb 6c |?\`."{..8.J..P.l| -00000070 3f 6f a9 39 bf 21 ce 7a 30 72 03 90 ec bc 9c 18 |?o.9.!.z0r......| -00000080 1f a9 7f 82 3a d9 46 d9 d8 b8 77 65 e8 b3 e7 f5 |....:.F...we....| +00000060 95 78 c4 75 cf 05 a9 ce aa 85 0b 8e 4e fc 4b dc |.x.u........N.K.| +00000070 59 70 3e 68 85 68 97 9a eb 22 22 3a 8c 61 91 a4 |Yp>h.h..."":.a..| +00000080 89 06 bd 9e fc 8d 1d 4b ed fe 4b d6 e7 0a 6e 2b |.......K..K...n+| 00000090 15 03 03 00 30 00 00 00 00 00 00 00 00 00 00 00 |....0...........| -000000a0 00 00 00 00 00 6d 29 d4 87 0a b4 1d b4 9d f4 12 |.....m).........| -000000b0 bc 3d a3 1b 79 21 85 0d e7 10 64 92 40 39 05 99 |.=..y!....d.@9..| -000000c0 c8 a7 dd ef 0e |.....| +000000a0 00 00 00 00 00 92 d4 46 1f 6b d5 63 a7 95 0d c2 |.......F.k.c....| +000000b0 2f a9 a2 5f 0d 70 8f a5 31 e3 5c 1d fa ac f6 2e |/.._.p..1.\.....| +000000c0 02 6d e8 9f 95 |.m...| diff --git a/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndGiven b/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndGiven index cc6450a4ce..585e6af657 100644 --- a/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndGiven +++ b/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndGiven @@ -1,7 +1,7 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 6d 01 00 00 69 03 03 e9 31 0f d0 25 |....m...i...1..%| -00000010 ef 25 a7 1a 9b 8c 4b a3 ca 2b a6 54 89 1c e1 68 |.%....K..+.T...h| -00000020 6f b2 b2 60 6f 8a dc 87 24 8c 7b 00 00 04 00 2f |o..`o...$.{..../| +00000000 16 03 01 00 6d 01 00 00 69 03 03 0e c0 95 b1 0b |....m...i.......| +00000010 7b b5 57 cc 04 e7 03 d0 66 8d ee 9d da 65 dc 74 |{.W.....f....e.t| +00000020 0d de 11 47 38 cd 19 12 f4 06 17 00 00 04 00 2f |...G8........../| 00000030 00 ff 01 00 00 3c 00 16 00 00 00 17 00 00 00 0d |.....<..........| 00000040 00 30 00 2e 04 03 05 03 06 03 08 07 08 08 08 09 |.0..............| 00000050 08 0a 08 0b 08 04 08 05 08 06 04 01 05 01 06 01 |................| @@ -49,10 +49,10 @@ 00000260 ee b1 87 82 f1 6c 04 ed 73 bb b3 43 77 8d 0c 1c |.....l..s..Cw...| 00000270 f1 0f a1 d8 40 83 61 c9 4c 72 2b 9d ae db 46 06 |....@.a.Lr+...F.| 00000280 06 4d f4 c1 b3 3e c0 d1 bd 42 d4 db fe 3d 13 60 |.M...>...B...=.`| -00000290 84 5c 21 d3 3b e9 fa e7 16 03 03 00 23 0d 00 00 |.\!.;.......#...| -000002a0 1f 02 01 40 00 18 08 04 04 03 08 07 08 05 08 06 |...@............| -000002b0 04 01 05 01 06 01 05 03 06 03 02 01 02 03 00 00 |................| -000002c0 16 03 03 00 04 0e 00 00 00 |.........| +00000290 84 5c 21 d3 3b e9 fa e7 16 03 03 00 1f 0d 00 00 |.\!.;...........| +000002a0 1b 02 01 40 00 14 08 04 04 03 08 07 08 05 08 06 |...@............| +000002b0 04 01 05 01 06 01 05 03 06 03 00 00 16 03 03 00 |................| +000002c0 04 0e 00 00 00 |.....| >>> Flow 3 (client to server) 00000000 16 03 03 01 fd 0b 00 01 f9 00 01 f6 00 01 f3 30 |...............0| 00000010 82 01 ef 30 82 01 58 a0 03 02 01 02 02 10 5c 19 |...0..X.......\.| @@ -86,40 +86,40 @@ 000001d0 ac 11 b1 28 56 be 1d cd 61 62 84 09 bf d6 80 c6 |...(V...ab......| 000001e0 45 8d 82 2c b4 d8 83 9b db c9 22 b7 2a 12 11 7b |E..,......".*..{| 000001f0 fa 02 3b c1 c9 ff ea c9 9d a8 49 d3 95 d7 d5 0e |..;.......I.....| -00000200 e5 35 16 03 03 00 86 10 00 00 82 00 80 29 51 da |.5...........)Q.| -00000210 8e 5c 3e fb 44 8a 0f 97 42 23 8b e2 73 cc e2 90 |.\>.D...B#..s...| -00000220 11 c4 98 01 e9 60 96 9e a9 96 30 c5 95 f8 56 0e |.....`....0...V.| -00000230 4a 2e 77 e7 7e 23 b7 49 31 c4 87 c5 69 c6 ca 6f |J.w.~#.I1...i..o| -00000240 ea 53 41 b4 2e 1e f6 0b 33 f5 e1 40 69 c0 91 6f |.SA.....3..@i..o| -00000250 88 c1 68 c8 18 99 6e fe b3 5f 9b ee f1 4a 76 41 |..h...n.._...JvA| -00000260 1f d1 05 f5 39 76 61 e6 a6 ea 75 0e 50 32 a1 19 |....9va...u.P2..| -00000270 20 6a 4c 5d 62 6e 2a 6e af f9 9c 38 b6 3a bc 86 | jL]bn*n...8.:..| -00000280 eb ac 6d d3 b5 48 30 11 4d 98 2e 61 34 16 03 03 |..m..H0.M..a4...| -00000290 00 88 0f 00 00 84 08 04 00 80 82 ed 3f da b5 50 |............?..P| -000002a0 d2 50 51 14 cf ee f7 b9 7b a9 0c 77 2f 88 42 0a |.PQ.....{..w/.B.| -000002b0 34 a9 5d e7 32 26 3a 28 87 49 fb c4 83 31 68 c6 |4.].2&:(.I...1h.| -000002c0 0d 32 d4 31 0a d1 d6 1e 6f 7f 89 93 bf b7 7c c7 |.2.1....o.....|.| -000002d0 95 f8 c3 69 d8 58 4e e4 76 07 36 84 b7 c3 e7 22 |...i.XN.v.6...."| -000002e0 01 4c 59 ae 89 95 bb e0 07 e0 31 6a e2 95 4c d4 |.LY.......1j..L.| -000002f0 01 54 9d 27 82 60 31 13 39 07 47 c2 0c 08 5c d4 |.T.'.`1.9.G...\.| -00000300 03 5a 6f d7 89 a0 67 5e 2d a0 11 03 bf 0e 35 d8 |.Zo...g^-.....5.| -00000310 d0 78 2f 1e d8 15 47 ce c9 d3 14 03 03 00 01 01 |.x/...G.........| -00000320 16 03 03 00 40 d0 0a 0e 93 dd 9a 51 4f a9 7f 5f |....@......QO.._| -00000330 93 a6 60 a6 f2 10 f1 bd bd ae 13 5d 11 b7 0d 1a |..`........]....| -00000340 3d 1e f3 0c b7 53 7c 10 ed fa 8c d7 3f 20 ec f2 |=....S|.....? ..| -00000350 7d e9 15 87 3d d3 05 21 3a bc a5 54 fa 40 3b 53 |}...=..!:..T.@;S| -00000360 41 7c ea c6 28 |A|..(| +00000200 e5 35 16 03 03 00 86 10 00 00 82 00 80 cc d2 66 |.5.............f| +00000210 37 df f1 5d cb 6f 1d 6b 64 ea 62 45 97 dd 47 f8 |7..].o.kd.bE..G.| +00000220 e5 a0 f6 84 46 9b 6c 5b c9 79 60 07 b0 d1 5a e6 |....F.l[.y`...Z.| +00000230 5c 1a 43 b1 04 9f f2 3d 7a 09 da e0 45 ea 30 8a |\.C....=z...E.0.| +00000240 5c 08 07 67 17 2e 55 f5 0a 13 96 5c 92 e5 61 66 |\..g..U....\..af| +00000250 92 fe c6 44 9c 4f 62 54 10 12 df f7 e4 11 74 f6 |...D.ObT......t.| +00000260 35 81 bb 55 4f ce 43 dc 7f 4d bc 4f 8b 0c ef 13 |5..UO.C..M.O....| +00000270 43 8a e5 80 dc 38 3e 8a f5 7b 5c 5d 1c 76 10 06 |C....8>..{\].v..| +00000280 3d c5 05 5b cb 9a 17 20 13 29 a5 36 5d 16 03 03 |=..[... .).6]...| +00000290 00 88 0f 00 00 84 08 04 00 80 a7 7f 2c 3b d1 82 |............,;..| +000002a0 8a 17 50 2a f6 c4 ac ce 47 1b 25 23 4b 0c d0 17 |..P*....G.%#K...| +000002b0 89 18 98 a6 e4 b8 51 70 6a 59 72 1a aa 68 e8 25 |......QpjYr..h.%| +000002c0 f5 4d 72 66 be bb 25 61 9b 36 e0 24 a5 34 e4 36 |.Mrf..%a.6.$.4.6| +000002d0 23 0a 36 a8 81 f4 19 62 98 2b af 1b f5 c4 55 d2 |#.6....b.+....U.| +000002e0 d5 65 58 b8 31 21 f4 fe ce 44 cc ea 77 8e 1d f7 |.eX.1!...D..w...| +000002f0 bc a4 4c e5 cc 90 10 f3 a0 8d 10 72 08 d4 50 1c |..L........r..P.| +00000300 88 82 a7 61 da cb 35 ba 26 3c 18 11 6c 14 d6 1a |...a..5.&<..l...| +00000310 7f 65 3d 2c 74 f0 92 a3 aa fd 14 03 03 00 01 01 |.e=,t...........| +00000320 16 03 03 00 40 f3 3a f0 23 48 35 41 7f d0 ed 22 |....@.:.#H5A..."| +00000330 5b 1a 47 71 60 08 b0 6b cd 32 56 c0 d0 05 90 b3 |[.Gq`..k.2V.....| +00000340 0b 35 3c 03 49 ec 06 5d b4 ce 1d 10 4e bc 75 bf |.5<.I..]....N.u.| +00000350 23 3b f1 d6 8f f6 f0 70 b6 94 8f 51 fd 4f 47 0b |#;.....p...Q.OG.| +00000360 e1 c9 ad c8 14 |.....| >>> Flow 4 (server to client) 00000000 14 03 03 00 01 01 16 03 03 00 40 00 00 00 00 00 |..........@.....| -00000010 00 00 00 00 00 00 00 00 00 00 00 a8 8e 30 08 f0 |.............0..| -00000020 87 7b 13 31 99 6d 7e 9a 9b 03 d3 6f 84 d8 d9 31 |.{.1.m~....o...1| -00000030 2b d2 aa d4 0e ae 6e 72 03 ac e7 7e 5c 22 cc ac |+.....nr...~\"..| -00000040 33 b5 df 04 b2 4a 2b 6f bb a1 6f 17 03 03 00 40 |3....J+o..o....@| +00000010 00 00 00 00 00 00 00 00 00 00 00 6e d3 79 f1 02 |...........n.y..| +00000020 4d 8e ad 3b 33 5a 92 10 55 79 94 b7 43 ed 08 c1 |M..;3Z..Uy..C...| +00000030 e1 5f 04 c6 01 82 ce 96 70 c7 97 8d cc 0a ca d3 |._......p.......| +00000040 46 d4 2f 9f b8 78 57 27 ee 14 aa 17 03 03 00 40 |F./..xW'.......@| 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| -00000060 50 9c 81 04 9b 1d 61 8a 30 9c 18 68 c7 e1 c9 f3 |P.....a.0..h....| -00000070 70 f0 1b b6 4a dd fc c7 e3 e3 20 e2 4d 6f 9f bf |p...J..... .Mo..| -00000080 17 b0 5e 5b 45 73 29 1e d4 30 b4 03 ca 8e 69 63 |..^[Es)..0....ic| +00000060 ed 9f 38 f6 99 84 f5 cf 5e ee 27 64 f7 29 3c 18 |..8.....^.'d.)<.| +00000070 a0 55 23 b7 db 4a 6d 2d 80 c9 75 a5 a3 1f 38 24 |.U#..Jm-..u...8$| +00000080 0a 99 18 0d 0b 5d 7d 03 f7 8d d2 55 fd 98 7f 69 |.....]}....U...i| 00000090 15 03 03 00 30 00 00 00 00 00 00 00 00 00 00 00 |....0...........| -000000a0 00 00 00 00 00 28 ca 6a 4c 1b 3c 11 61 ce b2 58 |.....(.jL.<.a..X| -000000b0 94 e7 e4 7d c5 ce 51 03 c4 ae b5 4c 33 0b 3c 95 |...}..Q....L3.<.| -000000c0 ec b1 65 ea da |..e..| +000000a0 00 00 00 00 00 aa 43 ca 95 7d 1a 47 d5 0b 0e c7 |......C..}.G....| +000000b0 cc 61 3d 43 5b 69 05 a1 39 eb 03 52 41 05 54 e9 |.a=C[i..9..RA.T.| +000000c0 5d b6 ca 56 2c |]..V,| diff --git a/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndPKCS1v15Given b/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndPKCS1v15Given index 875fe1becb..10949e5e3b 100644 --- a/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndPKCS1v15Given +++ b/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndPKCS1v15Given @@ -1,7 +1,7 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 6d 01 00 00 69 03 03 dc f3 c6 52 a4 |....m...i.....R.| -00000010 9a 9c 53 e0 5a 3c cc 4c 4f 09 32 7f f1 7c 86 6b |..S.Z<.LO.2..|.k| -00000020 75 59 68 a5 81 72 45 46 fb 94 a8 00 00 04 00 2f |uYh..rEF......./| +00000000 16 03 01 00 6d 01 00 00 69 03 03 c2 c7 15 c0 0f |....m...i.......| +00000010 0d fc 44 60 25 22 6c 4a ec f1 b0 66 5d c4 f3 bc |..D`%"lJ...f]...| +00000020 fe da b2 9a af 24 04 b7 bb 74 79 00 00 04 00 2f |.....$...ty..../| 00000030 00 ff 01 00 00 3c 00 16 00 00 00 17 00 00 00 0d |.....<..........| 00000040 00 30 00 2e 04 03 05 03 06 03 08 07 08 08 08 09 |.0..............| 00000050 08 0a 08 0b 08 04 08 05 08 06 04 01 05 01 06 01 |................| @@ -49,10 +49,10 @@ 00000260 ee b1 87 82 f1 6c 04 ed 73 bb b3 43 77 8d 0c 1c |.....l..s..Cw...| 00000270 f1 0f a1 d8 40 83 61 c9 4c 72 2b 9d ae db 46 06 |....@.a.Lr+...F.| 00000280 06 4d f4 c1 b3 3e c0 d1 bd 42 d4 db fe 3d 13 60 |.M...>...B...=.`| -00000290 84 5c 21 d3 3b e9 fa e7 16 03 03 00 23 0d 00 00 |.\!.;.......#...| -000002a0 1f 02 01 40 00 18 08 04 04 03 08 07 08 05 08 06 |...@............| -000002b0 04 01 05 01 06 01 05 03 06 03 02 01 02 03 00 00 |................| -000002c0 16 03 03 00 04 0e 00 00 00 |.........| +00000290 84 5c 21 d3 3b e9 fa e7 16 03 03 00 1f 0d 00 00 |.\!.;...........| +000002a0 1b 02 01 40 00 14 08 04 04 03 08 07 08 05 08 06 |...@............| +000002b0 04 01 05 01 06 01 05 03 06 03 00 00 16 03 03 00 |................| +000002c0 04 0e 00 00 00 |.....| >>> Flow 3 (client to server) 00000000 16 03 03 01 fd 0b 00 01 f9 00 01 f6 00 01 f3 30 |...............0| 00000010 82 01 ef 30 82 01 58 a0 03 02 01 02 02 10 5c 19 |...0..X.......\.| @@ -86,40 +86,40 @@ 000001d0 ac 11 b1 28 56 be 1d cd 61 62 84 09 bf d6 80 c6 |...(V...ab......| 000001e0 45 8d 82 2c b4 d8 83 9b db c9 22 b7 2a 12 11 7b |E..,......".*..{| 000001f0 fa 02 3b c1 c9 ff ea c9 9d a8 49 d3 95 d7 d5 0e |..;.......I.....| -00000200 e5 35 16 03 03 00 86 10 00 00 82 00 80 b5 77 6b |.5............wk| -00000210 fa 10 fb df 48 8f e7 51 b4 cb 14 c5 48 bd 63 d6 |....H..Q....H.c.| -00000220 0e 19 d0 81 a8 5a d7 b5 43 84 35 85 37 b7 8d 2e |.....Z..C.5.7...| -00000230 c7 c8 70 4c f4 45 bf be 17 86 e7 40 1d 6f 88 2a |..pL.E.....@.o.*| -00000240 91 b5 aa aa 34 f7 9a f3 96 e4 dd 51 15 88 be f1 |....4......Q....| -00000250 80 a9 6f 94 ed c7 5d 28 66 b4 37 e8 22 4f 42 c3 |..o...](f.7."OB.| -00000260 b5 f0 2f dd 57 dc 8d e5 5a c0 9d fa ce 3c 7a 2d |../.W...Z....>> Flow 4 (server to client) 00000000 14 03 03 00 01 01 16 03 03 00 40 00 00 00 00 00 |..........@.....| -00000010 00 00 00 00 00 00 00 00 00 00 00 a2 b0 ad 7e 71 |..............~q| -00000020 0c 2c db df 4c b1 4f 19 e6 00 4f 11 ff 5e 4a c5 |.,..L.O...O..^J.| -00000030 c2 9d 8c 6c 03 50 12 3d 81 ec 44 5a 75 ba 2d 48 |...l.P.=..DZu.-H| -00000040 7a 74 c3 a3 68 5a 26 ee 7e f5 a2 17 03 03 00 40 |zt..hZ&.~......@| +00000010 00 00 00 00 00 00 00 00 00 00 00 0c 22 6e 84 b2 |............"n..| +00000020 a1 f9 18 62 3a 86 16 7e e6 17 3b 8e e5 88 b8 8e |...b:..~..;.....| +00000030 3c c5 08 11 8e 0a df df d4 69 bc 01 7d c8 63 33 |<........i..}.c3| +00000040 b5 15 bf 03 5e df 50 29 c5 c4 c2 17 03 03 00 40 |....^.P).......@| 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| -00000060 ad 1b 16 8e 39 99 64 7c c5 49 24 83 c4 4e f6 86 |....9.d|.I$..N..| -00000070 6b 5d 68 ae f4 0b 58 23 83 eb ab 01 52 4d 07 a1 |k]h...X#....RM..| -00000080 59 00 e8 dc a5 a1 6f 76 e2 e9 f2 e1 21 58 6b a0 |Y.....ov....!Xk.| +00000060 45 76 91 63 fa 48 9b c9 47 6a f6 7b fa 72 ab 78 |Ev.c.H..Gj.{.r.x| +00000070 4f cb c4 bb 68 78 7c 71 13 f9 47 32 33 59 d4 16 |O...hx|q..G23Y..| +00000080 83 fa 8e db 37 b6 cb d5 a1 1a e5 21 1b 50 a6 d3 |....7......!.P..| 00000090 15 03 03 00 30 00 00 00 00 00 00 00 00 00 00 00 |....0...........| -000000a0 00 00 00 00 00 3c 6e a7 81 36 d0 8c 99 d8 f3 55 |.....>> Flow 1 (client to server) -00000000 16 03 01 00 6d 01 00 00 69 03 03 ac ea d9 49 98 |....m...i.....I.| -00000010 9a 0c 7c 86 64 7c 73 72 6d 79 3f 7b e9 11 8b 1d |..|.d|srmy?{....| -00000020 79 95 f5 f5 23 9f b2 f1 9c f4 b5 00 00 04 00 2f |y...#........../| +00000000 16 03 01 00 6d 01 00 00 69 03 03 f2 1b 6e dc ce |....m...i....n..| +00000010 fe af a8 4b 44 88 5f ba eb c5 d7 92 7e 69 d7 19 |...KD._.....~i..| +00000020 b3 32 d3 99 e6 be 1f 4f 94 04 e6 00 00 04 00 2f |.2.....O......./| 00000030 00 ff 01 00 00 3c 00 16 00 00 00 17 00 00 00 0d |.....<..........| 00000040 00 30 00 2e 04 03 05 03 06 03 08 07 08 08 08 09 |.0..............| 00000050 08 0a 08 0b 08 04 08 05 08 06 04 01 05 01 06 01 |................| @@ -49,37 +49,37 @@ 00000260 ee b1 87 82 f1 6c 04 ed 73 bb b3 43 77 8d 0c 1c |.....l..s..Cw...| 00000270 f1 0f a1 d8 40 83 61 c9 4c 72 2b 9d ae db 46 06 |....@.a.Lr+...F.| 00000280 06 4d f4 c1 b3 3e c0 d1 bd 42 d4 db fe 3d 13 60 |.M...>...B...=.`| -00000290 84 5c 21 d3 3b e9 fa e7 16 03 03 00 23 0d 00 00 |.\!.;.......#...| -000002a0 1f 02 01 40 00 18 08 04 04 03 08 07 08 05 08 06 |...@............| -000002b0 04 01 05 01 06 01 05 03 06 03 02 01 02 03 00 00 |................| -000002c0 16 03 03 00 04 0e 00 00 00 |.........| +00000290 84 5c 21 d3 3b e9 fa e7 16 03 03 00 1f 0d 00 00 |.\!.;...........| +000002a0 1b 02 01 40 00 14 08 04 04 03 08 07 08 05 08 06 |...@............| +000002b0 04 01 05 01 06 01 05 03 06 03 00 00 16 03 03 00 |................| +000002c0 04 0e 00 00 00 |.....| >>> Flow 3 (client to server) 00000000 16 03 03 00 07 0b 00 00 03 00 00 00 16 03 03 00 |................| -00000010 86 10 00 00 82 00 80 2e 37 44 fb d7 1d 2f 3d a5 |........7D.../=.| -00000020 1b 43 cf f4 1c cf 9d 95 fa be 9f 9d 96 8a 27 5d |.C............']| -00000030 7b be 19 10 bd 5e 9a 3e 49 49 d2 af 85 07 70 f8 |{....^.>II....p.| -00000040 c8 4f 69 02 ff 4e 9d ee f4 0d 4d 54 a1 aa 61 a3 |.Oi..N....MT..a.| -00000050 e0 cc db a7 2c 46 80 6e eb 10 fb cd 2e 3b c5 50 |....,F.n.....;.P| -00000060 2b a5 d9 a0 bf 01 d2 f8 d8 51 2b ad 40 6f c6 6f |+........Q+.@o.o| -00000070 0e 30 53 27 73 89 b7 1b c1 28 ff ff 18 4c fa 6f |.0S's....(...L.o| -00000080 fa 5f 16 b3 38 36 9f f4 07 74 ca bb bb c2 3f aa |._..86...t....?.| -00000090 0d e7 42 24 fb f8 4c 14 03 03 00 01 01 16 03 03 |..B$..L.........| -000000a0 00 40 19 02 9e 3a ce b9 38 40 ce d6 3b 87 b2 f6 |.@...:..8@..;...| -000000b0 1b 7d ee 76 62 f8 6e 04 80 8f cb 1b f7 1e 1d a6 |.}.vb.n.........| -000000c0 50 8a 59 b1 ad 7d c5 9d 2f 2d 14 56 2e e5 3b b3 |P.Y..}../-.V..;.| -000000d0 db da 7e 37 10 97 71 91 d3 7b 93 f6 64 a4 d7 8b |..~7..q..{..d...| -000000e0 d2 f0 |..| +00000010 86 10 00 00 82 00 80 36 1c ba 9d 08 27 52 8b f7 |.......6....'R..| +00000020 24 d9 e6 18 d7 21 75 1d 76 e0 13 a0 35 d5 08 7d |$....!u.v...5..}| +00000030 c1 8e 3f b2 aa 10 b4 f9 d4 77 e6 cd b3 92 94 0e |..?......w......| +00000040 7a c9 0b 5f e2 34 88 ad fc 02 1b 84 10 ff e8 2a |z.._.4.........*| +00000050 dd 2d 82 5c bb ca 15 f8 73 74 ad dd 9f 9d e7 38 |.-.\....st.....8| +00000060 7c cd 74 8e 37 0f 87 62 cf 30 68 8a e2 15 9d d2 ||.t.7..b.0h.....| +00000070 43 4b e3 29 69 e4 db 94 9b 5a 7c c6 9b e8 7d 26 |CK.)i....Z|...}&| +00000080 4b a8 4a 28 c1 47 cf 15 7b 22 a2 1d 6b ac 16 e4 |K.J(.G..{"..k...| +00000090 e1 62 6e be 9a 05 67 14 03 03 00 01 01 16 03 03 |.bn...g.........| +000000a0 00 40 98 4e 3d 6c 72 d8 7f 81 b6 b8 ed 32 2e 98 |.@.N=lr......2..| +000000b0 8d fc c1 1d 56 97 82 ef 3f 7c 86 79 e3 27 06 ed |....V...?|.y.'..| +000000c0 87 c4 28 2d 6b f1 b1 88 d0 67 34 64 ba e1 d9 34 |..(-k....g4d...4| +000000d0 a4 2c ff e0 b2 38 21 5d 04 64 99 a4 34 62 aa 81 |.,...8!].d..4b..| +000000e0 cf 21 |.!| >>> Flow 4 (server to client) 00000000 14 03 03 00 01 01 16 03 03 00 40 00 00 00 00 00 |..........@.....| -00000010 00 00 00 00 00 00 00 00 00 00 00 46 c8 31 06 11 |...........F.1..| -00000020 01 8e df b0 e7 cc 16 d3 97 2e a2 68 e7 a4 d1 0f |...........h....| -00000030 91 71 dd ba db 97 20 45 60 c2 47 c7 ee 56 c4 68 |.q.... E`.G..V.h| -00000040 a4 b1 05 09 e2 68 4d 54 fa ff 01 17 03 03 00 40 |.....hMT.......@| +00000010 00 00 00 00 00 00 00 00 00 00 00 66 31 30 4e 0f |...........f10N.| +00000020 de bd de 72 65 0c 74 ab 64 d8 59 47 fc 6b ad d8 |...re.t.d.YG.k..| +00000030 73 24 da 77 62 ba 0a 8c 69 d3 c4 6f 89 ef 5b 92 |s$.wb...i..o..[.| +00000040 d3 ca 3b e8 67 2b 7c bf 39 7c 8b 17 03 03 00 40 |..;.g+|.9|.....@| 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| -00000060 79 bf ad 63 e3 11 2b d0 41 0e 24 85 92 c4 9b b5 |y..c..+.A.$.....| -00000070 b2 d3 2e fc aa 46 84 85 a7 37 90 fc f0 2b 5a 7e |.....F...7...+Z~| -00000080 28 9f 2e 57 1d 8f c3 ca eb 40 32 79 af 4b b8 28 |(..W.....@2y.K.(| +00000060 5c a8 b1 1c 7e e1 76 b8 d0 0c 4d 3d 3f 36 a8 26 |\...~.v...M=?6.&| +00000070 66 00 dd 47 3c ae 1c 8b 6f b0 6b 80 75 c4 0b 7e |f..G<...o.k.u..~| +00000080 ee fb 8c fe 2f 2f 65 1b 9b e1 72 a9 ac 8f cf da |....//e...r.....| 00000090 15 03 03 00 30 00 00 00 00 00 00 00 00 00 00 00 |....0...........| -000000a0 00 00 00 00 00 8b 6c 27 b8 ff f9 ea ca 68 75 54 |......l'.....huT| -000000b0 bf bf a7 f4 b1 58 a5 b3 31 01 4d c7 85 58 31 d4 |.....X..1.M..X1.| -000000c0 e7 da 7e 77 68 |..~wh| +000000a0 00 00 00 00 00 9d 96 95 12 3b 42 41 a8 30 b2 8c |.........;BA.0..| +000000b0 3d 18 f6 27 b7 77 30 d9 29 0c 68 ec 2b 09 26 91 |=..'.w0.).h.+.&.| +000000c0 23 0c e2 10 07 |#....| diff --git a/src/internal/godebugs/godebugs_test.go b/src/internal/godebugs/godebugs_test.go index 046193b5c6..168acc134a 100644 --- a/src/internal/godebugs/godebugs_test.go +++ b/src/internal/godebugs/godebugs_test.go @@ -46,7 +46,8 @@ func TestAll(t *testing.T) { if info.Old != "" && info.Changed == 0 { t.Errorf("Name=%s has Old, missing Changed", info.Name) } - if !strings.Contains(doc, "`"+info.Name+"`") { + if !strings.Contains(doc, "`"+info.Name+"`") && + !strings.Contains(doc, "`"+info.Name+"=") { t.Errorf("Name=%s not documented in doc/godebug.md", info.Name) } if !info.Opaque && !incs[info.Name] { diff --git a/src/internal/godebugs/table.go b/src/internal/godebugs/table.go index d7d3f430cd..29539b2f38 100644 --- a/src/internal/godebugs/table.go +++ b/src/internal/godebugs/table.go @@ -62,6 +62,7 @@ var All = []Info{ {Name: "tlsmaxrsasize", Package: "crypto/tls"}, {Name: "tlsmlkem", Package: "crypto/tls", Changed: 24, Old: "0", Opaque: true}, {Name: "tlsrsakex", Package: "crypto/tls", Changed: 22, Old: "1"}, + {Name: "tlssha1", Package: "crypto/tls", Changed: 25, Old: "1"}, {Name: "tlsunsafeekm", Package: "crypto/tls", Changed: 22, Old: "1"}, {Name: "updatemaxprocs", Package: "runtime", Changed: 25, Old: "0"}, {Name: "winreadlinkvolume", Package: "os", Changed: 23, Old: "0"}, diff --git a/src/runtime/metrics/doc.go b/src/runtime/metrics/doc.go index 8204e87fd1..7ef09be2fc 100644 --- a/src/runtime/metrics/doc.go +++ b/src/runtime/metrics/doc.go @@ -350,6 +350,10 @@ Below is the full list of supported metrics, ordered lexicographically. The number of non-default behaviors executed by the crypto/tls package due to a non-default GODEBUG=tlsrsakex=... setting. + /godebug/non-default-behavior/tlssha1:events + The number of non-default behaviors executed by the crypto/tls + package due to a non-default GODEBUG=tlssha1=... setting. + /godebug/non-default-behavior/tlsunsafeekm:events The number of non-default behaviors executed by the crypto/tls package due to a non-default GODEBUG=tlsunsafeekm=... setting. From aab8552088ae06ee7d6515d0dfc9efa7979feb5c Mon Sep 17 00:00:00 2001 From: Daniel McCarney Date: Sat, 17 May 2025 11:17:21 -0400 Subject: [PATCH 67/99] crypto/tls: use decode alert for handshake msg unmarshal err Previously if instances of the handshakeMessage interface returned false from unmarshal(), indicating an umarshalling error, the crypto/tls package would emit an unexpected_message alert. This commit changes to use a decode_error alert for this condition instead. The usage-pattern of the handshakeMessage interface is that we switch on the message type, invoke a specific concrete handshakeMessage type's unmarshal function, and then return it to the caller on success. At this point the caller looks at the message type and can determine if the message was unexpected or not. If it was unexpected, the call-sites emit the correct error for that case. Only the caller knows the current protocol state and allowed message types, not the generic handshake decoding logic. With the above in mind, if we find that within the unmarshal logic for a specific message type that the data we have in hand doesn't match the protocol syntax we should emit a decode_error. An unexpected_message error isn't appropriate because we don't yet know if the message is unexpected or not, only that the message can't be decoded based on the spec's syntax for the type the message claimed to be. Notably one unit test, TestQUICPostHandshakeKeyUpdate, had to have its test data adjusted because it was previously not testing the right thing: it was double-encoding the type & length prefix data for a key update message and expecting the QUIC logic to reject it as an inappropriate post-handshake message. In reality it was being rejected sooner as an invalid key update message from the double-encoding and this was masked by the previous alert for this condition matching the expected alert. Finally, changing our alert allows enabling a handful of BoGo tests related to duplicate extensions of the form "DuplicateExtension[Server|Client]-TLS-[TLS1|TLS11|TLS12|TLS13]". One test remains skipped (DuplicateExtensionClient-TLS-TLS13), as it requires additional follow-up. Updates #72006 Change-Id: I27a2cd231e4b8762b0d9e2dbd3d8ddd5b87fd5d1 Reviewed-on: https://go-review.googlesource.com/c/go/+/673738 Reviewed-by: Roland Shoemaker Reviewed-by: David Chase Auto-Submit: Daniel McCarney LUCI-TryBot-Result: Go LUCI Reviewed-by: Filippo Valsorda --- src/crypto/tls/bogo_config.json | 7 ------- src/crypto/tls/conn.go | 2 +- src/crypto/tls/handshake_server_test.go | 2 +- src/crypto/tls/quic_test.go | 11 ++++++----- 4 files changed, 8 insertions(+), 14 deletions(-) diff --git a/src/crypto/tls/bogo_config.json b/src/crypto/tls/bogo_config.json index b88201a457..8276d08d35 100644 --- a/src/crypto/tls/bogo_config.json +++ b/src/crypto/tls/bogo_config.json @@ -66,20 +66,13 @@ "SupportTicketsWithSessionID": "We don't support session ID resumption", "KeyUpdate-RequestACK": "TODO: first pass, this should be fixed", "SupportedVersionSelection-TLS12": "TODO: first pass, this should be fixed", - "DuplicateExtensionServer-TLS-TLS1": "TODO: first pass, this should be fixed", - "DuplicateExtensionClient-TLS-TLS1": "TODO: first pass, this should be fixed", "UnsolicitedServerNameAck-TLS-TLS1": "TODO: first pass, this should be fixed", "TicketSessionIDLength-33-TLS-TLS1": "TODO: first pass, this should be fixed", - "DuplicateExtensionServer-TLS-TLS11": "TODO: first pass, this should be fixed", - "DuplicateExtensionClient-TLS-TLS11": "TODO: first pass, this should be fixed", "UnsolicitedServerNameAck-TLS-TLS11": "TODO: first pass, this should be fixed", "TicketSessionIDLength-33-TLS-TLS11": "TODO: first pass, this should be fixed", - "DuplicateExtensionServer-TLS-TLS12": "TODO: first pass, this should be fixed", - "DuplicateExtensionClient-TLS-TLS12": "TODO: first pass, this should be fixed", "UnsolicitedServerNameAck-TLS-TLS12": "TODO: first pass, this should be fixed", "TicketSessionIDLength-33-TLS-TLS12": "TODO: first pass, this should be fixed", "DuplicateExtensionClient-TLS-TLS13": "TODO: first pass, this should be fixed", - "DuplicateExtensionServer-TLS-TLS13": "TODO: first pass, this should be fixed", "UnsolicitedServerNameAck-TLS-TLS13": "TODO: first pass, this should be fixed", "RenegotiationInfo-Forbidden-TLS13": "TODO: first pass, this should be fixed", "EMS-Forbidden-TLS13": "TODO: first pass, this should be fixed", diff --git a/src/crypto/tls/conn.go b/src/crypto/tls/conn.go index 141175c801..cd9b9778fd 100644 --- a/src/crypto/tls/conn.go +++ b/src/crypto/tls/conn.go @@ -1179,7 +1179,7 @@ func (c *Conn) unmarshalHandshakeMessage(data []byte, transcript transcriptHash) data = append([]byte(nil), data...) if !m.unmarshal(data) { - return nil, c.in.setErrorLocked(c.sendAlert(alertUnexpectedMessage)) + return nil, c.in.setErrorLocked(c.sendAlert(alertDecodeError)) } if transcript != nil { diff --git a/src/crypto/tls/handshake_server_test.go b/src/crypto/tls/handshake_server_test.go index c72974ef95..a6d64a506a 100644 --- a/src/crypto/tls/handshake_server_test.go +++ b/src/crypto/tls/handshake_server_test.go @@ -157,7 +157,7 @@ func TestRejectSNIWithTrailingDot(t *testing.T) { vers: VersionTLS12, random: make([]byte, 32), serverName: "foo.com.", - }, "unexpected message") + }, "decoding message") } func TestDontSelectECDSAWithRSAKey(t *testing.T) { diff --git a/src/crypto/tls/quic_test.go b/src/crypto/tls/quic_test.go index ba75101dd5..51cd4ef765 100644 --- a/src/crypto/tls/quic_test.go +++ b/src/crypto/tls/quic_test.go @@ -9,6 +9,7 @@ import ( "context" "errors" "reflect" + "strings" "testing" ) @@ -308,11 +309,11 @@ func TestQUICPostHandshakeKeyUpdate(t *testing.T) { if err != nil { t.Fatal(err) } - if err := cli.conn.HandleData(QUICEncryptionLevelApplication, append([]byte{ - byte(typeKeyUpdate), - byte(0), byte(0), byte(len(keyUpdateBytes)), - }, keyUpdateBytes...)); !errors.Is(err, alertUnexpectedMessage) { - t.Fatalf("key update request: got error %v, want alertUnexpectedMessage", err) + expectedErr := "unexpected key update message" + if err = cli.conn.HandleData(QUICEncryptionLevelApplication, keyUpdateBytes); err == nil { + t.Fatalf("key update request: expected error from post-handshake key update, got nil") + } else if !strings.Contains(err.Error(), expectedErr) { + t.Fatalf("key update request: got error %v, expected substring %q", err, expectedErr) } } From 88679da4a396de98e975deb0e007b1d888a55676 Mon Sep 17 00:00:00 2001 From: Daniel McCarney Date: Sat, 17 May 2025 11:33:07 -0400 Subject: [PATCH 68/99] crypto/tls: reject duplicate TLS 1.3 EncryptedExtensions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When a TLS 1.3 client processes the server's encryptedExtensionsMsg it should reject instances that contain duplicate extension types. RFC 8446 §4.2 says: There MUST NOT be more than one extension of the same type in a given extension block. This update matches enforcement done in the client hello unmarshalling, but applied to the TLS 1.3 encrypted extensions message unmarshalling. Making this change also allows enabling the DuplicateExtensionClient-TLS-TLS13 BoGo test. Updates #72006 Change-Id: I27a2cd231e4b8762b0d9e2dbd3d8ddd5b87fd5d2 Reviewed-on: https://go-review.googlesource.com/c/go/+/673757 Reviewed-by: David Chase LUCI-TryBot-Result: Go LUCI Auto-Submit: Daniel McCarney Reviewed-by: Filippo Valsorda Reviewed-by: Roland Shoemaker --- src/crypto/tls/bogo_config.json | 1 - src/crypto/tls/handshake_messages.go | 6 ++++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/crypto/tls/bogo_config.json b/src/crypto/tls/bogo_config.json index 8276d08d35..1bc647ce60 100644 --- a/src/crypto/tls/bogo_config.json +++ b/src/crypto/tls/bogo_config.json @@ -72,7 +72,6 @@ "TicketSessionIDLength-33-TLS-TLS11": "TODO: first pass, this should be fixed", "UnsolicitedServerNameAck-TLS-TLS12": "TODO: first pass, this should be fixed", "TicketSessionIDLength-33-TLS-TLS12": "TODO: first pass, this should be fixed", - "DuplicateExtensionClient-TLS-TLS13": "TODO: first pass, this should be fixed", "UnsolicitedServerNameAck-TLS-TLS13": "TODO: first pass, this should be fixed", "RenegotiationInfo-Forbidden-TLS13": "TODO: first pass, this should be fixed", "EMS-Forbidden-TLS13": "TODO: first pass, this should be fixed", diff --git a/src/crypto/tls/handshake_messages.go b/src/crypto/tls/handshake_messages.go index 6c6141c421..ad3e5fa352 100644 --- a/src/crypto/tls/handshake_messages.go +++ b/src/crypto/tls/handshake_messages.go @@ -1056,6 +1056,7 @@ func (m *encryptedExtensionsMsg) unmarshal(data []byte) bool { return false } + seenExts := make(map[uint16]bool) for !extensions.Empty() { var extension uint16 var extData cryptobyte.String @@ -1064,6 +1065,11 @@ func (m *encryptedExtensionsMsg) unmarshal(data []byte) bool { return false } + if seenExts[extension] { + return false + } + seenExts[extension] = true + switch extension { case extensionALPN: var protoList cryptobyte.String From 0aeaa6a495b7273f7a2190bc9857710190808e54 Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Tue, 20 May 2025 20:51:11 +0200 Subject: [PATCH 69/99] crypto/x509: use truncated SHA-256 for SubjectKeyId Fixes #71746 Change-Id: I6a6a46568b092933d8ac2039df99ee9f0edf6e56 Reviewed-on: https://go-review.googlesource.com/c/go/+/674477 Reviewed-by: Daniel McCarney Reviewed-by: David Chase Reviewed-by: Roland Shoemaker Auto-Submit: Filippo Valsorda LUCI-TryBot-Result: Go LUCI --- doc/godebug.md | 3 +++ .../6-stdlib/99-minor/crypto/x509/71746.md | 2 ++ src/crypto/x509/x509.go | 25 ++++++++++++++----- src/internal/godebugs/table.go | 1 + src/runtime/metrics/doc.go | 4 +++ 5 files changed, 29 insertions(+), 6 deletions(-) create mode 100644 doc/next/6-stdlib/99-minor/crypto/x509/71746.md diff --git a/doc/godebug.md b/doc/godebug.md index 3b8c62a46c..15be9da5df 100644 --- a/doc/godebug.md +++ b/doc/godebug.md @@ -183,6 +183,9 @@ limits. The default value `updatemaxprocs=1` will enable periodic updates. Go 1.25 disabled SHA-1 signature algorithms in TLS 1.2 according to RFC 9155. The default can be reverted using the `tlssha1=1` setting. +Go 1.25 switched to SHA-256 to fill in missing SubjectKeyId in +crypto/x509.CreateCertificate. The setting `x509sha256skid=0` reverts to SHA-1. + Go 1.25 corrected the semantics of contention reports for runtime-internal locks, and so removed the [`runtimecontentionstacks` setting](/pkg/runtime#hdr-Environment_Variable). diff --git a/doc/next/6-stdlib/99-minor/crypto/x509/71746.md b/doc/next/6-stdlib/99-minor/crypto/x509/71746.md new file mode 100644 index 0000000000..44e60293d3 --- /dev/null +++ b/doc/next/6-stdlib/99-minor/crypto/x509/71746.md @@ -0,0 +1,2 @@ +[CreateCertificate] now uses truncated SHA-256 to populate the `SubjectKeyId` if +it is missing. The GODEBUG setting `x509sha256skid=0` reverts to SHA-1. diff --git a/src/crypto/x509/x509.go b/src/crypto/x509/x509.go index b2543d0727..1f06b4fbc5 100644 --- a/src/crypto/x509/x509.go +++ b/src/crypto/x509/x509.go @@ -29,6 +29,7 @@ import ( "crypto/elliptic" "crypto/rsa" "crypto/sha1" + "crypto/sha256" "crypto/x509/pkix" "encoding/asn1" "encoding/pem" @@ -1728,12 +1729,22 @@ func CreateCertificate(rand io.Reader, template, parent *Certificate, pub, priv subjectKeyId := template.SubjectKeyId if len(subjectKeyId) == 0 && template.IsCA { - // SubjectKeyId generated using method 1 in RFC 5280, Section 4.2.1.2: - // (1) The keyIdentifier is composed of the 160-bit SHA-1 hash of the - // value of the BIT STRING subjectPublicKey (excluding the tag, - // length, and number of unused bits). - h := sha1.Sum(publicKeyBytes) - subjectKeyId = h[:] + if x509sha256skid.Value() == "0" { + x509sha256skid.IncNonDefault() + // SubjectKeyId generated using method 1 in RFC 5280, Section 4.2.1.2: + // (1) The keyIdentifier is composed of the 160-bit SHA-1 hash of the + // value of the BIT STRING subjectPublicKey (excluding the tag, + // length, and number of unused bits). + h := sha1.Sum(publicKeyBytes) + subjectKeyId = h[:] + } else { + // SubjectKeyId generated using method 1 in RFC 7093, Section 2: + // 1) The keyIdentifier is composed of the leftmost 160-bits of the + // SHA-256 hash of the value of the BIT STRING subjectPublicKey + // (excluding the tag, length, and number of unused bits). + h := sha256.Sum256(publicKeyBytes) + subjectKeyId = h[:20] + } } // Check that the signer's public key matches the private key, if available. @@ -1781,6 +1792,8 @@ func CreateCertificate(rand io.Reader, template, parent *Certificate, pub, priv }) } +var x509sha256skid = godebug.New("x509sha256skid") + // pemCRLPrefix is the magic string that indicates that we have a PEM encoded // CRL. var pemCRLPrefix = []byte("-----BEGIN X509 CRL") diff --git a/src/internal/godebugs/table.go b/src/internal/godebugs/table.go index 29539b2f38..38dc7b0fac 100644 --- a/src/internal/godebugs/table.go +++ b/src/internal/godebugs/table.go @@ -70,6 +70,7 @@ var All = []Info{ {Name: "x509keypairleaf", Package: "crypto/tls", Changed: 23, Old: "0"}, {Name: "x509negativeserial", Package: "crypto/x509", Changed: 23, Old: "1"}, {Name: "x509rsacrt", Package: "crypto/x509", Changed: 24, Old: "0"}, + {Name: "x509sha256skid", Package: "crypto/x509", Changed: 25, Old: "0"}, {Name: "x509usefallbackroots", Package: "crypto/x509"}, {Name: "x509usepolicies", Package: "crypto/x509", Changed: 24, Old: "0"}, {Name: "zipinsecurepath", Package: "archive/zip"}, diff --git a/src/runtime/metrics/doc.go b/src/runtime/metrics/doc.go index 7ef09be2fc..32fc436e1a 100644 --- a/src/runtime/metrics/doc.go +++ b/src/runtime/metrics/doc.go @@ -384,6 +384,10 @@ Below is the full list of supported metrics, ordered lexicographically. The number of non-default behaviors executed by the crypto/x509 package due to a non-default GODEBUG=x509rsacrt=... setting. + /godebug/non-default-behavior/x509sha256skid:events + The number of non-default behaviors executed by the crypto/x509 + package due to a non-default GODEBUG=x509sha256skid=... setting. + /godebug/non-default-behavior/x509usefallbackroots:events The number of non-default behaviors executed by the crypto/x509 package due to a non-default GODEBUG=x509usefallbackroots=... From 763963505e39b753d820ee9aea4791ad5bcc0274 Mon Sep 17 00:00:00 2001 From: Roland Shoemaker Date: Wed, 21 May 2025 11:43:35 -0700 Subject: [PATCH 70/99] crypto/sha3: un-interleave EOR instructions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Move two EOR instructions out of blocks of RAX and BCAX instructions. This appears to get a teeny performance improvement, and matches what the Linux kernel implementation does. goos: darwin goarch: arm64 pkg: crypto/sha3 cpu: Apple M1 Pro │ sha3-non-interleaved │ sha3-interleaved │ │ sec/op │ sec/op vs base │ Sha3_512_MTU-10 3.122µ ± 2% 3.107µ ± 1% ~ (p=0.382 n=10) Sha3_384_MTU-10 2.266µ ± 7% 2.287µ ± 11% ~ (p=0.424 n=10) Sha3_256_MTU-10 1.770µ ± 5% 1.793µ ± 4% ~ (p=0.353 n=10) Sha3_224_MTU-10 1.675µ ± 1% 1.664µ ± 2% ~ (p=0.210 n=10) Shake128_MTU-10 1.459µ ± 1% 1.446µ ± 1% -0.89% (p=0.000 n=10) Shake256_MTU-10 1.591µ ± 1% 1.597µ ± 1% ~ (p=0.342 n=10) Shake256_16x-10 27.46µ ± 13% 27.58µ ± 1% ~ (p=0.247 n=10) Shake256_1MiB-10 1.269m ± 10% 1.233m ± 1% -2.89% (p=0.000 n=10) Sha3_512_1MiB-10 2.283m ± 2% 2.275m ± 0% ~ (p=0.247 n=10) geomean 11.62µ 11.59µ -0.25% │ sha3-non-interleaved │ sha3-interleaved │ │ B/s │ B/s vs base │ Sha3_512_MTU-10 412.4Mi ± 2% 414.4Mi ± 1% ~ (p=0.393 n=10) Sha3_384_MTU-10 568.3Mi ± 6% 563.2Mi ± 10% ~ (p=0.436 n=10) Sha3_256_MTU-10 727.7Mi ± 4% 718.0Mi ± 4% ~ (p=0.353 n=10) Sha3_224_MTU-10 768.8Mi ± 1% 773.7Mi ± 1% ~ (p=0.218 n=10) Shake128_MTU-10 882.7Mi ± 1% 890.9Mi ± 1% +0.92% (p=0.000 n=10) Shake256_MTU-10 808.9Mi ± 1% 806.2Mi ± 1% ~ (p=0.353 n=10) Shake256_16x-10 569.0Mi ± 11% 566.6Mi ± 1% ~ (p=0.247 n=10) Shake256_1MiB-10 787.9Mi ± 9% 811.3Mi ± 1% +2.97% (p=0.000 n=10) Sha3_512_1MiB-10 438.0Mi ± 2% 439.6Mi ± 0% ~ (p=0.247 n=10) geomean 641.4Mi 643.1Mi +0.26% Change-Id: I5f358d954aeccb91928caa79be96c2902d9ac97e Reviewed-on: https://go-review.googlesource.com/c/go/+/675136 LUCI-TryBot-Result: Go LUCI Auto-Submit: Roland Shoemaker Reviewed-by: Hongxiang Jiang Reviewed-by: Daniel McCarney --- src/crypto/internal/fips140/sha3/sha3_arm64.s | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/crypto/internal/fips140/sha3/sha3_arm64.s b/src/crypto/internal/fips140/sha3/sha3_arm64.s index 6a2c121e2c..7688d178d5 100644 --- a/src/crypto/internal/fips140/sha3/sha3_arm64.s +++ b/src/crypto/internal/fips140/sha3/sha3_arm64.s @@ -48,6 +48,8 @@ loop: VRAX1 V26.D2, V29.D2, V29.D2 // theta and rho and Pi + VEOR V29.B16, V0.B16, V0.B16 + VXAR $63, V30.D2, V1.D2, V25.D2 VXAR $20, V30.D2, V6.D2, V1.D2 @@ -74,8 +76,6 @@ loop: VXAR $36, V27.D2, V3.D2, V5.D2 - VEOR V29.B16, V0.B16, V0.B16 - VXAR $43, V27.D2, V18.D2, V27.D2 VXAR $49, V31.D2, V17.D2, V3.D2 VXAR $54, V30.D2, V11.D2, V30.D2 @@ -113,11 +113,12 @@ loop: VBCAX V0.B16, V1.B16, V28.B16, V4.B16 VBCAX V1.B16, V2.B16, V0.B16, V0.B16 // iota (chi part) - VEOR V26.B16, V0.B16, V0.B16 // iota VBCAX V2.B16, V27.B16, V1.B16, V1.B16 VBCAX V27.B16, V28.B16, V2.B16, V2.B16 + VEOR V26.B16, V0.B16, V0.B16 // iota + SUB $1, R2, R2 CBNZ R2, loop From 3cc8b532f9d561397dd0c66496e1e1a82667c926 Mon Sep 17 00:00:00 2001 From: Damien Neil Date: Wed, 2 Apr 2025 17:37:34 -0700 Subject: [PATCH 71/99] testing: add Attr Add a new Attr method to testing.TB that emits a test attribute. An attribute is an arbitrary key/value pair. Fixes #43936 Change-Id: I7ef299efae41f2cf39f2dc61ad4cdd4c3975cdb6 Reviewed-on: https://go-review.googlesource.com/c/go/+/662437 LUCI-TryBot-Result: Go LUCI Reviewed-by: Alan Donovan Auto-Submit: Damien Neil --- api/next/43936.txt | 4 ++ doc/next/6-stdlib/99-minor/testing/43936.md | 10 ++++ src/cmd/internal/test2json/test2json.go | 8 ++++ src/cmd/internal/test2json/testdata/attr.json | 15 ++++++ src/cmd/internal/test2json/testdata/attr.test | 7 +++ src/testing/testing.go | 26 ++++++++++ src/testing/testing_test.go | 47 +++++++++++++++++++ 7 files changed, 117 insertions(+) create mode 100644 api/next/43936.txt create mode 100644 doc/next/6-stdlib/99-minor/testing/43936.md create mode 100644 src/cmd/internal/test2json/testdata/attr.json create mode 100644 src/cmd/internal/test2json/testdata/attr.test diff --git a/api/next/43936.txt b/api/next/43936.txt new file mode 100644 index 0000000000..e32bd75ed9 --- /dev/null +++ b/api/next/43936.txt @@ -0,0 +1,4 @@ +pkg testing, method (*B) Attr(string, string) #43936 +pkg testing, method (*F) Attr(string, string) #43936 +pkg testing, method (*T) Attr(string, string) #43936 +pkg testing, type TB interface, Attr(string, string) #43936 diff --git a/doc/next/6-stdlib/99-minor/testing/43936.md b/doc/next/6-stdlib/99-minor/testing/43936.md new file mode 100644 index 0000000000..5be98d5db8 --- /dev/null +++ b/doc/next/6-stdlib/99-minor/testing/43936.md @@ -0,0 +1,10 @@ +The new methods [T.Attr], [B.Attr], and [F.Attr] emit an +attribute to the test log. An attribute is an arbitrary +key and value associated with a test. + +For example, in a test named `TestAttr`, +`t.Attr("key", "value")` emits: + +``` +=== ATTR TestAttr key value +``` diff --git a/src/cmd/internal/test2json/test2json.go b/src/cmd/internal/test2json/test2json.go index ed78764d26..d08ef389f8 100644 --- a/src/cmd/internal/test2json/test2json.go +++ b/src/cmd/internal/test2json/test2json.go @@ -36,6 +36,8 @@ type event struct { Elapsed *float64 `json:",omitempty"` Output *textBytes `json:",omitempty"` FailedBuild string `json:",omitempty"` + Key string `json:",omitempty"` + Value string `json:",omitempty"` } // textBytes is a hack to get JSON to emit a []byte as a string @@ -177,6 +179,7 @@ var ( []byte("=== PASS "), []byte("=== FAIL "), []byte("=== SKIP "), + []byte("=== ATTR "), } reports = [][]byte{ @@ -333,6 +336,11 @@ func (c *Converter) handleInputLine(line []byte) { c.output.write(origLine) return } + if action == "attr" { + var rest string + name, rest, _ = strings.Cut(name, " ") + e.Key, e.Value, _ = strings.Cut(rest, " ") + } // === update. // Finish any pending PASS/FAIL reports. c.needMarker = sawMarker diff --git a/src/cmd/internal/test2json/testdata/attr.json b/src/cmd/internal/test2json/testdata/attr.json new file mode 100644 index 0000000000..9d7b0195ba --- /dev/null +++ b/src/cmd/internal/test2json/testdata/attr.json @@ -0,0 +1,15 @@ +{"Action":"start"} +{"Action":"run","Test":"TestAttr"} +{"Action":"output","Test":"TestAttr","Output":"=== RUN TestAttr\n"} +{"Action":"attr","Test":"TestAttr","Key":"key","Value":"value"} +{"Action":"output","Test":"TestAttr","Output":"=== ATTR TestAttr key value\n"} +{"Action":"run","Test":"TestAttr/sub"} +{"Action":"output","Test":"TestAttr/sub","Output":"=== RUN TestAttr/sub\n"} +{"Action":"attr","Test":"TestAttr/sub","Key":"key","Value":"value"} +{"Action":"output","Test":"TestAttr/sub","Output":"=== ATTR TestAttr/sub key value\n"} +{"Action":"output","Test":"TestAttr","Output":"--- PASS: TestAttr (0.00s)\n"} +{"Action":"output","Test":"TestAttr/sub","Output":" --- PASS: TestAttr/sub (0.00s)\n"} +{"Action":"pass","Test":"TestAttr/sub"} +{"Action":"pass","Test":"TestAttr"} +{"Action":"output","Output":"PASS\n"} +{"Action":"pass"} diff --git a/src/cmd/internal/test2json/testdata/attr.test b/src/cmd/internal/test2json/testdata/attr.test new file mode 100644 index 0000000000..6ec9f116ed --- /dev/null +++ b/src/cmd/internal/test2json/testdata/attr.test @@ -0,0 +1,7 @@ +=== RUN TestAttr +=== ATTR TestAttr key value +=== RUN TestAttr/sub +=== ATTR TestAttr/sub key value +--- PASS: TestAttr (0.00s) + --- PASS: TestAttr/sub (0.00s) +PASS diff --git a/src/testing/testing.go b/src/testing/testing.go index 13f19a2a22..85ac1aeb32 100644 --- a/src/testing/testing.go +++ b/src/testing/testing.go @@ -879,6 +879,7 @@ func fmtDuration(d time.Duration) string { // TB is the interface common to [T], [B], and [F]. type TB interface { + Attr(key, value string) Cleanup(func()) Error(args ...any) Errorf(format string, args ...any) @@ -1491,6 +1492,31 @@ func (c *common) Context() context.Context { return c.ctx } +// Attr emits a test attribute associated with this test. +// +// The key must not contain whitespace. +// The value must not contain newlines or carriage returns. +// +// The meaning of different attribute keys is left up to +// continuous integration systems and test frameworks. +// +// Test attributes are emitted immediately in the test log, +// but they are intended to be treated as unordered. +func (c *common) Attr(key, value string) { + if strings.ContainsFunc(key, unicode.IsSpace) { + c.Errorf("disallowed whitespace in attribute key %q", key) + return + } + if strings.ContainsAny(value, "\r\n") { + c.Errorf("disallowed newline in attribute value %q", value) + return + } + if c.chatty == nil { + return + } + c.chatty.Updatef(c.name, "=== ATTR %s %v %v\n", c.name, key, value) +} + // panicHandling controls the panic handling used by runCleanup. type panicHandling int diff --git a/src/testing/testing_test.go b/src/testing/testing_test.go index 209291d322..f4f5817a37 100644 --- a/src/testing/testing_test.go +++ b/src/testing/testing_test.go @@ -975,6 +975,53 @@ func TestContext(t *testing.T) { }) } +// TestAttrExample is used by TestAttrSet, +// and also serves as a convenient test to run that sets an attribute. +func TestAttrExample(t *testing.T) { + t.Attr("key", "value") +} + +func TestAttrSet(t *testing.T) { + out := string(runTest(t, "TestAttrExample")) + + want := "=== ATTR TestAttrExample key value\n" + if !strings.Contains(out, want) { + t.Errorf("expected output containing %q, got:\n%q", want, out) + } +} + +func TestAttrInvalid(t *testing.T) { + tests := []struct { + key string + value string + }{ + {"k ey", "value"}, + {"k\tey", "value"}, + {"k\rey", "value"}, + {"k\ney", "value"}, + {"key", "val\rue"}, + {"key", "val\nue"}, + } + + if os.Getenv("GO_WANT_HELPER_PROCESS") == "1" { + for i, test := range tests { + t.Run(fmt.Sprint(i), func(t *testing.T) { + t.Attr(test.key, test.value) + }) + } + return + } + + out := string(runTest(t, "TestAttrInvalid")) + + for i := range tests { + want := fmt.Sprintf("--- FAIL: TestAttrInvalid/%v ", i) + if !strings.Contains(out, want) { + t.Errorf("expected output containing %q, got:\n%q", want, out) + } + } +} + func TestBenchmarkBLoopIterationCorrect(t *testing.T) { out := runTest(t, "BenchmarkBLoopPrint") c := bytes.Count(out, []byte("Printing from BenchmarkBLoopPrint")) From a473a0dbc48e9c2f08408e1736d40b6f660eb34b Mon Sep 17 00:00:00 2001 From: Damien Neil Date: Wed, 21 May 2025 13:24:49 -0700 Subject: [PATCH 72/99] net/http: use synctest.Test rather than Run Use the non-experimental Test function. As a bonus, this lets us drop the hacks we were doing to support t.Cleanup inside bubbles. Change-Id: I070624e1384494e9d5fcfee594cfbb7680c1beda Reviewed-on: https://go-review.googlesource.com/c/go/+/675315 LUCI-TryBot-Result: Go LUCI Auto-Submit: Damien Neil Reviewed-by: Jonathan Amsterdam --- src/net/http/clientserver_test.go | 32 ++++++------------------------- src/net/http/serve_test.go | 2 +- src/net/http/transport_test.go | 6 +++--- 3 files changed, 10 insertions(+), 30 deletions(-) diff --git a/src/net/http/clientserver_test.go b/src/net/http/clientserver_test.go index 208c6509fa..c3cf3984ef 100644 --- a/src/net/http/clientserver_test.go +++ b/src/net/http/clientserver_test.go @@ -15,7 +15,6 @@ import ( "crypto/tls" "fmt" "hash" - "internal/synctest" "io" "log" "maps" @@ -34,6 +33,7 @@ import ( "sync" "sync/atomic" "testing" + "testing/synctest" "time" ) @@ -95,33 +95,13 @@ func run[T TBRun[T]](t T, f func(t T, mode testMode), opts ...any) { } } -// cleanupT wraps a testing.T and adds its own Cleanup method. -// Used to execute cleanup functions within a synctest bubble. -type cleanupT struct { - *testing.T - cleanups []func() -} - -// Cleanup replaces T.Cleanup. -func (t *cleanupT) Cleanup(f func()) { - t.cleanups = append(t.cleanups, f) -} - -func (t *cleanupT) done() { - for _, f := range slices.Backward(t.cleanups) { - f() - } -} - // runSynctest is run combined with synctest.Run. // // The TB passed to f arranges for cleanup functions to be run in the synctest bubble. -func runSynctest(t *testing.T, f func(t testing.TB, mode testMode), opts ...any) { +func runSynctest(t *testing.T, f func(t *testing.T, mode testMode), opts ...any) { run(t, func(t *testing.T, mode testMode) { - synctest.Run(func() { - ct := &cleanupT{T: t} - defer ct.done() - f(ct, mode) + synctest.Test(t, func(t *testing.T) { + f(t, mode) }) }, opts...) } @@ -292,12 +272,12 @@ func TestNewClientServerTest(t *testing.T) { }, modes) }) t.Run("synctest", func(t *testing.T) { - runSynctest(t, func(t testing.TB, mode testMode) { + runSynctest(t, func(t *testing.T, mode testMode) { testNewClientServerTest(t, mode, optFakeNet) }, modes) }) } -func testNewClientServerTest(t testing.TB, mode testMode, opts ...any) { +func testNewClientServerTest(t *testing.T, mode testMode, opts ...any) { var got struct { sync.Mutex proto string diff --git a/src/net/http/serve_test.go b/src/net/http/serve_test.go index 84d383ccfa..7e3e490af3 100644 --- a/src/net/http/serve_test.go +++ b/src/net/http/serve_test.go @@ -5855,7 +5855,7 @@ func testServerShutdown(t *testing.T, mode testMode) { } func TestServerShutdownStateNew(t *testing.T) { runSynctest(t, testServerShutdownStateNew) } -func testServerShutdownStateNew(t testing.TB, mode testMode) { +func testServerShutdownStateNew(t *testing.T, mode testMode) { if testing.Short() { t.Skip("test takes 5-6 seconds; skipping in short mode") } diff --git a/src/net/http/transport_test.go b/src/net/http/transport_test.go index 431dc4ee20..9762f05886 100644 --- a/src/net/http/transport_test.go +++ b/src/net/http/transport_test.go @@ -4230,7 +4230,7 @@ func TestTransportIdleConnRacesRequest(t *testing.T) { // block the connection closing. runSynctest(t, testTransportIdleConnRacesRequest, []testMode{http1Mode, http2UnencryptedMode}) } -func testTransportIdleConnRacesRequest(t testing.TB, mode testMode) { +func testTransportIdleConnRacesRequest(t *testing.T, mode testMode) { if mode == http2UnencryptedMode { t.Skip("remove skip when #70515 is fixed") } @@ -4305,7 +4305,7 @@ func testTransportIdleConnRacesRequest(t testing.TB, mode testMode) { func TestTransportRemovesConnsAfterIdle(t *testing.T) { runSynctest(t, testTransportRemovesConnsAfterIdle) } -func testTransportRemovesConnsAfterIdle(t testing.TB, mode testMode) { +func testTransportRemovesConnsAfterIdle(t *testing.T, mode testMode) { if testing.Short() { t.Skip("skipping in short mode") } @@ -4351,7 +4351,7 @@ func testTransportRemovesConnsAfterIdle(t testing.TB, mode testMode) { func TestTransportRemovesConnsAfterBroken(t *testing.T) { runSynctest(t, testTransportRemovesConnsAfterBroken) } -func testTransportRemovesConnsAfterBroken(t testing.TB, mode testMode) { +func testTransportRemovesConnsAfterBroken(t *testing.T, mode testMode) { if testing.Short() { t.Skip("skipping in short mode") } From c1aad08901d753bee7e26b15d15dd1ffad9479a2 Mon Sep 17 00:00:00 2001 From: Keith Randall Date: Wed, 21 May 2025 11:15:24 -0700 Subject: [PATCH 73/99] cmd/compile: remove unused function from escape analysis Change-Id: Ie6ff3d2dd62acfad6c1c7827973f1d9381923ca7 Reviewed-on: https://go-review.googlesource.com/c/go/+/675115 Reviewed-by: David Chase LUCI-TryBot-Result: Go LUCI Reviewed-by: Keith Randall Reviewed-by: Cuong Manh Le --- src/cmd/compile/internal/escape/graph.go | 29 ------------------------ 1 file changed, 29 deletions(-) diff --git a/src/cmd/compile/internal/escape/graph.go b/src/cmd/compile/internal/escape/graph.go index 0bbf6bb941..d20809d442 100644 --- a/src/cmd/compile/internal/escape/graph.go +++ b/src/cmd/compile/internal/escape/graph.go @@ -139,35 +139,6 @@ func (l *location) leakTo(sink *location, derefs int) { l.paramEsc.AddHeap(derefs) } -// leakTo records that parameter l leaks to sink. -func (b *batch) leakTo(l, sink *location, derefs int) { - if (logopt.Enabled() || base.Flag.LowerM >= 2) && !l.hasAttr(attrEscapes) { - if base.Flag.LowerM >= 2 { - fmt.Printf("%s: parameter %v leaks to %s with derefs=%d:\n", base.FmtPos(l.n.Pos()), l.n, b.explainLoc(sink), derefs) - } - explanation := b.explainPath(sink, l) - if logopt.Enabled() { - var e_curfn *ir.Func // TODO(mdempsky): Fix. - logopt.LogOpt(l.n.Pos(), "leak", "escape", ir.FuncName(e_curfn), - fmt.Sprintf("parameter %v leaks to %s with derefs=%d", l.n, b.explainLoc(sink), derefs), explanation) - } - } - - // If sink is a result parameter that doesn't escape (#44614) - // and we can fit return bits into the escape analysis tag, - // then record as a result leak. - if !sink.hasAttr(attrEscapes) && sink.isName(ir.PPARAMOUT) && sink.curfn == l.curfn { - if ri := sink.resultIndex - 1; ri < numEscResults { - // Leak to result parameter. - l.paramEsc.AddResult(ri, derefs) - return - } - } - - // Otherwise, record as heap leak. - l.paramEsc.AddHeap(derefs) -} - func (l *location) isName(c ir.Class) bool { return l.n != nil && l.n.Op() == ir.ONAME && l.n.(*ir.Name).Class == c } From de457fc4ea50cc3ac9dd967161b8bc31b79a26dd Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Wed, 21 May 2025 23:50:56 +0200 Subject: [PATCH 74/99] doc: refer to SHAKE in #69518 release note Change-Id: I6a6a46560b5d78710bd09d2452c80e51da936ec7 Reviewed-on: https://go-review.googlesource.com/c/go/+/675196 Auto-Submit: Filippo Valsorda Reviewed-by: Dmitri Shuralyov Reviewed-by: Roland Shoemaker LUCI-TryBot-Result: Go LUCI --- doc/next/6-stdlib/99-minor/hash/69518.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/next/6-stdlib/99-minor/hash/69518.md b/doc/next/6-stdlib/99-minor/hash/69518.md index 67dbdd4ef7..ae9e133cd7 100644 --- a/doc/next/6-stdlib/99-minor/hash/69518.md +++ b/doc/next/6-stdlib/99-minor/hash/69518.md @@ -1,3 +1,3 @@ The new [XOF](/pkg/hash#XOF) interface can be implemented by "extendable output functions", which are hash functions with arbitrary or unlimited output length -such as [BLAKE2Xb](https://pkg.go.dev/golang.org/x/crypto/blake2b). +such as [SHAKE](https://pkg.go.dev/crypto/sha3#SHAKE). From edcde86990abd9d7336eee5115b63d8c0863a5dd Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Wed, 21 May 2025 23:55:43 +0200 Subject: [PATCH 75/99] crypto,hash: add and implement hash.Cloner Fixes #69521 Co-authored-by: qiulaidongfeng <2645477756@qq.com> Change-Id: I6a6a465652f5ab7e6c9054e826e17df2b8b34e41 Reviewed-on: https://go-review.googlesource.com/c/go/+/675197 Reviewed-by: Roland Shoemaker Auto-Submit: Filippo Valsorda Reviewed-by: David Chase LUCI-TryBot-Result: Go LUCI --- api/next/69521.txt | 9 ++++ .../6-stdlib/99-minor/crypto/sha3/69521.md | 1 + doc/next/6-stdlib/99-minor/hash/69521.md | 2 + .../6-stdlib/99-minor/hash/maphash/69521.md | 1 + src/crypto/hmac/hmac_test.go | 12 ++++++ src/crypto/internal/cryptotest/hash.go | 6 +++ src/crypto/internal/fips140/hmac/hmac.go | 26 ++++++++++++ src/crypto/internal/fips140/sha256/sha256.go | 6 +++ src/crypto/internal/fips140/sha512/sha512.go | 6 +++ src/crypto/md5/md5.go | 5 +++ src/crypto/md5/md5_test.go | 9 +++- src/crypto/sha1/sha1.go | 5 +++ src/crypto/sha1/sha1_test.go | 9 +++- src/crypto/sha256/sha256_test.go | 15 +++++-- src/crypto/sha3/sha3.go | 6 +++ src/crypto/sha3/sha3_test.go | 15 +++---- src/crypto/sha512/sha512_test.go | 23 ++++++---- src/hash/adler32/adler32.go | 5 +++ src/hash/crc32/crc32.go | 5 +++ src/hash/crc64/crc64.go | 5 +++ src/hash/fnv/fnv.go | 30 +++++++++++++ src/hash/hash.go | 12 ++++++ src/hash/maphash/maphash.go | 10 ++++- src/internal/testhash/hash.go | 42 +++++++++++++++++++ 24 files changed, 243 insertions(+), 22 deletions(-) create mode 100644 api/next/69521.txt create mode 100644 doc/next/6-stdlib/99-minor/crypto/sha3/69521.md create mode 100644 doc/next/6-stdlib/99-minor/hash/69521.md create mode 100644 doc/next/6-stdlib/99-minor/hash/maphash/69521.md diff --git a/api/next/69521.txt b/api/next/69521.txt new file mode 100644 index 0000000000..6974226086 --- /dev/null +++ b/api/next/69521.txt @@ -0,0 +1,9 @@ +pkg crypto/sha3, method (*SHA3) Clone() (hash.Cloner, error) #69521 +pkg hash, type Cloner interface { BlockSize, Clone, Reset, Size, Sum, Write } #69521 +pkg hash, type Cloner interface, BlockSize() int #69521 +pkg hash, type Cloner interface, Clone() (Cloner, error) #69521 +pkg hash, type Cloner interface, Reset() #69521 +pkg hash, type Cloner interface, Size() int #69521 +pkg hash, type Cloner interface, Sum([]uint8) []uint8 #69521 +pkg hash, type Cloner interface, Write([]uint8) (int, error) #69521 +pkg hash/maphash, method (*Hash) Clone() (hash.Cloner, error) #69521 diff --git a/doc/next/6-stdlib/99-minor/crypto/sha3/69521.md b/doc/next/6-stdlib/99-minor/crypto/sha3/69521.md new file mode 100644 index 0000000000..2af674dcb4 --- /dev/null +++ b/doc/next/6-stdlib/99-minor/crypto/sha3/69521.md @@ -0,0 +1 @@ +The new [SHA3.Clone] method implements [hash.Cloner](/pkg/hash#Cloner). diff --git a/doc/next/6-stdlib/99-minor/hash/69521.md b/doc/next/6-stdlib/99-minor/hash/69521.md new file mode 100644 index 0000000000..a8d58e3074 --- /dev/null +++ b/doc/next/6-stdlib/99-minor/hash/69521.md @@ -0,0 +1,2 @@ +Hashes implementing the new [Cloner] interface can return a copy of their state. +All standard library [Hash] implementations now implement [Cloner]. diff --git a/doc/next/6-stdlib/99-minor/hash/maphash/69521.md b/doc/next/6-stdlib/99-minor/hash/maphash/69521.md new file mode 100644 index 0000000000..497df8b6aa --- /dev/null +++ b/doc/next/6-stdlib/99-minor/hash/maphash/69521.md @@ -0,0 +1 @@ +The new [Hash.Clone] method implements [hash.Cloner](/pkg/hash#Cloner). diff --git a/src/crypto/hmac/hmac_test.go b/src/crypto/hmac/hmac_test.go index 7accad7632..9b7eee7bf7 100644 --- a/src/crypto/hmac/hmac_test.go +++ b/src/crypto/hmac/hmac_test.go @@ -632,6 +632,18 @@ func TestHMACHash(t *testing.T) { } } +func TestExtraMethods(t *testing.T) { + h := New(sha256.New, []byte("key")) + cryptotest.NoExtraMethods(t, maybeCloner(h)) +} + +func maybeCloner(h hash.Hash) any { + if c, ok := h.(hash.Cloner); ok { + return &c + } + return &h +} + func BenchmarkHMACSHA256_1K(b *testing.B) { key := make([]byte, 32) buf := make([]byte, 1024) diff --git a/src/crypto/internal/cryptotest/hash.go b/src/crypto/internal/cryptotest/hash.go index a2916e9c87..f00e9c80d3 100644 --- a/src/crypto/internal/cryptotest/hash.go +++ b/src/crypto/internal/cryptotest/hash.go @@ -5,6 +5,8 @@ package cryptotest import ( + "crypto/internal/boring" + "crypto/internal/fips140" "hash" "internal/testhash" "io" @@ -18,6 +20,10 @@ type MakeHash func() hash.Hash // TestHash performs a set of tests on hash.Hash implementations, checking the // documented requirements of Write, Sum, Reset, Size, and BlockSize. func TestHash(t *testing.T, mh MakeHash) { + if boring.Enabled || fips140.Version() == "v1.0" { + testhash.TestHashWithoutClone(t, testhash.MakeHash(mh)) + return + } testhash.TestHash(t, testhash.MakeHash(mh)) } diff --git a/src/crypto/internal/fips140/hmac/hmac.go b/src/crypto/internal/fips140/hmac/hmac.go index 3d193d5592..9b28017662 100644 --- a/src/crypto/internal/fips140/hmac/hmac.go +++ b/src/crypto/internal/fips140/hmac/hmac.go @@ -12,6 +12,7 @@ import ( "crypto/internal/fips140/sha256" "crypto/internal/fips140/sha3" "crypto/internal/fips140/sha512" + "errors" "hash" ) @@ -29,6 +30,7 @@ type marshalable interface { } type HMAC struct { + // opad and ipad may share underlying storage with HMAC clones. opad, ipad []byte outer, inner hash.Hash @@ -128,6 +130,30 @@ func (h *HMAC) Reset() { h.marshaled = true } +// Clone implements [hash.Cloner] if the underlying hash does. +// Otherwise, it returns [errors.ErrUnsupported]. +func (h *HMAC) Clone() (hash.Cloner, error) { + r := *h + ic, ok := h.inner.(hash.Cloner) + if !ok { + return nil, errors.ErrUnsupported + } + oc, ok := h.outer.(hash.Cloner) + if !ok { + return nil, errors.ErrUnsupported + } + var err error + r.inner, err = ic.Clone() + if err != nil { + return nil, errors.ErrUnsupported + } + r.outer, err = oc.Clone() + if err != nil { + return nil, errors.ErrUnsupported + } + return &r, nil +} + // New returns a new HMAC hash using the given [hash.Hash] type and key. func New[H hash.Hash](h func() H, key []byte) *HMAC { hm := &HMAC{keyLen: len(key)} diff --git a/src/crypto/internal/fips140/sha256/sha256.go b/src/crypto/internal/fips140/sha256/sha256.go index bc157f9adb..a51ad2be24 100644 --- a/src/crypto/internal/fips140/sha256/sha256.go +++ b/src/crypto/internal/fips140/sha256/sha256.go @@ -10,6 +10,7 @@ import ( "crypto/internal/fips140" "crypto/internal/fips140deps/byteorder" "errors" + "hash" ) // The size of a SHA-256 checksum in bytes. @@ -115,6 +116,11 @@ func consumeUint32(b []byte) ([]byte, uint32) { return b[4:], byteorder.BEUint32(b) } +func (d *Digest) Clone() (hash.Cloner, error) { + r := *d + return &r, nil +} + func (d *Digest) Reset() { if !d.is224 { d.h[0] = init0 diff --git a/src/crypto/internal/fips140/sha512/sha512.go b/src/crypto/internal/fips140/sha512/sha512.go index 55c90a8cd6..3e7a5e11f1 100644 --- a/src/crypto/internal/fips140/sha512/sha512.go +++ b/src/crypto/internal/fips140/sha512/sha512.go @@ -10,6 +10,7 @@ import ( "crypto/internal/fips140" "crypto/internal/fips140deps/byteorder" "errors" + "hash" ) const ( @@ -194,6 +195,11 @@ func consumeUint64(b []byte) ([]byte, uint64) { return b[8:], byteorder.BEUint64(b) } +func (d *Digest) Clone() (hash.Cloner, error) { + r := *d + return &r, nil +} + // New returns a new Digest computing the SHA-512 hash. func New() *Digest { d := &Digest{size: size512} diff --git a/src/crypto/md5/md5.go b/src/crypto/md5/md5.go index dc586fb217..9274f89d3e 100644 --- a/src/crypto/md5/md5.go +++ b/src/crypto/md5/md5.go @@ -104,6 +104,11 @@ func consumeUint32(b []byte) ([]byte, uint32) { return b[4:], byteorder.BEUint32(b[0:4]) } +func (d *digest) Clone() (hash.Cloner, error) { + r := *d + return &r, nil +} + // New returns a new [hash.Hash] computing the MD5 checksum. The Hash // also implements [encoding.BinaryMarshaler], [encoding.BinaryAppender] and // [encoding.BinaryUnmarshaler] to marshal and unmarshal the internal diff --git a/src/crypto/md5/md5_test.go b/src/crypto/md5/md5_test.go index c0bb15f05b..403ff2881f 100644 --- a/src/crypto/md5/md5_test.go +++ b/src/crypto/md5/md5_test.go @@ -270,10 +270,17 @@ func TestMD5Hash(t *testing.T) { } func TestExtraMethods(t *testing.T) { - h := New() + h := maybeCloner(New()) cryptotest.NoExtraMethods(t, &h, "MarshalBinary", "UnmarshalBinary", "AppendBinary") } +func maybeCloner(h hash.Hash) any { + if c, ok := h.(hash.Cloner); ok { + return &c + } + return &h +} + var bench = New() var buf = make([]byte, 1024*1024*8+1) var sum = make([]byte, bench.Size()) diff --git a/src/crypto/sha1/sha1.go b/src/crypto/sha1/sha1.go index d2ffaac0ae..3acc5b11fb 100644 --- a/src/crypto/sha1/sha1.go +++ b/src/crypto/sha1/sha1.go @@ -93,6 +93,11 @@ func consumeUint32(b []byte) ([]byte, uint32) { return b[4:], byteorder.BEUint32(b) } +func (d *digest) Clone() (hash.Cloner, error) { + r := *d + return &r, nil +} + func (d *digest) Reset() { d.h[0] = init0 d.h[1] = init1 diff --git a/src/crypto/sha1/sha1_test.go b/src/crypto/sha1/sha1_test.go index 0a0596e56c..ef6e5ddcbb 100644 --- a/src/crypto/sha1/sha1_test.go +++ b/src/crypto/sha1/sha1_test.go @@ -242,11 +242,18 @@ func TestSHA1Hash(t *testing.T) { } func TestExtraMethods(t *testing.T) { - h := New() + h := maybeCloner(New()) cryptotest.NoExtraMethods(t, &h, "ConstantTimeSum", "MarshalBinary", "UnmarshalBinary", "AppendBinary") } +func maybeCloner(h hash.Hash) any { + if c, ok := h.(hash.Cloner); ok { + return &c + } + return &h +} + var bench = New() var buf = make([]byte, 8192) diff --git a/src/crypto/sha256/sha256_test.go b/src/crypto/sha256/sha256_test.go index 38a7f25afb..11b24db7d6 100644 --- a/src/crypto/sha256/sha256_test.go +++ b/src/crypto/sha256/sha256_test.go @@ -403,18 +403,25 @@ func TestHash(t *testing.T) { func TestExtraMethods(t *testing.T) { t.Run("SHA-224", func(t *testing.T) { cryptotest.TestAllImplementations(t, "sha256", func(t *testing.T) { - h := New224() - cryptotest.NoExtraMethods(t, &h, "MarshalBinary", "UnmarshalBinary", "AppendBinary") + h := maybeCloner(New224()) + cryptotest.NoExtraMethods(t, h, "MarshalBinary", "UnmarshalBinary", "AppendBinary") }) }) t.Run("SHA-256", func(t *testing.T) { cryptotest.TestAllImplementations(t, "sha256", func(t *testing.T) { - h := New() - cryptotest.NoExtraMethods(t, &h, "MarshalBinary", "UnmarshalBinary", "AppendBinary") + h := maybeCloner(New()) + cryptotest.NoExtraMethods(t, h, "MarshalBinary", "UnmarshalBinary", "AppendBinary") }) }) } +func maybeCloner(h hash.Hash) any { + if c, ok := h.(hash.Cloner); ok { + return &c + } + return &h +} + var bench = New() func benchmarkSize(b *testing.B, size int) { diff --git a/src/crypto/sha3/sha3.go b/src/crypto/sha3/sha3.go index a6c5ae55f1..2a1b3ca700 100644 --- a/src/crypto/sha3/sha3.go +++ b/src/crypto/sha3/sha3.go @@ -166,6 +166,12 @@ func (s *SHA3) UnmarshalBinary(data []byte) error { return s.s.UnmarshalBinary(data) } +// Clone implements [hash.Cloner]. +func (d *SHA3) Clone() (hash.Cloner, error) { + r := *d + return &r, nil +} + // SHAKE is an instance of a SHAKE extendable output function. type SHAKE struct { s sha3.SHAKE diff --git a/src/crypto/sha3/sha3_test.go b/src/crypto/sha3/sha3_test.go index 6757d6efa1..15ee877236 100644 --- a/src/crypto/sha3/sha3_test.go +++ b/src/crypto/sha3/sha3_test.go @@ -42,13 +42,14 @@ var testShakes = map[string]struct { "cSHAKE256": {NewCSHAKE256, "CSHAKE256", "CustomString"}, } -// decodeHex converts a hex-encoded string into a raw byte string. -func decodeHex(s string) []byte { - b, err := hex.DecodeString(s) - if err != nil { - panic(err) - } - return b +func TestSHA3Hash(t *testing.T) { + cryptotest.TestAllImplementations(t, "sha3", func(t *testing.T) { + for name, f := range testDigests { + t.Run(name, func(t *testing.T) { + cryptotest.TestHash(t, func() hash.Hash { return f() }) + }) + } + }) } // TestUnalignedWrite tests that writing data in an arbitrary pattern with diff --git a/src/crypto/sha512/sha512_test.go b/src/crypto/sha512/sha512_test.go index 7e80f49dea..080bf694f0 100644 --- a/src/crypto/sha512/sha512_test.go +++ b/src/crypto/sha512/sha512_test.go @@ -966,30 +966,37 @@ func TestHash(t *testing.T) { func TestExtraMethods(t *testing.T) { t.Run("SHA-384", func(t *testing.T) { cryptotest.TestAllImplementations(t, "sha512", func(t *testing.T) { - h := New384() - cryptotest.NoExtraMethods(t, &h, "MarshalBinary", "UnmarshalBinary", "AppendBinary") + h := maybeCloner(New384()) + cryptotest.NoExtraMethods(t, h, "MarshalBinary", "UnmarshalBinary", "AppendBinary") }) }) t.Run("SHA-512/224", func(t *testing.T) { cryptotest.TestAllImplementations(t, "sha512", func(t *testing.T) { - h := New512_224() - cryptotest.NoExtraMethods(t, &h, "MarshalBinary", "UnmarshalBinary", "AppendBinary") + h := maybeCloner(New512_224()) + cryptotest.NoExtraMethods(t, h, "MarshalBinary", "UnmarshalBinary", "AppendBinary") }) }) t.Run("SHA-512/256", func(t *testing.T) { cryptotest.TestAllImplementations(t, "sha512", func(t *testing.T) { - h := New512_256() - cryptotest.NoExtraMethods(t, &h, "MarshalBinary", "UnmarshalBinary", "AppendBinary") + h := maybeCloner(New512_256()) + cryptotest.NoExtraMethods(t, h, "MarshalBinary", "UnmarshalBinary", "AppendBinary") }) }) t.Run("SHA-512", func(t *testing.T) { cryptotest.TestAllImplementations(t, "sha512", func(t *testing.T) { - h := New() - cryptotest.NoExtraMethods(t, &h, "MarshalBinary", "UnmarshalBinary", "AppendBinary") + h := maybeCloner(New()) + cryptotest.NoExtraMethods(t, h, "MarshalBinary", "UnmarshalBinary", "AppendBinary") }) }) } +func maybeCloner(h hash.Hash) any { + if c, ok := h.(hash.Cloner); ok { + return &c + } + return &h +} + var bench = New() var buf = make([]byte, 8192) diff --git a/src/hash/adler32/adler32.go b/src/hash/adler32/adler32.go index e2551e0952..c6179789ea 100644 --- a/src/hash/adler32/adler32.go +++ b/src/hash/adler32/adler32.go @@ -78,6 +78,11 @@ func (d *digest) UnmarshalBinary(b []byte) error { return nil } +func (d *digest) Clone() (hash.Cloner, error) { + r := *d + return &r, nil +} + // Add p to the running checksum d. func update(d digest, p []byte) digest { s1, s2 := uint32(d&0xffff), uint32(d>>16) diff --git a/src/hash/crc32/crc32.go b/src/hash/crc32/crc32.go index d40bb1b7ac..e58f112319 100644 --- a/src/hash/crc32/crc32.go +++ b/src/hash/crc32/crc32.go @@ -194,6 +194,11 @@ func (d *digest) UnmarshalBinary(b []byte) error { return nil } +func (d *digest) Clone() (hash.Cloner, error) { + r := *d + return &r, nil +} + func update(crc uint32, tab *Table, p []byte, checkInitIEEE bool) uint32 { switch { case haveCastagnoli.Load() && tab == castagnoliTable: diff --git a/src/hash/crc64/crc64.go b/src/hash/crc64/crc64.go index c40c7024b6..1e551ff454 100644 --- a/src/hash/crc64/crc64.go +++ b/src/hash/crc64/crc64.go @@ -133,6 +133,11 @@ func (d *digest) UnmarshalBinary(b []byte) error { return nil } +func (d *digest) Clone() (hash.Cloner, error) { + r := *d + return &r, nil +} + func update(crc uint64, tab *Table, p []byte) uint64 { buildSlicing8TablesOnce() crc = ^crc diff --git a/src/hash/fnv/fnv.go b/src/hash/fnv/fnv.go index 5c4b9b5da8..dd4a77ce1a 100644 --- a/src/hash/fnv/fnv.go +++ b/src/hash/fnv/fnv.go @@ -348,3 +348,33 @@ func (s *sum128a) UnmarshalBinary(b []byte) error { s[1] = byteorder.BEUint64(b[12:]) return nil } + +func (d *sum32) Clone() (hash.Cloner, error) { + r := *d + return &r, nil +} + +func (d *sum32a) Clone() (hash.Cloner, error) { + r := *d + return &r, nil +} + +func (d *sum64) Clone() (hash.Cloner, error) { + r := *d + return &r, nil +} + +func (d *sum64a) Clone() (hash.Cloner, error) { + r := *d + return &r, nil +} + +func (d *sum128) Clone() (hash.Cloner, error) { + r := *d + return &r, nil +} + +func (d *sum128a) Clone() (hash.Cloner, error) { + r := *d + return &r, nil +} diff --git a/src/hash/hash.go b/src/hash/hash.go index c72c4af710..6483bc1086 100644 --- a/src/hash/hash.go +++ b/src/hash/hash.go @@ -57,6 +57,18 @@ type Hash64 interface { Sum64() uint64 } +// A Cloner is a hash function whose state can be cloned. +// +// All [Hash] implementations in the standard library implement this interface, +// unless GOFIPS140=v1.0.0 is set. +// +// If a hash can only determine at runtime if it can be cloned, +// (e.g., if it wraps another hash), it may return [errors.ErrUnsupported]. +type Cloner interface { + Hash + Clone() (Cloner, error) +} + // XOF (extendable output function) is a hash function with arbitrary or unlimited output length. type XOF interface { // Write absorbs more data into the XOF's state. It panics if called diff --git a/src/hash/maphash/maphash.go b/src/hash/maphash/maphash.go index a8872d72a5..5004539f07 100644 --- a/src/hash/maphash/maphash.go +++ b/src/hash/maphash/maphash.go @@ -13,6 +13,7 @@ package maphash import ( + "hash" "internal/byteorder" "math" ) @@ -80,7 +81,7 @@ func String(seed Seed, s string) uint64 { // // The zero Hash is a valid Hash ready to use. // A zero Hash chooses a random seed for itself during -// the first call to a Reset, Write, Seed, or Sum64 method. +// the first call to a Reset, Write, Seed, Clone, or Sum64 method. // For control over the seed, use SetSeed. // // The computed hash values depend only on the initial seed and @@ -281,6 +282,13 @@ func (h *Hash) Size() int { return 8 } // BlockSize returns h's block size. func (h *Hash) BlockSize() int { return len(h.buf) } +// Clone implements [hash.Cloner]. +func (h *Hash) Clone() (hash.Cloner, error) { + h.initSeed() + r := *h + return &r, nil +} + // Comparable returns the hash of comparable value v with the given seed // such that Comparable(s, v1) == Comparable(s, v2) if v1 == v2. // If v != v, then the resulting hash is randomly distributed. diff --git a/src/internal/testhash/hash.go b/src/internal/testhash/hash.go index d863408f55..3413d5c20d 100644 --- a/src/internal/testhash/hash.go +++ b/src/internal/testhash/hash.go @@ -18,7 +18,49 @@ type MakeHash func() hash.Hash // TestHash performs a set of tests on hash.Hash implementations, checking the // documented requirements of Write, Sum, Reset, Size, and BlockSize. func TestHash(t *testing.T, mh MakeHash) { + TestHashWithoutClone(t, mh) + // Test whether the results after cloning are consistent. + t.Run("Clone", func(t *testing.T) { + h, ok := mh().(hash.Cloner) + if !ok { + t.Fatalf("%T does not implement hash.Cloner", mh) + } + h3, err := h.Clone() + if err != nil { + t.Fatalf("Clone failed: %v", err) + } + prefix := []byte("tmp") + writeToHash(t, h, prefix) + h2, err := h.Clone() + if err != nil { + t.Fatalf("Clone failed: %v", err) + } + prefixSum := h.Sum(nil) + if !bytes.Equal(prefixSum, h2.Sum(nil)) { + t.Fatalf("%T Clone results are inconsistent", h) + } + suffix := []byte("tmp2") + writeToHash(t, h, suffix) + writeToHash(t, h3, append(prefix, suffix...)) + compositeSum := h3.Sum(nil) + if !bytes.Equal(h.Sum(nil), compositeSum) { + t.Fatalf("%T Clone results are inconsistent", h) + } + if !bytes.Equal(h2.Sum(nil), prefixSum) { + t.Fatalf("%T Clone results are inconsistent", h) + } + writeToHash(t, h2, suffix) + if !bytes.Equal(h.Sum(nil), compositeSum) { + t.Fatalf("%T Clone results are inconsistent", h) + } + if !bytes.Equal(h2.Sum(nil), compositeSum) { + t.Fatalf("%T Clone results are inconsistent", h) + } + }) +} + +func TestHashWithoutClone(t *testing.T, mh MakeHash) { // Test that Sum returns an appended digest matching output of Size t.Run("SumAppend", func(t *testing.T) { h := mh() From 7589e9604237ad94869c5803af3bf428f108fefa Mon Sep 17 00:00:00 2001 From: Julian Zhu Date: Sat, 17 May 2025 01:55:12 +0800 Subject: [PATCH 76/99] cmd/compile: fold negation into addition/subtraction on s390x MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fold negation into addition/subtraction and avoid double negation. file before after Δ % addr2line 3909260 3909204 -56 -0.001% asm 6714513 6714505 -8 -0.000% buildid 3680344 3679504 -840 -0.023% cgo 6219857 6219521 -336 -0.005% compile 29527941 29528037 +96 +0.000% cover 6869451 6868731 -720 -0.010% dist 4498817 4498769 -48 -0.001% doc 10483319 10481719 -1600 -0.015% fix 4356204 4355932 -272 -0.006% link 9080951 9080383 -568 -0.006% nm 3899682 3833674 -66008 -1.693% objdump 6347837 6347605 -232 -0.004% pack 3103750 3103454 -296 -0.010% pprof 18849998 18849478 -520 -0.003% test2json 3619671 3619511 -160 -0.004% trace 17164007 17161463 -2544 -0.015% vet 10465861 10465173 -688 -0.007% total 167058409 166983609 -74800 -0.045% Change-Id: I1b8cf3939b433e1765682196b8fc1aa07d37f895 Reviewed-on: https://go-review.googlesource.com/c/go/+/673476 Auto-Submit: Keith Randall Reviewed-by: Keith Randall LUCI-TryBot-Result: Go LUCI Reviewed-by: Keith Randall Reviewed-by: Dmitri Shuralyov --- src/cmd/compile/internal/ssa/_gen/S390X.rules | 3 ++ src/cmd/compile/internal/ssa/rewriteS390X.go | 34 +++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/src/cmd/compile/internal/ssa/_gen/S390X.rules b/src/cmd/compile/internal/ssa/_gen/S390X.rules index 78de5bb5a2..231ad0615d 100644 --- a/src/cmd/compile/internal/ssa/_gen/S390X.rules +++ b/src/cmd/compile/internal/ssa/_gen/S390X.rules @@ -1188,6 +1188,8 @@ // TODO: more of this (ADD x (NEG y)) => (SUB x y) (ADDW x (NEGW y)) => (SUBW x y) +(SUB x (NEG y)) => (ADD x y) +(SUBW x (NEGW y)) => (ADDW x y) (SUB x x) => (MOVDconst [0]) (SUBW x x) => (MOVDconst [0]) (AND x x) => x @@ -1196,6 +1198,7 @@ (ORW x x) => x (XOR x x) => (MOVDconst [0]) (XORW x x) => (MOVDconst [0]) +(NEG (NEG x)) => x (NEG (ADDconst [c] (NEG x))) && c != -(1<<31) => (ADDconst [-c] x) (MOVBZreg (ANDWconst [m] x)) => (MOVWZreg (ANDWconst [int32( uint8(m))] x)) (MOVHZreg (ANDWconst [m] x)) => (MOVWZreg (ANDWconst [int32(uint16(m))] x)) diff --git a/src/cmd/compile/internal/ssa/rewriteS390X.go b/src/cmd/compile/internal/ssa/rewriteS390X.go index 7e652a19bc..2e7492501a 100644 --- a/src/cmd/compile/internal/ssa/rewriteS390X.go +++ b/src/cmd/compile/internal/ssa/rewriteS390X.go @@ -11292,6 +11292,16 @@ func rewriteValueS390X_OpS390XNEG(v *Value) bool { v.AuxInt = int64ToAuxInt(-c) return true } + // match: (NEG (NEG x)) + // result: x + for { + if v_0.Op != OpS390XNEG { + break + } + x := v_0.Args[0] + v.copyOf(x) + return true + } // match: (NEG (ADDconst [c] (NEG x))) // cond: c != -(1<<31) // result: (ADDconst [-c] x) @@ -13326,6 +13336,18 @@ func rewriteValueS390X_OpS390XSUB(v *Value) bool { v.AddArg(v0) return true } + // match: (SUB x (NEG y)) + // result: (ADD x y) + for { + x := v_0 + if v_1.Op != OpS390XNEG { + break + } + y := v_1.Args[0] + v.reset(OpS390XADD) + v.AddArg2(x, y) + return true + } // match: (SUB x x) // result: (MOVDconst [0]) for { @@ -13467,6 +13489,18 @@ func rewriteValueS390X_OpS390XSUBW(v *Value) bool { v.AddArg(v0) return true } + // match: (SUBW x (NEGW y)) + // result: (ADDW x y) + for { + x := v_0 + if v_1.Op != OpS390XNEGW { + break + } + y := v_1.Args[0] + v.reset(OpS390XADDW) + v.AddArg2(x, y) + return true + } // match: (SUBW x x) // result: (MOVDconst [0]) for { From 83df0afc4e5c3719a6aca08a798460d38e78fc95 Mon Sep 17 00:00:00 2001 From: Carlos Amedee Date: Wed, 14 May 2025 16:13:24 -0400 Subject: [PATCH 77/99] runtime/trace: add the flight recorder This change adds the flight recorder to the trace package. Flight recording is a technique in which trace data is kept in a circular buffer and can be flushed upon request. The implementation will be added in follow-up CLs. The flight recorder has already been implemented inside of the golang.org/x/exp/trace package. This copies the current implementation and modifies it to work within the runtime/trace package. The changes include: This adds the ability for multiple consumers (both the execution tracer and the flight recorder) to subscribe to tracing events. This change allows us to add multiple consumers without making major modifications to the runtime. Future optimizations are planned for this functionality. This removes the use of byte readers from the process that parses and processes the trace batches. This modifies the flight recorder to not parse out the trace clock frequency, since that requires knowledge of the format that's unfortunate to encode in yet another place. Right now, the trace clock frequency is considered stable for the lifetime of the program, so just grab it directly from the runtime. This change adds an in-band end-of-generation signal to the internal implementation of runtime.ReadTrace. The internal implementation is exported via linkname to runtime/trace, so the flight recorder can identify exactly when a generation has ended. This signal is also useful for ensuring that subscribers to runtime trace data always see complete generations, by starting or stopping data streaming only at generation boundaries. For #63185 Change-Id: I5c15345981a6bbe9764a3d623448237e983c64ec Reviewed-on: https://go-review.googlesource.com/c/go/+/673116 Auto-Submit: Michael Knyszek Reviewed-by: Michael Knyszek LUCI-TryBot-Result: Go LUCI --- api/next/63185.txt | 9 + .../6-stdlib/99-minor/runtime/trace/63185.md | 2 + src/internal/trace/testtrace/validation.go | 35 +- src/internal/trace/tracev2/events.go | 7 + src/runtime/trace.go | 40 ++- src/runtime/trace/batch.go | 83 +++++ src/runtime/trace/encoding.go | 50 +++ src/runtime/trace/flightrecorder.go | 182 +++++++++++ src/runtime/trace/flightrecorder_test.go | 308 ++++++++++++++++++ src/runtime/trace/recorder.go | 144 ++++++++ src/runtime/trace/subscribe.go | 188 +++++++++++ src/runtime/trace/trace.go | 32 +- src/runtime/traceregion.go | 58 ++-- src/runtime/tracetime.go | 2 + 14 files changed, 1062 insertions(+), 78 deletions(-) create mode 100644 api/next/63185.txt create mode 100644 doc/next/6-stdlib/99-minor/runtime/trace/63185.md create mode 100644 src/runtime/trace/batch.go create mode 100644 src/runtime/trace/encoding.go create mode 100644 src/runtime/trace/flightrecorder.go create mode 100644 src/runtime/trace/flightrecorder_test.go create mode 100644 src/runtime/trace/recorder.go create mode 100644 src/runtime/trace/subscribe.go diff --git a/api/next/63185.txt b/api/next/63185.txt new file mode 100644 index 0000000000..b5127ff8b2 --- /dev/null +++ b/api/next/63185.txt @@ -0,0 +1,9 @@ +pkg runtime/trace, func NewFlightRecorder(FlightRecorderConfig) *FlightRecorder #63185 +pkg runtime/trace, method (*FlightRecorder) Enabled() bool #63185 +pkg runtime/trace, method (*FlightRecorder) Start() error #63185 +pkg runtime/trace, method (*FlightRecorder) Stop() #63185 +pkg runtime/trace, method (*FlightRecorder) WriteTo(io.Writer) (int64, error) #63185 +pkg runtime/trace, type FlightRecorder struct #63185 +pkg runtime/trace, type FlightRecorderConfig struct #63185 +pkg runtime/trace, type FlightRecorderConfig struct, MaxBytes uint64 #63185 +pkg runtime/trace, type FlightRecorderConfig struct, MinAge time.Duration #63185 diff --git a/doc/next/6-stdlib/99-minor/runtime/trace/63185.md b/doc/next/6-stdlib/99-minor/runtime/trace/63185.md new file mode 100644 index 0000000000..80ba088b75 --- /dev/null +++ b/doc/next/6-stdlib/99-minor/runtime/trace/63185.md @@ -0,0 +1,2 @@ + +TODO The flight recorder has been added to the runtime/trace package. diff --git a/src/internal/trace/testtrace/validation.go b/src/internal/trace/testtrace/validation.go index 2060d0d44c..3de1e1d4bd 100644 --- a/src/internal/trace/testtrace/validation.go +++ b/src/internal/trace/testtrace/validation.go @@ -98,25 +98,26 @@ func (v *Validator) Event(ev trace.Event) error { if v.GoVersion >= version.Go125 && !(s.N > 1 && s.ClockSnapshot == nil) { if s.ClockSnapshot == nil { e.Errorf("sync %d has no clock snapshot", s.N) - } - if s.ClockSnapshot.Wall.IsZero() { - e.Errorf("sync %d has zero wall time", s.N) - } - if s.ClockSnapshot.Mono == 0 { - e.Errorf("sync %d has zero mono time", s.N) - } - if s.ClockSnapshot.Trace == 0 { - e.Errorf("sync %d has zero trace time", s.N) - } - if !v.skipClockSnapshotChecks { - if s.N >= 2 && !s.ClockSnapshot.Wall.After(v.lastSync.ClockSnapshot.Wall) { - e.Errorf("sync %d has non-increasing wall time: %v vs %v", s.N, s.ClockSnapshot.Wall, v.lastSync.ClockSnapshot.Wall) + } else { + if s.ClockSnapshot.Wall.IsZero() { + e.Errorf("sync %d has zero wall time", s.N) } - if s.N >= 2 && !(s.ClockSnapshot.Mono > v.lastSync.ClockSnapshot.Mono) { - e.Errorf("sync %d has non-increasing mono time: %v vs %v", s.N, s.ClockSnapshot.Mono, v.lastSync.ClockSnapshot.Mono) + if s.ClockSnapshot.Mono == 0 { + e.Errorf("sync %d has zero mono time", s.N) } - if s.N >= 2 && !(s.ClockSnapshot.Trace > v.lastSync.ClockSnapshot.Trace) { - e.Errorf("sync %d has non-increasing trace time: %v vs %v", s.N, s.ClockSnapshot.Trace, v.lastSync.ClockSnapshot.Trace) + if s.ClockSnapshot.Trace == 0 { + e.Errorf("sync %d has zero trace time", s.N) + } + if !v.skipClockSnapshotChecks { + if s.N >= 2 && !s.ClockSnapshot.Wall.After(v.lastSync.ClockSnapshot.Wall) { + e.Errorf("sync %d has non-increasing wall time: %v vs %v", s.N, s.ClockSnapshot.Wall, v.lastSync.ClockSnapshot.Wall) + } + if s.N >= 2 && !(s.ClockSnapshot.Mono > v.lastSync.ClockSnapshot.Mono) { + e.Errorf("sync %d has non-increasing mono time: %v vs %v", s.N, s.ClockSnapshot.Mono, v.lastSync.ClockSnapshot.Mono) + } + if s.N >= 2 && !(s.ClockSnapshot.Trace > v.lastSync.ClockSnapshot.Trace) { + e.Errorf("sync %d has non-increasing trace time: %v vs %v", s.N, s.ClockSnapshot.Trace, v.lastSync.ClockSnapshot.Trace) + } } } } diff --git a/src/internal/trace/tracev2/events.go b/src/internal/trace/tracev2/events.go index fc7b27720a..bfbbdec00f 100644 --- a/src/internal/trace/tracev2/events.go +++ b/src/internal/trace/tracev2/events.go @@ -87,6 +87,10 @@ const ( EvSync // start of a sync batch [...EvFrequency|EvClockSnapshot] EvClockSnapshot // snapshot of trace, mono and wall clocks [timestamp, mono, sec, nsec] + // Reserved internal in-band end-of-generation signal. Must never appear in the trace. Added in Go 1.25. + // This could be used as an explicit in-band end-of-generation signal in the future. + EvEndOfGeneration + NumEvents ) @@ -189,6 +193,9 @@ var specs = [...]EventSpec{ EvSync: { Name: "Sync", }, + EvEndOfGeneration: { + Name: "EndOfGeneration", + }, // "Timed" Events. EvProcsChange: { diff --git a/src/runtime/trace.go b/src/runtime/trace.go index c4d68cb714..139cbba6a9 100644 --- a/src/runtime/trace.go +++ b/src/runtime/trace.go @@ -21,6 +21,7 @@ package runtime import ( "internal/runtime/atomic" + "internal/trace/tracev2" "unsafe" ) @@ -51,9 +52,10 @@ var trace struct { // State for the trace reader goroutine. // // Protected by trace.lock. - readerGen atomic.Uintptr // the generation the reader is currently reading for - flushedGen atomic.Uintptr // the last completed generation - headerWritten bool // whether ReadTrace has emitted trace header + readerGen atomic.Uintptr // the generation the reader is currently reading for + flushedGen atomic.Uintptr // the last completed generation + headerWritten bool // whether ReadTrace has emitted trace header + endOfGenerationWritten bool // whether readTrace has emitted the end of the generation signal // doneSema is used to synchronize the reader and traceAdvance. Specifically, // it notifies traceAdvance that the reader is done with a generation. @@ -753,8 +755,24 @@ func traceRegisterLabelsAndReasons(gen uintptr) { // returned data before calling ReadTrace again. // ReadTrace must be called from one goroutine at a time. func ReadTrace() []byte { + for { + buf := readTrace() + + // Skip over the end-of-generation signal which must not appear + // in the final trace. + if len(buf) == 1 && tracev2.EventType(buf[0]) == tracev2.EvEndOfGeneration { + continue + } + return buf + } +} + +// readTrace is the implementation of ReadTrace, except with an additional +// in-band signal as to when the buffer is for a new generation. +// +//go:linkname readTrace runtime/trace.runtime_readTrace +func readTrace() (buf []byte) { top: - var buf []byte var park bool systemstack(func() { buf, park = readTrace0() @@ -782,7 +800,6 @@ top: }, nil, waitReasonTraceReaderBlocked, traceBlockSystemGoroutine, 2) goto top } - return buf } @@ -849,6 +866,17 @@ func readTrace0() (buf []byte, park bool) { // is waiting on the reader to finish flushing the last generation so that it // can continue to advance. if trace.flushedGen.Load() == gen { + // Write out the internal in-band end-of-generation signal. + if !trace.endOfGenerationWritten { + trace.endOfGenerationWritten = true + unlock(&trace.lock) + return []byte{byte(tracev2.EvEndOfGeneration)}, false + } + + // Reset the flag. + trace.endOfGenerationWritten = false + + // Handle shutdown. if trace.shutdown.Load() { unlock(&trace.lock) @@ -868,6 +896,8 @@ func readTrace0() (buf []byte, park bool) { // read. We're done. return nil, false } + // Handle advancing to the next generation. + // The previous gen has had all of its buffers flushed, and // there's nothing else for us to read. Advance the generation // we're reading from and try again. diff --git a/src/runtime/trace/batch.go b/src/runtime/trace/batch.go new file mode 100644 index 0000000000..d726a3d375 --- /dev/null +++ b/src/runtime/trace/batch.go @@ -0,0 +1,83 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package trace + +import ( + "fmt" + "internal/trace/tracev2" +) + +// timestamp is an unprocessed timestamp. +type timestamp uint64 + +// batch represents a batch of trace events. +// It is unparsed except for its header. +type batch struct { + m threadID + time timestamp + data []byte +} + +// threadID is the runtime-internal M structure's ID. This is unique +// for each OS thread. +type threadID int64 + +// readBatch copies b and parses the trace batch header inside. +// Returns the batch, the generation, bytes read, and an error. +func readBatch(b []byte) (batch, uint64, uint64, error) { + if len(b) == 0 { + return batch{}, 0, 0, fmt.Errorf("batch is empty") + } + data := make([]byte, len(b)) + if nw := copy(data, b); nw != len(b) { + return batch{}, 0, 0, fmt.Errorf("unexpected error copying batch") + } + // Read batch header byte. + if typ := tracev2.EventType(b[0]); typ != tracev2.EvEventBatch && typ != tracev2.EvExperimentalBatch { + return batch{}, 0, 1, fmt.Errorf("expected batch event, got event %d", typ) + } + + // Read the batch header: gen (generation), thread (M) ID, base timestamp + // for the batch. + total := 1 + b = b[1:] + gen, n, err := readUvarint(b) + if err != nil { + return batch{}, gen, uint64(total + n), fmt.Errorf("error reading batch gen: %w", err) + } + total += n + b = b[n:] + m, n, err := readUvarint(b) + if err != nil { + return batch{}, gen, uint64(total + n), fmt.Errorf("error reading batch M ID: %w", err) + } + total += n + b = b[n:] + ts, n, err := readUvarint(b) + if err != nil { + return batch{}, gen, uint64(total + n), fmt.Errorf("error reading batch timestamp: %w", err) + } + total += n + b = b[n:] + + // Read in the size of the batch to follow. + size, n, err := readUvarint(b) + if err != nil { + return batch{}, gen, uint64(total + n), fmt.Errorf("error reading batch size: %w", err) + } + if size > tracev2.MaxBatchSize { + return batch{}, gen, uint64(total + n), fmt.Errorf("invalid batch size %d, maximum is %d", size, tracev2.MaxBatchSize) + } + total += n + total += int(size) + data = data[:total] + + // Return the batch. + return batch{ + m: threadID(m), + time: timestamp(ts), + data: data, + }, gen, uint64(total), nil +} diff --git a/src/runtime/trace/encoding.go b/src/runtime/trace/encoding.go new file mode 100644 index 0000000000..46990c658c --- /dev/null +++ b/src/runtime/trace/encoding.go @@ -0,0 +1,50 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package trace + +import ( + "errors" +) + +// maxVarintLenN is the maximum length of a varint-encoded N-bit integer. +const maxVarintLen64 = 10 + +var ( + errOverflow = errors.New("binary: varint overflows a 64-bit integer") + errEOB = errors.New("binary: end of buffer") +) + +// TODO deduplicate this function. +func readUvarint(b []byte) (uint64, int, error) { + var x uint64 + var s uint + var byt byte + for i := 0; i < maxVarintLen64 && i < len(b); i++ { + byt = b[i] + if byt < 0x80 { + if i == maxVarintLen64-1 && byt > 1 { + return x, i, errOverflow + } + return x | uint64(byt)<= 0x80 { + buf[i] = byte(x) | 0x80 + x >>= 7 + i++ + } + buf[i] = byte(x) + return i + 1 +} diff --git a/src/runtime/trace/flightrecorder.go b/src/runtime/trace/flightrecorder.go new file mode 100644 index 0000000000..24163f32b2 --- /dev/null +++ b/src/runtime/trace/flightrecorder.go @@ -0,0 +1,182 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package trace + +import ( + "fmt" + "io" + "sync" + "time" + _ "unsafe" // added for go linkname usage +) + +// FlightRecorder represents a single consumer of a Go execution +// trace. +// It tracks a moving window over the execution trace produced by +// the runtime, always containing the most recent trace data. +// +// At most one flight recorder may be active at any given time, +// though flight recording is allowed to be concurrently active +// with a trace consumer using trace.Start. +// This restriction of only a single flight recorder may be removed +// in the future. +type FlightRecorder struct { + err error + + // State specific to the recorder. + header [16]byte + active rawGeneration + ringMu sync.Mutex + ring []rawGeneration + freq frequency // timestamp conversion factor, from the runtime + + // Externally-set options. + targetSize uint64 + targetPeriod time.Duration + + enabled bool // whether the flight recorder is enabled. + writing sync.Mutex // protects concurrent calls to WriteTo + + // The values of targetSize and targetPeriod we've committed to since the last Start. + wantSize uint64 + wantDur time.Duration +} + +// NewFlightRecorder creates a new flight recorder from the provided configuration. +func NewFlightRecorder(cfg FlightRecorderConfig) *FlightRecorder { + fr := new(FlightRecorder) + if cfg.MaxBytes != 0 { + fr.targetSize = cfg.MaxBytes + } else { + fr.targetSize = 10 << 20 // 10 MiB. + } + + if cfg.MinAge != 0 { + fr.targetPeriod = cfg.MinAge + } else { + fr.targetPeriod = 10 * time.Second + } + return fr +} + +// Start activates the flight recorder and begins recording trace data. +// Only one call to trace.Start may be active at any given time. +// In addition, currently only one flight recorder may be active in the program. +// Returns an error if the flight recorder cannot be started or is already started. +func (fr *FlightRecorder) Start() error { + if fr.enabled { + return fmt.Errorf("cannot enable a enabled flight recorder") + } + fr.wantSize = fr.targetSize + fr.wantDur = fr.targetPeriod + fr.err = nil + fr.freq = frequency(1.0 / (float64(runtime_traceClockUnitsPerSecond()) / 1e9)) + + // Start tracing, data is sent to a recorder which forwards it to our own + // storage. + if err := tracing.subscribeFlightRecorder(&recorder{r: fr}); err != nil { + return err + } + + fr.enabled = true + return nil +} + +// Stop ends recording of trace data. It blocks until any concurrent WriteTo calls complete. +func (fr *FlightRecorder) Stop() { + if !fr.enabled { + return + } + fr.enabled = false + tracing.unsubscribeFlightRecorder() + + // Reset all state. No need to lock because the reader has already exited. + fr.active = rawGeneration{} + fr.ring = nil +} + +// Enabled returns true if the flight recorder is active. +// Specifically, it will return true if Start did not return an error, and Stop has not yet been called. +// It is safe to call from multiple goroutines simultaneously. +func (fr *FlightRecorder) Enabled() bool { return fr.enabled } + +// WriteTo snapshots the moving window tracked by the flight recorder. +// The snapshot is expected to contain data that is up-to-date as of when WriteTo is called, +// though this is not a hard guarantee. +// Only one goroutine may execute WriteTo at a time. +// An error is returned upon failure to write to w, if another WriteTo call is already in-progress, +// or if the flight recorder is inactive. +func (fr *FlightRecorder) WriteTo(w io.Writer) (n int64, err error) { + if !fr.enabled { + return 0, fmt.Errorf("cannot snapshot a disabled flight recorder") + } + if !fr.writing.TryLock() { + // Indicates that a call to WriteTo was made while one was already in progress. + // If the caller of WriteTo sees this error, they should use the result from the other call to WriteTo. + return 0, fmt.Errorf("call to WriteTo for trace.FlightRecorder already in progress") + } + defer fr.writing.Unlock() + + // Force a global buffer flush. + runtime_traceAdvance(false) + + // Now that everything has been flushed and written, grab whatever we have. + // + // N.B. traceAdvance blocks until the tracer goroutine has actually written everything + // out, which means the generation we just flushed must have been already been observed + // by the recorder goroutine. Because we flushed twice, the first flush is guaranteed to + // have been both completed *and* processed by the recorder goroutine. + fr.ringMu.Lock() + gens := fr.ring + fr.ringMu.Unlock() + + // Write the header. + nw, err := w.Write(fr.header[:]) + if err != nil { + return int64(nw), err + } + n += int64(nw) + + // Write all the data. + for _, gen := range gens { + for _, batch := range gen.batches { + // Write batch data. + nw, err = w.Write(batch.data) + n += int64(nw) + if err != nil { + return n, err + } + } + } + return n, nil +} + +type FlightRecorderConfig struct { + // MinAge is a lower bound on the age of an event in the flight recorder's window. + // + // The flight recorder will strive to promptly discard events older than the minimum age, + // but older events may appear in the window snapshot. The age setting will always be + // overridden by MaxSize. + // + // If this is 0, the minimum age is implementation defined, but can be assumed to be on the order + // of seconds. + MinAge time.Duration + + // MaxBytes is an upper bound on the size of the window in bytes. + // + // This setting takes precedence over MinAge. + // However, it does not make any guarantees on the size of the data WriteTo will write, + // nor does it guarantee memory overheads will always stay below MaxBytes. Treat it + // as a hint. + // + // If this is 0, the maximum size is implementation defined. + MaxBytes uint64 +} + +//go:linkname runtime_traceClockUnitsPerSecond +func runtime_traceClockUnitsPerSecond() uint64 + +//go:linkname runtime_traceAdvance runtime.traceAdvance +func runtime_traceAdvance(stopTrace bool) diff --git a/src/runtime/trace/flightrecorder_test.go b/src/runtime/trace/flightrecorder_test.go new file mode 100644 index 0000000000..075215db00 --- /dev/null +++ b/src/runtime/trace/flightrecorder_test.go @@ -0,0 +1,308 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package trace_test + +import ( + "bytes" + "context" + inttrace "internal/trace" + "internal/trace/testtrace" + "io" + "runtime/trace" + "slices" + "sync" + "sync/atomic" + "testing" + "time" +) + +func TestFlightRecorderDoubleStart(t *testing.T) { + fr := trace.NewFlightRecorder(trace.FlightRecorderConfig{}) + if err := fr.Start(); err != nil { + t.Fatalf("unexpected error on Start: %v", err) + } + if err := fr.Start(); err == nil { + t.Fatalf("expected error from double Start: %v", err) + } + fr.Stop() +} + +func TestFlightRecorderEnabled(t *testing.T) { + fr := trace.NewFlightRecorder(trace.FlightRecorderConfig{}) + + if fr.Enabled() { + t.Fatal("flight recorder is enabled, but never started") + } + if err := fr.Start(); err != nil { + t.Fatalf("unexpected error on Start: %v", err) + } + if !fr.Enabled() { + t.Fatal("flight recorder is not enabled, but started") + } + fr.Stop() + if fr.Enabled() { + t.Fatal("flight recorder is enabled, but stopped") + } +} + +func TestFlightRecorderWriteToDisabled(t *testing.T) { + var buf bytes.Buffer + + fr := trace.NewFlightRecorder(trace.FlightRecorderConfig{}) + if n, err := fr.WriteTo(&buf); err == nil { + t.Fatalf("successfully wrote %d bytes from disabled flight recorder", n) + } + if err := fr.Start(); err != nil { + t.Fatalf("unexpected error on Start: %v", err) + } + fr.Stop() + if n, err := fr.WriteTo(&buf); err == nil { + t.Fatalf("successfully wrote %d bytes from disabled flight recorder", n) + } +} + +func TestFlightRecorderConcurrentWriteTo(t *testing.T) { + fr := trace.NewFlightRecorder(trace.FlightRecorderConfig{}) + if err := fr.Start(); err != nil { + t.Fatalf("unexpected error on Start: %v", err) + } + + // Start two goroutines to write snapshots. + // + // Most of the time one will fail and one will succeed, but we don't require this. + // Due to a variety of factors, it's definitely possible for them both to succeed. + // However, at least one should succeed. + var bufs [2]bytes.Buffer + var wg sync.WaitGroup + var successes atomic.Uint32 + for i := range bufs { + wg.Add(1) + go func() { + defer wg.Done() + + n, err := fr.WriteTo(&bufs[i]) + // TODO(go.dev/issue/63185) was an exported error. Consider refactoring. + if err != nil && err.Error() == "call to WriteTo for trace.FlightRecorder already in progress" { + if n != 0 { + t.Errorf("(goroutine %d) WriteTo bytes written is non-zero for early bail out: %d", i, n) + } + return + } + if err != nil { + t.Errorf("(goroutine %d) failed to write snapshot for unexpected reason: %v", i, err) + } + successes.Add(1) + + if n == 0 { + t.Errorf("(goroutine %d) wrote invalid trace of zero bytes in size", i) + } + if n != int64(bufs[i].Len()) { + t.Errorf("(goroutine %d) trace length doesn't match WriteTo result: got %d, want %d", i, n, int64(bufs[i].Len())) + } + }() + } + wg.Wait() + + // Stop tracing. + fr.Stop() + + // Make sure at least one succeeded to write. + if successes.Load() == 0 { + t.Fatal("expected at least one success to write a snapshot, got zero") + } + + // Validate the traces that came out. + for i := range bufs { + buf := &bufs[i] + if buf.Len() == 0 { + continue + } + testReader(t, buf, testtrace.ExpectSuccess()) + } +} + +func TestFlightRecorder(t *testing.T) { + testFlightRecorder(t, trace.NewFlightRecorder(trace.FlightRecorderConfig{}), func(snapshot func()) { + snapshot() + }) +} + +func TestFlightRecorderStartStop(t *testing.T) { + fr := trace.NewFlightRecorder(trace.FlightRecorderConfig{}) + for i := 0; i < 5; i++ { + testFlightRecorder(t, fr, func(snapshot func()) { + snapshot() + }) + } +} + +func TestFlightRecorderLog(t *testing.T) { + tr := testFlightRecorder(t, trace.NewFlightRecorder(trace.FlightRecorderConfig{}), func(snapshot func()) { + trace.Log(context.Background(), "message", "hello") + snapshot() + }) + + // Prepare to read the trace snapshot. + r, err := inttrace.NewReader(bytes.NewReader(tr)) + if err != nil { + t.Fatalf("unexpected error creating trace reader: %v", err) + } + + // Find the log message in the trace. + found := false + for { + ev, err := r.ReadEvent() + if err == io.EOF { + break + } + if err != nil { + t.Fatalf("unexpected error reading trace: %v", err) + } + if !found && ev.Kind() == inttrace.EventLog { + log := ev.Log() + found = log.Category == "message" && log.Message == "hello" + } + } + if !found { + t.Errorf("failed to find expected log message (%q, %q) in snapshot", "message", "hello") + } +} + +func TestFlightRecorderOneGeneration(t *testing.T) { + test := func(t *testing.T, fr *trace.FlightRecorder) { + tr := testFlightRecorder(t, fr, func(snapshot func()) { + // Sleep to let a few generations pass. + time.Sleep(3 * time.Second) + snapshot() + }) + + // Prepare to read the trace snapshot. + r, err := inttrace.NewReader(bytes.NewReader(tr)) + if err != nil { + t.Fatalf("unexpected error creating trace reader: %v", err) + } + + // Make sure there are exactly two Sync events: at the start and end. + var syncs []int + evs := 0 + for { + ev, err := r.ReadEvent() + if err == io.EOF { + break + } + if err != nil { + t.Fatalf("unexpected error reading trace: %v", err) + } + if ev.Kind() == inttrace.EventSync { + syncs = append(syncs, evs) + } + evs++ + } + if ends := []int{0, evs - 1}; !slices.Equal(syncs, ends) { + t.Errorf("expected two sync events (one at each end of the trace), found %d at %d instead of %d", + len(syncs), syncs[:min(len(syncs), 5)], ends) + } + } + t.Run("SetMinAge", func(t *testing.T) { + t.Skip("issue 63185: flaky test") + fr := trace.NewFlightRecorder(trace.FlightRecorderConfig{MinAge: time.Millisecond}) + test(t, fr) + }) + t.Run("MaxBytes", func(t *testing.T) { + fr := trace.NewFlightRecorder(trace.FlightRecorderConfig{MaxBytes: 16}) + test(t, fr) + }) +} + +type flightRecorderTestFunc func(snapshot func()) + +func testFlightRecorder(t *testing.T, fr *trace.FlightRecorder, f flightRecorderTestFunc) []byte { + if trace.IsEnabled() { + t.Skip("cannot run flight recorder tests when tracing is enabled") + } + + // Start the flight recorder. + if err := fr.Start(); err != nil { + t.Fatalf("unexpected error on Start: %v", err) + } + + // Set up snapshot callback. + var buf bytes.Buffer + callback := func() { + n, err := fr.WriteTo(&buf) + if err != nil { + t.Errorf("unexpected failure during flight recording: %v", err) + return + } + if n < 16 { + t.Errorf("expected a trace size of at least 16 bytes, got %d", n) + } + if n != int64(buf.Len()) { + t.Errorf("WriteTo result doesn't match trace size: got %d, want %d", n, int64(buf.Len())) + } + } + + // Call the test function. + f(callback) + + // Stop the flight recorder. + fr.Stop() + + // Get the trace bytes; we don't want to use the Buffer as a Reader directly + // since we may want to consume this data more than once. + traceBytes := buf.Bytes() + + // Parse the trace to make sure it's not broken. + testReader(t, bytes.NewReader(traceBytes), testtrace.ExpectSuccess()) + return traceBytes +} + +func testReader(t *testing.T, tr io.Reader, exp *testtrace.Expectation) { + r, err := inttrace.NewReader(tr) + if err != nil { + if err := exp.Check(err); err != nil { + t.Error(err) + } + return + } + v := testtrace.NewValidator() + v.SkipClockSnapshotChecks() + for { + ev, err := r.ReadEvent() + if err == io.EOF { + break + } + if err != nil { + if err := exp.Check(err); err != nil { + t.Error(err) + } + return + } + if err := v.Event(ev); err != nil { + t.Error(err) + } + } + if err := exp.Check(nil); err != nil { + t.Error(err) + } +} + +func TestTraceAndFlightRecorder(t *testing.T) { + var tBuf, frBuf bytes.Buffer + if err := trace.Start(&tBuf); err != nil { + t.Errorf("unable to start execution tracer: %s", err) + } + fr := trace.NewFlightRecorder(trace.FlightRecorderConfig{MaxBytes: 16}) + fr.Start() + fr.WriteTo(&frBuf) + fr.Stop() + trace.Stop() + if tBuf.Len() == 0 || frBuf.Len() == 0 { + t.Errorf("None of these should be equal to zero: %d %d", tBuf.Len(), frBuf.Len()) + } + if tBuf.Len() <= frBuf.Len() { + t.Errorf("trace should be longer than the flight recorder: trace=%d flight record=%d", tBuf.Len(), frBuf.Len()) + } +} diff --git a/src/runtime/trace/recorder.go b/src/runtime/trace/recorder.go new file mode 100644 index 0000000000..78e003e2a5 --- /dev/null +++ b/src/runtime/trace/recorder.go @@ -0,0 +1,144 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package trace + +import ( + "fmt" + "slices" + "time" + _ "unsafe" // added for go linkname usage +) + +// A recorder receives bytes from the runtime tracer, processes it. +type recorder struct { + r *FlightRecorder + + headerReceived bool +} + +func (w *recorder) Write(b []byte) (n int, err error) { + r := w.r + + defer func() { + if err != nil { + // Propagate errors to the flightrecorder. + if r.err == nil { + r.err = err + } + } + }() + + if !w.headerReceived { + if len(b) < len(r.header) { + return 0, fmt.Errorf("expected at least %d bytes in the first write", len(r.header)) + } + r.header = ([16]byte)(b[:16]) + n += 16 + w.headerReceived = true + } + if len(b) == n { + return 0, nil + } + ba, gen, nb, err := readBatch(b[n:]) // Every write from the runtime is guaranteed to be a complete batch. + if err != nil { + return len(b) - int(nb) - n, err + } + n += int(nb) + + // Append the batch to the current generation. + if r.active.gen == 0 { + r.active.gen = gen + } + if r.active.minTime == 0 || r.active.minTime > r.freq.mul(ba.time) { + r.active.minTime = r.freq.mul(ba.time) + } + r.active.size += len(ba.data) + r.active.batches = append(r.active.batches, ba) + + return len(b), nil +} + +func (w *recorder) endGeneration() { + r := w.r + + // Check if we're entering a new generation. + r.ringMu.Lock() + + // Get the current trace clock time. + now := traceTimeNow(r.freq) + + // Add the current generation to the ring. Make sure we always have at least one + // complete generation by putting the active generation onto the new list, regardless + // of whatever our settings are. + // + // N.B. Let's completely replace the ring here, so that WriteTo can just make a copy + // and not worry about aliasing. This creates allocations, but at a very low rate. + newRing := []rawGeneration{r.active} + size := r.active.size + for i := len(r.ring) - 1; i >= 0; i-- { + // Stop adding older generations if the new ring already exceeds the thresholds. + // This ensures we keep generations that cross a threshold, but not any that lie + // entirely outside it. + if uint64(size) > r.wantSize || now.Sub(newRing[len(newRing)-1].minTime) > r.wantDur { + break + } + size += r.ring[i].size + newRing = append(newRing, r.ring[i]) + } + slices.Reverse(newRing) + r.ring = newRing + r.ringMu.Unlock() + + // Start a new active generation. + r.active = rawGeneration{} +} + +type rawGeneration struct { + gen uint64 + size int + minTime eventTime + batches []batch +} + +func traceTimeNow(freq frequency) eventTime { + return freq.mul(timestamp(runtime_traceClockNow())) +} + +//go:linkname runtime_traceClockNow runtime.traceClockNow +func runtime_traceClockNow() int64 + +// frequency is nanoseconds per timestamp unit. +type frequency float64 + +// mul multiplies an unprocessed to produce a time in nanoseconds. +func (f frequency) mul(t timestamp) eventTime { + return eventTime(float64(t) * float64(f)) +} + +// eventTime is a timestamp in nanoseconds. +// +// It corresponds to the monotonic clock on the platform that the +// trace was taken, and so is possible to correlate with timestamps +// for other traces taken on the same machine using the same clock +// (i.e. no reboots in between). +// +// The actual absolute value of the timestamp is only meaningful in +// relation to other timestamps from the same clock. +// +// BUG: Timestamps coming from traces on Windows platforms are +// only comparable with timestamps from the same trace. Timestamps +// across traces cannot be compared, because the system clock is +// not used as of Go 1.22. +// +// BUG: Traces produced by Go versions 1.21 and earlier cannot be +// compared with timestamps from other traces taken on the same +// machine. This is because the system clock was not used at all +// to collect those timestamps. +type eventTime int64 + +// Sub subtracts t0 from t, returning the duration in nanoseconds. +func (t eventTime) Sub(t0 eventTime) time.Duration { + return time.Duration(int64(t) - int64(t0)) +} diff --git a/src/runtime/trace/subscribe.go b/src/runtime/trace/subscribe.go new file mode 100644 index 0000000000..45320cee36 --- /dev/null +++ b/src/runtime/trace/subscribe.go @@ -0,0 +1,188 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package trace + +import ( + "fmt" + "internal/trace/tracev2" + "io" + "runtime" + "sync" + "sync/atomic" + _ "unsafe" +) + +var tracing traceMultiplexer + +type traceMultiplexer struct { + sync.Mutex + enabled atomic.Bool + subscribers int + + subscribersMu sync.Mutex + traceStartWriter io.Writer + flightRecorder *recorder +} + +func (t *traceMultiplexer) subscribeFlightRecorder(r *recorder) error { + t.Lock() + defer t.Unlock() + + t.subscribersMu.Lock() + if t.flightRecorder != nil { + t.subscribersMu.Unlock() + return fmt.Errorf("flight recorder already enabled") + } + t.flightRecorder = r + t.subscribersMu.Unlock() + + if err := t.addedSubscriber(); err != nil { + t.subscribersMu.Lock() + t.flightRecorder = nil + t.subscribersMu.Unlock() + return err + } + return nil +} + +func (t *traceMultiplexer) unsubscribeFlightRecorder() error { + t.Lock() + defer t.Unlock() + + t.removingSubscriber() + + t.subscribersMu.Lock() + if t.flightRecorder == nil { + t.subscribersMu.Unlock() + return fmt.Errorf("attempt to unsubscribe missing flight recorder") + } + t.flightRecorder = nil + t.subscribersMu.Unlock() + + t.removedSubscriber() + return nil +} + +func (t *traceMultiplexer) subscribeTraceStartWriter(w io.Writer) error { + t.Lock() + defer t.Unlock() + + t.subscribersMu.Lock() + if t.traceStartWriter != nil { + t.subscribersMu.Unlock() + return fmt.Errorf("execution tracer already enabled") + } + t.traceStartWriter = w + t.subscribersMu.Unlock() + + if err := t.addedSubscriber(); err != nil { + t.subscribersMu.Lock() + t.traceStartWriter = nil + t.subscribersMu.Unlock() + return err + } + return nil +} + +func (t *traceMultiplexer) unsubscribeTraceStartWriter() { + t.Lock() + defer t.Unlock() + + t.removingSubscriber() + + t.subscribersMu.Lock() + if t.traceStartWriter == nil { + t.subscribersMu.Unlock() + return + } + t.traceStartWriter = nil + t.subscribersMu.Unlock() + + t.removedSubscriber() + return +} + +func (t *traceMultiplexer) addedSubscriber() error { + if t.enabled.Load() { + // This is necessary for the trace reader goroutine to pick up on the new subscriber. + runtime_traceAdvance(false) + } else { + if err := t.startLocked(); err != nil { + return err + } + } + t.subscribers++ + return nil +} + +func (t *traceMultiplexer) removingSubscriber() { + if t.subscribers == 0 { + return + } + t.subscribers-- + if t.subscribers == 0 { + runtime.StopTrace() + t.enabled.Store(false) + } else { + // This is necessary to avoid missing trace data when the system is under high load. + runtime_traceAdvance(false) + } +} + +func (t *traceMultiplexer) removedSubscriber() { + if t.subscribers > 0 { + // This is necessary for the trace reader goroutine to pick up on the new subscriber. + runtime_traceAdvance(false) + } +} + +func (t *traceMultiplexer) startLocked() error { + if err := runtime.StartTrace(); err != nil { + return err + } + + // Grab the trace reader goroutine's subscribers. + // + // We only update our subscribers if we see an end-of-generation + // signal from the runtime after this, so any new subscriptions + // or unsubscriptions must call traceAdvance to ensure the reader + // goroutine sees an end-of-generation signal. + t.subscribersMu.Lock() + flightRecorder := t.flightRecorder + traceStartWriter := t.traceStartWriter + t.subscribersMu.Unlock() + + go func() { + for { + data := runtime_readTrace() + if data == nil { + break + } + if len(data) == 1 && tracev2.EventType(data[0]) == tracev2.EvEndOfGeneration { + if flightRecorder != nil { + flightRecorder.endGeneration() + } + + // Pick up any changes. + t.subscribersMu.Lock() + flightRecorder = t.flightRecorder + traceStartWriter = t.traceStartWriter + t.subscribersMu.Unlock() + } else { + if traceStartWriter != nil { + traceStartWriter.Write(data) + } + if flightRecorder != nil { + flightRecorder.Write(data) + } + } + } + }() + t.enabled.Store(true) + return nil +} + +//go:linkname runtime_readTrace +func runtime_readTrace() (buf []byte) diff --git a/src/runtime/trace/trace.go b/src/runtime/trace/trace.go index 935d222f02..a858d1b101 100644 --- a/src/runtime/trace/trace.go +++ b/src/runtime/trace/trace.go @@ -110,45 +110,17 @@ package trace import ( "io" - "runtime" - "sync" - "sync/atomic" ) // Start enables tracing for the current program. // While tracing, the trace will be buffered and written to w. // Start returns an error if tracing is already enabled. func Start(w io.Writer) error { - tracing.Lock() - defer tracing.Unlock() - - if err := runtime.StartTrace(); err != nil { - return err - } - go func() { - for { - data := runtime.ReadTrace() - if data == nil { - break - } - w.Write(data) - } - }() - tracing.enabled.Store(true) - return nil + return tracing.subscribeTraceStartWriter(w) } // Stop stops the current tracing, if any. // Stop only returns after all the writes for the trace have completed. func Stop() { - tracing.Lock() - defer tracing.Unlock() - tracing.enabled.Store(false) - - runtime.StopTrace() -} - -var tracing struct { - sync.Mutex // gate mutators (Start, Stop) - enabled atomic.Bool + tracing.unsubscribeTraceStartWriter() } diff --git a/src/runtime/traceregion.go b/src/runtime/traceregion.go index 2fb27e6e01..eb19294f1b 100644 --- a/src/runtime/traceregion.go +++ b/src/runtime/traceregion.go @@ -59,37 +59,43 @@ func (a *traceRegionAlloc) alloc(n uintptr) *notInHeap { } // Try to install a new block. - lock(&a.lock) + var x *notInHeap + systemstack(func() { + // Acquire a.lock on the systemstack to avoid stack growth + // and accidentally entering the tracer again. + lock(&a.lock) - // Check block again under the lock. Someone may - // have gotten here first. - block = (*traceRegionAllocBlock)(a.current.Load()) - if block != nil { - r := block.off.Add(n) - if r <= uintptr(len(block.data)) { - unlock(&a.lock) - return (*notInHeap)(unsafe.Pointer(&block.data[r-n])) + // Check block again under the lock. Someone may + // have gotten here first. + block = (*traceRegionAllocBlock)(a.current.Load()) + if block != nil { + r := block.off.Add(n) + if r <= uintptr(len(block.data)) { + unlock(&a.lock) + x = (*notInHeap)(unsafe.Pointer(&block.data[r-n])) + return + } + + // Add the existing block to the full list. + block.next = a.full + a.full = block } - // Add the existing block to the full list. - block.next = a.full - a.full = block - } + // Allocate a new block. + block = (*traceRegionAllocBlock)(sysAlloc(unsafe.Sizeof(traceRegionAllocBlock{}), &memstats.other_sys, "trace arena alloc")) + if block == nil { + throw("traceRegion: out of memory") + } - // Allocate a new block. - block = (*traceRegionAllocBlock)(sysAlloc(unsafe.Sizeof(traceRegionAllocBlock{}), &memstats.other_sys, "trace arena alloc")) - if block == nil { - throw("traceRegion: out of memory") - } + // Allocate space for our current request, so we always make + // progress. + block.off.Store(n) + x = (*notInHeap)(unsafe.Pointer(&block.data[0])) - // Allocate space for our current request, so we always make - // progress. - block.off.Store(n) - x := (*notInHeap)(unsafe.Pointer(&block.data[0])) - - // Publish the new block. - a.current.Store(unsafe.Pointer(block)) - unlock(&a.lock) + // Publish the new block. + a.current.Store(unsafe.Pointer(block)) + unlock(&a.lock) + }) return x } diff --git a/src/runtime/tracetime.go b/src/runtime/tracetime.go index df52f00ad4..7ffab79bad 100644 --- a/src/runtime/tracetime.go +++ b/src/runtime/tracetime.go @@ -64,6 +64,8 @@ func traceClockNow() traceTime { // traceClockUnitsPerSecond estimates the number of trace clock units per // second that elapse. +// +//go:linkname traceClockUnitsPerSecond runtime/trace.runtime_traceClockUnitsPerSecond func traceClockUnitsPerSecond() uint64 { if osHasLowResClock { // We're using cputicks as our clock, so we need a real estimate. From 8bf816ae6879fa4537cc6e6e292769df2d7dbb78 Mon Sep 17 00:00:00 2001 From: thepudds Date: Wed, 21 May 2025 16:50:17 -0400 Subject: [PATCH 78/99] cmd/compile/internal/escape: make escape analysis -m=2 logs more accessible MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This was the first CL in a series of CLs aimed at reducing how often interface arguments escape for the print functions in fmt. This CL makes some small improvements to the escape analysis logging. Here is a sample snippet of the current -m=2 logs: ./print.go:587:7: parameter p leaks to {heap} with derefs=0: ./print.go:587:7: flow: p = p: ./print.go:587:7: from (*pp).printArg(p, err, 'v') (call parameter) at ./print.go:613:13 ./print.go:587:7: flow: p = p: ./print.go:587:7: from (*pp).handleMethods(p, verb) (call parameter) at ./print.go:749:22 [..] If we attempt to tease apart some reasons why the -m=2 logs can be challenging to understand for the uninitiated: - The "flow" lines are very useful, but contain more-or-less abstracted pseudocode. The "from" lines most often use actual code. When first looking at the logs, that distinction might not be apparent, which can result in looking back to the original code to hunt for pseudocode that doesn't exist there. (The log example shows 'p = p', but there is no 'p = p' in the original source). - Escape analysis can be most interesting with inlining, but that can result in seeing overlapping short variable names (e.g., p, b, v...). - The directionality of the "flow" lines might not be obvious, including whether they build top-to-bottom or bottom-to-top. - The use of '{' and '}' in the -m=2 logs somewhat intersects with Go literals (e.g., if the log says "{temp}", an initial thought might be that represents some temp inside of some Go literal). - And of course, escape analysis itself is subtle. This CL: - Adds the function name to the first -m=2 line to provide more context and reduce how often the reader needs to lookup line numbers. - Uses the Unicode left arrow '←' rather than '=' on the flow lines to make it clearer that these lines are abstracted away from the original Go code and to help the directionality jump out. In the future, we can consider changing "{heap}", "{temp}", "{storage for foo}" to something else, but we leave them as is for now. Two examples with the modifications: ./f1.go:3:9: parameter inptr leaks to outptr for func1 with derefs=0: ./f1.go:3:9: flow: localptr ← inptr: ./f1.go:3:9: from localptr := inptr (assign) at ./f1.go:4:11 ./f1.go:3:9: flow: outptr ← localptr: ./f1.go:3:9: from return localptr (return) at ./f1.go:5:2 ./b.go:14:20: []byte{...} escapes to heap in byteOrderExample: ./b.go:14:20: flow: b ← &{storage for []byte{...}}: ./b.go:14:20: from []byte{...} (spill) at ./byteorder.go:14:20 ./b.go:14:20: from b := []byte{...} (assign) at ./byteorder.go:14:11 ./b.go:14:20: flow: ← b: ./b.go:14:20: from byteOrder.Uint32(b) (call parameter) at ./byteorder.go:15:32 These changes only affect the -m=2 output and leave the -m=1 output as is. Updates #8618 Updates #62653 Change-Id: Ic082a371c3d3fa0d8fd8bfbe4d64ec3e1e53c173 Reviewed-on: https://go-review.googlesource.com/c/go/+/524937 Reviewed-by: Cherry Mui Reviewed-by: Dmitri Shuralyov Auto-Submit: Dmitri Shuralyov LUCI-TryBot-Result: Go LUCI Reviewed-by: David Chase --- src/cmd/compile/internal/escape/graph.go | 2 +- src/cmd/compile/internal/escape/solve.go | 6 +++--- src/cmd/compile/internal/logopt/logopt_test.go | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/cmd/compile/internal/escape/graph.go b/src/cmd/compile/internal/escape/graph.go index d20809d442..0ffb4a0bb5 100644 --- a/src/cmd/compile/internal/escape/graph.go +++ b/src/cmd/compile/internal/escape/graph.go @@ -212,7 +212,7 @@ func (b *batch) flow(k hole, src *location) { if base.Flag.LowerM >= 2 || logopt.Enabled() { pos := base.FmtPos(src.n.Pos()) if base.Flag.LowerM >= 2 { - fmt.Printf("%s: %v escapes to heap:\n", pos, src.n) + fmt.Printf("%s: %v escapes to heap in %v:\n", pos, src.n, ir.FuncName(src.curfn)) } explanation := b.explainFlow(pos, dst, src, k.derefs, k.notes, []*logopt.LoggedOpt{}) if logopt.Enabled() { diff --git a/src/cmd/compile/internal/escape/solve.go b/src/cmd/compile/internal/escape/solve.go index d2263a7039..e2ca3eabda 100644 --- a/src/cmd/compile/internal/escape/solve.go +++ b/src/cmd/compile/internal/escape/solve.go @@ -116,7 +116,7 @@ func (b *batch) walkOne(root *location, walkgen uint32, enqueue func(*location)) if b.outlives(root, l) { if !l.hasAttr(attrEscapes) && (logopt.Enabled() || base.Flag.LowerM >= 2) { if base.Flag.LowerM >= 2 { - fmt.Printf("%s: %v escapes to heap:\n", base.FmtPos(l.n.Pos()), l.n) + fmt.Printf("%s: %v escapes to heap in %v:\n", base.FmtPos(l.n.Pos()), l.n, ir.FuncName(l.curfn)) } explanation := b.explainPath(root, l) if logopt.Enabled() { @@ -146,7 +146,7 @@ func (b *batch) walkOne(root *location, walkgen uint32, enqueue func(*location)) if b.outlives(root, l) { if !l.hasAttr(attrEscapes) && (logopt.Enabled() || base.Flag.LowerM >= 2) { if base.Flag.LowerM >= 2 { - fmt.Printf("%s: parameter %v leaks to %s with derefs=%d:\n", base.FmtPos(l.n.Pos()), l.n, b.explainLoc(root), derefs) + fmt.Printf("%s: parameter %v leaks to %s for %v with derefs=%d:\n", base.FmtPos(l.n.Pos()), l.n, b.explainLoc(root), ir.FuncName(l.curfn), derefs) } explanation := b.explainPath(root, l) if logopt.Enabled() { @@ -234,7 +234,7 @@ func (b *batch) explainFlow(pos string, dst, srcloc *location, derefs int, notes } print := base.Flag.LowerM >= 2 - flow := fmt.Sprintf(" flow: %s = %s%v:", b.explainLoc(dst), ops, b.explainLoc(srcloc)) + flow := fmt.Sprintf(" flow: %s ← %s%v:", b.explainLoc(dst), ops, b.explainLoc(srcloc)) if print { fmt.Printf("%s:%s\n", pos, flow) } diff --git a/src/cmd/compile/internal/logopt/logopt_test.go b/src/cmd/compile/internal/logopt/logopt_test.go index c7debd9897..1edabf9fb7 100644 --- a/src/cmd/compile/internal/logopt/logopt_test.go +++ b/src/cmd/compile/internal/logopt/logopt_test.go @@ -203,16 +203,16 @@ func s15a8(x *[15]int64) [15]int64 { // escape analysis explanation want(t, slogged, `{"range":{"start":{"line":7,"character":13},"end":{"line":7,"character":13}},"severity":3,"code":"leak","source":"go compiler","message":"parameter z leaks to ~r0 with derefs=0",`+ `"relatedInformation":[`+ - `{"location":{"uri":"file://tmpdir/file.go","range":{"start":{"line":9,"character":13},"end":{"line":9,"character":13}}},"message":"escflow: flow: y = z:"},`+ + `{"location":{"uri":"file://tmpdir/file.go","range":{"start":{"line":9,"character":13},"end":{"line":9,"character":13}}},"message":"escflow: flow: y ← z:"},`+ `{"location":{"uri":"file://tmpdir/file.go","range":{"start":{"line":9,"character":13},"end":{"line":9,"character":13}}},"message":"escflow: from y := z (assign-pair)"},`+ - `{"location":{"uri":"file://tmpdir/file.go","range":{"start":{"line":9,"character":13},"end":{"line":9,"character":13}}},"message":"escflow: flow: ~r0 = y:"},`+ + `{"location":{"uri":"file://tmpdir/file.go","range":{"start":{"line":9,"character":13},"end":{"line":9,"character":13}}},"message":"escflow: flow: ~r0 ← y:"},`+ `{"location":{"uri":"file://tmpdir/file.go","range":{"start":{"line":4,"character":11},"end":{"line":4,"character":11}}},"message":"inlineLoc"},`+ `{"location":{"uri":"file://tmpdir/file.go","range":{"start":{"line":9,"character":13},"end":{"line":9,"character":13}}},"message":"escflow: from y.b (dot of pointer)"},`+ `{"location":{"uri":"file://tmpdir/file.go","range":{"start":{"line":4,"character":11},"end":{"line":4,"character":11}}},"message":"inlineLoc"},`+ `{"location":{"uri":"file://tmpdir/file.go","range":{"start":{"line":9,"character":13},"end":{"line":9,"character":13}}},"message":"escflow: from \u0026y.b (address-of)"},`+ `{"location":{"uri":"file://tmpdir/file.go","range":{"start":{"line":4,"character":9},"end":{"line":4,"character":9}}},"message":"inlineLoc"},`+ `{"location":{"uri":"file://tmpdir/file.go","range":{"start":{"line":9,"character":13},"end":{"line":9,"character":13}}},"message":"escflow: from ~r0 = \u0026y.b (assign-pair)"},`+ - `{"location":{"uri":"file://tmpdir/file.go","range":{"start":{"line":9,"character":3},"end":{"line":9,"character":3}}},"message":"escflow: flow: ~r0 = ~r0:"},`+ + `{"location":{"uri":"file://tmpdir/file.go","range":{"start":{"line":9,"character":3},"end":{"line":9,"character":3}}},"message":"escflow: flow: ~r0 ← ~r0:"},`+ `{"location":{"uri":"file://tmpdir/file.go","range":{"start":{"line":9,"character":3},"end":{"line":9,"character":3}}},"message":"escflow: from return ~r0 (return)"}]}`) }) } From 5e6a868b28d3e7a71fa328c18ff5e93d72a1fb67 Mon Sep 17 00:00:00 2001 From: Cherry Mui Date: Wed, 21 May 2025 14:33:13 -0400 Subject: [PATCH 79/99] cmd/compile, unique: model data flow of non-string pointers Currently, hash/maphash.Comparable escapes its parameter if it contains non-string pointers, but does not escape strings or types that contain strings but no other pointers. This is achieved by a compiler intrinsic. unique.Make does something similar: it stores its parameter to a central map, with strings cloned. So from the escape analysis's perspective, the non-string pointers are passed through, whereas string pointers are not. We currently cannot model this type of type-dependent data flow directly in Go. So we do this with a compiler intrinsic. In fact, we can unify this and the intrinsic above. Tests are from Jake Bailey's CL 671955 (thanks!). Fixes #73680. Change-Id: Ia6a78e09dee39f8d9198a16758e4b5322ee2c56a Reviewed-on: https://go-review.googlesource.com/c/go/+/675156 LUCI-TryBot-Result: Go LUCI Reviewed-by: David Chase Reviewed-by: Jake Bailey --- src/cmd/compile/internal/escape/call.go | 12 +++-- src/cmd/compile/internal/inline/inl.go | 17 ++++--- src/cmd/compile/internal/walk/expr.go | 4 +- src/hash/maphash/maphash.go | 18 ++----- src/internal/abi/escape.go | 32 +++++++++++++ src/unique/clone.go | 2 +- src/unique/handle_test.go | 6 +-- test/escape_unique.go | 62 +++++++++++++++++++++++++ 8 files changed, 119 insertions(+), 34 deletions(-) create mode 100644 test/escape_unique.go diff --git a/src/cmd/compile/internal/escape/call.go b/src/cmd/compile/internal/escape/call.go index a80e2707e2..58c44eb9bb 100644 --- a/src/cmd/compile/internal/escape/call.go +++ b/src/cmd/compile/internal/escape/call.go @@ -84,15 +84,19 @@ func (e *escape) call(ks []hole, call ir.Node) { argument(e.tagHole(ks, fn, param), arg) } - // hash/maphash.escapeForHash forces its argument to be on - // the heap, if it contains a non-string pointer. We cannot + // internal/abi.EscapeNonString forces its argument to be on + // the heap, if it contains a non-string pointer. + // This is used in hash/maphash.Comparable, where we cannot // hash pointers to local variables, as the address of the // local variable might change on stack growth. // Strings are okay as the hash depends on only the content, // not the pointer. + // This is also used in unique.clone, to model the data flow + // edge on the value with strings excluded, because strings + // are cloned (by content). // The actual call we match is - // hash/maphash.escapeForHash[go.shape.T](dict, go.shape.T) - if fn != nil && fn.Sym().Pkg.Path == "hash/maphash" && strings.HasPrefix(fn.Sym().Name, "escapeForHash[") { + // internal/abi.EscapeNonString[go.shape.T](dict, go.shape.T) + if fn != nil && fn.Sym().Pkg.Path == "internal/abi" && strings.HasPrefix(fn.Sym().Name, "EscapeNonString[") { ps := fntype.Params() if len(ps) == 2 && ps[1].Type.IsShape() { if !hasNonStringPointers(ps[1].Type) { diff --git a/src/cmd/compile/internal/inline/inl.go b/src/cmd/compile/internal/inline/inl.go index e3480c2463..8bba604214 100644 --- a/src/cmd/compile/internal/inline/inl.go +++ b/src/cmd/compile/internal/inline/inl.go @@ -454,6 +454,11 @@ opSwitch: // generate code. cheap = true } + if strings.HasPrefix(fn, "EscapeNonString[") { + // internal/abi.EscapeNonString[T] is a compiler intrinsic + // implemented in the escape analysis phase. + cheap = true + } case "internal/runtime/sys": switch fn { case "GetCallerPC", "GetCallerSP": @@ -472,12 +477,6 @@ opSwitch: case "panicrangestate": cheap = true } - case "hash/maphash": - if strings.HasPrefix(fn, "escapeForHash[") { - // hash/maphash.escapeForHash[T] is a compiler intrinsic - // implemented in the escape analysis phase. - cheap = true - } } } // Special case for coverage counter updates; although @@ -801,10 +800,10 @@ func inlineCallCheck(callerfn *ir.Func, call *ir.CallExpr) (bool, bool) { } } - // hash/maphash.escapeForHash[T] is a compiler intrinsic implemented + // internal/abi.EscapeNonString[T] is a compiler intrinsic implemented // in the escape analysis phase. - if fn := ir.StaticCalleeName(call.Fun); fn != nil && fn.Sym().Pkg.Path == "hash/maphash" && - strings.HasPrefix(fn.Sym().Name, "escapeForHash[") { + if fn := ir.StaticCalleeName(call.Fun); fn != nil && fn.Sym().Pkg.Path == "internal/abi" && + strings.HasPrefix(fn.Sym().Name, "EscapeNonString[") { return false, true } diff --git a/src/cmd/compile/internal/walk/expr.go b/src/cmd/compile/internal/walk/expr.go index 96087e16b7..6775bc4fc8 100644 --- a/src/cmd/compile/internal/walk/expr.go +++ b/src/cmd/compile/internal/walk/expr.go @@ -594,8 +594,8 @@ func walkCall(n *ir.CallExpr, init *ir.Nodes) ir.Node { if n.Op() == ir.OCALLFUNC { fn := ir.StaticCalleeName(n.Fun) - if fn != nil && fn.Sym().Pkg.Path == "hash/maphash" && strings.HasPrefix(fn.Sym().Name, "escapeForHash[") { - // hash/maphash.escapeForHash[T] is a compiler intrinsic + if fn != nil && fn.Sym().Pkg.Path == "internal/abi" && strings.HasPrefix(fn.Sym().Name, "EscapeNonString[") { + // internal/abi.EscapeNonString[T] is a compiler intrinsic // for the escape analysis to escape its argument based on // the type. The call itself is no-op. Just walk the // argument. diff --git a/src/hash/maphash/maphash.go b/src/hash/maphash/maphash.go index 5004539f07..d328cd3929 100644 --- a/src/hash/maphash/maphash.go +++ b/src/hash/maphash/maphash.go @@ -14,6 +14,7 @@ package maphash import ( "hash" + "internal/abi" "internal/byteorder" "math" ) @@ -293,26 +294,13 @@ func (h *Hash) Clone() (hash.Cloner, error) { // such that Comparable(s, v1) == Comparable(s, v2) if v1 == v2. // If v != v, then the resulting hash is randomly distributed. func Comparable[T comparable](seed Seed, v T) uint64 { - escapeForHash(v) + abi.EscapeNonString(v) return comparableHash(v, seed) } -// escapeForHash forces v to be on the heap, if v contains a -// non-string pointer. We cannot hash pointers to local variables, -// as the address of the local variable might change on stack growth. -// Strings are okay as the hash depends on only the content, not -// the pointer. -// -// This is essentially -// -// if hasNonStringPointers(T) { abi.Escape(v) } -// -// Implemented as a compiler intrinsic. -func escapeForHash[T comparable](v T) { panic("intrinsic") } - // WriteComparable adds x to the data hashed by h. func WriteComparable[T comparable](h *Hash, x T) { - escapeForHash(x) + abi.EscapeNonString(x) // writeComparable (not in purego mode) directly operates on h.state // without using h.buf. Mix in the buffer length so it won't // commute with a buffered write, which either changes h.n or changes diff --git a/src/internal/abi/escape.go b/src/internal/abi/escape.go index 8cdae1438e..d37be0177e 100644 --- a/src/internal/abi/escape.go +++ b/src/internal/abi/escape.go @@ -31,3 +31,35 @@ func Escape[T any](x T) T { } return x } + +// EscapeNonString forces v to be on the heap, if v contains a +// non-string pointer. +// +// This is used in hash/maphash.Comparable. We cannot hash pointers +// to local variables on stack, as their addresses might change on +// stack growth. Strings are okay as the hash depends on only the +// content, not the pointer. +// +// This is essentially +// +// if hasNonStringPointers(T) { Escape(v) } +// +// Implemented as a compiler intrinsic. +func EscapeNonString[T any](v T) { panic("intrinsic") } + +// EscapeToResultNonString models a data flow edge from v to the result, +// if v contains a non-string pointer. If v contains only string pointers, +// it returns a copy of v, but is not modeled as a data flow edge +// from the escape analysis's perspective. +// +// This is used in unique.clone, to model the data flow edge on the +// value with strings excluded, because strings are cloned (by +// content). +// +// TODO: probably we should define this as a intrinsic and EscapeNonString +// could just be "heap = EscapeToResultNonString(v)". This way we can model +// an edge to the result but not necessarily heap. +func EscapeToResultNonString[T any](v T) T { + EscapeNonString(v) + return *(*T)(NoEscape(unsafe.Pointer(&v))) +} diff --git a/src/unique/clone.go b/src/unique/clone.go index 36ced14ece..b67029b654 100644 --- a/src/unique/clone.go +++ b/src/unique/clone.go @@ -23,7 +23,7 @@ func clone[T comparable](value T, seq *cloneSeq) T { ps := (*string)(unsafe.Pointer(uintptr(unsafe.Pointer(&value)) + offset)) *ps = stringslite.Clone(*ps) } - return value + return abi.EscapeToResultNonString(value) } // singleStringClone describes how to clone a single string. diff --git a/src/unique/handle_test.go b/src/unique/handle_test.go index 20ab93b68d..5c42cb494c 100644 --- a/src/unique/handle_test.go +++ b/src/unique/handle_test.go @@ -227,7 +227,7 @@ func TestMakeAllocs(t *testing.T) { stringHandle = Make(heapString) }}, - {name: "stack string", allocs: 1, f: func() { + {name: "stack string", allocs: 0, f: func() { var b [16]byte b[8] = 'a' stringHandle = Make(string(b[:])) @@ -237,7 +237,7 @@ func TestMakeAllocs(t *testing.T) { stringHandle = Make(string(heapBytes)) }}, - {name: "bytes truncated short", allocs: 1, f: func() { + {name: "bytes truncated short", allocs: 0, f: func() { stringHandle = Make(string(heapBytes[:16])) }}, @@ -261,7 +261,7 @@ func TestMakeAllocs(t *testing.T) { pairHandle = Make([2]string{heapString, heapString}) }}, - {name: "pair from stack", allocs: 2, f: func() { + {name: "pair from stack", allocs: 0, f: func() { var b [16]byte b[8] = 'a' pairHandle = Make([2]string{string(b[:]), string(b[:])}) diff --git a/test/escape_unique.go b/test/escape_unique.go new file mode 100644 index 0000000000..78d6eeb777 --- /dev/null +++ b/test/escape_unique.go @@ -0,0 +1,62 @@ +// errorcheck -0 -m -l + +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Test escape analysis for unique. + +package escape + +import "unique" + +type T string + +func f1(s string) unique.Handle[string] { // ERROR "s does not escape$" + return unique.Make(s) +} + +func f1a(s []byte) unique.Handle[string] { // ERROR "s does not escape$" + return unique.Make(string(s)) // ERROR "string\(s\) does not escape$" +} + +func gen[S ~string](s S) unique.Handle[S] { + return unique.Make(s) +} + +func f2(s T) unique.Handle[T] { // ERROR "s does not escape$" + return unique.Make(s) +} + +func f3(s T) unique.Handle[T] { // ERROR "s does not escape$" + return gen(s) +} + +type pair struct { + s1 string + s2 string +} + +func f4(s1 string, s2 string) unique.Handle[pair] { // ERROR "s1 does not escape$" "s2 does not escape$" + return unique.Make(pair{s1, s2}) +} + +type viaInterface struct { + s any +} + +func f5(s string) unique.Handle[viaInterface] { // ERROR "leaking param: s$" + return unique.Make(viaInterface{s}) // ERROR "s escapes to heap$" +} + +var sink any + +func f6(s string) unique.Handle[string] { // ERROR "leaking param: s$" + sink = s // ERROR "s escapes to heap$" + return unique.Make(s) +} + +func f6a(s []byte) unique.Handle[string] { // ERROR "leaking param: s$" + sink = s // ERROR "s escapes to heap$" + return unique.Make(string(s)) // ERROR "string\(s\) does not escape$" +} From d2db2372a2fd79d539719fa13422d83d6fdfcda1 Mon Sep 17 00:00:00 2001 From: Cherry Mui Date: Wed, 21 May 2025 22:50:09 -0400 Subject: [PATCH 80/99] hash/maphash: move purego-only helper functions to build tagged file Hash.float64 and btoi helper functions are used only in the purego version. Move them to the build tagged file. Change-Id: I57f9a48966573ab0aee1de759eeddd2331967870 Reviewed-on: https://go-review.googlesource.com/c/go/+/675158 Reviewed-by: David Chase LUCI-TryBot-Result: Go LUCI --- src/hash/maphash/maphash.go | 24 ------------------------ src/hash/maphash/maphash_purego.go | 23 +++++++++++++++++++++++ 2 files changed, 23 insertions(+), 24 deletions(-) diff --git a/src/hash/maphash/maphash.go b/src/hash/maphash/maphash.go index d328cd3929..c6f3e62b5d 100644 --- a/src/hash/maphash/maphash.go +++ b/src/hash/maphash/maphash.go @@ -15,8 +15,6 @@ package maphash import ( "hash" "internal/abi" - "internal/byteorder" - "math" ) // A Seed is a random value that selects the specific hash function @@ -310,25 +308,3 @@ func WriteComparable[T comparable](h *Hash, x T) { } writeComparable(h, x) } - -func (h *Hash) float64(f float64) { - if f == 0 { - h.WriteByte(0) - return - } - var buf [8]byte - if f != f { - byteorder.LEPutUint64(buf[:], randUint64()) - h.Write(buf[:]) - return - } - byteorder.LEPutUint64(buf[:], math.Float64bits(f)) - h.Write(buf[:]) -} - -func btoi(b bool) byte { - if b { - return 1 - } - return 0 -} diff --git a/src/hash/maphash/maphash_purego.go b/src/hash/maphash/maphash_purego.go index 07b5eaa460..e286c5a5aa 100644 --- a/src/hash/maphash/maphash_purego.go +++ b/src/hash/maphash/maphash_purego.go @@ -10,6 +10,7 @@ import ( "crypto/rand" "errors" "internal/byteorder" + "math" "math/bits" "reflect" ) @@ -175,3 +176,25 @@ func appendT(h *Hash, v reflect.Value) { } panic(errors.New("maphash: hash of unhashable type " + v.Type().String())) } + +func (h *Hash) float64(f float64) { + if f == 0 { + h.WriteByte(0) + return + } + var buf [8]byte + if f != f { + byteorder.LEPutUint64(buf[:], randUint64()) + h.Write(buf[:]) + return + } + byteorder.LEPutUint64(buf[:], math.Float64bits(f)) + h.Write(buf[:]) +} + +func btoi(b bool) byte { + if b { + return 1 + } + return 0 +} From 27ff0f249c33fdfa9c8e17a0367b46561236f36c Mon Sep 17 00:00:00 2001 From: Jake Bailey Date: Mon, 12 May 2025 20:39:54 -0700 Subject: [PATCH 81/99] cmd/compile/internal/ssa: eliminate string copies for calls to unique.Make unique.Make always copies strings passed into it, so it's safe to not copy byte slices converted to strings either. Handle this just like map accesses with string(b) as keys. This CL only handles unique.Make(string(b)), not nested cases like unique.Make([2]string{string(b1), string(b2)}); this could be done in a followup CL but the map lookup code in walk is sufficiently different than the call handling code that I didn't attempt it. (SSA is much easier). Fixes #71926 Change-Id: Ic2f82f2f91963d563b4ddb1282bd49fc40da8b85 Reviewed-on: https://go-review.googlesource.com/c/go/+/672135 Reviewed-by: David Chase Reviewed-by: Cherry Mui LUCI-TryBot-Result: Go LUCI --- .../compile/internal/ssa/_gen/generic.rules | 11 ++++++ .../compile/internal/ssa/rewritegeneric.go | 35 +++++++++++++++++++ src/unique/handle_test.go | 4 +-- test/codegen/unique.go | 24 +++++++++++++ 4 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 test/codegen/unique.go diff --git a/src/cmd/compile/internal/ssa/_gen/generic.rules b/src/cmd/compile/internal/ssa/_gen/generic.rules index baa26133fe..b178a1add6 100644 --- a/src/cmd/compile/internal/ssa/_gen/generic.rules +++ b/src/cmd/compile/internal/ssa/_gen/generic.rules @@ -2832,3 +2832,14 @@ && clobber(sbts) && clobber(key) => (StaticLECall {f} [argsize] typ_ map_ (StringMake ptr len) mem) + +// Similarly to map lookups, also handle unique.Make for strings, which unique.Make will clone. +(StaticLECall {f} [argsize] dict_ key:(SelectN [0] sbts:(StaticLECall {g} _ ptr len mem)) m:(SelectN [1] sbts)) + && isSameCall(f, "unique.Make[go.shape.string]") + && isSameCall(g, "runtime.slicebytetostring") + && key.Uses == 1 + && sbts.Uses == 2 + && resetCopy(m, mem) + && clobber(sbts) + && clobber(key) +=> (StaticLECall {f} [argsize] dict_ (StringMake ptr len) mem) diff --git a/src/cmd/compile/internal/ssa/rewritegeneric.go b/src/cmd/compile/internal/ssa/rewritegeneric.go index b8866cc562..bfbd3c8522 100644 --- a/src/cmd/compile/internal/ssa/rewritegeneric.go +++ b/src/cmd/compile/internal/ssa/rewritegeneric.go @@ -30743,6 +30743,41 @@ func rewriteValuegeneric_OpStaticLECall(v *Value) bool { v.AddArg4(typ_, map_, v0, mem) return true } + // match: (StaticLECall {f} [argsize] dict_ key:(SelectN [0] sbts:(StaticLECall {g} _ ptr len mem)) m:(SelectN [1] sbts)) + // cond: isSameCall(f, "unique.Make[go.shape.string]") && isSameCall(g, "runtime.slicebytetostring") && key.Uses == 1 && sbts.Uses == 2 && resetCopy(m, mem) && clobber(sbts) && clobber(key) + // result: (StaticLECall {f} [argsize] dict_ (StringMake ptr len) mem) + for { + if len(v.Args) != 3 { + break + } + argsize := auxIntToInt32(v.AuxInt) + f := auxToCall(v.Aux) + _ = v.Args[2] + dict_ := v.Args[0] + key := v.Args[1] + if key.Op != OpSelectN || auxIntToInt64(key.AuxInt) != 0 { + break + } + sbts := key.Args[0] + if sbts.Op != OpStaticLECall || len(sbts.Args) != 4 { + break + } + g := auxToCall(sbts.Aux) + mem := sbts.Args[3] + ptr := sbts.Args[1] + len := sbts.Args[2] + m := v.Args[2] + if m.Op != OpSelectN || auxIntToInt64(m.AuxInt) != 1 || sbts != m.Args[0] || !(isSameCall(f, "unique.Make[go.shape.string]") && isSameCall(g, "runtime.slicebytetostring") && key.Uses == 1 && sbts.Uses == 2 && resetCopy(m, mem) && clobber(sbts) && clobber(key)) { + break + } + v.reset(OpStaticLECall) + v.AuxInt = int32ToAuxInt(argsize) + v.Aux = callToAux(f) + v0 := b.NewValue0(v.Pos, OpStringMake, typ.String) + v0.AddArg2(ptr, len) + v.AddArg3(dict_, v0, mem) + return true + } return false } func rewriteValuegeneric_OpStore(v *Value) bool { diff --git a/src/unique/handle_test.go b/src/unique/handle_test.go index 5c42cb494c..4c7f1f9752 100644 --- a/src/unique/handle_test.go +++ b/src/unique/handle_test.go @@ -233,7 +233,7 @@ func TestMakeAllocs(t *testing.T) { stringHandle = Make(string(b[:])) }}, - {name: "bytes", allocs: 1, f: func() { + {name: "bytes", allocs: 0, f: func() { stringHandle = Make(string(heapBytes)) }}, @@ -241,7 +241,7 @@ func TestMakeAllocs(t *testing.T) { stringHandle = Make(string(heapBytes[:16])) }}, - {name: "bytes truncated long", allocs: 1, f: func() { + {name: "bytes truncated long", allocs: 0, f: func() { stringHandle = Make(string(heapBytes[:40])) }}, diff --git a/test/codegen/unique.go b/test/codegen/unique.go new file mode 100644 index 0000000000..8ddc986c26 --- /dev/null +++ b/test/codegen/unique.go @@ -0,0 +1,24 @@ +// asmcheck + +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package codegen + +import "unique" + +func BytesToHandle(b []byte) unique.Handle[string] { + // amd64:-`.*runtime\.slicebytetostring\(` + return unique.Make(string(b)) +} + +type Pair struct { + S1 string + S2 string +} + +func BytesPairToHandle(b1, b2 []byte) unique.Handle[Pair] { + // TODO: should not copy b1 and b2. + return unique.Make(Pair{string(b1), string(b2)}) +} From 53b9eae3875122a65b387adf18c5cb7a67e824d7 Mon Sep 17 00:00:00 2001 From: Michael Anthony Knyszek Date: Tue, 20 May 2025 20:56:46 +0000 Subject: [PATCH 82/99] runtime: use the immortal weak handle map for sbrk mode Currently weak pointers break in sbrk mode. We can just use the immortal weak handle map for weak pointers in this case, since nothing is ever freed. Fixes #69729. Change-Id: Ie9fa7e203c22776dc9eb3601c6480107d9ad0c99 Reviewed-on: https://go-review.googlesource.com/c/go/+/674656 Reviewed-by: Carlos Amedee Auto-Submit: Michael Knyszek TryBot-Bypass: Michael Knyszek --- src/runtime/mheap.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/runtime/mheap.go b/src/runtime/mheap.go index 0729184e22..3612d71e66 100644 --- a/src/runtime/mheap.go +++ b/src/runtime/mheap.go @@ -2545,6 +2545,16 @@ func gcWakeAllStrongFromWeak() { // Retrieves or creates a weak pointer handle for the object p. func getOrAddWeakHandle(p unsafe.Pointer) *atomic.Uintptr { + if debug.sbrk != 0 { + // debug.sbrk never frees memory, so it'll never go nil. However, we do still + // need a weak handle that's specific to p. Use the immortal weak handle map. + // Keep p alive across the call to getOrAdd defensively, though it doesn't + // really matter in this particular case. + handle := mheap_.immortalWeakHandles.getOrAdd(uintptr(p)) + KeepAlive(p) + return handle + } + // First try to retrieve without allocating. if handle := getWeakHandle(p); handle != nil { // Keep p alive for the duration of the function to ensure From a0dc7bf08481d906cb7d65d86bb347a583d84fd0 Mon Sep 17 00:00:00 2001 From: Cuong Manh Le Date: Thu, 22 May 2025 18:06:27 +0700 Subject: [PATCH 83/99] cmd/compile: fix ICE when transforming loopvar When transforming for loop variables, the compiler does roughly following steps: (1) prebody = {z := z' for z in leaked} ... (4) init' = (init : s/z/z' for z in leaked) However, the definition of z is not updated to `z := z'` statement, causing ReassignOracle incorrectly use the new init statement with z' instead of z, trigger the ICE. Fixing this by updating the correct/new definition statement for z during the prebody initialization. Fixes #73823 Change-Id: Ice2a6741be7478506c58f4000f591d5582029136 Reviewed-on: https://go-review.googlesource.com/c/go/+/675475 Auto-Submit: Cuong Manh Le LUCI-TryBot-Result: Go LUCI Reviewed-by: Keith Randall Reviewed-by: David Chase --- src/cmd/compile/internal/loopvar/loopvar.go | 1 + test/fixedbugs/issue73823.go | 58 +++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 test/fixedbugs/issue73823.go diff --git a/src/cmd/compile/internal/loopvar/loopvar.go b/src/cmd/compile/internal/loopvar/loopvar.go index 030fc04c13..5a4590d299 100644 --- a/src/cmd/compile/internal/loopvar/loopvar.go +++ b/src/cmd/compile/internal/loopvar/loopvar.go @@ -305,6 +305,7 @@ func ForCapture(fn *ir.Func) []VarAndLoop { as := ir.NewAssignStmt(x.Pos(), z, tz) as.Def = true as.SetTypecheck(1) + z.Defn = as preBody.Append(as) dclFixups[z] = as diff --git a/test/fixedbugs/issue73823.go b/test/fixedbugs/issue73823.go new file mode 100644 index 0000000000..2f66266254 --- /dev/null +++ b/test/fixedbugs/issue73823.go @@ -0,0 +1,58 @@ +// compile + +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package p + +type Backend interface { + Hash(ignores func(bucketName, keyName []byte) bool) (uint32, error) +} + +type backend struct { +} + +func first() (key []byte, value []byte) { + return +} + +func (b *backend) View(fn func() error) error { + return nil +} + +func (b *backend) Hash(ignores func(bucketName, keyName []byte) bool) (uint32, error) { + err := b.View(func() error { + for next, _ := first(); next != nil; next, _ = first() { + _ = next + } + return nil + }) + return 0, err +} + +func defragdb() error { + for next, _ := first(); next != nil; next, _ = first() { + _ = f(next) + ForEach(func(k, v []byte) error { + _ = next + return nil + }) + } + + return nil +} + +func ForEach(fn func(k, v []byte) error) error { + for k, v := first(); k != nil; k, v = first() { + if err := fn(k, v); err != nil { + return err + } + } + return nil +} + +//go:noinline +func f(any) string { + return "" +} From ef3bb638de442dc41d1e34a32e893d2041731e8c Mon Sep 17 00:00:00 2001 From: Michael Matloob Date: Thu, 22 May 2025 09:12:48 -0700 Subject: [PATCH 84/99] Revert "cmd/doc: better support for no network" This reverts commit 988eb0d11e8d96e8ca150f401ed82326b276f653. Reason for revert: breaks viewing documentation for unfetched modules For #73833 Change-Id: I89bc459e820c85e96837d1707058501488a14eef Reviewed-on: https://go-review.googlesource.com/c/go/+/675575 Reviewed-by: Jonathan Amsterdam LUCI-TryBot-Result: Go LUCI Reviewed-by: Michael Matloob --- src/cmd/doc/main.go | 10 +--------- src/cmd/go/internal/load/pkg.go | 2 +- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/src/cmd/doc/main.go b/src/cmd/doc/main.go index 22db39ecc9..ccd8512006 100644 --- a/src/cmd/doc/main.go +++ b/src/cmd/doc/main.go @@ -259,18 +259,10 @@ func doPkgsite(urlPath string) error { signal.Ignore(signalsToIgnore...) const version = "v0.0.0-20250520201116-40659211760d" - docatversion := "golang.org/x/pkgsite/cmd/internal/doc@" + version - // First download the module and then try to run with GOPROXY=off to circumvent - // the deprecation check. This will allow the pkgsite command to run if it's - // in the module cache but there's no network. - if _, err := runCmd(nil, "go", "mod", "download", docatversion); err != nil { - return err - } - cmd := exec.Command("go", "run", docatversion, + cmd := exec.Command("go", "run", "golang.org/x/pkgsite/cmd/internal/doc@"+version, "-gorepo", buildCtx.GOROOT, "-http", addr, "-open", path) - cmd.Env = append(os.Environ(), "GOPROXY=off") cmd.Stdout = os.Stderr cmd.Stderr = os.Stderr diff --git a/src/cmd/go/internal/load/pkg.go b/src/cmd/go/internal/load/pkg.go index 34e8c90b2f..e913f98852 100644 --- a/src/cmd/go/internal/load/pkg.go +++ b/src/cmd/go/internal/load/pkg.go @@ -3410,7 +3410,7 @@ func PackagesAndErrorsOutsideModule(ctx context.Context, opts PackageOpts, args } rootMod := qrs[0].Mod deprecation, err := modload.CheckDeprecation(ctx, rootMod) - if err != nil && !errors.Is(err, fs.ErrNotExist) { + if err != nil { return nil, fmt.Errorf("%s: %w", args[0], err) } if deprecation != "" { From 155ba387a93fddbd6ced288fe539a55c31b2597e Mon Sep 17 00:00:00 2001 From: Michael Matloob Date: Thu, 22 May 2025 12:40:51 -0400 Subject: [PATCH 85/99] cmd/doc: properly set GOPROXY to avoid deprecation checks This change fixes a bug that was introduced in CL 675155. Instead of doing the two step download and run with GOPROXY=off, do the run with GOPROXY=:$GOPROXY, so that we use the previously downloaded version of pkgsite as the latest. Fixes #73833 Change-Id: I8803426498ab026602805d6448a130eb11458c99 Reviewed-on: https://go-review.googlesource.com/c/go/+/675576 Reviewed-by: Jonathan Amsterdam Reviewed-by: Michael Matloob LUCI-TryBot-Result: Go LUCI --- src/cmd/doc/main.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/cmd/doc/main.go b/src/cmd/doc/main.go index ccd8512006..490337a0b4 100644 --- a/src/cmd/doc/main.go +++ b/src/cmd/doc/main.go @@ -258,11 +258,22 @@ func doPkgsite(urlPath string) error { // exit before exiting ourselves. signal.Ignore(signalsToIgnore...) + // Prepend the local download cache to GOPROXY to get around deprecation checks. + env := os.Environ() + vars, err := runCmd(nil, "go", "env", "GOPROXY", "GOMODCACHE") + fields := strings.Fields(vars) + if err == nil && len(fields) == 2 { + goproxy, gomodcache := fields[0], fields[1] + goproxy = "file://" + filepath.Join(gomodcache, "cache", "download") + "," + goproxy + env = append(env, "GOPROXY="+goproxy) + } + const version = "v0.0.0-20250520201116-40659211760d" cmd := exec.Command("go", "run", "golang.org/x/pkgsite/cmd/internal/doc@"+version, "-gorepo", buildCtx.GOROOT, "-http", addr, "-open", path) + cmd.Env = env cmd.Stdout = os.Stderr cmd.Stderr = os.Stderr From b1f259b1b42f055863a67492e7815ec752eae56b Mon Sep 17 00:00:00 2001 From: Cuong Manh Le Date: Fri, 25 Apr 2025 19:13:52 +0700 Subject: [PATCH 86/99] cmd/compile: fix ICE with recursive alias type parameter CL 585399 fixed an initialization loop during IR contruction that involving alias type, by avoiding publishing alias declarations until the RHS type expression has been constructed. There's an assertion to ensure that the alias's type must be the same during the initialization. However, that assertion is too strict, since we may construct different instances of the same type, if the type is an instantination of generic type. To fix this, we could use types.IdenticalStrict to ensure that these types matching exactly. Updates #66873. Updates #73309. Change-Id: I2559bed37e21615854333fb1057d7349406e6a1b Reviewed-on: https://go-review.googlesource.com/c/go/+/668175 Reviewed-by: David Chase Reviewed-by: Keith Randall Auto-Submit: Cuong Manh Le LUCI-TryBot-Result: Go LUCI Reviewed-by: Keith Randall --- src/cmd/compile/internal/noder/reader.go | 2 +- src/cmd/compile/internal/types2/stdlib_test.go | 1 + src/go/types/stdlib_test.go | 1 + test/fixedbugs/issue73309.go | 18 ++++++++++++++++++ 4 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 test/fixedbugs/issue73309.go diff --git a/src/cmd/compile/internal/noder/reader.go b/src/cmd/compile/internal/noder/reader.go index 05052651c6..95054a4f8b 100644 --- a/src/cmd/compile/internal/noder/reader.go +++ b/src/cmd/compile/internal/noder/reader.go @@ -762,7 +762,7 @@ func (pr *pkgReader) objIdxMayFail(idx index, implicits, explicits []*types.Type if hack { if sym.Def != nil { name = sym.Def.(*ir.Name) - assert(name.Type() == typ) + assert(types.IdenticalStrict(name.Type(), typ)) return name, nil } sym.Def = name diff --git a/src/cmd/compile/internal/types2/stdlib_test.go b/src/cmd/compile/internal/types2/stdlib_test.go index 6966bb94b0..4de698baaf 100644 --- a/src/cmd/compile/internal/types2/stdlib_test.go +++ b/src/cmd/compile/internal/types2/stdlib_test.go @@ -332,6 +332,7 @@ func TestStdFixed(t *testing.T) { "issue49814.go", // go/types does not have constraints on array size "issue56103.go", // anonymous interface cycles; will be a type checker error in 1.22 "issue52697.go", // types2 does not have constraints on stack size + "issue73309.go", // this test requires GODEBUG=gotypesalias=1 // These tests requires runtime/cgo.Incomplete, which is only available on some platforms. // However, types2 does not know about build constraints. diff --git a/src/go/types/stdlib_test.go b/src/go/types/stdlib_test.go index ec76f8ee17..633d7be84d 100644 --- a/src/go/types/stdlib_test.go +++ b/src/go/types/stdlib_test.go @@ -334,6 +334,7 @@ func TestStdFixed(t *testing.T) { "issue49814.go", // go/types does not have constraints on array size "issue56103.go", // anonymous interface cycles; will be a type checker error in 1.22 "issue52697.go", // go/types does not have constraints on stack size + "issue73309.go", // this test requires GODEBUG=gotypesalias=1 // These tests requires runtime/cgo.Incomplete, which is only available on some platforms. // However, go/types does not know about build constraints. diff --git a/test/fixedbugs/issue73309.go b/test/fixedbugs/issue73309.go new file mode 100644 index 0000000000..5e96e6513b --- /dev/null +++ b/test/fixedbugs/issue73309.go @@ -0,0 +1,18 @@ +// compile + +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package main + +type B[T any] struct { + a A[T] +} + +type A[T any] = func(B[T]) bool + +func main() { + var s A[int] + println(s) +} From bfbf736564925fd91701a08395f903955cb4cbc7 Mon Sep 17 00:00:00 2001 From: Cuong Manh Le Date: Fri, 10 Jan 2025 12:49:59 +0700 Subject: [PATCH 87/99] cmd/compile: do not shapify when reading reshaping expr Fixes #71184 Change-Id: I22e7ae5203311e86a90502bfe155b0597007887d Reviewed-on: https://go-review.googlesource.com/c/go/+/641955 Auto-Submit: Cuong Manh Le Reviewed-by: Keith Randall LUCI-TryBot-Result: Go LUCI Reviewed-by: Keith Randall Reviewed-by: David Chase --- src/cmd/compile/internal/noder/reader.go | 15 ++++++++++++++- test/fixedbugs/issue71184.go | 17 +++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 test/fixedbugs/issue71184.go diff --git a/src/cmd/compile/internal/noder/reader.go b/src/cmd/compile/internal/noder/reader.go index 95054a4f8b..c854619897 100644 --- a/src/cmd/compile/internal/noder/reader.go +++ b/src/cmd/compile/internal/noder/reader.go @@ -49,6 +49,9 @@ type pkgReader struct { // but bitwise inverted so we can detect if we're missing the entry // or not. newindex []index + + // indicates whether the data is reading during reshaping. + reshaping bool } func newPkgReader(pr pkgbits.PkgDecoder) *pkgReader { @@ -116,6 +119,10 @@ type reader struct { // find parameters/results. funarghack bool + // reshaping is used during reading exprReshape code, preventing + // the reader from shapifying the re-shaped type. + reshaping bool + // methodSym is the name of method's name, if reading a method. // It's nil if reading a normal function or closure body. methodSym *types.Sym @@ -1007,7 +1014,7 @@ func (pr *pkgReader) objDictIdx(sym *types.Sym, idx index, implicits, explicits // arguments. for i, targ := range dict.targs { basic := r.Bool() - if dict.shaped { + if dict.shaped && !pr.reshaping { dict.targs[i] = shapify(targ, basic) } } @@ -2445,7 +2452,10 @@ func (r *reader) expr() (res ir.Node) { case exprReshape: typ := r.typ() + old := r.reshaping + r.reshaping = true x := r.expr() + r.reshaping = old if types.IdenticalStrict(x.Type(), typ) { return x @@ -2568,7 +2578,10 @@ func (r *reader) funcInst(pos src.XPos) (wrapperFn, baseFn, dictPtr ir.Node) { info := r.dict.subdicts[idx] explicits := r.p.typListIdx(info.explicits, r.dict) + old := r.p.reshaping + r.p.reshaping = r.reshaping baseFn = r.p.objIdx(info.idx, implicits, explicits, true).(*ir.Name) + r.p.reshaping = old // TODO(mdempsky): Is there a more robust way to get the // dictionary pointer type here? diff --git a/test/fixedbugs/issue71184.go b/test/fixedbugs/issue71184.go new file mode 100644 index 0000000000..74afc53f8a --- /dev/null +++ b/test/fixedbugs/issue71184.go @@ -0,0 +1,17 @@ +// compile + +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package x + +func F[T int32]() { + _ = G[*[0]T]()[:] +} + +func G[T any]() (v T) { + return +} + +var _ = F[int32] From c684dfcb8a8fe38a8414bfd07b94e9995e5cd308 Mon Sep 17 00:00:00 2001 From: Michael Anthony Knyszek Date: Thu, 22 May 2025 00:29:14 +0000 Subject: [PATCH 88/99] runtime: don't spin looking for a tiny alloc address with asan or race CL 674655 modified the checkfinalizers test to spin looking for an appropriate address to trip the detector, but this doesn't work with ASAN or in race mode, which both disable the tiny allocator. Fixes #73834. Change-Id: I27416da1f29cd953271698551e9ce9724484c683 Reviewed-on: https://go-review.googlesource.com/c/go/+/675395 LUCI-TryBot-Result: Go LUCI Reviewed-by: Michael Pratt --- .../testdata/testprog/checkfinalizers.go | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/src/runtime/testdata/testprog/checkfinalizers.go b/src/runtime/testdata/testprog/checkfinalizers.go index a2fe104462..ea352a4e3e 100644 --- a/src/runtime/testdata/testprog/checkfinalizers.go +++ b/src/runtime/testdata/testprog/checkfinalizers.go @@ -5,6 +5,8 @@ package main import ( + "internal/asan" + "internal/race" "runtime" "runtime/debug" "unsafe" @@ -39,20 +41,25 @@ func DetectFinalizerAndCleanupLeaks() { **cNoLeak = x }, int(0)).Stop() - // Ensure we create an allocation into a tiny block that shares space among several values. - var ctLeak *tiny - for { - tinySink = ctLeak - ctLeak = new(tiny) - *ctLeak = tiny(55) - // Make sure the address is an odd value. This is sufficient to - // be certain that we're sharing a block with another value and - // trip the detector. - if uintptr(unsafe.Pointer(ctLeak))%2 != 0 { - break + if !asan.Enabled && !race.Enabled { + // Ensure we create an allocation into a tiny block that shares space among several values. + // + // Don't do this with ASAN and in race mode, where the tiny allocator is disabled. + // We might just loop forever here in that case. + var ctLeak *tiny + for { + tinySink = ctLeak + ctLeak = new(tiny) + *ctLeak = tiny(55) + // Make sure the address is an odd value. This is sufficient to + // be certain that we're sharing a block with another value and + // trip the detector. + if uintptr(unsafe.Pointer(ctLeak))%2 != 0 { + break + } } + runtime.AddCleanup(ctLeak, func(_ struct{}) {}, struct{}{}) } - runtime.AddCleanup(ctLeak, func(_ struct{}) {}, struct{}{}) // Leak a finalizer. fLeak := new(T) From aec96d686be16fda519f6fd4a6e3bbfe3454c0b9 Mon Sep 17 00:00:00 2001 From: Keith Randall Date: Wed, 16 Apr 2025 13:50:44 -0700 Subject: [PATCH 89/99] doc: mention stack allocation of variable-sized make calls Also mention the bisect tool and flag used to track down incorrect uses. Change-Id: Id36a236e1bb2733b8611b22a5b16916e7d9f5522 Reviewed-on: https://go-review.googlesource.com/c/go/+/666075 Reviewed-by: Dmitri Shuralyov Reviewed-by: Keith Randall Reviewed-by: Dmitri Shuralyov LUCI-TryBot-Result: Go LUCI --- doc/next/5-toolchain.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/doc/next/5-toolchain.md b/doc/next/5-toolchain.md index c270e9dfc9..3708700c93 100644 --- a/doc/next/5-toolchain.md +++ b/doc/next/5-toolchain.md @@ -38,6 +38,18 @@ successfully in Go 1.25. If this change is affecting your code, the solution is the non-nil error check earlier in your code, preferably immediately after the error-generating statement. + + +The compiler can now allocate the backing store for slices on the +stack in more situations, which improves performance. This change has +the potential to amplify the effects of incorrect +[unsafe.Pointer](/pkg/unsafe#Pointer) usage, see for example [issue +73199](/issue/73199). In order to track down these problems, the +[bisect tool](https://pkg.go.dev/golang.org/x/tools/cmd/bisect) can be +used to find the allocation causing trouble using the +`-compile=variablemake` flag. All such new stack allocations can also +be turned off using `-gcflags=all=-d=variablemakehash=n`. + ## Assembler {#assembler} ## Linker {#linker} From db55b83ce437577c0738f56808853b078d656a0b Mon Sep 17 00:00:00 2001 From: Keith Randall Date: Thu, 22 May 2025 15:17:37 -0700 Subject: [PATCH 90/99] doc: fix TBD mark Change-Id: I2133e3c62b4de0cec08eeb120d593c644643a62c Reviewed-on: https://go-review.googlesource.com/c/go/+/675755 Reviewed-by: Dmitri Shuralyov Auto-Submit: Dmitri Shuralyov Reviewed-by: Keith Randall LUCI-TryBot-Result: Go LUCI Reviewed-by: Dmitri Shuralyov --- doc/next/5-toolchain.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/next/5-toolchain.md b/doc/next/5-toolchain.md index 3708700c93..84a7624bb5 100644 --- a/doc/next/5-toolchain.md +++ b/doc/next/5-toolchain.md @@ -38,7 +38,7 @@ successfully in Go 1.25. If this change is affecting your code, the solution is the non-nil error check earlier in your code, preferably immediately after the error-generating statement. - + The compiler can now allocate the backing store for slices on the stack in more situations, which improves performance. This change has From db3e02994c98f1d6dc00f7df807579c4619885c7 Mon Sep 17 00:00:00 2001 From: Carlos Amedee Date: Thu, 22 May 2025 13:33:28 -0400 Subject: [PATCH 91/99] runtime/trace: fix flaky test for SetMinAge This change fixes the flaky test which expects setting SetMinAge to a small ammount. It expects two sync events but should realistically expect up to 3. Change-Id: Ibd02fe55ebca99eb880025eb968fcebae9cb09c9 Reviewed-on: https://go-review.googlesource.com/c/go/+/675597 Reviewed-by: Michael Knyszek LUCI-TryBot-Result: Go LUCI --- src/runtime/trace/flightrecorder_test.go | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/runtime/trace/flightrecorder_test.go b/src/runtime/trace/flightrecorder_test.go index 075215db00..61cb03dcf6 100644 --- a/src/runtime/trace/flightrecorder_test.go +++ b/src/runtime/trace/flightrecorder_test.go @@ -170,7 +170,7 @@ func TestFlightRecorderLog(t *testing.T) { } } -func TestFlightRecorderOneGeneration(t *testing.T) { +func TestFlightRecorderGenerationCount(t *testing.T) { test := func(t *testing.T, fr *trace.FlightRecorder) { tr := testFlightRecorder(t, fr, func(snapshot func()) { // Sleep to let a few generations pass. @@ -184,7 +184,7 @@ func TestFlightRecorderOneGeneration(t *testing.T) { t.Fatalf("unexpected error creating trace reader: %v", err) } - // Make sure there are exactly two Sync events: at the start and end. + // Make sure there are Sync events: at the start and end. var syncs []int evs := 0 for { @@ -200,13 +200,18 @@ func TestFlightRecorderOneGeneration(t *testing.T) { } evs++ } - if ends := []int{0, evs - 1}; !slices.Equal(syncs, ends) { - t.Errorf("expected two sync events (one at each end of the trace), found %d at %d instead of %d", - len(syncs), syncs[:min(len(syncs), 5)], ends) + const wantMaxSyncs = 3 + if len(syncs) > wantMaxSyncs { + t.Errorf("expected at most %d sync events, found %d at %d", + wantMaxSyncs, len(syncs), syncs) + } + ends := []int{syncs[0], syncs[len(syncs)-1]} + if wantEnds := []int{0, evs - 1}; !slices.Equal(wantEnds, ends) { + t.Errorf("expected a sync event at each end of the trace, found sync events at %d instead of %d", + ends, wantEnds) } } - t.Run("SetMinAge", func(t *testing.T) { - t.Skip("issue 63185: flaky test") + t.Run("MinAge", func(t *testing.T) { fr := trace.NewFlightRecorder(trace.FlightRecorderConfig{MinAge: time.Millisecond}) test(t, fr) }) From c0e149b6b1aa2daca64c00804809bc2279e21eee Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Fri, 23 May 2025 12:44:24 +0200 Subject: [PATCH 92/99] net/http: document that ServeMux.Handler can also synthetize a 405 Also, fix a minor typo in ServeMux.Handle and ServeMux.HandleFunc. Change-Id: I6a6a46565719104cb8f2484daf0e39f35b55a078 Reviewed-on: https://go-review.googlesource.com/c/go/+/675835 Reviewed-by: David Chase Auto-Submit: Filippo Valsorda Reviewed-by: Damien Neil LUCI-TryBot-Result: Go LUCI --- src/net/http/server.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/net/http/server.go b/src/net/http/server.go index ca7383f5e6..1ca5a227ef 100644 --- a/src/net/http/server.go +++ b/src/net/http/server.go @@ -2674,7 +2674,8 @@ func stripHostPort(h string) string { // the path that will match after following the redirect. // // If there is no registered handler that applies to the request, -// Handler returns a “page not found” handler and an empty pattern. +// Handler returns a “page not found” or “method not supported” +// handler and an empty pattern. // // Handler does not modify its argument. In particular, it does not // populate named path wildcards, so r.PathValue will always return @@ -2864,7 +2865,7 @@ func (mux *ServeMux) ServeHTTP(w ResponseWriter, r *Request) { // always refers to user code. // Handle registers the handler for the given pattern. -// If the given pattern conflicts, with one that is already registered, Handle +// If the given pattern conflicts with one that is already registered, Handle // panics. func (mux *ServeMux) Handle(pattern string, handler Handler) { if use121 { @@ -2875,7 +2876,7 @@ func (mux *ServeMux) Handle(pattern string, handler Handler) { } // HandleFunc registers the handler function for the given pattern. -// If the given pattern conflicts, with one that is already registered, HandleFunc +// If the given pattern conflicts with one that is already registered, HandleFunc // panics. func (mux *ServeMux) HandleFunc(pattern string, handler func(ResponseWriter, *Request)) { if use121 { From 8b1978f6143f211e1d7ed1599c1b64e3f44a1c80 Mon Sep 17 00:00:00 2001 From: David Chase Date: Fri, 23 May 2025 14:49:13 -0400 Subject: [PATCH 93/99] doc/next: add crudely processed todos This is the output of relnote -goroot=... todo, with each todo in a comment, followed by summary text from the issue and perhaps the CL, lightly processed into markdown. For #71661. Change-Id: I855c4c4ee02491b5b6113822baf69dbafb4e54ab Reviewed-on: https://go-review.googlesource.com/c/go/+/675877 Reviewed-by: Dmitri Shuralyov Reviewed-by: Dmitri Shuralyov LUCI-TryBot-Result: Go LUCI --- api/next/63796.txt | 2 +- doc/next/6-stdlib/1-synctest.md | 1 + .../99-minor/sync/{63769.md => 63796.md} | 0 doc/next/9-todo.md | 202 ++++++++++++++++++ 4 files changed, 204 insertions(+), 1 deletion(-) rename doc/next/6-stdlib/99-minor/sync/{63769.md => 63796.md} (100%) create mode 100644 doc/next/9-todo.md diff --git a/api/next/63796.txt b/api/next/63796.txt index 624ee9db3b..bb1a4b4858 100644 --- a/api/next/63796.txt +++ b/api/next/63796.txt @@ -1 +1 @@ -pkg sync, method (*WaitGroup) Go(func()) #63769 +pkg sync, method (*WaitGroup) Go(func()) #63796 diff --git a/doc/next/6-stdlib/1-synctest.md b/doc/next/6-stdlib/1-synctest.md index 4f3cce8222..0a34930470 100644 --- a/doc/next/6-stdlib/1-synctest.md +++ b/doc/next/6-stdlib/1-synctest.md @@ -1,5 +1,6 @@ ### New testing/synctest package + The new [testing/synctest](/pkg/testing/synctest) package provides support for testing concurrent code. diff --git a/doc/next/6-stdlib/99-minor/sync/63769.md b/doc/next/6-stdlib/99-minor/sync/63796.md similarity index 100% rename from doc/next/6-stdlib/99-minor/sync/63769.md rename to doc/next/6-stdlib/99-minor/sync/63796.md diff --git a/doc/next/9-todo.md b/doc/next/9-todo.md new file mode 100644 index 0000000000..a6861d176b --- /dev/null +++ b/doc/next/9-todo.md @@ -0,0 +1,202 @@ + + + +all: implement plugin build mode for riscv64 + + +cmd/link/internal/ld: introduce -funcalign=N option +This patch adds linker option -funcalign=N that allows to set alignment +for function entries. +For \#72130. + + +cmd/fix: automate migrations for simple deprecations + + +cmd/go: allow serving module under the subdirectory of git repository +cmd/go: add subdirectory support to go-import meta tag +This CL adds ability to specify a subdirectory in the go-import meta tag. +A go-import meta tag now will support: +\ +Fixes: \#34055 + + +cmd/go: add global ignore mechanism for Go tooling ecosystem + + +cmd/cover: extend coverage testing to include applications + + +all: add GOARM64=v8.1 and so on +runtime: check LSE support on ARM64 at runtime init +Check presence of LSE support on ARM64 chip if we targeted it at compile +time. +Related to \#69124 +Updates \#60905 +Fixes \#71411 + + +all: add GORISCV64 environment variable +cmd/go: add rva23u64 as a valid value for GORISCV64 +The RVA23 profile was ratified on the 21st of October 2024. +https://riscv.org/announcements/2024/10/risc-v-announces-ratification-of-the-rva23-profile-standard/ +Now that it's ratified we can add rva23u64 as a valid value for the +GORISCV64 environment variable. This will allow the compiler and +assembler to generate instructions made mandatory by the new profile +without a runtime check. Examples of such instructions include those +introduced by the Vector and Zicond extensions. +Setting GORISCV64=rva23u64 defines the riscv64.rva20u64, +riscv64.rva22u64 and riscv64.rva23u64 build tags, sets the internal +variable buildcfg.GORISCV64 to 23 and defines the macros +GORISCV64_rva23u64, hasV, hasZba, hasZbb, hasZbs, hasZfa, and +hasZicond for use in assembly language code. +Updates \#61476 + + +math/rand/v2: revised API for math/rand +rand: deprecate in favor of math/rand/v2 +For golang/go#61716 +Fixes golang/go#71373 + + +cmd/go: enable GOCACHEPROG by default +cmd/go/internal/cacheprog: drop Request.ObjectID +ObjectID was a misnaming of OutputID from cacheprog's initial +implementation. It was maintained for compatibility with existing +cacheprog users in 1.24 but can be removed in 1.25. + + +cmd/go: doc -http should start a pkgsite instance and open a browser + + +cmd/go: -json flag for go version -m +cmd/go: support -json flag in go version +It supports features described in the issue: +- add -json flag for 'go version -m' to print json encoding of + runtime/debug.BuildSetting to standard output. +- report an error when specifying -json flag without -m. +- print build settings on seperated line for each binary +Fixes \#69712 + + +crypto: mechanism to enable FIPS mode + + +spec: remove notion of core types + + +cmd/go: add fips140 module selection mechanism +lib/fips140: set inprocess.txt to v1.0.0 + + +testing: panic in AllocsPerRun during parallel test +testing: panic in AllocsPerRun if parallel tests are running +If other tests are running, AllocsPerRun's result will be inherently flaky. +Saw this with CL 630136 and \#70327. +Proposed in \#70464. +Fixes \#70464. + + +encoding/json/v2: add new JSON API behind a GOEXPERIMENT=jsonv2 guard + + +cmd/go, cmd/distpack: build and run tools that are not necessary for builds as needed and don't include in binary distribution + + From 68f4434df02c3d1bde5b42c9adeaf79d15858ff3 Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Fri, 23 May 2025 17:31:53 -0400 Subject: [PATCH 94/99] runtime/trace: match traceClockNow types runtime.traceClockNow returns a (named) uint64. Make the declaration in runtime/trace match this type. Change-Id: I6a6a636ce3596cbc6fc5bac3590703b7b4839c4d Reviewed-on: https://go-review.googlesource.com/c/go/+/675976 Reviewed-by: Carlos Amedee Auto-Submit: Michael Pratt LUCI-TryBot-Result: Go LUCI --- src/runtime/trace/recorder.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/runtime/trace/recorder.go b/src/runtime/trace/recorder.go index 78e003e2a5..bf8d7ce647 100644 --- a/src/runtime/trace/recorder.go +++ b/src/runtime/trace/recorder.go @@ -107,7 +107,7 @@ func traceTimeNow(freq frequency) eventTime { } //go:linkname runtime_traceClockNow runtime.traceClockNow -func runtime_traceClockNow() int64 +func runtime_traceClockNow() uint64 // frequency is nanoseconds per timestamp unit. type frequency float64 From 8cb0941a85de6ddbd6f49f8e7dc2dd3caeeee61c Mon Sep 17 00:00:00 2001 From: Carlos Amedee Date: Mon, 23 Dec 2024 11:52:43 -0500 Subject: [PATCH 95/99] net: use runtime.AddCleanup instead of runtime.SetFinalizer Adds TODO for replacement of runtime.SetFinalizer. Fixes #70907 Change-Id: Ic009018a93ccc46a776ae34afac44635d2340cbf Reviewed-on: https://go-review.googlesource.com/c/go/+/638557 Reviewed-by: Damien Neil LUCI-TryBot-Result: Go LUCI Auto-Submit: Carlos Amedee --- src/net/fd_fake.go | 2 ++ src/net/fd_posix.go | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/net/fd_fake.go b/src/net/fd_fake.go index ae567acc69..946805ab94 100644 --- a/src/net/fd_fake.go +++ b/src/net/fd_fake.go @@ -104,6 +104,7 @@ func (fd *netFD) accept() (netfd *netFD, err error) { func (fd *netFD) setAddr(laddr, raddr Addr) { fd.laddr = laddr fd.raddr = raddr + // TODO Replace with runtime.AddCleanup. runtime.SetFinalizer(fd, (*netFD).Close) } @@ -111,6 +112,7 @@ func (fd *netFD) Close() error { if fd.fakeNetFD != nil { return fd.fakeNetFD.Close() } + // TODO Replace with runtime.AddCleanup. runtime.SetFinalizer(fd, nil) return fd.pfd.Close() } diff --git a/src/net/fd_posix.go b/src/net/fd_posix.go index 93e6b5378e..023cd534e4 100644 --- a/src/net/fd_posix.go +++ b/src/net/fd_posix.go @@ -40,10 +40,12 @@ func (fd *netFD) name() string { func (fd *netFD) setAddr(laddr, raddr Addr) { fd.laddr = laddr fd.raddr = raddr + // TODO Replace with runtime.AddCleanup. runtime.SetFinalizer(fd, (*netFD).Close) } func (fd *netFD) Close() error { + // TODO Replace with runtime.AddCleanup. runtime.SetFinalizer(fd, nil) return fd.pfd.Close() } From aca9f4e484b529aeb15bf6f9633a5f07d9bab940 Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Wed, 21 May 2025 22:41:54 +0200 Subject: [PATCH 96/99] crypto/tls: signature_algorithms in CertificateRequest can't be empty Change-Id: I6a6a4656ab97e1f247df35b2589cd73461b4ac76 Reviewed-on: https://go-review.googlesource.com/c/go/+/675917 Auto-Submit: Filippo Valsorda Reviewed-by: David Chase Reviewed-by: Dmitri Shuralyov Reviewed-by: Daniel McCarney LUCI-TryBot-Result: Go LUCI --- src/crypto/tls/handshake_messages.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/crypto/tls/handshake_messages.go b/src/crypto/tls/handshake_messages.go index ad3e5fa352..d9a475aab1 100644 --- a/src/crypto/tls/handshake_messages.go +++ b/src/crypto/tls/handshake_messages.go @@ -1790,7 +1790,7 @@ func (m *certificateRequestMsg) unmarshal(data []byte) bool { } sigAndHashLen := uint16(data[0])<<8 | uint16(data[1]) data = data[2:] - if sigAndHashLen&1 != 0 { + if sigAndHashLen&1 != 0 || sigAndHashLen == 0 { return false } if len(data) < int(sigAndHashLen) { From 3db50924e2c74dfa0cb9295215529a65880eb708 Mon Sep 17 00:00:00 2001 From: Mateusz Poliwczak Date: Fri, 23 May 2025 19:28:37 +0200 Subject: [PATCH 97/99] hash: mention the new Cloner interface in Hash docs. We mention that already in Cloner docs, but to be consistent, also mention that in Hash. Change-Id: Iee33d545662b7054973666bd45998a37f3037a51 Reviewed-on: https://go-review.googlesource.com/c/go/+/675915 LUCI-TryBot-Result: Go LUCI Reviewed-by: Filippo Valsorda Reviewed-by: Roland Shoemaker Reviewed-by: David Chase --- src/hash/hash.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/hash/hash.go b/src/hash/hash.go index 6483bc1086..af84e7796b 100644 --- a/src/hash/hash.go +++ b/src/hash/hash.go @@ -10,8 +10,8 @@ import "io" // Hash is the common interface implemented by all hash functions. // // Hash implementations in the standard library (e.g. [hash/crc32] and -// [crypto/sha256]) implement the [encoding.BinaryMarshaler], [encoding.BinaryAppender] -// and [encoding.BinaryUnmarshaler] interfaces. Marshaling a hash implementation +// [crypto/sha256]) implement the [encoding.BinaryMarshaler], [encoding.BinaryAppender], +// [encoding.BinaryUnmarshaler] and [Cloner] interfaces. Marshaling a hash implementation // allows its internal state to be saved and used for additional processing // later, without having to re-write the data previously written to the hash. // The hash state may contain portions of the input in its original form, From c07ffe980a52b309d48d33265cfee438a01cb513 Mon Sep 17 00:00:00 2001 From: Sean Liao Date: Sat, 24 May 2025 12:10:12 +0100 Subject: [PATCH 98/99] testing/synctest: correct duration in doc example Fixes #73839 Change-Id: I961641c6d8244cdeb101a3c9ae91931828a893ad Reviewed-on: https://go-review.googlesource.com/c/go/+/676035 LUCI-TryBot-Result: Go LUCI Reviewed-by: Dmitri Shuralyov Reviewed-by: Alan Donovan --- src/testing/synctest/synctest.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/testing/synctest/synctest.go b/src/testing/synctest/synctest.go index 73fb0a3251..aeac8c4b43 100644 --- a/src/testing/synctest/synctest.go +++ b/src/testing/synctest/synctest.go @@ -24,11 +24,11 @@ // synctest.Test(t, func(t *testing.T) { // start := time.Now() // always midnight UTC 2001-01-01 // go func() { -// time.Sleep(1 * time.Nanosecond) -// t.Log(time.Since(start)) // always logs "1ns" +// time.Sleep(1 * time.Second) +// t.Log(time.Since(start)) // always logs "1s" // }() -// time.Sleep(2 * time.Nanosecond) // the goroutine above will run before this Sleep returns -// t.Log(time.Since(start)) // always logs "2ns" +// time.Sleep(2 * time.Second) // the goroutine above will run before this Sleep returns +// t.Log(time.Since(start)) // always logs "2s" // }) // } // From 3fd729b2a14a7efcf08465cbea60a74da5457f06 Mon Sep 17 00:00:00 2001 From: Antonio Pitasi Date: Wed, 21 May 2025 11:58:13 +0200 Subject: [PATCH 99/99] log/slog: make TextHandler discard empty Source Fixes #73808 Change-Id: Ica4b7a63eebbf0fff41d68f4de928f9da90c8ada Reviewed-on: https://go-review.googlesource.com/c/go/+/674875 Reviewed-by: Jonathan Amsterdam Reviewed-by: Dmitri Shuralyov Reviewed-by: Sean Liao LUCI-TryBot-Result: Go LUCI --- src/log/slog/handler.go | 3 +++ src/log/slog/handler_test.go | 2 +- src/log/slog/record.go | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/log/slog/handler.go b/src/log/slog/handler.go index e56be5f494..26eb4b82fc 100644 --- a/src/log/slog/handler.go +++ b/src/log/slog/handler.go @@ -492,6 +492,9 @@ func (s *handleState) appendAttr(a Attr) bool { // Special case: Source. if v := a.Value; v.Kind() == KindAny { if src, ok := v.Any().(*Source); ok { + if src.isEmpty() { + return false + } if s.h.json { a.Value = src.group() } else { diff --git a/src/log/slog/handler_test.go b/src/log/slog/handler_test.go index 445f43f1f5..3c4c36912c 100644 --- a/src/log/slog/handler_test.go +++ b/src/log/slog/handler_test.go @@ -652,7 +652,7 @@ func TestJSONAndTextHandlersWithUnavailableSource(t *testing.T) { h Handler want string }{ - {"text", NewTextHandler(&buf, opts), "source=:0 msg=message"}, + {"text", NewTextHandler(&buf, opts), "msg=message"}, {"json", NewJSONHandler(&buf, opts), `{"msg":"message"}`}, } { t.Run(test.name, func(t *testing.T) { diff --git a/src/log/slog/record.go b/src/log/slog/record.go index 53ecc67cc8..3b4e68ce76 100644 --- a/src/log/slog/record.go +++ b/src/log/slog/record.go @@ -211,6 +211,9 @@ func (s *Source) group() Value { return GroupValue(as...) } +// isEmpty returns whether the Source struct is nil or only contains zero fields. +func (s *Source) isEmpty() bool { return s == nil || *s == Source{} } + // Source returns a new Source for the log event using r's PC. // If the PC field is zero, meaning the Record was created without the necessary information // or the location is unavailable, then nil is returned.