HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
jedisct1
spake2-ee
C2017–2018
jedisct1 / spake2-ee

spake2-ee

A SPAKE2+ Elligator Edition implementation for libsodium 1.0.16+

2Distinct people
2Mentions
0Explicit recommenders
45GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A SPAKE2+ Elligator Edition implementation for libsodium 1.0.16+

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by day2 dated mentions

Observed mentions: 2017-12-28 15:20:47 UTC to 2018-01-17 20:31:01 UTC.

012017-12-28 00:00:00 UTC to 2017-12-29 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsDec 282017-12-29 00:00:00 UTC to 2017-12-30 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-12-30 00:00:00 UTC to 2017-12-31 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-12-31 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-01 00:00:00 UTC to 2018-01-02 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-02 00:00:00 UTC to 2018-01-03 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-03 00:00:00 UTC to 2018-01-04 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-04 00:00:00 UTC to 2018-01-05 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-05 00:00:00 UTC to 2018-01-06 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-06 00:00:00 UTC to 2018-01-07 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-07 00:00:00 UTC to 2018-01-08 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsJan 72018-01-08 00:00:00 UTC to 2018-01-09 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-09 00:00:00 UTC to 2018-01-10 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-10 00:00:00 UTC to 2018-01-11 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-11 00:00:00 UTC to 2018-01-12 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-12 00:00:00 UTC to 2018-01-13 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-13 00:00:00 UTC to 2018-01-14 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-14 00:00:00 UTC to 2018-01-15 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-15 00:00:00 UTC to 2018-01-16 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-16 00:00:00 UTC to 2018-01-17 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-17 00:00:00 UTC to 2018-01-18 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsJan 17

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Dec 282017-12-28 00:00:00 UTC2017-12-29 00:00:00 UTC101
Dec 292017-12-29 00:00:00 UTC2017-12-30 00:00:00 UTC000
Dec 302017-12-30 00:00:00 UTC2017-12-31 00:00:00 UTC000
Dec 312017-12-31 00:00:00 UTC2018-01-01 00:00:00 UTC000
Jan 12018-01-01 00:00:00 UTC2018-01-02 00:00:00 UTC000
Jan 22018-01-02 00:00:00 UTC2018-01-03 00:00:00 UTC000
Jan 32018-01-03 00:00:00 UTC2018-01-04 00:00:00 UTC000
Jan 42018-01-04 00:00:00 UTC2018-01-05 00:00:00 UTC000
Jan 52018-01-05 00:00:00 UTC2018-01-06 00:00:00 UTC000
Jan 62018-01-06 00:00:00 UTC2018-01-07 00:00:00 UTC000
Jan 72018-01-07 00:00:00 UTC2018-01-08 00:00:00 UTC000
Jan 82018-01-08 00:00:00 UTC2018-01-09 00:00:00 UTC000
Jan 92018-01-09 00:00:00 UTC2018-01-10 00:00:00 UTC000
Jan 102018-01-10 00:00:00 UTC2018-01-11 00:00:00 UTC000
Jan 112018-01-11 00:00:00 UTC2018-01-12 00:00:00 UTC000
Jan 122018-01-12 00:00:00 UTC2018-01-13 00:00:00 UTC000
Jan 132018-01-13 00:00:00 UTC2018-01-14 00:00:00 UTC000
Jan 142018-01-14 00:00:00 UTC2018-01-15 00:00:00 UTC000
Jan 152018-01-15 00:00:00 UTC2018-01-16 00:00:00 UTC000
Jan 162018-01-16 00:00:00 UTC2018-01-17 00:00:00 UTC000
Jan 172018-01-17 00:00:00 UTC2018-01-18 00:00:00 UTC101

What Hacker News says

2 sources
> But that doesn't mean you should be send and storing password hashes to the server, even if generated by PHP. There is prior work in this genre. Something like SPAKE2-EE might be worth looking into here. https://github.com/jedisct1/spake2-ee > It doesn't mean you should be using the session cookie alone as a bearer token to access a session. Well, maybe. A random ID that just tells PHP where to look for the session data, with all the data persisted server-side, is secure as long as it's transferred over HTTPS. Most frameworks/libraries abstract the implementation details away, but generally: <?php use ParagonIE\ConstantTime\Base32; $random = Base32::encode(random_bytes(32)); This value will be unpredictable and doesn't require an HMAC to ensure this property. The only time the HMAC adds value is if you're using the user's compute
Read the rest
r as a data mule for the entirety of session state rather than "look up this identifier in a database". In those use-cases, you enter the usual JWT abuse territory, as outlined here: http://cryto.net/~joepie91/blog/2016/06/19/stop-using-jwt-fo... In this genre, we're working on PAST (although this is probably going to be renamed before it's finalized) to solve the cryptography flaws baked into the JWT standards (collectively, JOSE): https://github.com/paragonie/past That doesn't solve the "replay attack" issue (which may be what you were referring to with bearer tokens). > OH AND YOU SHOULD ALSO BE USING A PRIVATE KEY PER USER TO ENCRYPT DATA AT REST ON YOUR DATABASE, AND STORE THIS KEY IN THE DB MULTIPLE TIMES - EACH ONE ENCRYPTED BY THE USER'S DEVICE KEY. I'm not entirely sure what you're getting at here. If I needed to share a key across devices, I'd either use Diffie-Hellman or Shamir Secret Sharing to accomplish the task (depending on use-case and threat model). Perhaps there's a lot of implementation detail that's not being discussed here that I'm missing and what you're saying is a conservative local maximum, but it stuck out a tad bit.
In Our Ambitious Plan to Make Insecure PHP Software a Thing of the Past
> Can you point to an example of a (nontrivial) site where a DoS attack against the password hashing service was the primary point of failure? Reformulating the question from a different angle: why did all the large sites whose password database got leaked (Yahoo, LinkedIn...) still use regular hash functions? > This also has the advantage that the server doesn't see the actual password. Other schemes with that property include augmented PAKEs such as SPAKE2+ (example implementation: https://github.com/jedisct1/spake2-ee) and Tabby PAKE (https://github.com/catid/tabby/blob/master/PASSWORD.md)
In The scrypt parameters

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.