Comments (5)
Could you please post the exact code you ran that gave this error (including values of any parameters)? Thanks.
from fastecdsa.
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.
from fastecdsa.
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
from fastecdsa.
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
from fastecdsa.
Oh! Thanks for pointing out my stupidity. Appreciate it.
from fastecdsa.
Related Issues (20)
- Error on pip3 install fastecdsa missing "gmp.h" HOT 1
- deep learning for fastecdsa HOT 3
- Point extend HOT 11
- Bug: multiplication of Point by negative const produces wrong results HOT 15
- [Question] - Different Signatures for same input HOT 2
- Scalar Inversion HOT 3
- Cannot install in macOS BigSur (M1 chip) HOT 23
- MacOS Monerray Apple Silicon Python 3.9 issue with install/import HOT 3
- tag 2.2.2 unsigned, PyPI upload missing a signature file HOT 2
- I can run this tutorial in termux HOT 1
- Python.h not found on WSL Ubuntu 20.04 installation HOT 1
- installation error on shared hosting HOT 1
- does not install with python3.9 HOT 6
- Is it possible for this to be used with Micropython? HOT 3
- Error while installing ecdsa HOT 1
- how do I calculate recover_id from signature HOT 1
- Import Issues on macOS Monterey, Python 3.9, M1 Max
- symbol not found in flat namespace '___gmpz_add' HOT 1
- getting y public key from compressed public key HOT 1
- unresolved external symbol __gmpz_set HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fastecdsa.