Giter VIP home page Giter VIP logo

haskell-spake2's Introduction

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

Non-goals

Right now:

How 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).

To show that Python works as Side A and Haskell works as Side B:

$ 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.

haskell-spake2's People

Contributors

jml avatar exarkun avatar

Watchers

Noon van der Silk avatar James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.