libdemos

Cryptographic tools for digital democracy

https://github.com/ondemos/libdemos

Science Score: 54.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: arxiv.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.5%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

Cryptographic tools for digital democracy

Basic Info
  • Host: GitHub
  • Owner: ondemos
  • License: agpl-3.0
  • Language: C
  • Default Branch: master
  • Size: 414 KB
Statistics
  • Stars: 1
  • Watchers: 0
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created almost 2 years ago · Last pushed over 1 year ago
Metadata Files
Readme Contributing Funding License Code of conduct Citation

README.md

@ondemos/libdemos

This repository provides cryptographic tools for digital democracies.

Other than the compilation as a static or shared lib, it also compiles for WASM and use in the browser.

The code has not undergone any external security audits yet. Use at your own risk.

Introduction

This library relies heavily on Ed25519 public-secret key pairs and their related operations, which are provided by libsodium, which is a battle-tested project.

In the src folder, there are the functions that enable private liquid democracy according to this paper. There is an example in the tests folder.

It also has Shamir secret sharing functionality, where a user can split and restore a secret through the Shamir threshold sharing scheme.

The library also has mnemonic generation, validation and Ed25519 key pair from mnemonic functionality that was inspired by bip39 but instead of Blake2b we use Argon2 and instead of SHA256 we use SHA512, both of which can be found in libsodium.

Finally, you can calculate Merkle roots, proofs and validate proofs from trees.

Files

The chacha20poly1305 directory contains symmetric and asymmetric key encryption functions. The schema is AEAD and the IETF implementation. The Ed25519 keys are converted to x25519 for key agreement.

The merkle directory contains a Merkle root getter function, a Merkle proof artifacts getter, a root from proof getter and a proof verification function.

The shamir directory contains a Shamir secret split and restoration of a Uint8Array secret. Under the hood it uses the libsodium randombytes method to generate random coefficients for the polynomial.

The utils directory contains helper methods such as cryptographic random slicing of arrays etc.

Getting Started

To get started you need to have CMake, LLVM/Clang and emsdk installed on your machine and in your path. You also need to clone this repository and libsodium as a submodule in order to be able to compile the library

git clone git@github.com:ondemos/core.git ondemos cd ondemos git submodule update --init --recursive source ./build.sh

The build script will also compile and run the files in the tests folder. For now this only tests the private liquid voting functionality.

License

The source code is licensed under the terms of the Affero General Public License version 3.0 (see LICENSE).

Copyright

Copyright (C) 2024 Deliberative Technologies P.C.

Owner

  • Name: ONDemos
  • Login: ondemos
  • Kind: organization
  • Email: info@ondemos.org
  • Location: Greece

Cryptographic tools for digital democracy

Citation (CITATION.cff)

cff-version: 0.2.5
title: ondemos
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - given-names: Dimitrios
    family-names: Karoukis
    orcid: 'https://orcid.org/0009-0008-4417-1713'
repository-code: 'https://github.com/ondemos/core'
url: 'https://www.ondemos.org'
abstract: 'A collection of tools for digital democracy.'
keywords:
  - cryptography
  - library
license: AGPL-3.0

GitHub Events

Total
  • Watch event: 1
Last Year
  • Watch event: 1

Dependencies

.github/workflows/release.yml actions
.github/workflows/security.yml actions
  • actions/checkout v3 composite
  • david-a-wheeler/flawfinder 2.0.19 composite
  • github/codeql-action/analyze v2 composite
  • github/codeql-action/autobuild v2 composite
  • github/codeql-action/init v2 composite
.github/workflows/test.yml actions
  • KyleMayes/install-llvm-action v2.0.3 composite
  • actions/cache v4 composite
  • actions/checkout master composite
  • mymindstorm/setup-emsdk v14 composite