When discussing ideas about the hackathon, one member mentioned something about cryptographic commitment, we eventually realized we could create a library to make this behavior easy for people to use.

What it does

Programs that link with this library can very easily ensure that communications between them and an untrusted third party can be validated to prevent the other person from changing their mind. For instance this can be implemented, but not limited to, turn based games where people might want to cheat and change their decision.

How we built it

We created a dynamically linked library in C++ and an example front-end to showcase its abilities.

Challenges we ran into

Platforming compatibility was one of the biggest issues we had when going through our code. We were programming on 3 different OS's (Linux, Windows, and OSX) and countless compiler issues came about. We realized that clang has issues compiling the library in C++11 so we had to work our way around some of these issues and used different compiler flags. We also had dIfficulties creating properly linking dynamic libraries.

Accomplishments that we're proud of

A C++ application can link to our library like any other shared library on the system.

What we learned

We learned that creating dynamic libraries have special requirements that static libraries don't have.

What's next for libcutie

  • Communication
  • TLS layer to negotiate session key
  • HMACs for data integrity
  • Symmetric key encryption

Built With

Share this project: