diff options
author | Filippo Valsorda <filippo@golang.org> | 2020-04-30 23:52:48 -0400 |
---|---|---|
committer | Filippo Valsorda <filippo@golang.org> | 2020-05-05 18:05:10 +0000 |
commit | a8e83d51a0cc709c836fe8836b10155342aa2ac4 (patch) | |
tree | 576d47ca61f6a69a85f6a27fcb5d3ff425f0893e /src/crypto/ecdsa/ecdsa.go | |
parent | a6c6e59655e2599bd6dabce51a3a68accff433f8 (diff) | |
download | go-a8e83d51a0cc709c836fe8836b10155342aa2ac4.tar.gz go-a8e83d51a0cc709c836fe8836b10155342aa2ac4.zip |
crypto/rsa,crypto/ecdsa,crypto/ed25519: implement PrivateKey.Equal
Fixes #38190
Change-Id: I10766068ee18974e81b3bd78ee0b4d83cc9d1a8c
Reviewed-on: https://go-review.googlesource.com/c/go/+/231417
Run-TryBot: Filippo Valsorda <filippo@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Katie Hockman <katie@golang.org>
Diffstat (limited to 'src/crypto/ecdsa/ecdsa.go')
-rw-r--r-- | src/crypto/ecdsa/ecdsa.go | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/crypto/ecdsa/ecdsa.go b/src/crypto/ecdsa/ecdsa.go index 786b8a9884..ccce873859 100644 --- a/src/crypto/ecdsa/ecdsa.go +++ b/src/crypto/ecdsa/ecdsa.go @@ -62,6 +62,9 @@ type PublicKey struct { X, Y *big.Int } +// Any methods implemented on PublicKey might need to also be implemented on +// PrivateKey, as the latter embeds the former and will expose its methods. + // Equal reports whether pub and x have the same value. // // Two keys are only considered to have the same value if they have the same Curve value. @@ -91,6 +94,17 @@ func (priv *PrivateKey) Public() crypto.PublicKey { return &priv.PublicKey } +// Equal reports whether priv and x have the same value. +// +// See PublicKey.Equal for details on how Curve is compared. +func (priv *PrivateKey) Equal(x crypto.PrivateKey) bool { + xx, ok := x.(*PrivateKey) + if !ok { + return false + } + return priv.PublicKey.Equal(&xx.PublicKey) && priv.D.Cmp(xx.D) == 0 +} + // Sign signs digest with priv, reading randomness from rand. The opts argument // is not currently used but, in keeping with the crypto.Signer interface, // should be the hash function used to digest the message. |