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
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
Metadata Files
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
- Website: https://ondemos.org
- Repositories: 3
- Profile: https://github.com/ondemos
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
- 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
- KyleMayes/install-llvm-action v2.0.3 composite
- actions/cache v4 composite
- actions/checkout master composite
- mymindstorm/setup-emsdk v14 composite