Closed gajinderpanesar closed 6 years ago
Could you please post the exact code you ran that gave this error (including values of any parameters)? Thanks.
For reference:
In [1]: from fastecdsa import curve, ecdsa, keys
In [2]: m = "a message to sign via ECDSA" # some message
In [3]: private_key = keys.gen_private_key(curve.P192)
In [4]: public_key = keys.get_public_key(private_key, curve.P192)
In [5]: r, s = ecdsa.sign(m, private_key, curve=curve.P192)
In [6]: valid = ecdsa.verify((r, s), m, public_key, curve=curve.P192)
In [7]: valid
Out[7]: True
Remember, P256 is the curve used by default in this package, so if you want to use a different curve to sign / verify you have to pass in the curve as a keyword arg.
Hello,
That is very strange. The following is a cut'n'paste of what I ran. I am probably being stupid somewhere but it looks the same to me. I ran it using the default SHA function and got the same error.
Thanks, Gajinder Panesar
from fastecdsa import curve, ecdsa, keys from hashlib import sha384 m = "a message to sign via ECDSA" # some message private_key = keys.gen_private_key(curve.P192) public_key = keys.get_public_key(private_key, curve.P192) r, s = ecdsa.sign(m, private_key, hashfunc=sha384) valid = ecdsa.verify((r, s), m, public_key, hashfunc=sha384) Traceback (most recent call last): File "
", line 1, in File "build/bdist.linux-x86_64/egg/fastecdsa/ecdsa.py", line 72, in verify raise EcdsaError('Invalid public key, point is not on curve {}'.format(curve.name)) fastecdsa.ecdsa.EcdsaError
You need to specifiy the curve as P192 in sign and verify. You wrote:
r, s = ecdsa.sign(m, private_key, hashfunc=sha384)
valid = ecdsa.verify((r, s), m, public_key, hashfunc=sha384)
This needs to be:
r, s = ecdsa.sign(m, private_key, curve=curve.P192, hashfunc=sha384)
valid = ecdsa.verify((r, s), m, public_key, curve=curve.P192, hashfunc=sha384)
See below for correct usage of the whole code block you provided:
In [1]: from fastecdsa import curve, ecdsa, keys
...: from hashlib import sha384
...: m = "a message to sign via ECDSA" # some message
...: private_key = keys.gen_private_key(curve.P192)
...: public_key = keys.get_public_key(private_key, curve.P192)
...: r, s = ecdsa.sign(m, private_key, curve=curve.P192, hashfunc=sha384)
...: valid = ecdsa.verify((r, s), m, public_key, curve=curve.P192, hashfunc=sha384)
...:
In [2]: valid
Out[2]: True
Oh! Thanks for pointing out my stupidity. Appreciate it.
Hello,
I am just getting to grips with fastecdsa but when I change the curve to use P192 and run through your simple example code I get the following:
Traceback (most recent call last): File "", line 1, in
File "build/bdist.linux-x86_64/egg/fastecdsa/ecdsa.py", line 72, in verify
raise EcdsaError('Invalid public key, point is not on curve {}'.format(curve.name))
fastecdsa.ecdsa.EcdsaError
Am I missing something in setup or am I doing something very stupid.
Thanks,
Gajinder Panesar