bifurcation / mint

A Minimal TLS 1.3 Implementation in Go
MIT License
224 stars 36 forks source link

Enable fields to be marked for omission from a struct #198

Open bifurcation opened 5 years ago

bifurcation commented 5 years ago

This way you can have structs that marshal / unmarshal as TLS, but also have extra information that is produced locally. The proposed syntax is:

type Foo struct {
  A uint16
  B uint16 `tls:"omit"`
  C uint16
}
ekr commented 5 years ago

Why not just use lower-case for this? Those fields are inaccessible to reflection anyway.

For instance: https://github.com/ekr/minq/blob/master/codec.go#L155

bifurcation commented 4 years ago

Renewing this PR. @ekr - you could use private fields for this, but I don't see a need to conflate the two ideas. encoding/json, for example, makes exactly this distinction, allowing a "-" annotation for a public field you want to omit in the JSON encoding.