]> Cypherpunks.ru repositories - gostls13.git/commit
[dev.boringcrypto] cmd/compile: hide new boring fields from reflection
authorRuss Cox <rsc@golang.org>
Wed, 30 Aug 2017 14:10:15 +0000 (10:10 -0400)
committerRuss Cox <rsc@golang.org>
Wed, 30 Aug 2017 19:23:53 +0000 (19:23 +0000)
commit7b49445d0fab71820314a2e5bdfba6b84b7f16d0
tree6d4035d450b5215fa6ee388cf2607dead0c3296d
parent81b9d733b04b635e6c6e78396c4bde0d344da06c
[dev.boringcrypto] cmd/compile: hide new boring fields from reflection

This is terrible but much simpler, cleaner, and more effective
than all the alternatives I have come up with.

Lots of code assumes that reflect.DeepEqual is meaningful
on rsa.PublicKey etc, because previously they consisted only of
exported meaningful fields.

Worse, there exists code that assumes asn1.Marshal can be
passed an rsa.PublicKey, because that struct has historically
matched exactly the form that would be needed to produce
the official ASN.1 DER encoding of an RSA public key.

Instead of tracking down and fixing all of that code
(and probably more), we can limit the BoringCrypto-induced
damage by ensliting the compiler to hide the new field
from reflection. Then nothing can get at it and nothing can
be disrupted by it.

Kill two birds with one cannon ball.

I'm very sorry.

Change-Id: I0ca4d6047c7e98f880cbb81904048c1952e278cc
Reviewed-on: https://go-review.googlesource.com/60271
Reviewed-by: Adam Langley <agl@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/cmd/compile/internal/gc/reflect.go
src/crypto/rsa/boring_test.go [new file with mode: 0644]