Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/leastauthority/haskell-spake2
SPAKE2 key exchange protocol for Haskell
https://github.com/leastauthority/haskell-spake2
crypto haskell spake2
Last synced: about 2 months ago
JSON representation
SPAKE2 key exchange protocol for Haskell
- Host: GitHub
- URL: https://github.com/leastauthority/haskell-spake2
- Owner: LeastAuthority
- License: apache-2.0
- Created: 2017-05-13T14:55:41.000Z (over 7 years ago)
- Default Branch: main
- Last Pushed: 2023-05-24T19:08:02.000Z (over 1 year ago)
- Last Synced: 2024-10-12T14:43:39.742Z (3 months ago)
- Topics: crypto, haskell, spake2
- Language: Haskell
- Homepage:
- Size: 153 KB
- Stars: 14
- Watchers: 9
- Forks: 4
- Open Issues: 8
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
=============================
Haskell SPAKE2 implementation
=============================Implementation of SPAKE2 key exchange protocol.
Status
======Working implementation that interoperates with python-spake2
using the default settings, i.e. with Ed25519.No other groups implemented.
Goals
=====* compatibility with `python-spake2 `_
* (stretch) submit to `cryptonite `_Non-goals
=========Right now:
* PAKE2+
* any `Elligator Edition `_ variantsHow to use it
=============The `interoperability harness entry point `_
is the best working example of how to use the code.The `main module documentation `_ might also help.
Testing for interoperability
----------------------------Requires the `LeastAuthority interoperability harness `_.
Assumes that haskell-spake2 has been compiled (``stack build`` will do it)
and that you know where the executable lives (``stack install`` might be helpful here)... these instructions are not yet verified
To show that Python works as Side A and Haskell works as Side B:
.. code-block:: console
$ runhaskell TestInterop.hs ./python-spake2-interop-entrypoint.hs A abc -- /path/to/haskell-spake2-interop-entrypoint B abc
["./python-spake2-interop-entrypoint.py","A","abc"]
["/path/to/haskell-spake2-interop-entrypoint","B","abc"]
A's key: 8a2e19664f0a2bc6e446d2c44900c67604fe42f6d7e0a1328a5253b21f4131a5
B's key: 8a2e19664f0a2bc6e446d2c44900c67604fe42f6d7e0a1328a5253b21f4131a5
Session keys match.**Note**: if you want to run ``runhaskell`` with ``stack``,
you will need to invoke it like::stack runhaskell TestInterop.hs -- ./python-spake2-interop-entrypoint.hs A abc -- /path/to/haskell-spake2-interop-entrypoint B abc
The above results are genuine,
and demonstrate that the Haskell SPAKE2 implementation *does* work.
Specifically, that it interoperates with python-spake2.Contributing
============We use `stack `_ for building and testing.
High-quality documentation with examples is very strongly encouraged,
because this stuff is pretty hard to figure out, and we need all the help we can get.