Comments (5)
Hi @trstovall and thanks for chiming in.
I read that too :) The problem is, that this is not the only patent on ECC - far from - it's just one of the better known ones. There are no public lists of all patents covering which ECC techniques, and there are not many sources of information on what is unencumbered.
Most ECC patents should expire around 2020-2021, from what I've read, but there are no guarantees. There is even an RFC dedicated to what is covered by patents in ECC and what isn't:
https://tools.ietf.org/html/rfc6090
Some patents are only valid in the US etc. etc. -- I don't know what to make of this. Software patents are an abomination...
from tiny-ecdh-c.
Hi @p0fi and thanks for your interest.
I have chosen not to support point compression, because it seems to be patent encumbered:
https://patents.google.com/patent/US6252960B1/en
I am not 100% sure when the patents will expire, but it should be soon.
from tiny-ecdh-c.
Oh really? Thats a pity, I really need a point compressed representation of the keys. Do you have any idea how I can maybe implement it myself easily? The patent link seems overwhelmingly complex since im not really into cryptography.
I found that https://github.com/kmackay/micro-ecc does support point compression but not the curve I need in particular.
from tiny-ecdh-c.
Not many people know for sure how the patent situation is currently.
Some patents cover only ECC-tech working on prime-field curves, others are for Galois-field (binary) curves. That could explain the difference, since Ken MacKay's library works on prime-field curves and mine works on Galois-fields (so-called binary curves)
ECC is quite the patent mine-field, so I haven't uploaded anything related to point compression, even though it's conceptually somewhat simple.
Basically, you exploit the fact that if you know the x-coordinate, there are only so many y-coordinates the point can have, if it lies on the curve.
For prime-field curves, it requires you calculate a modular square root.
For binary curves, you need to solve a quadratic equation to get the y-coordinate, so it's a bit more involved.
This page has great ECC resources, and pseudo-code for some field-operations:
http://point-at-infinity.org/ecc/
I think this answer on crypto.stackexchange has a pretty good explanation of the math involved:
https://crypto.stackexchange.com/questions/8914/ecdsa-compressed-public-key-point-back-to-uncompressed-public-key-point
There is a thorough description of formats under section 2.3 in this document:
http://www.secg.org/sec1-v2.pdf
And this blog is a really approachable introduction to ECC in general:
https://www.johannes-bauer.com/compsci/ecc/
from tiny-ecdh-c.
That patent link states the patent application expires today.
from tiny-ecdh-c.
Related Issues (20)
- Buffer overflow in ecdh_demo HOT 4
- Results are Differential to OpenSSL HOT 1
- invalid generated public key HOT 3
- Cannot generate a shared secret HOT 4
- error HOT 1
- compilation error HOT 2
- Region βIMEMβ overflowed by 17932 bytes HOT 1
- Mismatch with openssl private-key/public key generation
- NIST_K571 NIST_K409 HOT 9
- ECDH and ECDSA HOT 1
- DSA Broken: Troubleshooting
- Supporting Curve BrainpoolP256r1 HOT 1
- compatibility with other crypto libraries
- sec key not the same
- 7 of 10 "working"
- ECDSA
- K-163 is still too difficult for IoT devices HOT 1
- Representation of generated Public Key HOT 10
- Shared secret byte size HOT 10
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 tiny-ecdh-c.