crypto: set the correct curve when uncompressing

This commit is contained in:
Marius van der Wijden 2024-03-15 13:01:53 +01:00
parent 77662bae2c
commit 8f03199f36

View file

@ -58,7 +58,13 @@ func SigToPub(hash, sig []byte) (*ecdsa.PublicKey, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
return pub.ToECDSA(), nil // We need to explicitly set the curve here, because we're wrapping
// the original curve to add (un-)marshalling
return &ecdsa.PublicKey{
Curve: S256(),
X: pub.X(),
Y: pub.Y(),
}, nil
} }
// Sign calculates an ECDSA signature. // Sign calculates an ECDSA signature.
@ -128,7 +134,13 @@ func DecompressPubkey(pubkey []byte) (*ecdsa.PublicKey, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
return key.ToECDSA(), nil // We need to explicitly set the curve here, because we're wrapping
// the original curve to add (un-)marshalling
return &ecdsa.PublicKey{
Curve: S256(),
X: key.X(),
Y: key.Y(),
}, nil
} }
// CompressPubkey encodes a public key to the 33-byte compressed format. The // CompressPubkey encodes a public key to the 33-byte compressed format. The